From 5b213175efcea847e89c1b8c85b5abfdb18c6484 Mon Sep 17 00:00:00 2001 From: hanjuhui Date: Sun, 16 Aug 2020 22:15:46 +0900 Subject: [PATCH 01/18] #28 refactoring main --- .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 4 +- .gradle/buildOutputCleanup/outputFiles.bin | Bin 18947 -> 18911 bytes build/scripts/BugPatchCollector | 4 +- build/scripts/BugPatchCollector.bat | 6 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 1 + src/main/java/edu/handong/csee/isel/Main.java | 140 ++++++---- .../isel/bic/collector/CBICCollector.java | 2 +- .../edu/handong/csee/isel/data/Input.java | 13 +- .../csee/isel/data/processor/CSVMaker.java | 7 +- .../input/converter/CLIConverter.java | 254 ++++++++++++------ .../metric/collector/CMetricCollector.java | 6 +- .../CharacteristicVectorCollector.java | 2 +- 14 files changed, 279 insertions(+), 162 deletions(-) diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 5a4e0851595a6ffd2419dfd2ef7eeced2560c8c1..7c8a0ea35cd387697781d854d009b4426e2bb51f 100644 GIT binary patch literal 17 UcmZQR%VMx(D*M*i3=r@D04(wZbpQYW literal 17 UcmZQR%VMx(D*M*i3=kj(04y*Avj6}9 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties index b10f804..8a21bcc 100644 --- a/.gradle/buildOutputCleanup/cache.properties +++ b/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Fri Jan 31 10:47:52 KST 2020 -gradle.version=6.1.1 +#Wed Aug 12 12:32:48 KST 2020 +gradle.version=6.5.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 4735c3e7b15b836a2c74622717e6eb9f7890057f..4172bb8df10b8f30a26e4855a9e708aaad908325 100644 GIT binary patch literal 18911 zcmeI%Pe_w-7{Kw@;fkqf1VbxA^d>G+s)GkHrNc(y1hJw+6c~g20}(k14-+&BR>um| zNGKuK2(>?h)uPcQV!@1E23^u15mKTp5;WiSK2IXML=Z)MUwGgB_`c8HKcDM+$S^9l zeV5JH*qj?nRtO+~00IagfB*srAbc3g6-nX zz0%KUPqf9~%mn(Yq>pG{J`r?ocbzPjp3(j}({Rk`yZqMbo*ml1c(Sbnm8p=-`?Y7U z?mpu6uZ_w4J?$$UcV9YM#;axiiuTpM)VnPo(QWfX)=&{ zEq$x@Dt9_`U_NqO`mpxeV2djqNHkg9-K>4jhqdeN1ur^f{}0R#|0009ILKmY**5I_I{1Q0*~0R#|00D=ESpf2?y+4jp6tZ=0l zxy^>L(w$lqwzheT4jy*hux|(U=_iGPXNh@pxdu2|K_ORRZH`G5Fk>0A^%>8uc{I*ED^pD!( zyRzb*$_*9L=W2g=pmAjJ9@B;pN7f2O@Y+_pcscVNiwfz#R>Ct`z9>)Jf&SGDV>VYv3$_qZZ} z00IagfB*srAbdO9^q=&zQs=DnnZC^bqol$=Dw%zk^QoDX%-+H|IkP#=r)DzQxyM<4P5ue|Enm6- diff --git a/build/scripts/BugPatchCollector b/build/scripts/BugPatchCollector index d5cc474..1f1c9f6 100755 --- a/build/scripts/BugPatchCollector +++ b/build/scripts/BugPatchCollector @@ -80,7 +80,8 @@ case "`uname`" in ;; esac -CLASSPATH=$APP_HOME/lib/BugPatchCollector.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/gen.jdt-2.1.0.jar:$APP_HOME/lib/client-2.1.0.jar:$APP_HOME/lib/commons-csv-1.5.jar:$APP_HOME/lib/jsoup-1.11.3.jar:$APP_HOME/lib/super-csv-2.4.0.jar:$APP_HOME/lib/org.eclipse.jgit-5.6.0.201912101111-r.jar:$APP_HOME/lib/slf4j-api-1.7.25.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/commons-io-2.5.jar:$APP_HOME/lib/weka-dev-3.9.3.jar:$APP_HOME/lib/org.eclipse.jdt.core-3.16.0.jar:$APP_HOME/lib/commons-lang3-3.9.jar:$APP_HOME/lib/commons-collections4-4.4.jar:$APP_HOME/lib/reflections-0.9.11.jar:$APP_HOME/lib/core-2.1.0.jar:$APP_HOME/lib/simmetrics-core-3.2.3.jar:$APP_HOME/lib/guava-26.0-jre.jar:$APP_HOME/lib/jsch-0.1.55.jar:$APP_HOME/lib/jzlib-1.1.1.jar:$APP_HOME/lib/JavaEWAH-1.1.6.jar:$APP_HOME/lib/bcpg-jdk15on-1.64.jar:$APP_HOME/lib/bcpkix-jdk15on-1.64.jar:$APP_HOME/lib/bcprov-jdk15on-1.64.jar:$APP_HOME/lib/java-cup-11b-2015.03.26.jar:$APP_HOME/lib/java-cup-11b-runtime-2015.03.26.jar:$APP_HOME/lib/bounce-0.18.jar:$APP_HOME/lib/mtj-1.0.4.jar:$APP_HOME/lib/all-1.1.2.pom:$APP_HOME/lib/netlib-java-1.1.jar:$APP_HOME/lib/netlib-native_ref-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-armhf-1.1-natives.jar:$APP_HOME/lib/native_ref-java-1.1.jar:$APP_HOME/lib/netlib-native_system-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-armhf-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-i686-1.1-natives.jar:$APP_HOME/lib/native_system-java-1.1.jar:$APP_HOME/lib/core-1.1.2.jar:$APP_HOME/lib/arpack_combined_all-0.1.jar:$APP_HOME/lib/org.eclipse.core.resources-3.13.600.jar:$APP_HOME/lib/org.eclipse.text-3.10.0.jar:$APP_HOME/lib/org.eclipse.core.expressions-3.6.600.jar:$APP_HOME/lib/org.eclipse.core.runtime-3.17.0.jar:$APP_HOME/lib/org.eclipse.core.filesystem-1.7.600.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.1.3.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/gson-2.8.2.jar:$APP_HOME/lib/jgrapht-core-1.0.1.jar:$APP_HOME/lib/javassist-3.21.0-GA.jar:$APP_HOME/lib/org.eclipse.osgi-3.15.100.jar:$APP_HOME/lib/org.eclipse.core.jobs-3.10.600.jar:$APP_HOME/lib/org.eclipse.core.contenttype-3.7.500.jar:$APP_HOME/lib/org.eclipse.equinox.app-1.4.300.jar:$APP_HOME/lib/org.eclipse.equinox.registry-3.8.600.jar:$APP_HOME/lib/org.eclipse.equinox.preferences-3.7.600.jar:$APP_HOME/lib/org.eclipse.core.commands-3.9.600.jar:$APP_HOME/lib/org.eclipse.equinox.common-3.10.600.jar:$APP_HOME/lib/commons-codec-1.10.jar:$APP_HOME/lib/jniloader-1.1.jar +CLASSPATH=$APP_HOME/lib/BugPatchCollector.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/gen.jdt-2.1.0.jar:$APP_HOME/lib/client-2.1.0.jar:$APP_HOME/lib/commons-csv-1.5.jar:$APP_HOME/lib/jsoup-1.11.3.jar:$APP_HOME/lib/super-csv-2.4.0.jar:$APP_HOME/lib/org.eclipse.jgit-5.6.0.201912101111-r.jar:$APP_HOME/lib/slf4j-api-1.7.25.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/commons-io-2.5.jar:$APP_HOME/lib/weka-dev-3.9.3.jar:$APP_HOME/lib/org.eclipse.jdt.core-3.16.0.jar:$APP_HOME/lib/commons-lang3-3.9.jar:$APP_HOME/lib/commons-collections4-4.4.jar:$APP_HOME/lib/reflections-0.9.11.jar:$APP_HOME/lib/core-2.1.0.jar:$APP_HOME/lib/simmetrics-core-3.2.3.jar:$APP_HOME/lib/guava-26.0-jre.jar:$APP_HOME/lib/jsch-0.1.55.jar:$APP_HOME/lib/jzlib-1.1.1.jar:$APP_HOME/lib/JavaEWAH-1.1.6.jar:$APP_HOME/lib/bcpg-jdk15on-1.64.jar:$APP_HOME/lib/bcpkix-jdk15on-1.64.jar:$APP_HOME/lib/bcprov-jdk15on-1.64.jar:$APP_HOME/lib/java-cup-11b-2015.03.26.jar:$APP_HOME/lib/java-cup-11b-runtime-2015.03.26.jar:$APP_HOME/lib/bounce-0.18.jar:$APP_HOME/lib/mtj-1.0.4.jar:$APP_HOME/lib/all-1.1.2.pom:$APP_HOME/lib/netlib-java-1.1.jar:$APP_HOME/lib/netlib-native_ref-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-armhf-1.1-natives.jar:$APP_HOME/lib/native_ref-java-1.1.jar:$APP_HOME/lib/netlib-native_system-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-armhf-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-i686-1.1-natives.jar:$APP_HOME/lib/native_system-java-1.1.jar:$APP_HOME/lib/core-1.1.2.jar:$APP_HOME/lib/arpack_combined_all-0.1.jar:$APP_HOME/lib/org.eclipse.core.resources-3.13.700.jar:$APP_HOME/lib/org.eclipse.text-3.10.200.jar:$APP_HOME/lib/org.eclipse.core.expressions-3.6.800.jar:$APP_HOME/lib/org.eclipse.core.runtime-3.18.0.jar:$APP_HOME/lib/org.eclipse.core.filesystem-1.7.700.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.1.3.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/gson-2.8.2.jar:$APP_HOME/lib/jgrapht-core-1.0.1.jar:$APP_HOME/lib/javassist-3.21.0-GA.jar:$APP_HOME/lib/org.eclipse.osgi-3.15.300.jar:$APP_HOME/lib/org.eclipse.core.jobs-3.10.800.jar:$APP_HOME/lib/org.eclipse.core.contenttype-3.7.700.jar:$APP_HOME/lib/org.eclipse.equinox.app-1.4.500.jar:$APP_HOME/lib/org.eclipse.equinox.registry-3.8.800.jar:$APP_HOME/lib/org.eclipse.equinox.preferences-3.8.0.jar:$APP_HOME/lib/org.eclipse.core.commands-3.9.700.jar:$APP_HOME/lib/org.eclipse.equinox.common-3.12.0.jar:$APP_HOME/lib/commons-codec-1.10.jar:$APP_HOME/lib/jniloader-1.1.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/build/scripts/BugPatchCollector.bat b/build/scripts/BugPatchCollector.bat index 1075559..b3795f8 100644 --- a/build/scripts/BugPatchCollector.bat +++ b/build/scripts/BugPatchCollector.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME%.. +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and BUG_PATCH_COLLECTOR_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= @@ -79,7 +82,8 @@ set CMD_LINE_ARGS=%* :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\lib\BugPatchCollector.jar;%APP_HOME%\lib\commons-math3-3.6.1.jar;%APP_HOME%\lib\gen.jdt-2.1.0.jar;%APP_HOME%\lib\client-2.1.0.jar;%APP_HOME%\lib\commons-csv-1.5.jar;%APP_HOME%\lib\jsoup-1.11.3.jar;%APP_HOME%\lib\super-csv-2.4.0.jar;%APP_HOME%\lib\org.eclipse.jgit-5.6.0.201912101111-r.jar;%APP_HOME%\lib\slf4j-api-1.7.25.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\commons-io-2.5.jar;%APP_HOME%\lib\weka-dev-3.9.3.jar;%APP_HOME%\lib\org.eclipse.jdt.core-3.16.0.jar;%APP_HOME%\lib\commons-lang3-3.9.jar;%APP_HOME%\lib\commons-collections4-4.4.jar;%APP_HOME%\lib\reflections-0.9.11.jar;%APP_HOME%\lib\core-2.1.0.jar;%APP_HOME%\lib\simmetrics-core-3.2.3.jar;%APP_HOME%\lib\guava-26.0-jre.jar;%APP_HOME%\lib\jsch-0.1.55.jar;%APP_HOME%\lib\jzlib-1.1.1.jar;%APP_HOME%\lib\JavaEWAH-1.1.6.jar;%APP_HOME%\lib\bcpg-jdk15on-1.64.jar;%APP_HOME%\lib\bcpkix-jdk15on-1.64.jar;%APP_HOME%\lib\bcprov-jdk15on-1.64.jar;%APP_HOME%\lib\java-cup-11b-2015.03.26.jar;%APP_HOME%\lib\java-cup-11b-runtime-2015.03.26.jar;%APP_HOME%\lib\bounce-0.18.jar;%APP_HOME%\lib\mtj-1.0.4.jar;%APP_HOME%\lib\all-1.1.2.pom;%APP_HOME%\lib\netlib-java-1.1.jar;%APP_HOME%\lib\netlib-native_ref-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\native_ref-java-1.1.jar;%APP_HOME%\lib\netlib-native_system-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-i686-1.1-natives.jar;%APP_HOME%\lib\native_system-java-1.1.jar;%APP_HOME%\lib\core-1.1.2.jar;%APP_HOME%\lib\arpack_combined_all-0.1.jar;%APP_HOME%\lib\org.eclipse.core.resources-3.13.600.jar;%APP_HOME%\lib\org.eclipse.text-3.10.0.jar;%APP_HOME%\lib\org.eclipse.core.expressions-3.6.600.jar;%APP_HOME%\lib\org.eclipse.core.runtime-3.17.0.jar;%APP_HOME%\lib\org.eclipse.core.filesystem-1.7.600.jar;%APP_HOME%\lib\jsr305-3.0.2.jar;%APP_HOME%\lib\checker-qual-2.5.2.jar;%APP_HOME%\lib\error_prone_annotations-2.1.3.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\trove4j-3.0.3.jar;%APP_HOME%\lib\gson-2.8.2.jar;%APP_HOME%\lib\jgrapht-core-1.0.1.jar;%APP_HOME%\lib\javassist-3.21.0-GA.jar;%APP_HOME%\lib\org.eclipse.osgi-3.15.100.jar;%APP_HOME%\lib\org.eclipse.core.jobs-3.10.600.jar;%APP_HOME%\lib\org.eclipse.core.contenttype-3.7.500.jar;%APP_HOME%\lib\org.eclipse.equinox.app-1.4.300.jar;%APP_HOME%\lib\org.eclipse.equinox.registry-3.8.600.jar;%APP_HOME%\lib\org.eclipse.equinox.preferences-3.7.600.jar;%APP_HOME%\lib\org.eclipse.core.commands-3.9.600.jar;%APP_HOME%\lib\org.eclipse.equinox.common-3.10.600.jar;%APP_HOME%\lib\commons-codec-1.10.jar;%APP_HOME%\lib\jniloader-1.1.jar +set CLASSPATH=%APP_HOME%\lib\BugPatchCollector.jar;%APP_HOME%\lib\commons-math3-3.6.1.jar;%APP_HOME%\lib\gen.jdt-2.1.0.jar;%APP_HOME%\lib\client-2.1.0.jar;%APP_HOME%\lib\commons-csv-1.5.jar;%APP_HOME%\lib\jsoup-1.11.3.jar;%APP_HOME%\lib\super-csv-2.4.0.jar;%APP_HOME%\lib\org.eclipse.jgit-5.6.0.201912101111-r.jar;%APP_HOME%\lib\slf4j-api-1.7.25.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\commons-io-2.5.jar;%APP_HOME%\lib\weka-dev-3.9.3.jar;%APP_HOME%\lib\org.eclipse.jdt.core-3.16.0.jar;%APP_HOME%\lib\commons-lang3-3.9.jar;%APP_HOME%\lib\commons-collections4-4.4.jar;%APP_HOME%\lib\reflections-0.9.11.jar;%APP_HOME%\lib\core-2.1.0.jar;%APP_HOME%\lib\simmetrics-core-3.2.3.jar;%APP_HOME%\lib\guava-26.0-jre.jar;%APP_HOME%\lib\jsch-0.1.55.jar;%APP_HOME%\lib\jzlib-1.1.1.jar;%APP_HOME%\lib\JavaEWAH-1.1.6.jar;%APP_HOME%\lib\bcpg-jdk15on-1.64.jar;%APP_HOME%\lib\bcpkix-jdk15on-1.64.jar;%APP_HOME%\lib\bcprov-jdk15on-1.64.jar;%APP_HOME%\lib\java-cup-11b-2015.03.26.jar;%APP_HOME%\lib\java-cup-11b-runtime-2015.03.26.jar;%APP_HOME%\lib\bounce-0.18.jar;%APP_HOME%\lib\mtj-1.0.4.jar;%APP_HOME%\lib\all-1.1.2.pom;%APP_HOME%\lib\netlib-java-1.1.jar;%APP_HOME%\lib\netlib-native_ref-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\native_ref-java-1.1.jar;%APP_HOME%\lib\netlib-native_system-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-i686-1.1-natives.jar;%APP_HOME%\lib\native_system-java-1.1.jar;%APP_HOME%\lib\core-1.1.2.jar;%APP_HOME%\lib\arpack_combined_all-0.1.jar;%APP_HOME%\lib\org.eclipse.core.resources-3.13.700.jar;%APP_HOME%\lib\org.eclipse.text-3.10.200.jar;%APP_HOME%\lib\org.eclipse.core.expressions-3.6.800.jar;%APP_HOME%\lib\org.eclipse.core.runtime-3.18.0.jar;%APP_HOME%\lib\org.eclipse.core.filesystem-1.7.700.jar;%APP_HOME%\lib\jsr305-3.0.2.jar;%APP_HOME%\lib\checker-qual-2.5.2.jar;%APP_HOME%\lib\error_prone_annotations-2.1.3.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\trove4j-3.0.3.jar;%APP_HOME%\lib\gson-2.8.2.jar;%APP_HOME%\lib\jgrapht-core-1.0.1.jar;%APP_HOME%\lib\javassist-3.21.0-GA.jar;%APP_HOME%\lib\org.eclipse.osgi-3.15.300.jar;%APP_HOME%\lib\org.eclipse.core.jobs-3.10.800.jar;%APP_HOME%\lib\org.eclipse.core.contenttype-3.7.700.jar;%APP_HOME%\lib\org.eclipse.equinox.app-1.4.500.jar;%APP_HOME%\lib\org.eclipse.equinox.registry-3.8.800.jar;%APP_HOME%\lib\org.eclipse.equinox.preferences-3.8.0.jar;%APP_HOME%\lib\org.eclipse.core.commands-3.9.700.jar;%APP_HOME%\lib\org.eclipse.equinox.common-3.12.0.jar;%APP_HOME%\lib\commons-codec-1.10.jar;%APP_HOME%\lib\jniloader-1.1.jar + @rem Execute BugPatchCollector "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %BUG_PATCH_COLLECTOR_OPTS% -classpath "%CLASSPATH%" edu.handong.csee.isel.Main %CMD_LINE_ARGS% diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1b16c34..bb8b2fc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index be41f3d..a44854c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,3 +8,4 @@ */ rootProject.name = 'BugPatchCollector' +include ':progressfragment' diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index 77e50f3..10d109b 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -58,102 +58,132 @@ public static void main(String[] args) // 3. collect Bug-Fix-Commit List bfcList = null; - List bicList = null; + List bicList = null;//메트릭스에서 쓰임. + MetricCollector metricCollector = null; BFCCollector bfcCollector = null; - - switch (input.referecneType) { - case JIRA: - bfcCollector = new BFCJiraCollector(); - bfcCollector.setJiraURL(input.jiraURL); - bfcCollector.setJiraProjectKey(input.jiraProjectKey); - bfcCollector.setOutPath(input.outPath); - bfcList = bfcCollector.collectFrom(commitList); - - break; - - case GITHUB: - bfcCollector = new BFCGitHubCollector(); - bfcCollector.setGitHubURL(input.gitURL); - bfcCollector.setGitHubLabel(input.label); - bfcList = bfcCollector.collectFrom(commitList); - - break; - - case KEYWORD: - bfcCollector = new BFCKeywordCollector(); - bfcList = bfcCollector.collectFrom(commitList); - - break; - - case BICCSV: - File BIC = new File(input.BICpath); - if (!BIC.isFile()) { - System.out.println("There is no BIC file"); - System.exit(1); - } - bicList = Utils.readBICCsvFile(input.BICpath); - - break; - } - - // 4. Patch, BIC, Metric List csvInfoLst = null; - PatchCollector patchCollector = null; - BICCollector bicCollector = null; - MetricCollector metricCollector = null; + - switch (input.mode) { - case PATCH: - patchCollector = new CPatchCollector(input); + + switch (input.taskType) { + case Patch: + bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); + + PatchCollector patchCollector = new CPatchCollector(input); patchCollector.setBFC(bfcList); csvInfoLst = patchCollector.collectFrom(commitList); + + Print_CSV(input, csvInfoLst); break; + case BIC: - bicCollector = new CBICCollector(input); + bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); + + BICCollector bicCollector = new CBICCollector(input); // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); - + System.out.println("please~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); + Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. + System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); break; - case METRIC: // TODO: + + case Metric: + //BIC 파일 읽기 + Read_BICcsv(input, bicList); + metricCollector = new CMetricCollector(input,false); metricCollector.setBIC(bicList); File arff = metricCollector.collectFrom(commitList); System.out.println("Metric was saved in " + arff.getAbsolutePath()); - return; + break; + + case Develop_Metirc: + //BIC 파일 읽기 + Read_BICcsv(input, bicList); - case DEVELOPERMETRIC: DeveloperHistory developerHistory = new DeveloperHistory(input); String midDate = developerHistory.findDeveloperDate(); System.out.println("MidDate : "+midDate); + metricCollector = new CMetricCollector(input,true); metricCollector.setMidDate(midDate); metricCollector.setBIC(bicList); metricCollector.collectFrom(commitList); - - return; + break; } - // 5. Print CSV + + + } + + + + public static List Read_BICcsv(Input input, List bicList){ + File BIC = new File(input.BICpath); + if (!BIC.isFile()) { + System.out.println("There is no BIC file"); + System.exit(1); + } + bicList = Utils.readBICCsvFile(input.BICpath); + + return bicList; + + } + + public static void Print_CSV( Input input, List csvInfoLst) throws IOException { + if (csvInfoLst.size() < 1) { + System.out.println("why is it not workding?"); return; } - + System.out.println("Really?"); CSVMaker printer = new CSVMaker(); printer.setDataType(csvInfoLst); printer.setPath(input); printer.print(csvInfoLst); - + + } + + public static List Making_bfcCollector (Input input, List bfcList, List commitList, BFCCollector bfcCollector) + throws IOException,InvalidProjectKeyException, InvalidDomainException{ + + switch (input.mode) { //CLIConverter에서 각각 옵션 모드를 설정해 주었다. + case Jira: + bfcCollector = new BFCJiraCollector(); + bfcCollector.setJiraURL(input.jiraURL); + bfcCollector.setJiraProjectKey(input.jiraProjectKey); + bfcCollector.setOutPath(input.outPath); + bfcList = bfcCollector.collectFrom(commitList); + break; + + case KeyWord: + bfcCollector = new BFCKeywordCollector(); + bfcList = bfcCollector.collectFrom(commitList); + break; + + case GitHub: + bfcCollector = new BFCGitHubCollector(); + bfcCollector.setGitHubURL(input.gitURL); + bfcCollector.setGitHubLabel(input.label); + bfcList = bfcCollector.collectFrom(commitList); + break; + + } + + return bfcList; } + + private static boolean isValidRepository(Input input) { File directory = getGitDirectory(input); try { - Git git = Git.open(directory); + Git git = Git.open(directory); //여기가 쓰이는데 왜안쓰인다고 뜨는지 모르겠다. return true; } catch (IOException e) { return false; diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java index 67f9b56..45bdeb5 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java @@ -27,7 +27,7 @@ import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.csv.BICInfo; -public class CBICCollector implements BICCollector { +public class CBICCollector implements BICCollector { //도대체 왜 여기서 에러가 뜨는지가 모르겠다. 건든게 일도 없는데? Input input; List bfcList = null; diff --git a/src/main/java/edu/handong/csee/isel/data/Input.java b/src/main/java/edu/handong/csee/isel/data/Input.java index 57ac8d5..74aaa7c 100644 --- a/src/main/java/edu/handong/csee/isel/data/Input.java +++ b/src/main/java/edu/handong/csee/isel/data/Input.java @@ -19,9 +19,11 @@ public class Input { public String label; - public ReferenceType referecneType; + public TaskType taskType; // -t 옵션(메인 전체 큰 옵션) - public Mode mode; + public Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) + + public String Issue_keyWord; //이슈키 추가한 부분 public String BICpath; @@ -34,13 +36,12 @@ public class Input { public int percent; - - public static enum ReferenceType { - JIRA, GITHUB, KEYWORD, BICCSV + public static enum TaskType { + Patch,BIC, Metric, Develop_Metirc } public static enum Mode { - PATCH, BIC, METRIC, DEVELOPERMETRIC + GitHub, Jira, KeyWord } } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java index 9a55ae0..e99e73c 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java @@ -21,8 +21,8 @@ public class CSVMaker { public String path; private Type type = null; - private static enum Type { - PATCH, BIC, METRIC + private static enum Type { //해당 class는 파라미터로 들어온 csvInfo의 첫번째 값의 속성을 instanceof 으로 알아낸 뒤 알아서 파일을 만든다.. 그래서 고칠부분은 없다. + PATCH, BIC, METRIC } public void setPath(Input input) { @@ -101,13 +101,16 @@ private void print(BICInfo info) throws IOException { public void setDataType(List csvInfoLst) { CSVInfo csvInfoFirst = csvInfoLst.get(0); if (csvInfoFirst instanceof PatchInfo) { + System.out.println("CSVMAER path"); this.type = Type.PATCH; } if (csvInfoFirst instanceof BICInfo) { this.type = Type.BIC; + System.out.println("CSVMAER BIC"); } if (csvInfoFirst instanceof MetricInfo) { this.type = Type.METRIC; + System.out.println("CSVMAER MATRIC"); } } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index da4d4d2..bc87c1f 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -25,17 +25,66 @@ public Input getInputFrom(String[] args) { try { cmd = parser.parse(options, args); } catch (ParseException e) { + System.out.println("여기!!!!1111"); printHelp(options); System.exit(1); } // CLI exception handling if (!isValid(cmd, options)) { - printHelp(options); + System.out.println("여기!!!!22222"); System.exit(1); } - + + Input input = new Input(); + input.gitURL = cmd.getOptionValue("i");// input path + if (input.gitURL.endsWith("/")) { + input.gitURL = input.gitURL.substring(0, input.gitURL.length() - 1); + } + input.gitRemoteURI = input.gitURL + ".git"; + + input.projectName = getProjectName(input.gitRemoteURI); + + input.outPath = cmd.getOptionValue("o");// output path + if (input.outPath.endsWith(File.separator)) { + input.outPath = input.outPath.substring(0, input.outPath.length() - 1); + } + + + //각각 옵션이 null아닐때 값을 넣어주고 해당 값에 맞는 input.mode를 정해 주었다! + if(cmd.getOptionValue("ij")!=null) { + input.jiraURL = cmd.getOptionValue("ij"); + input.jiraProjectKey = cmd.getOptionValue("jk"); + input.mode = Input.Mode.Jira; + } + else if(cmd.getOptionValue("ik")!=null) { + input.Issue_keyWord = cmd.getOptionValue("ik"); + input.mode = Input.Mode.KeyWord; + } + else { + input.mode = Input.Mode.GitHub; + } + + String task= cmd.getOptionValue("t"); //무슨 테스크를 할지 값을 비교해서 밑에서 정해줌 + + if (task.equals("patch")) { + input.taskType = Input.TaskType.Patch; + } else if (task.equals("BIC")) { + input.taskType = Input.TaskType.BIC; + } else if (task.equals("metric")) { + input.taskType = Input.TaskType.Metric; + } else if (task.equals("Develop_Metric")) { + input.taskType = Input.TaskType.Develop_Metirc; + } + + input.BICpath = cmd.getOptionValue("cp"); //metric 만들때 필요한 BIC 인풋 path옵션! + + input.label = cmd.getOptionValue("l"); + input.startDate = cmd.getOptionValue("s"); + input.endDate = cmd.getOptionValue("e"); + + int max; int min; if (cmd.hasOption("x") || cmd.hasOption("m")) { @@ -47,19 +96,20 @@ public Input getInputFrom(String[] args) { } input.maxSize = max; input.minSize = min; + + +// if (cmd.hasOption("b")) { +// input.mode = Input.Mode.BIC; +// } else if (cmd.hasOption("t")) { +// input.mode = Input.Mode.METRIC; +// } else if(cmd.hasOption("d")){ +// input.mode = Input.Mode.DEVELOPERMETRIC; +// } else { +// input.mode = Input.Mode.PATCH; +// } + + - input.gitURL = cmd.getOptionValue("i"); - if (input.gitURL.endsWith("/")) { - input.gitURL = input.gitURL.substring(0, input.gitURL.length() - 1); - } - input.gitRemoteURI = input.gitURL + ".git"; - input.jiraProjectKey = cmd.getOptionValue("k"); - input.jiraURL = cmd.getOptionValue("j"); - input.projectName = getProjectName(input.gitRemoteURI); - input.label = cmd.getOptionValue("l"); - input.BICpath = cmd.getOptionValue("c"); - input.startDate = cmd.getOptionValue("s"); - input.endDate = cmd.getOptionValue("e"); int inputPercent; if(!cmd.hasOption("p")) { @@ -74,73 +124,99 @@ public Input getInputFrom(String[] args) { } input.percent = inputPercent; - input.outPath = cmd.getOptionValue("o"); - if (input.outPath.endsWith(File.separator)) { - input.outPath = input.outPath.substring(0, input.outPath.length() - 1); - } - - if (cmd.hasOption("g")) { - input.referecneType = Input.ReferenceType.GITHUB; - } else if (cmd.hasOption("j")) { - input.referecneType = Input.ReferenceType.JIRA; - } else if (cmd.hasOption("c")) { - input.referecneType = Input.ReferenceType.BICCSV; - } else { - input.referecneType = Input.ReferenceType.KEYWORD; - } - - if (cmd.hasOption("b")) { - input.mode = Input.Mode.BIC; - } else if (cmd.hasOption("t")) { - input.mode = Input.Mode.METRIC; - } else if(cmd.hasOption("d")){ - input.mode = Input.Mode.DEVELOPERMETRIC; - } else { - input.mode = Input.Mode.PATCH; - } - return input; } + private boolean isValid(CommandLine cmd, Options options) { try { - if (cmd.hasOption("j") ^ cmd.hasOption("k")) { - String eMessage = "'j' options must be used with 'k'"; + + if (!(cmd.hasOption("t"))) { + String eMessage = "'t' options must be used in this program"; throw new Exception(eMessage); } - if (cmd.hasOption("x") ^ cmd.hasOption("m")) { - String eMessage = "'x' and 'm' Option must be used together!"; + if (!(cmd.hasOption("i"))) { + String eMessage = "'i' options must be used in this program"; throw new Exception(eMessage); } - if (cmd.hasOption("x")) { - int max = Integer.parseInt(cmd.getOptionValue("x")); - int min = Integer.parseInt(cmd.getOptionValue("m")); - - if (max < min) { - String eMessage = "Max must be bigger than min!"; - throw new Exception(eMessage); - } + if (!(cmd.hasOption("o"))) { + String eMessage = "'o' options must be used in this program"; + throw new Exception(eMessage); //여기 위로는 필수로 필요햔 옵션들 } - if (cmd.hasOption("t") && !cmd.hasOption("c")) { - String eMessage = "Extracting Metrics requires BIC csv. get BIC first"; + String task= cmd.getOptionValue("t"); //t가 해당하는 옵션이 없을 경우 에러 + + if (!((task.equals("metric"))||(task.equals("Develop_Metric"))||(task.equals("patch"))||(task.equals("BIC")))){ + System.out.println(task); + String eMessage = "task option have to be patch or BIC or metric or Develop_Metirc"; + throw new Exception(eMessage); + } + // path 이거나 bic 이라면 옆에 해당 옵션중 한개는 무조건 있어야 한다. + if ((task.equals("patch")||task.equals("BIC")) ^ (cmd.hasOption("ij")||cmd.hasOption("ig")||cmd.hasOption("ik"))) { + String eMessage = "Making patch or BIC.csv need 'ij' or 'ig' of 'ik'option"; + throw new Exception(eMessage); + } + // metic과 Develop_Metric이라면 CP(BIC path)는 무조건 있어야 한다. + if ((task.equals("metric")||task.equals("Develop_Metric")) ^ (cmd.hasOption("cp"))) { + String eMessage = "It need a BIC CSV file to make a metric"; throw new Exception(eMessage); } - if (cmd.hasOption("d") && !cmd.hasOption("c")) { - String eMessage = "Extracting Metrics requires BIC csv. get BIC first"; + //온셥에 ij가 있다면 jk는 무조건 있어야 한다. + if (cmd.hasOption("ij") ^ cmd.hasOption("jk")) { + String eMessage = "'ij' and 'jk' Option must be used together!"; throw new Exception(eMessage); } + + +// if ((cmd.hasOption("t") ^ cmd.hasOption("p"))||(cmd.hasOption("t") ^ cmd.hasOption("b")) +// ||(cmd.hasOption("t") ^ cmd.hasOption("m"))||(cmd.hasOption("t") ^ cmd.hasOption("dm"))){ +// String eMessage = "'t' options must be used with 'k'"; +// throw new Exception(eMessage); +// } +// +// +// +// if (cmd.hasOption("d") && !cmd.hasOption("c")) { +// String eMessage = "Extracting Metrics requires BIC csv. get BIC first"; +// throw new Exception(eMessage); +// } + + + if (cmd.hasOption("x") ^ cmd.hasOption("m")) { + String eMessage = "'x' and 'm' Option must be used together!"; + throw new Exception(eMessage); + } + if (cmd.hasOption("x")) { + int max = Integer.parseInt(cmd.getOptionValue("x")); + int min = Integer.parseInt(cmd.getOptionValue("m")); + + if (max < min) { + String eMessage = "Max must be bigger than min!"; + throw new Exception(eMessage); + } + } + } catch (Exception e) { + System.out.println("여기깅ㄴ가 혹"); System.out.println(e.getMessage()); printHelp(options); return false; } return true; } + +//bic CSV파일 만드는 컴파일 명령 +// ./BugPatchCollector -i https://github.com/apache/nutch -o /Users/juhui/Desktop/testMain/BIC -t BIC -ij issues.apache.org -jk NUTCH + +//arff파일 만드는 명령 +// ./BugPatchCollector -i https://github.com/apache/metamodel -o /data/metric -t -c /data/BIC/BIC_metamodel.csv + +//바뀐 메인 돌리기 +// ./BugPatchCollector -i https://github.com/apache/juddi -ij issues.apache.org -jk JUDDI -t BIC -o /Users/juhui/Desktop/testMain/BIC - private Options createOptions() { + private Options createOptions() {// desc 다시쓰자! Options options = new Options(); options.addOption( @@ -149,36 +225,27 @@ private Options createOptions() { options.addOption(Option.builder("o").longOpt("result").desc("directory will have result file").hasArg() .argName("directory").required().build()); + + options.addOption(Option.builder("t").longOpt("task").desc("kind of task").hasArg() + .argName("task").required().build()); - options.addOption(Option.builder("x").longOpt("max").desc( - "Set a Max lines of each result patch. Only count '+++' and '---' lines. must used with '-m'. (default: 500)") - .hasArg().argName("Max lines of patch").build()); - - options.addOption(Option.builder("m").longOpt("min") - .desc("Set a Min lines of each result patch. This Option need to be used with 'x' Option. (default: 0)") - .hasArg().argName("Min lines of patch").build()); - - options.addOption(Option.builder("l").longOpt("label").desc("Set a bug label of github (default: 'bug')") - .hasArg().argName("Find coincident commit with label").build()); - - options.addOption(Option.builder("b").longOpt("bugIntroducingChange") - .desc("If you want to get bug introducing changes, add this option").build()); - - options.addOption(Option.builder("g").longOpt("github") - .desc("When searching fix-commit, use GitHub-issues with label name").build()); - - options.addOption(Option.builder("t").longOpt("metric").desc("collect metrics from all changes").build()); - - options.addOption(Option.builder("j").longOpt("jiraURL").desc("Jira issues URL (example: issues.apache.org)") + options.addOption(Option.builder("ij").longOpt("issue jiraURL").desc("Jira issues URL (example: issues.apache.org)") .hasArg().argName("Jira project URL").build()); - - options.addOption(Option.builder("k").longOpt("jiraProject").desc( + + options.addOption(Option.builder("jk").longOpt("jiraProject keyword").desc( "Jira project key. you can get more informations: https://github.com/HGUISEL/BugPatchCollector/issues/18") .hasArg().argName("Project Key").build()); - options.addOption(Option.builder("c").longOpt("BugIntroducingChange csv file path").desc("Path of csv file") + options.addOption(Option.builder("ig").longOpt("issue github") + .desc("When searching fix-commit, use GitHub-issues with label name").build()); + + options.addOption(Option.builder("ik").longOpt("issue keyword").desc("keyword of commit message") + .hasArg().argName("CommitMsgkeyword").build()); + + options.addOption(Option.builder("cp").longOpt("BugIntroducingChange csv file path").desc("Path of csv file") .hasArg().argName("BIC csv file path").build()); - + + options.addOption(Option.builder("s").longOpt("startdate") .desc("Start date for collecting training data. Format: \"yyyy-MM-dd HH:mm:ss\"") .hasArg() @@ -191,18 +258,27 @@ private Options createOptions() { .argName("End date") .build()); - options.addOption(Option.builder("d").longOpt("developer") - .desc("collecting metrics for developer history scenario") - .argName("developer history") - .build()); + options.addOption(Option.builder("l").longOpt("label").desc("Set a bug label of github (default: 'bug')") + .hasArg().argName("Find coincident commit with label").build()); + + options.addOption(Option.builder("h").longOpt("help").desc("Help").build()); + + options.addOption(Option.builder("p").longOpt("percent") - .desc("Percent of developer. Range : 2 ~ 9") - .hasArg() - .argName("percent of developer") - .build()); + .desc("Percent of developer. Range : 2 ~ 9") + .hasArg() + .argName("percent of developer") + .build()); - options.addOption(Option.builder("h").longOpt("help").desc("Help").build()); + + options.addOption(Option.builder("x").longOpt("max").desc( + "Set a Max lines of each result patch. Only count '+++' and '---' lines. must used with '-m'. (default: 500)") + .hasArg().argName("Max lines of patch").build()); + + options.addOption(Option.builder("m").longOpt("min") + .desc("Set a Min lines of each result patch. This Option need to be used with 'x' Option. (default: 0)") + .hasArg().argName("Min lines of patch").build()); return options; } diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java index 0f2fba7..aa98d37 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java @@ -79,7 +79,7 @@ public File collectFrom(List commitList) { arffHelper.setReferencePath(referencePath); arffHelper.setProjectName(input.projectName); arffHelper.setOutPath(input.outPath); - mergedArff = arffHelper.getMergedBOWArffBetween(bowCollector, cVectorCollector); + mergedArff = arffHelper.getMergedBOWArffBetween(bowCollector, cVectorCollector); //arrf 파일이 하나나온다 <> // TODO: 4. Meta data, SJ help me CommitCollector commitCollector = new CommitCollector(git, referencePath, bicList, input.projectName, startDate, endDate, developerHistory); //StartDate, strEndDate, test @@ -89,7 +89,7 @@ public File collectFrom(List commitList) { String arffOutputPath = commitCollector.CSV2ARFF(); File metaArff = new File(arffOutputPath); // TODO: Here your logic: make - // metadata arff + // metadata arff //reference 안에 있는 arff...! ArrayList keyOrder = arffHelper.getKeyOrder(); @@ -98,7 +98,7 @@ public File collectFrom(List commitList) { File resultArff = null; try { - if(!developerHistory)resultArff = arffHelper.makeMergedArff(mergedArff, metaArff, keyOrder); + if(!developerHistory)resultArff = arffHelper.makeMergedArff(mergedArff, metaArff, keyOrder);// 여기서 섞는 최종 key-data arff else resultArff = arffHelper.makeMergedDeveloperHistoryArff(mergedArff, metaArff, keyOrder, midDate); } catch (IOException e) { // TODO Auto-generated catch block diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java index 32c5fae..72effe2 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java @@ -92,7 +92,7 @@ public void collect() { case "UPD": case "MOV": - String changedNode = element.getName() + String.valueOf(element.getNode().getType()); + String changedNode = element.getName() + String.valueOf(element.getNode().getType());//node contentBuffer.append(changedNode); contentBuffer.append(" "); From 0e2c77afc1cd5b21ad7e67be7c3d4010aaa388a0 Mon Sep 17 00:00:00 2001 From: hanjuhui Date: Wed, 19 Aug 2020 10:59:59 +0900 Subject: [PATCH 02/18] main --- src/main/java/edu/handong/csee/isel/Main.java | 14 +++-- .../edu/handong/csee/isel/data/Input.java | 2 +- .../input/converter/CLIConverter.java | 54 +++++-------------- 3 files changed, 21 insertions(+), 49 deletions(-) diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index 10d109b..9ec6bfa 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -69,7 +69,7 @@ public static void main(String[] args) switch (input.taskType) { case Patch: bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); - + PatchCollector patchCollector = new CPatchCollector(input); patchCollector.setBFC(bfcList); csvInfoLst = patchCollector.collectFrom(commitList); @@ -85,14 +85,12 @@ public static void main(String[] args) // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); - System.out.println("please~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. - System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); break; case Metric: //BIC 파일 읽기 - Read_BICcsv(input, bicList); + bicList= Read_BICcsv(input); metricCollector = new CMetricCollector(input,false); metricCollector.setBIC(bicList); @@ -103,7 +101,7 @@ public static void main(String[] args) case Develop_Metirc: //BIC 파일 읽기 - Read_BICcsv(input, bicList); + bicList=Read_BICcsv(input); DeveloperHistory developerHistory = new DeveloperHistory(input); String midDate = developerHistory.findDeveloperDate(); @@ -123,13 +121,13 @@ public static void main(String[] args) - public static List Read_BICcsv(Input input, List bicList){ + public static List Read_BICcsv(Input input){ File BIC = new File(input.BICpath); if (!BIC.isFile()) { System.out.println("There is no BIC file"); System.exit(1); } - bicList = Utils.readBICCsvFile(input.BICpath); + List bicList = Utils.readBICCsvFile(input.BICpath); return bicList; @@ -138,7 +136,7 @@ public static List Read_BICcsv(Input input, List bicList){ public static void Print_CSV( Input input, List csvInfoLst) throws IOException { if (csvInfoLst.size() < 1) { - System.out.println("why is it not workding?"); + System.out.println("why is it not working?"); return; } System.out.println("Really?"); diff --git a/src/main/java/edu/handong/csee/isel/data/Input.java b/src/main/java/edu/handong/csee/isel/data/Input.java index 74aaa7c..a46ae33 100644 --- a/src/main/java/edu/handong/csee/isel/data/Input.java +++ b/src/main/java/edu/handong/csee/isel/data/Input.java @@ -23,7 +23,7 @@ public class Input { public Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) - public String Issue_keyWord; //이슈키 추가한 부분 + public String Issue_keyWord; //이슈키 추가한 부분 //고쳐야 한다 public String BICpath; diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index bc87c1f..dd1a00f 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -25,14 +25,12 @@ public Input getInputFrom(String[] args) { try { cmd = parser.parse(options, args); } catch (ParseException e) { - System.out.println("여기!!!!1111"); printHelp(options); System.exit(1); } // CLI exception handling if (!isValid(cmd, options)) { - System.out.println("여기!!!!22222"); System.exit(1); } @@ -53,12 +51,12 @@ public Input getInputFrom(String[] args) { //각각 옵션이 null아닐때 값을 넣어주고 해당 값에 맞는 input.mode를 정해 주었다! - if(cmd.getOptionValue("ij")!=null) { + if(!cmd.hasOption("ij")) { input.jiraURL = cmd.getOptionValue("ij"); input.jiraProjectKey = cmd.getOptionValue("jk"); input.mode = Input.Mode.Jira; } - else if(cmd.getOptionValue("ik")!=null) { + else if(!cmd.hasOption("ik")) { input.Issue_keyWord = cmd.getOptionValue("ik"); input.mode = Input.Mode.KeyWord; } @@ -78,7 +76,7 @@ else if(cmd.getOptionValue("ik")!=null) { input.taskType = Input.TaskType.Develop_Metirc; } - input.BICpath = cmd.getOptionValue("cp"); //metric 만들때 필요한 BIC 인풋 path옵션! + input.BICpath = cmd.getOptionValue("bp"); //metric 만들때 필요한 BIC 인풋 path옵션! input.label = cmd.getOptionValue("l"); input.startDate = cmd.getOptionValue("s"); @@ -97,20 +95,6 @@ else if(cmd.getOptionValue("ik")!=null) { input.maxSize = max; input.minSize = min; - -// if (cmd.hasOption("b")) { -// input.mode = Input.Mode.BIC; -// } else if (cmd.hasOption("t")) { -// input.mode = Input.Mode.METRIC; -// } else if(cmd.hasOption("d")){ -// input.mode = Input.Mode.DEVELOPERMETRIC; -// } else { -// input.mode = Input.Mode.PATCH; -// } - - - - int inputPercent; if(!cmd.hasOption("p")) { inputPercent = 5; //default @@ -156,8 +140,8 @@ private boolean isValid(CommandLine cmd, Options options) { String eMessage = "Making patch or BIC.csv need 'ij' or 'ig' of 'ik'option"; throw new Exception(eMessage); } - // metic과 Develop_Metric이라면 CP(BIC path)는 무조건 있어야 한다. - if ((task.equals("metric")||task.equals("Develop_Metric")) ^ (cmd.hasOption("cp"))) { + // metic과 Develop_Metric이라면 bP(BIC path)는 무조건 있어야 한다. + if ((task.equals("metric")||task.equals("Develop_Metric")) ^ (cmd.hasOption("bp"))) { String eMessage = "It need a BIC CSV file to make a metric"; throw new Exception(eMessage); } @@ -168,21 +152,6 @@ private boolean isValid(CommandLine cmd, Options options) { throw new Exception(eMessage); } - - -// if ((cmd.hasOption("t") ^ cmd.hasOption("p"))||(cmd.hasOption("t") ^ cmd.hasOption("b")) -// ||(cmd.hasOption("t") ^ cmd.hasOption("m"))||(cmd.hasOption("t") ^ cmd.hasOption("dm"))){ -// String eMessage = "'t' options must be used with 'k'"; -// throw new Exception(eMessage); -// } -// -// -// -// if (cmd.hasOption("d") && !cmd.hasOption("c")) { -// String eMessage = "Extracting Metrics requires BIC csv. get BIC first"; -// throw new Exception(eMessage); -// } - if (cmd.hasOption("x") ^ cmd.hasOption("m")) { String eMessage = "'x' and 'm' Option must be used together!"; @@ -199,7 +168,6 @@ private boolean isValid(CommandLine cmd, Options options) { } } catch (Exception e) { - System.out.println("여기깅ㄴ가 혹"); System.out.println(e.getMessage()); printHelp(options); return false; @@ -207,15 +175,21 @@ private boolean isValid(CommandLine cmd, Options options) { return true; } + + //bic CSV파일 만드는 컴파일 명령 // ./BugPatchCollector -i https://github.com/apache/nutch -o /Users/juhui/Desktop/testMain/BIC -t BIC -ij issues.apache.org -jk NUTCH //arff파일 만드는 명령 // ./BugPatchCollector -i https://github.com/apache/metamodel -o /data/metric -t -c /data/BIC/BIC_metamodel.csv -//바뀐 메인 돌리기 -// ./BugPatchCollector -i https://github.com/apache/juddi -ij issues.apache.org -jk JUDDI -t BIC -o /Users/juhui/Desktop/testMain/BIC +//바뀐 메인 돌리기 BIC +// ./BugPatchCollector -i https://github.com/apache/juddi -ij issues.apache.org -jk JUDDI -t BIC -o /Users/juhui/Desktop/testMain/BIC +//바뀐 메인 메트릭..... +// ./BugPatchCollector -i https://github.com/apache/juddi -t metric -bp /Users/juhui/Desktop/testMain/BIC_juddi.csv -o /Users/juhui/Desktop/please + +// ./BugPatchCollector -i https://github.com/apache/juddi -ik fix -t BIC -o /Users/juhui/Desktop/testMain/keyword private Options createOptions() {// desc 다시쓰자! Options options = new Options(); @@ -242,7 +216,7 @@ private Options createOptions() {// desc 다시쓰자! options.addOption(Option.builder("ik").longOpt("issue keyword").desc("keyword of commit message") .hasArg().argName("CommitMsgkeyword").build()); - options.addOption(Option.builder("cp").longOpt("BugIntroducingChange csv file path").desc("Path of csv file") + options.addOption(Option.builder("bp").longOpt("BugIntroducingChange csv file path").desc("Path of BIC csv file") .hasArg().argName("BIC csv file path").build()); From 5530d7d12c8bdc23cd8e34a9e9c8ca62e565757d Mon Sep 17 00:00:00 2001 From: hanjuhui Date: Wed, 19 Aug 2020 11:08:08 +0900 Subject: [PATCH 03/18] gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3d306fa..024ad1d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ local.properties .settings/ .loadpath .recommenders +.gradle # External tool builders .externalToolBuilders/ From a72fa343a0f4fb537d0e9731e332d5f771f16e00 Mon Sep 17 00:00:00 2001 From: hanjuhui Date: Wed, 19 Aug 2020 11:19:49 +0900 Subject: [PATCH 04/18] #28 remove binary file --- .../executionHistory/executionHistory.bin | Bin 130422 -> 0 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .gradle/6.1.1/fileChanges/last-build.bin | Bin 1 -> 0 bytes .gradle/6.1.1/fileContent/fileContent.lock | Bin 17 -> 0 bytes .gradle/6.1.1/fileHashes/fileHashes.bin | Bin 24297 -> 0 bytes .gradle/6.1.1/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes .gradle/6.1.1/gc.properties | 0 .gradle/6.1.1/javaCompile/classAnalysis.bin | Bin 8647953 -> 0 bytes .gradle/6.1.1/javaCompile/javaCompile.lock | Bin 17 -> 0 bytes .gradle/6.1.1/javaCompile/taskHistory.bin | Bin 31979 -> 0 bytes .../buildOutputCleanup.lock | Bin 17 -> 0 bytes .gradle/buildOutputCleanup/cache.properties | 2 -- .gradle/buildOutputCleanup/outputFiles.bin | Bin 18911 -> 0 bytes .gradle/checksums/checksums.lock | Bin 17 -> 0 bytes .gradle/checksums/md5-checksums.bin | Bin 23147 -> 0 bytes .gradle/checksums/sha1-checksums.bin | Bin 32915 -> 0 bytes .gradle/vcs-1/gc.properties | 0 17 files changed, 2 deletions(-) delete mode 100644 .gradle/6.1.1/executionHistory/executionHistory.bin delete mode 100644 .gradle/6.1.1/executionHistory/executionHistory.lock delete mode 100644 .gradle/6.1.1/fileChanges/last-build.bin delete mode 100644 .gradle/6.1.1/fileContent/fileContent.lock delete mode 100644 .gradle/6.1.1/fileHashes/fileHashes.bin delete mode 100644 .gradle/6.1.1/fileHashes/fileHashes.lock delete mode 100644 .gradle/6.1.1/gc.properties delete mode 100644 .gradle/6.1.1/javaCompile/classAnalysis.bin delete mode 100644 .gradle/6.1.1/javaCompile/javaCompile.lock delete mode 100644 .gradle/6.1.1/javaCompile/taskHistory.bin delete mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 .gradle/buildOutputCleanup/cache.properties delete mode 100644 .gradle/buildOutputCleanup/outputFiles.bin delete mode 100644 .gradle/checksums/checksums.lock delete mode 100644 .gradle/checksums/md5-checksums.bin delete mode 100644 .gradle/checksums/sha1-checksums.bin delete mode 100644 .gradle/vcs-1/gc.properties diff --git a/.gradle/6.1.1/executionHistory/executionHistory.bin b/.gradle/6.1.1/executionHistory/executionHistory.bin deleted file mode 100644 index cf236978297af420e01b36d2e4e5004b522bbb2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130422 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 z 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 xC{d-yfM4M{{T-~pTz(G diff --git a/.gradle/6.1.1/executionHistory/executionHistory.lock b/.gradle/6.1.1/executionHistory/executionHistory.lock deleted file mode 100644 index 5448fdc56775e127e2c0ea518db583c6145abd86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZR+@^Q1!x7)IR7$ATP07Xy*f&c&j diff --git a/.gradle/6.1.1/fileChanges/last-build.bin b/.gradle/6.1.1/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/.gradle/6.1.1/fileContent/fileContent.lock b/.gradle/6.1.1/fileContent/fileContent.lock deleted file mode 100644 index e9082635e76f780492d01580e750e0f9c507a26d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZRMH8^Fo@z(h-3{U_7IL-vy diff --git a/.gradle/6.1.1/fileHashes/fileHashes.bin b/.gradle/6.1.1/fileHashes/fileHashes.bin deleted file mode 100644 index 77f63168a54151ab13c7a814775726aff8b3ae8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24297 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 nQHDml$a%71lcB+kSP$=coCAW diff --git a/.gradle/6.1.1/fileHashes/fileHashes.lock b/.gradle/6.1.1/fileHashes/fileHashes.lock deleted file mode 100644 index 480f2885efddc7e28e63b19ceca1eede82da0fb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZSn(LK*z&gE1I0|Zn605pUId;kCd diff --git a/.gradle/6.1.1/gc.properties b/.gradle/6.1.1/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/6.1.1/javaCompile/classAnalysis.bin b/.gradle/6.1.1/javaCompile/classAnalysis.bin deleted file mode 100644 index f4a7d028408e03078bcaef00fc3a39641bf9b8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8647953 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ð=JzYT`-X{GyM{c-#^e5(f44`U+4n8?ens&1 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

J*&lH`SnKS>%3=KYyL<2q_(9xU?KmraP+RdE2Ov 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

Dg3I%28PFqKA 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%0D`Z@qxV7 zHPat@{a3o~nlCTP%C|PX_xa>MslM9e+#H5)-*}H>UB^#JJytv0*W`7+tdG4heiFeC znz);l@A+5hMQ0kQ{t5(N>5WK+Pi`?@*Y^D%3I5R@OfKXl zKVAIHGoKD5_*!=vAInRvcE4EV5qk)}>~n9iddwqZx6XZ->Q`ZnW=Z%N)i2FBLghud zCmFxWOFKI3XtkGSka}vjNMhwJi4DS!Zl6!^t?xPIx-udWOzqw(~`(1a>;iedztZ*ysV0iuRgbwuIu`3JcZU@PV$4~jSZRjRq?~eNIlJOea-40+hI=4POYgv(`z&1&w1k_s~C%YQJIw2 zT|3Uoj}Q6$uTM%eAovaus~LXs!T7V5@?!|T)Frkb%$xE-&ej24`V)NB+HC)uH?7ql zrW2;s1Yf5g)7$fMAFDHa*>e*JzO?;YR)6l}ac2g1Dn{@r=0yy@q<(U*BjI%kKCT<% z!+Cj=4wk<57L}VBoqDqJt4e%UwzZD(jln~taacE{+U?d$=>Bw&KAn}{&~?M|`)yj2 z`mKkVUYED2WA~BYZ!AafH9ur}a^B`zQ&&wZnMm-4a!hXKZN1;W-iF%-f;T2Jd6%~> z_tA_;3r{Eb;lC_r-`#e%nW6_~{+V-);75&P@-FY$gE1iupCo8q-->KskhiCFiz%}oqVsOs?qv1s**o#} z;HkaI3j>#=F#K~DrcQ4dLis~%1F8MbZ+yYfwa1^NeBn7AS^51FPLFuB7L_9%KVee|z+t#Q$G$m`*>anLyj~y;T3J4;b3BKGkrjO;lRXFj&@nstczEIp1R{ov$ zL;LT~TT1Z7e#~b0ce|YX?P71LC#PmdGyLfbQFq7fr|Y8WN~S;Ly}$3s6F0wYNa{&H zw}h2H6WaGwomUPCmQy z(4a$493^=3ENOjxZKzmywcy9k7|#4+dADBr>+{X;EhFWd-jMj=H{2lX(I?vp?Ldv&aae?9QPCNf@RAJh$zOz4I_+R&aJ8jbB zI;8yY1A7_%_hYZzt1zGPp9(W}GW;KJ_uf2u8Qm|mX!?|hU#g4#xXj>pOOtw%_b@y8 z(n5)=R(xOcZGum~%+|}&q6rHpHZ4c#yyvI}te&DbAB;PjK*zaZ*J=!3>coOi%1>EI z>KQ!h9fmL0EAIKaE~?Lz8Gnx9E7ojTvqq_Nq`bM_RS7?R#-F95YZClOa}2{jT<)(Q zqoOJQe|Xhn3}5ZtlDlFA|496k{TRM_Q~e9y?OZ_WY33-#@HIX>SM+k1mk7Svr%Y}x zZ4kGo-J*7X5PXk)J6QRKxf?@HM^U~P(f&DxZ(OERp)w;W{aB8aW%#B=_e|WE^9re_ zU*vIyk6bwA=={{@3BFCAi3}grc5ey_9gF{|4bo?NXPDQ_())zh=emZs-U(Qz*I=liUD z&t3;lE;cSC%G%?Ji<7~b;m*IOQjo!C;MkcAJ zY-hHPmiA4sG+giz?~2@p9Ucy zqWeKxW0X0~1ZkwigN%^DgxqjWMp1s`j~!0-tjBATXsE~|sjct!cs7Kbp5hKw3)!cQ z(ji~v!#rY5*cBL_TDWc>189YyG7SI}<(>!}Xs|lzcOl46HF+H$BesU6DG$kyDbg@I zJ`Twav^z#yZ0YVa0X+`m8PVT8WnQU?PZPj3OQ9o1HsCN@FXPme0w{#wkW}9kQp6wZ8?!JwBFGX%5ua6+<^SOl}BG5hb0`K9>R;-&ax)BQlre-I1v9ej@uH4 ztucTR;SIuZeI_I!w-s0|Hpuy(lI3thc5Tn}WjcfRlcM>O`UIv)cF2^-Y@ZERZm*CT zQM^}LU9J(5VDADn<9&o+SPZS74k(vU0U)?1T9-cWhWR#L)*?te$f%z5V{S1pG+Jwr^Y-#UR9Vt_C(4v<(^+l zT|U{6fv~i6Xf{8IkPmDWs)4;4M~5o@T?j!WJ{8wx1VDQPA8eOq`gLIrR1-@}2=B0`8`gvY1WpA1DhcGevZb0F zscgtG!@XErfSZmf*ao(-dMmgk?(CX_cN$}pf?zZTy5-F$jt6bQjgDlG^Qd1{uD@3+W@kiY0X6&kP%8_?|WHn8hcOpxz?|cbdMnc=HphGN84+1NFWLW zs=oSIfJg)%DhFPzggTnlLbH@&;yolQgZv#q3suha<<}M;SjtnTM=51e4PKj(=h!#d zY<9?jjfz@$?<}iTN;$6Yi`-}}z%m5F&^h&(wH1x(IF80Xkj|OZC1%XkZ{ai?PE8lz zg39%LQeDMjeC14c*@P4S1i%0U%~A(Gt_$%mCWDafBt%njrT3%-R$}#fCPkflCxu!({2mznb4;;qt`>g1&mSv}|6qJ)?5D35E3rK(d*$~-7iSll zc;@!ab0tTWTN}M(&BUc=x4!yg@tC1wqn3kvRX+m8SWA3_s3%G~GQ2N6P zRAzsrw?ab>c(cO{_x8f&I99CD!0+Z2DT&;vL*M7MW++W^yt3POkj5Be$J+TDgZ$NQ zjPYnCN2E)9|w7jzrp@+&HdfHKX* zWFv2`V$Sg%umQ4~9lmU8JZW(qPqSEo%Yo7$sCVQ0|Sji+%MYQR|I=L4}-#; zp>izRnPQ?G(h0>yM~3GXNQ}N9M5|bv;xwz;*$@Rpe+Jt64uT3D95pA83z{Qr&aq|( z_86Zc{Oo&IkfhsXl7{iz-}^f>s1)Uj+Bc-HsL(2{cKhh8OyFXIN(rA!1${%shEI5t zDtqc*BYLRE%~UD_Y$H-q%uXkGKtUxU-Z@UQ)RWr_AP7$PCxQ>1QCEnXmQp~%g%h=t zy7`_OWy&^<3wMr%0f0?Yio6}x{6qtxn^c89w}SSl*StFZ8E{7%_em3!|QM(olMza1E=sl zzHwO78%FmpvhC69*azT=y4Mj@E=jyu)RYeQEn(!SxE=NAfOpMDjgg6cjdb-JVHu-U6bkDM8)QqKTkAfUONcUWStF~^ z>KIPUDh|SSIQBxng$;q{P3*=(fSCyIXr=ewb`oQW0xUl%J`Y>wU0%EWU2)hrODb2evh%G*=c<`U8o9xj9O3w-Vgm&ACe9A` zYz;6uEa)c@w4CStzfC?ZwwVuI^7S)`U*QJQf0VQb0FM-4!`bZaNIWm7iC`vB(#jnZ|ep;JNof< zyGt4y>}MfgCOx?w$y=D5HoZmJx#=EM=QT1+g~2McfXE_$NL{%D@#ajs(}FUQ5}*DC z65l3(RR~@-7+BVzAT#K082%XIM{;;${=Rs6$nOg#f4*wVmcl(^TVPU$?a#=pb>`)vCvQib*DBjwy__F&*cp9!1Um#y|V*~057%5ShUfw{i_#JFm ze@6}*2sL2}q%*>e$Mm-4DA@C0cp)qV6QP)>e20pBJ#zLjn3DD99l|v!~?hGl#zo z`601PtrK;lvr80fl#=Q=m@+2wnMn&Or|-Bp`SFk+CXLv2q1WNL-^>o#U$Jw=sMF0a z!P_SIh#rQ9M5Ju31OqO_q5v6)6vEXlHO^zn&aSCYE9R>8CJlt zW^uy066w>hL0$oU(->#YHe21|RmA$GilG7XkcM^xY(>bAL809Q_4)rg1!>Mf0jJHqB>Tk%yr6*A=6(U1%M*8^KCQn|s); z5XPax@M(;c3>oyKJ<~xz2~XmnF)v39rVWg2w0IFIZ-xo z&{Z5~H$n4xpDwn|B*g&HsF!XgXcOe-5Ms4>otqm{(W}NsPJ6MU#PpE|V32Y37#D>W zO0ie8g~3Ht@xqhqkb<|%$Xl=EHhj_trI0MSuTh}gIFlpYOecknvYPm<4KlhE3}a3> zDdcj>Z9JrD&XK0(;R!t=n#=8KZte$eVC4jf9}>fXIut28Bk!IL0!-h{zy21$b zw&O@6`LF?ya}b&N;1xALEu*beiz5X$jN#xoBRfZu1Bl;r z`W=1pPSP+cmH4fTx_9NWi63u1YEBT2@og7}LVUo@j-axQC<_%z~W(_(b&?n&uqq zF~}7lO2BxCUwIBA!94{VRrou+Ur0T-m9rj?r6O`rZ&l(a`8))Es}$LyTzq+aJGxJt zeC#~R^nftgC_BlZ=cIF>ACHrXnFujZCC$%<9N*DI%Wxqe007=RJJa`{^#fHQ@WggCP(h zkR&Vw1|-C$!URhVGZye>TXWoOD_EVH?37-d3cLtVwC)H-aCh%A&uD$U6-Ocjqixw1 zhuwxIV`y#(6&?cNqaMCfi2sRb86 z5Rgq<#XJ)N1EaPZaq*iU#lfItDa2Rs0$#B^v4T_YgNoX*H1nb4qiHB)0xUm$d4S>w zKKAo|*R+v10Vr=U1i>4EWlVY>Mje%%psYz>1;?fdKwSi$ayX?bjULL0u%)72N_QPb zaH0s3*T7RMzA9`PVj!#rIBklHZbQ)b!uAgQ8h3k1`ScO8KNSkIeD}iiJE0d+7vwGQ zEX(y+7_}BKYLWxSm*mogm9A^`MM5TK&86>L+fBLj88uVUYPh_2XSynjEu$Kvj(izQXJrlDwHQL+K-Be1C&5# z_ZMBc7L(O7p2R1(QLc(*ir>!H@CX&8s1zE+>n@6YB~1nW!z~sgU-V2BGepQL&Th}- zz2(5t%BtwEu!h{?R+5JOn>SX$ZF*Gf707TRonoXnFATlTybuSaVzS6`l1D(PXcxZ8 zmY)iW6ytolI!v~dk#Q#A=fcqx-dgUpQxJb)28|pJ*8pLOJ80ffqWCTuK*dlkZR8jU zff>Y!p+d&t;7Ed11qYXty^5aUS1?^s1Un<#3qvGfcwn)WYZbHOVDE`9&fopXsn25u zef++y-BPEd*Dl}D^4i)WQl8UJu`o7!;%qGmbTin zzt6j$>>K%TLc5cbZ$*O+Lrx8up;AniIBc(^fr}QZK3T5JESF%XqQCTo6b&x$Q9}X% zc!@lE1>>0en?kWssJyQMSc;H8`@fJNwy^oJjn0QUa0_AxzMiCE!EVW+9r}$pM~wi; z#VrABEkgp?c*wPT*}-t06De&MxLvNaulL9oqx7cxMuS&te3zzlttYv!3&AgcA_PH@ zSRXy!7=*>w5d6X-DwDq^@Wy6rdCiQrcwP+8;_BhjHvJ+56%vP&gk%g<>;lM3z`7OA zO#PF`rT7Q}MY)CCJtmE5^gLlJz99$^cat^@Q_0%T*V@qg!I_u)6?wMS-cw<4;G6{ch@%#ZFG06EU2f^{3b zT8Dgi)It?1cK3JWO2VeU+3eHX7pPn!$C)NWN5>-Y!dhuzcg=B`Nxm`2K4$D;a*h<@ zGJ>eaI=`gnh^X#YzqjV z)f1i3-)E(FJw6RJ9K~KhNU07&N_AT`kBLsfyy|JERG0v{bB_d;aJhw`Jq9r}Eg9wz z&xHaG9}-dt&R9bmgy1)mSf^fvo+zwX!B7A%6;Yw~c~@w8nd*y2NS+}Tn*^biOxqWl zt76B@ST;}$o?qe@m#+r8Z2+~32A<{=KZ3kf*d*o4wixFdC?^tWe-^-#2yQ7|Gfa@4 zV;mSeAhO#zItO;;VE@2#ZQyBxqB@^3-frAes0Y-1sLrP)9BZAA&3Oah6$Di)n=+IH zQyOG26bvQ*2Bz{h^hEy@z+wb`VJR`%7+b1&9OjOo-W%w?u8=(1#B0P2Pp0?*6&@bn z!Am?*a%~f+tE46aNdUU-IwZAq0Lu|hc~8jTCV{%bRzBTf&$6Yu z(VCI{Ompa(oTH&e@~D$dinR(gY(_F-DyM4erVo2JR;<^`px~Xbp!j?MoL7bVNSHP6 zDd(xyA1hTMN|5nNjsvFL()pn(C*}@&8ezSp`U!k5%AN&BM+cA`8Tg7p&SJY+&EqUk z2w1Eo15zZ|9q_Ij2NivWiI{B=st93G>fYJu8d*ai3!&5ssO3c@|JwjJ5%{s@*1F)8 zh4;-41tz6%&6!swrItrPiwb7Z>+a%m!d&BU$XVY}m3;BKI;lNCz2ZscFHl7{-}#d| z*5pHN*7v}%tPfBNf!`h~QBZF&UqPxQ;z9zFTl^a5zNH|U{xuS(2@cp10LWyde@R7Z zCc@r`-MJfopx&T@Z+Y>w@{$txqYvkn4s?(}6!ZX?y$Xj38I6Ro7O)q)4F^vP{`kFM zzvtPV;!6s~e;5vU^dyrLvipq)Zn<>?mLF|_!@=1mYZh{JUTHSCC4Ue~_rfzfs<^#d zA?aN;O7*kI>SqE>LLejUk85=`IV~yRpM{`kAupZ~b4eT!+TVr`iw_>))cpd0Nh`mT zFHX;`Gq4TGiiwpdY`0bDy7CYGGkT})599(%03Z*le(rfb<(48TQZ^uSPZ~)UPH>$t zYY0gz{tQ9sYbqFwmuA5XsR@JivP0LZnC9bNSib@(a}+=_f?Gy%abZJxJR3yL zf-{~fX;94PK3MNvLBm(!u_G~*1}Ka`!Y;HgE~9W26IN*Oewq{U!}44SVyft>+8Nw)_<<)#UW>O!{3wmzUOz|P#3-q#MkH@b3FEN(Y(>$wB- zzpf7<{SE}^gTU)U{-)FT-wId^h}MVV__Do+_9_(i9V%Fg3TJL$Q(f?$T-i75N0E)YS-T?PgbT@+sATnmYIJ)4!UjtPx6OtcUV+Akeh=^!LQtxSE=O) zR|JZ3^Zn)HjwJMFU@ z>w5-F{$ibfyCXuyN@A3wJ>)g8bw>w7Pwuxq3%|UJz}xne^i1j6Cagfg$S#Xc^OGJ! zxfZ5N;jRqxGWc(qw12~v!E*u05U556RHN&uDgw|waLe5;0u^u%88wLE(#=Nj<15Jr zkBz~*9f0O=5L&kk7fMxtatJC2gODBX{}MYI8UVlhd*vXnwJUO0x1a~wFMUmiQWXjzN&Z)<#6Q%8FUeCP2sT&Q-DNy2 z_-igN`;|&d?G#5wjfuv8E2MgphWQ^YPo73IK{LkVmN!ALFvcayTn4`4Y(kkQ*v(j> z(l;PuJi47gKA5F?(?@D;(uzkEj1f*J+(ZgtLLMovkUTxEI8j{mgsCZ3jWr0*9$dP} zzA*}NvZ@`XS6`++n3XTIX92cn4!{%yRmL-^J@NEDB4)>jDuU)H3z4H>sQbeR{B}{r ziZRj?YuFNl`ej^D3)BBnlNP4`va)4aA17}$Kpw(onE?^+88SKGx=A6^1eDSlJP(4q zEkRFvp%k&HwqArTl6H%9oK90%%_<;rs4*_fb-40ES=+~Tc8 zY+)0^@|)>Oln^M<2Pl43SO;;)1E9|oocwJ77_PR?iw_z8q%$m+Xcr@u;N-g{#g}*4 z;5%Z;yWR>P3%lF%#~uqUH-=UzeY%qMD_i~IueY88cyf#N2gFHD;*RK-45INMA42(M!*%5u4Rq=1wQe$6Vj1ve8U zJ1FQ_Vzzhe_Wz3AP{n>w7;cZ_G-1yhKB;u=gSAni4Tc`mJ(5y$^^`JTGcY`c+#Byi zZ-wALfD1Wm0%TdWjFSSmLU|%U%|b;mh6+~68;srRRgM$>r_2=k2;|ML0lbW$mKP8? z%;JXs4e{#7upi$5+(6)?zLfOEgwdAFfkL`bi5&j7qCvmMK0_!DxsrIUDlrh94FMpL z5CQITH#V`9bgIl$-s*schz|)xVHzpF@|9*oQfZA5R;x50Sf7HG&jn^Va%nWa7odHP zXr!B=er)FI_f^Hud+WK8B)26Y#t=9c1-EEo!_^%a^;Rd=AUr#8o+koe9w3(rQ9;C9 zS34YiG1)||S*S}@>^vtXg%_t{Bh~|~K;VUrzbUol@FzpC$^x3!EznFU=h%C}O)H6( zhZFU1OHDe<0ZMNP^=B*dHmyOf(t@B<7%IgI^Gm zWzMi$#xo0(s(0WjCn@AbPp*hi`x$5#KHH$7hRy)!Uuf%2!E7W4^@;=i&5T2m%0`tQ z6D+k=(qL2Uwrq$8Fgu*#XxK@H;`GuinivZRh;7A{rF#qDFoL!Lb=Q@E(4-51G%iri?aSto zEn+p40FB4zUF;27G;YKo@Y`U;{X1C%i6E2s_9~VYKOw6&1tnsN z&;UNMHS|ZXB7~Hf5n>z;3+9=H>~ipyzHpCPp}V(_f9tn}Z+y1ial~G++lu&ZQ>un{ z{BHI>SJ5kX8^6)H-hs36c^zJPX4cqGHhkKA`Q%&YlV3cVd%o)Zy4MC4(l<)(+;8H> zyx2ASF1Y-5nH{HGgAL8U_}-#x82j>PpB{K_-cR#) zuZ(Y((Yo)C$Dd8>`~B;dZqLS6oiO|D8Wp?W9NF!Iv{DnQ-n;n8Yt@^zZS>pL*b=&G zpUghm;!2qg8#12R(6~a2(m&2TeWv1$h<5$Ew|S;--T4*cC$7D4r^e(?B@?TTuk`SH zS1(T+ap#wo2ex+T*T;N!_V_|ob3a@%t!1|{U2``7Qf%?|eMf)kes$UM zFCtyU)>!{#=&!qfoO@}z@zr~yep%5t{+kgY2hLZ$c>Gc0 ztkt;|dhY%77gaAnZB?QMZ-JtLP_k8zxhJ=&pbLO-;bEe@Rr&lg$ zxg!1ilXbJ-*wLg(?5Sl>dXGOg@T)7$x4%>7ub_(8t1lbzd)QO|v^Sg7_TM<6Npx1v zk9%z{9sO(TmMKBWyK3#&cxl_bw~NI+Je1bq@V(bQx7BGddvmcJV-M{pGa>Ny+HVX8 z4_ykY_4y`XC_oU)a#e^ z4aOdyS|;!A@*RVUtawl-^wVQ)2U#Ci9^HFhhWYIpjl)jNn!0n)TLI_nW%~Y}ReN8x z9jp6n`fO;kr_WFNCM9)f?k}r;`E~J+2XEe#KRAtPi)+y`%E>q{5 z@gK%qoqMZy_4pq;eORXYui=9-YM<{?>gw9gD^5jxQ^&C6^H=JA_)Wc!cg6p<@YCNf zeBStGuR+f}^{d+UL5qlc86V$VdF10&8#bJ1yKYp~kn~j#Qa(O1W!>jXx4xZMKBi9J z!Lx3U{kF%!^B3lIE;G6R^TofJx9ZTsjU_w3`CwOIgQ|TdPy706c8itv{no^Kr*1vi zHhY)(@!euOmYsXy!JvV6qF*VWYuj39!R4FQwbMdNWM6yZO5V^dL&{gEaC`E+V@qeW zFto`1^1=7@J1sdCuS*!Vt^ct5zo(V>W7IsygBRFbwFU!R;l=e={A{QMH%+2%t^*{yvKrZs6gZn!plt(aWyBO_P{}WQPEA#p>t_kOxJ8YyHtMQj^^g z?HoDP2tdN@Win=lr<+h(&v9QI9x)~}0OLc;jNSG4LUI{Pb<&6r4$kg;u?_mNaFS`a z2-4JRc6dRhe8Rn*b=oCSY1KO9p-pimoM;h-o}zRqHi~^!t5#5h^2A)OBSJKDolHsG zTi5LB%a-fDetGYs;nh_{YS;%wQ1+VyX$&Sp7-Y_=M1mr3uqMNUi)k3xBgqKJ7o>nW zLtZLP{qE|37M;~Rp>W)c%XrU^t3C;slDkQk)tjhVbA5^KI1!)>4-$|a%FaL|& z|0->x@vgk0$^Q)BfpwTGLpSZHLRpt@7zzkN&<(s0bb~QTcCYJ33$uc812?CjbV;~? z+pJCmgrCVcT);sc;Gk|Axdxoy`d~aMJH(Ssmb*?tdGh&gyw#C4_yKDB4wLfqjBeL7 zqb1c8nT*O4HteUo%7jm-3J-Hz@G^_Zwpw8iq|dAh4{Rt8T9j1;(a_O(04V}M zVL{{5RvOE}M~=RJhF`wNw8K5U7V(b#<|Nt%HNNIf7Jz2_J@D@&L~klz01ZtVrNV}J zFy8&KKD3YDBba@|eMomOX?3B-8j8ssX58}x8cUS$W>B_yIY}%mF?cL;yKEEo1DD{9 ztPnX1V1&ti|DvpxRA)mR-ssLK8_>b5^kj?rN2FPTPU%^scEQwQoWU^iEsi9f`J?Fs< z0NnVjHYkBe3oSiHx)TG5T+mh$Q8Eh=u|eXq=vWLt{Za+-6Ef4k>+piM9%!4sI3^F$ zA|oL|PR+wxS`zSY(h`0)4f9b6=lvx}xDa+;B$g8oVV=EqW_=m^fQOsQF>%F+h?DUg z>;T6VA78kc{{D+S(YgCw>?`As%E#B8cp5&=lmx$9E!3WXJ@kmE`i<&X9A|<+`8IfZ zw>#XGpngqI72%HLOdhs^xZ$WG4cR@08}Z|k1Y}Bifw1M1IH2>8 zKF8!n5(MHD5i7(ug={*1rIaTi$MF9BVk2L0Q%!6(EK^1d#7b3@6P+~-Hd|V@aDy@t zvBSxqhlgdSjy0pZl}F6OzFx)wj)#QOq>Wb?knwdWNIsru@PblGnXOQ6GIn7Xq&!UC zVjl+;cow?_y1WnjzY-F80YE#VLP?LfFFjFpt5W4FV7?8#G{A#&2C!=wOuXbi5{-5- zrqNko0<#j|O6qp+S&S1T1BlrL|P3To{5L2S>(|Gf7&MBi5Kx z1`JIkLMqxk2x)_vEkrC1o|_c<+n+kIdDT^%r}zX8A&3l*&J323YkaC=6DdKbfwAnSz1vnhD1gV6o7oBoH=%ZGoUl%&r_WFHBvON|ZO4e1i@5#!g7Nm`=Di-b+}^ zKzyJeh;S}pDO7nCjVF*FpCXmHKgPG2QqUs=-FeciM3uKgN1fkZ?7cR2mOR`dm<~Nf z-0<^_IdRb##$uhKER2P)GqxPWxWqMqI3Wg2vsj=@jm^V{%V978v3!b&bcgM0y!s@t z$RKnlBEDI2m7%y>k8DtUQp~A-@N+V)nb@j?wG_vPi?ZMGj z3%>YD5J6`sggX;1i|8^jd7c6Oj_s z34}N-`o5V-+&5U42P3RFBRxzhM)2Wb8xC*;pGw2x1Vi&_S*08{eGum`1=27~+^8Y- zJ%NJo=~--}z^EB(@BZ5D?DFt?!}L*ST5U-AywQ_BJ=2pR*C=c*8d3x%cRMdOs23Ql zg$vp|3lR&|`h5ZkUNQ6gh=*N3^Ez;mFpVaF2it@8dN!4lxbL7-kaweE0x?zUJ z4x)aBTzVd5jP9(k2i*5t{Uk3anjXm7kh>|)b3OFP^$gMVK$g#j!h3A{oQIycnwGsh z8&@-SduWx31p*pyVGJvTvn`n+HH;C=2`Ywi%?3E{u>wsV?3i1EzG@wQ)`!lxF<}#* zLP7z%nZ8Nr{+fwM9|d}7N>&Z*MTGNwNaVAju=pmS_z;X6!2paRD4E1rN6~v9P_O(izZQMBfBb5GLO?sm`Aqhp29H zM;7Q7!TpV9s(q;Dp(jp68RBIH86O+D3^)PrJWHx;WQj~#^ zP@?YZUhahfnT#2N^b1+@w{K#mAz1q(NIziWFoqC;pG7nm#Zo8^gj{hnmLzw7#wZn5 z8{D-?217fD=^1i$OV!3BG1$;!1M17ilquChc%CLHh?X9COe*Z|Z#ei!NTHZ~kgK6M z{i3l(%_d{n`LVMqZz(P@8DE52zQp7ex_a7MVR&VR;C22EP40Inc`2RLLNr^|{Uq6; z!kp+!9DH0Ce!l{<>{ka;6-<&_v#xZzPY?9I!P13!WO)xV)u?2_(E+R=V5{wGP9{&? z^h+5GewubiEd1+^uPE5X|Gr1%bGtR`9Q1t2gA<{12I-ohuv~ybJ)hi7l~xr7%h={l z_v2RfpIi$=$0f0lnhY%oPVo@+c>1u+sIZnhZHncN4vrMM;=Jh#h){4tpPCmznm zz}`=zgYozeDKt?xg=F)@Wu119vrHG3pS;Qjr-Fk)1gYW^LEz>el`D5cZq;}?Nh zlmpGL=J*7x8@|=pMKt;j!bG;1s>}t~QPP4VY({d#30XPcAH$sZVH9OO9QEsGW8zk* zv1lQMnB=Vt^3RD^5+j4tH_mx0$5pd;Cmh1a{XGdJ1){Ly{KA5u2a^9=kRXV@|8#Pv z!Lt%29AJmiqb9_7JeH@&T3BOY{zGu_R9`r^rmwAYwJ$ar)XQj31KrVRGs4|?xHS)o zB>vUq1Q0Yr7rhh0|4{Er*lr3Pm6_JqHCm4-*@(zj_-90zRp^k=42J`Q zaM~uj&CKBjEDQ%{%H_>CSVSJ*XeT1rY{qQ<-b$Jk3dJYLV;-u`rBIC77=*HNk;79- z9H&r-zQV|bWeTJcs^GARID2dyD`|Rlaq|LWT8RL8&gCf41g!+5}w+{ z&eF}ykF`;*&Mf@sr$Bfock*9|+zGV|Ji<;V+s!?9iVP1AZ`-<+4R@Oz@^i8%1Jm)Q z!|NwThqG~AHa5;~Rd~yENJl&nc|RYyl6xOE&E{L|DtzQt#eA^N&%~6!_@VRUBci67 zdC=t4TuKy@r&3^KgxYy*uU*!1r{U$Vx+z6QDt$Q>3T0pN(-M>eBsFSt8&N7%ZY0$J zH}z&btoPkML>(OXu5Ufg<69Q2?# z=%*{MRZ>DIIM~yxjsbFUO{SH*w-C7@KQa=fG~Bqg_-V6g$pt4_kKI}yU@iRQTR~P% zb)-_0jC;0AE-SdDqlg5s7AQFBZ$i3^iN<^65_ZKMLVd4-L;!X76a#+Z>Gj4Ob1t38_3o4l*L8L-i?@A z2>SguCJzT~>MjS&r45~zpazc=P|cuHfbz5Vofo~$^~G^5yFhA#iI{)YRUYbj5ZqV& zdDSqe#sD6c2Jo;nMC3zFpe0>V4^p|B5U-HRHIQF-vbHyb)_3{bjo2!cwzcsK9zN*r z3v=M%hHg28ceZpy5x^w$uod5aC@AuYRqHuKIDsWd=s!Q<75P}fSX1~VWU*z+I}3v1 zPeUpJp3cNK@+02~k0-g&PsI#ffK(F~A3oygxd48dg^3(e^3Xlu=04Uy?*ywB5^^~$ zLwc=bbtzKQ;*h{$(V*ecI@hJgZYo`&nDxSqnYp00*)tIX{r|l!=+j2x@3umR!&L-4 zD2=o*2~s>JrMX3>{D`-Ubt*3o3Ad8KFHOahLBVOY8$^hs;R=R9qbNc8Kn(^nBBC%Yl-_IP`?%fH9rW(7VW?{2qwFzjpAu=qPA zr5iyZau-9@iIiOr=BG3`+3Z+_UxX9oaADeDy`PgCJXCurD4elL@a}}RP73YBC-4`e z21TJDzk2Cv7Ukao(x<8m#3Cz@bAGgu2M^&NGek(HreNWk2|p&Vl1_gY`Ei6NERbw; zjzv}T$l>p%Lg(;F*Fo|I#IYXo*CmkP#76g)%UL87>wCt=_BC1{oPka7aSjqLL@NFO zwUE#7u8iuruZd^@W|Jc&cx0;G9xPTURJ0O1h^`)ZM?9Gr-FO555?D#7LZ_MkkH$t{ zhXhZW>LzP+#K%@W$pCtd@&r^j3;Lt)0jU!veujc?0ZC94dxl@2x4TgzdGu-@QNdUs z8@{5r|H>2HFYL>1XD?SQ;_tj=T_Nn8J`xvqJ|ysE(an^%;2uwdVzVqFa!P`fK_$8Z z!*=v#(4B>J5)i6?U}e>CQm< z4<-+Hlhgy8OP>PjVS*^d&Oq=I1yFW_7+MKXQC2-@pxP8qx{sh0{4T)Y3?m@DfawhX z5hsWquA#?*AUeAhpCU+-xszZs0h+~09-m7|+^*2E@Q6S(`16Ka#+YqZ3qBgaK@N#R zgzmub-dVb-UkdHG9N#^$d6ijEsI(r0Y@8YSagl0cl5uj3NsvQjYoJNAl!lY@K?;%S z>jv`d7rWjdAGAnZ;eIV#?u{TXT7cFhMB+va(!06Q)6=C0W|gZH`PI&RILY+}?RG;9 zbU=Fe?CplShtSYHOdjlpax&z+UPyZAf#d{wvgK(bFp^eOEL)lhDD?bSpi=&;Ac5({ zf00ky6X&5QKUUKXE)kVDBqXw3X+cq!Pl$}o@$c(rp)>ohLrL)}r1O~g8J1dbIkL^9ZY6RW zz?fQ$2?Mc?G0FHQH1DT$EI~^voNGAWt)OzC9EVu7u54ApiJ|hFI8g1zcN#edijq&W z@=c8IEDW%lGgP7Da1RIG1EI$nh68R)4pejyvXUPt1=66B;(WTXN6Q*=jtPEZ7+^hw z1JOe`5Pj%w@m9ZUSP40w#yjT3SV>=V!V3N7iiIg7bv+f6a9URtLM;N22NmLfnEUHV zI23m1LJ*e6(nI2*;5!8_>hgWzF2zSOl#RMSYNmrDy1u>`jM5JiaST!2 zM>Zj3vt&R6o!8{({U6n0VoV?RE*H+K;eBSOUomkjQLPXzdzh0!9ptHw1(zn9N3}XJ zT97awxZtIblih%H2@~he)A{?h%a!M+3U05=qBvsZXMiv?{BGkuhdr);fXQ1l! z=-vWSBTOsRs4LbFZGn;moxchEbKR%4PY{7eGt z<#1#=-va89m64I%%W8L6z&Z{1WKJ;)QL5cIR7wg%6NaTD0T0IoTTG5%yB)$n#YV-# z8xnw&tL1-CYXZt|!TvH;Eq|sTX-R`VlIMci=H+*mhPKE@R5kRGdJPlrEWOaWdHXn9 zmfazoDPvW7u36H%Oom!bP}zK(jPa0cm`Jx&MFl4flZYuGLE@`Z&VW679-)NEIMAB& zn+#nr=wV#HVcI7$C-(v-r3}s>fj!`PE(@+d)>w#Vv%6!MJjBG6P)N3GG+OD?&Es)O zoPle&=m_+?h$niX#*!uNs&R2ibUevuW!C5aHA-R#1WYIaRHVdWOui{cy4v4zXh%sH zbu%Rc9xYR-Y2Z^j2BJ^ef+DGBk*L58Hl~j<+2jJRs_rE*d%NDa)^M4?wP=udr!(A= zl|f`B2qws3%#>J6sU59A+?IIGC54tj0hb3D0<{#we#*&VesdWOfkA0}B9509Bx^wA zFBcPmYFk2YW3w&rwl*H#N*#2ytvi|mM9hg#;CC;R`UD;;7*v*@0;&#O=2*yaL@f^s zz+t3TbL`?R=JL)c$I*eI2J*IHgxs5?DtrT2=B4xR11VSw3+1h6ji4j3rROJ zE6ab>z={mE88ab$>4-S9Nq@VTjTt=h^{6IoI98v0}Bg@x4iRqZ@cZn z?NzV+U2AGwsR0YqKkrlaMsBYC&q;m0AJH%%yxOgw*FNdJX4R?ZJCwK<_3MA0ySB@J zYSk%yOQrXzK6d7NA6=Yi+J9%*U!V7R8gT7WQu&fCwq86O+t+aE`IjD*3EJ`X(VS-X zj^!^kdAPskz0e!IW*Pr;qsM$$58|AA7&`MIrjPk7t>)xpaQ4h{5Y9=@+k^1ZDbIXU=*2lzdlr$>i8+s8h-#kvZC=nT{Lsrq48n8R z`zi069hp3iClrrg0j%pYTQ(Ae$8QC=YXFV#TcDW@(@BLZX8asSCV9#CttuH8I0upM zIE)BFcEZ=JS(aoDDb@{d;!r(>l2UG{VIrii%Ksjh;b%|hFQzPmfsJcC@XXj{a%u(>b9jhWh%hFT#K|7-SR%iv{e1zGqN9UMt@~+ zDk4C+yf8tY&~S4G?~;{+smpgUlNZd^;8?h>ZE@fQ_()4;mIDqP;ejsbrd|l3hFym5 zGE!wsjWO{s59Ts~#ku@C$i#SL9!N6?pW*2MJ08j31;qX7vCON33NflZ6j@*pxsaV= zgcmw+FgJcxe*94-sYHeFyzOOg`{gsmGJShkBfHnB*A8)yqRIGT$>`?*%2< zz{DmZa^>fC5fwAAuQ8LXisT=3yAZF&@!=QQfzNaxnZVCt^DNTJ_x~7J`}$0;%Jpwom{+a$^!VA99-R z!z?+;a6aedYDet5c@*33N}siYpp#k-=e_XSF&qLME&`%okrS9W4vYk~qS{UFlgk^byHR$)&%X?!&xJ6V z8c@ubGz#LO2<3PV9*I*yq8+TQNe+tDlKJ4+ifTRvJgzR-?tm=t;7T!@lHs{=SP2X> zC+=q+uN|x;!Z->XRG|B#z`4bF-eWDx1ojz=C+F<&mSg$VC=l1RTC!(jm}B;_EbF6OVNs>YY_;I{#bFxf;Fv&c0{4uBFrqvLvfNoz zm+~N?OZGdI=W%Lz3irH!Qq6lGm8uX(4KeX3!8(7X8IiqNg11M}Ek@2h=^>u*ka3DR z9js2l{o!p+FebvUN;4;`4y}z?rIUs$TUOjg!o`p;K9{ztyd-UOIBe#`EQiS+9Lj!G zcEDyDGZqF6qU#t`e9aDJmNXEi?7{sZU}}~W%vtCq?=`H3cs}bB~ z^HZUf77MlEspO)MWdb|42S>}^i8ZuA%z-;NhO(GA=!igly5mt!tjQtRh4_U#+;}d8 z92UEfx6Frw2?#xwa7q5&Do$A96MXdI;V;hGj?Dsj&g_6=1FMC@&BA4c_$8z$S9Jjv z20lYgz!80ENJTJ_0dNvUr|&44`z&};lHOI(Vx}hS#*5|z@@vp!HFF=FKauu6xVtzC zn2ZWAGrCrgnqXS(#`p*kebj9I?QvRx(dfZzU%&bY*U2}zyJZhcx7xvvJI)%BWdkp3 zyCWj-tX?CCo5BK`v;iO4-t4$oVz0T`a=owl1{8X2mHfXl#$(jQKZs z;qnR9f`?9 zgyAIX7?TY(Ks##lNuwaU=V-e|u`yP_J z%a9R2@?cv#_@z0f73xX~8glHI8$TDs?+gP80C)9(X_&NgRjjhOH>L#*hfb7x8o`i+ zq79r9WMriqwJ7VV6?iW^a+r&m*a^??plTmuvS+0`G(80(JVg*;G^fLT$?$PWrcA7f zzj3F6E*y$zHU?`rq*WM5g*G{aRyBE-U&LmnDyB*B+kX(5oHD4;UqI$!9DSBb%v2oZ zx&(h z$i7}!7kcgv#l+cbQUmo|=t#-GP;Eqse%1OQYOq5W$&qhai;-@{;@z8LW#*R+|a_$;gCbVOwxmn$gw|!fp_6AqQ=V!kP(=JS82|0pzGMExCKW&{9rp*^m9PCjilp&x@PZ{Q z6i4)Sqz%g;fe56Zw~vE1n3IVof@%~=u5iwt*JXFaLMTkE@BiNz!TCg6 z^+Hi4SMk{?3!(PzHwK`n;J^ij73Z%pCiK0;1;Wpezy2sxA&9@U7(Hcq1poN~6DN}C z^G92M0d3_vhbNv*7^;^n-kbdi7;I5u-OGjFHee#sr$(X~XB}m-n8%BB)6cy_gwyWE%6Lg)cOXAr4rx9niStP& zy(LHEyyN}PU?JS6@QfUeIbf?O)++N08O3uNiIrBFTX@GoQAnayyDbDavr|oqlE)?9 zzix{vN(BiWK|{aMW`?KO-tjcZ9;Qq*(^`_UVLl8V=TB%#h@3Cc?UkJqvf>=WvaEqM z(xC?pdg^r8sP1e4k{g=+Vojs7pf^M|g50id2R(7QQ4t)5iT|8149&ajv{^j0)#){x z7ok)BUJ_3JOWI!EZIf^$VT>F-Me7}DPjUB2KMGgQCqZg3y!0Rv1fK+{F3^`Yn3R`h zh#f(|AXGLW7x`SAR>E*NEJTykQBsM*a%v$UeUKB{SNO$_%@}rg-eD<5@Zpf}9*MCG z+?es=D%NC>fSnDj66<#63=)3nV_0t` zksaNcY&NUS9t=nXkHbKSf<)#=l8G_;{z)GSFgn5NV8G8kSxr<+<%G5Fhb11y|>Jelr*q1WA7jz_QOV*O_iYqjQo^ zGF1}t$=G4RXJK>s8SYtflFG#SE)dKv9$#M0I;h2ECod2hlwIu>9h%$lBV#;7NZ_VO>U zY?*lGmK@=^3lYJy`>_I#u^u=&ujbRobJ&b+yU;qxW(0CuOtX~7LD;cXoM$FhYSfGQ zF;Ua%-Ap~aGnJ!w^9^RTzdCe+=6!K z<7zVbPAV|Fs9dLDMEV<$E@9$U%W*(~1WPnp4XB3Tlf8k*;h*b_!khk6Q!!ae)sdrC zi#iDk_%!gVYBmi95tn<%f(0o5l@fiN^d+`jy#~vR@3rbuAq~ewu-9YfqKM3{)0ey30!~*SdgM9>ns^NpCmumo@)-(# z@r9b_<5J=&@Y|TEuE(>M)DaOR4e%0lm`!%Y!W#IAnMM@I!!D!q4c=xC;h7o8C;Pf! z4ObwY!=$BoKmJj9wJi#80bpp~!8nUzf}qz$8~bLqfa-J=Ib=1m0b@~-Fh!HsaFbwX z@k`9q;H6Cv6%;qAx#Tl`g<5d{1;N7wXIb!w1QQ>>kvkGx`)&B-NJ=`$sDie@qq_+s zaBsQc5UhndL^BtM#y}Pe2_Tvg#O3196ouAg764A2fzFZ^`5!e6`Vf{jT|=Uh(ib9|G(;}q$P4r6(ZZ}U1y1g?&ELFGfpkY`F|!nqwS)s7gaJ#R2IWUSnT>^G zhY)P1_Mk!V!jTrTBqa%Ed|8WQY%2OO$Jog0S`x%XyD^a73LK~F zBcah+qKN!Ym_#_NQMh_yNKKAuA=o7`JmUOtkYHgpUCps9#3e_|&UKf*l*3<)l4F5c zd2L|jKu=XGj-WepEQl~lp`#q_2?gX-*ehcg$E*mA$tE*CfnycSASns9Qxn{|!J{G# zH({b&FQW2r8ANRt3M1jGDCmK>NFF_T48Q$^$+KF71yll?C=@IXdxJlpO6S((;6V{n z*6jY2QTIEl2+S~}O|Qo3z)!D1Hz9_Z@lXi0P-?REsD=rqq#!hIiDo5imB(39C?R*2 zoQy+W0_iPGO1mc^a3Ho}BsCI9EFZHFv4^P`J!uVKUT}sUh351t6$-SZImm$DO6(xM zi-gW8CdoCDOogkFu<4y%1J1Z-aM?yQBjr~L8o|#7t@`Op$zsjeOtvF@|8+Cn~04J5BRV*5j zWg%w>#&og6UU3F~w^%kxm}fN4hP2}s=UG|j6+JBim$=2 z%uSUsF4#8U0_)RKTC#%ov)eI;C-uOXenq=hl5h2&PqHJ+s-x2U7UN+s@c zF~&!7j%rK zv;1?;h&f{fL9tnO;sl(`{uX0Ovf7e4=0Fe;1g*$>cFoU>P&#n(A)#3gt}FCYp|5xm zNJ)bT#yms7DPD+IB6OKUj6(EszFov&UBc`*H%u1d;Imjph|duVUf>$6*0PZakJ-uO zME*5lNatKt4&53%E|LrZlQ{YO2^|?s~ zT`-PqD4!3GZ74LtkVWVq$J7fYMZ$;Az5L_CYXNwLa;zXutE-sLkJuu2lkha)kd09q zcm)!AZ)Z!w0V_2^cb7^84-Bs^q(Gz2?=|en1W33O=$mX@QX}=673{>9kUqua zQ3{3(@XoR)RUJj{d`t&g#IJlz3~og$>?nNaaA;mwRpM;si~^cnw5sUKLMn#olLER@ zBp6`4!awg3USCi*qR8Ut^c7)l3}#41Og?UGe}1a#8dSnZF_*vN3RYVXLMu#Wz#iG2 z^mHRM#w3eu$|0gNh9d~gOm6jx>F^7hiph#k@JhlkOxyRxqRAJV)C456AVI)8Ou?Ak zQ!*30+rb_WhpfWa@!4$V7FfOE|G;L}j{zcQ!KB3*QWr=tiHq||?A`o@B;?#%tCbfP z9U|Xw4NAt&x%^}SU-UBTz5XS{YzQNzgS)u8h7MLK$gqM-Vn0mk~uqYD|S7^wu zc6vi>5!B5~;$bVZ=PR70u`2iq?f*G7<%$2CZ+>W7?t}fatL7D|zo*#HEpgeOc6x&kOyZpV#%bre{mE zKYjthRW0Mx07acl6JIarC=~okq+Af<@M#fNT7Tf;3`83b1#=qom3;72jAlEHO&$@>8>4uhBau6t_*>nR7!m?`3D;1>enL| z_K4R$#@MPf^`%E! zYr;71KO3rmPY?Z{pb7@KP-eJ*$){bRE6O452)kUcTFV2JsWL@@k6Y{x*!3KIA1%K` z%7_I2S2Mg|4^fRc1V1cBJm8}+>WML(-WugF`eQ+KfM*+>V-iRoS)dAzNx%ZE0q;mi z!INMPD-QOX&@t9|*fM?`t0bNuF)_Qt2G6cw|A2jDz=IdD@TLd&%P1eK5i{bLXfEL; z59I||1p$P?`zzx|iFFQ)i8R~Ol%o-Igu%No=>BC)x5FKzF%Vnz4cRRwxsOU^|)M3>98FqOs=+^Q%7I=y;hz^eA?54)==5#$gB}*R5!i zV(y?%#}7c83TXgQgbuM;tFGxn282K7%zv_yGTd{V1VV{1yQbcAAZ{{4%g|yC*Tuu zJRs#~fUc8Z2@TkkHeiV``V0!$7#`_JYdtz<}XdW`*bJybE{$B{VjZ( zW`CBmD0Kb%1YUOET?U_%cs;$=^)&=O`pYy1e>3|+$wt*92z+?zGzMSr`>hvJUWCB@ z@Wn3woWYkaFEw)C_Xh|(=oc~n>Tmbgoqip!E5Wnu?HjWEZunB_tOZx(7>$>zWLZM&6{2Mg202Ohl%hnFOMEK9)o!3 zbOVdzGI&mt4)I$imLu>=%^xv%uIcWFj|apM_|&{U48Hx!*W+rn>q_8RZ;SbNEZ>km zZ8rL?suFD8G{Sv#s$SgYP{Tx%{)Oi6p-z+|J

h$7hyc@Q;>uoe(o%I?Z3DD1#r~F?R3#gx3kYUXw3H_|;c;ZK;6wFaX2W zPh#*>JqnGu7(?MheivtIZt1%BATs|_1z$;hPGx*tVn_l17r3!&h{B;F`Uuf{gEAtCk3A}N&{UZFO zO%*<$1kOkB4W9QNgI}t6JEk6=??GIjO@W+XV#+TQRCh+EU_b~XA)8CKS+u#g=TlRHj z@V^4eG>Sa6hrnA8yXk~))}Nf$rRTy70w1_Kg~0<0U$AvGfFur|y=`L#FIuVXpHVcs zZs@#X3|{=bZoM1i(sge*dIN)(Ecx8(uB#|LvA+BkgO|&Q$tl;Du6v0W>o9oLY6EJU zO1@0mwXJ0Mu(|rzXS>~K{}F*lzUIgB*Loo@HRP?n1fIO)6%oFwN9Vwbl+u}QOlR=g z^+#t!?dnhKdGv`0-+TUG?*_E~3g_88Zw@jZ{K)UOw@Ln_$&7AnZhAbq(Bomx6Zq(A zud;fYO>I2oMh@L~Eha8x@Q_v$r@s^afaIT4V>^Sl*xjIJ-nlpeuQ)}V&sKlguRU1v z6@fSSekjY|`c{b^#=8{%%gyZVcX`f7RW;U8qmsFI}(2;9bscS-ACvAAv_S z`jEjxE5yDyy&m1aCDLCK;jO1#{p_W(B!BaGaUH|@r7sUIewM(WYn8zA_g>m))x8dQ z{-M)N$t%g=eU1+Q_4VjG1YWe?QU>qeCL;AtVGLLW^r~7929HS$Y2>j*ZeHnb%%$3`| z-ADPtwEPvABpZ%+MB-QAu6|2PHsYAN_)OjUd{nhCjoEPUI zqxZSoPdekRKb_7p;S9@fjd=KY)FVo-I(3}M;A6*~ey_wwRBboh8X>~h@9$q{DCO6k zA2a^4dGe&t?3Nw=CiO>ubdlws{IJW0O10^J95z&(=U2WizqM@}xaKIYqp6-fT(oBm|^SKPRtcYz7*rjn^$dUGQ0bDI?qXK7$4lcer4m1J6@&oRg+<2J@5Q5yp!p-pGiHV-=4_o zfA{mM{kKjoLg1s`5&OBhkbT3Z-UkW1bLlZG|K_D%zqaCM8-X|2o6O+3i?`R=n~+7| z{o1c&@a+qmf89NK6oI#nST=CKj{{GsJZ^I+mB!71IjST+5tQ`~A zCm$p5I>{{6ZhV*Uh{{;1SIqv;1F{x>;!d!%hS~ey~}Dua2wv=MKuR zqa#H6aAr^2>$Bf`Lh?twHIU^$YtmisZ=`g)@5@se{G6ppnZmJj|JMBZF9!d{HmLKM zP88qD42Wa!Z#SQRwRvO8_g`Lpg~6}9YP#JztvhKqwC4&2znakaT}Q221Rh^T-0xT4 z>)Ly0m6Ze@H@lIT|A>9k&7cGVx4u}H!LK!_6>?|bVgfgm6!+JS;T6x1E==(-V$&#= z|K_S|2X7@)`Eb|(kw4z8HfrOLKLz=))M1wYUYiLWO4o;IlknC4^BRLcD&JxGNTWZ2 zC(XIQ;7>M<|9flr00OU)G>pN2-M^yYt*(?%#$0}m!G90S&HH0cSCYR~5|dXq|2}2l zk)x|9UF!0Ij^+PjV9zB3@3kTMZAm1a8-#V(`+Zr**Bgy(NLyK3svp%SHdqh0x^25pjk5*DS zCu8+KmOnIQ#}`AJS0eeNPab9P?&eCHf)Y~*y!el)3?9DRHl$5Dr6-v?_A+?Hqrwrh z_1#GRNvEnXc;wgRD}?+&@g%MkqbE7NmpxZwM=e@^LfLyPf8RC7=ITz}C-t-(!}P?Q zzCWJ$!B~c_OVzTMSpI~sx9wTpQJ@>I+Za4)WA{Q;ZqxNDe>H)@Qyb`JUpzd5)L$ic zvIt*VuJ*Ctsa%xOL&U35cjh*Dbf_W8-*ss;%RgrM=Lhv4Q+iUk))f)HDWS>8PH&R@ zCC7iv;A11MjQjO6#kZFRGkrNHyHwL36Sx0H@~4dx`=4Dp;Ym#SP+HHebF7|hQ_rdg zjDrX~WdozzIpZfZJh*wn8Ui=J(TwGv6ne?>aio#JlOKE|!oxGW_56v_v7i!+@8rB< zS#)vP;iV*h$Zk8!Kke7#AO31e<%G)WbytKJL7W(9=UK|Kf6+kI#Cs41qTu&-hNxn#W&1-#7Ln0l{$=1BJjwp_6)xJgRVn%tf6vOxw{4i-#c<)sTt|xN&f!Z%8T$BrTV26UPa)h z;?)>@f9+xGHa%WI;FDJ{KAUqe_3V?40WT1^rR5ha|Dp7ePd6+|B=BLWj9=#*o^gJX z{zuBMt+x-b{6`XhEL$jMJ;~pF`gI0B+WO?lwL3y+{bhQI@L5g&YO-b;f!Fk7{5R)# zvzu?c^+hiNw+#zp`9JIZdiRSJDg7URUCjU4@m?JlbfNsK@spQW{!{O~_Hp}Fb4fk5 z1H^ea{m>Aw-~`311`BJj{9i0N?6+axHIlzom#qx`Rq0wk&G?({(~A3dGWhv+)Aw#_ z`wGclA&bcsIp=#n-*&=_e-U`mY^F!#Tr~H5hBpA{qU)_;ie^UIZ5RXTqdN8t5(US{xl4oEz7=Jb(g?veDkLhzQwP?wv4)GsJzt5=Fi|o8kbtudCYqxziw7_ z5#D-#`!*jfB=DDNHWlIfuk5aIX)1wFZqMl6mgoMP6tnljYyyvnXZW+F)adFJUO1Oa z;N2#UXZ1WkV%@PBMX9}I^1&bmuehy!`%8_glKlOSZeZ}rO_CGNjUP?mgM*p=yQOyJ z;jNqL{zKsPBTKRTb&CDHspwx+e)iwa)@4hO*>tseix`r>#u-L`w$z;wHSyO@HwipS zSC`dO@0|-*rtP5f^U9i$3|_xz%)Ilbrdsn3s=hvi!_^0?&M@4}+%<*mz+3PrC@b z*6daco^}27CmnN66L{NKm>jqz``9P%M((A2_N85gSpJDaL;8Lb(}CnS_{A{z)Xn!A zpHA&U;MO16zS#2Gc*BwwrS=nezj=*V{?|_)OL}Dx`PWpZoj~Jx#w3C_~7!j8GJ{vo$G71JxSo{zb|6&kGh@i`R?eo1YT~!uMB>8 zYTIMmf28}O#F1_ceys45md8J$c7wrtnEtZm)K^niuCq~km^@dk|MclYd(%!*zEG8k z6@PE}qGyd_%LMyvo8pW=ZuxR~{rfe?QM!>5eT21pcE;fiJ+D!Dqsoidi%!&-g@K93|_Z#u@FabN@s?>%ji{Zqef>w??1RD$v^rqIynBJMc?A2yuLXKu)suhqX0Se?MzmtDc?Z*%p2bY>i#w*l`=X7G+7j<;{0okj9z zlzqtHoej6POdUYiYiPg&5ngmic;TFvN&f5!;(T`Pdez|9=>dgTZ^H6-v*k8;%h-Ux zJFea(!r$reYitE-f0(!?fWf=pe(RU_9XTZbl3j(E7R|ALs>B!AqI-&j4yl3!0r`Ht$X5jjZ=p1git+0JiLd}vc?8H1-d z{_eaz^AV|MWOH#}q%~eVd1lvp1U`0B4VFK>*cs!2{oM$>@{H3Ao-tr{V)L8b2|W6* zvkY#j*tl1~C$yg7v&4R8+Ur$p@Z%GbKRlp5%bz)~T9397e-L==`{I6dT>tLxH61D4 zwtUx`oNP3b?;O+gNXZ0^j>^?o_gRbZ9VaNA@85vY=iCidUY)+> z?-it;;0NNq-th4B`Hp|m^_?{D4OY)PrgtLW%}pfvljB6Z+L9eR_ry%fciJ@+_rgGzn&-Xn7QKo?=5p|T<>ox5O~E_ zt5`iBKG`$3`r*$Be9|z+e{=VRTV0(A=0ZOKVEZmKH?zxM_f!}`HzP^c{-qIB?8ZW!t}@7 zPtWcw={Qh|z_UtLWcg1To|KvP^ge+%-}o(qpL;%PditOnwEhR_41PZ1jXR0I?IZ9q z75j_ulQ%ApY?wyigJ%~O;lJ;x{A*TC0#C1fm%%SiUpQLVo60Q>BeEI%a-F2y_fshT zM=xh~o7`^?+}L@dW(`tLYWZO-|CMSZpA1@>L*R+CMgDU2;u~AqH%TS%$(_aeuhltS zN4NiN0v}QOJgetg+qlGgRj8btb>{$nrn_Yf0wqHt{5X^`Bm6@IQOh{KoNi z6#{Qrt(+6SRp)p5lSbJ|1Rl_a@rA7cjxjHcG8qZH(O710*;?d!{T|P^rS-Imxx(rx zzU8EC(a#ib+nO1kY%TG1=e##=QN1;5=QNhTWYJPXgXb?H^%r}>iOaX zK5A@DmcQndKY}N28b;uCe%i+1wQ7}XQsHq;0uPwP@MLSP3oq6`y}(4^$?F)tZLRa= zN68OY)Ftrdv)*R)1TFmdy|;pA5O}*+8UNkd^keIS!}A9a_<*O~S^nmYvX0L(QhjaI zz3)VL)6a|7El2HI(E}qGyhFs3&PiwXl6txxW&CAp$NODwS6Wb(z>5Tm^V8KBJ*ruU z76jgAGvni1yPDUnID93Vz$>n1__j5))1t5KRc5~<+?^Q{$TKk zilyt{n^Bt7V-0V>;JsJ<;OnI15`X>0%APG;}6P`Smw*_$l?panCAmPw^}9+`TC!3V#*q3M;a z)ZW$QSH^d?#@kI*ldGL2{S4bTkL4eF`pss+PizD}CT%){j~F`GQtSYg6MC&~%itL= zycxOohxR0Y%co2}*_zqG6rT2E4S^3?E4J%M*)*r8jnebhquBo1I_6IE>TN!xbfabM zA*}v!hK;(Jac_`%ntmnX)wr5xuS{Dxguo|W-OKW4pZRp)+!+fAJbjGV?)aDef3no4 za^s|LMf{(BF?;)?Q&fMi)s)F0Ti-ZYb8pj4!K9w<`$ z_0x!}cNdWS&xz-@Tj%F3_+{O_J_Md|wgSsP|AuwUiH98sy!tFgueL6?=~{){rSm_2 zf=CCJe>EoSgqhL}+o4CSp5>3GmRKL&pVZUn8sj5d*Xx_Eu6?-)fwz3$kLBM`H#y|P zwp5OaDtBCjFP_zUtCjAr8f`vf@Qo8**s-jMmDH2g=#&VbdS%%0?>;5)CLdL0@OR2x zTo-b1E`b+Xwx7Y@E&4~pFB<+p;MIDkGWe#EISWfX72s=_T(LFha)mi1JD(!?>knY^ z$<{4%YBX6;p%8&LD%6kFv%BhVb?VL`U|sqz;(pm*p?LDNnp4OhhGb1)`S&lW8~Jnl zRs`Pixq1wK;KTL)C%e%6qkD>U=}_MLg#$WJdNpwe)4#SJX?M!6(A@f@p2W4xp1<{o zsZotCpU{2U_lqP}|B)}6PwqQ)GRfb$FXO*kPyaaQJ4-WaA1HkNEtdbQ12e)W2c?tz z_BMSP{A*Lio3$J6An;PJ7Gv@OrWPS2r|2LEzQr)MfeM$S|bS zz26CZV)1AOzx(v))D5kuJTNK1#NfY{=ykBkKDzH-j4LC;&mSwo;+RW z6GJQhIhw#5pJ#LUYU7wNsru}SP z@~Yo;eDqcQ{}6cMGPd9IYE}NJXQ5YjQh0I)R!`HC6TTh%!88I-smJ(TUWhIJgO6uZ z`8>Vbn=F5aJxz07sbVJi%MM$^;GO!WKQK%gPT<|+7#+(CZ4(gK^GSCC?_Ju+@`p7@ z{-9Fdj|se6SVIQy*{SQzMK|9k@WN9W{mF}*Gp}t!5^fB9u8+RX^7qb6-cYtTJ@=_O zm(j_*s6w^EThDJu>S@~T5X;}U+0;i>$}A>u{r%4wJlgt`X3ZphF?y0Wtm(kjqY|iGSNHKpEPqnk!Gl%Su4)$d5$&tfTmJF>$;6ZImGx(JL&7#Jyf0w{@w?Ag^ zX-^(^>is^IKlR`2V(?ct_o~_d;Bk__dymTu{@T<0V*SX?V0Lo4^g-mOA0ipKu?bbW8Xn5|DYA zc-}S_E@Z$}5Sx)cJY%xKdv4|wv&m*BEeZdWe!Xz!>X?WqY{Ko68%58AoDg7-HOp=R}3H9?0nZ>$-KfpFJm9j=!F~PCvxXV zHCze_utKiCLSQ{paA<0(&6Eni#o>ir015F{c#sMjGLVahJPlzOMCY^NVq5g_C-2L% z$7;#zM-QP#_b@518Pg@mwmVE2G&W$6@CJhr7g;&kiV{$@b_gR8w#YT$YA#6zL|sJ(o;#y9?c*(nYuTk)cQU{fbNfB_x#LKlO1%pbDMdNA%Gb z*s@|cWPK#0P)r);42R)A7gxldp3-V$aFjJQ)nwCz7fO^+TtDa9>IH~2$}TCeG#_Nq zN5hN;U}}ts|3;%UDilucbNp8Xy}2ms=6*ECrQXPJo6TzL1wjhZf!;zuMRQWNd~2$P z`yrumV&kH%$tHOyQplZTwVB|bj7-?VwqT@W{ot}V#3i*_IAYNVvIGq&Ln2RVzHZIG zOwx;||L`SkjM(R}?|3^eNX;}0D8#lk*GFhvN%!jCZG1$$wXP9Y-z zUzpT)fYbuhLPNnF*)CL zBdkhVWTi`XLVtmV7$M>%+VBc3kTxR33Vb8kngxL!;uECtJFsuE(n0WOC+wzWE-i@h ztCqO@#o5UPB0SXLu$dFH9Hw_gSSGeaWV;j+sTs&)4|r7^pGl&@9AVbF!W5F{8mGh0 z>D+Qg7))Y+EAU@YbcFKc(-(li0~IaAj-l~55z}gyQ4z8lME*rW1X*-?#roT9MqGdW zTF-@@=%lkEIz5C0GOPX`2XDt_1Ld1r7Mcg8P}pb?drl0^;~~4vmX+zC@5!-9J{m-< zC9cwy+ps+-Bhz-m(o9JZvqDY?aSTL`ahNkq@NBxp>abeONi;M`7(QwP<1XYTc#*se z$^Cj_wgdJ+!O7|hIZ`S2;Sgg%+;@ui`H5k2nf+5e&Ls<=hbc091gOIOg zM>g4FcC1GF^~24HmZe3Q+-*Fa-*T6o7n^Cc*-fNQRhq1zx=_7Ajj(di11P!o{VEjFi{Wu>)4~n#;L2M$2DLI;k=(9kWEP)N^^ctcbMS5%o`mE>R zu`+R1KpQBE-yb-BW@jTtEQZr;lgF7L$dU~>Liel`Kpd)nV`+mjycVGfE(PRWbX#qA zq#Kcz%q$0uZH6ttN9=5`!!LMlGnoj2JjmJGIK~L?+9v@U3b!X2LHfta@S{`4Q-^B# zSvX}cLPC4lUXx~yv#F0RN8)KES|i0x&eBIceqyifJb_bvuF@FlBT)b zjB|*`py)yI8X?R)a~PeK0kk5CQd3u4EdY6o1ai)UF1>?kOTGw8HD#-?&kgxvF5ec= zZ{}_ox{2TWFr9(m^ce^aR)PBpl4$Bm^XqBU2;d~_{Ca2snotgKiyBeZBxAaZ3ai<4 z;f)c3QwouDOArtvLN^L6qHX@3M z%+$cq4z82)nb%J^)>Y^idw^AtB83AGXK=e`FRtF;@2h7?)vZ7rpWv0&!*e1`COy&a zuo;sa3fiH~zRbUes6Z5M8Dq9tE%-VGVP(3&Pf#{MkCj(2xzX8OVnc-Mpnm=1BKt){RS*gp`IYxoVHK3ydtZmp z9cH+>gM;-(1_HYw=sEwY3`B(Ah0u+K^2cu6sscm`z{5*H_uxhgy&Ef!D_*h&aB|># z8)p|a=qlxzFl!NI==!UA>7?j_fIHb%As!nYo!l{1n$fFdfsdhe>axJ z$bQ=QGY2D3Ms`O_CrXJRH-PJi-46Czj8uzjrb*3JK7@faD{F;{^(}GQz;jSP0uxzN zW?1qhiqVaS4i{iv^My17Y9~85f75 zYGrg<}K`#H(a+BR`Bm~T|FXjV@&*b!Jf7Q{6()VVH$M){3|TeE%=K`4g|cE zsC`nVVW9d!w-ombDbU}7X3nQ(L+~AgG|h8r`AfXIjF0AN!*HHuC{D$qAWKQ zc&;D!h(N%3Nwfax(QzTLF~d=>?3$#u~*Py$?U}Y{4)O(hN-e)=XD&8q$s`GzNZ(EPs49q#eH^ z&l-2y4PhXKIT*duq?84g2eX45^b#9BpY&r94rT=g64K5q>j*zBSBx?~fxow|lN+BP z7ic}ndEKp9mgHEIgMUF3mKFX{s+fOaHQ_TX#_gc}*h`>;&q{70$6k1SXB(z`DHdb` z6H&g$DFIq8_syr1T&PYtA`{9RN(w#pjQ1ANary5ggV$iot~e< zD2O2x5Bz_GP&=`g-K4!T~Sshh6F|0!D0yBD9i&6D$wcOs1E|t%WA;< z!Z!tbffwWEV|!fW z0KYZZN8|)}LGay;>U5s$GyDfVKk0_^drQnpI_zNs=C^wdjBmL5sY-Tnkh6X0Cw@Dz z<2NB)#&lZ4S&~8wg7YImGGc!GP^ZqoFRZW%m}sTx87`r9d_^(KW|E;Eb_Bk=ING-% zA*)!X5giSlRNkILIygdSE@wZQPB$g|UqSk(AJFTjC@;1T7WsF!j{zpdFbI=-86e!6PJNtl>2M=pZ;L3+&+x{xX)L@M3U_o& zCVV{9{aiZ@cG9_a-vP`mlZnagai(CS0FGySVQ@VH&*IFfLE-(Pw9rcBSh8T4!Ssd* zz0a*~6PGmU9MT#Y&rtSFs}(aq`S`Zcc{$1+%3w^m%3Fg1XMT6jcyS0JD<3*bwwc?OzeRY64-dh)Dx|()oKq1j!{I zRhl*kZ&(47@`|HzDs3_$x!C-NcefG7szz zDSr32C2y8)8aDF&pZ9-+xv7gwIv)}q;m(vxNm6w<5=9!k1%_IsEhseIXv@H7RS5$y zxH%XDX+~a7xjWVT$)G3XTY`PlrhpPI`oE!oehZ!d8WRzfRk4HINb8YB?}tk?{Gd4N zD3b-}z(DLPnhKL6In@$C`hgTU*#%)K;&(51 zc|Tn)g{W%Gf`%_RQgW#FI8x^oaie6Q90#jdl=(%9Q^a#y!Fe>AZE>XG)i~kyvCQR# z-?*T1sK<||;IsycNrtRx4L6LiZNL<}!)S5XgUDGXxo?4-ILj`l4W3pE>mjB2u_MNm zoJDTv!$sn(bjJ~XTNdfC%?O;HnJAe~DizPLrom@G9K_|Hn z!NN}w$VFfQuQ`xYz%bW?X}Qx*ehb1Dwji&+a9k3h3KBR(!+i2%GPAKkx6$Veog{oJ z-O{JhDEL+67_5^PBv~^}+LlMahWG^jVzO;6mybLl199RaER5fORorB_JB0nkkGYJp z3ZvxUTEa}amW)r(KpNOZBlCDuvTU}zwJ&pUE#xF(kQsi$&oExJD)X-ou8Omq7EHp< zMj0~_lZ_(J_~7#33*^2`lnE!a@Yh=3HiR3i#V%U3D&( zS3Vpc^Ycg9CXn#9qx@BfyI&l!FjN2N0X-1m;u(#qwcfn#c*N}MR}M}O{j}$e#7&p` z6^l6&R)4$SQFa>LZ{Tb@+R0fym#k#bs>JV1Dz>D51a5ED0>&`VhpYr;r|C(xCe4 z{N%JXKPv{YfXNwqenqI^gU=AA!Q3I!_F>e2;}oocgs+7x;d0(+4LSe$ql*pLQRWFl zBsljrDRgTQ{Zy#C3F&n{$FfKZjgBy5QW~|D^R|F>!$&+}UWH%KZ)hS7St>iTAR;tc zJ0Zpr*hFOqPeIYf3<$wQ>|KK9iFN9g7I;s!U=iV)0W)T(2?=c5hKeq|@g!F=&L(BT zg3k^ILlt_OFMKO!@(w$2F7|;XM2E zQ!O$l`BN>y^+Y2Tc<$%n*wX?Bg`1vT%qE z6I7VLRbopCVqDK^<2MAdLU45ME$iVorZ6tTjB5Wp+v1;A1>fOkm+H(NR@E;Y<-yUA z@L3x(Cnck#N$~gAO3t7i@{Pfk*FfT@HL%(LC0ZlirIQ=LrF<>QoPnVrU9Zw{FiRMf z3#-GsbowHY^q4eQs2NH-1tZa=8X$d4**JwhUY0O;yEDDoUD#ph@^gqTxsWzs(uSyL zttKCJBur|H>$sDlAN4jj|v=Ih4N! z;JpmVzxK-WBL3crr#4Tcvh1>u{Eo$3Lp6DB$Nmx}nY5N*%mz?ge3Qa%)8 zU!)I|g&YcCP5%mI(QSm5S7Gvu7dm}@D=h{f;Gt1ogdWJjNtRy|Q{@Kq{zaHIGh1|l zg_7(e*TlS3D~R5zHu#3%eaVx(8Pybp4@Oc*r$ ziQE7GWA9DiOZMclv*QAGKFpL5SWcb#*eb7$IO|G)d;X-ad? zJ==4h^Xw1I02!1Z%=CwgfXJ9+#{pleshUtM=N){+eU=8Ug678TQ9JGq2r-%BD!@6- z;GAauCkj!}9Ib+RGbVf#H>k+3XmPG+$Qe6#aU|~)4Db}KjW1(2{$5x_)kX}t>>v;(fX6PtACbQMZ$_sruXsR)g*_^|tRdrL!M{zw#NC%|?D4D^zBZ}8NJdA5~2 z&Dvxs(*~z7j7`lEdd}Im^J9Q%d(Gn|Hz`b`|Qz8+<*zE>i z&!r`{&gvCTh|Rpo;v#ARxQwol=r5Yj=TLv9gWDbgr)9gH~*3rM67LQ5eGD|0H*Y`}&$ymsGw%jXbq_MeM{6i3fRB-q zS0TSkAD7AJpFF&ji!UZSp6ZDwn9}XX1%D*Hc!$hC-{FSCn4wWJ!rx|vK z%IW#_MB&3A7A0h)5*ax!LDyd(NT)7AOYxZMa?&976<8_@_9P3TC)U1U6m!kXG@O~I zQA)wpdltHi)yXch8x54|jle(7uNF|3yV5v0{N{y6p|bp%t~Hb8t|`G`*Sp+zN$+2@ zYvCicpk$XRt3n<&lIo?2&As5nj#K@e_aR{o2BchX!VVOHZjhL;0cFG4p`^^7*n6t? z8dQsoIJx(sDkOfO`~$5MR`W2zYxb7Q{jbu==KEbo|Y6-973o(SIBZrc22^fI1?9S{W!$&k zSmY+*2Hc0SZt@TXPcH+hy~BqU_vtejw}))1bl2)EF^G+OmSlR?#r71=lwD(}=7ph? z;xC4))iQsSQl=J6#W2eBjg6mJSdqsMle96B%`s~pbNr2xTly&${}S+MF~^E7H`PPP z@b+>Dmi!2jo5^ZzYDK9KxOcg9$LF!(kdjoIIguWQ*Z$ki~+KytMHguQ$^6FET)#!;Pk)?tyRyFl`iPb>qiu=AC% z@$c|cJoYPR65359VXl^O8&)f%K(rBv#>wJBx1f(xpiJq$>yXblM3#-U6mho`CsIg1 z>alVDc1Ju+7*|6q2Vlb4g<^#m7)BH3d#B3-5X?QzKj!^lFKP{WSu&0}tw&D*Vr?Bb zh=LMAEy7qw!MgcKs66P5mU4n4rHKl%oY#=*AwLDaXuVlbebjPn{FCmrJT}fCM&h*h zI|uaWX{=AR#-CvLYGYWleaK0j8r-N#cO1#Q%wS?fx749W2&hPuU1PMByBQ7JVBnr? zOGV$&xx`rx;gb#3-6WH*$}dPOG=BiWONxKiXwsgvw4%!T|zs#WLZH}8|a+BigblR z{8UChN0AA|XK%G!E|KJ+VjhLctzKTf*HQ2Un3%9@XGQd!f=mp}YhowxhnhrRQNFJS zFDx}EI_*sQyuUwb;^Jv*o8*xRECm)mcfzu@4SQ@{q{3C20$L8z*$z%SPQFrg%TerF zWO25R10da~_5Rkhu^1qHv;>=xTB9pa~*Tp;1PosrCYT&1E6;+ z6V||@)L@~8q9VuGo!(zTS7_ZkVy!6=y>mE~K~V23A|F=e%i*HRTCFlV&&8QlIC}B0 zM%tSe%?WF;H7y7nR;-5z_}tf^P06c#l$*YmO@BX{sA164EdEF%{?dH$wk?j&sRT=< zK;Yj;0VQz2E!p}xHaYWgz=sITNj+L+n7+w8Yu8B_Q0`X14FtwUrrBoHYag@M_il|y zn{~FA+3S0ny*|h6^=`rPv9Fe30=xFbpSNtEH@qU7M30%Ffopqp{Y``b&R)t;Fud75 zxLqs9h?IU2>`cH!4{&h5No0jQ%9arrFq?S2X=cALM`k%CPN@kVDuOM1`Vo(7ZKuE8 zm^Zf3U2MQHY$U%c5swP8DzaH#DO7e0EOe@zclJVUoi9LHK0pZ=^Auh#bKA4OK`lhx z1$K+h#W34aPk3&|{%(OZMO(a;z~J(;8!M_sDFV`mcIFF!Y3&+m6i`#r&ZmS|$2RdO zUv;R&$DwM4lF`AjD~}Rx_~5D%+y*-bOKa?+`+tIjDKRG2;3=i)xNr_L?G~T+^ArsS zRms)SK#Q)7?LD;#;aMrSoX=!AyDg&G(lCPjS%$4b41^ShO@YZiO)jS>A~hslTxp#; zy)_=LQihjmMX&;TToAfSxv(4)rNkYzDFG`3!xAIg&qF|+Pm*A4OJu$#;sZnVCkN)Y zL-1))Krs{=K%DLZ0(O@EVqCGdoTV7poUME%cF|sj2c>t(Gr5T2E6K_VlI!VX&z1I$fQv zho>PFjvy_VVuz9AbwrivbAMIA9bx$=!LOS1JejWot|8!x#8McUpI_TwIn1_KiYeg( zX+#mhh44iYN2TEtNJK(eCF3%!2sGAA)<7VR$hf&zL%x0m0sp@9akfr$+N||Y{vyiN z^cN?iWfSQs6`?d(SHEvm3lt7GF;l2I^-MUN1(w3n)~MDPjIev%m8*r7LZ)GG-Gcnr zYI)(3r#}#RN6H!N*o@nwlR!6Kg z%@IS|qNBaoF4zbJsxfFWy&jed`1CQ2AukPwN~08fWNo?t0`6n0nJeO|wHUNfl76AM z^9cZqMWInr3$@t{Op(3ew8BS!QqWB)V{tbRIkTXwER>;PCVfLhW-U}}HmbWg&XrxH ziCzT9F!3&9e9Oz#)yU>hs8)(X+m$abz`u}ZOIjv~u?4h{&h->HJB$^HQ>AbmzNkla z1;-^KWAq)TSz$Dj7~s3WJG(jVTF#lEZ54YN@>2zk+n#YYWaom#F&(SKQ^vuNy?E(U z7&su?sIz3Oc?ha<7(J%vg1wzDQjSbJKgkG+5GTt$OlBqlhH_9YpP!(#!5olQU&O!> zmv}1W4THXj)2=XtWOw+p@p%Ftb#Ga{!`KpchCX6VtO)p+2Z<3>rF~lxtv4tGOQn4? z7Xi*8XyX48WMCcVM8U>7!ZccDoS=U$BO5$hL9SOZ%D#T62RxV3V3p2<$Hh{+NSfB5 za1+Ta7x*=`H{-ESC3j3W`H8f3(J=4`oe8{qGGvCnf$hy9)jq@dV$m)-iWo6Q`eX`p zX$d{irSNXJAAg~!{JYX@rj-iQvU~w6s7(lBSTnim2ZUb70vZGyA40qrEy)wc9!rm? zP9hm49etPvu?j%0m6eq40_He@&cyRR>K>U1GH)kHvx?#~^v6PcYUY-J90B7lkQbiA zM!BKT^rdYL*&x1T2$m!mfN5~esawm0U*}(KK5lY@8Fv`7mz(5?jeMSyE^8qIQl-dt zT6Fn~>f;v}I3>)_BM2LUo{fRO#2q-h=Hm|-%M&N@q+>=H(xBWwT8NN^3I}Z~gD~!X zM5mVur3QK0cy=fE*fORaIPOw5;Gf)xPKTl1jq7n^m2qO6X$SoXJM0m=kzV|9OekJ7 zCS#>U*S;t=CnXPmcLu^XOd{jB2DYW^MX||OXcdSeXuOjyYrEDE>4>t7)HO*uXG_n^ z1v^!@vS5>uct3L)0oMmrvTcwjK|nT^-=IjmeHw;+5&>fc@mexdlZ|6?P4^QWolOXV z&@CrfrXaFx)qN+$KDELJr{u0MS_)m7bpqgn1dO8@AU!UT?1noh{C4=qDnj%aJvY&b z{G9Jssi*X)bH4(CdPux4-7YJLnI-LFYkG42o!$zg)VBLB4d=w4qK|D!%ZIeY8ZdYz zVt!l|J!3IkO^RZoQ(sCZ+;=;fPR5$}`9}sr)IL5CRAp-hqQnv<#y|t@BKW&M=|hB0I0xI;zvgb7?ma+x2q7Tl94 zX3T;z*@80JGRce=h?oxM|HL|EEaNkZMjd>PB;E~KPdBa`1%Wct4Wch9!PL2CXwKw zfV9EnTT-oE5Yo=b&vKa|yx4!l=JNQ}{FBw*=wMA4IY$Xt_x6 z$FDOp!m-0=g^*=8I9fv{aq~jFtqi!1NIIMGjS9b#D!+b~k?hoo4jWkI!kvB*bQqe92TXFLE?FQ|J``Zy!>s6ixVN#`?-D zHDK-IU#Ssh(jcF&hHGJrJ5K!ql-h>T)Hh|t0yDT4pMhsU2(}{4Gar$HY?3dxF8>qW zaytR%Y2CvZJ%(*ca`b7r!c>A0V^iWd!m)9NRO{PKnCliTCqG>gCe1(~L0dv6lz(O% zv{cN+l8-`q`UWkvebOwLV`pyT0R z+_-vzj^!NAL0&>|d8A0vFmG+5rZKqkn%A6R(4rq&h zSI~50=n!tAvD3J}NRY;ftVu>nk$MB)%vkO7{h`m{xf)}(dI2ajZS5bXwZTM5^nQFw z*ff_-nAz1blIVG+_J#>xT>&;Uu?ly4_|${e*Z$9;m8WO@?7vVg-HFfN8Rkj+nY*a} ztm&q0BzKJOV<$RB0EZBWkZU#-p?U5gI0$wV&%?Y$&kw`q;bg;tg!4xoOb;eVIKQz! zpN_HCH{w|)Gzk381ECTr-18kCkKbR63}HHF_YJnP|C_mg{O81#Ag71ZEq6PB z9QMAtzVdG4+v3T#kK^$iiRHKN!c441fQ1C@>xe#|Ya{zNXMHVl8^@?vR4nBvVF)qd zl=bnbFkeR=J+knWlNTZz_7U>EadF6!;`>!6#2#BH#?XuVtfsD2vPpxQOY{LN;e;%l zY`CtPZh!bG3MwF3sC6U(r-Gv^zx(T%3VzjRm&+OkN~F^2Vf49RT83Clg_Pc%EYckH zNZbT{8caseviw4LRj|SETDqm~3-t-A5x4>(QQMwN~jAm~GK--nQ>Gyn_u!(Xug1C0`3OETjV#io1{6WnN~$Bw zPex7?ayL{Gnz3=d(kG^Q3rZgcle0qGLw=$^C%9U328r+sQzhIPhLYzbcX{|c zsTbR;MD0bFi!yczmHLHp9*&MQf_hhv%>V6;D)FYnc%LTnMM;!SB``bv*$YWwAIrfZ z9=!y=J-Y=`gz;FH=I1|!pBG?|vwi`1jG)bDFtZ~=>r2LQFRdGcel!VRHn@)Al5E%P zO2J-`FO`wIR&m}f9x=0oZ;Z8(1WKOawuL4$dZu0Ra=3^63)aHG-rRsdz7bXTcKPj(Vj9?n#== z7{pLcHimfv7U7xo8(j6dxd1q(>AyVYai|vUT zvU^}{V_g$W`8=75r)jT2-cZYhNuP?QpBk;%w$LlYgbaN(Ve%u>Q&UI+w$!G?)q@cC zN)_i@Cx`tkE<7r~D!-;{&1AU?vS6LK$@$fSQ;lu9LwAaHSqPO+{{>lzO!n) zxUINAGqEUKzZ7wPGPwhYp@#uA0|RPi{{)6UUW1geE`DOa3(%Ylh}oIo!~a8Ym%)wg zS0x1qqL+Gg7XQZfOQmfg%WY5^rJ~R+vhFRA=r+*i?3RRD6ec-A&=g_uOY!7l50lB6 zkRNJLztrb@2og|wq*0wZj2LVO)2xKz_3Cxm7yT%sKkHk7TL{{N_R3^Fb0ebt|Nn5- z`ZnQCAK(Cjus;Fa)R3);(*;L+gLg7k9J!}o;5nGSb}`^wf&@daLak2WphUu!jb<4W zl(fW_#j03@buF$Br4^?7G&$ru&LQ7%?yj~FP8$E_Z8{O{`Am1Z^Tg0DxMB`MO(CqC zi7HCk=9BD5NE?G>H`gsNh8rg}GWyiA@CFL)09#;aT}rRA*jP8ea--xU#6Z|Hkq#eD zvdH({g}=R?AnqD=waWCmdiEsRMP5}Dfpx1ev$5z3ku7N$DGUpPBdJtiNDN2CCv3Cl=~y}g4L5?d?1rbe`RXAp)3KBHqlblw9=$) zQL0-LcYFhDML-4SHXPx3tqKVWko-ek-c?!je zQ$dHru6Az_&NHK`zP8(p>8u!(1nu^6z=uWE*YD#m-ysOc)DZ#@mjseQe?pCBrM_k2urzXhjBga5m!@zg5LXc70t|IV_|!P_agRuxL0P372%8>4 zIXm%nYc8$Zae(&|Bt!|usKq)=m3mxW$?&^-8NR=#;rqlAX3g4+jq`Pv_&Oeo(!*z< zUCjJ}fG;vjUp*hEZkgy@(Af;ejVO=1?1eAmg#}!tmk!*InSavck^VVDaWvf*#rXLK z?#Fp~GS3E{chVP*0n`Ze2ZtJ3v19d2A z_IDh_%=>9ZD*4ivLl?|Z`8CUyIR-m;#P^Q&FYOuaUo^B}$q@d&Xh=>0Y1ho!jg4R8 zxhB!~yYiJv73K)wK-b}u<-W@Fq$t7W^Q3C>nj8Y^Wsf&qYASJvPU0wu zt`jr?`pt+VRe@$|_KExM&7hX}RkdsU>m;`uo%S98-9`H)kZ?B`vW|DvV}164r{TVq zp;Y`?Fs0eu2>4oeNeKgdHGSMX>a3j_owO|aOuk4Em@&UuK$1v*Rq$2zO7|=s*t_S- z3!??)tb;w-JqY_?WEO1T-@?_Ef_KdXT#P5AhYvOHxJ-Lv^b`v4NUqjsx%797Qg!L? z7W$CSe>Ud!SzN6)WLfu%wPOp^ez$~@xr7X4ateX7K1X5+fgTmhSW!gBy6X4LW_(mk#<6g*)Zi(o ztVMM$)Qw#>O{|fY%UYP9hD(0F;%{)Zjx8ImqN+oc|NfFnX*t4`{oh|N2jmPwR~6$g zl%E`Q9j%pszAnC4>ta|yKf(rHrx^dtLcqHS5;-mr@nsi#71QPR>i!&{@7)OyzCp&a z?qWNSjj6j|qo2E8ck~xNbbS4>v-aERtJl7D?r*DoA3AEcf8V?ABX7KTcIR7OKRh+> zq$773=s56!4;;FEqhqVLoONpcuHx-Ks_%T`FQ0wtdk??K>U_((o8G+ifRA4PjyFCq z_wGCQzkF8xZGS)Jra#Sl?Rd`(|12Kvz>?Ki&{E6SXyHjwMV&cO~bBG+zK0UzohL^Qg%n1 zg&A9Kpp7pA{*NF||LMoU!PW?EiS}hR06yea)yY@m_jrkVuSjW7QrfWY0z*c+fw139 z@>c}18tP;^(z7zDcr|qm@MZRh1L@d!KyoiM=U_?GiH~=Bs$DZ0&uzHZ2tKO z`lDg6nGRz`B;QsU@@3@n`_b~7CP$fnoQR>0x?ON8HN}}?3~iztT;4KphY7gc1*Am2 z#HEBbcZE%?W&YqYpSYQd&hm#m5O&875Z7Fdj=3`ag~J0wOb6)P;wo-J=h;+9oiP51 zK%2cWvAq*T#oltY4nJde8Qh=qXeG}Ce3pPK$YtZWV262G=ESgy>K6H$JzAxbkO*o` zqQ$Y2CB}3v258N|Ur06Z0w04G+XyrwxoELnN8TkFpvEVeq4wxJ%a>M#XKgJH?ud>I z87`*Fc|O%u2UclW&^;b&b6SkI0$xX;*T+{HcEK*9(9?*0^faY5alV0Ex_qWPT;4Nq zvPc7%EW)yxX&LBUt=V0|6ddTworB^^O_VBg2*;JqfiL?xY1sJUrTL+7w*)_h&Y=x> zK8L<(Z3=jv#YD)U_`Hc0gl13ACPU_D0eN!=0w_0JRqD;L@x*t1gW)nVi54(9D>pzlN6v%R;ecU+RtRJ!o1P7slfEf=hqTIrq+;9A z?`G5I{pF6=?c1}%$?smU>jAeux7FR(Jhtt@d+zZw>+GX9zqoSv+pwnNbj_0W@9zX* z@65n;-ZM2-CVM&9GrTLFO@?6S2+y_v;Qq2=8Rfu%>Q#DTL9->F8s~7OYlbDvwe^${ zNy4olSY9113J+hlJFJFM-)@+{wGCm$CjlQN;Pb(X+neWjnK+AsZ)B|W8bWH0hf0@b zVWH0=&qek3-`S@c=-{|7Lp3%X+ zA;9QCi{`WWZ><#V`ei2b`{8ODfpb3uNr+^cQf0b2U0=shpVzhH5`tE~($Lx+V3aD< z>;{}{v^xUbt8go-hih*|rXW9P8wep;k>?~mS#a3;O^__yjx+UDf)>bvvp6l01S_4p z98m;3luSPJAb`C8?$KgdI9>}LLfT`nUVInyrZRB~FcEqlp_zRXa5F&*dqm%9k!*9q zYvR#$T6iR|+6PePSHO*wUZ9DpE z9T}Vq0JVIjzFcHS2M1Z#>j%7XQ`rse^)%Q&)IYS)^Fa0gh8Q(xY&0sUGuExI!47Gh@ri+Mdy^osjk&Q z(vmosm=(#VzK;J9wdl_yLAGWucf-n{kFG2)O-NUA7kOt0Uts@h`6BXhP)m*!}m*wlW=lOd{xI<)ibOOlmF%?W!JKG`lK96QfS4=Kh za!ll_ocTE5Lj;bc#)JXyMamMSODUHcYY(!^k_Wd^kS%mCo|A}dGIepmv*vzblM(Gm z7ngxwSO$J!nNNs>?0(#VxFXTbFUp-CMvTyF_*6C#yAshx_(h>mdgda6Hi&I$P$o9n zT0m@-;vvRJk0_M=ZJ^g}1X}W<95Y2j{INyb@1112sx`QbP~rp1uBsGY+Iz`)UA?O( z**1kCU3-UF{?tPOKQ z&ZM#30r(ohwYpnsUe8G1K>twRXy3@_$S8tZMn?O4(Mmiyy})h|opQbL7+hs$<{nID z^N#_JC1^?V$@~xBYsGOuaCic{##d#IRHthN+vh&O81a--;TSiptaLm@p*1yzvqoHq zJ%5hDgj{@usk1gBQIJ8kfPN5-QlZoc7AS#4w)3R zY583xT%Au4BJPv?rph_O^=1N9{-4%DjQG=auvV(0H;kJZe`;|#%NVCo?xa5ow1wCukWDMB5}T@LT$_=t^??8NuXA$)ZaM{c7@#xxIa52}(^Q#!4o0lpz!a@kD|DShCK z{Y3dV5R8uD-+ewJ%$QqThA{s5cecH+vZ{o@*-7{}F>Wh~;@-t6!5oJn-26o1 zEFT3tKybgv+;1YXLuOb6L0#N}Z4=+EHmMFUr61G$l#k%WiClfRXQ#_0%K+W23%|lg za3%&x*606d?Mm=5#RupIiv`Q5v8P?>2Ol z<#!}cU%;m~b1h-nj{y%6Fz^PiWpWoq^>R|-(B;ND)>#<4VT911W0D=u0{%#lMl1L7 z#847pVGe1z6nV;-u0Tw^6OG~-_v3P6cx{oiODr}V21LJYAU$!ulz|Stu{p}N zJ&jw;F>cWt8{<_(bW<=g{qW{<$>VZA>{-?|H5c5S=3SLv!rMDe~F1TPT6YgdtZhj<= zGa0LWe~@kZ%gD2e4kJV;G41082q_7yfH9{&LonV5*CYX5;uWvk<~cG>xo`S z%aAWcrqpO%O}(DdYa}`$N`LfR}&=j7IP#=#b7XU ziL7ukTQn!pRCFsQK=wTA9|U}^&0!CPuMJvfHZx=q8G@k{(|pn-OD7SiBf!#2c5m9(LI+j&|orG*^;&oIM6}l=y!l$5SZQz^of~? z3=!CKd70Ev(svc9ZAne#+%Jjux4*U5Oau-%>SEo!#ESfKsSFr*(96Z=hbgOkwQe z*)ADRD zaj!ckRlnXfz{}3c*L%M%}5N1A1V32{q zVS63slC112RK%k*YtU9h0x8>l8q;Sw*11Grqyf2nT6#P}pyUgMdZ!iTUDYby`W%%^ zWGdlU2QD=87=f`Si54`+Q=q^&64Rb>RgS8!Ki>Y-^H6p?!x>=P~B5NTI)7Ql8Q`8=@{HCfT6geFvaFUN)4VAF8{h z8IcV|S#q@@tR6zt-R1_7JR6733QKOT13c%y3HVH~bG{Y3UairTH{&zPCINTyx!qXt6J?*9JrjD~J9l`Psj;LOaMUivGY=t^^NTL<7+% z>Dgq2hRqE3X)euvL+;ZI^!EaRHf}`NnXyv>tp}lDuG2W_G1#dM%}?lKb*O+F-J;Gk zMAkBcuqmNy-9Y<9VN(_j6SlC-KeTG9z&>qqdqlP%gFT|RH`G}Yp=}g?el3BP=JocB zj`S{Cj38bo`2~%V9&XHz_MnD8J~pmDb)+|Ny3c&WY;`xJ%r90~nX|Q?0lkX`hkF+H zx$)6*ZtTTPUM=nAAL?C&LXkP!0CP8_P%73I{vH|ldt|OpnB7nl)YZDP_AUxFYk%=1 z;qUM{On?{kx*?flvA#dV(7s2YrQSiu5WFrP1BtzD9Ik<0H1iWP+}@C!s91ZLuS9vU zuV1HAO!Y1qTrz+t%B2)kdC2-BA2*l}LQ#?LnyvJP^hB)9s^>e zze{$)>JMuje!mLaHa`<(QlJ#(s%!?34J$zULPrDPyE}cNh8K zCy%rH!sr*41(MFxKObHP;Ugn#j)?=@EAfrJ6W^GV_{N?m(-7>#eUo1y z&L#WB=*k2UYivBx71^O?GqQ9iJP!B)fnI(L(8Id(f&Yek?`N2!H3B$@ zt+e24lS>SOQ!z`4;YvOqYO`n`>oc?^ivSA=w8pnyq~0&W2#q~)wlkBNwK06VbON*p zmZtQJ*i`Lg`YRN;Bwk-1QiwH5XX-M*g#_9&#Wp1*N8aepU}DJ4mubjMA_r65ymGa$ z5-r5@(iaN_kz0VlzLOx)dvAeLa6;W!&NRJ0523}H0#F^d725r!H^r0eEw9@@`H^XS zZo4IbK>|ZR75c{RjDVa#u#%hS>0S{R%5qg1tkxSNQ+9!}a;hZ^gg)^HAyaEf#~g+i zogBR54%E$P5DY(JGzj!C$F#wo*V7HFUq>3!P=3-@z9f7<8@XQoOgRtmcW$^^UK?;U zT4-0G8z=-ekKsW>6Cf3jFLxH-+b815#aLqM(2I0qG!TN6%7>WR0gB;-L_-_MPcAFw z5uQ*(k#D#Y@$o;H>W!a72ua(Jiw?Z{a^!An$m7Eptwe68xop<5mo39Vj#f#bySGqx z^KloU> z(Wq8~fjiX98F4T+qxFKvLNf4Ap+EszP@Dhd&M3I zI)JkC4S@uV!{xFT(^$(=1Ba$sF}OFw8B7^lE;|eysIhSdiy|8eF+j|Yf1DKEkVI!} zoN+S#ih=YOfI(RTC{8YofO&pU7VI9=3m1xqV%u1r_hv(p)pWQ z8|OC*Pz%Nxlv7npD^HQA zSIEHrN~P)~sbcNCi!Z7-1~H>Hy|7wQF$bISHOjPa4D^(9^GA;`I}9K-13eYO6jtUZ zT!xL&mteh|t9&W0^J(0OoadwPp}+M`GK87p;%! zz=gf#r$2JaR(oFF@z;<1@OAh7^);{f7)k+dcGaElJMhD=f9#v{?4dJ0e#_VIJ$LlE zXP3{h5puNMyGdCCb8!ad;>@#J4Wghd1NmikxsG?mV_-Gk(9RKBn?j*7><`@D#g%~MKAbKAqzdD3#IEylL2>?3&1ps2Q1erPSrvTJls8*1AAh6?a@S{_Vpor5qGD6fncaa2_lSsKKZ&cIEh-Y!vQ)~5@6IllJ znZtVZ1UA^(A#@AYJ$CsV238?2soLGqG{<9iQ4fs|VUvL<&oB2^SpiQ|mkv_vgFl6Xx767+Uum*+h6NNiCJhn>1xP9AwgS1hVqVHDHzi}i(ZJ66&36|Z;gb0y7%q~r= zXwAji2{^L8@7%5Khr6bc*s03%%;#oSh zq=ytPnO^}Yb?J}wL3csYap<%t35#apF>oqtn_h)|u;dtjOOw4E@I?YajQs+Kv+nLj zi=4pJkW~>RW)oaVUW8^e-2_Xw{pkH_8Z$+sqN-`;+d|&ax#7B_UxLi0(gQfl^Q=wh zhl@cu3E6amiuwkl*~2t3DzEc*f&}KkUJmE9lFymdKzqC4(anT0$zd6+mjkvTXo@D8 zj%Ikm;$=9vzAh@?x+n~tmaFX1sL0$`>e$e1f+X6!FZV0>2p;Q|geJWF(!EuMCNu=` zY%+Kv@=GgYhtM_Yj$DWi>_LmMz6n9rFi0Sg)Af1EJG&{29kUUXKKpG1e330uE|$Lc zYJPi2Ye=Z$6N(vDk|w?k3@>2PP%O3!b_v<-4SbiDRN${zEw8eR5N87Q2l#Th&pn_G zW^snTf#xc>P@gh}xkNp+3Dp0oG#I_~_tk3E+ClkB5s?HFaHA^~)}~SUFxt?B2vO7? z7_?D3PI1rst!PnK6KTV()EoIqgOABWNGu(2T@a^G-<43c5l6xACZgytHe=sNnn?Y) z+@(wdT*K`-UfdG3sSY;s1bw6CrBLGq^==as133K^(E z2Pzzt(4to(gMpE&>>-#_q1b>gP)`1#RcFw4*|}g1Z@h1gW8(}qQf@rg z=TyG#-|be)f-$I;V7(%CH4b%mr{>1l1Xh%RH3irQChQ7oMHS&`S+nz#(ol96!_U7! zP7KQ@8(q;`3a;I&N=Ajw{ob1VD=Aoc+>sw=zXRHY?CF3{6PT&-olj&k+qB(QqIJUR zb;EbH7L}2srxEO3?3*r>vAFq))|lbo(_p?)SOIBBYfCveUnroiwceZ%wDW1l=?Kyo zfXpGxR^jT`$j#%ReQU5(Sy^3OUs*~vcxWqWj^-<+Nu;>YcBXd1KpB|*JkZnH8}L>F zLBDFAWwI+@%uj*ot9KooUzNvQAZx((IR8xe8PyU>2bU!M^ykBVA4=w{x9k^_(|QF( zd}P!tL9y`nMqbV@$qB`JJE;nP0pQhq38~1)eb!V(CO8G18m@%xa;i7O2jl2z+i{8$ zJvT%my_CxH-_TS~0f@Rt9E$8-2P*2Q7d3=S6x|vzcw3D7)~>AT>JPb?&;sH)lg9Qu z;4cITihX7E$GhS&P}n9PW353I^siQ0!zMrm=Q#5smLQ7~Fxedm_}tbA40es^#WjP$ z9*XnobBB^&*|1V?3#=hFza#DC&R8Ca{)&N?A_ap3lPv=xMXSC>4ytE&BQ&`Za4|u| z2U8J3BKL4ts5c}fq~=?n8K&5h(hGB!c)M%a+J;SRT-SWNUZ|C(Kyo@=+H>Af?nk}X zdJ6D*uP-R)C$5S4tx`^U0%2X1`C?h21mhGMTHMFR#=jKPf83i%*P1xpp&s)pQpQ)m zNpt^Q9y6BMZ;XxWT}0!S+}jyC0O!VZC4>#cG*`8^Xk1GnUXtT2`-+Vlp(8iY03_C4 z3#_$ZjkazhNaUeWR->qrBRQYQWVUEK51o7&tfR$U)3s)@+_emXewS|#;Sw&LSnAq@ z?GED%Yp9x#mN9l-SMRc~nhSMVlNRL5b^8L{8>6*p+u*jc?xPF)LBKr(rlv)5s59l8 zcpeELS7dakE1&&{QT8}9wfYD}Xd@_z)Jirzq1I6c7kN?9@3b_HTH{$moA_tIZwa&&rimdX zdb1dj(N1GT74k_Y!Hb(rrGU%}gl;83o*<1S%yn9k z0w}FcmZ5L)aRka(Y+{c_H@Wm;a%+}OK6&#SR%m6g$Q8o4>j31pdpX-pTQH8Da~v;f zw9I4;U1#SA%P>#3H;_MOtt(e6w_)^o6OH{A0FD1T!C3p%xr#W6Y5T-mACbzkk2oWi z7^AQv-&3QAA(3cs8|L6uG}f{z6l*w58bwF5hQ{KV$!Eay%0jX!IXN7X8MTe1`Ln2^ zaTd;r**6fF+|I6@E-oJ)tz(vd2xa!9fWIoNg*gnoe2(|dP_?muncnYuDSan$>P=J9 z9_+_VVXty@k2X??%50Ur`EprY+{_jDg4cuiimwy;)ES{)58129H{|o7e|Bydq23J- zi(c<5mYhLj+}35ZTV#NI9f4NjrNP)RYgHN};zvPA-3CNo%SDcsChcTu&(^GIWnOm< z%1B@$tInZSgPXmzJ3)&sM0B3%=`i&JPS4_{qI>B$yFkhxYi}%E_Kkqo5SSbdTA{6d z=sZx(!>>e~;$f6qNkcRu+)*=uibY+_C|!W^h*>aLy2v<$9ZmeQhKTIRF8%@ zYg(H9Z=Z$&xiu|gQTX-(pMMn+RRSVWtYe%iChM<=4k0(^2 z$ABzpzdOHYv}g2);l8%TmVJ@t+tfHA!j#!W&Y7x3*2UD3gVffPrPxqfeTp3HK(dhz z=odP=TlR&cnQqA^*fC1-v2hbo+}IzL&wta{T$Hb0pBz9TwF=^R3m-^6BkPH)l5^+m z1NpGJVy45T`63G#mx&u#;A_QLoVb7wMlG+NIv1Jv36qnCW?)jj{Q&z$?` zv!2-h-w%D{8yCIy?~NOluj{(!Gmn3H&Y}GW-1CZKU%vGjZ{6pJA2g2Z*?Q@BfA;1z z+t+s(-gB3)AN!ulc0V2;_~h5``PwZAx$Y1dA5|G?AqqATM=1KoJL+!QEh3p4T{9)h zNMkmv0CJMd@(7}<)6nTL@H1=MCC|RWO#}}SKz<%LA-FYLr}HnD(fq``lD8hTCQHBc z(^uT_;!iKw=|jKW{SEuSV`%qt_Sk>#fyb{bZ2!WnTYt3h3)|Y?>$1=N$v5Y|>W_2k zE4QA%;^BwJ^G~jxtle39$J_qA^FI#X>Ghx9|IE2}z46IeT@OtD>V+p~Uw_`ZzYcet z^vI6a9e>yzfBo5Gx3Ar!|FL%+{ev@~eCosZZFlx&xBu%uFMs-^U%a^GO|SXR;G!2^ zcK;p=?tRbdFMajJzEjrOk3Idn8&-bd+b_TOBd70u;hX<(;AwB~c-7!TvoC#N`rzFT z-08#D?)S)|SInN6{lIrGAOGI7r_J1Ni!(dVSzY{Y_31tDduGl3+g`l$tM2>NR7*!P;-`dUCVhufE~y5C3rS&b$Ai=c^z8)waEd*w+;Q zJ^%N&FFov<6PH!a=|6k7y{>$E-r+mk_|ap3eEk2_9^dljx9+#qN2`zi_Q6Y@d+*S> z+w5>l-v^I->luga`RfN~o$~fqTzS;tAA7RvWd|O&^o>`3;Jg>!dh@|&FPiyjzyomXVg~%x8WBc!D6&4F@l2y%;;R zXqD*1qu0VRjzCgiROSzuFKvA09|T-FC6tbv*2Z_x#{V4fBLYJc=)RJ5;;A{^bZY3x z)b(WFHn^TVNi%%}a6dtF0tv@t(*5`a`&=YVw6G}z^0`Mo*o=v0pf3h!$_Qs3$Mj|` z1{_R~mYL0L`7K5)vt(!cD-?Q(k}Pm=@u|zY=khsXA+h+{@}rMJIb-;NQo(|hCTeQF zs>`pbdo!>V$FD;;c#r*q~C!gdBp$#`$z5vQ{Rxn}Kk07Tm*lW*vsB)zjxC zgxe@Fq3*Osd%m|Pml1UY=49#DP^95@@9@FvMRzasd1<}=kOtFO)=b6nrc?}**B?j6 zMRdu-WIrbw73?=Kn<;c$|HL#9ewO*OR$T3cU*M*vsLcEao0#hd^bqiGXy0YC6j>&u zccI0&riHNK#EUs3O4Odl`frtvBV~|s$>ICPJT}f4scaT1%FVy8!U}T!>V{j6jkkdf zZig(CN)qEQb%=N4H%u)*1#?L9uV%s}mzj`^3{V(PZivX@!+`q;t_){!P^wG%f*X`B z)t6`x<6zeUO>Db`D)Sg-XUzu8BrvoJAW9n(G}Eu}-Uj^<5kVq`LZ{;Q680>%k$t&t zQ}%v0wg;n2cNbba(55S6i9XE5D?mxhL63piE165u-eT)HCywVJ&8Q~qr^@7X@2myF z?)k@lv0a2aJ`^@i!LAkrf>eZ!FIy@B#Gfd@nXqt>&ioqx^Amz~T7u!{o|?wDwpn=> z<gwj06 zxQPOT9b>HYe3b@&8Q?+!majWr6i-f@>B04k9~;-Z&Gl8LCxv9KKZW#~?DxwwBT8%oFR3@v% z((+Os|Kk1z-+QUrmZ`E*b}PUPf)psZ)yZ_P`D>>}B3mHz$b^@56@SMtFP$E~Fh!Xs zP8l2HBb}6u?DNs8H>E0k%*%HD^WjknF<9`dN%=R8M2JL=Kg+B%dro-3zU?7I1s-fi zC*Udo9oltzs?j&lKiEIow^(G8!t0qFlYD3ul=IbR$Hv)o<~j`9+77Tefk6m&@b;LW zuT0pr>U7K5aq=LQVCV@m*>wK@z1OlrS_84D!{2cOn=?_nq>?`PViEnK;65(l4f6` z8&vl$AwEt(;(Nr=qRedKdve8ypn(i-OV=E-lvuAK(B_Muk0jjlOG1%?Drio7qgYz~ zU9Md7wGO8=2w@4-U*vQNuMe@^dJC=BJ%HN@jBlZthS#N^vz@@L)^#xcfCo$6OM2mF zC)F#9mK_D^ceanyRKF5_I&H1;*l|u=KT>P$cYIW1K)zdbU5moGHIJ+B@_vOB_ko+- zzZ&Rr66@jCrgZB?ULH3Tue&^{0V$xsUej z8I~bV)9KJEfENu@So?Z8K$JVqS_pU-ftgv(uh7Y4+r^W&Q$=N^X1e1P5}RGpbMmJy z`P)(dKKaIvJ$c$`R~>%94}X8(*oW@<$+15^qx$65N1cr&9Kd>tAeukm=O0W6k`l7C z=l9aM1LgAc{^R6VVyT1fzG&Cld(7nl{3j;A#XP{<3C!4Y`h-*4On3X1ROtr6GT zsojK;me;Ota;mY`Z$A=-3trn`p@?Lr%NwmeUWvQPpwyt?r2ScH9SHW5Fe+B8^khp}0RwO-+V#o#Q8 z0sALw(6huze`|xD2}6Nh9!{I!i8JZQ;Duq4x8nXI>8_i>h7C{GS1ijHR=Q0Ma75s^ z+b&T*;1i65NN2D=zD07oGidEQ|88r8^%0XyN9u-cd!-L84EEGdJ=`%fC?(a}A%Rk? zuK@_my$x1gtyl)QS+LRYam*)@bfZaRi-6yDY3?3%$f_3qM? z|C$os47&3O{{y?xP{tessXp=3(Obk|9>UgY7v0SU%F!6i63yibC`=dFpKvL@oO zoNtODyV&D4by&$Q77`y#5xjpT&`WD}L6ppLT0)7!mjby0o;DBIdQ)y>um;uy;5`He z96PPVEWaW`O6RU!>$I>Cu@G|o=fk$6X_Wcs5@d-X=tp!8^vQYCr81KLnMgt1CNGo7 z)IQUgRmOT};UX~OZzx=)ffA+4$cRclxBcIrH-xprEZl9-q{lZx%X3qN63HJ{DeA`*8 z9zXtjH-CA*_g=s2VT1pfSoOJ{wYT1!KW3uuiqGzN`lBb^^yP>D^2FnZee%s61Lyy4 z>eR1Xbbil|Uy=X&4EbM2Y&m{`&@ke_Q%e?^kt8pwf~QQ{==2OJL4Un9vJ#ecHO5R-trAs z?Yi^OjYsZ#%vsle^;@qQxpwVaMj!vvRl8pKmCu~?+OxKLD0AJBZ@O{xGsk{>m)$P8 zWAvD>eEY4Jy#295-;?|7>JMKsIlj#e^S<@&AAa^_zxvt}C(m7X?TjlfdZBNpV?KQS zk-NNc;LwSy-+j%JUp{l|MDB#2zTs;tU$NgceNSbcz2Y~|e)@=q?jAnno8PX#<~Khb z{p_b7JE3!8r^bDcEc;IBgx$Bi?Q5&vx!}>ay}GjK(q|t3!0~T7{M-364w|}S|1++B z+h!ksu{81d(QCiabHGDiYn(T8_DO@E+V8V#mpu5#<6p?`wDgFz{q|(Xkx%~an77pT ze@kPx^WXfJkMF!s;eVe0_730t!81coKXUW;fBJ_LJ35y9?^W;q(jMc7k9=sSxxZ{2 z_{pcw|Ijm(|a?>g}uV`QJ7F_`@mR_{D1r?^|AZ;IBK(U;f6&56k`Jk^}a8 z>WH@i?d{`rpG{(0zePb~mu{}O1Pc_)D4;`b4LXSy5V5PPlAVd3S#(@Ur25I`@1-r_4M z^k~gixoEd;JC(jh=a%L~dDilk`toXRQV5oHt$Ka1f2eV0k9q*N}$1`&kK<4FY@&)O}hHdang z^;K4tYSqdl%%cv5XN7wpFG&-!V+x+Q?jDX!hA9?FnyBCzvYTZJi9#z$F@lGczAlME zs%qe_9DYuLYIwyJqiJ-M@vPp3qJ^H4oj$SEDRfF9C+~Gs*ZgV$YRyXH4DX-7k{>=e za9FJb@^E(GpBIVCVu84=SZ;U0ua5K_zSySJ+YIJC-W$(19CzT-SS<)`a7xPg?{nTH zq{&euSVWdm5JlLPmX{``9rdr2A+VBdjl+*@l*p zoo_EMRqO@ixCLtpVJAJ?@Y!#z4Zde$qGnIz8@66WW0sj+&qNy+O=}6>RNt$ehIas?FQlrw7Ub9tqhdctpW{Be$b>6 zWcI^A!VHiwLkvnI(M+ap)=t=LYi?bSo;v+IK7bl0bam)NQS}9ST|QzEAH)C9K#q-E zl+J}hMXJ2Y3)C_zRHJ^^_5|s{5~)zvkUPvO80orj%hONVROP&qIguCz$ivqD1lp~c zZ%*fXrhLFLEImW~Z%LF*u_We37~I+hTmA+)rroVY}R zBaz_tc0^vAumN}SjEs_Eh(Ehv9zbpv+}6zcvQB1U(&mFTeG6fi5;UA^!t z%~y)Pt}xDPFz6iAggK}QbHheLWM-SM_>5opD|xMo3!qS~6sD0nsnX~gT~UMREQMVu zfJS;z86GH(R8*AfDdwkep+`823y7}?xYQQ%l?p|I$`lfpM2F-$()!#e>JjF~r{7fa zw~md8csmE?;C)R_#P32VSIQmM2vpFK;l%M;k+60Zh8{|CnG~icOwh55NXYG-4ma4I zkuNi{rQq#UkZxF!Gb=I^wRngn!`~ZuxomzHYq@O8@^!mQMIUTb%+|oQDq^;A@xWE1QbE$Wq};SQp(Z~DTr#-RY%RgIQ!A~qi$apZ(G<`B z6D}(gb*D@b4%Pn?F4G8?AEb-v3xG2S1pCjsm|&P`lw4JZnM`S!s*^Fai)fsm1{_Zi zancYpF_5LV6QsI4T@;2;D{_jX@8h!;=d;KXQ&^$I$x~=p{{}oupqJxFm#}G8bjTWS zPJd+sZI1O??CZ`1$(th-J=jO_ykx5-t`{x98?b}3-VE4{fX^;B;dp2Bd38uJh^zC- zh{A(UFRM+}s!(fB;;I)v7u!?S8aTq#(q$U0M;inh#xj#sO8IL&#!Jv2xX$vm4}l!T zDRNISR)>a3TZn7e(K|#mGDtRJdq#QEOfEv$fMAz65lzk40a{LE%OS@J{)*60UHxyJ zkE-4#NYR@is|&S);tWAqwr^YDl@K%Z2Ss|$iSm|a%cGPheD#7qeHY^p%dshxkv+De z{v>+Si!K+G*4V`nSiGpe zREnxZFZNK}TH>UXmdZ6|)qCOH<-~KCh!Tm?jq0ecSZa(EYNe@0VjHn&O6O3dRTE?= zac>9m$A|#QL?xX{1_Bdve!AR{sSy%KMnhQw=W=+=xw2Z~eu~+6VIg8ViA%gJKhZ_r zddOUXqcJ1#B&gL&{IWNa9DKBp95t@+mx zw#-=Ok?fLm_7d&}!}(IJEjA}QwfxaX*x(Jp?1ksuhH4Ml1Assl>>C#B8`dySN0gam zKqHcr?VL|ZHCDt50KPer5%BY2Rkl!bi93MPl~l?krpdFI^vojtc7{AJjv`3B7U{wg zh+Tw34O)mNIUlP?f)Z}Gn)a6JzWtLxTOGsox*WA@lTHq3r)T&>@V&Q^9hbD;R!+Zs zTB?ndlV`=5g+&GbvdD9keK|q9=tX7*roRJqg$7U3~bNMPYQ z_&xx^ei*CLMDR@|IjQ`seDWQUg&aJ|cG6*0x%stDRejTia;a$N731;JPdqJh^Q**` z8bV2{G4o6!q<*h8$uzR4a8k}vo#{Bi7Mw_$qyBbDMo1^IB`Ta`D82T6i7dGYyAo`?brpiH!nG9u|JbAJoA*br~XOaw|5PQDTFx0oDI?qz6 z#3ywTX3X_nwmw1U`BA_F1lqC-eXHP(A#Tt*-WAVF|3v?ou!A1=elAbp=GFrl~=U_N&k)=hpx>hIukJx!6GC=13##&lQX9?Nt@D;jG zBO1C=^ge2$VR!-iFNy>pi==2N6qC|g3{pq~7wM^A36A?^1pMP33eu%dZO&(c z(`aCtNHYfZ9NZX=d6X|*1U-yRq!?p`L7i zf@t8#)Hd$pi_JL%Fb0EUV*HZ!m7dC4sl{S50dxakmB^DR^DV$F1e{A~Ml+6IdkrRE zv3ey#G>wKU1~_5@MxXgM&4n)X^9lI;#~i$F$bTee;PdkzBjj#HO4=|NawP_wEdz=K z3;raL_m=a%f5|Iv-+rh4 z{&oNHyRNwF+FiHUb&G+)@BX82)|tm2`8MF$(R4~~1YAX+jSpVX-#0LS$w<$_KFais z*Tusvw{xXV%m{wkpybXiG<-^Db2LH33guTIkb*!a*kBMgD^b-UW}nG?fJU$gfCS~4 zg`895oLcPr@-j*zh%7zwz{*dGAEWs0jNbu%L6DdM3-m;YPt=$Atu_dFqp?y{PYIn7IuDMXH>1y!CIMKzH`tDR6s z!5vrZouF7ry(kwW)rp{1x@O+=oeZvt4QS0&KUgu=4tmo^3&B6@#-!dBGf#BKp%M8J z7G1D}esAjDrX*_VsWZYybb`~g8Ef{Q9TlzkPCSX{O?(%hOdPa}Nt}1RRjDOT&i$@J zx5UHg9UHU4GBchbQi{BmnfnQ}AqS30i4G}V70*jw=l(cNkFHr!)sA()WSeo>G6iN-!EhshMU1sAKsqmdi1U_SCE9LK4K&W5{ z6f|9La~OIL-})@J8`HH4g~!<>0dk^ie64%Rv|AGBtKz~z&wK`vvk`FHud5YGp~K)PMq|Opff1zHVlV8WScVkn~ha z{H8)XBOu5{Hs9<#Q6H3l=7Dr={S6?>H^r*boP>2g%Y9R8)feLI;7)TAm?QE1BvGrc zV+?wOd@PHhns;^^80^s(JygEQ%Hl826KHLhg2=!KJ3Wc=cfxysK49XP*fy0eTMuhu zV4a1f$Q}ylCrA`ET}eWz2|AMN{!AibqBIF{NEMQCTtz8h0ZdJDbt&}$Pvj_yfhd<# zhvex*MfHt<07xTKA4!ysd{GvO6<$<-G)p8A2~3#~C{ef#&MQ}I@^)|PUp zYKDqS%`PPha~a@5f}}%?cQQ@si&g?*(Jm{I2GIb%Ohe|?;&7P{YDSNNqw-6eAW$t1 zK^OmmpMPPnkdlRqQAX3cIP#5OK+tI0sR5o>ed~YUcfirLv$h$3SLuqazO`@m>Rlgs z{>9_o`>yRzn)&p*`$xX^=;@aou>0?~JbU!?r#`;$tXV&}?w&jM{Qc*CR6eWt%k2+( z{@1zFkN?r3_Ji-6{f<+Q`ND5^KYHi)Ke6>*pFH*cZ*2XaU3T93f}N+X_|M(v-F^Ch zcDeTFH!N)Y@gq0G-7CUcfVRt_?9 z96-Ql^M(dSVAOFI!~65#09x`i4HCteAshiDmK_VUJOTgnL4pKMkJ?zx)J^!EUYC@N z^Z3N4unH!;o4~AI#ABSx`rx&d!U~jkKs>v{wBtL8q4$D&rq)76kawlf4khyV)JoZfRFC}e zM&tvG7psif7EWT_}F6GSmfHMh_G8N+;@o-J%T3tIb9~;=oFUCM~vjH;+_?i;; zz&m*8%Wye^aWI9JN$G2)!<(^Yk*nxd{=If%MYZTVZ4AYhByWr17re@@t(7`WY}V#R z1dhRS6FCqrAGPU1qgwL~GYxg*x0weW@5+`aYB~yON{1PD5iMaq)PFJ!W(&kLw*wK= zeF1QVvEIhGJDuRRS}0To@h2yf9?c*07I9!B%^9kHLMfMc-LoR)bdhkt++3`m`Lmw8IzZp&Ki^0`Oh}24$5r+`X{`?~M9VSR?U0{INxg_ny&RkcKq#+jtBzV`ZA( zIgCr38b`S6P4F(rPSVLZ1MnGw#Iq~CT;`REC8an8rnb{NCiv}hFuoZBfcXU1>D(z7 z+Q{6UFE6%H_eR+IMQKD#OFTPiT`|S0Fa($L6=7M^Cep!SgF^taN0JI#>pU7PRjCcA z6(4nSI%s`>hI^~4oY(a3@X{9^j3}pQrM64Y?I<~A1uxK`?a__eOE|8=sCF-W!OdDk zz*gjum%JeopRui7+N>TdT?}7fIL)_}8+ImI9!<-x;9-`E>$E$bA;F5u!(f*|< zF5?a0D&2_`r)nuuw=XX_t`^#P4VEeh7#%^Xe@wns z9HpvebWh`%aVQbJ4*}K?G-U_o;I}DlJjq-neLHg;4J4><)#(dDwcN!ge18ait5V1d z4T4^W6l5NpV*=&dAxN=EpS4WI7;3{2Ts8f=xd<|(khkDnZoP{@du9$2)fC-@Xn(aP zElnFOP1?xyFgcY>8?`itYMHsG&owMoD>5eeVBt|)cAo|bh&WG@yWsD8qq3299^ud0#46XCd>swF`lk3B>x02#P1%N!-oZ z7%`T55=GoBn~5M<6aQ-MjI(>7_K-9{`A?e3wlp zsa11cp*hATnh@JbDt}0$RCmBlI@Ya!2&Llt=Zkvrql^1`MhE+b00HuHbIK2ljq5#1 zh~fzSkRD&@HClB%bO%^F0JbDxZ`xkewxgN(H|?fruD*zhQ>c)HS|d;dvyGc>y@EC! zOjHIM-^{*zs}SA}JoD*0j{+Vb(DE|7kogfNN2x6{{~*u`wf!P>S-}?OTWUhjCZntFz(RB&&cEY2f<%3n zGR!JV@{WnNV3mA(sM=8N6XW(&EBJUHJ#DLo{O*tdLACl?(nYDdQ&HxsZKCN}wWTs6 z{dE!lq*|Mdx2RePeXj1ZR(-nYSzWFg3x5PwV;Zn(Ce*;JW|Sw~YsX((MDtfy+BKi= zDu1Y>H6Ie(!rspQB4re7c$mQ7O>daqz8LJLZ)N$d7F9etiG#A@XXHF~)D2#AV=-rnE}$njZ+L^fTm{n&WoyB=Cf zlUB!VbW=YD_&x#qrrrl{H@~TyU&R}NY0Eqjn4(_1^xxNYnj<|geSS+!Q6&#%?;>%r zX?8KzF~FDl5?^g6!$rx1MS5JaDR(D^EDTR8Z%@20o_Eq0c)tDpsB~Xjl`qSdn+~@| zzWvq{0LUHIqb7>M&DaRF5Btr%n@Ni7FF4{CL$}#EhyBfN_M3aL-z3y?=sjbsW8<-B ziySJX8o4=bbuiZY6?OO=;2DAow0Z?Z`#P;Q9jPQkSwpQlU?oAK4*Sq)d)i5!LMt&N zk==qkG3~2zTommSITxpu-yK%8OXMJ&cHXsZ)Scg(Rdk058o08Wa}(AY!oB5yBMEed z3H(0O)H~>0;$GuU3k8%?OZlv%?kJ4&F9cfKJd6U9i)|X3cs3Oo+zD4Y7;~COkhpNV z_zY)dGMPoRss{lMBuG>-FSg-z-5`^2$nb*J&NFDXP57MKa?{$T5~h_WNTTsHeceuR zg0L#I=sy4m-MjW|9Gou{VAiKz>3Qk1yF&N=WeoKafC1VXbhnLf=&%rtmUqkj$?`)Y96uO25z;kK43akKHr+FcYBwyZ?OCsYC|M#Poy zNv9~!ff6(}`EpO809R#kIqN<3sG(3G%Z9>mmD~iOU3LkvUEHA|(+~oWi#>3ko~Te# zEk@qpt6!v5z=dNgF$<8nOzfZ0hHH9NUzDQhHKSTC_7eHo5YBlqO~5G zMp9(l`A(`X#wv)NMTvSjDFzA()4xn8RTunV@^l9B%j`0hR*^Z+7^@(+M+W)XMPb%8 zaMDx_g?p%*^M6(xhFTv5j8Xhp$EE-$Sy-n#zfYG_QP z99dmzq&?n&onvfyc-awVFkQA8lw3A+lAthGP+*8Jo|k#t;<8pUdt9{mJ^0VtGsfWw zuZRezX0#&|aaKoR;4vkS&LLAbJ!4gZN7~K# zFhAeOv+p()jS>lvWuTnwKaeMwG3>x*2DlqWp>FzJy(yPz1sq@0v8 zq*R&q_+|!cO6%jd)Tt3Ov9E7($|uP(_K`Xq%-7)E=B*~9ZM(cC+RTR!pG((ERuG0K5fd@>KJyifl8tU`Zukqw2RZ;Q_N13JYLe z6mD@D*lJA;kBP&h$fLGeHDX+z;dAQ~kl5_WGGyAx7m&Xgk@>(hp9I3(KZx7aO5mI` z=yhC~Q#QSnLr%j_6{kwNP<>xLPeUXqsGTP<$wTI=gAMUYfHm=CO1tJj<7uBn#{V((9^l65Z5)f5sol~w02FVpyzxbzU0`61*mDq#>d8)BSt32AuKZY?h?M3 zb(pn*L?rSA5Q)*{Vg$1fA`8icU1Jh`@BB0A3`7l42fDvlXRs8p`Ru;KxP*xo0>PYA zDa2C5U!qJ?hFf%&Pemkh2htia(1wPsXrs5b%rg-XG@0}`fFfh#3~D2fuhPxa7Z_Vf zQ%gf+s9iXlCxggPGoMPvM~NAjEvG02MgE#d0^@8x6Sv$lK@98&ue{8}z`zb49|Gqd zqzFA8YKJk7v69wNQlYVNMo;v90H+wMM{UGO@$C}hz6>sht4@%WJ5E@(wqcKrGdA0I zdx9u&?oHXTv(3o#QYxUvG|5XucbV*oCt1;Tz$Bi&5-^O3iLFxt9Ah8iYSb8z5#R1H z=z(0sQM)!-f&?&%V6_Uz6lqshb@lu3nG6)n<@0fLi~+is?3>ouI7cN%4MPL;eFGi? zvp2U-y{2&Oz3=?gKeu_=uirE1g~N9I2C z#A#hSU)b2~tP}sWX5Bs)yc!M$N0A%J1pvxwo^w{JqcI@cgXG z|Gwk7KkdJ3`Rmtz;-Q!Q>(G&>XMORZk3D(%84n)+{Ga>Y^{Gsr*R^7A!?Pvtyd(F$+Ddx(-6~?ZoMDIgs4LN z+6dhv_i*W&i{EQwHuO1-6Noy#eLOAe4*(*bLz~!tz+Ppm_*Da6TYV;>o`#ck+tz0i zA_QT(i(@+UP&|kAK>&QOt<_r3`GL~%23c60hN!LG_VlOPn?C8uY@*H z?xHD_#+#m0pJOkZ)^#7Abj7OoQIq6iA0r$~;q@%?_WbvIJ$HN_VX&tVFvO`al@=Zj zgq2$vDoPl1UG^pQH)$?B<2wuWT7>5dUqz@CXg;wt;vLeObBszkqPJSDf$AV=pq_mF zYd>|k?^9Z)V;;qkz&I@eHtJv2WpoI`_fYb+MO(e z5C<>7$gL9fIaIL^=wKTrjyn#3>S!@~p_3)(A+v{&vjF2bP!AFBUq-ty!4RX|AhfqN zh9NbdVoG!w6fC@kbeXqIZyDp1{SJ$}nu%EImXygB@}O8q(PAB$;=F+&hVzKn zW!h*asyVGZr)-W3QuqLdJhYidBh)JWWo1S_odvQ)iW;6t#yLwvFubb8ZM$-V!Ln!* z*rzO*KqeXM6@YCCzQu5O3GaOvf7~U?rNqDgkG=1JkE|-&pF5M?g+)OTKmTGuG@sol zpx8?`o81khnPe%3RVSI7WZ20}m=ZRKij5+OD9WdRgriB++fAGU|Lv=A~p& z=Za!U-S+9!Bk&bquxUllNd3H%+rBfvBE+sM8UIiG5y+`Z|kFT<@|l&bxA- zuLWF25V`(vy(@PuI#-86r0e02dnG8Y$M7>q*O9rJkbn%3;bFQ*I%nwYzN>~H?+^UPm;uKBC`nZLTP z(Mkl?Kh{d@qY!%3I(wOqa^C(ZTyEYjcqkOgifS4>6v4&{qenFku7-P{lnEuOVeqS1 zN9B|k)h4hwDvMz!6Mg#=(cbLRSTJ72j0JL9;reEn+sFC?;1`6CPBV>MzB*T%>Y1(0 zSIf4Y%g@a8AmRheT&1U1JKh&+6~qdxgR#Xf6A7$7pDr(l&(Z=~?a3Bq>6l!km;NGB z_#lbJ0{$+QF9^P+UhZ)Uq9K_Y-mr7ZhWf#lul46K;ZOTtHU6T;6=tK;7@^huh1Wf*ww5c12wzx$b^9V| z@p>Jz9vAT{(-*tfWjEVwVK!Wil(3KKkF@wg{gB78@n%?zy&lGsZB|Gvh+h&FQWHAp zJf2d8)TV)|Ckav1NuLVd1T05trPailLO877HTbXYGzDj7%-o=lvP~2#==S4^-(O{ii4$qoIt}F3_SFi>T*{Z6G zq>8JCMQ=1bQ|?yA)&$>B?F?l5dVZ!oy~vKJ=`dgXW{xJA?-85a2#78jj5_WU1EYie zLnCYZ2kUBj%Ko%oWlpgmaFhNgH_2M=KrK&IGT4h*iZl>7XfdD5gZaSp)sv278y&67 z8r@E%^p?0x=RK!;#w=Oj<}GmZ)=#cz!D6`V<)EEiv@5E}XMQHH<3HcKk`VmR7@n%V}-FNUNfS73>R2Jf${A8mPyS(Xt9W zqBWu{BA2qFX<@Jtn>Y_k99e$?{EG0g2y9A!iQZ!Fzho<{S=MUX81mruLALJ4-m9w5 zzsK+2i#2tIveiDj;6-7@aAD{eJvvA90qSMt0jWRf!>o9 zk?#lkj>}0z_U(=Z--uK&V!V-No#2}4YnY}>*2-4P%4u33#a=vXw(=)XP^b*mm0Eo88G{7*E}7U;TpPWvJ6BgXTzN6PXm23 z2M1ZJSsM54R@EG1V54pxJOg!X4fd2C^8E(u%w-Gt)9u!#AZ9Q=ezPrg@pdk-8C<1$ zeB^I|A%3B}@0|(bBye7wmw_l+KSX}fM027}RIA9#?ON|{fI6K;X{JD5`7UymtUrA( zA)d++E#RsUAy;c_Y0%9e6HBsarLPQ_vJ>bvQ-9{XzXQ07Af{;;$`@hXUsKB$aueAK z6&dP@k*-6w0`QD33%~pW&hbRRTL@eDPc4akSZNajN_aADArF0mQhjk1X8e)%dB@2UF$wvB9fh;|S#5I%}yc0n>$%&Im zUc!2;oM^2Y>RFlOCa(W-M>;`n=5TpE6ADv5lF$|!9+!p>8&E_ZGq9NOr}abnczbaD zj>lcJfcq`re(PS*)}e8r7ZbwftG7YO+s8$%N5C7h&gV$8~&PbSs;!7eJuiuZXxP8~}KMgdxZ5S*K=(F_eLTWK3vDr&YgtE3D&)sXqp|oM1*Yv>8=*00d{&NK0fLr!+Tk{2ib)o}A=OE18(J z4JZv_-L;YUe&g%vPBMl~En4_DpmU1zHb&YpjB3^jo`YV%3ki{z#iLBxqt9Ir{$9tP z-UT>;V0O5*13TVVPdXmUW~_8LjU#&i@MnUE!GW7MmyWD#X7G-BV(fIs`~j9_qb)3g zwFlrKg!aXDcY!jA6eP*7`?6&9cr+HL3mHASK1om}2+498xCM$@axHdKLcG*!rdDLQ zr3x4d^bi@T?X^RRT$Ydww2h4C_1fy1(t)OG2aJZ>S3m)RKuhz94nvA9BeflCl-Olu z5HtE>|CVVRDR;?Rd##m$!l<<}_n|6SpmB^fE|e;@a4A@{$I}@3p0gnuCwJXWdiPGiafGONws{qq z&1h@goX#~7MjhS6Rh<~q;rEaPt-x29X6v65rz42yHd;VvmV(UPnN)xuxVBX~*D%XNR1l*q$xp?6s;C z6jRRBF)@0M+k>2$UJaa*CM*Z@2B-hzic(K}HDQQpOBrohRM}AOt;FAw_fynJgLui8$N)bZ6;=zM5M0UW0$U zh>*aiQ1`>1>$#>}RC);it(CTjHFG^zj7ql-usF8`vFFRs7$aFzc?q3%wMq^V?lihL zyWEN+34XC#d7`$`B81)yF+bKyuEgsBH9`_2af6u^vrk!urg;*0?`Cq@l3#ESHzhR> zC%@tbEr|?uEvfn`bG6=#T}XW$a0ellmK$qkZpewg-^+1xQ{UnAJ^{Fj5UInS%Fgz< z89(>PdfIC0do3iGZuO+mr9+?R6Nb5ciWKe46(JNf@kgLOdggJMLBH z8`Ux8n5ZosC>Ee0Q6Ze2-FGpUf6zXpG_@7IK-O!y#$$j32xbVBO*5tlyj9K_;z!yg z*V{#1^*SaZ?TSX@<)!F%;-LCgQ?7S4bC&jCE-lQ&)+$00G~eJ0qa2toh&*S+rr{wuDc4j#3jE7^QAETAQAO9f8ax`;wEoRHqSCOQ%IiDC@ zY{!siXOW_whov&_(|kmJavu|{pd0!>U&htE8gMB==^^DTJN0+RW0lxv+R!bozRpx! zKW}_$g+Uv|D7htsl-^OE8{dCWL>lP*v##Ujb>Sbhust9%5_MOhqPy6E?!wMkjA+$s zNPJO(j=K=)=<8Enib>4bw^F?hW24p)65`@6B?C#6ph*;Cn@gVjCoYm;YpO$?BQ(&kQp#-^$V*6g*fCuUD{~U;V=K>rsP~`Jon86 z8bKY)dEE3|wmiA1t>Cj5iW!`c>^u_pmJL;=yq#W~_yKF}Fft}F1?sl7idu^?#Xtax z0Se<+)!_{^Ge7?gQE1kF7rgvoz@F4#`qik#RBOY-!y{uuaI1e+@5I2!aI$1>vgU}X z*{+rhlugIrmEX9HlkvjKVv#^?u>&dclsf22J<%!3y|yNLpmw!ZD!h#LtWAWtJc(t( z=;(Q?pNDfr{|NXc!Q^(-BitrxO33GM<&KL_V;ZV7+l+s z5L^}_y(EXx_d>p#jU(`Gg-UXGE+%s(A<~9Tw#?UYYUT_LA>eI|<9!iV{U`vn7v)wl zt07K)w45)Mky#%N)MI+aSKM&YDL=mOp07SPyXn~PKKagb-+b)8e?A{Qyb(jlz#}bl z4Z#34*B|+f#k^8Cq~q`zi5RF|4arTN_0xcEklbj~Wq{snty`ObvC%VZi=#2vX|76r zSf4?&`U66oXo5>cP9rXdZg^BUw!oGf%&r+{Vrtj#E6p$DwRZ?_P2j@`&VW9z8VO`> z#w|{Ra-~7J(!Uf#&4;rnYPKf3WLMCGAK3Kpj+U^S29*eb}$fWE5{d!1}nAM zBPxzc)|_!qf_5g+ZDHBskfP@@P((;rMIZgN;#`oiOBc~o$X?POg$cgL%<9f?dD`To zBmKMTzsQVDDH2e6=@nwCk<_T$uzD_SkW8 zhj?M&XRGpdXlLPRyCR~zzTS!PzL7B$)6v4D*fmK7%sG`(5p~xP;m3nMm;x_Pz-6SRIrVRX3CC2=X@&AVDBOS_ov<_;3YMYo zCug7a$gPJEGu{Az(JpnhsVHy7m7>zi=_!_Cc}3qx$w(aaq5^UOaWq;l<2BPKN1}lN zKOe7E&X2)6ejK(-G4{-j(Z(M`Fimvp5^HRaf z>e*r38M?R*Gk{kUj6JN>BH%~NdVeX_owud{uOh@2HkTZ8AU~gpD~UJIj&KGo#HD2m z`JBQFUPxYpDkIYHZmCN~|6qCE+0L+*;K%~rFH zeTj>M)t%+e-VOL7A=>AX^2qp7aeA&?D&~)}iSxVb{*83M=u186Xj63nxd;34(Yx9Z zi99qJlJog*@f^Jda4^9D-48;~K;5Q#wuL9B=u_F-H!*OKGViS0IE=qXhGn&LGn0_a zi8ATA!;QuXn9uPLF>*nrmQT82RtHaCCk|c=I-yd_&*6~0mT*an=z)C6sY+WJD5)4} z9c_?qRfnPR{Rz}Wg^LyvJ;Gqy3Jo_j!^U*AVlx9dBUQylRsQf3#uLz)IL46-23YYZ zyL?^DmfmDyy1LHe#3?NRP)(+Kv1pZ4jNGtYJ+f5xGF8S<0hpoq2d_eM+3~KZQBd2y?KPP(`PZ<_M z>qyKOR@33C?E(Q9?{ zH*!-|A=h#Xtk~F*jm#a@n|#*u#QQv_@LbY>$v$td|bun&-DWXj>L#-0}SULcs>t>y1zJ%F?fU?}~Hr zJa5jHPTIO`p<;_?aiUyv&SIK5!ByDS%kcYUMiN`F`j~TP(~%7+6a*V$eIgxh@=(pO zP;$5kTp)ZnIz=zWXT+VjcmVI?w&?r`2~wt52NLzYAMh?hVjUh4g%w9gu#D5BeUKyk zF5qhfttgh`e(Lz|0HIlnXcy+{)7n?`m&)9ta!s_`VQk{%nRPe_JU`;GelFmd1ThQH zFtorVocUs{RIBLb+r~njppb;ILNSgJ;)PtiLja=$Bb8C;YNH&8GG}ouw-siHL@ra% zZn(GJ6G*(fZ_WuM!4jKz2MvwkIGv!N(`8&W_iXMkVkC{>X(V(`zlo6CR>FnZxmAo1 zvWbHFS9<2@}1ho z!t9%C?Sej#T>^~@e7D=XYMy~BmK{y_ik`k_2-N@dM9Nl6-8}J2`edTMAwWN&L)1}g z3S-l>c4a`5sw{Q1ow~KoQ1GDM%o-!U`w8G4LbN7$Dxb^Gqjs=+Xx8B0kkCBrj9%0e ztv5m|mtTzJ1A|`-el0RTt}{GmP`}`0{{>+EgZpHgXAOy~^V0*xnUd3Z$59bxxD5XU z{Dttv$P{Gtd%m`oEjSC??fiCk(p{@q+aH;KS{Oj2Dq+lqe4}#`IWmhLqm?E;xfO6D z!Q4F|q!wdeE6wooc0t}WktvmC3wF;e^m{!}0NC029!~0DgfQA=v&ncwCbR75KbkH& z8~P<|Xc`-u#)hVE>&0IxyFVyxzf5Si2eFX>^MdbookFr zYx+xkRbOt&Vl9vionaPQE_adA?GT{&EK`tt9+bC_bcXRg>~@OL-ybB1hAmwq(rK5< z$WB=?0{qXDbeH<0o+aTD4%c&sG$)@S?>InyW*HTjXHVEdNyzC=K!A~B+zD}nR+tUh&ZBYN!`g!9m7!0 zD89hycuo$w5Vo{X5;Zu`UfS+x0i7JuF9$rIkj#;ZOSMzLvgUC5hYSsBXFG?-GvoJ{ zQ+PSo4>T1D-I~M6McaS0jS@5#ZZ|FSMm%(Fn@L z?C4KD+Y4z)-Ai2c48W5J#ut^7SY^&OhO{o`o}l}fzq+satNWRcJH+lLL*$9k30620 zOO>D8%o9_W{~Vl|?n?mY5JYdyk*ULB$PSeHuuk{!ZxLA?D+}3ayXTd|_!ATUk?5r{ zk;nVh?EHclpfY|0)CP90zc!5^NIP2;yQF=ZS*Yc#25_+qXQdGB-hCq*hbJa_*9`Vg z96H)B>Zw)DLv~)3tA#_qf&vNaScwuQH_`0{wxME!gYX0uPt<5O zUslUm5j*s@d%`Zyi^p9%=Zl-;70wjr3G~`$7Yd@^W$(g5VM!dgn=VQn9`OvixKcdO zD!rRd#Uz$H#gVc5YV#YiM**Fw@@@MH zxH3T`Q4!CGkMP9>9L1^Qj){HoB~3U*#1xDtRa+;|SL0ZjQ&PmrtN$l1&3J8rmNrd5 z#PiTM2Z8}Z6v(_dZU5Ye*rOLIc&1TT2CSSKu6P>s@bv14A9tMD5aRw}Ny#@h(kBj1 zFS3t-Mbrwhc3z|<%<6|T%HWGQlHdb;j?7H{8Z3Dt&6AvRL%dJTQsfwncLCQ^iP zWQZ#jkuRXS)s(i_7nXv8nhC&1n7-4RisUMEeDWjtN7XJ+VhP^?Dtn23L_%@@fTi9@Z& zhZPYg4K)@(7pDf9z{?viGF+N_6OSgVwv`vNvWPrx&vKs>@rhVV#au$Hlyh*>_hG&^ z?~z=wQ^$6Zw+piL2T9)xtP-z~hat%Vi#vn#&@JdEeVnAC;`G&M z_4N?X=NMdQO8%0Ho^9GN)CN$f3>Lxz5d*VEksk#hK7 z6#H^S^d+$`t>mI0DXyM(bHy)WA7Fhe*y0`2LTdpU8M3x^b*_{X??WJswn%>l?M1sF z9!Ygpg5reu-C(_0iC5O@qH*w6^H~uMaoap=r^sH{yLyRR13yiu7;qcJQ##h)J2<{T zH#sG8i)3Vjoy{RFmo#Z!4~M^!500l{7e^OncPrwjl?Xjpnx|6t-WIRJ&Y!X!?*TK<%_wV19}fx<7o56A!|lK+$(Al)!aqAH9D&4t%wiw zJy$qH{3Nfr+8lAe>nNCb;`@A#wIZTG6?-gp<;pPJYY_#hc?L4LiIeFqE(J-wcz8)+ z!Pzg=^9YVlIkTOs68sC^VqMPDIXsSIYP?1HS;R)-K=d<4!Ymu+3B zL=#3?)#b41;`sEbRbLkwA6-qn;OqC)Qi|vRzS~R1(me2{FOZ94p^6p;1JZr@h~NhG zA~kENEHYEW2q_eWSC8*k(-%*$W`jJ-i+I6%3m~>syoxwwB3sPQm#QW4I`T5OQn9!_ zj-Y`OGHPE;7+%U(IIISPpu~F<5XRMNR^(p&q~qeU2b7#-3&nT+qp3Im@%xAf zg0(Sv+g)@BU$JbpHZShgApwoMxbw;8F6v6 zrbML(7VkHCtU}l>C9Bm*Y<c!x+N`19)vMWF)UNBI4vm6NsG>%ZO0l%3mBv5*P7ry(daa$) zL!2ntfOE29?ZZcuCUg-^cxngP^(SGv?^WFH4!M{sPO;*yP+Obbv2Y`mM-RyzQcHwS zO_%0-X7km#+EmYMZ640ob}m0N(}NTRYx8C0AhV=3m6WWzQLlR)R5_J{pksBS&8*8} zb>S`sejkgK?m884A|Xi#OllYNh?3#K@rms0Hu7Ok;)Wcj?t($sq2epbZjj^#yMUSv z4WEEJA-UK>5B5~WC-xvm7&3I=M`z+{+jm7bm};{KOM_;1aj|EBhdodh632A4!5L#A zN>U%27Lv9c)=i>*b+{|}8%R#b>jSEaKv#n@uFe_IS7CCKm!YZQcs8Dcz`AHYT4$4Z z`&6k^0EaNS$)K{U^Z5x_`rxBdm?&+wixofg^@#`m>1Bs(dfBILy?Db;4}77odh|Ve zetP_2znXjO`TL*sgj3(K_VC>+*BtYfC*FG4qi&iw?0;Uc)6Kmv-tU1+i&G;nxqtto zcedYi|N31aybZL>fc;~4uvvkLI~zrg{?VDm1>J1b}&j#hcf&D zVGO?@nC^=^jor;tM~Zw+uj}I_N6mSz*CG?Uws)eJPUP~@9px*=r$-#UYowC>1jqWv zHx5p$>+hY|IMy#tKuHLYT1DNa^6wM(Yi#3Szw^21dn5|yVXp^q?5?mciY&e-iny+x z8;U4S22C$9^2(*}<0VHhM(PYgd{!>qDoY3XhDr~8B-&>&or`uM$I4W^%v64r0YPuZ z^02S;afMQGc5+h#*@IAI`>apP;II>Q^T|yrD1P`UwKW>#Ownsu6y~pqz#XGWx#Tb zT{bUXlD5o##2bBp7ZZfsi8`KJS&ZG-R9&fNKA{Fe>v>pZ{*2zSOvfLp4S zr){dBK*JYpW>e}$Xj*Y;9*Jm&?D;9XypGPm=r(1=5cC?mWe?7CF-Q9kz@G>rXW{zL zJ1ut@q-mwF2G&7OB+ZJgFSHwBE@v&t6XD^Q`p<+VbPzJ(xt>q*gEVm8GOD0OU3fOwWuwB5FZ%(z+H(YKKB5j4 z<-DeTP=OvG1dS_#rDSl&>59$(aW$a^I(-fk9z|so7l*0VK&WE_HLk#94EBi4lvrM_ zF+F~uu{y&BYgvYU1lnDdhP=h=;e|W9eucsF+K>LwGL2{3SeVB1A1q;Jh=6HqYfh) z4xl1QxfC5|+>FU_nP(mrA78a~72HZU)!PwC^$)6jep2V@ts%3AMvJx8FT0c^Wd zfH!ar8afYO1J7(_V3yz}HsD7CROhIdaFStti9idSwKMvLk?Xx}IIo7sPq*{#ue7z! z=?iR=ZftOhxJJrHJg^&zngh^|+gC7nYEHGg!?sDfxSmuB-;2(A z+9TOZuOjvu3Vu!I4K7+-yl^jZ#C5S5(Yj{YG0#Cxa>Qi7Gd6lj{eUp_uINeJ+|k?I zu4$-{7fo0?1k4}>Q`n<4Q34gw#kE zYtqNVAG?+#?*+V&a2^+U>eLwV!wPF|)}g0#7H}xRfQ@xYTgbb{?VP{g zcE(eFea6%`AGg;R@A&am-+AOCA92Eu&rjVv@SHDS@b3fPlRx)gxA&g1*H23K{p|c( zSHJt!|M=bee*Vn;FFIuZC%x~?`+vLf(p}b{aqOlS9QgjXeP#9g=1v_kX{4@27s{D^I!jx`|zO|M@RI z_S6IZ^}q`x{p>>m9dDKl=w`zy0f#cbxG2-S7I&0|$Ql zgpV)1`{%E@ch#3i-uCM64dnjsV~?9H=busi>i^bq7woy$(}#vv-~au)p1H<)+@t>V zjKhBR*yI28(Af+yF<_V z_4aRD7uaXy_P@XTb^YHw=bG>QuU`7_>Gw{b^xjLKcI9n%9fr=Ce%e7QP6yX2O+;rV1fp# z>Z}YKx&B2JL*3=UNJ7PYU$+|=LMcr^rJifrKe@@I z8coBf$8l;3>Iivf!C;N^O=`0kDwmrtlYwl>p*I;V?u&^K%+_2lZ_5nVxK3?kFwTYM zGH@IxVt26KmV{WIE}LlVZU8)RQ(u(r;7)KhUQ|z)xvUZ`sTs5IF?ib4w=g;15+_?= zy_}2g^j4Zr&rlSLUIj7oGZ2KQ^9wDncM${|?K|FW@D00jZcCJt||iq$nY zja#vVi$I^)nM^ybU6H1I=zr?!*F`pIK1D1Y%K@a2c3XLRo^zK06>x+JWH+5HmMS)a zf%G3hGf;MSkCsskvb=qf*^6{WrCdw+gV|L>_D(vnW{Np2pm{xN3VQQz(M4HqC z*W6D$&b;F)1v!Xu6%pGZRF?V#SKQ;NMNwa2Zq1l+*nDCz*3tLa_-01CY6cdfN#LHN z!qQVnDW3XE_{S{-t$sFTsss0|o0YQQ&*Jo&N=H_ao)1(h)&2x%4uz-=cx>aoa|m~G zUmpPcnII}h)V`u3ug7M`*wv09apTR8v9*?kMMyslus5Nd70tALE;>yVlzCk`r#_O! z30N7&t*jk#v8;|ZraG>~1Ss8u6Js3*cq5@z(TH$e?CyQAz^RPjrA0L16w&TRY`a%r z+QdOiaLx*Jive_9-CBtkc(a>-dn34^MVl&KQnkMwqR|aASvH3Z3CtD8%yM?Qa!rf2 zb*sbg`K?+lY5fPeq}YO!h{mW~J&W+w_89`r3G^ZRU>?(9L5>cy1DEjxbpswt5Ce5Q z#H-wdI21lHSZGo5a09D4hN4B?xh}qFjK%d-t*3E&Zv=dtpd>;GrMdbn9x0b)R+ler zj-G>UX`peK0cG=y`E88ZeQx1Iz6JOyK{Ud6yUrw(Zu{+DEM)ah>yrSmy4E$Vu5sPn z-)scSlqZGrDTtLQkWMG8=Owmn4?H|u<=cc=4|Vg zfB}M-2NzVVK0y-CC7)I1IzUn15J>K}b$FO%R1hA-l|39VMKGkE#CoZ;Q1gxlFd$d- zu}Be0(J}dR74p0>UECo>hZ2|1ix}6ToU&zZLFX%JrAt(KQA}HdE)r{-vyLX1c_-aQrKf*>p}OQNF5EFBS`btvt~PYG0C&ie=ZqWOgR5T#2dwiy%{>#`-vDqn;gx zL)wMQkpmn?FeDw%_Hc3P7qi>%`9B4sJ#JZ0T1Lv84`GaB%vA zn>%HyD{B=N^WOx~GqzcBXKn+Z9R@KxBne`89+$urF+fAL@Lz6{D`pWfbip#+1&*@o zoX!}KA8HWk=kTQC)7fItE+_YXQKVjGesvuc4>L+R}ejsp{lgb2#{^_W({Jn1m{{WZAk^GG%sawZr+b1Lt`^ zZ{<3`%LuZk8xn6J5p~J)bclqj`U;l>wu2cni5hbN+XNvxyYOc20{_0BAp4WJhnhT~ZoUI4IaY8Xihvoy zwPr47$Qv7Uv*V(41^kbZIKs}(_Z%`b=p-+P(X3QnGI3Ke(~b%RM(2b?%n!aEOq+%w zM*DZSqH>r|$XoAvvt^>e!&C3{=CTX0!{`HKRk-XQ1e``_7gJ~Ah{cMH2ns#nj3!N! z9XIqJZWGFaf*G#p011n&yU~(kQjyO0+E1VIht&0-`_i2-7h30Vo1O^RlaL70IsOKz zbTaR|BupQ6Agxl&NKz2ZcPt6iHWqeH^i!}@hPg`-A*Tuf>y|qZGF7=tkHt}W10hm$ zZ%UcDC!~&CoOCB;pmt90gOkXg$RkM?P~^2q6|OTw+HOvC-=!LjQiqvf@s+`b+DK(V0^&BVlJ6O`;d;cnrZwUC&-WLR{Akcq~EG zDAbjUW@|n%JgYm#?FZP7CXq;V0bUj^{%PFZ&j79`B)VGeB}WITZR%frE9Y`IKt
0cY#3R~iSWtDo7-Qk%`3`tL*g$@Zj!g1 zpU`7b(Y7j`_OI|CekCxDWY%0?ub^gv{g~hW%vN9_TUFXnTmLhZ#nuGnze+zsx|#PrFNfN?3z*m24KyI+t;AqvnoeRLkZr)o93;XTXoL zecfD@4|4`gXy%aP-txV>FS`49?BEx;ohz^tOyB*__7#%cR6gzdP9$Mc6X8sknZ`n_ zCe}IvkS7=lu38%N5{{x}jJwUZ`7H9wR|763h`NJNl_R{Z9#i}njpHJSbfChL=M;Y( z4-td!z+hTOcFq@@Gi#rUwR0#QT;`^?av##g( zxIB*mJc1Bq0_0Ng*%l1FXfPZb>04jUF3c?pPyYn2k*AsOh+>_KXtjgX{`2gPN;B`p z$QYdlt}>q()+R9l>7jk4QW@FCfXym05hmLvc6CUgD=}6%RBFAlEa#gsGAdogukriW zDt(5`*tQ}$^k?FF^T})#lF%l7#5n&Jn!F)>2>EAnwhvN4P)+^{jGy|b3&o(YK$%QV zn2#yHDs#eq`OO&8`!(FPxEj31R0^Dh`PT7mK1zf46Z~-x!9ZvY-4`thvL8NM=b9LB zTcI%$ed+O~eu0%<0p4lFNHRyxceJk@NW`>I zrP+aSw2pgHCOQ*Nd|RU3^y1n&DqyctVxDBwgWsp?(-AXNt!*=)BGJ;=npwLjz)fyS zbk^8(*<^z!fT0H1zLr8O@DFq{4KvcCo+stmf-*mQud~{FKlJ8@H7h&CUpqf5fcQz$F%N ziS;+pZ__Vtfdx{}F6M6b=SpZ>C$O!^Hp|{>wVa=-K>;dtrRq^ll(WT(7YJjZKM>Ud zLj%JD!|T^=9PXo?Ra_!f%Yz|2mE&uXtfqwoN|muceC^h*HGC79Q!4&G!Z ztRsk1qq#3?bhFh`xe`K?jTsWQDt5-A#L6cblhxbm{Atb=z>0TnycL7cy7^-+e zKALD319@Ax;f^?Cc_Gb5a93fzG9}j9$k|CAS`T z45r_DF4xV=1#aSL=Nd1bzj)vgMHl$`zmu7*v;m3*vyo z;yH7P%}NP`uB%#%CETB?18`6tt5zx};iwX2|2Ji? zESB<1;~=CFf0#Zk1}1dy)CTDG3p$!nCs35-SC~ci z)bdp5dRW&i;G~Z8u_`{gH*m*P>1(`lX-?G$gJ}-*m&>KH+AajeB5zxMdMP$_Q7o&x zEP*A_UYrJFYnGBHq!UOp{xbC!0CnTPk=+(cDr64t#WA)SpleZ%9m;R9bF!%0TU>JF zPh+&sN#OZAQQ*-4c)(cI4xm--_bVZNUmxn)krCUQFGjjz6cA_?QlT>PDl!v~PeT+6 zR@cC6bSjapJ47s%wOsVfdJ{3_djantB*Mzv%ayI@OPFfJr!5I7V=I#64aY$--9yOJ zHJ1gaSFR)rvS>B&2Ew{BafD{8;uejQX{@r-Y9YeI3s?0q)pi(8$h9N-oQo+PPoGW{ z0hcX0=jFn3L2=HyftyT-3 zw(b@*Ef3Q@ZfDEWb0gI`-Fv##bu{VB7+aWIU+(3h@FY%A->mNl9ZuB~L)tXF7ow_| zJXEPx%yAUa7wCMEF>zQ9b5C+nH$6^P&E~k`+(t^A={EzARxf>2wAnFm9ku2O4)}o^ z*}bNQ^40o`?G(w898t4tc8}lBEBWupR`a~e^t7R(L|rd<%S38y75C$Rio8#xKalq& zzn%NNXkWaDm5M}LoT2|+Ofj;>RCYGdVoi2766df5R}t^xGG#7~^2+hXb8gg|=+O){ zVq*Ftr;p=NM7(|)@%riO#arm$fRJVJVLPs6(F7kF(`s3_RjV%4s|cfy)teKvF^7^~gBg0i+&j3-I;$!SMtX<{eW~ zMM{nhi;%##*LnvwBn>*BzL6lh<&E=ZPiMf2H*)G^Y<=hsnXYFDS!o`53 z?eay!I}>pK@eYisjGzcgDt#VrFWhHz`ff2S7{(Fgj>;DD)g{CVl*Z@bED6^){dC^I z5IAd1-0sP2e!}0*`ZuyVM|lMfE`>sNp&OHv-w4PO?JtysCT1J>*b;{ zMVY0b<@Y8ga$CKXN@+T;+;Y{|#Uf7{H5B~7)9A@fu+qecu#A zqTh@yYsI3}IRQT-7^qm zwSg{Hw8yK*G7=^7v0Nrjf5l0oVs8j)k-sx#XQeP9Df7rO3p_Vv%e-^ zL=MhbgReM#>S2I1EmkgW*<1g{d<&t&EbFkRw#PgjzlYgiG5w%4Xhp4ZiL5 z5Nc@hZD-Ulcf#Wkn%Lg*Y>o1jGkk;fb$aOIJy2^EYd1p!Rzjt`R?gR)$QgZsoUs}N zNqFlNs8G-lz|ojh+bJgF6bx@zlW@dh)0$r$bcisseI zwsW9vx1#A3S3I@4Avh`}<={P<&6f>k?p!`9!g8hQiR`RSq(<*d^~gyCpQ_a z6~F9lQHW4BppQl@$Ht1{nV+a|K?4KEhu=Urcd_CvhdIty8Nm+9A~_tGK<5w};2M4s zngF<4dni@qc#`iMTjA8$(6E(Hn1->E#k~x^=4_pcvo@zo?uM&jI?W8u2?yz_BcYGW z&lY*WOvpZ4`nW_Nv_Ryg!9>-v+VfL(*}KdJ+$CFiTW>&l`M!@{8z^t{LmWEz28S|m z*PXRDylNzRfmO^_sotG6z%HCteQhO!i@;{y^&YPwErNHX4L>@Vow5tGL^#OEpqYC% z?dn{~G{b>@LnX?Sg27S>>H%>sH24jJ!UzMyEoj?Xn{!@Ua; zO@pOy)^L0Q1Y|U;2#Rw+4L{fi`-ivJhMb)D{^TaZuW(u(mtcrG)*!Rv^qluC!?8IT z(#Gv#&JcO{*Him;M`L{@i6vz29N}4485&ujh+8pS5H4citiOFq+sr06860DtEgXz& znO0GUJvKOAA#@Ttn+8aejnz_lD9Esp!h2pL({1#qn<)bpxTDNQ5Lj9hi6KA|Joc}9 zZMHaTmrJ#Zrk4ik7u*Y6s+Fg0uCQ}`RX|hpQN*Wnc^;x{!QWWJ^E76I*Drb(%wVwG z(E%llO(Ua?|3Sk8IGCNE%4Pj#@hVTXnFQD17&&_pZwJ<8H$xi(Pqob;>@F=c;Exp| z@D4flu?mZ>;U27GbV%K%8xUMKpHn!gh=FLvefNgy@1Nm03*ikTX_Vhf%5jb#nFo{Q zooWM)(~$r{pDMPAxEZ+l?tVK*#$fxL#)GBO=GsDkaWRhw0Y4# znNqwN5Yf8SScZGNF-%$v&XhAO?^rogGW^~EJS@s^ESs^*G=&>1yrM=;6f!DnT{NQg zxdihQtYozSSuy0_alw!_CXcFvK((61?L$TggOeP(r-m!pe*{#@{+%{Bhy03?v;$Lf z^2itqmQ$D+oO|8-6X?kRbvj2U%|Z$KVZnK{&vvL z1WVONVYc#f9*TY^j`x!iJ#_1Blkm{kF-45b8QM5FF)%vVKQywoe^A%Gj^VDMavr8o z-7Ymihzt^+_T10tljm9%RZ1RrDc#?!?q+=qz$nJc#pHLczmD5`yCC*~cY`!{Io9cnRjm{0Z{LD@UN+pelVWTK(mg%q0Amq8k)$VY%FdrmX0irOdSrd&NcR2b}{c~Y{Ya~ zDn5;LFlnTNNq^hi+Ye3E)A`ivqKl%U_Fnv-A}y5|+0;eXL(SzN=~=ZBLD#g`BlATV zV}y=mKNx^jreaqkM&~=lMk8B!{Eh_-xU?c7NDqw~Q6F*m39_b(G>1#3Pik7F1KJrx zl9gwy<-A)~`&S=hw!XDY*WZmfw|2$lw}AL8AU^9?H@C_K!X8qb`kF0 z9>t4C>{>akc}wKRvBW06rbN#o;!lkM4j>q4U|qIje6Cb0m6>&de% z)!mcm>)xb~@!Av_KY znzQIWWT_3@tU07GZjO&tBS-DigG1`su^pK+`X;X=%6X*v2?q9W#Tl(Dl(JP`Dt$t5 zEJ8H`Qe*7(Er8b%lu1jvsG!x(#je1F44rAEE;^^3yM8>!@^8Rj2~l@_$CY-vxDM9< zK0=7cBzkH+xG(rv75yZ_!kUAY4utnTH#c_b6C6Fc_cszuId~@$0U0|Eh92H7YxOUB zNLdCZM0M2byI^BHCt*CMf^>d%zLd}Hzy;`)APt3u1%-umKz!uP1?_5I{*Gq)d3HrD zStOZg?7<^$ofToYCRk0Suz3>xcnsl|NVTJv6V?q9hof(?%4o2%7iF(HR+fM14thN) zN1{^M<)Jc>7E-UJ_eGfQODc(nc@kJ9WlQ7pI`?#@PbH3E?)*CmqU}NF9Z*~eP#PD6 zPnS7gx3w8IJ;2oWIYn9{mk0)o$-+Wle(6>!NMgDQLUi)wR&S`l>3}GgIyQum+rg$f z(Xs4Z(-al^*c^+Y5b^{r$sob}bi+m0J4xs!l{Rl0yco(QMmnzErC^qk;1@HUxzx*g zvkoP-OJjBZP7t$n)MfPGlJePMl*X%g?!OE88o~Uq^afJ>prv}YTU46*5oh^pz)uK~ zrVi9QA)XnpmdbYbK8}$+mXg>A@1!q>q#!yxga;B6KmLJ}rV~&v!60fuVI|g6fLDtu z-idahXPEcqHo#2;!*U*O51n@biY8j3{z_l%U}~p0m_W8?2NW35DSP52){>QWz{W-z z6TK_e9o*540LaYNP@L<(6h!(-$&8}2Mr20iHVS_7!9ZtN0yA|s;B-RF+s+-blAtOp z7N+87@La&59th|osDog@!h~!6qGjk&6%U?)S&-p>Qp~&P_Vgd7oO}-V0sfV#3kcf5 z*XV-u(Ln%I84)hX(0^oKp;SRsJ6F+CYA~r2hx6;-GHt8qEH;X)fFAe)-d9x;?!g~- z6T}>O7xYifyi-kJ#4ZfMV5p;>wvnpbO^RwmfGkbBdr`l#%(|Kj;Z%9mN?**Ta)_ zhDS#I&!tUoNTev^^yvxy%2|r5dp|+;lnf@)WD`C+jBv7oM}u`1A5Jh=)Hp|@PVJiT zc$l9^9FOoP(~(-A!22o|Lpp|mcfF(Xc&^YSV4NU2v?4N|@k61UtNOg4ptQNB$k4PL z&6|s+i@uUQGlPI27?)+Q+t94cOA*H5kzb27R=L^MzoP@Xd#vc$^lhtH!r ze$z!>PbHgWa9_5lTNNq_fUfd~=lei4eMQ5>Jbo^`U{`f#LP* zHV*eq42%qmbJdu2ZC-~dmzRt+1Y5ZphNy06C<|qP$Xn-Z_tT}*vtRtMIw=Psz6fYv z9Tm~1!;1qD`y8(~Rf;qxK|p|b9tM%rJX(o~XkyVp?g6TPlcv>w-(X2e=&4_MeAJL`J#1Zr< zzXGILP;=8izQ?m<;qSi@L~I#CuNAkC9Y!8miIqsB7(*J%lP($`Rj$LT_Wc23F?=0x z9*FPw(2l!73>+2n>aQ?CXOWxf#>tqYGEmrnSH#NRtZ^U4hRGak`>;>KB|Wcj`id7!Nuz zFx1~W+_zz5Y+t;qo{XsW2{h<@+0JV?@OJ@DAVgvTRZ>1^sO0!9gTwFoa+vEbPs7Np z47&dZq1`P{Mb|PDw|pNA!l0I!*oQ}NBb9_6mw>P0v3BAvnN^78Y3VgtOz zQ5x`Ti>V`mABXVLp*mTL$9*vlGS)}Ei4rY|Dv#BPe5OeB;P4OJ#_`_uv9X}2YN+db za+9n#A!^0A`6#A{;`9*&b8Ev|dnQ{eRGG^PeoE|#Pc+8x8(3$(?;n3bn>TO?QTbL^ zxQ}Gw{ma%6T7o{*lZhp(bo$t*RE7K3U?i-nai6!miJgB?eMTvjtloq zz*h*Oa%qC;xvAg`?A7*f@cu3*_;tV?1oN}WGZywkwah(A85r1!Y< zb?f%{?DXd`-iL6rKLNOkkid-R-T^$((HO=rBmY+Y(DNvmJFu~lq<~jBR z>`Gh3E9fIUgO3I5K@ja66WQ{tUB$fAvn{;7#NolT55dXUq!Y)!ym!018jt~&X;%YZ z!1i!gRoERZsOPnZSwh)u9P>kG^W~`XgdbON)Yk#7BpB$k>a}NX2yt8yQJcYyF25J9 z*;IY@Dc+`T=SDqN)+njlr2MonTlH*M*WY25Bh0p}9TP5d6N z46+~zeJITt7qvq;mfT@a!6jN3HNI3k+=s%;9_HL(j4evR<>^l&gRVU_o40{=0%kJQ z7{`Ol*+iv3^*k(%rH=!~Ca8?)b|W3v=5AErG->Q zE5IaW9e7I&W)$f~UEa7ZD*EOohO|jVk!fa$ota0GP5y!V3^S}JbahDFSz%B)L=%2Z@W+=b zNWXpD)Kb-+++edTl-I$%tsd$hTM?dS-$9($Tzo;I2`^QTk z_@8f-&ieKjs47+FZ-!*UNNM$(hh?v0kt{#Ajlx_j%~`NWVb{}%Om2#NH^8>X3vG%V zuY=lApCQUSB18l%mB!7pW{K$wCQz8HuT);BdDwsZ7qi0Ftj{OItWBkPo}-SlT}lo% z64Cj2TCg_D(K4Yr_~BU!b{`Ncn#Ok0Xfg(>!&4{0K+N zCx+tIh!u_IAv()2${b0#oLzD?>sTNr=Tr%=ZpZK2zn1I}hqG&TkCsu11ZRN$K7-)w zxTw}=JJB^eGCsoJ;6Z?cr-e{1>*=Nj2uGsT1kN###HZ|;MD(;1#JoN7%B{j`J)ft7 zJ_w&9sPc7^Q=EVMX95(!N+@e|(*GbZ9L(e{PRlHpr$P;-=^E=MqLF%b7+F%~^87aD zbSJ^wQ)FN!z+`YqbQ(;fqtO_w9m#iiG$ao1!(riJrn?LT&c>whTEou>1{^D_0lOa>}%0F#X+Ug%fsdws8?KDTs+-Q{E!%fp~Tbl zs5pb8u`OfmTDfF*?=)Jna4t;QY7#NjPi1BqUR31Lk%%s^tFDAnXtHMewyj-`NpU&D2c1qBgSM0^ zj|ConN02jqqD&87QqPWpM^g_FkA4(z2_Z%n!~i0#7Y!3-K};a&eVkYGd4OjT?uw^o zYIg0r^?wXISfx9FPmDBI21(XCh9t3IFXGN01K2_^aGO_FpdmzO%)oBjTg(=gj?$^N z8r^gexLNMAHI-yJ6<4sgI6db_VZ~6{cFf8z`vdzC z=EkzLkz)}Sj%%mXwwK|r^9gYnpT*KPLB3krBpPOOUlP*yO&YX}@~gw#b<$ zCIvXCcW_{>ibEXj?=#+IanfGttT<o#wa`RTNLim1+p& zGb#-q%fMyrOT@>F3yfobldSgK`e7sI zIhiB67QlObnYkw*cB}qAn+vF_G&)MWgnLL57<@gC;RJy9dr-VNEOqF4FgUZ{COI)h zRUNN(D2>B5yyL8(p#qlk_?=H^SWzn-*OO}zUrxUcP$6`H3*snNwqk{NH*_VLIiqWELhk;tK})!V$Q;K^a@*YV?~w6 z*V45*1j=VCP%J2Y3{Ss@t5xC7m?+k%Y8<0g3k0w3P%1@SZ5;yu+iY!#!i8*ILr^l235@}W;TZg zb0jw=QEppibI9xscr-y?H_$zO6hijK-8*h?j9h3vitWZMc}87I(*t@BS>qVsL=7pd zrbvSfhofv^e7;nw&Y_Bs@oDU!?K1j4$)gGw8%35Rq4iKi4}K;UFELT4t&Qq#r7}+@ z()5bon7bVeV~<1TlZ2V&&A<3yEV8DG-~1j+{c}Q0M{g>-3U<|Q;^@uIi|33O^V=@( zQTJ_A?jZFSk^t6qWfawsrloW=&!=-pYm)(5r?k(K0h6T zw9LWck>9UWv-1n>BCbH)tvFQsDcmwT2q>y;o>*hJRISfe!2x- zrknG+e7RCpbyDkYx9)s9$1H#4)IH3ir0xW$!D_t#@qfU-m+o9I)Z6dQ(e_^uvFSyTTr`)#-V2%-Kz52 zkHGIo+-zQgo0M*#;^|34H#w23%65D8ttW7e9tv1NxJGnNEN6?A85IPFVA00tjTkoh zHm~+tD0LR?oVs7eS2oT)+?}g(GT>N3Ox3Hthhcpl&t=+Fix`vAkLRa=z-AHXsdSJb z>v`9Xq>Z#r#kQn=3ivKTd6}Adz^nV*Ja5Bxdo@$P`v9j9Wcx$eF6O8+*UECYi)|q^ zeWLXh&E~QTa2%`j^py&Q>_WxPIT_*gf4|nCB{U}oWEZoHbM4iwjIpCgPZIg(e1QAC z2q+TFmCzm1biIz}!}H6yC!RFd;xu;$i;#p^J;V6iOsB4BXKrVF+qJ$smh#JZEB?XQ zkfW6!UYxr;GK12&WiR7-qYLG9scif1lYDsu-bPA2h!57eP@cep_7%Xb1d%oqz2hbI zZ2y@SzQ!ZG5`+C0LF5-U!Z8)XVKAYPp5+b{GO-Jn!?UBAs{=}f#EBc~$$$-O?^A_JDPqg{bRb0NW)JfqYz#NU_+1IBeLe8@6L zY~y4sA1Kb)Amr1qAc1LtccgQ`nFrOn4*=Dj_1n%MMs}T9R+@1IoWpx&QRt;M)iYb0 zr|(ZLKQp6T#Vb7?{poef!E}mnU}8I#TH+tv{u=;S6GT1`NOF;9r)rPG)KqcKPinQf zABw2T9!Ay#q@Be%Es2gOK+@A?HG+;g<%_bd&f_XFcyNcUsu7(n=^%THrNyi?V6OCvsVba!+6RVn?DCv^bOOZZ$ojugqs;qcQ`&6rBZD=cNI3B`)W zbAX76qg+bYpgJ{mfv|?TqF(~sLNJZm^Qn(fV4_=Z(yq>xa!$g0gR&k@v-(u~1~HUQ zOG04w`z-ik+&OJ`#PV8z5*j%O6zf|<755=N* z7(gTfp(dTLYIz+8e*xe_1oH?bk0D!YL-+}nZ;Fu@C_dYlx|HLs0vMZCFb%jJug%Ql zx41zR6*Tpp)!%t^?|ZtR{{Fi^_v@#g+&zEN$tPTGANK#o_d9dXYd0+3Qaohw#-9Do z+~=M4VQ8_0kNb67VxkYp@)D~s=ys0eRNa>Qv08L;`@Kk@L%vlpEP@^5LzaU%Nd1#X z^di7n1arfaccsEXKIjDIzz)h%jon|y5qn6$AWx_lAnFKG>LSZ%)N6uI>3md%?{|a$ zTqtCh0wR<`0)IzG^mqE>wJk&wuMDP};kI10b3J5tX>USH^>lqQR`bE^lwI)6*}CrC z+owvUf}Jg*ykU#ZLa`DLOFijTKf3NKk6Ae7dDAyP>HgK<`}wLzpK|4CXRhgAeAvt1 zcK>I;vTo+#?|#FVAKyE8$#GwM=+~dP>%aecQTCC4|H+kSzwqY09(u;gM_}OpCMtR+ zpqn6Cx3p=`AG0&@IR0^+yKoY}t_P|eVV2`&TKn*vp9pvhAr7%aiMuNJn{`=QNtc{c zZ|)F@=)+J4?iS$pDIAmMV`*x*-N=$Cbr+*iEh$HKyMs`5E)T-L=u|V@)^%{Zkmd!7C0N4ee9fd4d%;x7OK=_KehOPeaAaSR2nvgcJ=$=Wgl`g4eB#C-` zI7d238i;f|Hz-~{9-RPzdSz(NQukfo0?jr@`D4KQo??pY)E>@HMsH4ZL!>7+dBsxG z$E&ibhGYW+w=y_HU2}lf5@M3w)I-d*m*b^cdD;%hbjd|XbHVQ5d?7cTExS_dN0`T2 z<`Sl|ND$UD1UJ)$wGeDF+PhEg*%AAo$AEVX?40?d>|9_u;xS1Ea!MYN9WbTp3>+iK z$&V5XaYHB#q*=XSEC%DG&Q;m!7qZnkgT~I9a2Z^swj=SY+_Un6)_)ntd1ogJk-_pP z_OVWkOG+#oj!Gk))H(dIN{RFzo=23v=?0GF*-EvC%L-|_fD^~v_r0kef7Yq{fBed^ z7d~UxZ*P9oBcJl6ub#2Tn;yBx>ngv#`*Hhk`1*72e*PJsz3{BB@7i_Nz%Sl$M`Sj}kFL=c}k1y}>oIMJ& zKR>7P;`<*nJ8e4)?4a{1MoB$^KYj^6Q!4W$Aql=N++5-0#Mr|+9!Nh>K_X-BY85ODWv*dQnAa(z?qBHNgKL=EXSOJzxLZ}uTiU{u=~ zl%w6xG<@QM`niPl9RpDC!RKt=mm)C>i!OR#Pnw@q+>^onfQtuPznc}j#vRzH5K@Ef>=a7WyKM~l$#X43^Df8W69g!?43lP`EG zjkB9B-T=Q02IO!A6*o*)e|bcSG36zX*NXVAcb4h)TSJ1=`VWVP>Amh8nC?-#9Jr2D zs(f1LA!nn6FG?aRolG5X=iJKk>YJ;1@w+%#i%fP01CFHm$AMjI&tz+bYG7a^N8&_A z;0SNY0`1OdI+_8R6yh_z2KEu}jD9fqVSPp&gfI%5lGGFC@6Ck!A)$a^Uit&ZCW!8V zh5ujZg8R3u?u3Y=ygESF-LT`qS1cj1W5UNxw+=F zNtZ3=5u%okE%8J3)6rArP2kpktp0xoW*akv#WtUr! zwgA?j+;o$~?Ha7e~K5^6UZa-~8q%+QFFtEGTKTnr*wY zG_JBWUE$T8222tH0SWa8!*fxBP!UERmMNN<m?%;(QKS~keRAMV1XH6YjG(c4;-6)z=v5~4-SK<( zRta_*&+@wLW}Bi3KWnvl1-j0a#1&OxW^$9UNYlzmOwEBqrsmh)QZ=<9TYF)N(su&j zc9p(8&b>(O6h(f$EaE&{%~5qD@rSR|H1U7g{;NjArv?#YY*i z4Eie$9`IT>zv=;8(6BCHROIO*aTIroQpPpc(+t#2C>lRCj7jTS>iU`7)I#H<-)lbe z0Fsk*qCmpV8rd_gwEW?PYUJ|ic4j>aup7YyaizKfxgwik#%_v05@tP5#;o1SF;~E^ znF!PzaKUaiKF1sw)N!~-+NTXx|I4oXD3;{0SfA7f0IKS>xnI%2bI|*SwE=NLc-7&O z^i|=mS@l|Jl$Znmje+Iys2X$B`Lj!-ilbYn;v}(e2-HnaXj$i(gB6hzIAzr z8>)EP2E{1_nIv@PJq#$c{tEaV!I&S`g(XY!~ z;}aj|8GRaHZ$cp5k#{A>i=`u{vY~6a>Rmo+)Dd9PJw3&LSsg7?_lfuW?UenE>77t& zvAh(x_@jl|Y`z%nZ;=kP(IYlOuU(_h>b>{u-rbJ7xA)1_i=O(lcVm%yh%`q4&*3T%NiU>U2&8&;<<(1$q00|09XGA_g$n3U*_!Z$|P<@taQ5<~0O3ecz zHoy8Yz~uz#POw2&!!4@6DXk7|;J?>97NuM7Wb`?>0pm|YmzwS&L?D$l*-C!8FYIN( zX{~O7vg%%K!MT$4a~v{4R>F`Gu`lSt(_p$+uYxe@67iuNrw#80_)h12k4X>dyY=UN z>!UNo5MNyX4jo@YbMUkmTB((VT?pPAe61Ceu51|r-B*KlTz#|Noyf6pb_q-D@Zp~N z&Q#x6w}~OA-L%rB!!cg5R0rLf;8qX9m8I2{=Gjt@at!zGcFbGavg){q3-Dcax4o1c zfxs8IQ7;^cU^RgP-c~6&PQV|GRC&|q6D)Xu z3N_;8NRwlrH3q=vWMaVg1Kve2pN!Gsv?SsINzGq0Z?POoj{))dAV+v4phPg$tzc(N z)ivmL<%bVW{pO@=R^B@GvzkWz$Fd|V{?JsZ#+ASct{LF zV<*n|&g24p0q_|@h$D3`n#vaL?JwIIou5n~duZ!(GP%j@*v2_@U*VkSX@4kT8TcJ^ ztDhNu3FXyO6~fgZgUyoRDrBb+EmZCOMdnvk3{dwz0scpn&6+mWLrAf_wgtw^+C+$u zd(;v4{8QOOR}-r09%=2v)SO&4>K`MNgI)vOYlv2dZc<;6-@phnk#56|7qB<47Ccei z2two4Bk)-cx@c7vveWiht*9K`^lDp&bH^tDgM@(4l{)2eHe~Ta`;--l$>51*SF6fs z6|k0}DeK-@KLOlBknEO3^({T|If|9hyqxK!F!HMFfZK9}N|;CA;X>Eig=*H|bvVS> z1xMD$nq)%PrO|h#j#rI+XG8eF=iTeQ6uCXvUsW;2<16AGdDTU->!m*L@D&H+A0vd2 z?CFxtF@zCJl{iNA#KQ!K@mAdk_&6cb4X*B11sQv^S5I0A9n#hGZ&t8YFvOe76- zmWF07eMW;s6_5ydE0wv)OTn?TBojB9sZ_h>4p`&)Sp-Md%64;y_;rQsY{m3ONBE7? zQ?`J@f`Pe2+#KG`TnWNG?2pKe9dR}5wTlskM?DN0UmE5YUVBeE#%Wn8-Ck$moup6b zAA#qyXV&{qD|$Mhw&a}V|IfE7PHu`YUFu0_<5j{yWN_?!grc^8DeElO@hn@-aYdr<97a_t&T_2{w?EF+Ni>Z|nci{Prz|Sq> z`qj6K<`g2%w(f99rDZqJ3o#>D{TMzUk#7XfIA**A`8r8~gSm$QrG z0Lr)+gFvaWV2trpG7ZdR>{1ummWWeo?tjF~a{NWW`XA^i)E-?N#jhU$$P+}tkOa`ZL_;N0@66M{~!1^d|fOt^}IbJ+M#CM(Bp@QrTcskX$ zR(5!r|B$l9mvVewD1x2yUu-b0s5t@eH8I2((3Lmky!FxYR~b2Yn{%%Y8_q!Rh^Yj~Z|F?}jx_TKUdY=3 zL~b|5pt1_L1jRVCS5Hzguu}-`4$kOUz#9mG>bL>4L?a^d?bv0gD)RH-0&^imWu$$! z%rM@G9L}EribzN1VevUqwZH+LJi1U%bgGj;qfWRpBp_DKP)Ve%R{&l>5CxeKwzsRO z@mkHg4*L$)&$P-anJ@LQ`9MjzqjZD0sB7NJ`6}EnhCwLZigJZ}?B=l6Dc5bBwN`Da zcu7s51+~N4_45#U(L+%hc%|deES3|%X-b~(m2?D&a!DhLJZZNP*I3mk7X;t!-p9*m zT_Nrzm+qB*$9KQaDSB==fiR9{*LHY4l4FOiY$nngD>zvgUS;Kmb3cZu3e2cT8%dz3 zyULD%EGU$qD<_0O>Zh(@g6r5R)cQ~E5iJLFf;%JNj~m#dPH#;j1dicR)nY;Vw4P4* zl&QGpB9D#5ij&dU#Xg-yBCWF5)*+B)!@=ZQ;vWf@m?~|o=X0Ci26#Q8lb1YY#lSB3 zIG?w3Bh&cf?*whgkgiMfYZsu2?37Pt8xhCI3*5?-{{Pu~6F51J@@#y1W_9@BbS^?5 z$;T2xAPYVSAqj`PlI*p0*jmXZh=q)1N2{?`Gt11ZEE$_CTy{8(!C)I35X6CS1h6rf z!`wF}5U_zbge%}2#g^G--_1pV2sdP zj{m3?c#v5r(Q%@b?Wxs7=zRzN<4r8Vm{n`z8ES^7=rcCGUd0I|xKoKiA%#|Nz)scS zvr>n`rhah+%3eEWJXDc~CCtSX9wn&xEw5f0g{vs7=gmu9m%>tHa}s8)(Cih9YHTtc z$8zOunmY`DuvEa-IDF>FEM{5cT7L!aF#Wp@vsfB&i-uBj<#0EJnJ-4AkjzB9_RA=E z7>>!|^!75+K~<7RibD3FrcO_Z`O~y>F7?D!tg9Ii zN90?SrNcM*Dlsask6Kk@!r_Vxxc(44P)Bd$3sU8jReGNsN9RNXxTS|k;`sHPpq9|P zzXi&_0N5tFF6~~NeTb4X&KuS}L}v}c9pnq2u9;k&W1xGUgppDM_n&}j+0=o|k1evm zWZJY#s1Z?#pc?tkLw^H(V)k{>C(Wt$alQiD@FH3^24jovYIdl6~x)&Ckbn-(_*zzl=km&>nbqoiCniyTKmUgNc?hLk#)L!~f?ET$e`#16En`9h z#_$F_z8dETm?5otlYkSO2vmm+ zZ51z{8Pk!&9yo}`IRAP{cgN#ta5~2ZSg2TPlF7D9kPT-QDSpD|KvcIy1kY}xYUjX+ zWwj~?p`~+?6-`ewjut(3=tXJ+bnUF%1;p#n`h@geCo5k|XBw|&3h83bx zD7qD5SoB_#ghLnN7kZ)$B|}y@-Iqc-S@yZ=i07GHFg>&2|6g0U+NC5w2oM2=hbOjV z@qfP-BVEH%lAzGds8-LTjYMvP872%VM{>|tdAjgs?vBxxR&Wi8DFTd<9VRoi!QydPHl z3Rh%*!gzfH|5An7;Ew!vWHyd_Bpgp3#!{Lza;5(#hdrNlLwl?610J<^r7}Z11Ee-h znH?hKVBUOE>$LIl`h2_DZ^3toQBVgv{a&|3j{mguUV_ko1h$dagbCq`67H4A=3bIW zQtWbkkeuy8$U9K5_!i{L!?XQ1Uhkq%b$SQkVc4eRafkqbB@%oQ)My?-I7zbk0Z+hv z@hs&1Su>}i5kR;dp|EHKJ)4a8Z3DcPfl|>;2GpD-*o>pcF&F6@uvM-Cgd67_vp~^6 z?hJ?nVPaDk`8V3*F|+}6VF1LNj*C{P^xD$v?O$C9XnL|T7X%K*#Nf93ftpJ0kT8QH zaKnD*JgQLSES`ZN)B$+6Ku#*#_s*;9Zli4XR`{Uf37Y}v!vn6)_BWFy?p`R0vv4p_ zqFFTf-{{W0J(cOtkp!h4wa6h>skaF{h)Vji-UQjbP;?_SLU5x>vWJKL#k`-xcQHyL zX=YUp&?kKuq)I(w;mOf|SunbLA*YTt(+O$Z3?i`%*XyBD-d*+V4)AQ|xHK&Djc=Y;GOXsJusN#vkYZ#iVs5~KhmblEJx&=A#;H-@tFj(f_1JfTt!x?R4 zu{@P120ec379kn2$y!3?*=+r*&jV~7ni-sr=#dzoQ-&6P&w8_6_u_QmNdA^!uj_8? zwV+q-4lUUV8D0CGLo;~#8b8vxf-HYFRY5Bnm|_M2DswA-u3$Y>2Qm_?MPkYFDr`~qs=1;!j&8L0muP%Pp^RbU-Q<8ci3Z>oWR8U65 zlAZhnZ?3%(g<&lx?xuUd1mf>f9yKGfzr>Qi@vOh*mD~)T$N-Ot_gf`5AG|NZnYe*H-|-Tbf9cia4!6aM3)-@W@)8_&Aeldt>L8#*_9{l}Nw z^UC}8cYgoGPyX_Uj{VTVGwyfE-+cN0-+A2P$?v%BVaMZKze&(DN|usJp;LI|72dPR zQy+;vLb3s~Lwr=Sthp5B5|$!D3AQj%Tmzht?hdv9_HjZHqm|9?oB`w{n8<{a7>27b zzTXms5>lbi6%xHb`7H=Ao8DyyE@yCU;C5AObExkb#pHP^WVd|kji@e!bnDYmspA7YKMp}!=gp@?_1s*~QC33=pKc$#cM zp+f)03Z6r<)e$Pc;_wL=^M!Ca)*+NU!LwJJ%cOaW&eBV=1IJ_owzwOV06c~KMDJkk zZwc?B74-`845WV$yaPMh1fzDplB9V!HXw92A z71;Q45{mys`F|`jqtQ8xMg_M4+ti|8Y8;D08r}C53y&IPir$FwS{5r)q~=EFBml1^ z3W3_%OB0jMIbbXite(kVShVS*#01r84=i>@FEnO=E=!gecRx^4ruCN%LvZ4IR)^$V?)w*y ze#Pa>U%u?t-+%cpo$=L|-1Na8?0xpvZ`*nC&;7xU^PV>U~^!&$Pa`{)D z{ekD*?_WOm$Q$2r%MY$zdG3?Gck#@v?N^?0UvfSd|NUd1cH{P+-1>lD`ql>?{gRh7 zpD{f9Lr?tRw;yxm`;Yzk!@u#&t6zH4%;jqie*<0`(OU_)@K#p2|0)FHZE0R$k{nIc zlq9+Tm{g8I_|Gf!uArBToTNlNor9;5hdS*3C>Y%MW?VFdIsFHVm(|DRP1FmAd0|j) zUBPW!2Kt?H(kl6e2Gy@KxT{T=Z|*gjy|Rh)oa#f_;ueWNnAba-^>eCj;w!J1BfjVu zZpPhE*05MNRKvgW>*o!tO*xmEvIxiYM1l&Jb}H+J=HEeQ{P<#8)nlBHn3C`I#82Pz z5!au73+1LB2?sg(6~-L?hV5KsSFe59)Fh+^FcqVF4ThMuM_5 zR!$#Hk?%p-tlUL7IqP^QqXnr53JOzOxS!Ci(Z1z*aChR|H~#W@KX}xhJ(m+#f9JU$ zdfc}b?st&V=hH9VarG&iXMW-A=YIVvN}JDq^n*_!=sf4Y{^c<^5~it);LsM$v6Mzz zwKaKCBe98cIw&cwo>a2li6!fuQnDWJO1(OI&s%p|T8_@a0ClL1>X6^-&nbmhd1ux+ z{Jn!*W89jDEqy^bA5qWRxgectc}RcyM8|vDnVEi+_j+ou2Nf99uN^4DL2Q$?L>Lm>|r;O7MuGDX28xspmQgdWDp zEBQQ5#e~&XL9iS+Q^8w+)$KP}h(`1D);=}nXp+IqgdkRYuY?`&EAL#z5X9)dC?~Ku z2cCC5#ca<}>V;P%aMfc_Lq96vLVTP3VTEmsU1y6_1F`rV*PV`k*~ECsfEsZ-REK+) zd$df%&A3Qx%dZf8Mq+jpBxf)ywFxjgNq*#4B#ex3rSl*W%>y#`0yr)9G>g9Rj@sX$ z3(1d+Ahz1)SVE2ht9$ph`&w_Ug>+7X-;{%yc*=sEfTxXGg&K$KTIZ$=#)XjQ(6wYB zg}L?Q)SPMzVvv_y?t`EADa_{QKKH}+^>;xHn42wH>hC}j1^^WGIp$HJo1>AMO>bR% zL{@j0NaJ~X4i91BtB5U1F&NR${ri3QV{?9um*5}@Jt?~t^ggj16kC|kT)w))qQUq+H%(tZM)fSc2F+gj7oBr>UARqar#1c7jrL6 z2Am4gj|xN)U0!-S#z>ni8E}{};$@EzK(JWOBHN@p=;|Mq0MJAD@b;pHHr&W3A%xrY7sHR-?(FNYV>Vh>Fp?|u~d*8&uX{nR+zrd=tVx} z7_NO1<%2Bc?ocVtVNHf@}6dhcw7z3=bHg#RD+9yAtAzRu)?lr z7-igB9DP~}H5wo4 zIpx8=qm2j3kp(#9iklfKQnYzE{<+k$&+QENVMR-QxK}&4%F%44;|R6-iXa1!yO6hJ z9;Ir$6f$ERSVas9ShhTrBJonsK;Mj8KBP%lO(zE~ctk7{wRi#FhQi3&Yn7cig$Z^7YvPZ!hQ-bcV{9=6#zVpq=3+&0%tSXb z*bS?T5_|vZemt&Wf2p18h1=Wx%nAP>mw}h5k@MtmEz{4y|m-s zmELD&!&1L_esfuSB-}7sYYZHHEE=utv~s;#?Y3fJAHB(gb`V`^5M64wd_2smG5E35 zaukQu06PDGuBr-P^}LL8VpZG+QEet;m;lUF&Vf55APzL!(IuxkC)+_@t1O4<@MP(} zsNojZ?tqGY(;?`Ry3OUyJ^Gs~-nh~sqf z*w~aK`l{9HK%nz_dj>Oe^GHmG%pe$H$Lez1!_%%rZP;}KB+kJkN`6+gC zbKGhd33hq4IbZ>DD_SaD=DieejsSG@!;k!gmG1{=q1}$}$pX!*1#my6hu% zlfl&;HDPdusCR4_WhZwXaw0IwOzNvF6$rL5;>7U9W$}wfu>U-Zn*tHLwv8q4Ia9i_ z3}#MW?JhO@oo08#GKJ6Kz5{3@U;U33d#eybcQ5Q-P(GRZ54$IFa4KN$u7q5U{V(wP z|H|TV(FNG{AtS#Hd~}FZAmfQp3W_-5hZLY@MXFd~=KHB2xE;OTa8fk9JnL|@h;D#q zxA=Poyn7}+;ST294G-*ScTojhK?+c@R-$LAVqJ97b~yZrN?{ZbxC|pf84yCmY;Wc8 z)iz7xbV-gUFgep9w$kqN*ulx#sgO%E5lF;)p6=r!Mm$y zM{i!T8xR&+`{6ORx!+u3rU>p?0Nq%&J31!@jF-M}1Qw&UKM;Lc05`GodM}hji5F&3 z<*arvhf$31+RQ=>D~w|o@}fiFWA7^%!7Q{ygi;jtiXL*ZH09$+rJB3JMtG@9sAV_- z&Q!`5utz62uxeJEb}TJIZF&If{XhooI#ag#jU#J4jzvM4mux2hV=1UCnkTk5_M6uC ziU(q>xDEnHCd{)pI z@&T5cxI5+KW1u9M;{Ej3k+8=_ee9)mf+Du+;;epqu><=_8xsgOP6Tv+Xms!yF6WUb z4`azQ9dH9x^cHG4A5#mBFQYz!ecokMo+6`~M`59P#xm9Nqd=*+ zw2ua*T7i03h0?L%hM4s(hS-`dZ{Gz7jA?{j>21DIuFbn9 zLOLIHmphHMTk(S0CYGwi;r;>jM`Fh!iE~tQhJl{%EOn8Ix?lPowW1hBU(`sZuzSI< z@xr3h7xN!s^HCa(ucJzjIf!=vNs|fD(QDiZ(Ie?tntH4B@OI3{luT-0i z(Ap9U%~GorDIt7N<%)`0WUDP41%oePTUrYbMBS4$Qc8~g!`X1sHtfp|Qp%f9ZeaP8 zcn}mxQi;rK(|D+Q+7O+yNWEP4q8|OWqfq>havhhV(1r7o$+_u_Avt3r@=2z+r{ULw zEEU3d;D(WQ9f$m$f$+D+^(;j=7+`8Z$x=D7m*WF> z+6g@k+|m@;^MG5hrElg4^lBO?lT$zyC3k*fXMkjZ5Wbh&{Qw?LIEK-*zuqEqZm_q_ z1*9WDec_MjygTLu*BRb!XRo)ctuui+%9ibd)(YToY~V0bW`h83OaTPV64`{t0?J9~ zK^<;a=|PQ#7e>ZXYSI9lc`8o_>8HljaXwpnu(b60P7qJy!^Cq8vXRFDgUDom`|v^P zlV;)xoY_7s+%bBPFA{(+LMW*g7hwWZc$91kkCIL89$jryyO)(LeP_G1uM5TNGKG&m z(v`#Gc$(yDRHyex<%JDc|L$av9Ce^ajN0(GMs4`WQ5*jDs0~jXwc$ylHauCyjmy2r zgbm@ZNA3NT(fx<5Wcez!K$#F0T(tEWp(<69cUWosvi2h@>SZ!Kkd;zrzP&72PB=*rJ-zv#;MJm)#5 zz2!$2UHOjaqANf8nTxJ`>ti4I(Br-V^dgTE{uLU2nI%9ygk_;~(S{a1_UTNIR<+2n z13Q?O9wewSRpfJTG5JZq0fLcDVds+e4oa_mizwYBWUY?U!F7v26<5nIs@_Ek$4f%i z-$YjrWO*f3$b-&-18rCgT1fSeylKsD%jPXPZ0#hhBRUqP&hqYxPWGoZ54Q)~+A1(C zc+D&{o{kEe8uO}U-KDoENY;sU_$0<2PIso;9?rxQx1(C4t4=@pW7vgz@Mw|ev9^Kb zs?qgcRq2iY_i(g{E<p+#FkAPPZCGfb>4L-!#Y`4#Nl+xP^?nq*BT&w2eT4E z9A$D>jwInwqId87)9>TQt9YQy?Dj2|pr?SjNZPN*Mwww(fpqKm7Gmi7=;*rYjr}Js zc_Yg2vB97L;43nu(j!C^F(y(hMdCQ40umj?bE-=0TBCz8Jsc?2jUL0eXBPPZ z0>ci}>x!N3V*3yb`*?H+zi98Zpt53lNbgkgO}+j!1#b#sC4Iz4^5)D|aAbKVrZn!U zy>vZ41F8_Sr+QnmwF~J<1T1HU?-VAi$X#ZiU(-l{@ZCD0ihEz_>~zqo8qg z3`WzFULH?7utYl&w%0GE4=G`Ol6k6>YUe<(==B3SNqZImaEZqS5?JFc)7=hkx!&Rc z-|oPBvS022BfF%1`wR8;GGk}E@_NNOre@E0^S0xE_|NO#_JZ49`o#WwPQ*Wbg*et& z;49N8i^>SL9D&rtT~sACVu3#sqt3F33}%xW@ja@_`<}(!U@ol3vZT3b<Sb*2bkHzaOBNyMrS{Y|h^F_pQJu+;yC{u$ z1rCd5YEKYL<99pO8od|goh+l^9rkjp3en8Na--oHPw36XaMrkmlI~a--a?}(}J%F~Y7+Z-C*mPjk!WCZdKG zjj+LEjjCc(HsUAxLlB7CcUZ=`j*4R$;Vw^~SOTG7cJ(qycH zf!U3%aZ9JWzb)@gO((ymeL)-VCowESTX}slRl2~|2#v*DThvZ_rMR<=j^i2sA<9!( z3Ii_vtG27VzuP;%`}hOP+JkU_PDa0E&*#ycfN~s5Ra=-&c6#b&&S8y*Ys;e4EZk?c zjTuh53vjhrIPu~*(!Yv=&>GjIdE;ij=$3_x@Z%S-H;Haip^+GHK{aKE+av(4B5Cy4FwQKR(P-#pV&5n_`?6n-mwUxxqb)`Hs<5UvV#E3~F zV6HJL9=N&b+?8YVX%#h5)pSads43o{Y<03$Ur*C;w0y9=Xx8XiQ7qNB_FOU6fWSDr zAO~*g?CCfAhfVid_sxr~XUgE-2ZMvrEFJM?Q zGo7rNstAbH)-CQqnp80vh`eWSjkV1-z{9}T*$d_O24sjm3=N@!>?k;j@jJ$T8@F#Y zo1cNNl09WsM5m?X8)1LY)_KQf%}uRiPGw~Y7))b~w{0;t6m!@kJ|0cxwYAwtb`|H+ z8A}sSZ59aJ+hzfS>}VwIpyrsa(ohpmt_U~SLa@<|c@uH>Nf6dnSfY`kW&nD3?@HKr z_rl9eZo>A~x6yzO4gU%u?t_kH|(KmWzYo^pP7{h_sg zF!wW${nABWp8MhI?Zbs9{rU~t*S_G^FF)krw{CgE2hM-Q>wo6&wmtDX=f3pz*KPmt zHPN9DF70~NdH?yk4_x{FV}JgO?T_Ak@$)}=?(c26@ovXo*1h!|pJ@FIxHG;umOS~a zf~+h-B2(mYc3~ZXhmbvlnURjII25bIl;P&LiIxtfvMtTjFL27 zIyRM0J||iG$5JJtBW*ewUC+TjUd$+PW| zvAi|Q4Bb*M|53+q>fDam)AdV$+Gd-n_seO5A>wbyOZ7vPzh|i~6|kRUDv3>E3d~_X zKII@%@9)T^}v)W;1eOZ<^N|(Z`0dj2?qjw3X z5IKA-@wLklu!-JCb@J0;|NDYDlZtV3C8kEc0<}6wzKdCcSZV ztT~?8;bD(iH{9Dq@xsy_z>7ech60u+}(hv6yW48FL2+oSn~l{luy569ND`o~x4R zP-YrJ-K3%{@&YVF{EOL#iLnOUX`CHj*^`Kxui@v{a>B#q9dJ(?IIZ7VRF2@% zQvt!Asz$J@2pDDP^p9>im2pGgBc1M}oX4Wx^ROTy3w(&cdIM-=W>ez5rc+$_8li+% zNBA|v&Nvv!O!|g=XlwPli}Eb{AfuAy?qtgX)+~n^&X@x%=k61`DJ8CPnfov?h_ArP zRzfWk5NF0hD%r7(laN&=gU@l>&L@`PGbem7dISuG0i59xN| zbjgMnaP(KAyo5!>bw zg8n$2;hCN_YU53ZcbrugeHmS8Y>IeQIIW zgqe?!65**qQC8({-RG_x8bFqIf&r&I+MgC zHzW+*jx*YP8&3i)t7qcrgqDVGIINSQE4nRCe_4I-h9sd2j`$N4JCxcI?Q8Daj=_f6 z;)gA}GpTz(21<$SZYl|eE<|rafnP}UI?-2JB)X6z;VwBbD_me>RNw6qv|2>&oY@U9 z_S%VXR7KqLIE1bYr%}v#bANG4Z{v~u3Ce3&L=?-}6wP=|8z#~OY+Kx8Q8 zj_3b-VDJ(sbzpDdf$cy!gGI44L0mMu+DBw{6B*_bPxxu|j{*f_s29d_pby3+2`bH+ z{)DvE%5ExwLgB(Jv6N4%P{2q_JcSDQxI9c?@?F+hy6 zG0=N9i@2HB#L;XTMOjO@QrK7cdNSbRfP=}Sb=(TX)z2rSM*# z6A@r!?^GM4wdl~s-0Nm@2^NT$p$Em{EHH12^p_4oi_D$CoM%pSo@LwmcO|2`%ievbr-$-Sqq=v{D(Wf z{DVhd_v+Vlagsuyci|T#@{YEK-vG_MebYF;1b@^=#UG9g5=?biNH@qbT~`C{tb0V>xT78hl>vOF}PG*Y=eqr1q`p~V

l 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 m=%0&?aU<$G^}j`!6LU8^op_Vq$cOz*o|<@ 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≺HBzVwQ zY2m9lDEywn>wX{<&?6*%wlZS$rHHy@|KdbYN*OV5l(n9!RL9R$pd+4n;s2%JkV0VX za99eTEhQrc9y5T@B!H(l+>7`fSSokhvGb}Z$TlK6t$6TkRXHfP6qWf77N z8$uwzH(!l0`%4+Zg1I@06i05ga)h8#5{Vi6=$pGnx0yaj7J#~U2v@8F6`wo{|68eU z_Cw0h0HqE~1sOajKz%dK&DmiD43V1KG)fq%d&*1-fku&vykCL$)oBd zVfA+Ca1<;(ZF_gR7T!{a%#GfRtJKowPy*Ad#<#^?dKAi1EahE6+{r3~$5#m`B~)?0m@8+eXQi; zk*$0P3Nyo}LQzC|A)armluvm&Ufg#$y(i%)6M#Mvqp>NUFGIU_ZL@yu zI0`9x#Ud4Dqq<=%_hk*_wjfUV_R5sHJC*@K^ z+kPvP0~c`$OHLf97vVdoqqfesY8vS1#$p@409L6&FaTH4_~TeA#<$}L@u+%Y6}}P4 zKu^7X>S93oH@Sky9d>>VoNDYnD6eDj=4y4wmP2(|-sEa?(uEgeoTFqR4(qob@ICF$8cwiX2D9gjdQKf(p0b^8u1I&s0dNp!&>DR`|%K>j{E;w+LElynfiUIem|BoBfpQl!zJZG&VmTv!5bLOjke|cl|h(GOi%$N%v zJ?@^dXMH{RH}@U8ecQ?Li%uO-|MIzC+*WKPh3>C~GabGl!Y(lcoVNW9Rb%F8Xm<~HJ5DLUYBzl(%?sN>jO~IYgExQEe z*?^S`J%ysxS=+!^m)W_{OJVp-g({Xyqm3Kitac;)oo3SvCyn7b|NB=ku|8f6428KF z%bn4HlCDMpK8%czy_YIF3BXbBMVL;&=wD$mCBwaWR_($9B&rj~bQg=cZ1D4cW@yQ% z)v$}1Nr;b(fM4H{%Yn}ww-xa}OtTgi>)^cxSYm*!$a%tV7QM>nFi7>8TmjZ)^C!WK zlGb{p=a9TRjSKPeSl4^FDEACOaW}8qg8QHMF(XA~z+jsaeE<}yPl5szz53|#NGF2U z`Y!tEG2;L~z@#pch(cPTAjG)@og~Ngjm^34e9GdQVGsfVHcF(iu!-OAM$CGQobUD~b@K ziNXdEY!Q_M_N}(X`s&9bqI=t1!|^8dQ>IGo$3Q5XB6NT^M*_S#5{=~}6w)WG^=Ri3POQl#4#6A@dVyz5f{HfcGaO>bG&PU?2 z63UZUbi{}5bJeAS$^g~v&J-u4!FeFxGbNd|GB=99F%5=9fokaA$EFKinPiWZU*uAn zpkf0?PdMMJeb-EF%yk#6y0&B&Xc)q2-Se=nsvV$gg{2~-x?crwqKl7F*)$S#*lVc& zEfqoei!_zuO&P?Wq7V$=TCLI<5FAO@Q>bkK7rJ5+9v&_y^tKe?m@DC2aOP2E_(`}` zyCU^3*(;c{I$@Em|98BC)dl^JdIhTsC4RLG!4$oMW8Xvh0*j8KV8d9|Yh5$3Rqxk?w39;MibA$o#Ruw3~n!04V!5ga*PN9Ec<{};>?I|8i4 zAuBc0(m=zf1JQ9bU|!{#)Rbq*ZSPhIAz;KhOsoQMZ} zEtKD4xlSYeGy*3`=fE|18cGCRNpesatXyLhZq+Ny zVF5_%XA+e#OC?pjiBwEgGDGj(K%~mp>>S#{o zx-7kSw!u!P!Q;5Lo(H2gbs+~_i0Jh&)#}X6x5nplowUtSUF+$i$zV??Otsp96VLZV z9G^OHTqu{wcZ~5tj)crkREI~n{{)N4!QHW%t)ikepne7V5ck{1`pj*-&E2!Ob=ORS zS4NZ~qGZfv99Iz1p;361512=D_Rs;O)A^WWA)R7CJ}%o1`V3XwZKK*LnQmyHTrWBv z@IhlC)~+bGQfLs@Z)h_sTdBBTAxM`a z3XqyWWtnBWI59U%J9lU6)9Cz5KH~Tdt&{4|0O1H?5JfL5>P5=T^8O#?A9 zty@sAH&aOecsIGXRLM%st7J@qOCYc!6wJGhCX)(3=a9XW_NJwEsdp06zVqE_a5;N% zV9n*DOPj7eWvDa2MJ0k<>f)2MfM7ESEv-Iy)WP9=??WW~s6>RQh#iAm2sPB1p^>h9 zE(Ldj{6llIIF|{xBYxr2D1EQJ8T?;jUnuy`5z8ame7S6d{~$kDQlfbi`~COSpUWz- zoF7BFD^Wrd`_3iOax@R6i~Nbv06S47LNcp`$@}KogQyZ={6@F}S79liS%k&Mdg~A> zN0NfUaba~AlADv8Rj378Y04`3U@3*$D+5m`i_&m4unAQm2vJZUb1aX03#W7oVkdOa z04+{pTt%)m_FJK#>}blyaxQ6w@pDCdeE#nSWKTuB^;ak_VllfXZuXROI`BFD!Y)85 zLvWI<%e~<+&l0t705rm<^){@N98ivje;#j)D*IkE2UysJwLFxgIhD^rlpuIKT;Qso zmdj}lC7>MwIxVi3R#!PKET%$2G>tUEH9EH3w8dAC#8Q8K4IeP@^qvL1c zd0>uH^kaRbLbM;xx`OfF6~VDT2J2J~IxRnloZYba3ZzeH@LV5DSsG0`$B2ZtUugoY zZl0WH!IUxw!+lN9PFroLA`^))bh4c-6@r{3=^hLwiNiq#0?0`u#yKsM%eET{q4;q# z2s#@j+rVd5uo zRWSWU3|~mXP|ZI?l#ziLre{O29f`_L;+{mrZfsX&-c1Bm0?ZkIkKldJL21XLp;Fkm zZ-}dh>J=Cq!f8aj7t8dy8Dm4ILw?MuCUQA-+v96%AsE*M6ak%b}!(i0|{8NMK z{93#bp2#kMVF2=jvc52#Co>HmG`_iLb@{bt?1j1DxWvPvOouQ<&eheWQdSozO%1b| z5_3VGFl8hkrLcxT&LL66%kvqOkFZpReErCXq;x$)>?>UTG$@#Oeo{nZn%7JKUATUS zLg(?Fp=^t#6lZACfC;(pbW-xR%foQJ7evZhL&-s5&hc`XqkXv z5<6n4h!q3-?d8%$XjQ{yf}5#E=eM%5-K85sFEld&Qj!8e2y}G5y?xY0QI*&~WnQotH#tlE^7FV@x-i~01d?xIx>{{?J4U(mgAaPC*zgw!aKv+tr>_ zqILOvvZp{wQP&@7;JW6?!!R@ra(EM)=4t`%2b9aEmd&X?nMrkLFuBbVWhCls?6|38 z(nWCB29}6?Q(V1?@h}%Gc5JngZChe^@p)=v zbyR0fUU9<9`ATC8yaU_U=L*mGG&Y$&^WZaBRKyZmjqQ!DF!%nu4cmXEXBZnZi=*() z15ksN?Bofqy1I*ww8G>L+$Vb)-rO#}hi*3}r~v~jfKB`uC~$M*WqLVbmkAd={2}=l z7_2(Pyi*EU=d3{~pO(lG#81F80FEFI96|im2vm~caoqOahG;wrwlqcg0r*m)lL0LV zqs|yUK9}#*jU`hnSZc2jx)MM%a603%sa#tU6o3J3U_uUIF(Vc_dJG5#Nsx0&aJ^=MYrKfghNtI zL6(@-%&m~2v9iHZOQW48N|HQ*Y19LyJX9!3=CjER?dH|N zW7~riB0?&ixBYP$iBT(+DI#jH6ANXAT^4Z1UCW}rz;3hJ>NP4eCrs3x5i9cKAzKmA zH!!Fl?(KMMFf93DrC}vrMm7tAG6LaBKQ>y?ltv{3pLdl}J3`P+U@0*sIi| z?aHS+!JanXf|Lg!t{Uelia0*5!77%mw5;HJi4}1RsYHNlRAMafQ4!uKY=@1d>l2lh z2_zuUBXz@Zz%?qM%t{ul+9`Ppe2&@xU?8-qk}iBvkx0PwqvCeaje}C1kk|pT^$Iow zthcqa3*+W>r$GgVn#PDM9E@jW+lw6)b0?CmX$LL}2>$1^nahQ6Vn{&U&DLul1uo{IptHeW;eaH<;rd_5@T0(?I19O7o~Z zm$)XvEb0Rt-kC;Zxm+w=iPn?e)wjR8_sdTYtywv{^|YmL9=YtmM03-(ne8BJ;D8K@ znDA(1480nLsk#hOfTQL?#Na_Y*Y5!A;bbVF`HLNMrS_}}JXZR0eJkilXSbi0Pi70V zLDOTk*~}<>fxpvnE^DAXgJo%nax9xCHW@psPjwWj$`~Wx_Sx~Bw=$pq~N8{T9;oE zGj(Z9BWLJdO*!ejf6U3?@?2V!`R~-g&R%kYlB1(_xiUa^QLa zKA$GD!wY4LNDTI*M??+4*3bP}cO-n;I4o|UG??ysIk*EzhZ@#uMy>_2W$WZ&>W`aY zYJsy{w4R$Hb9rqrp|ob{mLRp4mJh5;KZE^dz8&sI;&tXNJ~l@a{PkasBn-}pj+a1P zELC@}`Dh-FprzH6i-3tG^F4-KL_q9$L>goRKanCUZ*T;(I?qA6I5vSkc|ru131Mt5 z1>Qy3qQPn52G=U4-;*lX)MB(KQn3LmcrVU!p*U)BP(hQ6!oQT_TESCQD3IdWkqL{4mi} z>@+A4WfwcXWXXyGqoIdbyi9Qjqs(HXp`eHE-l|8G5QnBRQWGc>jf0MQ?FD6bER{i& zFr`>O7XvD8i+FwgNgYb&C???Y*C3io19y+yL=+-#aPK(|MeHP4)@RF@Ds}{%CFqQR zsN;Og>CE-6J9bt!@i(9jm8IfZnJMJhmE}|P)c`Zbz@N4ot{>d}<)}4<@g}AY5Gv0H z1kR=CT6nb8#)V(u9DOP!$k3S7tB2V zHI#p2DTf~QDV-kr1(uiG+puVUKJG}YNy%AOCO9_F@!x?v4W8-6p5_kAD%zPydl|oU zs8_50$j=dyHr1R9LsO|0~A$Z~0NZYL2 zGS0H$nnZpH*U=&!0Tli$5R~c-p!CN=X*gZMIzoy?m*@h1vK9fJtC1bY1Q9(x(Qjn^ zQQNy**k^z#J(mygtcS2NJBCUXvz@W)oq#(G3n87aIxKXCP61}-%PW=8C{LV|E>J<5 z4{Y0ds%2aBHN|#!iW1PE=}$xksDTI~vow#io45EXeQ#w)>V=vVOWg_nSN$6Ru0ZWx#n=Bnq#3 zFmju}f^sSr^SCf*O~0y$;cikmn+Tj>bNany%#KbJsRj3vx} z1{+sI0{OkF3b$3=j)L3kUvoVUkBJ}Juy|cyd;?P4F@iAn$bdW#2CcdS%1u~Gy5un1 z*xD*0@uK4y5XFp9vjMmkueMDJ1BfMIP=;6nT3{y#HW2b1FpP}SOF`7c{{-MMz=KEz zKuSr2$7atISa7aQM}Gw3R8c!2SL{vlI0_&V*h*;N4cMIi1|&kv3>^LZX=5NcQ)fUH zM?tuC8zRVscL4*%jn4d$Mh<|n+X%Ogwa^?q)5my1hk4)l?gX?+^ zB8+39bYlraZhJr@6XX`ZJ{Wn8&*c{+^XU2lvOe|)zmsql_?|LmD{J+JsoBJi!nC0Q z{SrRJGl)R`?(#dPZ@y&mr<_2}fzkRv#9kjTVD@=MtJ?Juttk8)U)3PBg`}|AEX1Is zlbE)#q(B2y+dwkBfm(uW#muVh2vseuIynrw2di%`Gv8`+%;CaH zV5pkX>4Er)rKxe5Unpn{q&~i1v=4l%l=mPcO%*K4S&ZUKM|;Zo0GBLC2d%XW`GAQ_ ztdyiu&V`uSgajWmB?q2@;H^kgA(|tL^U@O4ZDm#!h3k>Nf!U*r72kgYr3T-2)-&IC zozs*$DLOF&4VMHS4&>^-^Erv8Jm2#l!4j*}IrvP?t)|g!A$;t5MF{K2BEJD8Ar`_=6oL|2D*rR}eU@JDJZ+CEYL|iCbV5I0@-~Obq1cD1Fv3JE-rO%XlcR`Z zCfv|WSZ4eJC}(3)(^L@S%N0T7BE=*iTyC|YmM2_VQkixd7TIjlj;eom_)^pk!DM== z8abzpoO#Mf0EnOf(g`S%s;dSRX|#V)cVK8}gM3>!va@@~ei6{RteR4TU9;dg640Bu@lj&Eh!g6oObqPX^XhVtil` zkdcyL-QF_VQ1C3XUpz;qpgW(kNEIK{2&I(}ibZp?JF9m`1HsAmA%G9+AC=|w?7EIB zNn{vPxs7w;66&&r1y)|C9F&iu8NGq6Nfg{L4Iw*(9h}vj&OlDKS^>BuvVp?hC9bi3 z6^}gud<$X6fFYJn3kX>Up$NPXaKTX6tm=U>4@-dh#igUi&jy(5!om@=PDh1`3=qY~ z;=6;Gml5`5N)9f;5`T@2tojPTflPk}*~>6)Hrc5oFA_%AHIopqI;Nm8l9J1miUgbn zQY>R-SQu4{N?G9W`*P))Iz5{hI*F^);prwv)07!A3>8yzk>(HgnJeIs>xn?FRWPu3 zW)!&3af4g|FA`k3!B_(9gIxRN_olz)_4}P5RQz`jqo}g*}fJEJ1 zMlUScpv?$UyGuL~vJ}Khe(~OJ?ayrfF>20o??_{l#Uvx~S9#{({KX#2aXn*s3aN#~ zQaXBbGP-@*Z0|JKzxdT~PO%f9EW{GVCV@vd9&0cU1d-_SJ$C{TBo>oG?sz9Xy*;p!^(5*x8`V zztP#;5`28qvyhJ)ume(fPZ0SpaWX=vyWInx_C-)Hw48A*Q4YN0^7s#hy2PKMynrQ& zg93K2Rwc>20m)W}bMU6y0YSyEeuP$~P@+}E2q zR6r=?8tsz2HVv#Xd|2T{$cNL~p)@mgY2kH}G4BJFuXXu$iUQOrL8a#4$%?VOMM=R2 z$<8wdb_iS3D;67t_AS>b12sEBVnsUT+L*EfkxY)qvV-3z3RI3Guz`$=eV{s| zEe8t_-j;v_*ENtsIcT|7t}{tUXDpqqq;1w|4Wy6#)@q>SAW*D?%ec;RB2Cjdh?dqe zkQnFXbmmhxbn+XnI|&~~k`KdCrom{qoz4=&)l~*Y6YNp~Lj&xFUx?f8%ti-DK5Lf^ zCI$om2ld!V3~md4MMfkE;1v}f@#Ze?Fq#{3Z$Jw-L{{_~D3@Ug|Mj;N2LVPVk zcP_6OVh>5%#r$h+hc4SIW(-r-;gE4vZ6$nan)u5b^`K#57#82k0#pm%RYhUKqjHPU z89my)SR4T*J^{*TEO!LUJt(%;*y#X3aSLZ+wLvBJQ>9V)(|1yPa-%31>6iVi_8I)+pNMos zEVV|n$gp?{a;>lzq2RNaE@HZ&v$MO1*bN_lf{(*da{Rhr8X|gwo^WLNVJvkFQufDY zV(~tfHxW!eHMZi+@ePPG?YHyrCANd_IA?6YY|~X^wn)dcPESON*Jb5ou5ehG%*OWMXYf≥{G3 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

S_3?24Kvj1G~{ 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∈`KVjq{`Tggm{q}mzzum*%k9pnG!S{=1 zd~)pf5Jcg(}sb6xoG;djVYkIC=99sT|P zJ>+h&KkoS-mEWIO*#Fjx7DLE|-#!-|C%^ya&aH!v{OzOs-F^Kw`Tfa@kG%OePgB6e zLg5YDx5)2LU3vSxw`}_Z$TRJDbj9!f8+1RFMU9Mf8m#=KQwgL_xbx9Z;=szwh^}dB@#;!;}1d`HO!g zzxVC;r+wbB8Wv{w9d^Pm_d9M*01q>T8~Q;>b7i_jO;D@8$Y~Prmbqr(Gf7SZ!8tPY!*}`R5Ow zFV=g^qwkjeyy2z)z3!>kUC8|`Kk2{a_czVH;D@h2mv}*d&Z!s5@AIyF@Z4KhiTMm~ zog=?5_|E5l@qeeki0kk5?lJj&;T}tl-udSH`FrV_uLj>&|NU?O{XWvk<2@dBp8US( zCvX4S(q#kuz3`3T{wzJ}E$4pgWFkuu)AQ1+W&Jg!Q;xa%9eeQiX-k9sf6J4LZaeGf zm-F|LAHG1=U;Dtk^WO2(%lZ2|?*4=PzHZN_-?`-xCS(iqt~)?}uN?d4{ZH%t71tl$ z_qW0Kb5_1?(`llg6R!%+W%!GqK5n17fVYRA9=u=oVJ1H;_n;(+L8U7 z_2i-V_8xp7f8X^bFP7iWopRUgKU`Ph?^%o~RK?a?5}K%hf(jz2K~yk8K#GFTBm@W$h)HN7=(4#< z7B;(KcLPL4MeL}kh@zr`U>BYQuwq5@fml$nV1M@Vtk@O*bI#m5x6HkF=We2}eE+iYtlF;QxgsFYi##4Cxy6fBB^1=5EpUnG7$737D?$_~zdF-4Y zxcN5Te#6qomhZo;5A{5=ohNrza+uyAN*kI z@?(zdLiH`@>v;Il-NEp2-xpB*-~m7I_L~L`eyG=cd?nrIJ2AlN>^(2MclV=rbz=B! zTv;V=zrB6eUrR8d5&ZIx(&w|irhJddJ2zAPxYaFr`&YUTuJ3orK~!II2Ir&hd9BN{ z`(JtrRr}8Rraf=}`rsE=-TQis{xI#Jmw5eqIcM$l(H%Kd-_WiVum9(>Ki~V)zlx~- zkk+sB`u7hk?z!fiH>tjGTTHKCx_@QptcR(-?+ZG<{rH^N^kqk%K=rd*>GbH6CH*eh zHungs59j{G`}yp|-`_cV5j#H%?!J=Oe}4b66Rtm;;nh9nU!vD<-`QvP<^8Fj$>-_g z?wWUP`|Mp8QvIkID|q|wKWVpN+AsT2eajd0bNJ&K!%|)Ly@~2)>@}CS|D)|wS9O|D zPWAKlovhbiwrRrRZlJ7#-#I_?{ax$t`tY#orO#7+#o6Pu_G`13y|(eVZ0LPW*b;JJi0<!P8NL1 z_T})k5ApgvKe>AH+Y!dkEO>MauityYA&Xo7UPk?-PCJL!cewbnpJvT%L-pBzT&>sd zzV@&Vx3TqRT`-H+cY6KykxPGPd`tE`eqYueaOm-GZ@Po=S2-7R`C{#Xdk?K|*&n>O z;5TvOF}$B{hczti(76}Yw`=tz*rqVEdJQZD(Ge)Ajf<)h{r-J!1yP18Z~s z{*SGBdoX@`_M0d3_Pr`EUVnCXsxg&qVa|;+hpErf`=WFw>-+9LQ{SKw}Ge#`p{p7ti z;gR4p2A}%mTXX3d{#>f>TBo-!xcK%hua$mG^)tpa@^MGpazc5xBN^Un{q)7WzBu~q{+FzJ zl-gG>L(>Qy;wWu^QV@S4`BSsnO)cNe#X63IcREfDYfsPqqi@6 zbHq)53~xpC{y?0!FZ<>DGp`-a`1a~{oUW~%{N}xnZR^vG+Mo4Kh_^rardUU$7Azyf>dAFG0N*hdvxpFe)Axz?|L=IpKC)Gm+ahi{ufl={m34?{q(M> z?xX6Sr23PJ^?jc{bn+#&9l@0cekDUs;q8?p$2|RDTSo8xcK2*vUp=RMcQZ&irudyePyYwgV9-2-3FVs!bOy1u-9?BHYey7ps+-|AZG_a*j5#lb5N zVdEZBUCrCax2{?Ea_3j6|NJhTpIKY?M8}0c<)M|w=Nr3Jzh9}rdo6i^+K+EBiuXT%@USnBUC-$3*$;Q(^$R9VTz%YEFH-y2r*b;7_Pj5bteNxR zA5_2KqH}rsi?e_0yX<4e&qOcfa`)QHemMWFzmL9|+LvAbGH-uHTSUws+X=Tv;k z>ld#$@zXmOt)cqF`SHIp?A2wXa!>jIGd&Hq%PNw>O_y3)@U-e1PcW!%T2h|@rUEi-;)+{*c)c4ta zEPeYE-u~7*o}V+l#W&P`;7vL_@0f9H)snrZQvEUSuj1|RI&fU^GgXYQIOBL9uV3Bq z`oN_f8UK@GXutZi(Qh91<&V_Q&^z?@Ypxi*=IzbwzK0u+=KXBg_wy%8a~R*%dY6u8 z?!RSGwg0g>)KA52I$nCH$I#**S2Fo}z##*9KM$R^^}^UYH&Xk(eP8hUXNnH{qf<}T z-rxCNUjM?zK4qW%?HOv{>kAz|+uu6<@Y+i{Q+;tU=Wo}(H1_I6@0`TWPsz4-c|WhN zn~?O)I+fZV(niNWuip{+c<5ViP<@*Yd-L`mTzkdLt}`mAK3J&Joex%3j2tohE~@w6 zFon1O=+?QpV0`#~Gu!a?pY4Cj%Xb_diAbl4FCI9uIKgNHayT}+9C$eHmMhR{f~2g`=a9nhJQ}>HSqeM zuG#$E>0R0RnSaf%y#D9$hnLTK^>G^a>_Qzrzjn-@GvwA1s-JnnGraw;qrTZZu;+bL z-){oH*NwjWUS7Iw?I%mTfVo>;~4Rb#su zzsxD7bttBnWl{AlS@M>DzDU-vz4f6&(#oYDOcw%*XMgLwT>;Vt2|UvFdZ89$NN_dV*& zvpURPLiK0eI!&)1o7lA=!suz;tTT9h-g9TqTG)&6=YxiGKBsYT#inkf`}ClGdT#2- z+YhciW>UY;nH<`05H;!1{qu}we$5MUd{)2e?kr#BG+Oi|#15Y?>9j_lfbopJyZ5dt~ zHHOQTjic{4blq)dET?|vZ{c{Ov2;V5fBn9Z;q%z~3wb}KFL!z5^R0}|RtCrL`m#+O z|5g44>!(|{n|OW2NB7^n>f5c<|KL6WUO)Mo3%)%r%x3)Qea1`l)vW=GUbrQTvl0zJ=GHlJ{EIm)>}l z>SIH>exvc!MR^NX4`=d1i4~}1+T9>`StP3&c2lD`;VKY*I(9R-j*c{|DUl< zhnsS9zgMoBe<-#0E$4W$u{v0}$FW}zqx#bEXYhU^Rc+?&5nDy|ZG&aJzBYf!{IZgb zRDWped|sa@A8^+h?b*4lcyTkYPZq46z5Kd=Qu}cw`uR_NIq>-}hsUY@kY|_j_Op-d zyx*a1#!>x(%k_IVXUV)@KRGEz^*QHqKDM!8#=V^zrf;YE`8zou*m!#1tUeco56qz;nA+FuwG}TRGitylm;# zX`{|;NBtDK#Aw`fE-b^TPJ?6{_z% zMaQ>GPj7QWo2iWMw>$GB-u}8azr1@|;#_JU-J!2{MeNeG*N`coi@zp{oM1@%4QY|6an7i9FArt&?6i^dOO20TQ?RPCCPM9Ju6~xc zfAW{Y(yMMepX&P#*3a`(d+&PrsLq|JzTa^=o_yia%f>zMKI1>ndcPa*XZs^o^~Z11@8ioCY)V@WQ2YE;d#%0pU!Skbc3-TTpYwHvqaV1x`U!S_E512JYqxGxYH{0Rk3Nd} zNj|)j*N=JmfwR8pHI3?1i|6wCv1>Ps{q%qbsJ?CgIlO+{m`^&@T*dg$-UsXboS1v( zQ*R7p@NE5Q9&dl*l)cV)xf|niiXP|u@VW_S#d^loPfs`bX7^RA1gF&g-XLT+;sYYIZM%f3lU=hprqo zu16JvPwJ{FUavfQ%BF|6Z=!yBy<5)fs~&iu`mF~~pnCtWd+_?m?$U|vYgzq>$9nPl zX!OHRJDj-}wGTwO{Izb@?{D6B@FIry#($-+H}yxiv56t<9u4Wh@!Pukwg=AW^YFXW z&p}le@c!pM{a()tuDF8g$4^_q>l?;)?sD|vyQ#j`0O!;H_VvfP4WCo}z=aEV`+1Wl zJ~?m*yN^Y)xID7%?C+xgs_ghHwV$-{Jl=l(Vavidzr^^@_Om#iT({uZt)bFEGpW7u zq`qGl3=8km0b-Pcq7@bz47U3c*Zx4sa_IgsjmHFn_bFMYl` z{Jls58R*XySC$cuyxA{8h&~Gjt{B6-;&dL`x|{-`rS2y?MvmF ze!PCw{_os8{b|PEj`)Ss<#o5bFtkUTH`#nn?#|_fb$9ihyQ=I}hTm#?_vZbqdA)s~ z?K>I$8qk*WQR~({aN4yC9$|E(*SLYa{e34ae(IyyL)dx?IeuRE(71*_*7OZg{j~M^ zec2Lw^wSGY-$?a`jbFq2d3o`c=XTaJeAs0|7O&sYxU=&69SlCnY`y&}UoO~Z#ol{R zKeK*5nzw)LuwVO6=sJk%d)$0KuYc>Sp{F(0FQfW#sY+h|-Z}HHp8VUlR6k&5xQbzh(KuUWzFj87hL5U0!QzTIAZ@#>?#r+zyAlhfsO-+i*kKko~MhY#te-``!e zGcJDUK*lFTcXNJn-L6?@ee=!G3hJliOwKp1`@Y+4SKru|>7@_c#O0B7KQFjmDL9Mm zV`bN?`MQ2x+pA0WLC;Y?2S2}x*Z+2Y>vw*B=}Mv z)(7&=DA@25yQd@CUB%nC3i!)@ol!*XqbFU*>sz<#u;8cepKK0CC*o`KYZua&yRVt z1Jxh9;33}sk)?aq-tZ*DGh?@n;Pt)6oxGw;`x-GBM z?(g=~DGYyB4gHSS_sM!~{LpDXQ~OzSpXc>`r*&W0@z=wse#8+2czxcfo35&Q=ryWu z`Pi3w{k+#Uz24;)s_#8W;q}LKuI#hpU$;?xNr~S7fXVj`?Yo%C>AspA-hSY&HXr^v z<85j`^$L#X*AEHzUU=qbeW^Zj?SZ`g(5uHR-m!tf`P6p&o~}PWzwn&CgP)=H*?t{v z1y!deFT94y#Uoc-#QPaJV#)Ojr!YLZ_ivkceQDLoMR(3%bavvx;k^FDC*n(PUv@S1 z@4Ms+USFPA)}rbccAoqFP{HdbwF(qm_C1p$YVO{b*Pry%x(iNR^*i;`tHW=+ep*@H z;QIGQQhke_ukiZHgK}C89@0ql^>6jy^;JuX!LTrw>SuhZpSMWQ5AXl`3GY+=%(t%P z?PE9W`th(6RQSBZ`MveYUhy{f^<;cqUGKKM{k)zROgd%e>(o!q@rAuz#%I;U_ha|7Rw&tsE?%$ua zFWfwy*DuTaaN6ioCsY3gC4cAjH)VbMUhx7}-$UVi-TIqHzV%?wPOP7y3-9FZS3Pk~ z!3l3CsGkm}>+rno`X3K(JV>4AYEEa@-@bV1akW3cOzlhG`H}aty5-8!QN7rDM|^Rp zUVq3>Pxk5*qxL7Z;{5RXHSuqH45}GH^+O-veBJsr_pJP|!`7WtANj{Qyq|kU-}leW z3#U_k|H}J#{rXe(o)_Q2>f>R~53j#>-I0}Ne>RlbkGP7<9qTup(dqWasTWcGtOJJf zexAPmho$>{u$=0r6i0admXB_D@z5HEA3E-0RG2_>UOC>E`+m1|53v_WR-P z!7u*^eP2FZ+V<#$ckV;=2fcnWpU-D|bUnTO=?u;#+jTtr)Wh9;H_>Y2T^^Sc3ghku*bt)b4NXM6&rU-XWqWu zal0=(<7*~o<@-1vyP@6WHj(lj?0j~+=ri8F)9P=Y?AS6${frpAgx4R?<=mc!AO0KF zE8lTGdBcIN{dX@fVEBLZ-@fAQ4?KBm*Vcm=|3B!y!+3r7j-MRS>Ujp|yrDnq^|xHw zY44ZXQU5&y3wixvJ+}|fdy2uo|DpfX>jzDmb=mtf`+j2w+`cg}p4y*u#5P{ve_PjE$3DUIGs6{r-!~ld z+xf{~hIgm-$IP3?+YdZy@NvIf$mqqP%ZBj!V?X%ts@>l&ruKs$)X&LrU9ar3VHD#l z@@I0qu_6EHM>kwC{sd~DXwUi24a4*Qal>@XU<$vz4tj_8Kl*?rzxS9lkm_4*Y2@`| z`rH!xvCAP;-%4rF>%+f{J#}$Us*el~^7^s2bZ)uxkOfr#w==ZrKQ@$p+BLj=4dat1 z9y?$A!-nyJMENPZw^I9IU9QpVkNjS_?MbTkb^egksST5FDf#*5i%z9KOn-^vy$w?v z+7Fpl%kEvtubeJyIAz|1Z@V7Masnz_3iut_0xH3h>sgt*Xj5>kDNvI z(c6CG_0j!z%*wlp?R%focIovmWxuf3A0JWs(MO)o>tlDncko$NjDODUypz`_md`8O zc<1NTe$3gN4sJ+p9awYC_OqydmhV8`KGpMvnU|^ljYYe6@cM=?<{#7j)}_?GLuEH! ze@35=KRWE&IaJ?u$nCuT?Ao~(p1J*Fsz13w@BiHMZ(V%(K8z2k{aME+7yg=m?1_UI z+>V^B->-!`pWXA6;$x_vmb3NqaOtUse!gznPgLJ&_doc!m*;PbcNo}<>U)go$?LDY z{>wg%ZO2l5_Uy>a^_hsoGbwFQ;D{RuBF3(m9n+(;xD?>-VMc z_zB9j{pzTG;0rn&8t3QKKk?#)R6nWbEZ+YE!zbS`;C+V24jXkcuitpu>fq^*F}#=i zn2whozTne=mwx^g^)vm&y?Fa4PuQ`(-P8uE@3`{@y?$lm+Opo=slLZ6310uyO;ARg*ZvDm zt?m0kK)~Oi0MhXflzD5coL+gxXOWE|mH#98lqgU`2vVcSn_{+bzGzc?ntvF;QIAh^ zNoK-=MlqZ@sb*|<%K%LQX4IJWko`Z3PkRjheLt4;p;x|uO{|-J92az$#r{HRstoUw z8A55bkgcRtNSEP54m%hIf143#csifO@}NtuR2>dEqm>3o!vfLe1xih5b|kJwBD+3V zX863XG`RgPc}k4CC`J7Vz|F@zoX#i%7iz7S}jsnJV3 zbB9ah5)X8<#(Ie>q^2%mRJg`N5K7lT0d28=kvWtef<)~?OH-lnOvpE5I!(d*O_A;P zU#dwG%he8s<4cX^%mZ3js(Ry%4QYAysKGAnzhQgKISb4~7*oK}`#JU_6l-(li_R=x zoGX4au6D{)SOEO|82TIR4+XgSU~fmP;cIEdLlsIg1+l-7YNfJ1tR$SW2-u(|DYRmJ z*}NhF`F|n5f?-HI%wwG;UF1X#{znZ|?P!nxSZXqdtOjFk9u~gbWd)H^q7bHng)hTM(=Hj^w^Qeiece;__Y9M*p}r;UO_?czYL31<_04f zz}*VcavbQ=1b8mD3STURY&n=X2a|76`Y~gB8zOG}4!_Bqx(aED3<*|^qiC~}f1*>G zHCQLXd+^+?klzDPECLpGgkFY4JJrKjtQjsDal+T95JdPvwv|}0CRU8aYV|am*1ua( zX;ZKzPD}l5Z60)oy|_O>{O{xEk(b{Sie=Q1UBk}XGR9b`(if2#zVOwTbmWVeDuAmj9$j9!Rr&~Z%4BZu6jNZvU+ zz;bhGaEd47nJE9HEs@p${R?m_u7h$VmIoy$ktRw~(nBs!;-&F>fy2%u2+*NmO&e6I*|Y zp6h{3X9UZ^-!t0rpZ;Q1>s|sT~AE(#VM8rq_}0U&)?t?KNHGqEHY-2iZ~2~ z`Y7a86FH@!NCG~E1mO}G+Wakkrv4T*6DIky6bj9PNr0I7fSCENOp8en8oppN;0)+S z_WCy$GN-vqvxL%2roUOX;5h)uQ&?VbOhszOZ@9s7a~2*xfgpNa^G zT&GtsS*C)6!S5y011n@raUzqvX%=T~*+*pT_atUdO)9_-Jq|!YF<)3l+ z1LATyIkyT!VpBeU>ss+Pr~=UvJnc_Fc@T>^&9=Q+aC|BfW$K!MAUfEnF0pxKkb+Kr+7W2 zZ%4+%Xxh0z5O4K*D0gE?d+Nb4i#z4$=4U2W{Pkz}0h~NKRGxu_o)fTV$zoNJYG?v4 z8#&np@qId_l5sQMP(AjGzl+THQ9`mJEL#wP+}W|}WJP=|s1=gxqsx9-+z$f>+%USD z&^#KC&#bS@RRN5})^@C6{m78B)fpenOF~y4i9Y7YKJo3LPEd%(nWc|-v9+V<2 zR5Ru%Z{g)xgp6^c&4MUn`tbT#7)_L!+9fi1QrZT1#uuyg_sabrc*6*T@OY?hdjBC9 zp$=wLgJqrUC1k7)KD~{r@pAdFJ^tzuYN&GDfyJ9jCnze~Id91XNT!EsMvWRwlD&ao z!k08EDW7!r0VB_QVHhg z4sPJMH5lYog~g53Y0o|h!b>Li8Q*9Oz_0-rHc;irHn4>Gx-(HL2TP(wuk7ke>uAH{ zk2Q!43Kv_g8T=hk3tn>L+%tKk&(Ydoc+jq(A*JLe5}^in;U2cOWwSax5#~4HHb)3) zeov07dc$%=z;i@xRRTDuN8BBd19pN_xs-h|7Pg!7kz_XNk+X0?DRSVP ztdRM4m_o~lCqy$e=dF3a>QXh+vcrNc>^Lz%_JqwmgS2GLV1Z^k=D!{HihIp%fP>)b z8ltgl$sAR?41WCBQ+C=%%J`SYBReB6K7B?w*LWT$DxsM&Jf%w;K9m=}GyS`1TDQgp z0KAO;Gg=du>#Q}gLJ+oryykKNnulSzmK)vF7tQd}Y2qrvT>JIIEd2aFa ztB73;SWA>%sJXP8A?HrWNly+>xl9qB4z)7NNzt!Hg_C(~4k%H8(v}2B$P4my1U7e= z6xVCFg`&oXQwC;9RMCDsA<7We{`e}{tqzQXBjqcCG8Bs-6r>VLsJ5ae5wEYVsjDXx zj34@~kwI7qzfp)Hra_s2MgD%{w^jb@<9?irIRh4LHsUSYB&{e}-Qv_Q|!Io(~cX;q{);u&QJssoVqy&nAq=HD7EdT;3PcFT zNL}b=lh9|B$q8d?@T0M;!^=>%Vew$1@r^dWo2`Z27V|(H($i>RN+k6p>SL)$t&&>^ zi{zRg^E=^MH#HNN$H<${I5`90Rmg;+p=7eE zHkE4^)GpjV8V|i)$U&Rm85#dNaBv4dS8WyIF$L#$brp29AS75xxap$J=Rq~Qy5$p4 zKTu+`*;@HrHoDlb3?CK6>TBW9CsUzVihpZ9dsU&ZlABWIrg95Hm1E*8Op-&%EoFf^ z4%&oElvGW;66D+{93Z?EZb2SqDBzG$ypbw6h%I&4f4F!hO6_zdVcH73KKukvj6^HL zp#&XX^Fp;&Kt*hx^LEAu>|C05i5+1T6Wd{zl29xJ4=kHd62Vvjcb{Z#Nhn$sPt?K{ zODH-PC#F+dxoL>fXefmrm~NwK+59#lB%Pa;CL*FsOVd7JPPgod4Oec zY^I*GG|gF7AXtVf#k)0ECq-aSRM(?>pu;&)dkw{^rFaX2{S6fgGU%5vFT>(tn#M{i z%HwyQ2rKSXnodh0DGOXn$f;6|>ne-KQ}!r=NTKnn=a{f$A8eb{i?Lt_BKnH2H?5{D5hXyK}G@)MS^9ER&r9R*j7S6o^ zKrmC{Jxd@V23(h<=}=pCPUGIVLM919QBOA>NbB8z50u13VURqgOr0{-G?ryS@Fk=E zB-UZHlEg_=x0x(b>MjYaJ*|nB45Y16;cGEn2fjhYQrn0J7SEQjAmd=j$D(+{M_ge% zw+z%Omx0-pKrAt_AtHQe5eCTOsh%>`ejSKlz{RjIUe_>g4p1Hw4{shDg@%WWQ*#?x zg|fkQ(QVS=ZB)NE$qXF$>Mm)3D^o&%b#0(#K+FJN6QUL8j+aU$jc%({r)rTtpnEn8 z2~w{fM#jac>s+WEeW!h5OJ?7o9PB`jaSA%2d;l zurx@-t3k3$mc)U%jVDwO6nnB+jDwT<%zd7b+PWy{Y?vhGvV-a|H0>apoqnPB&?g6ix}8HB)YNcpa6CpcnRmUf4ImMPW(tntro2o3huzcj?GEy!Z#SJ>h zjSMAg;27rMf05V1I?G@b$lKQyIZvm?EW0W!hIp*(=a{uUbfVMKa*DAnFB zf=V+AGva-5!mAEQER$qS4p@UBOHt^sVge?@hydkS+#nD!fRfV5gaUb6JB-gh649(W z5zwrJQ5_05i5zNK0N!6L1i2g!xaw>L4j{5b8u2rifl%deC=gI)afwu)PCH5X3#DgOEnddJ1l`|4b;evAB7!*&}{V2Y{(WT;m$=tad>p!^qSE*|4(Y zIgGl1X98@w4Rc7L#9(R-$02~6Yy@d|e3)C%GkwZ{5V}Yv8tr5x6CkI;3?RS2MEx=( zS^nmungA`Ne!;F#I%08Vn{n6omLy1SEVj$v`dPy+FsLO7xC$drB1+Qb(>$9;4aC5( z@!+Hdr$|XIp8@LSxw*+XU@-u#PXc7e+=@sls#F%x|Ih=BW=E3f8FZSGJ3;#w_L4Nj zHEFI&F2P??Oa*ggB~hP-kdt@}6XEy@wrbA|Ur(?e0Net$a(y~FOn{8XQbqQJpiG%n506&lhf(bad1Ea64h)PTI#y?34d7Zh&PA2+dT2If zs&&mYxYo+*DQuSYNVjXQGH`l9d^5#Y52Y51emty>t_Uu!EwYA{5zj_*(j&F3@Y37B zK-%v##NIQZgt5GsURQ~X7^CT20>A`uTycqix8{hm5nzb208dj9s;*WlnLoQUy=+!N z3?Pv~{yLFqQmLv55Eei&p!@3(<`q!JVDU^+u$Ms7=xhd52?q7#gY2T3GEp%XJrd^( zh}_wz*ocIe*VolWnc^Gf=%0+&=_M%m0N*n#>zTY1IIapW5xL1Y3xokTzXwgpYY;6B zof6Y&oDSh+;9hJT?Qk_F9jWg%T-)EF+=fL42S7VtmKpa@9I!KPa1JxpX{1Uw8_H`G zeVbNa;+L?upZ|PF+Dzr>G2h$eWnH)(a&!nKpJ9Bs(+)H4$Mh(3Kq903?s{^ zKGG(8Hr284KT%jhFbggoyyF`9E#uq2r)ZNQOh`H*AXt#+gQHcihBoR5#g}51571E` z#C=x95mY2bOoFQ*>Y$9XU~~tGLLEhjViH9%Y-y5gICLCl=S{ixC(t{GCA$bwS)zo- zx6-1%6aE9`wev zvZ5MlBv#mp*pX`l4jP1GmoYUy)|yG6IUX+~eo=j(Os61>xivm)#_|S$BPO~P=hnxP z^&pyoIG|MKhEf3X>GdfHCaJ7+VB{V4KwFu09|=}uzx)q>o=gz$EC&$Zxl3B*59?|f z8>)vmni&EEr4IZ8H`{*_lrk)Cfq^Enil#M6Vg!;FUh3cqU}+qJ--($^YcO?*hSmm3 z!a%O^)ut)-l_mN%sv?sqm+XjS<`35>;h9RJ3L}B$fRA9VT9F&8k49sl1kIfV0)FmT z_+KcX?gvLB`z$g01hldLmML}g#sTe=kt!Q(Uh0?ToS1aZ zY(KEhmYmlm`bVcbc-2o`&sH~kp25cvbmV$qo+;Re8}*#0$^|hTTMLkq3BFNbVHzCG zuBz**gtM&L!x&05YM}Pcr+`mZ8=UQ+$!9i0S6hj5qYlb}s;-m}qwO)^(-lG<=z6(- zWAX}>UleWuQF(~!OGXAKut){7-FlOKx}%3PwHA{fvZ%1pCCVZ5R^_>o=&e`X69>jh0U)|)qu2v z&ygyXW_MWZJdj?!A!{s$-fU9Hs(hGvWCw1_NxEO*}y2Lfs4WlkxlEfBcN)Zs{AxbcPY(S-S(e2kLtvu` z)Hs|lcN&8g2JRABAx&kdu_J(kY0gb%&s2zxMTou)v(`XZK5rfg>1>_Nbj zK%$z6>Jg9QEdWTC16TtgD3h@`UwA9-Ghi|7r-d^EMqg^&UJ_MN5@?UGCCeRvJe3S5 z9Cl0V<~%(eDQQ_Dgtium1$?2#ff<(6UJ@*;WnMht142y#o!ik3$@Fa&YLg#J&N1Xl zaoz>mv7)A{_DntmfvSwLb{?KE{AGx>JHwY?Tl9Bmj(`iC$N!X?ts5fNOjJ9xElm|p z{?k-D{?-f{e*e9I862$jwkkswQ-Q}rn)Pmywh)--B%Vc&c;6+TE%unBF9QIv7o3gY zB~TzNIC!oH!O7Q_csmorKt^ih8cHE=(H!vmH~FwNml~YVnrU1d5>}NDSy>==gqTf1 zwC>XvMWgK+yDSUF0GFj$()5|g32`utwv6C7bFo)7L52Mnw%}F2aG$;iB5}+4^i9ib z4$Ru@Jax7t(@F$iI5Mbn;1M1e6*D^mVJo6{DEGZU<+`nD!vraHBbt!H;|jQxS>O;!{<%JI3nk0W@w8i6z?c z$k=#Ch4n!GfUS213qQLSoebefTZM=5IK>m>0Oj1Sm}^ixn@pTfojzx66Zt4a znQW)SKhnN&hKX^7;9sSg1ClE1p9XOh8D$LB8NlCezh@o-#D)$58L_4C9en;jW^we- z1!zDdu)ofO?X^EbqQzCl*vnDu0k*#!I!&`U1m&%?w;NZhV4~Ap^zJBEqAV-3=IU`v zns($1jqn4Q&%>jbv0N|#ADvBNM}MtckdD!3^YSP?;4%OhC>Qwf+4iHcq}Mb;E7NZX zd>`Bb<#8;|&Q?}5P1b(yU58y}OPI6k?7cbV?UkAi9^WNYUHSwZ&Dkf8J<%Xo97~Of zfb)JR>Wm8c2P&0j`NPsMDF*UPc4Yv?p3dZs51|rS-AB$D_SSDyAT-6%O#%kZ;Ik%~ z)wmEtsNwzKeDDmerWg|MWX^d(B4I@OrjkX;!=rmZN)UK;XAL%SiI4Dzn(vh4)O4V+ zdmVfZapXuSCt&eFq>jN3TDrcy`EQ_L_Vh}$r2lC)bAJh<*fmgY#o_^=1E9Sx=oz5m z+MpZn3fFZo?LY|>cv>t_lmT^V>5>}HR_{g@WRSh(z2-90>^0fsBxN~waSufGoY$#y z<|E4{_(-$cGtWd>e*u>%kOFZ+M43|<3fF+~*onlGwBKQHCs5n0-&yXRN(@cv0rO_nLDh=xatEh>9PFa2YM&gL58_hpy zLJ*1<)mL+JPn`EOvBb_G?Xw=9^?>C{UxP1 znk>}|%ds(%Ps)AkV4bwfav|%dbtG=vk5InC;^ATqhW1U?+lo?*y(IUi$!)&hVEwI@ zLb)7E8ti1y;&5kDUw47(+Uu4`iQ`P%tZW3Ngu(=HDj(q-L2LcaE`bx0E4DvNo<1pnfjQZ@PWnfDTMAw08t$QOyUrimQX6y7i%PVpF(R) zhQv1rK}2>Eo5ewg-;BXmMGb)*!i}^*!srs{EX7#Q13OG65y<)6TR%3d?VPzf>vslL zQ2w$Y3=QCr*k}E+nAYdw$Z4G@Pg7v(z}elww1E|g27a}LV{DI3^$J97j zwX)BJ@+I2c^2|bxoKK%=>U?C=?QlLtrjN}>PZqpf%?@O~rNjxUv$xuKmv|)cgz1<` z5I7Z+G2H4rD>~LiMniWJT+35Q=Mls&P#S%lLXh0;^?2zDbu@{u>l$t?@>jr<+<*cH zMxO75MLwGmg;nd`fdMIX=D$zikjNm)5=PVi2mLVvkG~7@uaM8sw+oBt|0b#$@d-x! zIN*`dcVy3bDnjTq=-BGdWa9mJM!G=R2g_3)L(@PFoWr8W;a{41UX9ah1We*Vz=aNE zB~07_C;4}HeJqUG%%5zImEc|jSh@p@vcNAk>kKU3&DKW@P zkA1x~?&F+Rb*a%kV^n!K0Z&w6N;WU@q=&WxJhVN=oG6ZR9(wqEkcYMdJ+#g9(6+CK zw*5V{Mbx>ceSSte8?M#&-x>)m3iH;}MTs2ilc{(uzBiv!60eL@HE1qAEF~my>P32@ zND7Qp60Y{q8@YCmrDQY@W1Y64bK;EbH4fI4HhP$MVKklu357DVD+xUvBq)?XVowsk zx$d9jEO}bz2HkjtMz&?P$UT@K4spne;6*!LxrkFYdRx`8fyLBqp6WuaKLA|=Hbo=xCU zUC>#UJ-cd?p4`xZmN!tyF%2F1KRSJWF8ud9T=pa=rC6j`9&i3iQ}N~ufdX#+{{Bxi zMY82yV!o_&2mY@-#sIj0_j4-e_YQr-&z}!K488#6A6T531}leYu^wSxK?zD@BH6RKL*f(UDvZ`1 zyozuccOd#b9tyfc4-j*YYZ7NYBvXZ)Omp!;G&Mmue87K&h-9G~_Kv+2p}}vnn@HxC zk^+KM7sHfT5*`gjqd{0PP(FH%=6b!I{!TdaC^3*LBfZO(rgyID6GQLX+-!;AC#_08 z0O%1IXTv{YSiIwOglVuDNL;hsuc zRw}1O7WrDsYcN#V)|7J8nXXz1fkhaXz%itQDo4Vq0B5O>a~i7FBs6bCoSP%y{Ir$W1{E&q93_aW`T@DMsb4uCOzSbBgDJlt z(_xhV%*4$6wcLsPCVS>HRKOb+$8{z0+h$ZBtA z$|5Xl;DAV372)+n@6X-&T^>~iFOyhhC{f95$@wi_TMl8Tp;UcB$&X?N>{LxHYFbS%8^QNJ zzi7=N|6!-}`uGj}=EEdftb}qs7H7IB(0uZ6H0gY?yLSJDh7$?0h0=p=1CjW^Oy}g$ zw3&v>6B9jixHEMWwlEBaL+9qU#58k3+WBZ%2eM(gWb)vvAO}Y){S6}{{gDuLO?npz zDp#lap5;%6cb^#dAi*}^VFFerlxWbE=@NsH1Z#G%gbTN~#DFSfOze&P(fa=+0L)wN zzay=&p3*=&mAC zd?d^re_L=dpF(*Lizg15GJ8sAN0zc!!5ji!*yz>H9R2WkVh(WJz^7>Lh0rL66gG-2-D-B;D7twVw>Mk!V;d8P}wh=@;lBW)6=Ifb9f?T}$}aA6TqDYyw)* zuRDWfmYlq0ML<@!G|`*xaeq3@V|kZJlkfP$Ot?A^=nIHW;>e?}cHABbzc6|4)K(GobLXN)ny}#Fb2$>I{A^jv2nhZ@i6VBoz_{N*W7C z(Z8D*ioyfYoLaps5!j+j-5^{Ub}Xl8E+kirg`#@z81_}4Y#Ira5ZVkdWYpIU^2Bcx zi7`MbslC&f|CP>Cf|(_AG1DldtxhIO;t=S?v#S`{AeB!=nEH$IGr^E<^8cm}kxbS)OfpFxt zBu>ndeS`gm55u*jL};jRXWSu6%#o%MKJ%K>*Sngvjhbh{Vc%#X61*?d=sxg;Pm+ZeS!DZIj(->995jJJI#&!>rGWM0FXF0^c(R^+ z(mDLtFaYheVR$Y)s$fqu&K$QALCYjV^Q`yVj8Av~hytO=vOixoh zVMljj;&3$qw;QO0E7FuhSPlqL#jir%8i#3dj6t+QY@~L_kctz!ZW``!Scr=OE!%NJ zIkJ|dijD!qY{C4j*`H$lP#T|&5Sb(s5Rsg*n-V+>Zc1P#6mb3tgq^KbfF211_GaUp9kd zhlG5_2eUemI?Itx(hNIufjT5o;OFP7!s3Zm>(4WKRx0_DnGdVKFP7P`elT6o(~xtT zLfEpK-)S&&4&gRu^}DK{0%zG|UK&jp902*}sTli^X_N_?Zn6_lW?-==@g|;t5E3JY3WisW+m3lAVY;v1r`p7h=U277|bN z_+N2iv_=rrDnixON+n|%L`ui0J9&LG%K!t0$S&}P*#MWJxu_?Se*y}1r_N5EbCqOc#3gW*i1m4GSI$!$ zj^>VFW5d) ze`ExeY79n~Dwtwh=jB=Xx4)W^{g32Hn>VOQf>&4hSp)Ei5Zbx{@Es!$EMt~!2?KyS zkkJv%JIn0sx+XH&>ibxDPhxQ6GBYT%H(UQF4aylA*imSZ)eio58Q6V4!^*zF;$4B~ z3uG$DNC*V7ddH?jJo$FR#?licL*c(ew~>j_M1f7jA2lY7{ow3EPGN15sc7(zaY96xY4{*W_q5I7wEs-&uOzX`24 zMp_gG(+(L_C=h@+I^oZpOcff_%)-2~X`_Yqg^&Rf+}YT3j7T+{DWLO&?Yrhv(VoDh zd*Cty{@SFy&xAfzV0`Q1$xxI44l$w#@iU=d(CBP0E>n;V0epn)(vAIDRPRr;5d}Rc zr2dST4;LVP{0z!Jv1Fv1@w<=&H5rMAaM^Wm0-XZAAhStMaV;pJXX}nlFoG<-ffeHK zE2JD3L79)mJ9fc7+KL#MV|}Bd!2uK5VY|PC;P6SRt`g!hG9VO%Y@nrffK|RaB5p9WZLK6b8hyeN+kqIw=u$v zKYz>VvDwSJ72^4Opxlnd%Mlv@A2i!*gC3|I4hz2xxQP&L?1yM$|Ab6HkG%vk+x?8b zLK{~LzJ2FMVk!5`cy62MUE!c^yENN|&;iI|v~^Z{D6O%`qB{I^PZ9l-)qp)`L+9Sa zyb}tpn;B*X4FPAT7m_lPYAhxSkA%dbc|0;FcUM)>{Hp@~RUv#z7fIX~Bz@yjHTaB-mfQ%P4Tr~3 zqI^{FP@}me;>je7kx%88>HijnbT|qz#9w2J%f&gu;nE!NY&7AJI5&6FF?|LX!au;H zEDRWQWIPHXVs46hQR_}iK-$cOb!kS-W>T8-oS>d3#ij|~kQ0C{fG6(}R^ow^a5$k( zb`22@d^&|?V;CIqasx8xgqWcNlr~tr@Y?OvR?CA)nJ<#wb2{0C+L*e` zDFkqP2@bO9P66u=*$#i1sM7EOv28<=%3I|q?;!2Et zB1&D}w&3GX=8WmdR3a2sQ_>h!Foi3WcR zOKwLv6+sCY@vV?pqG6_GO0qtha@Nq8z>3f?0F#~9z+HGHeuwfs7BBn@d&*W$jVdZc z?G>m0E;VTYp@2qjWa|_HsEIEys>2h^7qBFf1bslbh8v{eOZv$tI8WfHk3)F?i>t7O zHhDlt<0v0YC<*~YDfS$jlsq7X!2FqW!M>+pC0SQPL7wk2kNjc>xijSQnwY0!>!tA^ zFO3I!X*|G7Zi;e4!a%^EjUT}&{lYivu5AyVFYbWzXI%qC-CxamcY*Z z0yAJSf?2#@@SETbD<kj}FhGLp?Tq;XjfJcpC-0^^l)w0A1`=a~~8KiTv^$>0Mw8sC|Yh7;s{C_(~Z zfIq1x+&l{yzJ+*1Fj?;fSR@1tGOo&Pia!(3!Zh%A70&BRC?8>I7E~s_P$Ngi4f%h$ z)*mL->`&A{pX_-WU`u?!miR8Sk(8O!1f32h^117!%icFbGS^}e7Xu(y2 z!QQKf!Ff9;N9}nRIkBp>kOp>md)f;Zo~m*)KX;3_r$Og7|PYm zl^pHhuL1ua?~7)=#as?;Y%!wt7B8M0W}pm1&q(wqm< z;#E-)v7ea3l;r$*{&HK6=nF-wVv)PzQt%X_^~e}~(nK#C8!D)64re(H#xiEG6YmEp zu7L}LbYw{f`v=+@yc#CugJndT>ljk&aK-`XhIBdHJy$$pRiH_pk#=aeWxB!Q?@RZanbBmU^gB+Py*X;l$C*v0* z1oX13?P#TQqD>%KZFnH07eG9qVYsGTbfXy zW4t~QRx9@eJMPR1AnH|R>#Tn>vV6B$X2boL7+VMqua))Sh#_b?!CN(q z@8oC=a1&so8e!Myi5(0Yi;^wUgzi);V4w6q&aCLd!5gMj zg}?xvUk~om;FN*>$CaGJB8NTBa$uh=MZSZ`p?Ze-mrg-Tz)l#r83##0>r8uY3hq;i zd0hQ@#MqVn5k&>QXue_qPC#U~#C8Nz(QQpzv*xoVf*v;UIXr>oP)1{MK<{Sk17A6` z(=aP^g}+JI_YNq}Vv%4&`u~M&h=kH_SiBzGMw}Rtow&MOD2HLW)`Hn8Ko@Hg_Ms8| z`r&7zpcG&cX~tYm!KgX>KYzNu$3d6Dj!^c*B8o|P5Y$Vl<^fCd_Szl}x5!z==)k8= zPeyVJ%8RXBZPJ08uddAghLvn zXgq-yq(5(e9{y$bC)gP;+!834Vv*n;&>SqQRc$gBxejOd80~a>xUdQ^ zod6vK2{9=LMUqfLNo2-W`00fmu3ff6cjckkOag&v`P$e&0qXGTrk&&g^95Ut>oeb8 zUk0^`F?OpUg5ZYo&Au+Bp_rm&g+T4H|9dF^!tw+u;Dy^}gXF>U-TA$+79LTns0|}T z)O1g82aMxPZyb=kjQe&Iu_@jQadef}!pL}{t&U)KfVjIt$NvjriL0Pof~9FlM^Y|Y z3DSebWy2WHQ=n*>mVMXa(HssXGmQ+P+ssjz#rkaVl=&~!$oNp(G6RcMBY=D*Aw#2# z91!#&S}WZX%nl!!uqup(=?p0+z<2Q9?{2YSY3U2SQ|4`u?bx?fIe>oUMX}kDL_Agt zvLR)VyU{WX>5L#oH(nb#O-a~$1bcFNgSGf200hmjr4LW@yHH-kLYW1f@GQ%N!NoOE zzG`)oePA$Ri;76C^8b==G8I*FMTr(R;!l@+Kg7e1Er98&mN_I{x2m*?Cu9OV!cj=qQB?~87x)kG6#yrC zuA%hIg*K0Sg7f;!Hi9%fyUqKU&Q=1<8LB2O;dx7nV%3qDOf-%Kh=6LD%Nns9&KpIZ z2T}d$Hu<=pG1m95oEPS7{&3!1`bLYKN%HgLMc*lOZs8ULUo|ok+rrAQH7M<{EOTsc zgc(^zG4dp7PK&xqJ%L@$G4i2X97LW6=_f2flnl91%yaMkJ%7E^ z@)`~?V(~a}%nw-PMsCMofmoz)J|^**wnj)lkH4P2A+UYTzU<|lCm z1F-kB40>o!3UK@jT95vOB>CDH?+hLPVtf=5_GAXA*`+;ExqX5q2TFsvMnvP&Ls1Pw zG~pFOVScm%{hD)^HS*HXmP(DBo-0(1Go^=j zKq39Vy-U{UqS0kaI8ulC9`GYMGh~+Nd4oJP?`d3}k_Z7BPg!B7d64Xve{Y4s{!tTeWA3)A}RXV<_&d@Fq2|TWg7Lpb_O7dxw*+Xa9VRmp@dji z6OSjYq8|#r`QRP`z;@98Ss$&}#ni%RJPEyP<|$XbpQ9}6E~m;!y7sc{?H2jhJZ<3N z;L%EW<2GTV8}up$1MC6^;HA6^%1SJv84_=X@lqC7LOWkTG-eViV!6yjbB@pp&>}VW zGWMq4OVJn7bT8S^(Ec8ra|4uFSnL$26C%nSC84Go)*G-;=#h~30$2i4r-}h|(52t1 zBgVtVx`e;t?@XM*l~BkvyD2^c&3@a_HQTod%0pPvkW8JwWT1gh=*NNz1R}yozL&`oF<^0iiKXgXHkF$CfPMn0A?tj2q{A;1yfknj2cE`%( zOps+yWxx!@#YqQ)lU>(hiW*JdZSXiCcFd$A;{KQ#8RBEZ60^nj=0guRg)hlPK?HYH zPkJFvl+S_sii9DXljse~8 zSJdar7M-2xP*H*s{rMyp@SApC27#x)6ZS2PWB?Z4(w^x;6R#2mA2rlAAOmTCz|kFu zt4fm~7|>vO=FPq5+6a1{8FLYHI4dw@b(%xcz%!3w3eE}jS> z!xBL|kVpK4n9&bUKl=~IVt>Ja8st|e6u7dUMXwh2J@THkD=Q~@$st40w@tr_<@M81 z#ZU^aT138(CS`PW{l_5SZh*1`i?bTkd}ng{qMiU1LR?FLdzK~W6wH#p9(^lZX5LU| zrbsIeV|dnQdS?fvk%hCeSD!aQhB831JLaZd)znb}IL%n)W?8Iq3|$?!TaH)D`9|aC z@FPZJ8vFy&Z2KnY-3g4%0Br3yZoG(-<(LG)nOP^o+jzV;F>m1;D! zO^Qq~vDD;Zq(uq*L!zg?%sJCrwpIyut9}w~@-k=eBzo`bImwb&EbfxYw79mmK80)( zY9}NndyGVz{!;m$B=%g53zBH5y6(CF#{ zWk$9t_%xJ9vAFi)Yk!T&5<%<^>Wsw{gBThLIn|Y_JOUzfk-F;8bwIUpb`K+x zY!^&jdPJvY`>`GY@-|Epp{ftbn10!yPwRBXgHcNr67$1h1)e-f*jby%OFT`4m4mOl zHKdigB117kB9&}j$&qz@EMU^DD=YRoM&0`)V;6qx;v}=BsR|m=st)XM>Hv_T9L@4915E7PSjJN_H zdul_}#PlKYHO}7c_Uc%p5o4vjV<~vz7ew%}R^S{&XMN=3pcA^ZqQ!vbWDcejS4@qt zpK*x@xTT?uUAIDvOMqTU99HYNiP_*Clt7NmsmPVG$@8~{M#Ph;yg_~Y4;(ZY=8a~L z(h$n)U~5gnwzXEdQU_48?BrmZjfEXF-drVyDk**<9F{?9WjkG#XtlA~1FroNx0Ty? zbVHDfZNW5W2erCgDs|#B#Ut*nEDxTHx49TfJ{C{DGVlTY{3f=-Hx_%Wg@QOjv7$TO z425W4vtGGqb={B@4bT1`rEEq+6nZCwgi&h}O0ouCU_!bHpj@vneQ$^tcH)=^lz%hk9$drP37KNqFg>-z-@ zg0zxBByNPz5UUi!3j@_k!hv2Qrswzx#@7jt*riJ9xZ&Laibi@V=6C0aR#>b)v;^!; zQ_X~=I*fs9EKVltl|+85vRp|-Lea7HwbRuoOc5EI;HL(tDU~ogd+-@4JRHQ<_UGWQ zu>Q&!iPG4JU4STVFA(gsil#r=lALuclCo7$0L}ZBNvkfPG5vzxGz@~qBOC{>P{8cW zNm%s%G1J{UaIz3j;;X9%Hed;&qW6UvKN>~9sENO}d0qdRE&U*sD5 z4lL212jxgCPd1f7$my&4NBo7XM&OC2&w8~pV>FznLj@KC`5^Re#62E}r(+nDAz0F= zZ>^y_@QLYHjQg+)$`@Fy>Ik|9<_m*g2QyKT$X>=h(&#m;SJkS(uw4TPyN1MHjyb0A zmI9?z6I6i*5~bX-VjoiOG<%*fbx>N472O!sN!In*sEn);!65D1<_P;4Pf~gtkQvXU zvjJIJ|L5C)D78c{IR3qw;X>o}2s8^ilb3k{O-6by7JJ&xD)7u!Dz(>Lag6}3L2!D4 z;8h$1uj1fC0(W4xhiD-3goLgw+?3Hl&y(82*+9qVY*{mS4Y4p#iBHuR%Y?X2*vvM6nUPM`Rx8aB z3y0UT8J>bb9lex1Sk9c!y2ZN4L%c|Mu{FzyU!*{hZeq@Z=vD6nBbX12V7^DK?{L|$ z0VeI3l_c4;x5lB^G|{74U=IHKEHN)U52QVfHqHk=Mg08?po0PE7 zi7(qlvyUC_4|l8rifQTIv;1hYz=FoQ`p=L%ZQbCN49+(lNx-TFiUhr*(?6vm=H zmJgGk6rKHDMzYl~h^sIu7fi4g!NRBFT_ueh2b+%G9VA>F0{=Zkz_t$5NmKZGeQqh+ z6N+}84M))|%K>0!Z!&rsB4iFGHHOa4{^49}5p_2F}Z6 zB-Q8$v^SaO(#)vVP4ghV%b!8cNV+)SX-rfSpcBYM;SBvZLE-!^?6LlIq*tu$%aTC# zX45Ra#^>y@pi4R+Z9z;?s-e6_QBs;g*W$OKRpZgZry~RNp@3W*V8Q$*r0Iy_^&mrE zOF6xvSKKEO0;~SIxe1G;j>u61Z=nzSDO&9ieupo#XrOvFhaKKn!&Z;yrl9xGlID9uUvl%N!T>=Co(Xox;{1*>%FUq^cnjb&(U{H* zqS_QlgNaTNIA%-d^a=W>TFOR9{4-qZ&snn3zpIGPRAMYk1`!Nf;lR>7hkP8+p|n9l znuC>qzfx{_7}EYJiIGYa5V*7CVmB1LJ*tpTuW@oDd{u(qPC5FkD(KS*u-e19U4D55 zJQNTCpwbOC_Qm-;%jhMcSP1NhWWq7F=VL>kV_|Z{n%XuP11Xo(U3GTc)kn44MKwQ+ z^CU1qN@YCkymEL$rU)|Hz{y%^eW8!9q(niBUzt)xM8bA0C&D8Ok*bJNiLiF-DOD4% zgr0779IPN356@J=0-NSPJ-He}9fL=~h4I6U^uvwxmo^c-;LQm(9Vtq?hDoxFFsr~L zz`)D6n;BV6ojYv;UxygUcOw*hweo6_0YU6(G1o#Qo8Tg5$k+h=XkPcC-IUsC{`oRa z`Oq8wR^mAT+Z??ovf2gP>hFn2pzln~5jIx4)=jiL{55t0qb)$^o|)UJ(T0%L2w>In zm^3VmK57;awt4;s@sOcM5I*fuW6erpV07%C_E_hp(lHNcQRmd-u{j7zCoJ{>^@h_8 ziVp5fhf@#Q-v^^+M&yjSYlpdG(RmTCmgX~wgNZ(ImdmG`L~N8K+Jj?;2U*xVV{VU0 z;UWPtha#9BgK|HXOkBPSBC5+*R#W__?lNG(8F}&PGs3yX#K2{c7#N6WCBEYQc`w}~14G~=#x=RrsXBvzMyUvl615d4p%cMTY zbJu{T5LDs{!+dJm^OmBn!nQjASilYENn>mTJ?z$fcsvF{>4U|(1-??1iX_mZXftx){+cLxPBtRWzAq)Y4FR zCWyL_XP_G8M3dc*e2M&B0DSvkv0+Dmw<#T6SUwQO3PTJJMxnD!MNkFB>&~%DX(Cb! z0dTXKIBCK$yp4v?(z9ncm}9GohB}2j=Ut}5@v8$evx`_@r@`MH@BL&bCt|TiH?cb% zIgRpSVpy(O$>;9A&qnY~!x8=o1%3W@X2Q1(L(+h~c?e+&WHQi+^-8^xAvcEe`xuvs z>Sgo{ZR#h zvU+&Z4$|??#rQqOp155Uelo>D)ea4_^L~1L0D~5=rtF`vWQy4kDhCoT!BJ6FD6Hh7 zCjofeSHm*Bs^09;U$F&A(oy4M8nfe8X}VBK9amHtNhQ^c5rT4*P$nuAEuB02yXc)m zguOBc0>5%eGs?BMCcPj*LBSd1mcX-y5ey>231y}j7N&2*Sd(s-!q<$jp>^t0x04CD zzle)(l->hhJOB=f2g0CeE~Ih;wov9Mp^mfwZq-bK-aDOyv}Cv*=?Miaya8!MtwcQRs5su+Z3cvUWiIuts~nFZl> zLN);$#eAP)xznPhoT$tUjjO5xZG)o33c)QiRi?xsFA;leE_*RGC-`e&9PT`yUEGK6 z8_%OSIV*%L1o=JaTJG7VNYFft1@N!2Ok30DI!_(G`TJ`NU=g4;$*)RI8=_-VL?EzoiF%M@8KYW_l z_Y{;zux#-gFPSOxrhbv^NT_PH%gK+zQ*KBVp*Nqui8mhmfM1)Q3wwF%m72Q@9^s_`;W&K z$u*c{;m@WYWii|v=G+pCTZSqpxgOba>@pxN+Dj@Yu+OHcLYjaF_630Y_k{vU@%?Qj zPd9pkpWR%MSHs61y3USh=*86a<||3uaWVc{n(zxnOhsDG7h?SXc!8#-4poT>fly$CQOgsdHoMBFDLwd$=sZQJ( z)~B3nz=G=aVQq=YT#e-70~Pc+V+8o*fH5TxN3|0N4KmvR>vY&ut#BeQVRYO`s9#|) z3jJ?@J^#1$om!Y5?2fgs{A4m7j-Y3f{a&Ko8B-gwnXm^kU^My$SQJ=3?_i0A77;L( zAi15>FPw{lIJ(y0y=69J>tc<7WW%ixjse&x;tBm6Fs{wo5$yz>lS+ORnUP0@A5Z$~mA7xdvsdF$2fux0%NO<; zdC}&aw{Ly)_#da-^3**SmmGg%w|^Zy^3C{-yLVps(0wO8H013;H_p7e{Ev5U?670_ zh9N)wc2L`0TX$a`KY!XsL+k(9Z~ikI2i+K-)cd(xcU(8--O7!JA2Faq!`t7_JYsY2 zQ#%jK+J55elP(;$?#$C$F4+6fUUiTBvvmHA<9;YP=-%+@)9$)#TXgeYg)KOp~)L@y9a{Yq&zE`o06J9fDb_e zJQGS73%g`=Oyc#iN=T*7g{nkufm%gJmRZr^8!-6lcrDFG*c^U!FlOLmDDPmQ$qNKo zB>GnOl{T(^S}sn@wq1J`xI}krZouKX>j^|q)3d>1q!0CF4uBH7(Hdz6BZu@O&UY?g61#pO34(8+^HAvWb($gFv~temm10LMM> z1>Uh&pgf1A8ARfM7u{j=O7yUTVAdnWGaBElS~g?r{^jt$-+<-$S3tQIOH*VG=uFyR zpNXnYOWl>-6gRHS(R4adDygK>H31p13CR9dJcwsOnS;dxvgb|!0eNI^r_qC9@pmrH z<4h>Cv3QsVe&>IpGm$1&YStj>*-4jxD%uMp_v6fJQ}?44F8JS^Bah>`5zoD8SS+e=Dh3)kaoDR%^axQJ=L{j0JLeSt58MEyNlw{zAUa#;Wh3WHI z6~rqW4C{0rH$N7O!wT$R!8=o3x=Ak!E`!daLg+w!BF3j@?;(y5A+HnOjt-A;#S)GV zCJ!Gp5AxX-gYzb2(u7RB8ALlePr0bJ4x-<+&4$x(C1PN~o zhagD_!ys{YY<4`HX77q(|Hs~&z{!zZW#X09-O?Ojd~g|dfj>0xTVRXn)|{}*(rUG4 zq>)ClT617yaH%>a)l79&yAB;T#^zXzFYGZs7>s8;p7DWigOBxvZ=1huY-0|CISdQS zUaXg0mTSGR`+YAmBO@y!Gb6G}n(&i&vx`_|L+iKMt)d^*aw zouOTE%bV!x>SZUM56LmfHHq;m-jykI6sg6D5t7_mJS8c05pU^b&S?J-#l<-fuuF0B z6yxsx!B9`5n9?^VaDq&4xfM61i7c(gW}w=}xgAt4AAz|S1vUjv%?rEq<)~Rcln4))`I~ z6Ag;x;x6vBCuO&Bn&_m*x8h0l_>SGx=l`}s$s(I6NkGlsSgv(z>fr=&ocBaAOHp`c zbWec_0@*K8>Sye_yw~CDv~EPUav>Uanv{$V7k~HHe(y<#m!AFbPk;Q>PwjfdV;Qx? z_d22<09;LYbC`~C97T%T3|?Gcaip*_4YfC0MtJLr|ZJE@meWcL&5$ z5y)-@%@9k({`t-jUl?-Tct1T5OZsEC-|K}+Qdj)eE*rkH$=sIIt&%W+E; z#S$FLwbM(P_P_r|WVz7XeJ;aOw6A*#btBd$;V=-&Vs*nCa#)AJ{FuHjT>SyE!dQVfd(fF$0| z(y?`W7~s`&D*1dfg+@5d1##Y*7lZyZo21AZD93{^T;xkxthwk5i#0nMPOYEBjIG;; zeOzb(zJm~^O*}k_2kdSmOC6+j;J}ds{A2D-)#HOf?|647*}hUg`i=W?T2K=Ar-Na$ zFkLY+h#jT0zrDF&usyX@##gBD)pUt4uL7rAvdkls@y>+rG2(AtpKrF)o8SS(QS0`d z_*CoQ(T(fngIkB)aV+6Ycjuc={cFIYRs!0tCbeACwPd3XeO22xg=yX5*-M_$&5e5C zNZtu25f24g?=FYdTU&=OMerQ<D5Iaf@$D!mu&{^h=b?a02zBCoBpsh5_{Eip z^EKF*#-{GNp#0Uhtanai~|1^!L<93 zC@}1vm_WKw_wCX<%Q(ofczZC8Q?{+rNa(A>)2YYXqdOFrGUET~WJ2FoC_Nifdz_3Y zy&9z|?CGi@RU*N(ArB`U`Cl5wTJa&jT_vtCGxbji?w}zp2pxezKP@iXwCm()bB*MI zuWhXDgLWgY-41P0HkEac$1qarI|`FX%R<_p=>8A4JL~OUXM$=s10{guXi>M5j`bYS zH-Dcao;(Dwi%=(?JuxYMaWTb55D|z3i1}~)zFTwIgiR>Md&_8n_)@1Pku=Geru_=C z)a)9?JqhY=-FDR#*R3O=3!)M=3{{QLFtexVP{8`qmbRELIuNReUBMx)NXq|3P-O}bZR3!XEx!t#TIhohb(k1l_apO5BD7U|< zed;fc;;D4^H^l~8E8=A%RFN)mA-kejit%e7a{=kcF6|LDebA(hLYOJ46OC56i(>Sea^jTnfdb!5@szC#p_o-pNADFo z{>+%X;{FaG%L0~9NfPG12D@F0cMSJDL}5+h#XFW!l{!1Tnt*(A#2yv*Jr$i-OlXiW z`WfRaK7x8te8oZt_i}1A#goj3{1vZy$}3!as%qpqv4O?s4-$muyo zL0ZMLoel;p#_9d_WA%zVy|vrh>a>T#R*I2yUZHu#D3}TY8vV<5EboRdZi$0JbZSNc z#aE3H;pj1g>3Ba&kI>hN;~Gs1>=s|5M$liqNWNmBi)g8@lVTygIBu_av!|66s+v#+ zSu`!$0h}h(dC>(%nzXJCdkipM&XnU)J8=vdsa2_0X!7!s6q;a8Ie(KC3_+Hz|owbcm zwo#8Iac$eh-1c`_eNQ&fJy@!Lr>sZkc?xCbzLC}Eiw{Tz&RnBxX3E=MG$s2e3=691 z=Cg<3nI)y>$w`U_4lkMeTe_xiES;c2V2p2Ed2^)J!}4e!lg z06d4_W zI~pFL$MXa(NO;UI<4>qX)VTMJWx)_B|Ifl8l90u$w4N?}rbum%nv>+1hXSRczPSKur8)g1nbbGp}(xPkyxwbs3cVP?G7 zmJnF9greR{f8-eiz}@{ualz!oV7bmHoa$T#F%;z5Xz4l;?QelWn@T_k-*&_xD88L` zW&|MIG#JAn(uKJ$d0-{rR<#u<(b2?#FtP&}^lg3|?m=4v*1K~+mG!Y(B)5;AYMm?D zR@#$ZZ)Q;oZ=)D=b6@2qoNDM$@5agtP=MJSORJg%ZHWCk-@wLxz1zBt zs)cAHrKXc7!eF&yQolQd?{)urk=Fo*p^ai!CSV4Ri{ww&HCbQ{;sm^?r+LZ>!JjI1{^*de$i$D8S<+-@~4z9yROH!IoSjN+_v4oH4sC8)58o zv)3n6nwxoGNgg%0A6x%R1aH|xOLO=tiI(+|kk~j(xTD1Q7^Zgf_sg@10V}GP+ER#! z0rjO29a1)f6cXKz*`FYMFeuPGUHy6+i{`X0veI#Q0Gfn8xr zG$6vg4Dez?2}~SeThM+ zli49tNf!1yT-b*J?w~Go|?%E%p74xzuEYADh!b z$;uvV2i0t1U;a12zWWX7A&b9GWgF~ga=GRtTP-#oNn-mgzZSl`#1>5TcT;k?g9#Rz z(`>a&_ez0EJR=S#hw_Znu$cu2%~HlMw^51kWlxNe<=TZN{4V#MUeeS?rOqMy7)wPs z9wTftyNTn!1NaSs$itp284rwm7@)Fu`6yv=L@UZgo2|eJT}h>NFBlB=8LTeCe;asJ zwDI?$9En@g*rlEjVF`XYoNh;@LeqXY7`oV1nft|HP-!^r=pwMPh_C9&5q}W>{h$~r zbI4Un@hOIJJCs@SSP@>>;@%tad>30F%Oql7;UYbGpsQ>Azqn1Qx&|?};OG!5Caj)lD z9pav1@d<9X5%z0_ryU&vQ*NSl^a44EdNiz&zKi83cTt-T#sToXYgi8&bz6PNSy+S)!< zD1hsWBswv)4}9269Iz5Kng3o=L0j7pC}0;wcBmA*T<`9j){jWCxOL;BfcFzZ4+cf| zX1*DU3ge;Ynn&|VtSLgKc?1(MjE7zARR})G^nJ-+ zuf5i(b=JZ~TiO@F+7%0BuP_siq<{voHMi?H%HPJhUh)lqhZ8*SJ)YP%&JrU!AG==t z*c%uJYfpcKD8k}<|G@V4WXyQPyNRi|5sGP6$p*GUcew=h$Au?Q*$; z4YhRv`cVt-)33wsg3{ICm?a92Y@(yD6#p!jPsv4Qa>*+93wV84SwRPlnCoRxN~{#o zP{&b|4skOymb@adx|Ij7hOmS8_F+#;zRE>j};WBja@9SA1=){On;UoG@ zLa1iO3Hg_Z(@x+zmOyVM&{SBL?wvMm>XfP^gIk2<3QOq&6MQ!hRhxM6$2j38o>Xrx z66Pj?^XQjsky@4aX(=TR^{=#@!{G-|DyXhq$x3Fb@L;tHQaG^qIo0U<+Z|YT&pQTI zdgqS3*~ubZI+cxUDsgR0X(4v}ht?7j6Eph0(5i}UkM(gEJdBL!=Kw!L@G|6~VI!*I zplnlzi?Vb4exB312k=5dD1W>bAB8?*SdVMoPp*jsnP`&`I?wAk&r4i<+}~jB?|>*W zU>H4U!{J>yBl@xSR(GIWw-?_&9z70w++4u^ex6W^jJVIc=Em`6w5!b3&{N1EwR^O% zg^p^xhj(MnAg6*vvNt0a9K5rTY5Vg{n|T)+Vt9f;gG)$n-wJ?vCHe*rCe(<0dD@~w z7B=O~oLv1z!&(s!hlAnH5Rb{X%=VcOertDp+ElBGK4|w3oazr)M469`iM~*ug+||r zt!nH5kSN_a?JYHF(>cD9Ur<;NzhI(p<0F9g5oTc+A@3p@sdhIrJ{e=r7U7e6_0Un{ z6GXeifDMA|WsY975&g!E8?_jtiz6zRiHnAm{IPd(k~KQE46C;zG*`7np<*S}7^M+y z@gotwl+j+>(Urd?VB)qXO3O9*0*bX{kLVZ?18Q+ z6X-o(O=@r_QD00WlUf+_&JR{KRz>CO4NjrB^{Lh&{1>NpC`Q5jyJXsqf4@N16Tc=nw(^S5A+8M`VkLBl>q0-+6Z*lGE&)2UldFPvVl{M#tAmFi zcYL@@Jt(*BWwc;o$n|xN`@X!wWUXO&O5LE%}vl*!9zc0ZNEX z^^zo5=4WF_KD%PzK!j(qqL&if5hvoJc1k|Hsush=r4VhSTD@`fR%-Wg2i|LG?nn|8 zmqatz`lyzXWM4MVZ*Rx&hIL>9y17ru0pAD8OYRw^+pcHE-Nq@&GeKwZrvagq-g0jS z@MHd#O5YKDM*7I$V;-x@Iz0UZ-pGjCeVuIcV`Li)g?|shVe8L}Ys={i)(jHE7buHg zCE+<@#6-GNft(``wa{BD!z5mgDLhU+@&Vu1YFZB)a^zTjgq zpB5~`b-$pnVXWkvxI=dW;L?bm7J#mcBJjFY62!HL9#@CHH3g=$s!bg>1JiAtgo-dudkx4W$kfJsWGagMhwslqw@Mz zjfSLfdH)gMvSM7>%D z0x45Kvl2BuZh{3zo1CfOSAu8fYjMQdqg~jE=37WXggV?Ey)-VXv>Ox`SIw%A>guv{ zx#GO<5J_h?tuC2s)}xwuHvRdSZ-mV|XH!ypQ%v5@k3^$43b)oPz=l-xM_n!mu(!yoW?9|wS$F}m%YTG!;3Y_*5ybqSv# z-b5^Y{fNiydJ9e8s^0G$`M&m6aE~vQsqDr#+O$ydKGXAMQ)2z73o>3tcZA;g5!LL* z9{_%fP~$?Bl+@}A(V;n|+8CnZMi{&~|N9WV^7ki1CWIM8KTeoSR7=xawV5g82$TP! zE9MnFgU6w@TAR~lKCNliZONKSlg;r-apbZKXIU3+Xu=*HcSd1auq_Mc*>R3XCIYJc zjR>ffYr^JGt8E+u93*%%C^VK|Q}Z^%W|I8dt?YUhdgu3zF93SK75jLE;7(DMTl8pq zG&&29#)H^%YOCEE^YWfh+e)D6sCb!yx46Qg=!by=O+HokPlOKznWab^8|Uz3^LPLs z7+jibcwOi`9xG(u7b%c)9yh>Js10pKvDf>)(P0$U`z<;YH1j>^-&N#rd0S$xs7cmsV4b@uRR)%ZTw z5YjbWqtboGGfQXjn8y}6AR51gWko*Jl2C|W-c22j4sntH(A~(4Su%8fa^x!66R+1vHu3|Lc1RJeZ zNTK%^TU?}Y5qQ?9#Ne2Ww7Jv6gVpjX>8R3BR72w4Q{$V}8sDsVnUfri#EOMiG&+O6 zdOvPNI;axwUs=5QDf>sl<^hU5B!M zp;^-)qB${^?5b0uV$d;`|Alzb*?#m`Y;acZ<<%~ptV2PWrXzfLc|}=J7v0xHTE|ki zf3YJDMsj`_12b(v&-v{Ss^Y{P74wYT7lJjOnjJo1y_d$@0lz}^6T6)s_6d&52U<=k>jVh!De{Qtfzmq~hh6{%Bc@yt-eHOQO==# zV=kwjO0btEcL9EANv(UDddk4b@hfC+u@=$Hfvy@+Z4sVdCqMDS{ssQW9~1l;85h)8 z@?>OXrp;+C?O=LxcZl;vG41TK4d&bbmGl0O06Z4e_^khOrG%63a)WLq$9i*Yf3|x{ z9?L=frsiu2CB`(1Ls-VN%jV0zD?KJ(=I?`6!rw!d9RDX(a6?|=C5#KOBUv( zNeOy&81ESmPYzL261LJiTFGCu`jcL-ACE?@$4}b5)=l_d43OZN;4GzpE8MeU7y5XZ zTi>)r$$fY%9^rjF>35bJF`Co0jERVQl8WUGgdp8wcRmpIaNM83wy+&=Q{__^jt+Jv zJM6{2XZ-tI@o&27-;`Hzid+ImW%7nIlDV@<}=Tj2*Ma!~sSBR}%fVYn!kk|7>u(8w-q~sq{Y0GLTibgP6 zzPXQjYg+OGq_O5EJtfQFgYq0O0c_l4oq<_>|HLK3Y94<0j!I^KbS3Ke@bR{H{b;XUuMRS z@D!T1rzKLESu40q-NMIVJhyQlN2Hkx*%pmg`A$<5CVYVR0`yc(UyEg0d!?!MAo;C7 zZqeek8M9m~tn>UIw3WQ9qTL2R<-qv8m1Oihz%vPT`5${)sL%Z!!ut#k9?WHao|^R1 z(s$KG3HIWC;ymu+;bc2h{+=Lji&RLsxquwF(CO+LBT{OGz0}IvD@k(LJkAn^=)NLiUmlCE zH*roI6X&B53*QAm1)YU&t-R9t&1Ig3Jvvm9H>9{Q za9w2)1!lw55S_f_osys#vovc-$x??FtTkw*v0oBW+{mFk=M1mjihEHQ-ntCo{}=nACbw>h$h?Zzm+D1=Sv9v_+aNorGgKJf_Dxj2v5!}zZQ zfm5P5!qPBMe;mYR>slDA8NwRs5F6KnZD8rPg&zUjLhzKb_~lpC7Z6qSs<^Z_u_=g` zc|yFUJ+i9WQt%Sj^7Tg$;nR;< z6XJ4L5t?jD4%=L5Y(Pm+bD2#~X%=R&r+q-F!6{o6C@jBnpQ(VHL|K-OD$CN!D#Lgg z-tq^YZWDHDp+lDQoq%s9%p&ZHJ13ekV4hQ&L2&gpXz0L8Zv`4N!!P{nI-t}`_VWI6w7)Hl9x*7J1UYf;F(#-8yLTj@7p zkgp}!kG~|+o_0QFk&J3f39fvGLnv(dtcDE6vl z`m~=T%Rr&1u3X8qv3r#~?N?Iz^a;#}FC9Q`^01T*Q?MmD%OZ z^3m33;A+;3nY!Y^Mt`ymC13w&hUd{!^eup|C)kuwLYK1sW??;5gVt78uT(@4Ld4jN z2NPv}JGcCUfOiqfY&RKq<@J!`us-2X=srks2xs&d;UhfuUjeWH-K#zxoIGM!?xYUK zTBn0ZskN>4PEvwvNp5D7L1;=eJ}9p40Ye7LaCYO~mg;&2o*)d{Ig>{ru#1BF7T*(= zsC{R%|Sui5D|WyeJ5{Z6tl(Lz!*Ccm+-gX58)ImTqEcv^`h>p zu2$5|ov}H{19q1R#p;(}UR~_iJU)!$y%6Wj3P@N>b-{)bb6vhq_J$wLR2*EIVlT=Uj7ikF2W4L0T=g>nd>FoM?7-g z@4E7v&kdhN9B`(Br1bD8DM{qDGQVJdIG z-OIMUSQl9v4%_DsphxBA7)lzMbJE9$=QY6>Z`8hlZe%T{=!ku_lVAf#F<;8asrZz# z?K>QgPYuIwwXqd? zzV{X0(%|ERKGE$#SvS~z9n`H>=3TMIONJP`o<7H#x3zUiek;FvW6z*VO8l;uA^fV9)h`Z1__MLo zPbHYo^})iHdowI=R!iPg;t@q5>R#cCV;~%z6^2fq2L#C8Q?dAkL$Dh3wqPCG;se)+ z07?wkyCe|GWOR-%^@CN$$2le@YFi8;bAb%+fm+>Wd_f)ZmYc3TW2~dh(By97_P)M z$LTEoE#Py65K|R*<*OY5eacTQXy$N1Cj{z<#5BHBArpu|*QI@u&+LNZ;_p^Pk5Cs# z#fD|ke51lrfO=|$Ep)L!xgm3Ln~9@e)~M#1%ug=hTvP3sNR0)l9HqM#1w8jn(tX^= zOLqwDI<|j(&+5vGB=pN)i9A*I#oET^hO`WGloT2t)0yns*o?Pg)pg}0(Acx(vGrBe zQiRpq!sK`d-LtJD2X3_v*Ir$TBY7pL^_~Ju>%+?2y6M2?@!2M`8Z?=!f?AVh?JmSw zo3yH`W?h(26nlbl)N7kJtxRvNgDDk;Yl#|_!=TbAti{iR{Ye-MOO*boznnqO8)Edy z0~dYs6&wLgY0xi=w=b&{eQ-S#VfBjsbp#ok9b#?^C1XPM%yKD~u^3@qfrUy!WGu`l z>S4c|{|W#sZC)9Cku@&O`Ra^U1q1K(J%R041KVF!?9mMD>B_+NE6))pmxyB&^G0q_ zB-9Ofuk;#g?`iU21Qhtho$6NKUh49=-7pwsL5=z8iN~%?=K~To*MLL|PY3)YL2PSz zl1I$m?Va}R@NA^dkm0k&Lkg~!QQT>5ZmdtUospe%kaU`tZL}6XlI3?s)6yuzRLGj=^QbFj};4iTHl7(>@5T;@nupgumSKWM)h|t4t}5 zvRuc~N-^S{Azr{1_6?(^wdJ-1qW0pt)@|2WjqMfl`cGEPV4JO}>D$to@j)7SIrWXi zPuq(b4n`xzKgX?O*`KXB+Lvc`xa)|WKwuC&9(1Xs>6--!qnxSpEe6q}>cd@ZS$OON(c$0`E3UCT3Z6@*JN(hzz+Cz+I#h zIJ?eQEzc4QOm;QtrvU|#;$>5DljiieB>aApmlZ;>nkNZCSKTGSqC{2H9*%M3kv3G~ zLeEDFEwA`DUG)-2{Fj_)OI1rAqueWwVaXxHnCX7kpB>XF2bUc7sALkUz@u|3CGYaB zFe0>04F;!raVs7U2SaeEe%vw#Sa0_aoa)0Uatwv{hy7dHy-9o_(i#Qn8qE>VF8V9L zess16keL!}#;8YjZjeK3$!@2q zOGX`h^fzRpjL+U8I60lkrIy8(?#0bY3_y=3w*4=_UlPi49HH_YMz~yeTNM#o@Zd&X ze4|W%O0xdM-HuJ!9l{FUWl%Q$Xj+ZaXrfHzf*UH{!ab6%uw-%41bI1*m}rx0fGr)s z1)MUbntY~e9yp9TdK>l|q(6|{=-eO@SJ-)3uI9Pmu>?baEwl^FsUhhP^bBBFGnJlb#y^P@+t8)xR)CB$~a_Z7C@$ z94g~zY0DCsC2cY)88mIPywM*I&ttv|J{%X!rX&|6?Q^7`VwcX#%44Lg933yOo$1}A zqPj4h==-^S`a19-?8c>8=<}h$;EuKa*8Vu|Wm32!y|!MV$I@E`D}KO%U?&-2^GX|t0v@nEyNy@QA&{eG3o zAUD-CDN>9Q3B&HWqrG;wPk*BdZZ}#TZ6mO13vNn=S0VJ_IPxu}oK&O^!f2|tRdtAI zHedbHfBiSV`5&(R-}v)?A*!SJTl5k_@UFVp|&fKMOxZU{@W9`vvd0@8# zP7q4CEH&MfD=I0ujLj;Upm(g@KNVMrTVR+ae05ztk~RHk)1oJjFX=hAqJ(3YY=B<8 z+ypZShy!eS<4u6q5Z>&v=4z1&7Bm=x$LG@!ePLxuVs%M^i7MGZrj%S15(&#l2C1bI z{c8B2m@9v87};TM-k7mYxrI7NHKsKf<=HiLzAeMk?eyTD2-{p%u!PP;5 z)jc`Qy$MrH_86mRu_(k4oIDDb*vaqCk)uA^#CtM}JY!?JUR{+1zHDPs)B2`?eAdRS zoq}}E2Z#&o@&#z(iVO<0C;_YRTlz)H0Xk*BM2a?LlVt>~Kz;O-p~yAruW98ENneFwp-x5iT5HsP5p@3W+0 zu_Av7r$!g&1)mp!XgrYe9+lB6c9wg7(A0O#4c$X=jn7#hA%u`OzLwwa2bCktj^s>u zfVlCLt4djO1L>`dRh-}6j$!2KfKzHmo!Xq}hq=Gs16U@MmF+dv{IyfyE2j`kk!YNr zlQ_n*Y}w*2C!16b-r~&g`@cAzr@PZu*-$yn z&_ODnCaF9ZfZ)^U>A|-FW>sp4Gw+b_Yi~9D6JBbI!Jj?mvEEdC@$SDD)*=zfr;=m2 z`1cbn?Gwy07Mu(B{x5C;PW-j+%;js)xZ>%*QaZucf#`of=cz3U?saGAo1O5~I}?do?|ziW<9n_< z`N^9(kWJK^tbuHpeeCkopFA9a- z?_424huSCNULF_Is?{&lzE<#3iCz>>-&Ery7^q5XY`*uEulWAX=bnJNRSRc8d5Z`% zTYL(^U(RVfv_#F3$Vw)HzNt91DSaqSQl^&0`-ymKghxBnFkLNzXZSHZ>O%uX`rf4UahzI>7~m0_I9Oj!#%zYR|B%` zE(^)FD?xE(Y*GQ%CG%9tcqt;3oZH?sgd)(cQ8NXvWXkDeRXUF^`Dh)e(oDz&XR%TTLtHJ(AGvI|mBDRr2+^@OR6YJ2b8w2irG$4hopN#2D1CGfs2 zXb8WBN9JhMlc?MebmfUp$j_ZAZZ=fYXplyu2>;_B2qo-~4ogX!LH#O4;Z<<}X=|@r zl3P+zXQ3)#CmpLk(~NfUKpqV^MsP;4nftfAas}GS&wI0fltbJFxRX%e#WD?!l0jGK zK})!{2Wu?vM;4*}-`zxqM*$8H-fT-;sTi3bxkgb_Ph@clA9H_2V9I)9HE zXeE+~Ipcpy?yK(AYP_T_P(dGw;0qY>pb9#sU5fA4cuvjfI` z24VFozv9n(2x4{f5rE4HAFeiWm1CpfvY3x8)hmibPS)+#I8x*fwj~;E_0Nbn=UL4x zHj6V;?FIDa&WSSt9loCE_Zh&a2(`EZKCE;eq-+FD7w#^m?e)pHq!5xp=U(iH6T|Pb zp%ljU@(ZG{Al{+F!J5w#qlYBFr}h6wA-tpcIGo~bgpbWk*i)X8r81E`BcKY0?Zz+(uXn3?O@j=L{2K86810_FtYzLXf>X)-=2gb@_N=+4>{y5#$1 z%Hc%5@#Io9*>M$fE3x^e9BTv~(5%6;KM)m*fQ2`R!S+O*B?H2tP$3R6rLHDQc_rIp z=har9R2!q2CYy%mcOKRvHC->3i3y0cXaVV33rN>mSe{vhVV9TI3jv-tU-l9s=Ot0q zQ8wMdzFAC~w)!SIraLg(uyn^;1!2N-kYDGmE2IUJ?J#PUwGXR!eld2#yq#I^R!G2+ z`v{8Tt%=^C6Q=7$F97@;;Y0IaPKwD?rE{d*-jtL*nZCo}n1#-!;9ao3F8NJi?8U zyjlM*aX?^k16bVnx%Y;O#nVxf%DU-xaAmrGQbSH#z^8h_Owu1uF+vPR^c2E;h)gcu zr5Xar#Ue6a8EP&hRuW7g)GRV3=vkdeBtB>aJvQJ?XgsPKpS8)#8zX;&7#T2v)=7g# zXnr?@&~GDrXjYuhLN~v(V)18Z7BljR8p#0Rk-`e^n^%w#{X4)L2=ie?MD)g&ZCm|T z>U~U2^{J*f7Y3&eFnU)YTM?rZzYSt5A&g6s+=54Fo(0ny5I#C9qu31C%2!pCQ2SGL9d%N*;=9IGG^Qz2{f$snWVM*;6A%#A=VFLy}R zvfEc#)*ZqB(>d5aisO8^_R4&^S)ETedptGsk}YO=tI>RB!yB!Rf8$=;u9i2>B{=;_ z;`B2BKSh{Pd|;ouXP39;Bny>=jusXU>BqvsLLJx^JB&KI5gfW4!|iHsL8JUhY3 z=TI{IJHUS@)Ud6wp9)pD7FYHC$nX;`uXu$vS6IsDb=OqAJdk<=N_d+zaa(pr<(?SMg7*w z(uR4e@l3DJ7f?PTg~*t6?99b>C2i+B$SN>rTqDh8R@2WVGZQ-nDRE_fb;k14N^ZbE z;yFJ_fp#SsJYS=M!A?uwRLCQ~uEuPTmX1HR3oxtHY=cdySDs3fu#@Wfxwjt>lJpo|d`G~`kjPYEJ+fXxznV=6WXLuw)nsk!W_({VAo%hmB3;;66K zn2Ju~CH4I%msd3pSu-TRZ)pyKVpxKI9kJ3Ot(p(B?v2MNzQbQrs%D?VpLPiDz==s; z)jbien8bOM@H})>5W|=22+jC=5>+2WcSKJmls@TzmzW(|YmPK`c}1*MzXMZRwx&IPMVYu9i)Yimhn%jCaC@w&h(Pk4Th&$ISfrOt&3-Ux;v-i zq55ibjLUl4ftxHDo4x>q8Y^eIP*IM>rywy6+rw&-veD4a3shP9@+LyT+bD@pmb@~f z=Ixj(LLZCi$a;`P$30@7mfRttNpB$e;+?mjk6S7V*?|lF3`|p=HvAmc z{1=2bc#`r;MCUGkMM0^0zEXsm@~Qw) zNgFVy!B!ikob0PMdlc*Fjq97LKyGHG9#ylN`Et)1*RIX$WKDza+18N*w^}Q*8JK1V z`pqlzMJfAL3+X<2#LeDNLrj>L>{9a~HXzQTKbyR89MIlzV~-r77cm|*^RGcb(KiFW zj!^OLFB>>pW&QMXqU_!iFC=rDVtWf#xMZ1&ZYeetl75QYqS%Nb3CsxH6 zyd9X_IyUM1>x0eA@?_X~(k}AzFmqjh8uMr(D8BhG2vwDvD4O9>@T?AhT8w!5@43p| zHgn13Vf11O!__yA^`fGE18A0>iISPDS0L?%vZ+$Zc31KqOiAW?Zuh)|RQnz<7^#w$ zbDbtfVsF0OU~_xouz58(5Q3*71W!dnugHWdPO6mK%6d#CA~7=p{2A$DxmhkC$^BKu zqW#f0z60`iP{?rAMv=U*>kJ-h{59ae65gOK=ME0AyrCaq0aHL8wA$;Y%LHG_N-)xb zawC|d#M^^0Of{%jBfKkh^1Uu-N)CT(zFT=G4in(-?}>h&0^kX#=p!|WgdHta^PY<$ z@6C<(){v&L4GX?ZD}b?tGFKi4PE(%1nlon+W7d~BOB}#iA_UY%5DlW0Ff!&D?h0i_ zPCjJHZ;AC)d)ib8M+pzAjPX$7oRla^3mV5;N^`^tnkCX+6@w%a{{Z1Cd@vtt0*kZ|R6%N7TEwC3Pl1znlov8rL zPXInln3tm0xNJUx&ZOV@0V7d}N4d zCCES}-N?L;pWlh+v%f2^E#ABX+uIWaVf5n70RpPFATojmDn!8&6Kk3ic2oOI_Y}KD zhgG_MecNjDx5-zY2pAD+6BU-+SeSt;RSQiuF8`%hSRNGWI+__C0fO`Ow}f9gYA9r0 z31~)Os`}Fc^{*apc?!=!Cw*7m2A720pLdGTEceo3$koI171jagMVHCq@v!o$oQ_K? zw%fQ32}{q_a{i&gslw2nk{i{z1~a}cKX7VEi9Y&c-}Rqy7EJn%z7GH~FIs(PG3{3{ zPIcQ>@PaDho|}3aQf00FWkF7WUHdoK!p1KGo=b4r*C0Dib{KzTn5CM|h_sX^$`{f) zXH`46o&*_jV5jXeKNOnrcMnhb8vqX{RH=NRer;yfY(O1w^jeG0Wa5}QqGtpDFo(jG)1xA@t?$bPs%Rg z>TaUXZ$Qe*F=BL>Jm_Y?VS@8c$aY1MG8)21uCE_MAIw^^4StX2ag6|X5Nc60yIH8o zc)p}1rgPZ)=1&056YA3_58#p+*xHJRmNG;4t3DczKcDf`&VqEEk{PBZYS2hysoXR^ zXMM;K8DmCM-qIa)p;#f9h4I-?Bxlf{eg>G>coJYj$O7}7oFjQ`!D%JWv$52t=E;kG zlCwZOrnmr~TsaF^;XpUuoHh*z$48#?c_!u){Vf2&O3~*+6f4ebS2b_DC?<4!-df;F zRmY8UomkQ#Z1q&P-8{d&9pfeQ4&uab?w=jDX;`UeRZj~Dx;Mx}LA9r82%cKLWwMBh zk_{9kd3reU&-3_S4!E1(6ONACRhRd}pV`ZzPn0*mTlt_*EyAf0QY%*$ci|P7?s#4- zwMuC_P#U4ZHI&>BX|pQ*&y#D{=V8&S!?=gY@)w$WG=3V}_hW=gZpPVH#q~BTWI8wZ zWyeor_n!y+HNnF`rj^57X=r?mdRms+rq2TNSgww~K{Fb+KNPib4Ka(4Dt| zD*3W_)|ht#dk`H193*^rF65@B8F`56mp88r(^Y4NfVOAd1pUp)@+YJ1)&zwFFdI){_Rq1-=*58N z6J|Ok?!m&0$W?v2eo5YpFC{j<20-QP{wi!ljvh{;07cU9<+{jzxkT1UQG(9txN}E5JUPT$;%5iLJ6g$KwEB}? zua9C)t;bK=z1HDDe=r{OyPcZ`sG890h3AOPM{4rAwd$Qt zM!V`FM36sjD_8hE|K3k_?sG)#%`EY6^X`Ejj6zSNGy{plH%s1l$$jGBWfC>LA1XR) zsj)Ns=*?`r2=McS5L<&j{+ur$5$Hp#Bkqnco%Ht-%yIEQ0w6#ye%523A6a>lm5!H{ z$`)5tw#e60OmkJ?tV`mMmRDA*CVF*MgR80xMM4;8|Vz}0CzI^e&W9_Z(Kw*_<7+?N-4!*7?qG}{E zH$6pP8808(mqwiA&ovE-0nc0fOYplaSkgJEMs7jWZcm?tbd zjTgVtWnY@!`6L_+?NRZ=q}%um3pVT)>8G_1QN;r?p7u`$L>ixY59XBZC$}F!EyZFuh?ZFoK6Pu+LNuC1s;%jh> zQh)Bz`0u0VgU^@P8c4YcSMTLxTk&(~s3p(WO{>RAsLULs^Hn>@$Dx$3jf}9q`3=6} zp=0CZ7m{!w+kW6yE6rExYk3Nr@<7uW3{9=5@5$d3pLNMt#9l9khKBq-kqk@6$#@RW zZ%}8)WQkHFTo=-I&CD%x1Wi`rWPToFhux*=lf1sn1q1lsrLq_Jf_G{3lYl1>s@^`2 zVaQlJ1vUGNJ&xwrEYp@@cA;;+bRTMwRPpvEsmaX<>#ybrYfzS&Tko3$`Ad#JWm+tP+Xcn*6frnSp$bJaGoBl*1U zQtPon+WPyKTf87Msb=PX;qo!e1V{^;aHPs09b{;S6$K0&NSh2aJyyvCzF zc|;bh5JK{D!-ozfZg@;B>^7I7{tv$TUj%P~UU*;huJU~B%pklMb&3!h zpS>qFAB5p1J$uo60dFJJ-z3b_Cvcjbt-0_xBHrf973)x zR%gnr!KI#U*M+Y*=wh&-P+r!#;KC<~#+^=UV|^X|?akBeVZ258;6;|yATRNkT<9Pj=%T9gM~js%qM)qPO^7*!pvN zv@o!@BiAF0#GDbj{-YYSkp;tt;HJ<<;LTM}fRmAa0gHPMq4uu(Z@aI4gz3od#n|+v ze-HQ!p%j%}WXe7s`C>PjtPO|l^CSDo3~jnRGVGq}_UYHrQhBvClwZ}!P_IGFzQ5J@)e+;y$nuCq|lwqctqz8TJIEChI& zUTxeZ`x|vC$=!-=npof2k=Dg0i4k)rGXm?mB(b?)81sPJrh$0~J!xgHAg|Zv90sXs zmGR<5jV=90-mlEx9uxc|La`-Oz1k9T_5K7W@lL>-2*G%KU<;o??6+7a|9@V$|z+djNCNl^sS(O=kN~Y*OFD1v;(^DGQj3196s!nW& zAgQf!3s%rgCEU|qu7OWjXR2^$TUx0E=~kX>GSoBETWYF}wqj%M==_u+@W(WRrNGER z{7CoLo)ve>mRZd(Bb!>aF(V19#`hOGdu7+7C_U?vHT6W%Mie3y@an-&O4j@Y)Q9r~ zA4j@WbYPr~*4H$KCw(s?YjU)jDLnGa36pvJTEFqp)><68FV{kGIqv}6bgs+Q0+VI+=Kmph>$>0J z85nSdXS)?YQE}C?yH&sLRy@1gFpAh1ah?Lu;aeOX|;?IYbO3sTlaF#@pANW<0O<*h-Ini5#ZE2Lx`Y4HY%~J7b z24tQi-pK4j?!!9w!DBc$6_#M4cGs9x+HL+!bNOOMVp{I+jr23`Jehn4C5dSHy~G{x zRj#n#l5C%XjGhN?HdgP{02av8+d7-eNeT9=3R&WtBMmQ)z*1;FpQ>aedF8$OX*O5> zZ&P1?zF#B9YxkwRxM6*3!1~sB{oI5fbk>MwlVs3CGw}wvbZ?G;pIBdX9&?V}_Xb1c zXT7@TgxvrPsd5nFVND5i^uMEpcZa5*)*#+b5%?@*}}< zrXn2c@9TwTybn|neHid=!kdfz0j4;+soti-<=91*CsAx+mLe%7E`r0!7^9McXh>Nd zVG6rS?Af}TWpf$n--hU8C05w{u9PfFKPToey{3h5(z%t4mo{16=#Pic3;ByaMlLr2 zY!lR@rODIH36~g+2A!^?c#cGFNCH0d>@;Pv?DBpy`>>!BwBzpy#HODFc&CGC1&?Nw z4jkoQjIRrZFh_eI>Jj!+i3o0wSHT%338ayd>4`K-_PPPeD<1k1WI>-H_#iIR=i#Gg z5*#&mQgpw01eg5rfvP2wmM6qF@^fWb6l%&PG&R-lT|`!Juc$|u?Tk22ul$Bme6PN^ zzG&{9^F+_b0d6DYB+5ec)EUDeC>V1fU2vu(wC~oq*V`MPM*SDQx|ndq684*Kk3rHO z3(f>Z;tNh_p+R5h$rNlmSGjd<(Id#bU_?8ZAa7E;0OmA_#1CXsDi3tdY${s9`TZlI z#1)-Cb9M1T{8(N|OsXa2-U>bqK`@^h(m-7i2i{aH$ra2*Edi)|8S$6TP<06Pv5EBH zQEfStrFo<{6ri`P@WCmD?~qIVBH+0MKX%AZQ2J9#XO8kRXwXy*P?SWAeXX_Re+-5J zvYk9|$dU;hwNV$pn%)Rsn+%)bROl!(m`WysOD6}zZN$~Hx&lNY?mPD2D{%me4+C6E zD0Tm-xJKzpvv>CKFdO;Bp;wspR~j&2`%jg3PzUf9xODCBOfO-v-?ds?ahWq}xIOL2 zWPL9sGsOnyN+{^^hW4jZd$KOO;|glFU5)~I>u~oH3k`%4?#6;Q?+*~u zOTs8Qtd`NZF6_uR@@Sp~__qWv`-q5}%`$QGxn@m}gS3-#sDQimxt!I10{jV~lta3% z5*6LsEC~D2LBk9!_F`(7L|PJN)-dG!ou|W){~NLNy8+)u@Wu;FY&KJ4I6VZQA|@AP zswhESye4_JJ!Jk2keI8+HeEp^LB3N1`A&_`c%d%8Xe^aVfG+Pu z(d~7|-FRe_WHkRe^BIKD1LOUpw*X#8@HNfo3&9HBT(GYQ9XRDIBy3-ED9S%>X=$U4 zQ2p!H@mC1_qSf+-K@T;HYnOWBDJ32t+uEnE%AACg6p6C$aNd2^6`9)+dx%WvTuZ%u zSy*1cbxCx?iM@k(hu0b#FCdf@j^9B#YWr0DFS`i!LR0xQ&6t{aI2;TSjo6P{rp0fa z)!2`r7UQswiiMN-^@;&!OXMP}<20WE_$h)HLCGzh)TGIo z)i=)Vh~4VW%xQKw-iFx}U58-)bBOu=7WAXg>rjq<>j5mNR7IWTQ%tb_mBj+$;dW=e z-Rn$xRK4u$OH)S{26$&K8xh|JB0P?ar$!5U^l-ps1V;o`JnFP};+7rxM~u9Z3@}tso`9p%WFp4!4u#g5Z8B3_Fb8v9dFb=<7&1 zKMJ^&;6*uEx^sYBw8bNMB49+A4bwRFY7>1qwl1$!>%8_=Q?89*T7fTrRhb&nHR$^= z5dZUM{S=<{n*e;iM5S=XCZOY54JSlLue=3%uqW2d4YZ}-U zfIx5KSl24$i4ol==@1PMwN}1-0jm z>8_2FN0imy@zdk&(H-h@BCh{U7JU+D+Mrko9@V(r>r5qq8Lb;lhq=&y=mu%D@%I2; zq<`hO5fi#F*BQN@u-069SV~Hq_aNWjh3GXhX6N8ZV zPP(*gE%UEL(M1f%Kzl)5scbegNczB-3l4&}+iUSSw}Xwhlll-?*aR1B4tU8cFAZeyiIm${SjviJmWmYIn7$s}SOtyIcrVS=?Xeu;JbrP2O@ zb5S2RB&hQ5@IU@L;n#Hh2a;!sLg&(e4=Sq?$C?P(IeeSO={lEAx3sFWt3^-13i1ao`$v9A> zIV0P1a4@IH5~OQXiY%HXzSUsbMaJ=V|G=p}QbG&^d8o(}wYkZE3HWnDDW@nD57V&5KSCQ`NF_Fdv*FiGt7TbppyM? zj!7f=gHQ-n1Nr_AN5A_{z|#nxw@l-^y(H;;5_QonxpKt|GVdKsp-pF&!%Mt;{C8yk3hwSxVzhZ-TEr*}if3QfW4y(tUKWGudIU z`7@*Uswm4`W%Ei*&8_hrZC2^VCP)JRp+Orbo9s$lOOY`5>!_@lLx6y=u9T}HMyf~#Rs-*%^y&p4LbjEn#_5Zp3Bi}?o_rj^YkXtpY~2po|G)_=uzkYq|ejP)#P(N2*Xr4y_A5!VvsP77N1!?k6}hp!52}NR3tE zCrA{Hk+0J2DoLA+Y1lOLX2myhqdo{gErZ6pY)g`XFOTkZPpqS0C+oSWG?2({FG?KC zolTdfM)ys-xt95lOvXDCsRydMFF-y?4RJ*2p?Cg1!qu?C#VZINN3e=^ji}gFlO6$D zxt=0Pb~o=5bsSgKDZB~uj=l!)m4s3=BToTL8^tK%VXAv1VG19JtT?i%pWkfY@yWP;hI3;X_dsg$xPB|@^G*r-+)4w8%Fdw}}(fW34ioqbJuIedl*EMfQ zmATR-Z2f z13049`RgegCzg(zC9MsO?a_Oi-S>HSbST4bK9Af6K?aR?5QvD%OYwcs_KbH&cwr$y}?d3T-o<#6J8BSm!1f3i=j%}6qy5yEB z=d$`hFIV_ql+l6TFbUvFL-$9&J{=2ry%~^YxDThUz&cY0IVl zT*{&2n$f!qo5w-&EMLf@IR-dLuw!Gl&fuk>_4T9sjZ#h;Ep4OI?4sEw;d9gqK+Ivhg7*!`YEE*}rd6ck~87tCS@pn!Gz3?#=dy0tbL^20`Dc#Z!x$nNkX8D?+n7Sm1|1DB{S#q^ps zM7L2!K^*E7hw1^g2q7%!N_-%{a5nRJ4*I)*j}z>$HaRK-mzj6Xp(5LXsm~p?Lr3G` zM63{64#GDJ1>GA+#qO)HH~^m-f57Ga9N=dNUZ;XMPQxpYKW-2Dt%R|phbN~TWbVoz z_0Mx!wQd_pytzPV{uE5=93cevBs&BjHJXNQqAj$+^!9JDGZBI5#NTZz)(RiLpjm4o z+|QB2a{IAe*AlBf5BO_>?=_0HUp&FRQGsO z@5)L*3tpCg@sawVB9OK35jS>gft_a%0&-$9YOVEPrGcb^2lv;jn~5oy>)(b9PgZk71fKq1RIj? z5tFTBa8#|oBTd4ws!>#%W)s`?V3_yGD|0bDVde1v*q2~ji^LrE1NagmP;_;`If%Hv zt90)w_DNOacWk2sTerJ?Z5-ytC^xyI_4>&X-Z2}+!2Wh`4x3zS8`puB(N_b$g5W3~ zBPqo~vZM3;ju7hJiI8fpxI`+crv#ohWF!EBh|*{P*Nv5avadVB^L?<`4Y861ml}|^ zOgnd!wbRq()^>*76Y)?hK}ke{zp3Goq**d+T5?wcm;{=u-w&_{t!e~dsnRq`u@pTA zla11-Ux-iP0c$)vU_zp41Xt?_y5lgT#xHThJ`JGo_6e7fDMf;PaeGS;0Sy}qj%-&k zS|3L2wsIbimeZQZDy-6h2Gd_ShPN%@7(L*^`a`ZyyY)-VH;I9Ui{sCsy^Cx_cLwg! zF)mSZ9~(!t1f^e;v;F3}jl<2(!Nsj#C;mZ8_2Gyr@eg-laD=fo?hHUw5#Vc-7z;+# zyLpt12zd;_rSNG~)toIcPAe}IoNvu|Beu_^-8YI3zSAUTt%%4{{yJ3YJqw4_rcsk91q;;+akMrmJe*BJSmF$ z$JyVpuV&eqWtWXN%P8wEKXS5==;v{Y&mepx@()_jqKNivOJq_SipP~L`bjAM$D`ge za!5RTVUFM59gfCEP+%I&i-|0GNxhXy^{@Kx&T&lWFd{vT`J_8zh^*-pr&6dM^}CDr z;y8W*NVf2GfUhEyaP&mOUF$lm96DVPsH7O1qh9KCVfP-$%krSN>s0;U=N zsBD6Uv%*Wa4^_+TC1n>>W(KfZ$!eyo<@N-nFJ7CQ-BbN|iweKZPqP6}+>U_0tbm){ zpNx9TX6kNAj2XM_>FI$3@9To2kl;0mAZquRT4fKYPuD<%68uag4jbo0#yGs0?N{|s zltqZ>Ac=nl`pAl?eljYt3S@k5`A~eS-8qjmvwp|;Taou}#RFOy!{r#wch1nMHzRKP zUh!o;<|mGwks_)LFuaFQgLiQQ!o;gcg>Lx-qb{c$GA&oucnyxTc^q(v;B7|dEO!-P z@-&{l#^QPw1}eNqpuCNWeq^S{)WT0Ni!2L?(66+O^h~hwA;L{J0SLk%)S*V)bEjq%F(o*z~n#2eWm^(M}BYj^XaV{Ju zW1rj;>@U-iMQ7Q>e>ZIc(xhQr8~l*JsOrpBv&Q3iklzXTX2SbCnLbh}j-MVvub0!= z%4V+AriIG${Lst;$qiF>irJ*N9q*ZSK($}d_h7#+g*Ee1m{~5p+F#V>=d12aOC{5i z$?FuooZgfOy6Z_GEXCknK0McWHqsH6sGMpJDPOA`M&zs^V5icwotGD&X|7ai0T(2t zFSEyK2G31W8CTPB$pOm=v0q;k(C@VYZLbSxyBg4Tj}e)mQ6rB}qLK!5d1XM`tL)@O ziI8dc$7Y@F6e|rK&;Ib{aZ;c=Z{qOFdJJ(w?+IyqWk}8nw;#-oMlX~Vp&S_#zBkKwBOO*7JOZV%JIxWfDKn408Gtp1QDwu6!L>o*bZoPHW zWSfNtP=9-?EAhfvO$43VjO>B54b5E#ikrBtf+fXCYPL-WLFAJ~}+F@7ssawXJ?Yho^wEr!MV?myx z@00L`Y@1GK^o*^+1ch)P^Vrm87X1~^{67Q!lwccJH9_N%;2nf-GY6niWI>j6=*$dm z_a+2ox(I?TTQ;+pCQ>y`+ZZnGY8%%>9R=8>MVra%IRx6-OAKEArg5Ge4*7HBR-p0* zsJ!uKb23Yyt44EXi-SMQ^R;(#UicBqGrN+b=u}2}BBm>&4!?|)$1rD*o@&fy_|dM^ z_zl1Z2}+kK`z(2fJ9)N=EnO02#;-IHPst^GBL~^SQ-7P7P7Eesax4E;eTu7k9N;#B zO;y4l5**BB>|pB(@L%k}`?{y#;7o-a^vwsHqjv({M3@?&N zGQ7@@S}%5yzJ6{wgLACC@M&IKj8O4{h4Lc5Jk!nS~w_;odr+p1*J z0%_>dWiFFH$f`8~iV3Fa$%h(wT- z#WeO$97>3oo(hDF?0485rj*a__lu;8#g>G$)4NA8~=d4fq(rkB0dPa+kGM zm#I^SV;E;UIs{FT=L1LVzmJ(lkRl^Uk&%}aDWv`o*Nig@oJ+FI*%sBZ^VVr?Z!Gp# z`ECA+!!qahtlc~Ug zb~|1ulkznkod?xoxcbJqxHEwn#Z{>-3s_B~-ygWZch_T0Dfh}m?ql&O6zd$Gug4=7 z1DV)Ntj|xFbL0)Ulhc~tMuy1nbyQ()Jk3WM5e|yRND0bz!$a0hUj;6u2QuEmk+s{{Oc!hzoi_+^66z>=0# z`+3l6E|UuxlFe=9D+^m#IOwNtiSko#lBm?p?WbYgmOHndH)| zfl!=46{TV+{QVx+hH86km&{Q15h>ah^_|XV(2f=n0sI%4)@dk@_sGIs+v=aD*z<99> z^DNTjp_+2zvEAo*_Wuj;mxOnf#Jy)|v%HBY`qOxTfj;c)uhD`0oOR2lk<<@C9TKi7 z8{N_!b)i)39}F2*jx@CpTEblafr$650NUTa!M=i~5HIC1MY)qxo-~^iO`9ibaH7Sz zR-W+3lkenKeHwr~+UOI0r$=m9G;hh-#647SeO zM3MBY*|lx66G?F2#xdi$48FF>dDxeQG?syHF^0x0cfZb(40PM0aIkkfc*=|)+XcAgJJgx5;|e?o@{P-a6;0`V*5ER-6)$9 zf(??M$LICD>}}$dwEqGJD`wrHeU8cLWc|l#_B?iA${wK2B3QyA>LM+E*hh4bbn5SP zhnOoLZwEGu7Hk-(y^BB)Nk>teU#fJbiOH3#7?US z=TAa|TImL<+WG}HyeWfU;viR{v!;QubR@pjt$gY{;jFB7fT>lvVeHjsCTYWIuZ7&u zXsnPxtbDL-RvITWo#r1HDh&Dbh|wxB=uXFAO&wTbp?#xmeah3<@+PhnPu2jUM zNnyu_>8e5s3Vpdthzpza#y7x_iYKX3Rm^*L8c(7ycst+(A?(svw3|C_v3ReStYDkI zlKbkw5iL*HvW$!;9!a~nMJiv12@Cf9nytwcL+lFOu6wvWo($t#!0}IZrFIccIU4ZH zby2oJgv`6*8d2cqi4hzV;7^LOJsy8xVYaSESeE#@rc6p{xHh`*N4qnjc)uzyY*f}) z&BTTx+c>7lpWyvDOc{h1?br@-TUbiMk29I+ixT|{GMBj>>n8dqyHTGCcmP?@wnL4w z&9xBDmBT2ppoMvvFkI822X@*hE7n@)|5rkkL)%I-gHiuwGN$j7Z>JH9@MF-nl-@ax z{~q_?;HxYAj6Z*Jk-S`Bt5}|Wu8CDesq?)i;CG335du$3=CTlWT8@(%#wYoLR*RL; z#dYC$xx#9*%+|10V(+|8{}r~`%sPG59S`skJbYSEzn4(05TjM@_pgGHhabo<5P2y4 z{4~J_L$6drz>sN+$(a)55|h38@10x-YrryM_cvURg{Nl5%qpqLA2B1R2U}U?6;8Jq zhF|yC=PafprIU@&VN}Od!VQFqru|G8_|Tq@c|MEa zgGtHe;t!ewu0k4~pEF(+GKaGsHK{F==MrsHmIhJyql{_&OyzJXCr>mv??v85JA zBil$Fh*c|&P7OgOvF8Tfk6zB6l9SWY5$;D{Ak{?E>r^8jToRiPhW}Y?NwgR6eFO)2pBlDzPHS`Q-u5WIo`0hzwD4M+*{KgU`dd2# zy!CUm-5sVp+;QFDJs=hJJwih1*cF3lcZXRoIG%bcn5g3o!t~y_xxYQwf*FN3T{_45 z5?XXUwsPSl;715{>al^L2Rm);RD%6PIWVxU#>0ac&%Krx3K_Ad@xpOyV|{%xJX4ge z&6ynAT+>r1%`&%BzGVtnA#3I zy|<(jP}m)0=9-Io^SsEP-}>vr?Va|Cq^3}2 z^z~mQpCE~D0Q?}~gN|Zk1w459K)=)7;>#Obr)W7@-q#(%>=JLOTcqhoLi6m&{~o}8 zFT8&aQ+DVfB75&g^fRAgcZku>D-83A4igPEDMG=9V;0fWTy{0zO9&zT6x|E>LW!Hz~+nA6c;Z*Fq-T2JBt=XEd8_B~gi}>%N4^GPo zEtcbS7C>+!Zuc3lGaB!W`|-){c&*>=ogZ~a23qOhh%nqOwNGXYss>&^44cw?1K^c} zd0Zge>PzNxdCsMmRZsg%Ni$sOBbG8`#WnvM+3Tis7$8&iEmhe@CDujG4EwzlqS!jr zRCR-E<+r}Pa?!NW=9@{)a3Ds92tL$|4-f}gPR$uDWw%fM(oxSl6kIwaez|X4BtL(V zpyaBb?Y3j(=*ANOLqctjHCRd#ux-nJ73xpp$vj`4?LNYXXOL`f?r%LX;&_!PJqvrw z7UjieaE$mxkK(y9&*c=shiJ54(*vRMDaZSVFi~I_{>Hg+ZOxsxwjGbFzMTb$IBpX% zZ1fL=`Rq4mwKy+)d;o3}O#e&py4aP&Kp)K4&fz&?zR$Sg|0R;mKCb5AZ?O!iIf|?D z``ETY*XPsnws7!Af$$Cx>dO?|i@BIK{E2ODoWk|4dXed8rCKoKR$w!42}Wj@YpqCI zC}-n~hznZm5qywY{7c{B&UYw_wDQS?sFu|#C9bN(hQg!;hoSPKWFX9xWsppoc@R6> z+r8Fd7|HvmHsPz^ZqF&HK)tmv9k~wk=uq4q?Vk1ql?J%D49E7CXXyuaT~=8jl2t}5 z%Gx@5`0$}DJm$fan2?zdG&yce)rg(8kUglA3`#8(F0Ck|V!Z*`Nu|O0V0w$^$@K09 zyns;SN{Z}nw8zHf;=(XdxZZLfrWsuhSRnXcIT)?67^22ItODZLf}i;?yrlK-TZckn zN8fOByzi@r2H#gIWy1?MO5So8wc}?o)u#|V+*YFPGz-$?+;k@!VJG-Faag?AC~ zt*`BX3(MY!oL1-Bcx(iI(XaC?bx_p|gvj2O9Q;7>uIm|yHJXXFd9oz0E6*`clW%cj zUR}hKY_`j#;|sF!2FRiTvS_?R8JFq&EE0y6uTfaP=px_h`!bxsJ@`qgToNrB{~zFy zgl8i7Y|@MWWf#v?(2Z>VzJo142lxxZ1tbR!8rh+0n&MMZSHxoyd}_I#3&C?5`298M z1{)M%gQ7?J?(8M5qb^QTcL~`=$L@!3Q-V)PopxJC%TnmEe(&2N5(N1SKKT^E5$&Is zZiG{yrTiBCh3>nH=v6wb6Dw)P-=lLDuQj8y_r~LPGR@Bd8JfQZK#i~FN9TrSm(A&F zwQtqj?T`tlDn?xP>cjv+Lgzc}(YP14T+Q=QJ_WhZ%uUvnkZ*yMIvCpVjoN(#btgv7 z`&+%_2`iGop0>pr)^V*;P}a=h0M08>GzW zZtGtqy#+S}jAbJ>Nq%&uiS~umuIO3sus(AUKqk<}!v|1`{Y0n$n$6ZJb=sAGJQwfl z3Jefy)#*e`ZOh6G7RK?X%AzoQqo@;mX*$G0b?+om+((8ee^lh&dCMg)c+YqJkAM1aPyE1b&)PWo{kzXR>nTUS z>7EaN>hA~l-1v1*e$n@xy!^TQaj*=^Z`=jAlVHnhnjtuN8efS_Ysi4SOBj!qH|?s; zGQfepk~)sXsNpq2q(5`2Fd_c#CLaC(0Cu(L>JVz?*Nb6%%9rsJUtI>H@HDjs@I^Tv zmHazA$p9c4n_J0WwE8GT*2lvmt;eG%9o|dq^|Eb@)_Ks+2Cz2pQv=8V%{}kP$nl_W z5pku@4K|*Kc{N`RxQ{Rs)4FWlOxV70H94dTL!cfvgBWX%B$J^e=yI>wr0kLz^BQA; zengG&;_HDkt6~>S_-)GjOMeWy_+5g(SR)f{R1xVxd6UM`E@j`WovIkIdJN(HMoN-0Jt{7y)1Q+YIb! zWAk`Yl+ON^|E|i5vUB`ih^aMC10F{Rz>mh|4$qkxs#4;lGYh2nV{j$IEE$m@2x+d5 zqnSe7>*<+948>^NMpXyziLH9KTybn!>TJZLqS$j$AO&Yj%8x98s5nPk`( zSwyyxeI52qc7`1n79S`exPYiAqUZw`M16ohmG}QwovKskRMk0kZr{N0;QW3y>FKV$ zzWVm>tAM@eI-E5CaKUPbW8eemynZ0aMf(((}<=$X4vL5RS{ zKIx^>rUDNEVl|F?Xn1J@Rslyw#MYcPmfg@E$<`u11+fs)p=w0Cyb1B$mhWN{e zgN^lizSwn=zGvn^kS`rcEjBzinFGt6;h@*!A8yRdhDa$r!hKKED9{Q1n&eFTFy5DF zuO>nZB$L@5Z1?etVfOH95d!j?F$@TUn7=Hf(yow7mxff@8B%FSNTo~Ul@fa2-0KV> zjkkwXnh&WoCl$=RkB4!Lc>aVhDW@kD(!s@L&zR{P$t?jua9Kc|UG@;P27|joe${HLTnH@g%)6iw7LgrcEui-u0d+13s1pJr zb0L>_E(Fcbg`oMlo%uk8!-MsW^}uU7w%|7Yqh1gao?KFeYrHR{5%|6~z0J;Nml!_PiN-^SBkQ$0$yGrA^I4X)LX{l9JIuo^ z^M|YthGPelT`)tr9~+*{$RH$&!W$+TldC6O$eEf47yVYcC$U<_0BJ+Ca>klfKM3;X za3WQIp9Kj_GqIWcXmYBJ$)}H5b+pY|CeK0e(y)8ZV91ZO`>RRD`&qL|jnCxhAl1oS zlOqt{Hk?l0W#b<`Hb-FgL^vbtwb=glPKc_%9Wx)IirKqWGO z={pa8ihs!qEFw=sMs6-g?xJD0BYgqovsW(vV|y2}Xw3Icu<1lV9N8dkn#0d{H+}Zm zbrHOi#sDvI=^E_kgI$kMVM?Ol$(&jaOO8|seLl(Wg=%t z#EgXMlsANskv|{xER19=3(W3*xY5ha;UAXUXYmB#DLlLfQ9gdbYrgS}D7s^lI*E6p zAfHq8rb?H$tJ}Q|GubT~Mbk9qd6g<^XR`@#XngPE0-lKSD3);dVAK|$6HvEb#xz(?p7;S!M&@7{I}Ws{L3GD zw@*Fwr}_Y(9J;6BWc4+t#eKR;s$p`@}v7)6G((zRgDT z3%v~>@?kREJsKfwkGYQX$eE*VHJAZ~ccprp5?OSMQiiM$EUz>~#(?_g< zLtsn;w>uJyx{koE zc71!uXQM=Q?kx_5?$xybhr~&I7aVXzUh}Il*42(w9+KCRC|x?zn0Jd4jLWRRVg-;n zxO(7j-?L~M$C+0$Z7csF?rQud3M9kEJKt*i5=tO(KzM3ZXE(R@rjyBx@Zt$7+Y;|Z zSawzK*K zM)8_h%TOd&GA}txv)Np!L^(XZw_zTQd!ZnKMB_&%<2l&RHisN2Nr0fbu7?JVKWjF^ zi>ot~C;CGJm1!ynLj@ydFR!LBe{pzk&&7(^B!3PGi#u~9lal*oVzP{xtHml!h+KKh z0Fo9VSF2M4AYG(Ciw&KLQn-xRT_q%EHX6%6hx5TF)TzIUAD+ZwBc@aoxuSb5+;XzW zy=IjpT*gRwM=3bvJqNoLKN{r*mJ$pkEF|q-_l9KUD6&OyU0Xefk0>ovRJO$^iG?AK zQ^{p7L;N|DlRYnT0rwUrT$$kDTP|)t9!Jr*JIeR7)MXX6I5-!Ju>yoTe4howqyqOH z-N=ir@P+jL4#H}FVXwUou4vfhTRwu{1T<}PbSXzR^A6PDtGz49b9@elR1T}8xU{+# zkxs-ri?FSULPi_2fRpGeC|_i$LK3Ls%I-m&bH#YP&P#?GD$(1UeYy`R%VlIuk!kz> z<`gS7hA;=7y&|ExdSu^nH%j~}R^Hr#+wq?)0jPZkSASP&wWa!civ9x*x^T66wN+?e z3^jhvhtTlAQ2rSzc*Zag>`lE_%alAmV?(tX-eXbE8)g@BDX+MFN86(_@NIwzH!~Oq zTFzbM)po}5Ilg4}=DdruLuwhM&`D{)*1BFBdP9CzJQUNVgh_Gv@VE=Few~Y}l2r!CGvya|>sj#qP)BX; z+xJcDAPkofPWZo-s6Ntw)sh;i#mo*il7d2}u9109YeETRHdX{zSrGCdH6 zx+<%PtmoM|A@vsG2>m;^fA@|`K-6LX9$>`*96P#im+Z&06`8)%GZ(QuJm}7xL7v^( zyX43+nElb6b8_+}*Za)9dnbbd3@(|dwBeW zXQDi=f{MVVz+#NOOR0mj2guozgg7~_UnK#JvCN?)SMBK!8v{wA3!AH~=7CF5Z6z6u zlXJ43f81kz#0?Ec?VhX%l)Nc>Gu42&6Cq6tk}kC{*#OE3yzp_ z#f}nml5!KA*fczS?D+{|oO(qg6v(b1E)Omu{AE++%ePeX*!aVPpa0<9zVvnIrsF+4 zCop)z-q;V22Pu8RpsyVwZT$-WUU@gz3qD@(_)aLdVwn)!;z=)1(;-W#t8lE3wC>$g zT{^<3>rnf;O(H|cjfuaH2czAHZmvRSaCQNq0hepAO0p+ns;buEn3Zls5e&T1^(?k3 zP=GpV3AsBxfe@PGA&uypEi7(Giwvf;&Hldg2SlQOwEK_;HjUVzD`+6qsO& zIE!>b5+QB1%|IeC&*3WJ9xl*Aq~JqhiBwB#<7@VNbZHr)2cT5>0QyCgf@ow< zK+qCBi=vmy$i7SBGAI2s3%3kGaZfW#2$qF?IJQ9T)L>)SNo-4)EvD&56;K&req$z) zN9J@t{jI#u@3h+L9dVyax*+eE>9I?gYW#QNiI1Xuki|yQnx4z;XDde}O;&4TtV6?4 zRi$zYq5mayvKE#D{pZJ9%X&dc*JTuh7q( ztC@&bU_*XS;Q7`;H>@wdTIeSJW6bjtEVX%L4t7z6tJVaJ&!)EB;YXn40`0L19{@)+ z=|`Y+_%$3S>MwC_Lg^x|X?lo13z(RJ0bmCHs57VRJE*Xvq$fPjJKAc+4oFDr0Xr_f zETbjK6@wmp0c^faqZ6f13`6zanWYrV?nMt|NKH1q?5uTK3kMgpk-+YUJD^-E6ccCb zj9Ck*(zNAQC*rf&QnN$P{)pbvJa>Ua&R!Zj0WB<9n%JVw8dDYsipKD4TkK2wkwF07 zVKm2K&zF0=++ADmC5NxvZ#b;o&Ze)o&iiF{L!@rB!E*E zUY$fgB~h=HiYdcILpy~&4yqNMCSPbkK8;a+kHs4nyW87c0xzdC882nOQE*G95;C~QeraRJAMGqtgnS9lcG=GEKt&OnzU@KmN-Y{i_rrjV zgKh*|@=ZQ1i$nfLUW%uq&=3BJ0oZaU>fvE+t;lzH^`Sz;?=x44N;v>Nk@*4s<`MkO zqZ@2OoYDrLyD7Wi=fAiqduLNT_AI-VT}1S^&Vpd;A)!#;_YgU@6gN(Ua&5LiAk@t0 zEwxKwd=Ug2|4;k?_oevKN}(uq)KBA5M(#h;k82jpK=$jw4rKqu~pI7Y^@5J5sd- z#FX7}g#BpLv{g<*9Ob^pcj3nTAC!M!v8CONRm;685nU95`aF0@c+{j%zm{T0&vXjz zUABNGCJhG~!ynF530)bLY}q`Oqv%pNvR5Pis&&xvCCH$VQk(D8`)oR{rL1sCZPQw6 z>tS@K#u}v)Q+oRU&P!Vdb7USd)5RPy;`rk?vA7jGRJc$Wm!j0RQmC=D138J*2CDoq zN>hRj3hYGbeY{!^tz5CsES*H&@7*58gg6||7Q2R;2=~Kg1=3+uw4r-DGm}UeBjxQ} zsUK1(5*h9o{75_1v4$7V<{TCoyXOeiQ3lyJI9Y!V9L;1)k zK-Gm5<{Nh<+&&HE2`u$M-}N+zef7|9?2SIPu9Q}VJ(CkdU`q6_EH-+}XieTMhzCn7 ztEQySOD6F`rz$k3pedC38ud~r>L#zE;v9*s`U737XHrd@<9SpnU(`(s-H~YG9vL6aI@#J8m z-#OoDkH)>Er8_vZ&J<~b;R5^?Y4_K3teVofmzWXkcb80CEYUmP0EWvx0ts7-N9dDQ z!3o%n6=^+&uvuGqA-e7(c}?r8{mVy-D$$YWsnBzIJ!$v*gR#JP zqt>2e+$L-SGK7Nlf%xhEEH;TS@r1Ggi-z{4HmkBq`aOu(phk$__KVpt2xQ}mSOhMT zYkQy{_>3niQ{$BbSW>7r>T-(dcZ%z~9||SLT{fB14*^xeqYV>l6 zY8|v!tSpY=IDS}Waci!W;5Uouj+c^iGL1_deB2M_Dqx=xi1IUD6Q7xWZC2n2nYA=_ z+%xkUqGOky%08jlxuAobrD}CA4@ZCYp0GC584cNSmMnNW{Z}Ui5H4**E z8RGjimsSHU2@4z>27|6ZOT?bU{1@B2FyS)ibJimMP^i@#Why>9nGSjnJ}HqNase&w&0?cM;u6c7A63Oy@W{D> zYx{eYzh((JJLz$46JO)pXt@lsM+cmK37yf@z!Rxpf}Ck6iN3-`1CK_3!(zIJq~cf! zC@JqSv=m=Je(G9qR}-)u=-r-tI@N#SvJatL&SI+^2shVu+ShgxksY+3^!7m01a@Aj z9MXP@UR_7ouXft6z8{ydpGyCg;OihFQSX2rx3PFVrcBbHF8OSh2~^CCG_S=?IGOv>bQl-%wT)zG*eFJ`j--~SqaH08 zrB1?E9!%QeMe7p9`)e!bdK9qAr%a7;)r1XAk($bE`oon81&79GzBco;pZd~Gkk{jT z5OlSC^L|??Yut%+09f0kKcNoXH91anC%)L7ZauwT#jesulyBm5DC;b>&<1;$nH2UN z?34m~t<1p|PKGEQ7|LcqG5cn9qW>Bpu{F`CJb?INIDp2(QGm@FX9K7c+g)U9c7^U& z`pbGmkiAQay$PbZA(iHA?Y^MNFn*}9Y~7bJ(^-WT?OLLrf}@6KG}Ka~ac@eJOS z9E|2AO#cbbv`FPOClF>ODjCqc%XU<;o|hg_ruYtKKx`X^H~_KpNLL`iu<;mTrC&jL zEK4{xWb+`h8E22j`>27!u-at!bWZBEC@*F4I$iB^y^w+1?LY%5qtZ(l4I=bo)hOVV zw(eYZqY|K8PW1_9$nTBBr(Z((JWFkiyv;TmksN>k_&i?i%Px)={1Ys4d~DdRkoKrN zJj&!Q`^Ke>wYqf*1kAo0=^%Nl5q5XR2IjP?q>pY>V&<&kJ`YV^a~`aK_>A^-=Lp*ub6)rApiQfREkjw zHS{7X%K>fCRb0|El?0}-rR)-x4tQWRLTKb@+;6WXH0#205AW>KCVYp%mb7Z!jTg(; z9jv`cGof)~aW=2u%~(dclEuE9nzn({GZZxTZkZL)6~70tZ`f3YQRFYZjB5toSvE~J z=NAUy4x^vE23d!bSUVhyWuB^J-OJfVv?*q8j_(Qsd)l4sSfu7AE{z*bJol}deqeE1 z#Qx>{N{lPa3n{Kr3R}X%WH79t1f>^XYInvBm0i_UF0HO|*&DTnB#ZP|?`^Dh`=i#;VUlF7 zpW>HNO+w$tu3%!5{R z<#-lSKJeS23H_SnO#3k2p=qxs;<@>y0iS3%*zV&O!)j;bxl01->`({#uf!*aX_}_M^{m3VABsf6vwe~uJ6;Fu` z8MQY0qYWrau(V{Q)gB}N`^k-Q(mIl?4bCRdHm7^w@L+vooxS8x^a1&R3t>H6b7qhL zBon|D?cN~#2vheL10HZgYnaIf7-uEKqtf0eIFjvA*2uGT7nAipcdvwe5ZFbK39 z8@=%rz$1gq{vZNyTiqs?5B(u_; zeUuSQYlL@|^l6f0xnaiBg)i0(H3eSYSX*nSo8);qC;!Y0I!zW%4+f)Tm_G`Ikn^01 zcpW9X)sEnMm(TNi^+c`3&-zxVo^3L)gkEJHv$Cd4b@DRvh5*izj$B!btCZW9U;UBx zN_QaH8ow8Jwp^u2It>109r<~XtNexLkSS{9gajSS@7+@SWYQ~avgg5_d@Ysm^|^W* zjR`QZQ5M~^+&-J^**JAdICaMN-u>2phiq`qoJ?f<_8TJZflgb6I~WN_8Xt@;8DG2T zr}8#h`keLCo^07#_i+eF&l$4;nWbS1Oq{TqX3m2@qD&NBi*k}>5(X3P#1~{rV9f!B z%-)anY7d2K-q_O_hq+y7Gb5_J zl_q|6yj%+rtO1bk$MO+-m@=b>+h(jhv>)h**BeKvmz3KZHUn{09bLx-%_Eb<9UX4q z>Pra(Rro!L5SjU@>np4=;okPREuVJ)c@sp&P(Z#Sq`nvjPc9P>H&AHXUkh%zP2Q3f zOk*`c)=%EUQLEEyL-l+Lj8*ot%%j>mviI`2jN+HBqbNK(L~(=T%RN5lpSDsy}9qBL>=*-L17j4n<~?tXj&&-pbdFJWINDIrQ#3^_(AehFboI~11zEh|Q~qgwKa(tK2r4#f?4oiz|u(|DN8+!ZZs zw+_(HmpUQYe-uLq&!DmGS0n79(tSxg1*O?bs>}%$f1mTrM0gE3vg6BX!U*h`rTAOH zDGBHF9pZB2xqs5X9)8i%>+Bf zN1PhngaSu{=sDq799d{4AQKqlc0cj)GY7u(^!q>f#^#S7y~ka?dUo}F{k#6%{eJzS zPkqQk?r@i9eSPcMi@yAWPq_6vul!j1kG}85JAC~${kwnly=W&4?XSQOFJ#$_;E(oI zTN-cbywLw^v8^Iq)EDsY7wqtUQ&xa?Ln`0fP7a*wt!#%WaY;cGE^cWBCv&?XNxCqp zd!Se}0DiytDmYTSDg~MZ85+Ce^Q|@6_?>M5L&4xtX_Thm#UQfHS`leXjY#?g%^zs&N6QbaMDrKT79_3n5X zQRWG|aE0<3EaHe&%F$1;SIt8{n^U_P<@GGK=BRKn>6IwcxThMHOoVQxw7V2s+1xT(iL}AbLQ0KuwuA)X$5J#G>*1MXATaKRC+Kpyf=)=E3*o%G}4K~AX*E9_4C8- z>gjP98VxX9OS75SK{zA8YiP9v(;a+9W|zQ~_a^2k<*FV18ms1hczssNHh;TApf*&e zIb%7{=Qi8*p;}*NrKi{o`|gove5$tm@(jgl^I}rBKSbekPapMKG%V_NRWiPQFg$}s zLG&%$E!|<6S!LWsD;?2m8Zm<~IW2sj;o`J)U;;cTdcl9<0*1<*$I}|ZI`Cyw{9BfQ zYr=N7l^_XIz@XDja|`WG|7S3iCI;=MAf0?*oNDb}UOe0GZHNZaFVR_PIiVwmG`!}A zSRZ!bJuV^E(R2@x^Svy@mqAIYk}EJIFJc*heR`uK^IPq zmN!n0k}=m-G;BzO1(UPD#?sWBdI4lHpo<5wrH!{~tgiLeI-C@HiL8)S}k zZ*sN4mWdg|r4bgJTz!laZ-4IlKa79=l_Uqr4x9hVVv{Q&CkkOlJoKA+nBK(}(3H{% z8Yx-NqvLcw!*26OqC2SJs0|&$q$&F>k;inXk1fy2zNjmcy?9~_QCt0yKnR*Go-KXYvneNk}f(`@OmV3C<%=v%iXd0Y0=ewq*grD1*J}wlK$%W zw6O^uz{w&xO98@}MAnXK5|hYs|9dK6LFtM;;8#$K%9(j~Cl3&^ss}6z-Fn~|wNwbG z>bT{O${O5|DG5`h}+#8>nb(I=Op zv9#J62mA$;qbv^p4eK;SB1N_i-;_26X}%l<2HNHeDtwUG_3f)tSOFi6yatJsB~~6_ z6CfVP6jgc#rsb@u?F!<}y_JNFk*=kly3{LOWN0z%x3+-e-Fq=x?FZmklf*~tL_P+SUCSa9k z-LR#(&hY&Dc+gr9|D@`9yq&uW?{Gx0Z1y%!7OI^05rUC9=d!vP4SIp4%{1iP9c=Km zwXdr1mJ@A*Sw6wtX#KjE2UIv|rwqAowJD*fy439_ zM-oN}+rB!oFT5zSg7~RaSU2=vw#HF3;J7IdWho{^yriLgZbN5WLW=mEjIm!=|+cH*%1Vqx?3DH#dsL>8T`$U z@D6TBGZplIqrhWqw#BA1x|$)i*}mKY-lXHW?RzY` zK)8{JHnTCQ_;Y6Ys08L9`Km;AGKC_qb~{_P{e0Nf+}T>-MonzAtwy}N3-w4;BYZ4$ zG;k3eWtng?XcYM;0Mi0o^F9b!#QbLQm;krz;b5EL5#(^8-G?(wr`n&CXP`5%+6xe{4}cep1FYFuY)+S9Ll4<;*Uz!+Z%)jtgMcs<3qZ4oH=C z)4%)IV2D%GGRshLEFQIeB>sJ*BNX03hP$MA7`s>+^w9`GsJrqml4eNdlQ|)fzi5fY zra&g5o4xXCR1%*hS^!-inFuZTm?G66t0QGG$Vu7E57M2~CHKoB}2o#KxB}C?Q;elq%$UY$KkY zor6or_5j<*w{qgUq1=Tf2w-^xTT3!x6`d%vPBr6h%bJPfz(kww-?iIXXZ18=1J zJ~do-G?Yt;e=K)d%DH%MPqXr}dMae9OnZ=m;v=@DQBflw2`es3^a{*LL~dqh;b-y0 zQ#Q>kO2NoVBwf=*1j4cX253poTmIgtoFz;NR~a#Kvw3%v?`NrrVxn6+=t&jlQ;Vg^ zxHLiP4EAigtcllcBEy9#lU5ILJLsv+yn zhUe_;T*`-e1<+y(bl>pG5XH)~bsw5U@BDs;$MIs6XS3K;P61}#M>1;KdRJ8wzW=sb zK=U`6Rg#X;w!EKpbKM3EYeE-{slA-@Jch#Hje~YGtpvagqAL|@i7$+~{(1IZhv?1= zpU=jG^tIt6)}h>uNS7cG$yYGzuhak$?nqo0Vw(;$tBA1c1=C>oo&+Cr1^E7p=f#&N z`R{hyQlOz>{~@grM9tiHKeqh_%GX!|nAQ3820M*$)rVK9563i`0sP+l+)HiK3zB8^ z5@9J4b{B_nCaa+=I2aFKJi~p^{>~n34^%F!yv#}`nz3aG^(a;ric8Wy0kXj$!lCNm zz#x8!eNO0cx>=BAI?SJEvE@?@vK}oa?6{V0S+~g}y;YoO123U8{*omKq%f!G2P$lk z?iUH1sLT^-aIc#N?m`a83yY9p6vPt9kC zRhgvozg-;ry+UPwhjUygT>GWU&6`acRjY6JUc46F~Yr%v(DFN zO?-^sjmTZ}SiCA}uxCdS?7ZM_ZygFv@}{Wp*=3yrT?W!lq$et#yAdqEnLMK&8*!tW49k{kjdEpj zd*kCg+h0VvhQ;QEHM%u5ayW@#*DX0tw8C*diSiMadXNxL3UYqSaZ!}m1d$WZ{=5pS zqD1lH5CG*?L~#*H@Vfw46&FI3NJ@Anbh5l0W@-!O=2kq+uW@*UUuOxPjhLSxvag#jhg2k z%w#(HRdC@FoHlXqggo?0>;h9LzNjuf+PqP|CQ!Z(2PVRSZ-swvl}SkXuAkj+r}wG?U?8 zU8F6cYlV=ZA@uNV!e_^Dee;N@tfoS+YdXq9IrYEE+=)z3FUzvO$_`FlsB?Cu7!1>Ny{P? z2`Rl^4}cj{kD&N`1JNjiF)$S*2V6H=z2(7K;CnCU|8|r&uz1Z6`KVP?72l*F;4pqk zI7^)=97Yv)fNJy}PQOa0eh|)B*C2VRW`11G+UDV>%M&{FKgIw20n3MCOADbiw#H4? z>K}wF@fDP0#lRp*8wd`EAB03an1h(cKnd(F^`G^4;2Gn?O;FE|6T$a6Zs0l!6AhdW zfnVW9i^@@m$l(A-HpREWf!~YrHWt4qupux{X3Iit@r5M%m=HsSgWqp)5%hW4%i@U} zfF5A5;*6@{LSp%H5PwX+`?J$$qA)b&$stE_DO<*AQYpSnXb1o@pB?^Q9<~z1>T(!5 z@y1wkj3vi=t8Ow|@Z07kEoK~>mw^QmT}k+?0`g3$ct@}He|e)*s9H{P{8KYrwsaceyLf6ST%lYKLk5&v#Ix_@wRtL+#Nws1DFIAf zCa}z?>GfKLM6SIQ^YqyfA}i^uVBlOKvbJvph7Jopb)W#zn^bbOd)`Z}Gz4N&eotOG z^ZWuGW6ElE8Ho59gsERcc{xkS&ASX0>)pKS+hru^G*GwNAaaKqjdS!jbJFypgf=v~ zYE!Y9=)k&XLK}EJem`LG;@Nbsm0}3~8|;f;JR#wgt)qu>d3AglSYLd>;$|d#8K{uH zj>Y!O6o^d4v+O^(h?l679-fO^k&I-jAo5Ure>*u%@m~>7KqLPN7Vj-_kv`Q+986&% zk^SJ=Xb2n>JvBg`u>ImXO0b4YBN=d;wyO+MFTfebpnmbwSnRynRp((~%y_cX+-h4U zJ8PrXA>{t;_G$g)Lx;mP5p-xrRP3WUNsOineb zm6jgZjquPc^PIMnh4cO!iL_8*eP85aJ1E3L$GsTP<}^`Vd^K+7X^!QNcgz)T< zoAVN`t+^50Wp~h$cV>irX_h!}Xcxf}rJU?ZuGq!}E{$8ZJJ?X+boEut;~!Z)^Oj3U6O;y*rXM3nzt>@d=oHLtJ2T z$Ez$M7g)F>gk6!62N=h^IiE-Q6Be&znB5#9TV?+%&`9IA(<0}& zvgmrV4(ahQ$=K_ouWJ>?LL+|SA!TjY3vg%_hO%Y}yOE`B8C}C&(l5we-@|BTJ^6`^|>Y1RwEgssphYlLCccMfC67op%6aa12F1Z?`>*U<;{ z!TNBs7g_uAP~*)mrH7e4G(>_Vu4O{liEqcl&>n|2KGobyUXd>LGq$mQM$hf~^f)wV znRY?*IwlG84@U}zEz+{hoG+&c<5A_M|MoiHjDe`$bZxV!x#=&&#zPYyKlAODP*!#~ zRjN9%?{#rOHI25jZwLs*Q+b!QcK25CaK-ra+Wr;D1mbxH%wmhpr25~rwNrqn#2c0c z+ssM^LLf6CA8UcM9x}68sFW{}Xwo6@a%*{qcs1xt0o)hIQzC5axlw&x>WPJo+Q_V? z6AfpLO}IUGlv)m#X$HVYgEuT$5P%xG3z|eMw>KK$NiF ziKew6Du&J=hRz`V$NJ~I&Av`K81zfCRjAlT-lF3qZ}v9TQ?__0T6ir-f!L!l*bOXGxm27$z^$)GN@p$*imHu! z9Me{AuF7_&gykAy50Crt#3(d#zl_DBPleu7QE|<8p?Ya}n$~WjUQpIt4>5O`xZgz1 z;|?g>SOhvfiIkb0^PTo+jQ5+1=%yI%CDnWln^hGJomuN_Z%1*9q3b=G6q3+xI{lUh z%_+kP@Mm#BJPT~a_wp>ij`B||6GeidVKh^Hk7e+gityOo>&YOGG&8#GYv_p0!az;q z*D32rS>gD57Dhc9)WSxkzN6rYGJOvc4WK5 zSwr1&oj?eoZBr6H9NtK_bH-F~bN#KDuiu0k$Egzl_9xD3 z#meaNLOYfVX~=l-(3Y&V7^9GUwgk-YKX|Dgf-+*63^|4Jgp=TMn`UW?^xiJwiN*`< zUT336!@8}9_f}P2-1dxglS8oVvRCl{4Kl9kFnD{14Ps%kr}gzKTWvF@o=qZbLMgaaWYo*UZ|zNmf>^eC-ipMJnZ4K#WVDNU(&ts8#_aKFuMQD#`G1sUFw`?|Ak zg!sTXGjq6t9VZgT$}(<9(TOP_md}syE;inx@JnC0;24okwGcM!Poa^kh^MXq*Ml?3 zjan^)agB!&irza5%U4Uco#&ZT*fXHrHBEQr%kLDBEhE4kV(#LQO7kI==JJ+%xoUG+ zxi=gNPfB>Lv~#;c#=bP9(q$o)Tv6Y}$icboAwBIZ7t2Gs*bz`^e(sF|*ovTqXXd)? z9+IH0D8I^)1htSpL!e@Qdx?uj$RP8^2032+&62p7?ja!^haB|$E?n5JEtRX>OoW#_LQ=Ix}+(v`f3jFb|d0W>1{ zNw$afpdgv)!`~7?aHqlTNY`5SfG11`@J4lLM@uqky{lxICian1cb5;Ze$ev5yGB~;>7`aTRCHEbzHh$V&v zCa0wG2*`*oEj-saQz>()X_Sj@6R1aQNmWZ)axGjqHtgrPd*6d{8x~t)&J@_=tX;zv zShW&~wahq-DplDxTOD4aN`tK>TO+pP2Y8R5ONpRMiT=FyJ!0z+6U9e2bB_k2@w6@y zWoeOvZw3FZIOH)!9icSpC%rUyBEw*s^5yHHvl7Si>o}+mR`lE#<02koU_?4}pyLS! zP#=R8CMak>|K)mpkn-maGiCXcRRnfyCf_R5DMtGk&f5GlVQv(?~svMl;KeSA6e1 z?(m6wpWpH;ulPSF{_95k?l%c#pFsIAOAWYb21BH++Des;+PTQa@j`i+#jeC9XjSs$ zIp13>CHf-*^zWj4fTePq*<@>`B|F<4Z3vmVrLU~GUjcW&HXP)&DMBfgi97kcs&CUU z=9}QGp05H6ENojT=T*W=2TKetJ~HD5v&kN8BOd9Tz>;46%>mjx9US8)c&3Xe_htFB zX;KH}J-KkY+glkXeU2Bv>D5Iv>~*SC?QQguN5=oonPhls*j`JnM;=`Di&lT5*XtvP zOY1s7bL%SnAMq{Mh7CM`-E1J@wgETF#&J8iZEbKv7Y(GV`O4vqlf7;SdQZ5RLT2jq z5{OOgXRC)bLe`}HyLZStY#ThZ8AE8d`{S!23!UmFL$RKm50kEW2=bEC%Iu%Op6*yq zpa%Z1S>95^2XgkT|9!8ol z50scL@-`h3^O9A@B~#IsJzKaCJpc$1OHB%56GOFh<#G}fagD8M+QeGV*4)OjX{!K& zlCDfI4W0PjL| zdLgC!xS%9{0@_XJ?_s~AYf%{Oc=FdY7*!no>>NTpQ%{MKtgF6GwU9%U;_I42+! z=`)+=1il$mA3$6eU&r6WZDB;uki|x5V4C}*QLnWCLnfpisD;}Z_qh|0g-&% z!tqWx_He!sz0BL|;Q&$V*wKBvq=4k9L)KSI3^sn!lhSocUs}V6ip#Bmg0UYJ$sbJ~ zp4*3Ae*})8@qCnDWtoK3-@3M1d#-ki`PwbEhv-usb*!k2zz~b+Xo9E8l?I{9DWmbJ zbHRYo#!Y}x5p4!Ijh^ojKBZ7RLJj@>@XN3Im(R>U=J-7xv-7vV^z>&v=N^ySf46Jy z`vd>-z-Rx)H$MK9j~;sNBcFYb-rT|KZvBquzTom#9{ut)yYBgvyT1RSfA^}7d|=BD z-DC0W$=iPZ#_lIx@Xs&%_)RWbdQhR^S)2~yT?ag zxWkEG`oM7M4==vzM}8e6zZ!FmXHkBbB^=XpiP4sC3rz2o?`q@!dvVpw?)_jEnA#2B#IA3^aZbPiO*8Nu*f%|D01o&bTz`VX!bQQu=KB7NC{f zLwc#4Oy!X9a&>8@rl@DCjfa>sZ3ZDIGsr?a^K6@aQyAr7chmt^(f(sZ4?j@C5o&F= zEj{{k+}J9I^)sDO>+qEe%X1fJoG_5#kp!>tj>dHr-u3{3J=LQW4TU3*E|%Qne&qLD zO@_9dt+wm|$owOC_GBfSdmQG?I786Yux zDW8n&?Xrar+Z#w9{;rhPCMy75V}72M-5PMPTCXgLbnU3u%>+CFtXn>kt zPJZdHQT~j@8}WRsztSDTTQFG>+zBjB;(5F@3wkp|qQUcnj%tzxP@Rextl*6OvG;vp z)t@;@tnZ6l>rzBfrTdUK1yIrPGt8f4a^KSlWimiPJsE;DEs zA;Wg+|J2vZ!GkJuifA}W#u%sZ?up0o=E)b`yPuK#9M|}8l(Q`1@FVhm#aS@f0rFPT z0)dX|GCv8r}Odvsa>u%ow$arR~|oH&P?-ZpPHE?zPm z4uuB6sYTp39sVlB*z|DT2(K&ux8}wUpW0WN|!y+~U;X&c3 z|CN`di_&HZzpGigtGf2gK1Pgx0p%!*hXg`djHkTeb0nUBScc)Bs&Y&*ER}o-<4HdQ;eVKvQJL!owL=ZV~pi%}v(Ma`q-0NJsO=VA>D2 zyRcedlPAGBrT9iGtx9WY1c*7zq#U)qc4PACoF)5WACFzr-gl#p9^S;i*ho6d#S19+ zX7Rp@U3J~IIJiZH@HAfB(*(2FiT6<+>1lnk_5TTP^Qv zF8r`xua&N@{hEbhvwP~iiWekhz@`0l+~CZ>QHsyCZh#HT8B$FkSTp|)p^%w&&M@^e$qlb~kqyC2#L2Yf~r?(lfkf_d9>@UT?f zv31iPOEWu$*1`^n6Z)gw!(sdU$it>d?Zq+p)?%EkHUpr?(OT;g{>*fnNFlJKw#m(T zW+z+|#2YM+@0@NARo1L{4|frE-}qNqyl?SlU}(IyHdFD~q$zRagaT-liqBVO12`Ct z+@q2X@VB!h;t0a-i34Vf7tgyX>BE%S)V&%CB?VnhYi7EGj*;EBB^LI1oKN&578|k* zw$WgmQ5OMdZvP#jh;=#Z+Z?U{TdBUzDXiH&zUL5r9*go&mMknuY+@cEW{SOA`|F7v zx@xeJJclzsx7KTo+UM|4+xo^>zB*OWl&s=2*!24Coz}`=t(79hXPUob|D+_jU+x`r zHt2QzQc2G_^g0AII+CkDr6>3FVqbOWz-ubIPt)*Vb7L9sPM`MTeu{k(+Szu0JQ7C{ z#ZTm6z#TaLd6p8CsKQa$E)XSpj8uDG0c&mA~P92g*|a|Y=#ex?gci)@KYX&M$hnwSMfQXNUg8^gXpFK?7k zlOc!}Zj&_3jCK!`t6+jaP}QFEsULq}O%thS3+cx6J?kKxZI(vKj?3U?}bPxF98Xs^v71en6>)jafc2f+iw0NKSsSZqk8ZvB4q3=EC#|ed6@kCLy z#eu=s@v>x>X(UFir2*bME3bn1wc*GiKpVX*pB@ayVMZVa%V%^1OES@f(jUFjR@mj1 zDwjFoW4?~-AUfBa&vLha#=(DzN^)cgPBGtx%@}+;)K{PbFnRhGo6mjVSZ$cs2*lk) zF!(1hD4ao}V|EOb0r>K+DC-AlLNQ)YIM>21nZH%&_#~Ib5%5G|bg(AOq6rwxN4);y zAO6P!H=TRpSAOh4KY7JpJnUyroPXwLpZtU-{wAKNV@xF1al*d5*`|TuL3^L9pq}{D zg}2vjY+IobBla6Vi}DjJPHkO&A7)`z&MC_{^hF+OCHPkQVe~smU1sKjn6^E1kn>EP zHEa>X02(b1dLYxmY1KETt4nT=Vaz0V1orM5H6{4kFkw}howI?>sFY()8|-)+sK!q9He|*=Rj0p=y$oaQ z8d%0QA~}c4HW_F1dS0Ffqdb76;_^^HL^bi%6vCo}kO2-jei6$=*ns0UCd7yi9OYDx zZ2PqU4p1Rlv#v*C(N?1}BpQNbeVi##p_}X#k%1F4 zplW&q-n~l-f0o=Lc4OLpOR#{xlz@tFb{wO}$!mZAV6rwCoAZ@|C-p3t>aKUzcn=<_>iIGjLqRUi{Ph*ntz1w z@Hvz}X7OR$#Uq)*6j>rHPE6fK#VFafova4kotmBtZAzlHi@4}RR;m3&NAv}P0@MLA z`s97q5*#Q~dODk4)dyhna)Xb36>IaYt=T>g3n#jkgwVBXDO= z*u2Z8{>9`Ibij{~utncM`5KFlzfzKRCUOSj7^QD0$1x^D>%lR2>2LpPAFdCE>f3?n z1gED3&tPTZ46m8CRoP)W7PQUgbR^ikXeJEkD*;}H-q_G=OhMnebQ1RM5TFmm7=#rV zsjf)Qae|dYOM%vAHjJTj%eKcgYRZdducP`_3R@LqvG_2HJ!^%OWsF8IGvPaqKqKF& znec4{FIFUHF~U9viS3?MkxZC6ktrMa38&c86TJ1GLlM+79PP1L)X3wc%&Tb<{D%IT zE@%lpq?~8gL=o~4?D6k3VfmP8*F9LBnk1$-(Y@9lU?0@pN(!|59P^!f+ zy!p-wsoFRCA5A>%#dA=MCM&c}3I7z+SXm{DPY<^~intZl4B_d!_`x`Uhw(>TX5_nJ zV`(W5d80MM5H!v;6jKJ^zaZ84BuMfIFXO+Ve1*kt{z{P~-(ES2C&N$~8GWrI5NI+p z$5-Mw<@Q{no6tnqrY9OH7baJN6iv|O8u0zsgjnnnHvV?QV$o|c>6fxx7<9lri6_NS zY@2t6d?WAt5tIWgwwcP}6J~kkFU@YZ&-J7bq8fIk?OGZFrTdV`eTh|kJ6!y02=*P6 z<197`5=(=MsSv>mkWY`O<+oTvaTnge|BdoFmhc-WqMT=H zu-4flNJY)TQv3X1W4zd3?e>#A@1NI4xbJn{3;YjUFkkQfTNYdQWE`kG_*tDoGy{aV zu0III`qmzF#1O|A*8BLsvp8OR$VnV!^zIyr5&2@8dz^scZsxj0NIGp~$4+92G z9a&lA`ozlU?BsfJ2q-{0c1%JSrwkZ|Qegn=sbqf!N&WA5iG@@&!{KuR@ook8qf3WM3Df zH_9>k=Ew^tjqjfcQrhwR{UN4;2O!I#D+^$TCgO?m2Vyqg4%$HB_>E^(qH9<@ihW)} znJp5P#HVzD9-kO8rTG>sJQ=`Z3*yWCvD(AtH$&NGJ2|+4Yi*`kVQP|kyQ#=4 z{{I!yrH4(mMaIyvWePBR;#|%o5^^qfpx#s*JwxW26FoOg z{6Y>Pvw%s08PcX`6Rhj=8CPE4BS{!!AD11 zIz29?sxk3TLWgYn6@B?F5Q@U^BfT`Ytp`N9F8DXrNd$*GeCxcYRi^XIa-kN%Q2J>t zAR9^#=^Pf%BKA731>LhT9uNAVmPC*DW|*JY<6s{=eqs`h)y-a5bF5EUNAm|Jw5$>j zZV`c9@C=F{#o}|Tax?Ms>_d4=IYe1QqaiYS)$4ukJ5)M&3Mf-FLg6#AXWryJZWn6F zviijJa1w^%caCGzvG6ZgN~P6f$kvK7+wW(ToobK@{;Uc zS)q}|0sBJP$SPDdI+T&dZNsLxa^n>TsjV1nJidqVfwy?tHC0{Q9&B=-5Jnvqc0KCa zZb!;N%5z}aNxvjNh^OgUj{N&5zr#}VUI|p!tVLV$84vIl!7B27jNmz$|HF~?N_QYB z59T%5wf!`~_--h7VJVe&uNfi{m|%h%ey%)yvmVdY7oQch+Z1HvG(y6Bo({{Z_Qa6$ zD#bWyRPSJDyR{T1At9g;tP%ehcj*^U=#z1@w&JE)k9^JhZn;5AH;r(bb#(Fd=08`f zx=xDCCrd=IJYCekZ0jEM{l>d!)arm4N5v@isCJ~@hqMNjl(V936V>`^NS-o@s0~TF zjuGix(i5O^cg?1=A_;SMUs9r6kqdQ^=Q9rO_#KKw7(`Qq+cAr zzu`&;C_KPbpDj(W_oIz9s%%wqsnpBZ2fMB&7(#txUSk~!X$X(QOqHs!kDH(MC?grP7EH_OC!%#^YT|f7a;o_9JsZG-jC?Q=zf=CgXcV~_kY|0o8Q+tqbqeJ{EH-dx)X*M{t{)6n zG!8^{@rA$o!s=%@+~ZIl&f+1(M9~7gC5=Z-@ijuQseKbO>}dD-BuppnqhJT(Q+2nm zxe2(ccd$XiBQ|Nqw*-}^!z8w5-KtPkhgXV#Qyt5?yus)ElHrRySB(QJ6cLXI1$$B8 z-4xxYgdU|px3AmR`gt5w?y;33?N^jwA@dg$ zzAVChg}Z_+{RQqX^I$_O63=^Fq;VJ328c!>0$$M5PbE91Wwzrd0?ws`(CCf=35|y_ z<0mCZ01@J1OpxBMDMr+ z3u)y6M=7bNQH%%aVeH(P=@VHQ7$JlSdO>A+3OdQ&&`;IkPqML^IJ?WnmE zRw5f~tBRRG2{>mEf^)+^wAm4bhfx&=k43@iI^7dKBs-2NNLx*%MA>lJk8i$NyuLPq0h?j~v|*hgS*5;u<#V zJ%^nNR&}mG^jR+OAt)mjA0?Nu>!=~Vh6C_~IH~a()6Y80ByJb@=#iYmS5f|v#g-?F zcs5gx`m76kmkbv5oBck3jXEvKAzJ}f{C~OpkD&Y(OBkg@P4Ugt0_r?1+$?2v5YTj1 zAIFMjK8*64EcSjF&~K6ww*G!w$tu;+e0UO%#29b0J( z7qrI%(H0j(nDGqMgioM8nt#W zE=$)jZ?~%E-o@o)1q6WYY~ilZEv9h&sqW}>Mc?U^_w6yJ{9ASmg}pt8)|3A7^3vfw zi;f-g9Ee{7Z}SG}h%4Py#P5t+%UA54+be#q@D=fHjC-b~h*GmI4zXKUMOrd9F5h^*=KeUb%S2k?+}7FS=%(V{WBM7e0a2(#tTyy$Y+E#lcuz7#EyDLZ zz419E<;=&3qP0=v?b>{MI`slQf3`c?X!nq7cGyw|;PZxOZtm@*H`i@WyoirRk?7A+ zKE>j*;!9FJn$=ulM!REQ*iG67-Kt$JX9V8t(Gq*c4tyjI!}I$qEHjHfs(P6s%)wxa z`X~E}Yk1S*TA*^tW1JOHFG=keGi3CU){ff7Q+03sPC(rL8Jhr$1q!pF>v?QDNJ6M3 zvr$BtLZ)?;QOXV^get8-FXZN>R2|VDb8T-%c@4`%7%I;5gTj9voi(b{ zC~XR#z8y1fJQ(ExEPe?sgDkL|!1Q=0{45|&8a8faGc9R-q0vuYkUr39ALt}kBt2O1 zZC1lP;@v3O zbg(lyx1<+Xdn0B#2z0*`4EfG=%FwpU7e?i7EMFA zY0$LCtH+4^K3AoaY-ZZ|GyTE!y#%%dXp67c@$A9~!Dyfb*i_qnxN8ASo+DVj4g-{~ zNzSyjOu;{ zT1>$FI*UWEE7W}IVo4p_mQ_^hc(hb^y64ippG*}_Q0(Y2ZKN+5)Tn7)RGb+5H z)kg*l=wL>z>ma$cm=D8vuyYIVJ|aj(LhdiyRLgNIE$2&zAAZ4KFx4uV60}W9OUP2g z)|IM>QG=EFg4(^Jp3@VNXNXUDJJVg{O)Qz-y@311@bf;oF;12@fb)ju597_P^`tZI zo=s9$;8$o_SEs5|VsV?A0~N8>D3}cgYbOVY9ek^99y~B-kMDgvK+VurkqGLmcaJiE zwP``I$~G6oxr=#65gFR((86QJIP2Un&6s^ zihK^(puCD+8oyG+7`F&tW0BaH?j!$$Wr7>bUYb+DAP#Qj+mMC765AR5Gs>4(JOqox zq>YRrE85#O%%I>%%c=>W*`ZD6bv5lQQBtR_MFA`2_q7}(O%p-GF&MyU^BO6p?;>PO zSiX&bH#C@Wx&TP|L)6qHp{C+7P4kgj3gysKMD$!NmMb7hhqk{_AQE2oyiBsEJxZut zAGU=6bagkm9*JmFP^Ia96wpqN9Es5O`{RH1v)FV|GeqsxQQ8FWK)CgYdjzPfYFG1i z=y2AzRj>=k`bnQpDz6BRA(Qq4EQ%F^{M#oOxtbfVPn02&}wcHD;Z2kpbpjrmH3i|Dk6*l1t9RF{Uu?bl% zHWlAQ1eB~+{A!e&STeWTKoUGtkFnTZuljtw>T^DZ1KYFBx3uMPvTpIO!K{xf;hq%v z^BXwADDddSe;v$^LmoG3DV|ClG7s#NC~%#QKQc9(#@-z$)uclyuV#`XTW&EMSneQ` z5MbK~We%ZmyE&=pa%YZIa20eWoSNqle*7uki{p;5@|%D)?>9u}qk^W5FLp@>{(nHDmSKlUbkY(uE( zq-;HtQ$-@1c+xtG{~SgxJzpRDpB${>lSgMjJjmu*;Hr1E5(H(gGq?lA$eR`SN^*~<$N>&(hYa0&%IXe=TIbGw8@4xQ z+FUDi%#0p3veSql8&%l0yB%<>7+}Um1-gmsSx?MP&ZKK*UD`7cJhCsfO-XL-Y{F&R zly3fcBBmQrewoF`&M8zh3u>xU(TFtWbzy;J4AbxpM~$eNBDtHB<}ZQFjB^(WlFU zm~?ocp`-Dfsy}dT3e?v=#tf1yWsgnu%-yzx4Eu0I-voWF+myLWN;hfGqN%m>Kr(h) zMcmfWv;jwKwWp~Get|Vev1DrPSx!2`WQUE4l-hUW+s;4cL1b*S(3QPLkY|)HKeR|*TAEwrqo*W5 zUV#RAu0duQ=u$I>fRqK52wsj>N`JRxX;bop6=z$nE0O$#-NV6l zACFfI_v7V*7ibX!ssPM+e17?K!cc^M((@AeSO{Iu!45x-B}5M1Qi~ICs0VFVf;xQZ%Uhm5!o z#FhJ$+1RJ>HLyZ9qZDgkL5*Pj?gZg4@m;_1*3V;~#Ph%pzz>I6JkFMaMhd0OcS&U3 zsEreVN|CIa_Wxgew}z?$R5D8%1C$K^Lio)wR_O|qUYg?32Y={VeM0vAJNzGva?xLf zXYtLbf8riL3*{*+KEXVvSwzJsex5ju>^k@P z^rJA};;)Sy?;wBw=OPsFqX6-cTuR6Kd*(> ze~yQ%qkYOjhC9PgJ&)w8EuEyQz|+AWod#sKw6_Z*Qzm3g!hxI7KJjssWfqSBw|B|# z=3PdZ53+{S{~!uVlV2jF1u6(Lc@AT$lx8LB9WCQ}D30jQ$SG}unHHBF3%8|KU0V;F zOAPv8!q`nH;I^aZyw-!HH3A_X5Y`9OhC!>UdTM_tK`1ZvSut`WVX#*a7+`seAHlN8 zyUW?n*oqZXZ{g6d*zF@`)7OKkw7-EbZwUZ@M&XjUkxT063m%ABpSlGqtE+`-@U`{z4OjTKY7QG-+BGtFTDuy0udv3qc@_w zilt0SCX}d05{{ldmH8*e=o{yS>EfxbJ&z1 z?zQRTUh9f4Mn8vp8%Vk~iOjS)P8|F3gWMc$%nXYikEr;d6p=_#7tkq!pb9453m~%N z_>}I%#t3R|;L-Gq0)joMb+$=Z0x1v#tKtmQ%Rtf3ZK!WkCrXmU^D zeT0CsD0uoK>ic-3D^;3~eMr;6mdzV8S?p?PL*POyqwW~XvAo^`1-%9@RSd2-LcA6R z>*t5v)zk2}(BDIND>1Zub!0-AW^WgqF`5`-OvVq{Q0PJeHh6{cLE_bsCt=$j!{TG0 zbEgizT{1+Cr)NihFj<3b+^3f>w#QhW#8&uA^fZD3QX~k+(O1_ce>3&SbOizSjjo6; zi7;Kp={jC(U}DWJX75!xnMzh7_&J(7^E`ecToV=FjDu^u0p*n}wP+*H{kFD9BXFcP zD;F`>=q4$CrM63E$!KWVsVU0hx1K0 zEKi678*j~#o)5)7cG)C-M1nc2CbQ1;l<9!*yiGpRenzzunXMRZwsbsdV8eeAj0TYRFlC5`CEpZHU+{*jxJY*jpX6@LIf zyobe?Mqf)ggFZsulRgSG>lxDJM$b4Dezrlh0@H`!IiFgR6B3&Kt(921N_ScI_hfkd z#4A0ao#vh#KXJ3CmI}RxiDG>)!b_TFvq@~O+9S(YvWe1gv^HSzQ7d5=R zx^j7`$lTW~;eu5cwx@<>x)Jwa;|u-Q0!uCynTCTd;D7GTVl)0=%w&Yv?%jJ~BSsE` z(O{Uih4$|xGH2-ApjVJqJ_-d6g^fClQ*_%pXvLiY!-;H4{V^ma5*8N~F=8Yn3g;WA zgI%lqFU#>}-f=^uR1HO?J`{;V-WF{2&350gP+PoonUUGR$co??zfuR3?UK6o`9Nt2 znT^Ns?(!uNI66nGzULc>D5&IGLaO}s5URA*;RYW$ZTBSQgKI4N^Tw{H?O7-N_%d+> zCyWSA7}3Lgo{>wYk9^v)^m!jGzT5XxUvEdB!U^HNSOD#PJAC4=d=kkBl-PQ+hg(2G zw(iMZA{)%ge+~)!0Jcv>ybrhu4^VQNg6D6>JCkj6+xt4vy~~ocae*-pi6bYmx^K<6vgzE=J9$ z84Pkk05uh8i9UkG#4ka4E=$m2=D3(}RO{1FTS+F44hFqF?P1X318$RV+}y34y>j2u zU{xR!-+sQ+gI#>{pS`Aw6uL6hCE(UpqZe*B4(F8wyBDB5gT)pavwJ-{zqXbjof>15 zj`gpXuAXQlzJ`sHbxX7UWY_v7oa9?k_`2Nd9C1OXLBm?=S}&h&&)stF^*cHD_o3X( z5_A=)K|*F&4}|0(EgvCsNN7C>ckEz_U=qC_s}P!aT+?{2lEdc$e2-1RVJ&H|9m9io zs5HfwCIX~}65D{53v57kG8c74jQD>L4(QAP*Wu`C_C3(oWw&|JQjcmh5nsb*rgS@8 zv$VF|c?j*K>umIKl;36v0#vrB;S?DJ(d==WkoyOmB=6qqSxmjG%j62&F~4KyEeCtN zo3sA|6!C~g33`@K1c8qS0}o}&co|{8sf(fw4kD@nv8uXJfo)a~O486Ko%pr@IBj_Gpp)#yJ-TzLmjSRgPkmYdCE}Fz?UNBZZp0Pk`laEe)+N}! z>ylg8B^Y4^XISi|yMYpQ#iybwCj-)R+&QFPjwl2VgRmmxO!+mWq%U+U9rb?7sI@d` zBj_{$$EDpoqVD1Cn47+KK$&nZXetju5Apr|Kj#}^OSwS zaIoDmtNC()sZQtScbU}#HbrCKAlsD>7&$1lvN>T^xp9}7l9=Ns%#;+OoC{aVW>JefZN6SPJ4tWyj!~2q0|IpWm-hLW;j`~z4gT_1b>c#La|6;I#D3giwkFhA=5WAH685|GB%2JtSJ zvfV|&Dn)5o5)6)E@lNBToYoM-Sxn~x50VQfQ@q)U)yu3eSo?H{etbQ*o&^8yEEShL zpZz)TO`uAPbttl!FkEJ;*dyjMRYF341^#_S5UB1#P4P8rrRWRbyF-fcj+(7nEOX#X`< z^{IM>Nga#xNleeQl6I%HxO>5xmS>mNx}#2uue(|eJnI-IJy-}fM&s5|{B#sQ*(c(e z+G>BJb@^4ttdZ=1DzWV0V8q8HR@!*L=t%an)!ef(zZV=XvO7>I_5ZM~n>8G=J!>yF zYBo>ju#Bw%mYSa>({&xI2$Ljl*$*=i%Lv5_7?>!GfkCu@{6dt-`7Eqi9u)LI0xt5_ zJsST$+9y=$xa#E%KHXwyElfe7$^qDcx`mTlq0^^wN}oabB#Vz}GA+cykkp*Wk)fIf z`X-RGPhqCvP6jfE8g;xs&0;&GN=S#JU}`-=t?auD+tWlyfAbm^caWpJ#3@aZ7JW^b z`r!Cdu(d#fjJR?eezno7nwmSpuh3% z66UMBnvBL?2=@R<1v%oA7Dmo-57WEU9YcIy?5}j&eVtD|4Y&1aeVlEw3of5``78Y5 zPgz2Qgn8j2p0KAvpv2`R`2p-LXH0hNQv)>ayOO_#kDTvf%e&U@!E~#HElX{f9om-D6Lp{7q!++ z_NiKnDU`iOr2T6=06rCt%A;&G0&G3E(I?(}5J<9uc(lcpMVoee2>o}N zv`nKfZrFDclV&s50$<3)Z30=m&wl~w$5VduJRt2OFcMibzX22wKN95}%d`+|V>;xg z7Fof9nl(wwZ`7iZMfxpc` zpgfXglc0qz@StHG@MMF00NRslLzM7Xy5&L?(@`*tX<%EGQ;1qAW7yDgVt(wQ+)Kh2 z5?Dlin|IN?zf>kIw0oV6UONq$LK8jkWUwW2XCRwR^dBtsU<(gqv`-}k*}M6)(MG=| z6#Me;wP39#nl+aHzB(X1TbMff!581EHe3r=u3Ii#zZk1}Hj4+Ym)bX+ho9{TCKZu} zVlkHuGb#(GqH6*44mwqUoi9P$9LX84s|>2#0)_*?yaN)i4|6~v@& z9gYQh@7rYe>rb&fW{aA}{gTS|@2LAFyhU!Y_bYw~4tK<2y9WvA=lv3LX|kf?$^i;d zv;KAT48ZH91z(v1$`d*xH3z9#L*>~B;e|>rwjTNT36E zByq<&%4rtcZmI8b_D~fnichIeCcD)e99RbyY>sNOtEjOl@>Pq(Vzju3LpTL|B9cWf zD@0NdE;8Xs%Y9uI)#M?jRq1Av4_>8q+<1aPu1YTJM*Pn&v)Bq04JJZcwtI2+-a?vr zoR1Bdx|Nx+!PdsErhtHpo!J~H&eZ~>&5gBvbInN$XNq84 zlY6W;14~G+*Sx@SYU%vHc>gKQ9%J!c5K|wk9S~~jV?}%f<=~_)lujzR4zacvC?bZD zEWWrFaABI!%%<+cHy0SDq~FRj$MJm$9Gbw{$0nH!r>Z~p@EH61m7*-h6a?<~@x$-1 z*h*>-R+|b>ZZFd_+GMo*)7(?iEn03bc9@_}Gt`^Lr`; z<1e0DhZkAqw=>*AnVmr5YFV;p4Gu43HjzHTpB9&8Ld$qKYec-9t~lY_?D8B}XWP_0WQ@!I9hE%U#e zTX)<|MlvZ_9@6FfWWaI$(cA^*3GBoA;+nW@b`@S=3=rew*@%6*2Kl89w>xK$E@=Vz zp+|DyEEoKiT9F!M(bH3MPtCeH+Z}DRdmznxOGetH{vUg90w>2&o{e|U?5<=R9KHky zgb)(GC44zN@vdZBhVYTym1M1?l@`s~GFB8A&9+v9W@pyZvpV>51QIY;jKLgs48|q~ za~rUOO>B$}=1K?{l8}&#BME_o^WzAFIQc(sRdscBS5PC^7JYRIy+S?6Oh3-X4G zBwrLgT=JU{Tc6sfyCT z{QLz+aDHkthZ>!wU<>`(nJZnd9%HqcC{Pgnrr(EX+dU8TOd=QCA*y4TrB6NND8qE9 z2PWbB9#ztdUDX*j7q#LOz3A(%V0mD6i@Z+hs=)J6{ShadVZk#+{lSm9s{aIkcsJ1i z+tyy>P2KbONX6}xxy#w_r{$1$n7Hq9cIN$SWO*ryQ4L6y!d72sA!?U8>%5iY?`rKt z(Xa4|whw?Upk4aW9VXu0p!X7GtZ`h?2oIi&o9M$BNqpgmWg|9l&3LOewX0sAWmhrH ztoDusQH-U2q?a50Lp2I7n_&;?_E4rvnj6(^_^H;$x01P{qL*)Ejk2ixEi>>PqI4sK z!;n`I(YcWMX<8)A2VFSgBXZeC3X=i{BKgm!zCRpcB8RYf;JYygJUagT+rKt*n@Z+R@s=zJ>&8J z7wIx#24W;GX57BeU0P}f)2sb{w{yKg|Jq*Py^C%cVPdsSQRkvrQk;!mAm}s?MWZU3S8fusQS1?S9xd$zCvV&A9h-v?p?qv^4f?FOm4M3?2cf7n4|Rdc zy&5TPAe_deSQ3}|vnhc#%Yi2Lhzgleg~^)?E5;Q99=Anx?iV*V`VFp2#v-(BE5+rf z=?L=`!}tBwa(R@m%yte^7+B@|lXu_ql8;>h;ePaqBuiWcx`IgOR8q`D z*%v)H>jcP|tg7O5qLWwUGA2BTnyeOej3S0tg2i(;j?V;bGI3WNc#Z9ovN8H3e(WC0 zkK^n25ET+T==D)O_CAt5_U>vNB&aVaAL+qHX~{>+dd!Zr)`K8c(W@Gm0ZQid!rHdr z7!4#>BwHKlNsldL!=(_7^f>i_Bm}Z9>=(2oSjSJ%@u0xsn~B~n4^{G%+CWR_!$ky> zO2R-DA;lC6Un`24=raB8qA|FbUJ^%KGrhQCgJqXyhtqqkLNO^$Eb`fwE}p7ACFa+$ zQWedG__4@mSz_|$!plm&HTJ6%U6X`$o-eCtij|m@b^b~ga$;>2wHDAzROgQ+z&!;2 zeTcP`d$RV|xL6PFj;lDXgHu^AbSbL8V=Mj>9S(}nr4lhg&!CksZzugLmGyGoRxjgh zRa{YpQL=gU{72JKx&w3zQSp6);?J1g`xy`Jra?@BDAMBmf|ez`692YROCgBW6)nMU zqNe-;;4R*vx}yFx2>PG@ILEC=?~WAS+~v28>sGI-)h-~s$eV1VJx)6~x=c@fHm@>9 zZjmcYh<^bs;{a&L>|r#u!$!jk(B>0~^k5GumqzAK9ssHuL8(Xbx0A+r9CRts%@zUC zdR2wsG}f(SyW&EAABi^9g8{IEUOzdog9_2IKr4%oYp%*b-KSrPvrd6l?0$up;J+`? z#m9Ivto9L$Pa%#7x#hPK(QxqNJWhb)PaqRg&+(pgh#L(ISvj6^*3LbGx*FkSoP zKLZ5q!|&^u$CMNtF0liHMXuM>ku4RFJ&C4a#G>1%k?Q&umzolq?y{&b9&E4s7TA+0 zYqPuA5Bj76cb0U;HF_utjYq#CVNSQO%Wuo{#0yNYlr8ajDYXdxb7(_Kzt&y0 z!U@`;jkq)Je(T}tFF3*%w|093m7ZVtB-2Z!&y>gfS_5zzmd$ulNU2w1A_yE_tZ&)W zAxxt(szYjST=`0zFHvfbcvsOuy#|E-`B#=%U2kMKjH1LQapDrg*!TCZPa3?qqK~Iar3>-TPz`q_t{#MZ3%a0Yk&GXqEf*lwaKxg}$%^fj zNa5t_6u7&aWrYThIbfx`zkok|mZ-RWgyloJhfX+ochHkHFsgoumK?dq{!5AUcs31Q zWNoVmUB=wR90z&swHl{mc6n9?%9grm$gI>ECL2TvVJ}iJTu>?(a!Rpi|1|_W+d#iX zq(fnR$X9Vy>vFK$5JiPIuGqM3L60Xl9(7;wb)HD z2Db| zC6>keF6e7S#f2eq&lHFwbrpuH$!sqkWj1`T^MBIlp93PJ`|*Jaw4nj^E16sPeDtK! z0UabNwzcWI>+|+^0ZDzp!)XXtQFH=|&J433VMo%i#o2j9#3F9lTf{C$&72%*<@LHS zqx1yzUPH{>I&q-aN+>Zb3_Gg?5ajQ@KZTY`h;8TN`1?5i{?{zr1B{m&DMacCT^E?V7Eik94x$;`YbB{TI>esui&s`FI|8fe*Y*T8DdAOf4S-k zLn_Z_@JHr=ZxR&_9AYlj6IU2$4HV@22>)Rt^{yl`K#tB;@gVy}QH3QrxB&qholdvk zV7OMB4!EZTpCTJ!+{Y{#{{FkVo!K#^tyz!OU;<_WMij40rT{DjY6qaO;7#JYnP6gp z2mnCTT^;xoE5`UN0=Pw4Kqup;-kLs9`}XIaW?MaT>W!?r>9c)QUO(kU_G#-6TR)}Z zcrZ|TFU|0o*Ok3}0&h!a1{&$4viVR_H;;~s|IgJF-xl?gdW$C3X0VBLic!qk>J z#hT+m_^ma=GV8nj`UkvJ)S{(xG!b>lF9oW>A1Cwas8jg;8HVFO6?8F?I|z7{!Z2fy zTXaU#hMNbvCS>)|5CFVmpP)@>87zm#gBnMM#tbwpnoJPgb6mgXi@!fV3;nW zB03@dXa+V*{LbipO6}8^CyC+&wviy43*Y5DTK`Umu?1=n8I&BRP?74-Q=E9Lxl8tv ztzKq_zDURHTSSEon3MFn_am*uvg(ERVH70eefK@Zz(x_Kvx1QZff`-7NWz~AHKIHE zPR`@EeuWm2Bm!0u&SssDcb-VD^D5~AmM)tSpJ6|$2$8+ zwg@;>{Z|=~BE>xi*%tkBLZ=KIL6T>yY4bK=L&-}|+~i3MAfci81BVxp{*shWF@Va8 z{`}}w-+J46ihg(_ZI1z@gtZFc^}mPCeVr)x;D(A0oRAT!`oE3i?*tn~a=r@wE1`G5)Uzi9jeaPD*P`j0;6_EA66NAj+J zyJdT30GxLUhi4Uu#m`_urK0Tha7)I>88}ktErRC}g-aDKRy$GFC6$`0{37UKL>ZZ} zSWl>YD)uQd*hmQ|*T0nnLy3Rk-d6w69#q2ZF6(F|VHy340G(_sVM*ZEceDJ0Y4ATb zuwQu$!JhOv*}T6iyujjFEnW?Spw6qPf%KN7N+wI~32=*J=b}b?HMof<3CB2Ii?_p6 zFWA-XP*B@6_B6W!l6^<`oCc7V)+!>}e<6Sp@f!YfbO}IiFLuC0Of<=uL2r7s)kg6L zo*!wr_#^o$e@DIQLXVgdCv1kL?@6IbKfJQ#J@yFB2;_pna(qm3gF}ckxD(1(IFjYeRh)LOfXZ4?YizFN6J7T+1+x- zpY#_W*SYx5C9(vl;%hRtICA!!!cyx{lL~YpjiGXeO8L@U*@6)HM_aboM4&;xA;%&3 zxMsuu0MT83jtw=Ha21{UgqTtJ(*aun*N-x~%HS3zX!Op3#-TeNB!;9WKvxl(2+^m2 z^YfKheO_l&cXHcWji$96I(?Fk!pA^&6B+Emt!`}!UbYU)B;O0awusko^`=&fnM>Fj zibN9E%#zER2u_dE6unPiM3w&o`b8pL9E^<3BrdYcq?s;&(R=GH;7mxO+K$~U%nsJ$ z%qS~;UrAV#7HS?gVfhj)-qS7Tynf5rnQW`*OHFiGjoocB%lFrqmToVF@AN=V*g3c30=zpJRP|#;#1SbLLkDZL5 zUrvZUL9C)ON~}UgAsX~pu!?Ea!)54%BuH*YV28tyV?z%k-SZspuKchN#vdJfd9W;@3lCj5`qNW?8ER&sMt2u{uL6+4q zwK2zKSX4EC7aLMs&>Y*v>?R`fzq3=q{#{J|fDy_Y)~euT<%eJt-zFMt$!VCQL)^0i zv#dcIm?)!|lr^ZVFQR4WX%ewPv%bpwvGc13+RT|uS*$t6n&PMQL~*N3q^FV^*%G}9aPYoOR9L{?uvU@vLrj#l-}!(cIP=2#py z*QXNBir9?rjp&?LSUN-I#0hJ7nX|((u%jb_-a5C6@^2J7SeS`w4u)iOddPkmCY(`5 z&1FOmCx8VvIi7$rb_{fbey^ad@?_AHh%9=!iX(JS7QI-#PTN)zbC{3XVkjV_i2`0N zV5H=B;X|&aB%CmCD8S}0OS79Jjo<$r0wjsl#Q`Z6`id5+wBv-mn0R5NW)VM*`&38j z3hEqIP?)R|+?{8djbSP>!A8bN1+WaNf(|L=0ZRuU(K^dGl+w%AMzi1T9ba>J8_=$x z_irG9teklDCmM`M-Ht=QAqsG7i*AlCrF2!;-RngFZywiz{RHrqY6rRqtUBIogt(`! zCZRqSFOz`x1x(pziHZXr;pG~XFB!hI()$uIPigtcm9uy_PtwiH?N$}tttfzHv9%P0 zecW`rZEAwQSyor8>fj|$n!*39Gda;Cc9qm3E}~*RD|HBcX89-|%d}z5BEP|G{a+jP#h`XN=AmpJ0}vidEr=4#M2#b55;u;Qu!E+X9hpOwnL= zPjE2k1)V01v%*+>DtrB=xS zf1#^m(!;Fx5t-iTEvlZjGVFpT2s7KHllXej9}-z28_3u&GdHuf(Q1(&)xWw<6W%UE<4^g;@nVm+t(FW{8;ogUiD5; z8Jf3|*b46MpG8#iJP}TKhT0`5{q2I?^@R-^Cr%+9j$Oc$7j7WHeAwXz?A|!a@@kgh zy0l_$7E5}Pek%iVgEfnf{l6FqSdD*f$=%Bo>5BfcW%oX1^6ZJpr%ax6?y18YW(Wl6 z=3SH&^Y5@^8H#Pp4ZJKDAreha;kbFHS_8UKiR)^;<%6~P9kZz!%T?J5nv-6508w50 z_Dj>_$7nHs9`s3+MKxFKiw1tvduO{AbKDSwpI>(bb-uPbBz2y|9%CC`c;-a(K-r#UUTE}Q2ic2Ug z`WA1}<>&sO*vst-1+n*>iBm`}C+zh;4MLiS_owf5IIaeLR9MjS4@&{nn07}=^%$?x z@2_cS*MY7gvKZ1d;s4NPwUFZ-OTZVC;NaXO(py@!AkpFBVJ<3tq z!eJ!i$U(B``0hT+2}M%rh$Ry#0XX!q1(?Y6KYR~D#>ZTu3b}K@&1#q{XjF?5%A2?gI0=jmTo}OTaM6 zVoHeb$k6yoQJ&!xu0G}zC*#Vv-K1R?X6DGN+~wjA0Y<8i1U-Z(-~2){$O8(8R;;nQ z=8%Xn;qc64Np9{q9kDCgp)cn+JhQ>!nT>18WU(368E$t|>v|=Mgo)H#b8dE&+g*%> znloVCGi1$uN#==HA5F~mr$MI^71ka%vZzRR)u z)*3LIpN@@17JX4fIXUqh%kHz*f%Lfy4He~(pU05{l&7kXv-emT6z@N#kU#Gfkvz?XI zKAvU2$SGJ1<5a$6t4`YJ%r14{AX6%oif_JydR#sTZX*jNrM8Ax<>HDVpau=g5j9Sw zPzQz@{|dzT9FblH-fUUEXi^ovE$3$K4yu#Tz0OJK&OnERE&ZZNH?dn!+L1FDCCNll ztd?m@z|GJl^smxB4?$G4=J1>I0f*Pu#l!4Z5i(aX#1Staqi+uY9gI~`TPGQG@PH{7 zfn&p_Q%&H&9YTJCDElB?*kQ#17NgRlRf|qZ0zi}rZfUWs?b#`G$#NzW-*h;WPN^ss zsGx79V;))Qx&VI(=;G)i`L<0QwtrX`hn!f=b8dNLckv%RTaY}{rkbL2-f{@hj zEoaFWs6>jgV_do16I{BA6jvU`<7XKJ4R47>qyIdezFr6IATlfWk)c3*%&fsj522ap zcQLj7B2c+%Z)`tMTSH`KR8VBl++!YdQYxWX2Q*#f-oV|i823q+drY8uE0J9)qGEsJ zQ=w|l@tyofG~Vo;mA5&~Z>v4QH}1g(s9X(t8PP|5t&V~eM&pXAaF|5L&GeU1)Prlu z6&DUVOwMi*%b|Rz6>~8+r)Tsm&*p%leP>gdcz3lw zzGLgo?h<(x>F&ZcuzWsb2-wX-V15j-+ebAP|EWY~m{i&KXdcqO#;6p}w7X%@Gu%re zWNuv97BrSaCvH%L!JJUh-8_3qCgU#?lR;fqUfoL=v`D*OqRRJMJrn#qEZ1@HYU>r zf0brS7E~zbfo3UTl^;W7@b_Wz>O__p9V)obk%2&hc{O9SpzY?6t&v$3%SryiccME) z493c|5!HZ1Job|X8#da8e?Qa+57oBee`dOif#KgHnUPI}A?`-LPZyU`NFz-RruC_W zX19ZGCMt|(Y+w4$VVd~H@D&~JE{tL9H$aaiDs@QEG4J6PxzBzxHVcnUR4kN9Si5bv z%9Tvqnk@O=M9KHgwn*XK*3sJT*}Z9ZLU_B`KEcg(D?Qu^z%I-LBhX$g*~7BM2+px| zwI8&Des4AG*B0=n1^j7YSY6#%a)=w=Z=Tg&Hw<}>YQMH8{`0W9yUB78Iw;Cq+cjGs z+Ps`sju~z&_u4t-UYjiU+JDJYzmG5$|JR8! z%5N)0foB@+=4!jq@Ae=j9BIjWyJ-}oxh#|w3f7wtTUGZYN>Ppb592orZpc6LH6|^a z&K?~9uzKA%jTG~BJ}v&gfc}B#op~maEz2wY<7IZWVXvn5ViXWsM*A{19~)dSIQsn? zZI!lc&npTC)HWM#TVMh5J2Gd|4)n zZ{&&M8+l?w@v#)&`xC|Y{zUP;KXG>Pu@v966UBG!#^N2@IPrRmyjkxDD~Os{ZL|yT z@pBV7;Iqq(rC_$%?G$e3yuxp6D*VRzh2JQ#E|Y~nQvA4V+>n^{DQ0S(YpfLh^v1$( z6hCzv&MvE0B~u&gP58Ll6v$f3A%>^XMagz9=0!Z zyY1;l&r~KU@ty6&&u9C=azfPMXEE_t+oR|+2)3txhSac!gZ>wht}n|#&ve!iiNz<@ zr<a+8OajAKswBqL7ykGWYtUK(s&(-&1q{>b?rmJ(6?b3p}t02;y*y& zAS$b0p+nwi8CO|(tC8-fH<@H2D^n?t;gD6>>dkg5QrbWj^;_S;a+K*;3fi=2$*|=A zMH`;#C4P^{CZp}@_5&`X;VEzAS|-XR?UW(JxUfbK-e42-4mB3LN4ef%S4GU|RZaf& zPF$DOwskfZDF4XNPx{xnMhBu|Z+3Zw;&Soxt27ON4*C#LvAu;iJipB5$9oms7RLRl zwFrXwGM8Fh@6&X+pA32uk^ZS9-iJJ>pN5m0+CQxLo*^U%$S{11TZ4HS*lf}OEt8OZ zXy5)^)3~!z--yoLP!=kKLcnSq1-IF&3srPzo*-wZ3IW-p`JiIC*YEry?HS^FYreGVGz~ zSn@;*QR00#n1V0*;;7?~^m`HY=Hnn-1LECNXlJrA1-?n|LsQi^%H0}X+O7phpmvhu zr$gJi+acr)I!FM^d}<55RbtzJinjfCKwl-YFhH1c3qay^YlZc(Hb|s^AJU+FAk}(q5_G3B?J2=-AALeZG{Gj(3)AH{g}&{A<$ zgU(W`6NEK~HXqQC*x8FVVG12y;mEZ=U`x=m$Oht)vi^cuS6|pfYX6 zp1AetcDH$WrnQ2b6LgCW)3Re^om~VUM$rmByI7t#(OStkDhvOK7%Z|QX;DTjoQysb zB_w7r4QWEnEW=KXiQIBauaxvhbSmo_X~`9{7?i^CTp1LLqoO)^R}8kgr*W$qJMVCD9>G3^9)dcd&Ok)yIB~ z6eJbpNf^z_g4}hiO_R-#_uXVu+_5!+wnDP>M4_ii@?Picu6eDTnyCX}zt?E?l_@fb z@2{3Gkmz2&w9U2BtK?rNE2Lg6|6XaAg1eFiP{pfLxsdSVKG1iG^1{8-Sid($`l?mQ zv>?3|8I4j|8NM)Eio2-7z~1$%u!!G@HA*m{5nCrLQ|`A5f|Qba&eJL z1-rm|73gxJ3?rWqnRd38TZoiShBkYZTw%#6mKt41sm9mPCVd&`g+vzCL`;se$Nq76 zK)MHcq1jV77C$P~V9^zc153`C%MuIjNGuYq)2nD@U_$X>Lh+w@i^QKKRM!z(4~{e6 z?)K*z5EG9n@I=jw#@?7CESLuhX^p##@F#X*!}YT1;MhtVf@?2+fZ^G@@*Wr$y@*>gHR7LILXT|bq0`>zj^zSGZW)Gc`Szk zCb}{Unj*@DJ@nlhbFeQOoHfgh{-GM=Xl#r_0|=<)wO}X6F3B<0xjQ>tb?X!2vT&B( z4Qp=pOH_8z(R~64Rr>sMGJ^4U_8RlumA$P#l;MyzR>i^(3I5$wwWK08YH@`Ue~l_4 z%x-q!ISy)OE?cr_e96v4Sw;Rd&EhYD9!B(D39u=4gsb%yx(W}v0AlPR6oPCcE^E2b zVO1zbUn$>Ko_s}&y%NVcBVpLSSH0ZV#$d7(Bw9~rb;6ci5GfaiVfoKI_pzuj;y;D} zYzFjrqPz1nDl%-dBf97;MBz1M8sZy9t)VcB`H8)?xV?27_7bb7`%?V(rDmXJ z?p!Ld3c&}S1ehD}tmj^vrx>hX);!ecMWEolhWhtP&>s-#_ckS^4(J~_$2A_z`!PbN!{s}xuzdxkjp@<198e4Y>f14Aw=ew5O!)16GE?)hzw<~7bp@)UnzFbN``zm zi$(sUY3Kef=onF6AZFd_hR~xY#qpi(9BH&$i`@K95$Wz+CZ6p>0JpT*2Y8JW8D zBwu3|YUU%kPV=dV?pTdbvJvAL3o7sW(8TA3zXYZ&=_SF?@bjNXFhwylPa%4Xl#No7 z72+eeEViKSZEiK%-6bVv=1q>Tpn3YW>3g35eVE7`fyMSWukADyCIjUvHyVxkob@PX zD<|y+JupQ~C!&TlrdD0sPOhI^ybyZAp*@gj zyUV(3N&VJtp`tLq&KTDN#8?`INZ_hP&#cn9oQ;K>`Z1 z3sG0``z}p1lBT`8iFA2EZb6)k88~p;?N)?w#nek0GCRc#ekvuO*;3c#k zcYtmoDtV;Ywk!=ugO^Y=ggZx&!sB(q0;=bzK?DUq--!?t7@YZ4HiqV+4<_Q)4Xi&e z$~sSUNW(DZ-oKlGf#8nJQ;Yg0PysSx(~Oj3f;vf=Yp>06j!SAnWXb8OW zt|ZcHx2Vfp-?C-18XkN(?1Zy?fnHP?(I ze2=fY#1}J*@=6SJUm}y`m-|Kc@L76B95Kq= ziXP4QB41F;R8d>=uyaS3sbHbrO*@Nhbl}Y1WzJ_A4hg(G=vhv_&$UBp7{6Cgzhv-% zIU^}Pwd1UsRs8>{1>XR{35ca<%&AjxL*w8g5TD||pqBAt!3RG?1K%dfGL=8A*?3wr zsBLdHWN>P%iNSu(1*54W+hwYRkNAvW~wIsgUY3^Ss=#1rF@R zYAu_Ry#V|FmO6cWg#}b*O@eSqbLXv`hd6F=E5&a1bRNXc3Bt3P z=V|a12T9DZs4Q<8DG79Gkfg=J2Rz!Ms~~o#*lms~-8kLgfh`rKSWr_%^+9@v?i8#1 z2I#Rw7T{wCe#dNd-C@=x5Jg}%1KhdrJJrXrIk4IfbgO}cKK`WeAQ2*EfL5du*zB#q zHQt=4M`oFhl%Vf&-g1X3zPN9{W%sHY&A$D)^C4%>A!AfGo7g8ea(q;%eyR6gpzjcs z!oN(bvy*7#0L^8M4EaWLoHrkn;3HJSN2rEBrPp?r@>Go8rl=T^{H0qB#A{$Ts?R7Y zjiuRn<>&USB9MDI*ewiiszEJ^>(Y;ad^^#_j0pYgLFuDmyDD4y^C?uJ0-HwV3q-EM zJhq^BrnAto(fP@9Op=AYLV(TiVXN441;hF#WlAt*Dt;e&BG#^doXaxF0xRT5pr|zc zZ>ivo^VlYwpPW<-H<2C4`DKEM^{SpEZn4xM5)F5&|H1D*0ofIzW$gCC1 zoP|NUsJNWpFQcw(7;|I`A?YT}%H21I$FVVU=VT%8juX?thCbs2T6j)~)6}p8U^=mf zDVrNImr?Uj&^#RU4pIWt(QfZ>P5eczv)XP`JX!5hRMM;M!vCY93|nT&AsT-z zLa%Dy&eisbi(*C|L4bt7f$9T^O7nke>w&tWD1?SpcvqtI!0pY(_GYjxXoKZh)Tc;M ztkvgUu>H>z^HYF!7sx9kXVe*JwXSE3bG^N4_bdPTr!Gx+x;W&-{YA>*AtAp#i zy2n{WZJ=s6;YSc}>2L_O%^*xa%bo#D>Fzsg? zh@T^Y2Cfe8ZA5Rkh%n>^qfJ6-SSatoGpq1|=W`j4$rXFmfKL3I`$e!hvPLXzMdBKL z8o&2a=cUE{Z3=p(+^-@PhroJo57{^@qRx_nqcB@n{^=)!=*Z$;*$=vq=tCK&O6(Wx zE}^7YLPohpHS+0UG_|L36sI`)&?kq{q|#oQ!&~$~VbMo*1B5(;sj1X$3r(mZbYJxO z6pO}hwGXy++c33#a0s)Z1B$I@5x5jT<(PrW0qn9koyfv4)28j8WO%g*!1Ue2aFuvr zs?5jr8cUQs0@tS7z z_%2k@qN(Hw%=!f_QL}8qJ)eoa6zaG_l&d(=TO($@fIQg+9GK?&Yo<`fp|eP;0Ov3T zxzUJ0J%9p{aI&8e)ydG0w3;Fo;F-kc&H_D#Xeexsg@RR2Q8tHZE5Npf!HSBoz7xf^ zCP`)^Bl}m0;!IQvP%_E0+3oDX;R=w+ikDC{GY5Fq2AC?ziyjEF-fV+4`o|f>-KpJ1 z&#B6j|8mfah%Cw>#PN8cwu%s^|jVfrrRr@C)9?}zaTp`QvzMw~M&>q#FDS-cl8Bpxh zI)GfQu(o3>ADzt*V)HB^nTAXGauU++Gwv;vrj_|d^Dv5O&$Jt1$Se8G@#@+(SzUgC z1Z#U$pdDL@$12^QZ?B?!m}ne3Yb>rOu?@wv8olNrDjLEZdI+!y3wW=1y`bbK3Gwx? zwim`DX;T#W8`)+dof{WXG8RX^{52e{MMC}0fGBYDslK|h z(u4WG%WX(m&Kw6OV#&P`pNzj%lyP7*^!qzP`1gX|MU)X3!OHZ6hv=r}{#2)VsM`za z{dE>^0t^3%gO4o62i02tS`9Oq$(&X23NzGk8GqwiK+O_wl8lzJ*us;6Fe5I3FuC@D zg82W!1E{dLZ+{e*;@?Rth@?gzbm>YXj`Jdk+V4=LE&lA1dY?|i45}op5;8GZ?));E&ev|5@ zAoBgUhOu~_d9b>a^=$md&uaz zj0(5N0xV_^71Uw#MVW3l5y$d5^zFiht($lZw&fXoF0Mnavq9-kNO>MCGK%7_&y_uB zjj<;lNixLaKsX})WC7)f-X1F^v!|7qY#H8F#c`;&ny28uD+vi}2GQ(1TVqrN6yr=bI=%_AY=%h@BC5?5x7 zPjEN0pA`opfGEE;j4iU^e0Vs$)6J!FjOmg6^-#XZTUABif`CpN0Lw&mr&&J2qwwEH z5jV10a9O`wCGRvrI%*2@C!>TRx zf}{P}4#ega6hef>RgJ~8gvQM@I@}bqCqRT!=b}b?HE=wsMGxVc+GQ)hPG|capf?ib zgBESF^>(18tK#AtOOnPH#3o-j3;hdWsfq=Nj4?9Ez8L-|1B2Q1aU!t0MYje+rR28< z@3svqz5&kx(MK&;h1w^BY+Z>+b9tGu1CL1#E-DS}U;d$wejh7!Gc6mcQ~7lw3!^7F zER_sI%a>Kry@(`c5gL*r)bOenUaPSkDa{~MD_1_z5naA+PA>DGN>EDlYeYk0EVKY4 zW%Q-BVlzWy=Or|Xk)d$^45v?;S4UEaz8S3Sy%Za+Y{I_rZU@~=WUfm()1_3S&XQ90 z2oJj#->VAkq!@E^ciG)VV~}-HZnXHpqndQF4c{B%c$-B3?e*Qewzj)RxjP{(x(~oJ zk{Lp~SE!aT!KK1u(q0A;Nt)~+b&lpAKdO`B!IbU6lgtGykXLxMJs??8T}<98w7|@0vA>Gl^@4;2{Y~CzE`nTVmB2hy)7QC}bWECc08WCMh95(U%^JtrAxcF~|Z?gSNKX z!8EpDu&81^KdE@zR*^2wVKWDqnwzBt@nh9PUV=aTK9L)AkXhaHlbX*0Y5Mr<3g_n( zs>_2Rq61vuTzM}eJR>YaxQqW3-GHCwC|%^CbYL4e2n>Yc^kcwCEEeh}Zfg^+Q<{xj zc0<#JDW+Bi!GV{sA6 zh#aMUIOHgH3(t^z7K;p3`z-h{?)Br;d|GsE!sT(I2j9p`{g-SZ2AcvP0I6ic~<=JUCrrxO*G$?y*Q z4F&TrBh0@Rgi==it1?`ciSjk{{i>sYZoy2b1iVRZUvgj`_@-02GmG;tp{-;U5G-D0P^B zUI!snW)tC_s>r6JXN)f<_k3oAnf`Uwm_1uMkD=%g$r{A|Qi^ijKWs!q$f|YDv|4Bu z@b0#b)^^YCO&ecBi=7vvC8v`vL$JBv9a!lhf|A|)0J&UiI9ZbooOfyo5x-PT<$Y$; za@^&570>sNPZhV zmY=umF=(8qtUO!SODpS(pdJZLk-N=2sN{@HZkpJ5-lp?mAfY)A7SX}v95dNSl!nt= z6dhm>U9h{pz?!3DEa%ounu^4c3sDy#)K4<+v)C8)pmzl2Aj3Vu5~d3A#THQ^Dw?2H z*VDC9bp#h8ZWj{(5eip=1wEA6r`|i2$}1^q=}Rglr-Y~_kWohw`FJd7S*C+HOM2(( zpJyA_CX+FS?v4HvapQM`-a=GRB=JlsFn0ZRvY6;nTDoEz!_kQz)o{UdL?W}Hml@9K zqV8jJV0bK)I{O3sTS=yao7jUeJtu7Car&5-qXlC!N)LrPE z>?-#w^xZ0Vzc|GSrHndCzlzhT(HnO-3f^m}gYrrN{YnMS2VkIOz-H-yGPVaKu z8&<|Pgmn_lxtKF75->aDvaNmlEsv3PIqsKS8Fr<>i_wGMBQk72aim#tGv(~i*y&d> z1bn2Q-M7EkdEza5bnVZ`eW33Wxo%PK=lGT1NfYoi?(UXmV5I_DGJt^H=0GNBn|5Tg zaGL@SU0B#E(2aiA4f68Gj1%7jzXEF?;>g4pw`}mtRHAZs%WVcIkaR1kcgI@unXx$eW zuF??9DdeselYuZ%t??S8pPo=F#0Pvcr%aUXz+?1#C9NYOK>eR3(&t`C4J);oDFF9{ zD~nT|jxg`j>n@VPkUi#EL1{9^USH05AanDvA3MmkTG1#mHRH5^{{s34BHO*R9R8;2 zTW}@aDqWdPCsn;p4KG7BVfdUx1no`BF|@_WU$A>i`df*B!tFCuIdZyt%ml*x3=cw4 z%HawL2$k&P{9XW7Aax87GxhW6}P#Me`!u7mKRhv6 z32Txg>E=c@3T_08R@RL%aj#4+=d!5U?2F2W_*P`;#c_E55Dqi7JF26I3eE=qihi=y z7c}d0rh8>5e5<&Fopzy!vDAle0kjB2-I;Znh}F z^3D#9qQ{lEK#Zmm7e+Cm)m(Qq45k(v@L}`@21Yi0p8o_)VD+~^n8fNPT?CLjCT5~L z7V0F7caCCdAU07$XX;x`JveK8()1c0;^RynL3a}ZiSEeCdU{+42RbqsW+wJen0UT^ zmW9~FL`CwF_74$LJ=l#ts=uMmYIJJ1D?+A@^XYEx7LqPcm)1|btxpy?jsmXsgpD1+ zvYg~l@3vr>VNJ}?w&MqSErjw!zR7}~rRahaeb>p+COk`Wuj(de`9i#Q`cf;rvc1$r zvE)O`afUiSNYyQba1?%rusv_d(nfO`s_fi++C>%eHUMFkSvL8##5)v%>pvDmYV@NF z5}?%WS^Nzusno@d@FRvqz(~!P7gWM*ngQBoO`kp_ZQ=$~ILnTl?*&LD#$Deq^3(XM z=KBYj0|*^9G^1P8vl!3>pD&*!5+1@_J(Xy1jzP=rjl52^-x32z7U(L=3s?BwN;Z&u*E~&Y*r|)lU?Y{fcoUeQ>O=_COrHtLaJHEl{4h zNy>4&9~Bm+2W+G#13SuaH@wB#cykfomD_urU-*hX%R z3x!~@XJ^tpUU3NJbV`nPs`_RTUD66a@t|Def$ePKegY*8j2UhsZ#}b-$GJ!um!HIZ zMnwfFBhs9&(+`@;3=I56KLY9t8u!p2mnSCfUM!LpImT|dt@dshiUcMtiW71Yvc)MA z+J?+a$k1Pmi>1$F9%iAVEEmcDMI5V#5t*}2nKx@(%FNx>UX#UljAYd+$q<#z#rT9}nAB}XiCV(b-5zSYi)%oYpo6_?oQui1PZ#(W;#Gr>Wn)1j`}!>Q zE8vT(7Tfu~ix!q_GQ}zJG6JPTJ{$Vo85I7Ma$y+bZOSQQI6l?Klkjpq=xQQ^bu*!x zLnB^nH4&6694Q%Kl6kiAE#F+pA;vWMEj&!WH_}1h0h%EyD^gQS#Z7@auVom1xD_^P zJ7()snlNqw{Z1b-Kp`{}i&UbopM#W9ou||PJQKR)f?j;QIb*HEmi^ne6n8RJ;_#XX!NW=d==$k}$7k1=QKu9`xrTT}`ucE}O zZfyna#X>wU6`aytKF~#Q3i|1PFuR|uGXFfTK<)OH$@N1Q@9ngh8iws6<S;K}3bbw`vAd6p%UHA0>dQIzJAMp@)k`nk^T2^Tb)2phseY zMo~#{v`$n8Rvwy>jw}OZ986{wQD|uLszn-#QvKBXku6;*BCE2B8FO`s+8H4L5mIYG zk{0>sK-j8H*JoYj_Y~p(^futm59s>Q^(^I6eJ#;M=%;ba;Om=s%^vn%pixfSXOAs65xiBz!b@Dc}J{`VH9ej_cX3AHa8Fj>xlSM zLp%6NA`i&0VWJSEM8vwG#yVd`8PlFCWEyshFu%%JrG5Jis}oHO^8lIuJ@%X2po_Y4 zb(5j1Rd(;`KLG{)jwnkv0b|;O6iv=+2@2K?Rej3(bRt{HK{nPI9AlNlwxmeG>yuiB z5LufL|GI*}u)tzmg$7s;E?o^^g28+Y;-6+8Obm11{;U~ci^2QmYzyQhMz;pac4JpEwT9p2#OhxSdMVLBte)Ac z@*?0)W=R0kQ5}SvyN2BriJE&2?U?6-o<(GaovrQF@KECF-AXa;VF2hf(Btd$dogX7 zr-2R->1UT|oO6vPc^}zcqx3_1anvHnN)>fta(;RXQ%pkLf+Y7ZnvU;iu~>zeaLZK@ z3Zm9eSuC|njVKP|)s-RHMX4KOJdyX^f`#fl=t`b!abhwtAQ5AJSrgV|8PC$CDM$4Q z|M!UWDdz?y3Mf_}iKe`2=^KG?1e)$R?F7J1)!;14##EX(3(@jDdP-=!mK_ywj@H2z zEAcenX!SA-dE6?YZ#g-w^YA?~|4CF<70W=?H~a z_(?N?CZ0@FaxdtkMDNihDM(^Sxj|j-9xiOd|Awt20ngx5Pbgl-87KyX%;;6HGLk!Z z{uKsRc@GHp*Hqq-1q)}#ew1X5^YuDBNx@3mF7-n#@l*H}FG9gD9FLyG*UJ&2uOCzi zT(i67R9jF6lG$_%F0md$!*yFC>ojZ4G*UWgx)2k;BeSRU*^oVy{lhL;FBB2|an>dn zMtljK1z=gb^1J)?7qtahp0`ec9=C2=!zgO6AfL0KCqv-_Ps63+F-v48$*bH>p!XsW z>ZJP5wX9EszS8CFjaW7a-(*~N*LSSk)hTts@>$B7%HaPo;*?dNs#@^ z|17m6Sk|!l&`SwX5EWfPRCMKAgJSRL12MA6vc|cbK)``IH8IfJ8=P66ZbY=ZVz~#o zNmZ%#s!@D70eE)n<~Ws9ib~{+4oky&jkIg(IjACv!$Bq(-xG8Yzz8OQsx63Vi&BqF z;eCYy^aLnTRD2v-9gO_fWC^w2uVxh9O< zU+4xj?6IQE#2sEOSbaj6xt>MOK$f94MGLIUKw-%x_U*Ued4kDXo*|@`Efto}EUUuQ zQImT}*E!NGzTR4bLAf}mULsB{a~t0$53<8~O$UC^ep_dXZJ`H6wK!*#GzIDkgBFkT zJ;0)!YYVMDD&|eI|6@Z-r7bCznS)$1g2l?$F^WUQFhM@$HhOn~ZX+^i1ZjIW9%H|P z`bkOXGIYpd-}w;joV!8qC9>?iNXAn&Y#Pm|MRulRRXm!<0!7r=8d)!#f`{}|%TOws z6B*v52b}WfDDnp;h56M3Z3^;+dPmw$u3%_^@TN78=)<%n{{}>w^u1YNX0$=!CC}IO zHi=NXMWC`41A_Oe`W(sk685fwDoc`|{sRq=Zos2t`>w$;B+eXeGKT=d9npBwcI^cT z3H(tPAp-3@gN_QBLBY@cOK#5u*_n1D45z}7;kgN7$8sQ+7a=v_ccSUyLZ>^7juZe( zrBzuRAe)e)qGijeMvM_IU0uSNxvY@lXGPK4rE)o4HQ91*BzqXx%vZv^lu@`R?`{Au_)R37H)+z*0Vf4uG5@O382ct!HkgDa)8!^T*Xn9*KaamU3w_? zM24g=%Wex-I+rK&769u3fSKKRdKnh**+doyBw*gs>vem$o=3@Raj^?#0Grg)EMGMM zuf?U5Gz&TjftHr&o5QyBS(q42D#XaGRL(ItM(Qzs{!4(y6tg2wX) zkIgSq$w}{wj9HfKLvKr3KqF~f@2UKp;x5p&d>)(H>otyt76pQ}Beo7n%a+ct$At4) z?~LrP!uu@>j_kMMl-9eZeop$jE#FP~r1cq>pH%%8k%_uATeSqRu#YM8xo^K7SInl1 z_v+xWf=o6cs8`q}mQTg*yqM@+Mt|PURv#+=7Sw@ibSQQpSzH@F1pTd*UTYauqmBe& zZD+T$6q@-n3&|>wSa0B^%7<{cL!6jM?keV7Tx;ds4@efHB*QNeeIh&NmN6pc1XR-4 ztQDh0Dsr4eC7y)(I)@+C=t zEu3ZsdWtFaK^7<>Brk?*IzGfFNI7b{d>cPDzhkDZB}wSxkw7L{AlEA_68`3$(Lizz zxei@XPDpfN7M)C;^+it|YX1!$8FN$TEoV@Y2MWfO~M_U+gAlJZo-&?0uc zzL%t3hTpr19mTIj(2s@EG(SZNkgq-mhtR1y5#}o?2fE}p>zj@(Z&Gq|ivF~06cVRM zvRF925=?a#nXcgw)@hL+Os#RO;uZYAjsNrSM8m~s7JykbK`%F=Q|SwwL0Ink$2m-= ztS+KBKYF$%K>dBlcJ5bqOxVh*tnqs z7GwHX3!DiAb}PEkkKdW7ydP_OE0GI6(oT3_k<_j1KqnnYWA0&O$~S9icoH5r2@DMu zp*tOc#~XQHge>|i@i#25SkQ&(5^>lRbE)f-*2F32X>5CTZtJ#T0@s-e>j8;6ib|v- zf80;{D7cdajoB2S_#B?FaCP>Cv|Q-iDE?A%?sSIDo=i^!9cjy>$uIBQpEXLsUoErG zrpp{4br0d&?}CmIne~x5gnjVxJFF0`|2iWI%BRqfUm$Y{kJImY1U#ETze#lOFlFxX z4I-s)a5gh+UBDkMH>JhI&!5E~s<>aO`cNW$SICnur8h;tIPFA0i{&8EPEDx@mU9U? zN&OXU$$CVbO3Mh6=Nrp*S`qG`qbKWkVgmJNFX|K0%cl<{X3(TW<_b$gObPFH`cUafuF{uC?_OaL)<11h{dGAgdMYx7H~^YH zy>g4CZ9y4BRjtNVeYg^a%okr-PCA=N#df97iaym*+EQhT_^0z8riZ;@?_vKQv`H?; zJ9Ob&_T0wOs6$S^pp02j+#b3m-m)e-oG||gRAa6LhmN}-s*YE9Gw5>_vnGq8;?B)< zn_A4x49R%32w1<55pSu1ewk0q$bBlBbr4S9~0|4XX&n8~sC3 z=?6UTRdSSDS36xLyUK(?tN~g|6&o$tNK9&rcigKdH3PeMh>{@YriSQJ3Udb)o^5CVa}q4yZ-aiAB;+fq8oj9gev20COwbrnPL?JC#B|UJ4z~JJoksh3*a|5ku-CwC zrAGp)aVI!tR(hqqhP9!2bT#jKWW!sjP8Gbl0pH};BVUO>P;HVITfm1z-}&h|S#Xl( z)g|!L9XBin;iO610vn1pfPO{Mb{V)Pp+nzEF)rlhp%VzXhKZKLm#b*Y{ygZxMAzB9 zm9ntZh@}WBj|W-7eeyFbG6eAhX|q(Qn;6(+$g}18Lg})nv>h!f70q?}`?Lx1#xKz% zJp+WeF~2|fxn_3Qb)3gjsKt?1xY}srg7g~I#-!M($<0}(J|{B$^)kcAaGaT>qbH%8 z0>-(>l8jBK&S6Rh#}W67i`g1@KE(}HAyHTBL^*7Y-Z`U)7Mjau@*bEpIA6hsQe|g2 zSIcW_gMnuym|`(Gz)5>Hbl+C>vRt8^GWjZ4#nZD@db4(Cob`SCGipc5>ubq9W(e&q zT07FPLTc>K1xMkMfMU9WyiNo;8rHjz3}c?70@XSB8LK`OXKdupKp!Ns@IuC^cg#+A z7m*g_c@K5AWo0}#-)*<|1eXdIg6@%JY(jh(4=ER)WLdqY=+^O-#i>q5G@N17O5BB* z+tVln%OZVHPg9937C8Wdg{pF8bTAPPY2jh?-L#1|V=SZx#dSinza86rZQrH@W8UJW zqVlLMOM_UgI%-Qj1SS?xi%{Nq0yMVBY7q7_db%e#68ALwIj3#G+Kcw3MSNlVa`*i1 z%|R2Bk5kufi~W|hIWex}PPXh2vFoELwaitr4^#_PbO9&yL^!Y=Z@EBk9`PH;Zg|4X z&d)vgyjT3yuWUQ^j`z+!{O)^~*4OtfU-r=ry>EW*+_S#=kze`vO;7srx8`P_5!`j> zC!X@=mmU51O&7lD0bji5S>M|ESHH01zDNAmMGyOvH~r@o>zWrm?9M}vI{PKpzVipa z^6<}G;5}}~eOFxafG^&4=TqMN$cKOC1%G-j27fOJZ&2)f`tJt4?mgRO2b#6%CI#@B zOR5mgRrEZ4aTg_XyYV!AtiSMZ>$-uIa#f>YWarhlmVDgYCCfgro*8}MqW3F}9`2H? zC9d5~XknN(rr5p>f4G5YZ~+)gLB&F{uRy;a<>P|Va5d+iOM@7m(yG^@AndznmcIh} z0?`|dX7IVycE6QMp{h8^i)N7}VOA*@HC<9p#2CG=(-D6p=pjV!Gb^(>M_mcY^Yv^x z^~9Sh^~B*VwhPn{6cv{cEL+=Ypu_xV+7}S;yxWP2$Xa;bt5^c0A;|1nZMQ9%L&Wjv zpQ!;I8Kp%;T1|4TsniwxK1yTx0q9#qg98)dn4n!|>E4!`MT;8Z@-F+%hYac|eypt7 zKjRO7Ph`<7>6FI>3I;jgv0W9Ps}|F8%AD*(?vVEtI^Z7%QM}GQ`YA~9a$_M0^xGTN zCBx`dCInE0X=d=U7}d&MJY*4^V@4krw$>jN$g|j5f&d)W>f5F!c;#vuPL}jwoCJOR z(np*~2h)wUq90q1A*^mOSmb@MOcM(LH3aJ<7S;b07PSi0t^&2I4;h%1()yk`I1)_c zNGF4TVKQ658T}+atBsP^6!gm9#w!jkOg#ImAG>B#aLJdy^^GS~zVnKQy!5hH z{&3s6S8e>u?j_Isz|)^_*L`0<_Dk>i%EEhRKKa(^`S-u5_TMkK*N1(+o#^~ z&e?yz?4J&N>Rc}45jXTSQj zFI@XG&%gC~AA0fO*~@Qv$7K&%{QY~+`pS#17<=6Q$Nv63y*K>xPw#x)*Y+=c;SZmD z)fr#?a_3V&^`U1!_>0r0jo*0flfHJf_xSg%n||}u=s!Jf$HTT^L}wE3|2NPVi468j zn9vXk0+(8c@@P7ZWy+_)|Hb3D`a+k7qY&q27u5x*-dczUPXLc|&lCIxZG!KCkh|}H z{VqRG!Zl()95Y8y=0+4cb7qCva-YtylAaxwc>Q$ zTfW2OdCrESkzv`^jwRkX(4-H^jeGQ8gksJ zoKfjghxF{SpwWFDufdO_`qNtg$ zc43DVGF&9HKBov$4thj*dVCzql`a!@QXY|~VjWqKP_`XetpioD zxGzXsFB~O}$#)GbbFlzeo`IR+!iBAy_-zpunTEQblNyw0#vvM-wif1>f`ojSPJEb7 z{M$dA4b}~7q z@-W0G*D@?w{(u4QECQQCZCxKIYVpjf~KA^YvL({%PlUnmIIyn z$zYN6NcQcwgtSl}*C@`?GAm+ND$-cxdqHaV8D$o@~W}`lQ{48Z9 z6cU8NAs1bYOEFEMIbu$>f)Duyt^+2RxPBLp(eJg?!M_E4ny4h#Va^u+D%A_TeW7vS z01DzXI#igudae3z!4V{KQ(!l$c5k6Sms2aRx3w8vID-$5_Jd(1s8 zhJ%7#p6m^V@NtZ%g1c@jml5exE>Q*sSI%4%*Kt-pxYVpNFit*`new8*mIc_r8S*tD zmFZ#NX9)e5H8_1 z3m>+9zgrS|&%ru-V|ELN$=z{6)B}?r2VJd}!}_%dt6{f!ya{uE9g(iLN8-MSCnKM3 zD(zP4{kguovSwH(yZ(D3p&NiE3dsvw`M@?iaNsZxswDW>;^Tf;-w{^e(r)h!%& zy@fN96e5Kr9c|e663=7`Qi_;_$#AORVF5$p*vTzzpLi@0W-zC)sBW6Qm6o)OPvsD725 z*iYWopqCLDvZuhDRvOL2jiunMmJ*awxmocv26XYuO0U}qYAO$yp;FU(g8pi+!)k5c z#4$R41YQUPum_0i2&a0%u5PD;IMeCl0>059`dv#s{4j_N{&$vSALrp+ubRmu+~j67 zGZ4yqe}>`sp8|c1NZ(k|{+Ci23uY9qf7kP>A1kpHTm(~nTZ)&l72qCENu|-X>pBdI zx0V~tu(k~^>g}@aZh{4UobtRS9P~Pql+VQysO7s%8BW#s9Y|RH3~kgV2oVq7K10Id zGD;`ardvzGT!~^Phxoesh6sPd!)P}89ineZD`Uw+v58vqUnwIzwv)iLEodW>hyGy@ zVTM^5{r`nlDDLgFY^6KOkD~4juPC~{H`sO)OjUeS$5jcz(m1Z;s-YowNAyFnbk#-B zZxiV|-3$OUHxJMghr}6M;fX*oobGM)56xbr`+kxqE}b)P(EZH48K2PYIMH#3z>Q)( z(=&=sIj`TFx735hAnv`jaoqZd8$1yq#a`IL{+|w^q9@VAduAs2lLMh*KE4$blB|M) zSW9^E<%H;&87yy2;7EwAvCaZ=gMjN$#VdKN(tA!nU1Ir+Qj4yhh^Kk*f}Am$6a19?FQ7fdR`mNpG z0&*pwOBkk6eO{Ou{KHQ^6M>cfzhk)vW{c<3&RIjYSOM@?7Kro{#?I^0nvJJ5gWC3H zg9(9WoARiskA}MQ;#CF@LX1W;+nWJr>pBp#bIClorkprk9#TI*&fZ0}c^$WT^XJzt zK0kf#ix-r!K->`IIGu&4!&FE3ZcUX}pNv8%)HkqBQ8J~@j$?Q>F0y60*ju(ufqm7W zQ$Rv!o#+M&%EU+}gwTA*LvzuOg`L7O>)k?R5u=2xRqr?Yt0BGV>s(Ya2Eonn)X>rl z*X@7W-k-X6+rsDWd*AmT^V9eCuKBe?Pp!Z4U;Mk;ue@X&A0o@7_jjPbAo^(b6&m(n z>E6MERP!t7u>w6}HcLy-{)dOt4-AQZpT`*eGeA`$n=f4KVr*PHn>AIhqdl3^te)P-Q#?+ z26odCwwr2G_+wPva>%=aQcwLq2Yrah?c|Rc#3v;Mh#Q;CRCX9~Ve+ z7LJ^Ro{~-yY?HAfvd{|`nRvKw|7C4RQ~UN8lZ~F=>h$;RFDfCSkN(5I_r8bWKcA*m zeJF?u8J_va8m}@*7tw8m%IU7^>bhi9N(n`sYcee7k0weG>oR^UcEo&)!iEfC?b4!? zvb5^rfb68at3??UX5&2?e=b&mRTuvx{`*M>Hh{<6lQ~VL!&OZ% zRhF#;imrSAS#JryapzkuzU_I}eDU%RH(qeb|J=85`6a*kvzPzE1EE}ce^29+SqHXg zz@#K)yLdzaCf@=a1{|gN8my!}T3}fRufZQ)K{RMWfLBuBQ8u2uD-ivOe%I4ne;@Qs zB3*Hc!N6F&i<)tWbO% zLi9F@n$elH6blmF%Co3s3`O@B$WO$+q?d91L>L|MX;CIX{6#%z_JTf4x4Pkkjgsj{ zhN>ETUHmJtEF+size!Y1lc1)4=1S(%X(FTvDFGbTuZsU_bI=JJ>vW}8#m<5vcZ<21!WP|CX`jR1KCShtwf@gBN;;ahSC^ilzBeR6@*MeR} za8`6Dco_iYfn zE8b#PW15ZgDXT(uJ-us2$&~ zIDCrxEA&ZWl1sU=X@g3ZYgY=!B8JjdPkX8?Gh&nF5)tebN=5VT1AUh$U)X{Jl;0Dq#EHBCK;yNvH%jikvb_;tnJ)i1H!P;E-nqQ$=AWPa3k-;j;JM*c^x-y~zhN>VM z0t0m*P+!ng;oszF?ZlOD)F&m=i0`hIv+d&fKcL0G7&K3m3!u?eHuSbjK!U|m zqa;jPi|Q!P;A2@8G4f&z6zH^mO?k%RL{pyFx8K>m=mGOnvL;`o>Pi=%(82ZS-dN)`l`5>dNs0O2*H4D@ z%q4qX@WApp^CxK1P6ttCy2{Y>32NORo+^aaDn%HKdefgJKNATC2(#=_X{Mcxryrl~ zwEAL7eu}09Ig|cx5b4q+!$D@0?sfYC?m|V`ryhIR1( z8$=`F7eMGv>*)qX9wZFgK~H(V9`q^eCnW5A#ACh#?XtQp0nbAPR78OmQUEfnM<*Pf zM?V9>>=Q)8VzY$(kFdmUk^mM}Bh!@&2H(;ok@la2x>hX&hxzFpo3~EDp{2V$qbFG1 zWIRC$t#Ni=8N1Q&q#+AGTyBNU8loGHuk?BRlFsK;rE0t4rW3^y(@{j?O0o>0SgC_% z=@nlVnrL2rI@IS*^oltnFW6mQnA|k65w$!-X$Eph>gyvVFd6bxM^(>AbbP(;<(xf| zXwkBX*c{GbBDGCqG2zKwr`%GZKdO$9ZMsQpDH@ol2q7k(%>d+4@sD~tQcg*CPnV73 zGlAAN2P_^Q{;aLIJ40_*?H}Jkq6^uJ8vBhM+{*e_<1S*%b)`DFzH!9_%{RjEXt%eB z3rdf`Y#;RW&BPkzkFVfDd3`^HdggQ75y*dZelSt>=AmGjf-lG1j175egudbA7EUS= z(H>qatwTf(i5caJQ^IFF`gh=X-q%3?LUe}|B=SAG>EI^3?`7N<;wsmfYl)+6|AX1N zYOMO!e9&X=T*Q`Bd9l8!lW6Pz5ud*d^lT!_#wU3l_xeuBYoXZ)9hjEBrP-z_V2bbYctiD5&99{j6)nZ>XS*nFa$FMXRnG}WzRiBOv{Z(p& zTYEvfi45U;JY+-E84y;byeL3475#pjb|m>k5xHKud^l`@+Fq~o2EmYRkz)>kquZj? zHZ_a71y2;i=dD^gpJZS{>oSUB!_p4)@i4%%MM0Ia?PnR9B}x~SMfJs%^JZrJI^e1+ zw_Oq26KuP34KXkZwxz_1%kRzRj9ZQ&#ko%cGcvBiG)o-ce7w_GZZ*X}M@hiAcbf?V zNkM>Ko@;bap{au}HL4|`PWAwZf0R7X50%DcJT?y0 zNa_RP@{wfk*r4nZNOFR*g`niK>B;2q;j`sAh^6@*B0b)T^KUL+Y)19cRy(9O?+1fs z)-jNxgT71S^LX(&XP+PQbDJpD6QasOu)NZ4^n>Aw4~K~vybtupM7P-Diy~$)*J`(e z-k!#RR);FTL{}VE^0|lu1M%No`19yA{XRfv8l^P&4R&|AI#g1r%F>fUP5OGBD1k4C z9OUXis>EJ_@{{_umS7hrF%^Vzlfq)T%TEkML{dT}GfzYUH~9^A(o0ujr?42l>fk%Y zaFLXfa1dRHM|F}28Om=e=B4YP1wx~PpB#u$kdC19iE0vR86&t_h4Jllt?JC7ZZ`~i z8TgK2j=hSp9F|L_T&5SBm#HP?AGWrF_F~ddybv7gv%gOE>O?bu5NElv2eh5YhKig4 z>H!jCOv3 zIZ>*;ew3vMX*4kCYb&2mNq@RUU7Ikz2`r01=$G!fz7t|K$dG8CkUU3kCh7h$phpsw zQxd9W1lAJoOgQK{4%$-jFGozy|5ci;+d%Im8dM`6HOrMb1`bm+pI-9v&5+Zs3u{&S zcowhnY2kw%2$r>7v-Jh-3+SLB8IN_)1Q;|Rys@63c#R9S>IX9!pv_wyHdoj)JO`scz9B>PX3l;+nVuj{V zlejoEJC`cRHygM*Xnyoc5sWX7o%R$q;cq3ZrJEj) zzp@L}<#{+|(gvRU;!L}-8U|)~OlD(J|9Cp3%O?^!Dr|g0@tRxhH&Dr%TBA;jh?tOt z)2YwV1I$fMC+E&gUw?XD(o;^bghr^qm;VINIYhcGVdZe^7%rrry_jDw(?3pcMKy{I zGTL%jgFw&HviAfizuH2;@a&>4CNf}S@F7Y`C#mw%gxBB@;rbG2ea*w$?? z20h&x-9$%}4(Mi7dt>|dTX2}GVToduG#i+>X`02K0a5MTGcphm;Rt&IH8;bh@R$Y0 zlX(|Tfz7(bm#u?g_>XOau*}1FR-`ZX6*cXkiFsuA3=+Q(2pI54t>YZjkuYbw`!Rg$^ zf(w^F6iH^`_)1V(1S)s*2N0Z2E!3#|2A%V7fc}-p5aGlkmF63*Ua&|Gi;(uj=+FYN z4C+k!4%+dBZoQ9k_e=cZ4nr5yZ#bzb20e?l!_P7eb4*mKG4N<>#huq$v^O?&#iGs1 z@NL87sNzH%q2_;w)*U%nKK*xtF6#=>Nx^rN-{XRT|5`2niapIlHcEXPvr1x0bD@Q& z5L`-oKsF*QVxa&(5w_U%$HUhwN!apl2i;6$IM`{}oN6{#mr-yBRsmZ5k)a`|0qm4e z4Sv;x+dba4yR{g0CHp^mKVhN)-_jFpc*FvMchMTk+qiWnk$QZ$({(UOJ3%2G{yiFG zG8J8j<7nNe`LCg3?>kyUFhz75H&X+4;=encu${JeH55wjspbk_M{EJ7qIY%rdOc{PDg$S_=;;>-%Z6sy zry283GQ+;U@6G4qN8YesLEWm#5hC4~9&0bSH4Pz|K^u`6i*#=tt=PH@h9FfBojs5o)&a4lK%WiYg+u*TPWPeOjh+dA|VYmugoi??4Y^7mZ z_4(9q?o(ca1d`zK(IQy(1x9=}d05Y;W!9lX-FAw6Q`{^-?BXoNWObB*w@&dv;r93LkAaK}@s9aMcQ zh_)G|Y*%tVF|^9jbG~@|W#^s=PtoXK0M`9)f{?)Ee|b<%b|WGD>4}7#8KK$n*cwY> z&B>*({#Xd(-=&3L55kK1UO{PtmU+Y=4JmR=5gTS+h+VEoMcql?UF)E2Cj^`aVnQki zBdcIiD(iIy!cHHv7p1imoLQuy(VS%E14$i4#{t>2NnxC>$u;77-dn`!rB=v z+o=YyRFriLp}Av7G#qT?vI|aP&_FDbpiFi<5 zq>g(c;z#FK542lNdJEPGU9L^whDBp`QUmirSLY#$=$Tf?$|#DKesU#ebr}~y!B%5= z2*ST&UD6+7A}o{oCGW~$Myw_ZLQjImvfh+o)EP}Fz0!G%p{dAfT|}eJvcc=DCfZ`L zMqKY7ZwIwf+L4rrzDSNkcxQ zzN}(&n%=9Q5oI1Uy8>3NN?P*EzxKy>a7}sacCfF?FN1!8$YSV=^aGfraVHcoFY;cD z=%e zbsH4il9*HcD!)c@{Ll<5=Te(LF|25*RVQKk5;LqIJlsckxc@{K(}hUT zsr(Usg7ahR^bAj*;ZYTM88LsF4xsTS%cb1aWw^Wpp)I|Is9M) zjCwdZg6!U@zd>vF66vxkV~Iv)9GiBk7DES|OC zWZ^b^c`Z^K3dH$Fl~5#{4}jCm7*H?|(J&(hZ1>;ad@S-W{Vx%|BURCR1yLD%XYrGG z*{i%x!*^~x5aDFy;s1Ktj>{m}f&E}m_}@gGT?_cvJy*lW@DrE`-lJKsfuMHzzg*x1 zAf?d~52N6L)9E%mq=)>_YNiicCS1}wbp`DIQd5?;Zu~~yg;>dFyRPfBmoq_dp;>RLXPPbr2Mgv8kwg?GI zOa%rX)knzS*wO}-s}a*|V)ic^Dk$PQ^q+uYRz(t;AIv&|qIV7GN}?MqIJbg?c~sOs zs|D8so@2kt&C0`;JN1~(v?u7V_Bt0e+N;4$yy|MqziaWKn(Co6NQY_>Oyhsuh zV)jwKfOw-U6O=BzJifQJ7|e)}u|dV`4TCl?IcNhDIpqKcZU4MM8#s5+2F@v+QC6-7 zgmPoUEW5-3*G~*OhK++ZaDKv)H;oI%f}Xhh?gs7DQd)EJxDNXHP3}rwvi>A0$9CIo zs$>3#))UDKrJJgSQ2DNb5$|keL1j@IbCt{Wu0<(Dp=DmHOkDk$Y?2j}zu!_CU7Z$O z>KXeN5*^6wjI=5Lh$RAsX*_dv=^{lfOS;$?9D!PK&AGK$CGQ6(WlDP)irP}#5?Q%* z?puF8vhPiAz|2$H&?she^dM15N$_Eo<+BGc=`W}rZbOxHm#K1$iqb)YWR+1u{^ps&Qx1A5g7?C@k3fPg5IJ*z#m)}(VY$Ig5ca8fe6#vu7up{fi6nN z^bm~5`eIo~%upQulcn&KG2Be*qf?jM6!udfxI?$rBpPR-N0d^bA5?XUDXec%o!_E? zNBWUcyAk^j$!oy!)+~-9wpW!{AKkx_Y*%K2=<^V7Yo)!Akh{z(P7Gl4v(7!m6zQ8a zYba_6kZu)ImsDL%47&2AFSI^+?>oZBVElCJiFY;VWkiAWc9~up$TAILtaJDet^+_W>9zSwMAI#r#TaroW*ozpWxXX%eXQJ=hlsdpZCtz|)V*Xj z3{(w=kIy(2_jsVMe{u4Q0DXj;BATy8eY9t0t+)oW94d`CNcb}{3Y}ePScK+DUs+UE zzCkwo834Q)tYgCINueDasaAT#acwk4=Q#xsvU>LtXB9L(PHmtHZ{~5K6|A#GTX&v< zx-5oo>KTVmz2#4jt={6c`e!zM!|F3OzVC0pJ$}18oJDIky6H28?Oydhl=&QowG^5GYC-}ClG^&MdHwc^#Npa)0YQ3&>}T8M+tkGZ2fZCYjcwx z#_)%siiqN7;;>}C@vczLClumt{K6{IdCwd!AcsK>z2LK-lyn>XxlQJ?$Z1)doF7(%@ZhLAkj@{~|Mr8K z&q|6E^@FnxuF5^ie)weQlJJhjl$*n<-ih0hM+Hfaaxih^`ppP~ot^gN!e$7MYy~E& zdXJKUJH{0tT-I|nbl!SK@tKFt{qlRB{rJqEpLP0&4qEwxvo~xuYVf&wU{9)USU3I`$-@nx(_k8yJE$`WG%Z*Qc zeCvb%^}fa5KKA3M?XvLbIUn9*{&AmQ+W-2kZoli#kL-5hz?0u!e(e2IKJl;Zw>|fo zd-t63#t$$1%l`lV$X9nfCwJAk-G99Bfmw4W_gRmAY~S)(kL3P+$|>95_WY%{&KkO= zcFQ|o_2D0Gyn4;!$8GhR_x)(#$9G(LN`1Sh51Vq>yni2Z=ns$k^H$IO`o426zvR50 zzg)Z98{c-sR_h8s`THaD&cFAOhqwIY@jriU{cWdQ`s$~ixczVE-0+(}ZTaAPx6Ylq z&)l6)-{#@1zVzKG|NQ=^M?SJ*2WR6Wj`;fVy?3wJc=hh}KU}o=&R0yjZ~1oHR33Ws zJ2v{|{Z}0M<7ZC1|Hh~Ge(wCIdd{g<=G?I4@iR6&^v-L_KfLsSkt4SmDE@o?%BQw` z=C-%*^v@suWd5cbzxme9SD*TYXU_Qc#_!u~?=9}#;_%=1ZTra&9rnw!PJ83?hwpRk zr}pZf{?+@3HrzM)*d+&!ef5!(_jg z8j4&@uL?PH90ef_MFcc?3_WiimeO2VHX3dXML&UY;VkAsX!OtSv}}-u?HeD3ST@P0L(!dW`szxv?3UYwp@%ktqr9UZ@XCt* z&P(cwa$T))!-V+pYo^qK@cj>#B?k}A+)e~Tq-<>xQ?Tfoe0qHMsd`MJmoQxT9 zZ>%DWurU)CBvL3=paRH3(s-~uwlgKwPN(8Elb%BXCdbyt+2jEJu_~ zHbaG*@JmWWiLP9A?KAkxQ-o-^F-bg7M+2|R@wih-1!E!HSL&|jCYLCd+#JC)G3_mL zYOpW3so5k|#b|uz-xSh`Ms8^8l!`aB&+mC6)0+WT6U=yf*2`;pijhz>jUt{oEP7~g zts3<_rGs*ehNa^K{IDt$I-x<aC0B9Yqt~euLTqd#`Y=J-6$qv zRAPVMA9P`1G$txS;K7;oVyUDb?QT$&5aUm>IuqwDVJJcRjs zlHa;Zs4sqkN6BcpFz(cn*xsl#gq}0gnbbytcap>|1|Y)Rn%fptKm)-y#C9(NFtXt6 z7#53KfQ8O*slZzmgjDBaE{0Mx=67+xea(ab?Z|oI+@M^aZN14d@D5%f+1jRJQ|d@H?MJ;HQA^6QT?U*|MR*0jbQa zv(gkzQ2OeTp1BK~S%4UyD{(8TrS(0F`}dC&k9ru1;uG?ux~8uNohE8ycvpQ0e;dNz zqRFCekFd>Rn6+xX-Y8Ut!9VmY3H~0LrN)D((~r47%Eez*RZB!1YH|KkX2}s zh9xH22}KA-4~)ckK8I?~g-11_qA@t^hI%w(!aeC#Ght35jF1!1@GHfpAY8eTV^$>I zothbyyEcUv16S+yxgll>xTb{>B2>6Z&?cfnb&+Frcl_<$gy`w<5L{TOWj*=5k2w4? z!1;tLqD-}db@4dmTBkzS6E@HiNgD|WXvmN#u+J}Zyk7)dK2fY%c4&MbH>gp;f51j(Vab$WB1x<+@lKO4>kv)P`jgnWVa z>j+U-ZkJ~QVUN2tQUFOWvUEkaR8o9tn3xEWCEIb_0n0S$XuyXEQ9Y=49O;kGW!*X| z@_8j<++UOP2uAx7u`2ExEE?`l??0|#jl^Y?F)c#XzY;Hk7src*dIS0*=_0atl!!M{(L)=Zwn5zYE#R^tU$lV zb)2xf3X`lFAB^ecO4z>wqJ9ZMgLZi`Bw?pbSuAk$1j&sHOS`XVJ~)}^MiG!)0S`H9 z?t-$Qq4b6=8EP&(HtK4e?JoQ!|4%|I-5jgDI;N1cA3-BsH?eym6=I^@E5;ljQGxf$ z=vkfSaUnu2+?yZg-Vib>b;AzlnwQMwuCYoL zs};E1)r8M_;RrmeP-?Us+H_N^SlEWAGeyvP<`38p)HTu%#H^3l6K~5}+5xA=7)rEu zz;Id3O3Exfx)bhOU9Sr5ipi?z&S%Kt8dF4`6`Fc*7_vCT#55aTp&+Ml*CZeU3s!Dx zIU&j;=*0=qq<9-~d90WXnymlGD?|K^^mls@3wWLM??W--Q|< zJthNjW3Kehp}OQFMoLEIJ!GLz><2RFh~l9WjgZNCQS8rJ6H&PT9PWekhKzK-aKk;Ji0N9q0$b&UKC2jZ^gSqsT(D@R?e2$=AbDJ2>FZXtyl}!O)|8gdyq#+_vt&>MPsNvF_5$cd&V`%p@BUUJlbF#uV3E>44ms<3$PFYKmoaN#e%T!SwJfb+_ zB=t7bCpO}t><>nLtA+l+)eeM6ePBSzC6GaB57B5eo81s(tCONwwpov%p&o3~cf4?$ z(-h>CRQj07hLkXS`Ambm()KE17Q7modlw;!|Cf zMfo1OmTI-AtgWnvw1sO9V3UNSDODUnu-3l)eTZ)wayB$HTg)>dCGr&Z%jg|qOL+WU z*bzm3hZMLsx*+1Fc~d}IFl1EpV)Z9`(wU};vXF=n9*v$ArHEMT=n5)jJYib9g6=vO zO69Q{f_zt1HJ4=e0-s@WFG>C_#7bWVTujJ>OS??zM+QRX>Pb}!Fn@6IB9e~ck!HNdKkyP>u6$fo@jT|?5}at^7xq_BtRj!e8|T70^m$Se5OT7`-vAxaHZ7K-3RRDAz0MM z(TpafZ9<7nEkx;o&nwL;HC(DK8n&!UInqY}4-l@^TxFjZEmfLtw3j$B?qZ|C{MD%& zoPdBF>j_R0&J`A%E38Xmtg;DMqF2d=XPY4jbYtIagid^96m%oa5p*sPxmu6{E#IH^ z2w(`-t2AeNLfJP{Rv^ll$@}Ihoi(>Dpxn_W#I+b4ki1>ys~2tBzd=6gh_Wf7L=&T@ zEv39o9o;A8ehaoJdZ%9`9&b`qj};xAL|)MeD}_Do&D;`ZD6K@h6}zG8{p-9GxJ*m| zXYUNyo)FDY?rkK}{xN%QsW@+ZWvw&}#hUk~y=Wx5AEH`V6=y!n*2j(Gjvf=)r8$X8 zQUt}DV9>SwZlchW0iPmVml~~iPum3*kpxZFoKMDUo>O+M#&&v2!S?Wdo+JAX;2VTH zY%{dGz}Wy>u}I*G{1)W^{h|@e9LwkKY`4GVD+1<^edGH+kLO+h{y8HmxG5J(;D&Cx zp7zgXWm~hqI`?W+@rAhP@rw2oEhCN~ESEiV1_#|?Xzrp?X5DnnICc6<4OtPz`|I^F zr#6VIS`hyHScQFfD%#;|Tqo0)KVM@btDIdW7_%l;SKGHFD-UHPJ+&jorSc>RZeEPi zGc2sp)9ceKeTNmFL$g233wj&idP0;#lXS#Apm>STJ)?`pMpk;hG94xnQ#JRKR7sKu z1Indo2DdGEDnwsqPvH*Frv@~1&DEKSumvITD$y%q)x^C%Ky|8z;4)UkLz0e$F$~18 zDAN!$8uHR7zQoSmMO<+w0NIADn={BjtZ(Jd4ST|Q@90PaX&fR^OsVrhf>u^%RX3oi z?8NXM3}q6?^dyk!NuP@DP!yqa=-WgKiuF=XO;m+j)CN98%ZiQ%2Ra*1r8!-0Uqh6j zHM)0w#FeJW(1DGX@c3{kbVQG|jMZ2SZYMS%OS1#Yg^R8#dya&Ph}V#!T!Y+ES5px< z*=V|E+fo;;A=V`6>>nns(6w4NJ=(imf#%>LP45b`5M6TbILRfCw&HDyml2Jx1(87!sMyob( ze<6e)PKLn3S5m?{C?uAIn%aMmA*7==;-6xendZhZhExh_?|@|2PFw$Om&oplF~59> ztbHZOH1b2(mqkx<^dL#?h^sEmr$QOgoLt@+lh|3@Hm{Fxly7S4hZUX_z22b%j|(B^ z5-lk39!skui_SJ-g`(IuX|`2ejHN<9cyh2+*YXH{7jQSh?3P%{8|Q{s)##RD3|X$= zr&aGDDsj#g0JK>7f&>fw@@{=&flw^-zvSQ)5#wh8Rvyc*xhOh~Nq1bRdlSsm3J+g`nFT=FkL^(0J%!?by0Etj{ zc?DVuE8Gk0-8XqUAxv5jCavo;NFi{t%Yq=I4!LM1y97dE%Dx8hB|Hmiwg{Ox+Z((9kt!Ylaf*#k2b;owy$i0&(ccV6voZGGsFuKw0nR zf16z)l4+x;Hz71G3xBD`a0xcE9W44Dp5^qqoC(09llB2Owg({<1I6)g6(vx5WsT;n z3Lb4xXi=g_M0n%{A>=~kkeb`nbj&MY?2R35!($hvYCv<3boP*_yeDoha8oO%>liO; z4R4}g-{=h7l@E;A(HSK0&)w6ar^Q>6kS;{Zmg(A_uEBo-DTS>t8rgv3RvqAD4r;UK zq7*n12uu@ymZ(0_pm~nXe=#R%nqF7b(im!3qH8RUR01Z~(LPZnG=S(bbE^Z5pj^5n zRZR4dMvqq%11M!YtA3PY(5n5SMJ0i3)=x(J4wf&tbHI9CTm5IR5A68%U6+0DvB_`i z-S!2T|0c~LJ^VTVEU9(Ptq|b+r0P*w&ZURRmSF?Rh>mi%x6{$`6)H`;gLA-(ZsIM^ z<1$DF%!4@*rgy$*7I++9AD*5X+O}(@Slk4)C87hdTa>rhiXJxMxw+0UaaN6x7h%T~`_`_adMo+DLTa-K5+7c@Un~JxS z)42J2$m&x?k#%JGikLiIVXqT}2=rILNQ@!_AncbOQxLOa;YwaoB75)W{ud5$_F?TJ z04DXFDBdA|0#g!!NK0fvz~=2Pl+zHWH?hAfue^{w&V*L3F#t&1(6&;6j{gyCzjAMCwuNlz!)K#=fS^+ z2osf8(Y>=$ZNO8piDpH@s8&;i*T%;f(Pi*1x5SxI?pG`na#@8CTT~trsz^Mx>7qxS zN~Y-szkKjxbm_cx36P%Vvap=oIEl&hSsS?Dvb;bmQM4a_CggcYOQvz~jv@o{0)R$| zXKzTObg;hCQr76V(pB8z=@OziL6%T-Bp<~VpZ__i>ndXK?7bCf^&JKGS53Z-@C4xus z_Ee*;kCBxjA}0pXF0URF4>JzZeW&p-o8Z z6`sQU!D0=mi1}p4Su!@LxidAieL-QRQ_iradt|7ydxkoDW~j4khB`A&4VGQrJ9VkV zODGwdeouxv^go$ongJoTvwYORs&${oIP$;aUEdM#CPFmCFP_j5@5*#sMx0MdMk1q3 z8l}6ET!gZgyCaWE3jSOr@%II;C~Eb156P2dkz=C+XhO$n^C&Wa`E%wE}s2xqNue?~ouO>>cqFhx}hK!b(Xn`)u6nHxuIWA;Qa7ErpHci@? zu1mqDp~ZCw1aU1naoH@ROd7hfV=`0aCM`#d&u+?t69v&7(- z@My|p*rG#^eHdURA+^N9&7Wkz(rQ*LB`4Y%p+@)5$Id?APfZvGtz-SeB7zYg9!1Am z%@G$1t6b%h_W~G$yjLKaLN~-2Q zU@ch5qK{eXJuEO-9Yd<|VTmAOI30HDa>4ADm6|!p6v>M8>@=r)f#AK=d`xbd6n9Cu z1X#X##H;i-zlD(O7T}A&$sPzX5^gMp&3z*|G`(eS%U4Lb7h~u59UcstZI%)eh-QEv ze8pf)ifn;yaKTcV_@ksv;w_2WQn;CR86s*8f>6X+jqe!CAT4SF!d1l7l{_+|0HjE? z)@0-uQB{0)blg#H#49_-j-LYXDfHj8c*I~K)BYlL<|@8Wg&d8vqQP8+t6dPOG?$f} z^=`CFE_mW$U8z0>W6KdvkNdO({w5@pE47y?wi^u3Zjp~UwqDcl&o_!GhO zdRbi=by;oVfK04e%%ozqVpGysGbMI7!B>x^wP#bpEdT%gSH8%vehJX9aV zrUAtu2V59GVxBzc`hp@c?d|kr9fzf(wS|1V*C=Q%Qev&I*q<0X0)!h(qwkh2#ouZ7oJ~N<8N0GzM1?4c`Uo!EY-X0 zJX*7Is_ZQcGIw>L2eysx1`;b|Gqc}ENH|xKU|ZJK@l;_#pjk~8$s|NZr7S6wN{wJb z8QEt`>J!!G$c~!5y0{itzkX7l69JzjB)dX}DUZ~%pc)clCu)S^E5%FW)Bmh(NPj#iqjN$@c4el z8X_@)$7xarxuTco)E&1lEnW8JwQ(WVM&!0nD{XZReeEZC}e*s7#B+u>9QH z0B3`~C%6K12HmF=#)5~N z5NU`+SB>$(HICB|5|2tS#6Mjs1fF0C;-?=H&IZb3t4o!Ig$f?YgBOi8N$)U_Ld~m= zOpvl<&2N(3Irk1Cn>t`EA<7yyBb#;AqIln(deT1e*gGcnQjoC!0-UpfYcJnWk0QQ! z3NclK-ysxAS8@%zAY{INr?HAeYH+;LC~SzbmH~YZGL2{qH?9ncwn{6<8jgkth(fMM zo=6oI6%<5|&Bf}*G&UWJVMiTHWvIEN-J#@g^QvW_HJow#fZUt7Sxj?o=kO2D5xy#s zLY!%3QMKWO-*-X{t4sF^u>Kaa89iE65rRNf=q7LK*`n{3{IrTZ_!P`cc=dB0ScNHA zirlLK8xagCo;4{0PZy&i2&oY~(@=Xbr0l zUWb!mA?28L86nw~Z?FJ=jCk42R?oH|c4#nnzSjOC8cTkzCbmDc%8x0xL^Q#5`1861 znRlR2udm0GR#Em_gHf9dhZ+o>RiK-qLB4D+Y_E(G8Hw(t+^3lUn+myXXsA$F%7`kB zWM>l_NpL4m--iHo!nKLaeE-PEScB;{T_hs(Y~CXwSEsIs?)>j#JV`$X{E(3GL{2$7 zP_l=-3&aW5dL$&VwFxYETaFA_Z}?t(NTb7u zv6Etg8Dh+qR-&aMjq8VX|2Q{c3jW3rl^5$hj%;5qqPp!Q*<&3a2-CU>n zfLVm(x1M6L)vU3SCkVlpAek^Cv?C*$=}M0TrB_E-s&HzxYHbwZA5Kp=*1UI(Q(U{m zK}!A#61$H%VUHMHl|rR|bp=r^p=#ceF6NTL?@2rjyC%UzE%9OCNX{m5hCG`F?KClz zXmGL#cb9;-Uup+lQyfUYFMBayE}`8!kH&E4&ky@|@)d+Zr_48&s}*5t>M%+`kNNhl z^#nXSXAf~H{s#C1q1|xdTkJ&UR5W&)5tBDbeT zMMYa@aF=~^OGj_90fU6m8a*+efDBB`cdk!;0=9^ifLn`v8f_idwmC~{D$`fONWpzJ zW%I(`wL~__4aTPvz~Sj5a{6BYL<9SG>FF6yV?MJq5u?P4>d9gXMKxU*Mk=LMc9ud? z@USzdh8#=QB#Z20pySHOw_vgCe_-SDKLFfAXdf$W*@7f}KHx+{K?8BZE_G|36)KK> z{etA#oeiU9usXFSZ|5ijt5-&c%wPLEYYQ?k&;55*#-O{@dBH4vFTif^FSxcTs7K)Z zsCE*OIp70cA0=sD=d?}Yf>*aSOV{mn?|VqL+vALO8t{6Wnpw|n+@r7%(|$^yQ6)tY>>=K6RCJE2k6dnxuhglefbR-_QnU;BV0hxE9j zj?kGXDKmtLtta>q>*ZN-d6}E*iwUb^k!yg(U8StFhG*#IQ+|eeDz9yta+~kFW&EE6%XyB0Wwm>>U z$kVOXqei5l85UXyyO3!34bhJqwWeX1gae64tfAOJCM75;Tlu6kVYTFVcFn*;tdt>E z%&p;d9stZEWT(kIfH^b5tU3*Xj;?fudHm5rzT>Qhsq0{85gFEUDHrxpz)uMoaBbd5 zx0#IxH6lo?~}sfqIn(9y|L>Zu5SCe!}(1JZ+V^nj$PRRZG^S zxVU6}qLV?AQlY_Gl1}r0-L)v^u zacs1wcj-X)DBdS^YTZmIg&fBm!bZY~D+<)c@PgQg(=#{@U30k)h2S_T@UHk7-fF{R zqT*??O}C*#&}>6+EutW}p^;LhP!H45IrM__48K96bzCr}XI0h|}*nwhX>$`HB}$1C1_ z{gNBhSzcYOl^SbCRCCWTHai z`Qyn-Sc@;fxq+9eI{^b2MLPJGLP~6dCfYl4srCoZ?{)F{k*A^rAHajntT0^Ou7n%c zWC+)s6x_I_L%nP-;jnonG_n+$XzGh2OOSq~!p~4Gs~I{kW;%xGAgr&*BMI%3_2_3M zDMaE0H&b+1{89I;0_GBX_5Pq#qwoz zWHd;cvj_>`8VoG3UMTFF%xuEpQWBstV@;5&F2P4f&Di8;?80`uBncD}6c%!z?yfIi zVR#))Zg$I6)tnv8X~fbCrPIau%Q*y->Vf^|W#X+7vYy~Hn7nDDxrAILKQp(6doo3OktM5y zltptBv;N^IEAK^5ZualF**5{cMhL{sg@saur{Ps*jC17+0#LlzWKRN3FU(o+}9cH7qt~kina!5 zmk?AVd5-V{I&2|{`IF3~h8&WP`No_CDF*B9AV-%*iU~I|AhcW@m8M6CJTeWFrbw7Z zClv81tA??B_$?oxjR1MZW4EA}prp|J`T2C+ z9EwMvRVs)>nnJt<*C^E2QiVE%Kk=iL6TC}dv`}2*^fao~avg!ZjUJ)alQAU`dSahN zxj0hGZxrqFNjLz3WC%WdMU{Ww;1Qs{4~+RF98n|G^!|G z6sK71nbX^gM_&i=VuLg6KhQD7jC0kL!YvK^G-+;O_~J+1t3r91H8Kb5OAO^YdTLaX z7*E;=i%DKi;ulji)9h2S%FzBDFCEQA?<54w98xG%;jtHdT{rz_(Rp(}d-Hxb-}|eh zZrk`fOyRR956YQQTZ$d?T{~4BZYEYy`yy!&kTwuW``IFVvK8Zbs<4I@`3S1a4x;y; zH})_R8b5z&LJyE;T9-XC)!IE%t@mWAwOgiIyJo62BU7#Ep^cW7Bp{73GS*b!+hW32@>r$1GXY`5J}<$S#~y5jhZ>r5SSN-=3pvsB|1GF@L572 z6-spK!-z42a8~ zQAZWaj=4KJ6$V#d4wsjeX zYX1lD3?Vp;fwqOC*(CVE)nM@a1_v*!hUoyI4;l`0l7W858v-;)jo@l|S`t^~5ex!1 zNNBD+C6TItTW+hV@v%Dg`>3<~}@~42*!mAjM)gYIv%p#Dm|=J2ej^ ztkww@K*24+_`*m*!`A_W=6PZ-0-Q}~@emCk7>&mW3t*V3h)_o%o}n!(m+|VVe6wWe z(c%|5Ry^7+UU*umT}2c~w3g(8-3ktS^U|{se0;Rrg7Vw?F`>nCruyZ9i&xowlNim2 zFP|Crc6?bM=N!KdxQ1|RqDH|*lF2FsGnAS0oG6kXE^g7EG+Nz(IoQhqg9MGFUL;>n z@3DUHG%pDw-%0I&#-h;tLW^cC$k9V@LwjmVp@55pWj&PV z*uixTP-IicK}5IELh1`MNt*k66~}xE;CMnX=5ST~V&!7TtmC{;A$DlZg9!QyBV+c5 z?{pqn^3z)oGz458S>#7q=+x_YqpHrzIRjgmX6IFXRg&3Wy7_99ZOY*4t6QEUUBXuX zT5^tc#A>PoR0ffB< zaku^()VY{sg2{O*F$DV~qkkX@dz#bU3&1~T1ot#%g-`(c=KC*x)pnO$_VnxRNxN_N z)8BpIeEi!!tV_Id6d_q(5u8ueTyJnX(YUd_{<9d8{Wkz|L)(8ayS8ZGnq+`ZO!P~g zRHkd>Ac1tGHK$2AH(5gzN$tX(1PODINbed=^oCYBsP(@Nlc8Z5L&!ouf49_;ui|!pjc=~d@mzj^-0c>_l*upN9aW? zjysk_2V#>VH%67wXdoGL9*d#mrvr8-WaP>@&P_6l0-p~MW5`Mpynwl`R39spkx8=$ zryB1F!UO@6{U{z>s5B-H)$2{^CK{t;6n;`LyBKVP6*O%>CR$^W2#KM9T0UxLkN*=Ud-J|rr_V_W?wg> zf!3td6gH*4F9U~Z#5uMrQD?Ctc--fw$|CrA`HC!TXw1H3vLigd_{)#LmVkuoBKvv} zmaie!&E%3e@+C038D%`vFcR(*kjSwHpID6?7LveQ2}VN>!W7~C&{D$UQel}HmT$o( zXTc_CJ&>eD#P8OWc=k8Yk_7^L@Na?UET|n;+G^;ms)kLFukB>oj$sR%R5xb39idec z^s$w7C@(9k#p9H^OjTX_ckY4=(C*9HgG~)G#Z#;&^d`g(@X;PEear=)3`5nw2=oL<1(c%?} zTEqdm=R?{jGmO&Wv%_iDJOMw9Zsx9UkavNB2waR;XOwgVf~!bI_o(SDVrA1;oebn6 zw6>834e*Lfc|ubL`np|u4#0nyO3s2+*{te@7x%i0BwMt3?oVhY0AYI;*FblzBRE*a6R0`N3)nFn z3}Ffz^52bvPr?+BBYZI#L)J?0oX6uQ;_TZ-d?s48zZz||35oVsP(($er(qX!eSi-T zG`C%HWj-?!O5S7Wjj6$a#FElOsgoKcEQk&>PcYWi%tD~G19sbG&j7U<;Ad01rr9{r z>C9-Rn2AEuxqUl|6wugzJ5sQ1Oz~fYzyyx1J}itn2||2qQSM9?5TMM7k)7uTYfLAl*h z_{^fP$HeV-a=p$5e2&nrAh#)UBptGn8!?!M2sM?N+{c|+6qJ}UKASdN z`*ncL34w|tP+PIsq=003Zgj!#s#Yo>!mhtz)HW25xQNS2noxs1Q0L5AeCI2rcA^@ z*9p2-S_fq~Ur1KV-K%;#SA_wq|yIwM$4J*8shk%YGSaNHX z#&m<968+3_0Tl{+QR(P0TC20$%K={?w0pO9M-V)fs(;z_|j=AJ7tT89r_!eSi0A5v3=j>>ARkrO1M@A zG5gwy-niVb%0Hr>Wt(YdP%;;AjeZxdV&qD*uKl#M>=obFJ9>FUx+MKG0iC-%GEy`h zk}`GdGeheJ(qih}i1JRE7{aG;qW`)n;vPo&k)J(VI-RPai0_pt7{tA%P!JTEkB zyaCgBa!kqP$&zi*4tmXba``tq(7Er7Zi)BB4@2uK2^p@eIif%Z;$!TQ{bqm&x^0&{ z?#VX)JFT4}=$3A;-y;|!WW0W2hIyNje!hi9y|ak^Asz#1AxLu(EVFm^I&n#3=yOQd zE^avXCYQ#?!@I?(X8)x712p^7LeK@r-!9lix@zsyq%GUMQ`6gRU|Rc54DAkK*LEA2 zafRTlO}OfIyV_IlTHJ2a?@H6HJ_D%Jr7QS^xjxK6F-v@iLX*!1vsvk}Dhd@L4x|o^N1`8mbi9Rrm37yqV!#_1l zUXyadfQ!{I*;zSMqo>VVswXap53CVtLZ%nyN@0apW2r?BT5?^7MX9bED| zQZZjUKmmy;+^?%~Fnu?7s}BGlBI^TzdR2>qU<6-zqZ^~| z>z8$*`QnwSzcNSUrfHq-a=fPS1lt5r+Z+m z=FCTI4teK7t$>tk>@xSIL^)3B;=T?Jhh2O886D4p zfT=GsP@${E90HxS4xc8GIs3^+H~$TKd9<@9jq8=K zl)9&JJ@b!rk|;Fy@zT*e`=t6@VEH{Q!Lez zRYqgh{@hSlQAG;=GecA(6HDKn#fLI0;+a6+I^U*fGZBuImlA>F>RA+XL%C|hne^~W zc-JF7W-Tr4L2xFU!pEbR+Zym{!h~WwcGr~xM4e1YZIta=&mW-bf5`8vqt@`+5zRFA(X#z6)peO79Wf14|SL ze9v8TEtDpNr8t6@+ZPT*@?~no8tBRVt}!)J({X~#B4ao;LK(+5Fl*re1l2m-y^Gs;IG{vmn-Fx|+tZ9n#M6YAw*qV(SAGLvl+a1E!~6NN;ZQq@y<(L_b~X%V zAIS|s-d+0?g7OwKSJ3|s?%Ad?^w{X;xpQ9s!n?n{;Vl=x>gm^ha{1wpKXKnv_xKg64{6nWqd)=NFzvB~E&3gNtYcD*v>+G#wzj(v(Kl=Fvmz{pt+%sk@ zz3KZ0&iMXsp1fi1Gj|Su<>uKp-@jGgKR3SR;(I4eJEi~1lRmTW>py+pL$Ch$ibu}5 z<{kgpjhltUix{`DOzAKdKU``onPzS68iFL~k2>u)%Imq$)t zGIyUVc75&mTh95|3u_jB_n8m>=k`rsRlM-1xAn|AblUmvn6YDN@|#Xudd2!_AN-$p zt-8PTzyBD$_w=rJf95@(_}{L#HlFzHt;;vw>XfxReEjCEhrhk^iO+5MpKbp-R=eiR zBX{`pwpX6Kev{rE$9A4|$gO+NDr|E|*A^#Sck~T6?Q+3gUmLw*?%7XX_VbUv|K2|w zeEzFT-@Y;b*QHx*w9~Khug}?^y7F_kT0eSlqiqcu0yuRQsWYj1sEvp28%-k*Pc|?_am=7b=sj_``dfH zciQOX@4EJ!C$TH%bBpME^%y~iOoiOBcwjNG?mEw_(=fnPLk~!c`rTZY2AJ8@4HE}y zie?JUN;(tLl2Aql$0kS`uF5P)&B)voOu0~Lc!?yv-v$LBr2RJGEN1hJcs~UJj~Ms*F2>*}kW@ zQ0ZS?!D}E(oW@wKBG}cmbS1{8CESJgfO78HTQ9!%4I90IYJTBN|0T@pB0}5ey@f|} zXHKxlkV|za!}W?mNRk`-BqERSL$W;DeC`9iXj7;XTf!&8W4?h#Zz5>K16SAp9Y8!` z1%gUCQlLTf*~AhJU70vJLnjCMq%l~M{>tcBLo?YILEiWl@n7dod!@tE95vxmTwvt;?!a5P&-lc~aL(-G7*f^WOIPHzLe zkuTbKTQa?^oe9+jgV7b-+ii?Lq9?b_+Aw zZee=cE$rEL3wwlG$VhV3Ga@{sLycxTc)PdV0yQwN055G3>%SCZT}TjIfkI{dNB9zX z{CMJw1`i~y{VU-2gyiJyL(YcAvXZmjsgXIXG0(?3hyUO@p5%g8&X+j#v2tS`p1!Nr z#>IZ?v!w^EVgxPT*$T=wjo`~NAUfK0_mbI88J4WjOMK|bdWN(ZuV&c%bB3|E1*^UU zE+a-y+h}NCvoNC30E9HlE$J~=0n5f$L+noijwGbwudJ?)Fm}m(!iXtz^BSq~jGlb$ zN)!3zK7E=|%V(ywvoGH0iSJ=|2mQ5pCsT_A zP?g_}Jd{v}xX&Ud9}r(GrJn=q=3`bo6#FOKA&d@^nLgZiuSg{hXFN-7$i<6z8ioOU z!0DhQu_a=cK?U*It&xsbvc%3F2K<RQZ~RYG%zT7}BXWkLcqZo(%GB z5!)R;qpd{TbjL1tkC}`sj;UU_UcSP6p@D0Tk3qiHH~_vI*5NnBiqw{S{;SNGp zyeC`}64|y>rMNX%Sm(?dTeV6&u$EPNi_s5Y{QSPBprqupJc>vdJSqCF5)$dTwINT2 z6Hn>P>ua3i+K_2ox1uAD3JKbH|QT5$ADZVAWSn z9+~zTJl7}XMPTqQz{0}pW1Vqr)b?6)R+YiJ^~~g>PSC0KSJqXF!t-Yy?o(NAsFlki z!I_ai49&WP2n^OddoJPD$ki&;E7N-1`$e8AKw#o_;ZeNcma(~<#$>~*CVc?YBoxyq zx7c1dhB%5~#K2ihdcJF1OjySEwU6RZ*$h>WDP9^E)=b{Y!wAuf7#H=)1?1O()DIob zV;~X?UW%bzda3>>_m&Iw`T(ews~C=Zyud&8vM6U8W9W~R>lQUcvfStZRu<}f9@H5w z;RZ1%iQhHEgwFt;BD8oaRI6O-*8bvcU>&Vz)?ddzFPZ68==_X_58L9X#?;~MuB)%X zke=tgmccLrhpeoQRf^-qLLG05_B7pVvL(~^n6~Tg>UI7vPJM6cr{sk^nIM=bizcy$ z%VwnKLl_Jr;_UdM{EC=pZ#O52JustF9 z6=CglVvAeGKL#w4`38xfM$07-or;tE%C3nPZRaPl(x2zR+ z&029r){4`!R@_}Z5d+oHu~F_`*7n{LwMXbZGqQHlS6X3+aU_$6RcEkDC-|^4sNobk&CL0(kjwlC?kE7Yp8Se_2e!l;;{3$^3M~}F#yCA zaRwW~1@x{d)E4r^Ql}PUu<_Z7B`))gp~mFD_6sRIO3cH}k#gNILRZIXMTcyPF$Zo> zCDJ96!c-f-xv>=ot|$;xYHhb6;G^$c%j$mLQQki_WwV~Z1q^FCn)T!!}_>S&@UYw21h+ShyU_5sr?Iz#~B4@tHm*H$<>A(G@xyAdkB&!219bEiB-u5K6t^e(E(rNYF6q@ zm)YY^-5-#T$1czp5i7$}gq1%U+mM65bq@a4xz~qPkPul$s+FE7#_*-UAhX<*)R-nl zJz7L+Oez-^!X2kHQW*8#xr}*C-Y?ldGBVaEAgUgSy4x!rr}X#BH?`c|^#6Pe2Ei_M z6Z9JMw!E$v46do87;)6E94d_6$zK+g8~u{u$;UW(M7M3w-LJIKSmKyiIpJ>(w=R1Q zp$(+V_Wn=d;;yQ_gh=q!fQ<+u?}?H?D}?%?%O7%TBPBfIES4~;ooRyrbe)$#b(XJq z@yUbzI#SyI1^kW>P1+M$nTcDLmx3<-gA;!g@Kb^zd6@|{iAP>g%gU>~_UuxjTwQ&J zq*Smjk2BT8)r2%)WcdqX`y!t|D46Z|-x+f3{%+2Q&*nNF2v|bU zSiAyNxMYUMR+dYA0SylntNeK0K;ztDeR)?0_2m>qSYi>1GOtD~fd|AsZ>kD*_h~670y;wa%H6SdptimVruRo>KXo_$e`nYz0}) zr#73~DKtCL?D`$Vi%S7e0pu2%U?L34+9-oQDF%f`bs5sI9-~T$mY$XdkEa$zVqS*w zF;`!iX`f)9t5Hk!g(!;iB@EXIASFF8l31_{T_!ja=shjYY(;B~g_s;8`|JwN`16iYj8rQzBC=XYOH$7IuXi!SOaCaI|jlVczNg?mql*039=V{7u80=fvA1j@tf zipa|fd*7T!QSe?^Dr=MW?w(Ue#M0m(TkW5%L1)!s9j^zV1eBkRvAX6$iG&|4`8r?)U# zSXqJ^wdB+_BNXou?Az~7n5}9;Gvw0r&(`ci^Ri&erkLQtgfcRc#X#kkfF9k1*U`8) z;WaLXJ!bTP#?3H z3~`GwMVuRUx)Sx4qVmE*1;L&*!=bQ-9LfYEcY7xitt$W*5>AtToDL>j8x~G?_`!3| z_ZMV7+||5yjL#0$aQ)C&&v!7(t3J=Yz9}a-fsW_BCVTVU*ObMbF9(9LT*>`?4FHJG z-qdhW0|!4&rz-_3{mNpRx8~y906-Y1ePt$s$OYmzHNhm)SFNqbK7%a*32uueFyscp zbh5)#Izc%c5hx~{qTho3%iRaKi=ZJh0zb}P*6Y$=FNAzjaH*7Vsc@vA2H&!Xqz-PJ zqo$a05_3ooVZOj#E|0)+pH3ZoQ#{)WDIpzBPQ%z z20eKplbXyyg1`+_;X5-<`d&k{Hwc|(hNAH7(rP^T#KM|k%iZJ~+?tooW7gf^{kv$) zxtOKwa0#EKaL49NM04OGd`;4XCHb!lG-Bm`h%+s6e$T|8GtUT7j9xHbPHjP99Nueg zVfVjNcG|h{j<4+V?$QUhKl$GueB*5G#t-24C(VUi~i`%4G1y+hd* z6HRKMTJR+&d8IXG4qUo?V#8kZhLj}W6gp1q4V}L)3o{um(T$sw=Q$Mi5f2yhX*8y8 zFW?Try65I?4D7v5kLTw?T@e7Ag+k)96&LhX_`T@rl7!p7QdZ<`lsS?O1!M5gzQa8G zbE5+#0}_}90)aW$dv~K*Yl58^X*9?U1CVSicaSFUyu5BgS^^#jBvz}luefy(6>t0s z#h)4k7TJR|c=lz2Mn$r@Z{buUK-#+Prl>VW>S2(TVJ%TyH{@F+Y8Wdvsz`(C{Ua*F z)~c^fo~Mp7NoE|`SQ}=X`-pS)0`SinVaa3m*vQCuKWs|)L43Bz59we2&@cP2?u~$} z2!;rJuu&bA@)ce#i!nRAXb9w1PCzDqOUSq(SG;?n(^yj-mj93X;+yF05;=no!_iqu z&?s}{H4|}ajIJ!wIpw8DLThT>(=cV^6D2RHVM_&jH`l4ayQ91aHr|%%4h?dOa98e* z+EpHod4PQgVM)6WjHi3I!GJgF_*s6FKRo-+sn7px^Mze^Km5*5p8Jgt)t1kne&uer zU4Rk`(O_!Lh@y_Lx(qK_z$NKaDQq{hDg~37VA}3#M*7gv2MC`Jajjf^m1nhEZ_d8l zOeUEu5xypyQ)D%Hf0`3K$t}*1U~(OL&TR|$A3}oOTEQukvLK^`#-(*QGvPAwKZx;R z@}04ysjtaHb#j89L#fl+PhtYK6j>;(fwlsN5nt}jJe}_b>_|9Eo=&G{exW9u?G{uE z!vXh?QsUbc^(Oro0F}k0`^>m)R@_XrX8BnxOrwC6+R|rSghBXRf*YjktSTUyl%ig> zwr{DSrc7Y3N?`A-Y7KMry!mxD@oQrE1y=}jxrR9#oZ=Xj0z$y*COc&)^2`c?q}0yQ zu%~WqU(`KU4qwXYfpDkwy2qAn(~h^7A=L=9v|p9Otosq*o~Af%l?@j-WNgjqg{!Eg zT`n?F4WQ>P4VNS!zlIe8${SZ9_N4l15an7)?_#Y2{KA+$a(4%MVWF{4>(V1$LG*9% zeBRGlg__~!hC(0>YlKt`O0c{@9b)>@U=g>Jyf*4|y90kf<($kHPt6#%5r`+z?O@h# z1!F0x2n;(2yo%I8`ZgB3IA_CyK<7UvO*j%TMo2IvEOdkLBg%5m`zFB$Tvrnv`rlC) zg?NJMIQ)5>h7*^3lc&*S<$Oo=;jL9G=<-E)@xEE+xImKX7)G+tD72JG(knOIov}~j z@%SiUJt52=FDO;ky6Jsb)DEi?N6Up(J;Cow@$`X}k4X2Qlaq3K_H$cOj%pyiqxvU! zKw!NTPmrH=ehf~Ui}%Uaxlg-rKvM&}wXRejE0jw|I6Vjma{ng$kb@Ed^%)$mGzuGh zuN-AO?)`3dX4Vo@ul#72bsmW%%R}`i2)+_(o zKLT4dbu7v-6-1*>Uf>Nqox|Yl4|MIqUAm0_83HUIoEh3>qI#~paIWAcZLExGX}@Pe zSN>HH2qr&^RUUcarLOvW{*uCQ35wT7qgwHqO_7(*CpIeu>(?`9WVA8vZi&KzEvQ!4 z&a4dgIZiopS{1KvKd8{{N@P{=yO`h08CdnsA^I4bln9UPLjqvx zQ#dUw6FG?-@_y%F`_JvId9g>{?5K-F$oi^_6KwKK(O?gvOi2wA(5ftxm_a-hs*e%_ zXq?JDvr4NyYEj2ZP0=97W{mrCN6hJIcq&Xy--l%RVg5KQZg`lX;*@y;Uvl{&4h_3w zbaA`FSGo+Pr_+uZH`Prx+fnp#HH;b*%dvbsf*NWgA@gu~KFjwsB zG+eBv?_dQ_MWV0}MqlhFy|55&K|z2CxDFk?JcI=sxh(C+2^lbjSg%YsyfYX#AvF}R zLmk6QGNdc0WCG3PX`J~d)TD0znYZC}fXxXS8A9SnPvOE%?kHMIkV~4>JsQN^6egE| zvRpKoP(Z57@Lzk(D?IKfJN z7uDfkF*sZ0{}h~hCugx7Fi1E##AEIka#OTo9T+#d{QR3Ay1IX-OOM&-wtLQ4^RJ!1 z@bGuOdDNeFIT7Al{o~_@{QZ($_J1DD9?CvG12~2dys!}Hg*?p;)ez##E56yT$=5er z__kif;;9x9jti}{AJ*qEEE__(-~(30uqeK|S9<<%Y+VWJT*cYu@&vX-$*QDN8@Mjw zg|ZQc#gQdUL3&0dlyS|U8B?1Wd+OMAE<28e{WPJK`A;ml=4Pj7ximqaXeg9+E~=Xl zK_@8W#{*$d8+ASdfM%A|tAs|EfSz3Zr9qeiQLBMZnhu3}B?$US<7l2RxG?U_372X5 z5f%uigt3nBG~lk=fdjwO6B2ku0bzH|DI%+D!;FZvYzkk6I0#{d7QzaxD-BhvC~D=> zIr3z1u0kitKHMAz!|E*LFR+dxC@UuQI=U4T1>6-=XoNJBs_W>tH)Z9FfBkOScHM8j z_5NRdJighf8 zVuKdD87wcC=Si_Ni5tL&@{ql>D2OJ9W2izkkmodbgZFnzc6DK4PMV*eiS1Rer(iy@pNLXs9tY)CCn zgQ1I`+$?9pYPG+!wjkZRGhFMF0|S^#$rJ5L&6+Q)$K-UFCzy1sH7U-wD$$qD5J!eq z%$=t9kgB3PRLoM`>T@1C_@DUWDWVX*kMKA_;Xa3Ij)=UlqYVvI>mr#w>P%LDMV%g2 zrD;VJBNzGSRYp%aSY=#{9I(lIU+p6nF> zM7P>YWBs~(|6-qTTU}X73m1CHlW zlz)}3y)m4N9%~Mj@C2*(ww5nNihV>p7lO6JWj?1buc ztY2ZCxlI6g1u&P_@FOvz0+*>vBQG?GVH!n|!sKW=R>~wAn^oSXlU_asjGi%nnWRRi z3f<3V)lm^kv$kSW!<~whMA+8c7CifdfPD#pKn}79cOHkippa(K_5AZZqQl5DS_sYf z-vMm<9{|1%_~+{+V;gpRb>+iYsd5p}Sg6c02VpLUOe8*Xr*EuzJ^Sfg7RpHY0n1ndt-~HB%n3Axfy~%Nt znAmSi1Su^mfR_i&g_f1;(gNM`0R@;HQIdr>vIX;`dpF;RRLqtzIcuDzQnT)KFn1BWM(y zCVvoK!jqN!DdIQ(H6M;(*w>V&K{!gT7188iX=D@(Y@<;ttsKL%UQQ!ARxi7@;w3IB zhpQ>^)8bc8HVPNQPIkTJn}=L-)2){rcILuEmw)VkucgDxL)_h7z+Qygqbl_{%p$M> z?&c_1dbpF-s`XLaSof}X8KE6R6qXS?wKhbWrWj3yQCzSu0WKnBPo(^7cQKnh34qvQ>$o^cP=A-a zCaheB%N{82LZYltLwc=>*jnV2vxW%a2fB$?-hTgyQj61e~qQ-7|i24u1Zf5u(2`4;<#QT#x@~$4X0c0UIb2Ood`Me z#pyYRBd)lfk=0F~1K-nAARFn$& zVuTwdXh~((u5@T9Kqv`Zn$yJpX}aJt#IWO?=A2(}Ep+*#4#Ra1rV4JtqK9bDwL6Gl^q4IFlPQ4hePniHNcH;xAMHPY-CVkGy7A!Eigh z&@rv`(HEZ4l zx3j>LTk)#d4^$@+dlsAbdC_wxh{60SUg@M+$2LCg-X@3*4SaJ#f`^L*LT)79zsF6fu8BKZAC9=Cr3{!TEY#T>+xHudqX4rdFAuHNmV zIf^d*uvQqI$&B1g4D;a&Ymm|EZQRnl@j-2|Ac{3qsJM(hXmd7C;R%4F3E4His4c#n zhtk@?izjhR3js8T&xyHH2%}K)^uw<(bZa#iZwXty1aK}P6hpsyCkth)yc>01 zWG<8NZ#vh<^Mbn=F77!-qCwm6mZRtu9PQJ9KN8XehoQXqy21y(!!OTdLEOe?()uUo zUInZsq-3qd-0`0b`Gyis9NeYW<5~v@7J9t$adAmkj$d+?AG0RW3n+ zC_C$RGrOy=HYAL)Y2)n4+_=R6cmP;)!(Jus{hM8=t<7@#hS=`s0gOfbOzhU-IduGH znLUKAa#N}+s{asriUV+Vi}N}c_VbB2uT0U%N%KoFT%K2J5ulF{82x=LITyZz8Sd90 zoBbq!Ceb5}t^sR^F9|`(L)M~6#V^b{9&L+9lQ+Ykn+0k(U%ett@Sa-PABmk#v5IQt zmG8ao*}fyU`q-R*Ja~D}@6R2)^vKgLTlncsrv9h8@}h6w@RtYn+x91SmLI(GcPF25 z*lXT?(AGO${N(rl@XyyiSNrhRbC*22{_?fEK6FRr=5v-l`@|>uKJcE~pBj4aiI0AG z-d~IT?^wOf#Tl27y!e`p7hUzt7k7T^pK@>5=h-_SyZ`(X z|9IQ*>wo!$o7b$r@S2SdzWlg--+I|$H+}SuYmS+9_a1v3cFbKXmTdR0gYKDg&j~w! z`j)|Icl`0P>8J1X=B@6(e~c7uIST{iHEyFUMoqqn_b_J`k9{Px>F z^wc&dSC=lk@Xv2~Ie5a z<%P{wEqmh3PrmVlFCRU=-L*D^k8LI` zos%29@9V#~1%@n|9;C0 zCtf{p|Kaz3XMFDiU@OmU!;`lbP$alvMXSe3JpnD4SE|GDNMs#J62nqlyHWN@+OrQK zdhPltZmPNNRbK>ApdWD`sLzjYYFHNo&LPBM#rcJGjMKF8!H+8HbN^lN$4U&)#Zs76 z%Xf=}{EU%sC3SOl_;L)^26nK49qc2cteKb`gS>(~tT7^ilp6wlsgJc5V)c;s&c(CQ z)eRxFXuAP|j?%0TI%NcxxXng~Jxk#z12p50YOqvZQyp^}4Nu;QwjZX6(UAqLPFVNv zQd6W`msCadf{`aB;+M(OfDIsav=GWI1eB*+AXb-=q<+Q9wUYc}*cD&cmX=XBV`|>S z!ib{&E88Y)NQ;Rm6vAdGb8ZX3RDvcnKo}l-XAjOC@ZATv47&Vw)U$_!pb~WdA;&XK zDY#68+X{}fPr^dZd4c-X|Iv?p5A_qA&gMdXc)Z58%0*a;XO&l19K8P2aPXio7GZJ< z7dQ=36=p<#VFSO6KY! zxG0MBA}ZJYxIok;972ebzP&8W9hyX${ZU;@N0@`Y6jfM;zcbb_9X;W&ELZQBgmwO-}SKJ^Hp@?_Y zD{R~jg2e05a$fgBi}YFi&#{ESpzHLEIQ2TM4PH2apf>e20?&%N`S4Bh3ompl1(YFZ zM>Y^H-Fo3RdQJu zghR)7T8b&NsQApMERSWvFxjMSuq1BZR+?iem^IP9@v)Tpw#4J)jYYM!`&;RqN3V>~ zw@JKaf~D-#$j|GFc+G}oz=mbOJ~t+j4H_{EUpjWHGZjB%fmRO)IIYD1k!FCOL+(J?WM zbacL~A*F>@5zU_J*o2U^G;AO(m2m#{)*2f`%Si4QfS(Xr9?(rf`7D50U6ZaSp5qz# z%4%nL&N_&G$%uMJ^3S^_|2!=u=*lq!v_SN)rkJ3)Il0a0N;ZqZ^`Pof{tXr-CM8Ia zK!u$QI_@cOlfwmc7dGe7Y6a`!KIDR%vRNp(K+Gh31G$=W&doWjz6dgec>lhVQyxA| zstHK*X0PP<>q>Z?yIb)8b>xfZS16U@w$mSp^1PWx8Tp$?_z^?`QgEOLL9ie0TBv$m zk$p;OF*G)@fl8Fzd|Va;PgkpW3P){7D2Ua6@{RJjX@7e4+n$?qLN^ZflcX9_%W6c1 zO|YuavL1@2MJkcl4Zx4S>wwVgEO8Jki6|ejJN(Txb2=MFkwa$$C#1(;LB9lB5UE6N z!(YTR5-nmhT!cZ{u(qmDWXPcxqhW$V&`0hIQLHDNLI!G%h@f#=SkR*b;2iMX#ce>Y zU~3scBPR=)Abj5E&`o0Ad*Rj4&!62C7?Dzot5Fhm8!TBaG*)zxsRcp9}67TQc z%K*3G==vBziAaqpC+;!V1mEdc78{4x{wg8U`I-F6W(+c1+Vs4Hk?AG_m+*CNAN;ax z_+{BUrBfhr`@0OZNSa(mLtsS$mPyvL>t1c6MUfmS@i4h*2VN`0mQK@MPPd9&{P_ILjfSMl6(n;aO z1bB;0Wg!H6q9id}8F?2@ts$8XbwT2IAK#|UO+Jr%JqPf9f(~N`QhrF=7RK19%x^wh z`yAi|LV{n2wBmNV7A5)rsMj*(hbND)q#;AWR?ooL>?Ht%?%DGV?>Z~$(ksPimjfM| zqI`qyzJ;cmI3}u7?+R{=(jI%x7+qw522-oZ?ftp!OeIPN@wR}gQu4jJqJvMmQLxE7 zLlt?HJlt+oC6k8xPlEMFOSvzFZ<9#!1AeiDU<3YF?OC~#zDurKgoDC&A5RL*s%}E* zuu3MBzSgZFvawoSMpIVsm&l*NRCKyo1zWGIB5aeRYf8ns&znzCWict{DWZ)Sw)|;n ze~Q(Lm<$!3D}JSy_Q&jA%Vie{rCXyS9yRgV2B?TGSbrrLp&~_%;z=wmY={9W%BR=V zm>{n#o|*3YSpVTM-T|;JA(b)Dnxw&x#5`d$q$l*}A|d0s z;D#s#73A2GpK{mAemjrVEr4qYLCcAEFA;&o-}Wn#@Kp2N*2Pjs?xZ^j>l@r~SR!rM zs_fx}>oG+^I`d)mgYu9JgsRt)5?e2v9+o&2D?%8m#IMpt%v@Pouku3jqm zK@}OfJ(Crj)~oFl1Me14hbvU}Eg|zgwh;qqwM;vw#<~}?p8g7b8;>+L@zm98v1fWJR zxbLDP{3oy6KC*FPtPpd2qnFQX>Z2Tj%+ad3G2)7O+?8@j#Sh92knT5l*}sLED@vbF>QA=e_ag-XV7j2u}NrIW_ko_>j#w=e5WmTACr?e(mm^>zmNCY(c#2fzND?JyH7sc ztuTLFC@ivYDYzJa6E2n4Xs&5}75o53MoJAT&)JNc#md%P@6olzde6YVy@SnuM|F0c zS_re~QfWN|xStRxtUVTHL8-DfEVHPt@v86@*1rVxOy~)^&UCE|ge)}u7^nDg03C71 zgC)WgvC(cOG^}axcUSx2vGO{m2W{DblCDKtD9rB|j)Y+i$#+{2DwYrVxR9|4u0Mao z$GdIa3AmY%;cmPBnCUN#$u-B2;@7;6a(EzOL-zVlo6q%`JQv0SfY1w>!qhuP`|}N><-RW+QTc*T817uQ1PX{ zE~3ZQ*Cpt{fD~GfU@Q+1I*j-`%UIg!@1(oP))Tx)R94O+Ty08y_JdoBOre-JIMXl1 zRSRfIj4w8631x< z0`*qnw#8Z&xzF)f!Zw|QZ94bWB;2>LsrOTOWe1T!84)^* z#zx@dDV9||J!H3ai>wt}W?T~ExFh(QIUAfJ5>1N#-QFb`ew~UZr(4p*eo6a2WLdxlO*4! z6$kzE&YLfN9f)v_w)q^`a*^h5JR7~+C?=giGlQ9dEuNO4&WsFore{pfkfEzxO<490 zvP3Nsrr`P+`j47Q{@L|vIf`ZWc7WFqG=jI|3hYRV-@wBY>%2_?R<*VTv$q6BNLqMXGC~10Q@AO0$bPzI`z=@`VHNv5{``GVH<1#es5ME& z4gzDVI zM@5?Jp`O+fn@j1nW`a*KY<_q10DTa!A3^u@0`W_&tZD&G{Lk7J#HbzdA~G+G7Z*dG zD433sRz!oL@JQ$`JqO@Fix428>5b!AI@HT2rCve z68*G#T`BNynCM&edfcd25j5w`BW7e&`)7;&HK4(Pgday3mqAf7%!e%dXKN0ydR;;% zN@*^g$3Y-eD~)*b3ynzR^5J$C~S7w{dxl4>i52O-KcciO)7V)C@@N zC4>cVaku*LoQvBMW*EJ_-a|$xk^9ec%U17l`%W+5?*r&wXwi_M)P8SD^1$Bm{~vqL z0VYL}b@$9JAeac|tZSA5mLM2emIW4Ac40}1sKf5;GB7){OaK;9!JHK%X2k#k3YZZC zrUL`!oG_d@U_6!cj{m(^-BsN)UDMSwv&!9n{e92HH`P_u6<(_MUU_C&USB9xwqo z8p4*GsX-OC`|0_vR2wr0`+T{}jqvo=s=%Jt-L#srKtp~SsSoF)Of|L{6^mw8bl|8Vc3pL)VBU;2#u^=kl#ME|5pVrZj^YHIUJ9H9Cm#cs|H?;G2VxRs892B{$O! zrM$n)DN?S1_muxs>S)B4m+vM2sfSafFjMla5!bRK1P4RN&HOvj8-i5@tCzl+4k+wa zZ1cPb=B0z}j!I)WP}nzFzwfYB%zn1@)Lb=6rx#8qN8&^yv+MQ|fUlVpsz>{is`dS5 z>zcEEo7rpoP|D2n*$$9k4PFQfviKeV5aWuMs8WnBN~Y?xXdVx_avUhAY5%vnrJ1f| z4#mOk2V>s@D77-ZRmiVOjHhR-v$kGJ{U~)ytLB-Zsc=-te(oX*Bua)t2Enl*xP~(p zwH|nY-(6EI8n8|PY&v$=G|qu}1r^-r?7+yHA?zH|{7ny`>z4UX?=0A5P;$&N@379y zWjQ9=6sreM3%rA{5<=b4?(K=O=iolMrON_>Jmtw$JmfIS*2#gJRKaKmU3RI>u>Pp5 z9-!V1jhaKncQ6vNEEI>Q9=5J754p}AdTRY{b5S}Bd@u@mT5!kmI&H9C|? zf?ngYF9flHQOM==%HizO+MfY%%{|H_K&~G|;pA$7c?elFgNoWg{95J&l!Z$#xh>VE zFc#Vkl>$m@p+U6a4092+gzjf`1J9HJ@dMx)k6(W!0J!jI7rE5k8_Lk*za^8cnl@vT zv1V`HCJQpYY*s*0htUuvem(;J2S2NqNZMi(6nOp>dPzTTQY;n;1*4{cMJvN^JQiRS zg3AWAq_EVpoYTUxq%}ZILdra7LR`k3MUO^vg#8#}bJe4>n0p4JUjtZrXNBtVAVOlK ziNU9$APPxxz?-#lpsF&BmvQUg0eps#eHr2KZ|P{!w28YsCP?iJ!s$@4DhMfN*^!{j zF6rg+dvBNDOI?2NnfFPsT(#r`O=`%J`J&4eS=&~3)>mN`^`CH;UJGy;0?VLdrZHjq zhN;dlgPPA-v$IhqNLv&M1xN=fk3~{VQPTs?mrdues|55mbP1oEu#aG-rG8$!0EDza zV=UGPZ8*ql38SBGqNfWhw26q&wC+$JW%3!6iq<7TjD#}yEW&NH7r;&k*}fM`x3Mc! z_5rsZXy-iYHZ3z_VzSS-Z9}qmO>I61v<3R_bJc&Pv#RfhvkFJhl%R2>u!P(9KushV zj-uLZ*mDIrlazxB%?FQQ^_>AaAt+g^@zp$71DQL?u?FdHB9!=359GvE?KZ*4p;IQ4 z*7v|kfYjyeu6Nh1MbS6HuMoajb>kLutJKh0aXd!r!*4djek6ifwBYg&^)V zn`wUG{78XXxh`y58UTtq0w2mmG8iQZ#h%B3?Hwb~mnfTcZ_Bqx7o4510nobniK|{n zxgV=%fRvD!9Bww~pzEBvULOr@yPcUQSOR_Cb}qUDG=tCg_{}^bf(#jxz}c!!vfWDz zH;3{dxKx$Uf9nkt)@I2=B&k4TV3HKDwSZM-@^Pa1FzJ*uw zAy0Tn$)gg+Qj$$2e}R15YiuV#$|AZT^EOh3AHbrIa3o;tDsZ*H-N@R72(FtJ3en@w zs?#`myrW1%6vb4uY}R@UV>M+RZ08#6-HiZOA*^x}T+;XNaPa7i5E5Q@zoWpx!eb-L zX?qmwG@e_rpO|SgI;Fw||t}v%a$VAMaY~`>CoJU6*b$DrERj3Irp~-0}Q3T#g z(CS(QuRIaE+ZsDb&vSD_uU?0~>8AipN66w8K`t10o{rz*mpGabrL0Sak}R*jB-LLm zJR?wDIW9e*Q|8%`k-EmqT^V9IXOMKrM;oql_pFqB1UPW^3zS6~WASiua+5IgNQ&DS z61-Lxtp{JV6uOkaqn{4b;JY2*1_aS*$sWXawzA2Bq-$eVE4uN=(Mpo3wb#TFP&^j3 zd7)EHlw(-Ufa0d|d!s>j$&HOPt0x*4B0~NmZF6Uos#ZOiY+)(jhhaY`zy7vzo~Ugh93h6sVpD-`4GM)KStVI1 zLl#w`P2b3HE-T%GC448&9f>u9b6sO#IQ#{fa5${Y2z$@rXVy3RVO(fxum)05LkO{P z5x8x?GZU||k6@0rRrY^ya_JD!jHa}1|1@T2qktOwc=JSIiqWYVB8@_9rBjDlhpav* z>e=LFP7?NoA%=uLTghw0M(onll-aE`j6hkVX3ddzPzvlQ>JM(q)XV?;{^V}ITzByg zzrvB5AB`V6+}@!>Qdhkq2WFm!9j{dtWi^RSNFEvD5);=XBO;TAV1(h(>Gl$S@|eLj zAxTci2(Pwy(c+t#>PUK72aaXCAi=hr*n*+oEAW;JYyuuSdAtw)aVNrkZW=QkiG}MZ zdp*h)l}*ibftlZpsd=&fJDf+7<)2MM0=sQI55bbv<^aq@uwRqGHDzlmAD^B4@G^E8 ziCtld`vj^@yQ_!4!m5P=_?(G*rvrc=;V!pfw0OfXt6`Bli*y^|oaXMf%%0LvLnfp; zIL{;z83$bVGJiB8n!YVgj{LkKeKlLs(ul2SC;{nZSqmDSHyjPUI}|~3KFie)!-*c> z-CQY^L}OIwc7c5~e(%v9WQ~2YT2>%(SriZ6oT}f9*Cx)5D1f*=Zckqn4K5 zm=i4g$u6VtpKP>@Zjl7-M!N&S6D_0m3u8FUf#PWQL;JcHdH{Ba1bpQG=mA_N(-1bV z@gsVmUjt)#DT3>oDYiMG@B~LPp6arMv;Sg$a^O^)jZ`l;dP!c4e=WV##z5~u z>(iD1ksLI4+ekEF z$H8SD%@87FI&0b98;b8V$Kp8Rc0WeZAzKHAitgE&kZCG{idZDv@$iqa2u>_bn7m9| z6uyU#u1;I(a;F-7u&KYEY6zWI(Wr^t#z(gqY|`z2tPIn6&xXRMB4kIHqr_!Ykp+Js7OJ>|5%#^}Gn3q0Gn5Y^!#a4-L zZ(OSl07%Anbj= zSPq{AHai;t`Cn2*8QAzfN^Z3^sdyO5(BqSkK9I#K%X%|Dcfvyf)baw+qMMzTBBf7{I1bJz+967qcL9m~BUo^|pMo@f{j#WKQg|hVMUY0^5PB!F0)FBU|UM7j3BoY*EtcgX! zbuB#iI-ZDQga13Cu$d$&59GHnE}tSSPY>Xl*%S$kuNuzum|@{$3H*=6Q3warcb()V zEN8t%gcK~JLLsabWssuuHf_>7RbuIZO+n*7x)3AnM_fnziZE9v87uEJPiBiB&D>LV zzH56cYG$<^5{%YILh(P9lH?^K;2gtf(G_8b!@qF1_jFQIGkrhsMeEZa-`xoCBSL-y zi1oUjjypu3bDG}Nlp=3;$g<$zZRS+WB5~?Dtr_U@CR};oyp{ddY!sq0C|CkNSy$5S zvgxE;qLK(^D0P|UFOiVfCYZ@7?1YJ8JKJ6nr=&SiZTRp$IC2XCAPzylQ8Z%+FzHkS z2dj-&dR8z&Fkjn!HUd_hU9`(IY8e&}PQM)Rgxq&35@UZfCIX=qZFO5uZQ^qd`oe!UVcXN;dizNO4LuRd}Y` zsGl>zbhn*L%x{923YQa!bst;iaTb|D0%+gTP69|EWT?}|9`~M)Qp70R$+N8{XcC_} z&<8)s+f@W)^ETvc?}TSokH=Z*K^c@%}E-T?nVPunXU z#A$P7G&7g@u3DG2KefG2WYDjtU|5Gb3JNX8-ft2_udy1-%DpcG16C1r`0 zXq_F0P3Wo=({H5!KnyS^VS3Z7?`U3SjXDs~^jD}`Ced{u`x)gOzm5%-ejqLmq;(?@ zl*br!Q0Y3d1_DgLxj=pBUIbykx6u$oJ_K7VPZ5W`Ya{ljtvHe#t0Rlh&1}We++D;r zwUuIV7Rh8hJPGcIQ!olhz5zSM&%0H9V&Ef{axzE;!ru1@6NSE?7C>)B^JCShr&F+))71kp; zX)$>Rd>1~S!iV~|1!#wm*RZuM*lJQB%TCc9%jC^&;`>!9!ni8c`!JR?~SSFgdjJa9d$XM#jX9u$jLPlw;a z^&vMEB!|8HnEOoG$E##?JO!6i*5}5rb0HmUU--8}Lb(dy9)v78c+h4PieuUtGozhF z)XgCE-dSmZSzsF#2M9?SVDe)|59-StDHOQ3+#R!fU|<-+(~^(?fYml(qQw3LY&WB@ zV2T;zYxC<`ja2+Kfaei}s^-i}xj2MA7~;^7)`Rrq&?r~ZLkyWwyMqgu3!4^#hjRz* zeR>-g=m7wGBDgUG4IbSaA8VJJPGZe~F|^RUFApoQ-W3N7R)Y?!L4W>1bxK5$Atni; zfqcaMWuT)o!0HeBO}f$nHMGfrbSf}KTSu+59=eO_P#RyTi~`=^3^}IU{y;&1l#fIS zyD&grKshzGj=Mpd13*#4%HogacUa_3GMT)_G<}$&i0fd5O+XM^+D55Di9~=rzM{z? zVV3+bt8T(|9R;FWV1A*bG6~{m`%D|Za3$Ij1|Sq9aR34H439n;ck~nh@Cec;35Cp= zd~*73p`(6rLhSs~xXIxpgh>SJOpcHX7r9U3wPG?4-ZL^witcTGTt|=Lkn1q`zau=Y zu>DPWj!ElqLctUzuu4q_ulAB2h6?+5-c><|oB{{PYF?XaZjL~3eVF{64)};A_E!JTy*xNmSkwcM9CJz-NC&qZs+UFwhd_qiAr5J zBD9Ln`}l!R0N`2oLzd`|wBy;@;Pem=GSTIP(xQ15DN@V&Eawu& zo2@MfZ-7tM8v#y0kn9uWxD~avXpdtT$QG+@mVz=|r9H3YbmfIAxbAn!MIvPItV|?Q zp*TB2fE5Lg9>FDc9{{DBkvor2&Spj~Ri!M8G#)OYa#+fXu5dl4 z@}|H*Q%0$w66%VC5?vFLw%JxN5$zF(LR4{JL}l%0X1NhkQbLIk7JCqn#454%fQEL` z6tG4~{F>OwPiC%EZ*4!l}=hl9huc z2M*CUe**X_u6Fn$?KcFuc@iBrn1`u9_vLPj%%Hc5QE>p$S6|7=YBH~9-!xRHE? zpmznR10qTw+QHodZd!P1;bukK$z!WoqZO>`W~WR8fx^+T@rt@F`gffCA{eDV5Zoy` zxY*k$dhW{i<|hd2TfksYSjK4hJ6hE{4a(A^==c=GMj$X(gTP#En!++L)kAiyY?vTD zALdgR*?%xFRlg13dW5?(lVIcn4uEes!uUKUwV;Fk%;gs>Yk>Oj?P! zDxC`}SVJU?gy?-n&mjAO%SbVPs1WKU;WK>51!IK?T8y&=@_~K~g3wHyWiBJRd_}b0 zB6fK{IS_N^+zhw|h$h4eaxQH2$$nJ58E*du9O(lA_Cjz77LeHpjGbAQj5USp?AN9i z<*>mYa_3iRG{NK$9uA6)K938+nNd7PYN7{_mOTgnnJ2X6-bbuF2=>?rI58RbD>{Xb zW*>BDH;)*7?Gc>v>i{lC5Ubv%bmPAKFQ$T7s1dh9OV4z0Y31aJe+di}8Mr^o2eG<3IHU0M{T$mYDMv z9ZM#Y{|Zq>Ws^=Xm5h!|pmE)RStK65>8F>P=?V3PI8~PcoR1)a0`>zyk<|8HGd4@!eyu4ZR@ptj_`T}%E z5dJ6W`vx4K{?*wI@9X z%?Uof$h#I|Z8`Um|FdKgdpj$|_=988}vTt!{Fat0XP&Gc}yjTm9 z3->nZ!z7j!B!1-yiqxa`{E~7=`^-c-?&cn8KE-5U3C_@(V?@B~zWHo(!PxuG=<*h|oGh8|yz0Ux>UUW#hw8%!`4XKgW!5L+aEqr7*YQscX6gWCtw713X7TA}C3G~D-X!$U zCr%D+MQ8R4jPF-bE^?I&iA5j?Sz=enD9r{!N4ErRA^?V(j}eJc)5s}b@}I{vw$xrG^Uw!}8e3_EV;0$@9*33eksVk%rl5XICS{|0Vbu+UoLzaoLRkH?JD-FtGOArGtTaF zu%LT!Nf$iZ`E$$D{Wmv1Dy!oGuJ%2^7YMo9VBlTNmmjUmi9P3@^FjLsKm06!QxH^k z8C~TLh3P3Y4?iEf^D@9Q2yQDq;|PcP1pnFmR+#n%l88?L-bGLsiM2LDlCjCeBt9!d z5ST1r+=yTUn!1z~0M&w}nR)$4$!1wD5}D>Z`V~UxfDXqKfgz!pFk{88yi1T7+c0DZ z``%Oo4@VH0A3|!3*#WrgA<5RC{sqi+ac_XG2)S%&Z7T(D(<*C1pgfi2JnU-LbfQyA zW0R)T*|IK(Jgpd!4A;Ar5C!p0CaqpRIf#I=J3NeKnuBCrn_+lTaIIyw$V357H*)B4 zraGAONvqOHDeQ+1t(UCH`x5eK-AlLQ=5F1~(ez{`0xDZ8SHUG00m31Vak_1FP$UIz z-fYDy`;r$QhMW@NU<5_|zgS74m+Ay)zErheC<{p{1x=l$FosjTFN~Yk1b|kSkSECj zUZ6+!z!HsD;?S!9CV=?}E-9bzonpbvWjcd3Lf|UyF&zpRIn&E02jfCyaIQot1lE(X zwvC&v#zVLbbFN$Y^mDizRJEKE9^~dZA*5F40XIH6V@QEfI^QPgS-^LDAw%~STfn)? zHYcrI65YtNCwtMMy?dj&@1V@6N&js~9$p2&fYRqYaEnT~RLP7ZVosb^)+9LwwaKTl z%!+238t9O2l_Vu~n#XmP4#AuFyoKKeo+Io+lskF;(lmR~XmE)gkb(a}%AyUjXvbm3f?!~5?r60yOeux8#m%2fs z5v@_;6WSO}1qP28lc9$ibwC0>PP=Vt8+uEmzhu0V#CG|)nK(;M+ra4;lyli^7a!mU?~3E|D8T&) z1*DLEuN<&oT%u4F;STlZ#&f-AzR5?}fSG#|H`o+_NeD}`ad%_?n!#*Po*v!nrl-7r zH$mH=)#&rZins6Sx?l|473+dkLCD!0$40TWwi08Z)oC%)Y)bY-RwOBD4}az9Zn9nj zfF&zIi)swT-Q6QIv*J)+AT=Mj&xtK;`*aEivB&dTGNIXuVqds#q)^*3$}qwxF+8WY zXL^w7DAnqN0ggs^#)HR&RS04^8Y#Ne$ef51=~LL{ruart{|Y8Rqde4}n0ReqwCT86>aOaW{TxR&nh^y8eBxq3@DmI@f*xIcC5I?D1Cjtwy^CxgJv}RqV zt7!)W>&=|x6*KEX%|YvDW)s}qZfH>yS84*j2j8~Q&M3ooWhv2(d5SJVoSHj{`MZiQpwi4x38IPbpeSQxVYf&R zGH&DhB)kkCSX&!{%j+QDF{3&7ezAg1leYk45hx@ghegEkB7Z3*`;izcGX=T{6J<6Y zDXn&uk0cgWQhVTP;TX)u`VQj+kC)g^i8A>~m{FDJB9wq1ZBI{p?L~k!2rqchurhZS)3XM_ZHRCaP9}Y;`R*~@%F^x0|H(SSg=%`?QIL5}poJiH7Hzn5z6Qu_V zB8Elvlgvu9t|q?1ygK9&a|>lFM&l2DWfIeM*-Jv95OAQfA# zs2!YwtD8dg16p#CbK&#-&lT_+yqlL5q@qFmdMXhQ49nvHmRRnlIQ2^b&@_Cj!nQ1ha#jxx+5Ux6J|XGJO3~@>Vpn2dnzgWPcvfJiF`gdX zCSnip6=vHB;Y2vmluQOHYb$H3MrU3E0I$-M!(s4jXx|5Jlf?V>DI`V49{Kaqs`FT0 ze+mOHYL#8;os)UF5XEHm+;(9i;>sJ%*B#fa7ygIk6*ro0=a8gw;M?#J|Eq$EDiGG> zBRuerHsYlJs$~ja<@>AVo5obrN8#k~IJWy-=~oGtO={u7KTtxAA#4o->AS~!ca+5` zjAPRay_|@p`2N2yr>|j2LExJ9iI5a+Le;?PDwK-KAp`HIP!!Z~<8BL^wPH+V6?i{^ z^+O_=S>-CL$l+f7Pfz-H+AGk+&`BAoR1)8z)^CE)g_t(==ouuZMPAk zx$OlM`YngZV(v3anVGyY9Z^zX77Mh>^-S&tW*F(BzwovtTuCq;m~&Hq2;gpn!pH|$ zaXuCcC5gXKT)jZ`AUV&EntSK&IL#Xf66c*QcxTZgoO` zitScb&|RBjQ3%zt-G|j22{xcw%YGVDX(um4L~pfHUMk-dN(Li=D*P{%7*m;D&&I*o z3D@`20FNL%m|bfk+A}HyJ}%&IS8sPe(-d#Glu#?Mjac*i`Id4>+o!=B04<`$@iLodMFradgdTcDOB4-p-kxwqSN5ingnGh zQDXdKSg6I}dgf~!^p%=OELl3xP6|n_brQ(#b*R8TkR|+o2ZkDgsYo&bvnss=(b5J_ zt*UOLvUi%qL(4~-Lqh9H^Nqn>40+N>r>YW?k`r?=h3B>+y^yTfm`XuaZDmHqVo9tA z^#Dl`tBPPdJx!V-KV93XuBFVg+HX;c&Qv6fS;3x}cS8DY2amk%8pw-B6;6tQqfIC< z65p}4fckR{^9Rbh_LD5RV23`EO3`c(; z092$OQP9!H?)|CWK%O{MYs^R`eli}N9gm<+ji59=y0=N3ip_ED{G~!l7ls33zJ4XG zFvuEe=h_B<&k=;zfjGSwP*pPy9E6zZrATmaq))t5oD3u6>0lUV!cAb434?bj{;jN5 z@Fx({*m&k$b$Rs4+K{S?5%2#;mg449)-eLeWl#G=6ndOjJq z!7+b-sDd7)AQg!x7_`wnFfbg4o0GwNiD_Q0vb53eGw?Aw$Z9&sYWffrUWqTZ$z)2% zS*+HrEX>fR&{^L>_AiczZLC3tN6e+;sgJ0-{L}Zoi-2SvIC!wx~ZXf13FF3h{dOxh(I(IiA3?rv3!N()*WQi{LqfHGIRkdOTTIrkJ-Mst!K zD31ga2@=+s`l~ZFrZE);9|$A(%2EhMA!v8M18ZKNlBw6XQ}`U4Gr9NG=PmLZ43+~ok%PWR=8M#gf(CG{Vc?- ztSv#O@L7Ppya!+jf---H!g3pPT`(FA#aqK=$`CZLb$A|xzUy-V;8J6~MI=J98Ba~$ z8AH~Cl;r5-F6288m-GpnhOGrlc!5Zt#dnm4sxW)4 zVW(Ai(cH1{eVN`<_WGWE?4U*}WE;Fr;-67mJhfesnNIShtVyAt3c1P>e9lCdD` z=BM#?p(A$VA5kaPJ?+|jXPYce{{PK3ji-*Yt@j7$iy%&#oK!4Rzrr`$N{WJFjJ9>N z=zOjNvs8HC6hWl<3ac#>bv9ha$_zjd8(TN6?y^qKuGx?FJiE}^_<>#l1L*_%sBcdM z&$L);Da!b#ea0HyrhwQJDB8eXlLv#p^ z*K`1I{?wxi^gEr+!~38{D!iD%Qd^nL`*UaWUUjeB#e$P?_#jER))m2N6_|_C8e0uz z>A@tq!qYrEA*L5()Y$4nB8Z%w4Un6OjXG=OY2F#uTnB`eoGZyG!N5>mBp45(akjdl zDmaC2-NF)T!Sifg0dk%e_aY&eNYMwxVv$fVs!pu4)TNw)31&%&IA`gVp+4Y6co@s6 zz>l)nt`!|cpxge~Pao6_*|qD!k3);l4`D}Gn|ToyJly*qVR2Qv((N8NYB2IdSgwVC zU4|g?VhfIDB`n-0U$=+N3cnDj#qUO*Y`(rjM~7x6%i^J+o%isTpu(H-T_Q+0HD4~g z$CJWX^yhIB?>sS2-g60z;5i6_PT0u4)!za~8y|m$N5dlP0ZtMQYyyVQL{*BycumD6 zJB!k**RQ()>c0ZlMFqf-2rCrW3Y@rrvthhtc(^H?q%Mljv2g&aeJ6!_RT{0OZUgV4*yt(ps*9u z#m7GIo_Ajf@7u)FhQ~hP^A0XVu=VN}A~-1%Lu)Dqi^J+Ima%~tUezp~_Ny`a{MX8ADj>8I+-RJhTaNV&Q!{@NkM&t6Tl>I&q5b<4 z(8FL8^DC%MC7V-8I4lPY3~l~?0s1w#uvY=xgCI7%jec2O%Agp;OjvCshB#}po0wOu z3X_1XLgN*aqCu51q1sA1GbkqZ1)kOL4Za-#wnfNM?QJW*-A3$yK2?_WX8s96s<#zs zJ<~-N^2B=NPE>Oboh{@o?uB#$k<^8=ke=3!tq*KO0TP3n#<>oQQC8ngYuCO>sQU8x8ZXk@K_9g)4 zpL$Uwz;~RI5;i?>txCMbIEHfK-RQ-Q30g}B%Fkx)%8Pko;&WLOOI#L~rGM}__`Fw; zbrNfC#zZv#&)13m9qhHw5X7xGHl~+uK8GB4WRVgl$g0seLPoGPkalb!Vb4}wL|HE= zu+pMrY?7Rz(DA$Fuv)_0a`KjxUFzPud%r+sB9RKkfj)+Vlr|1#`X|^v{@nn!LlEO_ zliaKaS-9sq*@QAQSJ>o0^ZZPl!PslFgx!e%dh&S@Vx0U9Jl#(~w0)>19%=~Bv~>le z5LD{mF~6)1kvdS`tRcN(>(^KXVZ2ETlJSM&NDx&jGEXF7)MTfTvT3jkoN!)n?J|w5 zum#A=^HIT%w2dpys7ejSAhA)U^oVADAFQ$-tEmb$tMr}EGUQYg61YR(jV57LIw~kO zrNtQf?6#DmdD^zoLv{~tebM#bU)2A-n?^v*d*{qVSv-jg6LnyEEKmx+s&E|B&XO%> zS&WII%?Rv*dhf@*gasHrD=2IM6Ajh>KW3o=P!s``R0ow*-`1lj4PV!%}ZfiokiIfr_1uQuPGAq>?q4J(@7;e90msms^{t)mKkOLt&Iko6O&`iTkACoGl0+D`{z!@-Hkb^PqZLUb6o*$8*a{WYv>-I%dlCSQ zM7~vmkK1ImbYalqOM%sFArXF1c(cZ3i%+oC-g@>GrNDA`8;hC*t1O;+kO5(EEwQ2* zqsDKFk@S#kCLpn(NfC@1l0?>2YSI*l)Dbz8Crp$Sc9K*ToK+;>?9{Z7>TKU@TZ14o zIQX@!MPh>#xgCNFIm3n9#x1}*JHd4FBJscr?9`JE{ZyYoH}GHd%5*gYv@2wH)4(WCOmlAEnU|Tgug)*q0%On zViov!AZAf)@m>H-hqzRT=<x>I<;4KitvXCjh;Uw$XX?J8X@>Hiy%t(j4CDk^5G@ z=Pg#{`n^^gTK+18f+v~HvRya>zrtK)c;qR`l&}@sSwn|H@pvrW4B0qFtEa?!V`-{G45ac95X&?{1?L?ec4~r0sYmUbyf7T+5LkIB6&?!>=4-y~L zR##S(r=P$kujiu?PAmF+AiHxx);2%6T-83EdR6>Y4#Ci&Rmf>Ec!ea@qRcta1l<{`_`t06T!f+%G$!;(+n<8dH}(d%;LyzAybJIIDmVR z9(EmvT}5KYF}){~QP@>7Qt|94(zx8afRmxSuqhk}D0MiNMHTD>1fc`Tca`Os0$!oV z!5hNM9CZI>k}$Rv!NBnn77lo;j;5YZHaOZlZ8ZI@=g zlqUMY+#7pKe#AeU!TUDg7CQ+bfw0Qi_qHiq z7mp=k4aq>2`L9AU&pFtKF#uHvZd8)wTqvkWL^Mphru`G(Cj=!Gudy*6Y78a~ajV4e zqaqtPvnS~)CJlQn(6}!Lwx_a^>vIq! zVVn@hUl%AZs~z3Dd_Xz*$A;iQI)Tj7S$F0`?lQI(rr(&%CjxmwkX+!Av>j)F(0 z@C$JPK&B*Z0fO5W!@`|3ztA=UNdSbd@ju8FIRPLE9u)ux(5 zacdtz0BC}w8FjHp1P-IXCBBJ8#y}z%MC7QITP<2f3mI~Sof{C-!o2|t@I2g6c;~e8 zA%@K}2J67b10TRc3>|Vr>SGZkM34AD<-m$E#s;v7|491p<*| z^+|Bx2wsFvDhv)hOxeS@GPwi3iVK}Va&onbp##3Ft%oR16^NgO)MBP%%eMeri{NGl z>0>AoF2WL2m9|rvdBz^8hrX3-h(T1TN?U!iH}Q6l{0(=gswlR~^0T@;T4Ez4s$`-hIwDy?6QY zyiKDoTvfC8D?Pj7cb|)k;8}nt5S~&oAUmysGPo%>TsI^X0SO2yqQ{r>lFDy2y$GMA zcLsn26?zAymC(-42$@Axvc2p@*>ZDGFWmQjse6$g_KIcpRv2zYV=5(R;A68k*Xgbe zHiXirT+eyBq5Hmqth~I|jgDjEjZJY{0G{5ogcR}%&6fGE!y6+MuHk;$)AXmJGZR?;cM_cQsGZ+$!T;#y9-o=%dWFhT4W~*193Wa zlfmHtQ=FtPJ?y7H=jFE0JeIF@oE?Kz=#+UfB_moov-MN5V-wl(AD1)0s|j z4zGj$`3?fu8$oe}x3{evehr}ab5Rvf0=^X)TlVan=T$0IX~3p9t2Dqr0_cg#M|1Z= z_R%V5V-}OHO7U_d2O-Foxai>7;@;a!CO&ax%ha!asBF4n&h`_(ykPFijyHTcHPAkO zLf0-sm;BLjo8MuTbb}?Mp9U}sK@!?U#0~Pzv^2vSg#_yfY{8Nb(MHeG^kT6JGfEZM zI_z$NEs$R}e7xU-{aDp9a5nB<2$J({g^&l6Z1dOB*n){G1!qF{Ta>3MrLjp<>TGUt zqe2aay$?);&9Qj0WH{KoBR5*!f`3{~g>WYm?ggJ0UEgZcRp|uoHE3dISRL9LfX5K5 zl^A`>FfO8_6z1&}p&hVpz4SB(Ta2>Hoc26^&)ooc(y`c$m-d4~nqSGKYTFqDmbK*dc2Vc;oY0Vsw=3DU2O9-mV$@B>_ z8*J_6l%wqpyZ1g0=}LeV2)8=~Kw7-qN-!9b&6oA!UNa3_!eyygmLBKz(5lZVp;LOR z_GM-YeDJpRD1L#$GUFx|rDdiUL9Krv(BNifhi!_@3Iovy)TAaw!gX-*URksrP7L8F z1P%@1J?Sd59{55rrJP$5>A<>Rg+yjs(-h%eo1*w3-c?M*smgA*fZ^4*0ceY`ER)D* z5L7ar42;3JuyM$Zoxsre9Zc3~4l)Jsjka!Tbw;Ci@xF0r1#Vs&hjI+>05iLTg0nqS zRN2hZMb@~?oig7v$1#arczP%yP6>y{Ak%R?9&C9qa|vZFUqbhMks;21Zapol2^0U6 zm4TlJLsOziV6YfHY6ONyc|RoaP%;QiEwHgrJ>R=Ik{P8e8FDhi4Y9dULswEGbhk{} zRTgQ)47-z?MD(LE$`s{&E=NjiRinrX5wsOI~Fd+8J`;8R4P?! z3qP+#f0QxcX9wFUlt|CnZ8J#>HQib4tdbOgCqr$gYykyz1W8z56knahd3)DI|%S%FpjpCNd zZ^+oO!~|Iw2sZ7LSO{kJ3ykkqVet%;d=VK3(qew`i(nA8hB4L;0VqMRGB25eL;M)Y zFJ%0{Dt!4|1gGlV;z{JSD)ACW6{n~sWi3kY0fSc51z<}Am-UTfw7v7q&_e$T&1{D2 zk3#W)oj7D}-g5IcYDRbJ@UCg|j^gasHjBmtDYA;iJ=_YEx)tc@R-l(#f!=Nf`nVN1 z)J{%_T;1!ShVXGlYM98pZ#paCrgz+W($}p(KU zV0;Dt5XpKefs9T`%vogInytdcBxHMAC&ngj-An7CX-K!9|FNUObHdT&gozU-+F#)( z@|N~F1I&!AV6k);OkyeMu{xQF-`)kOhhrKKGkiDGum)$duPI_tmP<0s?S~s3=)q1v z9JHGOu0~LZF<^2q(s_D(-h|OSl=a)OryBr1M-XNnK_6;HSaSLPcU_G;z`wxVy_NflGrN|G6Y}lcg%NLhp7HimzR%6^GA~FFW`^gX^IG1wS1MX(0l`XHU zmwg|Qqp-YmPx()!w#$2sPL)G&3fvK2&-&%m?TV)6WDENl7HnJlMrX7}oHc|3Hj`fs zWPCQ=rzxqOVHYe1%OQRC0?R;Tyh&c$!kyls?#nE%k96{TphlqE@c8_=@nQfNaM0+m z-%0+ngu<8x<%Ho;vSn9NlqU8^Zy;Zj((ygH@|0UI|0+S%yqom2;( zje&gNp}s8nb;;8ePs-0m@HF_?LCx#n>$2c5Jk5!OxyRGxSo<)5a)c~vk9q-RG(GDO zV2K(mo7=aN&e*Eo>dIge@o->7?WoE^GZ<|-jLIT}tP~3hfUVrh9ayLd(K?e<;$L^l zh&3ruUOUaOkVNf1m`dNV0HY8*5&+E`k?EzRb$Z)6o=TT`D%}Hy*Hdt(+m3W-J&PSY z7XkB6q^`~79f0SAbe^6Q0O9Az(V!Rc^lrLr^sP#ri~s-GAzGJ4veYQjTd&| zLt@j4Ccy+YdUPR46A2%qVGPkXZ@3asp#j%jsTdT)TUT`OtkHi!P;p@pVMc~?emcS$ z(~2D_cGy;C@Dh^A#G=fT2=jLy+=KrqG#|4Dsdj^!=Mu7 zV0THhh1WXJnv6jaP3A&taBg7I|BVa;?iKKXW2W!W?4rY#?$#Y=gPqc?VcBGxEWeey zT_%?0-5#E;f$6q?ixq|&?{l%6!Bn(yvK)!41uQLbdykW|H_Mbvv@{B<+%7thx?x9= zG~sNPX}`;UQzEBMoAcf?hpqhkKmRuSJZS&FPyTVwdoS&F{#_$h960iri)x;` z^i^0oc&~!~2*7;^lDwF)xDb3LS!9BI(VngeQ2z3$~O?+KVikxf@gHbp9ekFLy`Fq^Ip zu}u192(K%|3kXVQFdgIv8UIY@JbnlIZxT`BJPKk)ddm(~+E@wFX}1Nt}aoz>ns|{khXmZ$UWfO!M;lQfh^Hv{|8g{_nk7IA zXo4IXP+!qJD;^J#Yy}Muep?~Dox+Ad0SCJV&r?VqUITa@A-muLCA4CTfMH56i^z`J zK<==KKq{KROb1|64b=z0&K?g>N+m;qvif?tOv*$evxW@ES}u@52ORyq*x}fD{BR6= z3eVfPZ6KCi?~0HElfX)Rn;93tE_qSGy%R?KY8bG?aP-CjR3k|CBPTkTMIx2J7k!eV zX%b+j(?>87?Gb=dcrgIfQ%Gu(h2rpwU9(7R?9OXR-hV@4!yF&=UOYjM!>z{;L7a4r zniy!+b@6a>a&SD@JULvKC^7$GN!kIk1Pi-X5?)w0*BRro2<*{+*bgPZeyX2{A$1mOth*h5E z18;VKJkA9^#zngj;6?nc3jXijhHmM!y^CHj^=)hcF!!+ zdmb8f7Ed!8g_8Izh5k}9#1#BZd7fyjqPXxhI?vfIxRhN;Iib)y-_r@PcOv0!=O`R= z+w>V+Kd|slL)ysG(@Ml+PU=U6rlsI&C494Jvz3u0ACWHOXHk{8oGi{0Y!W_=2gX-{ zDIgw_Xdc)eV~vuLqFP1|sI?3#%mt;V1+7K{twy^+k&KZi8P1CTmP|jNfw8(28r7I` z7jl*)GN_d84mIX5WL89uL)aQTDAj8l0e(bKv6{EkMM481y)hX7qK(62byE#jc!L(J zWMD6s)`9hr=>SD5hocYMY0ATOuF2P>Ey35C&n6rKuQP`4(DRqfn0^JWG=yxYbLmH( z|1Y+@B$$gft9e{Gpd}efNK$!QXeB!=W(Gr7BEeRJehn^+Zvg&|pmK47bcvQ^{(_C@ zc`kdsfIAfX1J4im(OyNjUihZpE~EX4qMHtmm-cC0Qi^4tq){Ot)NmzJ5(yc8 zpt4<~sDRUw&k8B@lFgr`z#!g<3+z#V`w<@3xyqeYIT*^96Vv%I!3jIFfm-PCJDCd7 zUvt#lGx)8D%HerOGTM6*KjUcta9hzH@kW5Kzq&-8K~be53PM60ZhEMPf<6`DNQI=e zSu^x4OMLq?s5O3Qo;uyTV7nqo0E-3*~w|kczBS+aDk%N0U{tRDuWG zz{~V_(}Y`aAz(0m3xdR|ZZP2gU;2mZ7L%CgX|R}!ghctEV}DL*62`Qh1vBA;CEx=h z;Hz)_#f{DS-*1gQ#P?6D(iK%Z-v5}hOy7fbHVqfu$pB;sQ{$Gna605nrrf=P^A`~m zHTRy1<$5WW>!Db#)b3MDA)dA{bv&63m>R#mFgf7PCmvCUX$fi~sm5@$Dj0>(OEk{6 zkqG4~!jk<}ZgX{dmDmrSRSyY9>m#AKvt2f8j=E1f)E)C_;-TKK_{b2(UC$&oB#RaZ zG5m)AnS{coxq)PnsJLf_L_C99u@NHif2NF)r#)64A z7MDnq2!W6?@^dJC6?k;x{LpW2j#>_&pM+c28 zeGjQgPEIxPMh#Bt!0w^H_&fq1;5!juJVF7NE>_;|&Ac{zO$>b3lHp)vAZYy&P@OAg z)`ci=uE2yOpB=BHG300SvRVv)AXpPBgR5OtaB3)iqnuD+&gC3W;dR^1aYoY_aUW9R zS`!1h3MK%2d?DN^O#n!?Lw7nX|Iw4|YgN z^le$-`T|tzztN$TrILFcem47@-m2N%+q1kQJ`O($Mr9AA0GL$|gK&S(c6?->mSAuf zzWUch%xxhN<&n}`T|OnEEfxdv$kLK#;d*IqlM3ub!WgkZbW;OWO41yeZa~`ZC(JjJ zZ%kKLTsfMAcT$U@HJnUX1Z{A$fX=SNHr1QfTla?caEcBdHhyFL`4kj{UiLfoKbI!BMtCMY?3)9Gl(TUv3*Ep~d z#&VQ68-62ZmDg7Q+<}mts_{4!e6d(Uxzda<3S?PAbdfBlX*LpT4J&CLrb(#0UHwrF zOHkoal3o!BFCR4=PQ((iXqJymV`Q!@14kbw>wY9ha{y){c#+reMX#hNOIoZmaS0Wg zLQx<8N1@axlg9&NV z({tF|?k2G;j-$iLNXST+Xh~O63&y8Ns4`j~nrThaCMa7)=^)qD@*>hY{kcTxS%Fst;_%zR?JUldp^NQ9uf%2^FZGo&~B0rSzgg zSa|YN&>XB=)~sv;LdjrZKA1w|;G2Dz{e>#;GciM)JX4>|o%s7c+gnp;>&^AQjpcpdCUXCKGGT*Q2!66mEsJg8hdt*be6y z6RA=trf1U~)`5?kqNS_|VJId!XrBpx&y>jYj9r*v2-yB#V`3}h>5T%blN14!N?_oTV!!CE6p@(g+D=Ml%H=-JNPcr|?;TYv)#g>kwMYn1wCn zyYUO@7FFOgo>pg4IDRmKcX(Y=SYGq}1xrd>1r6VWkjohZ_8K3z^9#?USDB=)hLQ96 zV8|g_N#B@N0w=}FJifqQZ?=&y?IbobG(xrB>4s$RNT>(F-*PY^G0PF>LjP37;24R{ z!mFtqC~1hglyP#=7MH?P01qP+-X#Q=OmP7Z$6MbKx7A`;3Zs+dM~!g<=cCXSLQZxF z&$X&8!1yt*(4bg+G{n~e{ZSTOea|3A@FJ8@;M8BjLA>;`H*TW8qL;-Wau=VBkk6XI z-fz|V`?htxB3q3rw5n6S!`7jUr&Zvq%p6P;g`rAWylBADCQ(2J&{{%#frVzbfNLe^ zCx_`Xofu8`CD>c-3eU9*LFRKz>hF;1!O9&5&q!J?EcVJv^5dR`_KJ3xU+cG`0S}2M z5a9EGvr*2Tb?|qcM8YE((4Ix%ud#v@QWTd+^(4(22ejyFFR_H6@NYV?N+f42;@Qi{ z)haKUB1a)ye+T83cK}{NP%x(SfpVJ9ei<0M_0OXz#eYL)k_^Zz1^2I$Rn^_laLq88lDwor}~&{HhCRh=Wr-S=U{LSlcS4rk~Bz9L9+%HfOk24QVT25Xv%;xA8i|tVI!|h=eY>gms z9FK)(1S%qfgH6FmO)w7o8{A3p<-g$k&o4RKL%PA;A>C<Eg>uCktD;bk>t<#?xH7S=M~p=V>7hsWeQHX98PlW3Icznps4!by zLB+6KC^|R=_nw0DP>Yi8l_NFKz3DFo5g37VFbdFspg{Ed;frdtBa4Gz0w)sLa2o{c zXi6ehIL$O=>bP;juW;ov%OswFe&=#`>3x}DI#PnpJEyQT9TEZRopD$u0*pbBoH#d6 ztpl$+^R5G&j)F%5st6tuJp+Xk?xQk*0V+8|C0j^)d zKR!ZmBBoZplIE1=##lBx4&X$RYs2-S>m5ingy=>gVOk>eC$kMjr$DDq$k$Ls%LyiUR53Yi2b+dk8QGCrf0 zEv>`SuEd_b0`M$CVWtBvmd!VJ`2c%NWj+xsHbv5vA9~jU$-8?s%*BHUOC7W!Qwtm&55u{X-5AwY z%B2|d{7<&;wQ;i6vCneib_2t~MkhRKW?7X?r)C(B&&GP~^8j=AG;A#2jR036A-Thp(z-J(|Wl~@6;quWJX_N`3jUp z;e0B=R;3REdBm+Z5`CTtMBt?UKZz*N+7c1odZU9{K$m}?t8iD+AV_0|_frnX)J%q( zgo2;jm}uSPP#s)g%gu)TxKe@2i0Jh3n*8Jh`+eOp~Bb?~A}U*X`A5oIFpIY&5WwU$UHn;*cV@m|D zZk_}VPs$X*M|qjil7LiU#&YKb51e^IS{AUL11Gm!bM}`U8cVo5ayHZ2PVNtrVz3@; z$ttAZf+l=PwSPi1@)<}O;6%;`Cvv_@Pt*;`uiI(zpJhhyNJ^b}0G=s(w)Gc^l_^;I zvsg9qIDT#g;|Hz_SWI{#Sp-=fi{QMgDC8t)+hu!vsmrxir|8-lKz`w%E0Kh|tP%>o zJv|l5^kUjz9SA;w2&g^KgrWYF3=d5YMHH&&aW%`$lv#zs%cVBI?}4F)U@DRXMl~rm zAU3lKE*w98@ZYatIZ`1e?EAtzm~t9VyQ*rtwzC258LOKd17DbUK->Z5 z#dcy}KXkc=-BiNjCep14(z`O0%?l1Hx6{Y-sWdGPFr`J9d|BKA_>dQ=bpWRO268YE z@27=Y=y7s1F(b(aaeLZGB48$a_k$X>(<3EsL~qA1?Ns~>C1oI31@53 zM;F6!2mHHSwSVEAU>J_wPq)M?#`?!U=zy<%0PqGvPQ+kjDkO-3-$9wpBnI@#pJIT4 zufpdO{7m$JJ|01xqd;kTbZ=y5Dm16VsOm7P`WuQ)O4yKUiYJBLpiVv{C$GXgN*m)y2E+)HNY;fL*mp&86z7_z&RrFyh85D#pQqFAC%rH|@8^-&KB){UO zRKFWI2lJFCl56X@!WpHlyt3s<9}i=z-2;H$vPr+xnS5&U@(#!q2?r5RM=JMP-{A^B{H$ zo|zXu&+)+n=gePH`!nJ7y_Rx({l+U^>9Z%qdBIcu(!V%0{{1Umko`;Mu%t5 zYpOYZYP31JWFzZm-*AZIBQJjOaQ~irQTd}b{gdOH_kH}0iC=6>_|j%kfAbqh$4}aJ zCE*(`JcE~?R`vc@S6==T;YS=bK;WNjdUeu?;Jpjal$8}6ACEmd^3!kG_|M(%T#iq^ z+vfFyK7EqP4=?|b<7dw7-08Cfvpa;e)g0e4MfaU>{~@e=&j81twP^GnyMcs{JboR=U(?dDx?dC{yfv-=uznoB z@WwthMte*(uZAM^fUiPuI` z`6D;%!SVOBdw>3jGnxrsbH_s*f8VU@J1jbQA>p_Bc`uH?f8;&m-=6Xv;ZGSG7Wmm6 z2QGR)Mflpd_})i8d*$0VC%;DcqL0LUJ$l%q$K3SP#e^SvYX@G>Gxr_8@>n}x4xX?UtJctq2nc65x&R2rg8i`i)~ojXqKJ%v{3HoUmi1%ncIHiQa{TvKHvjlj+pDSk+>_^X z{4eKzzyGpJfiA;y;0arB{6Eil_>?bJL%1$Hqwaj%#BcJgx^3XEuYXMVqFL8+ynoZF z_w~Jo(XkV1`MTZI{R^PO&|2xkSe%9+>bNqJKxBGdYjU5QT z@w=D2KW%-(fmBb!i; zaD3O3=D*o%INR3~ZjEz%pL^zP7*T&Gl^=HcQyhQzxT}t>dGZg!SIisE@ke)9boKe= zV+nuQQ+z#dI{JtOUp)EP!Gzy>_HVp=|KTe>c%f^M@SR3==lB69z25(*mtH3Pwg+v+ z@fDBmF!8A)I}v`+lGi!Da`$h8`VgJ)jh*)u_|LCfyY*TOAOKf_ds;Yt=x@hPnYR2R z!k0at;P~PG-7fq2h6@OPT8!_nO*LoEe(aF14kLWc-J;!5p-WEQ8B&Adv+L;%yq?iN zFMi^@i60XF8&wDl$xUhdc;rD-s^T$o+eSAaX+zxC#?|geV zUjD+J#&4;m(1@sMJ-%Dc@fWT5?T=M0pAkO1YhRAPME~Kli@srWzW)y^IR4UYuYYU8 z!xR;vMGuQ|{AJsGw)&VKCR06oJn$vQU-8XT>mF=jbf)v~oS$yG@)CW=HJ2=*^39iu z^7F$t9Divi#%IUeH=5UT!>|Bdj6Ro}t! z3-9f`@Qe-b5q^(11if8)|38jhw_+3Fj~LD6$xX{r51)I@%WT}{b~&BbvuyU`eRh48 zt>+o1f5Y+1*T;|gW#?U}o|G=eVfnBB{{4YprVze*+o8Pt-Sz%1`$r&%6P}^d1%11> z;*xcj&fSafGY%8`{oZ4`lqR3Nf$)J{M7s}vF(BA}!zqOCF#jxG|LU**x%&~%A3*rw z{}goZiCb@cw&_eJKZlCW=jEU5vgYjrPg+Lhk6pAK$3M4KuaRzTtoUo`5$G_cA8+ZJ|byUyp zFK~Hg(|eEHe|>HHqX|Ft^iO&D^`AbqL%jGF!XGqce~$n7mGwKmSk#~JfuP`bN%le|J7la-d=VW+ZWp|5_Iz0##h_EJ9Zk?Kkd?8 zc=_+1xOcnz)>jjL#Dotx{`)gK9`t$jg@m8jqa(-vdSmm#b?-4g+kXDJ9RK@@$42bG z%RDOIZf7xHe`qHh*YmTj2*1aTqMm=h^Jvl0hwec5X$@`6dNlpCQ@Yi6VsgkKpU&fW zU**k3BUa6!@{MmbaeVRir4#1;dIaGIT*mjE)^0Ly>bth<-h?mfBkJGrlwM1A*vQt^;G@F4 z{+)_e?!JzRhnjvcpD%5vSJ$6E@XQF+(|9YV^V%-^YM1}8sw3fd+woRj&#n*6IpXxK z*}m)aRcDUh>wrMljicE-R`ureTsx?`Ht8GB=s?AmTprdA-f`!y9j{`1XV~hKc|8Yr zuSmW=?tE%@|JNVk_`u=5n}$`h^>aX5uIFmq`_=juj@zHgAKXUFSN9Lhu7cZtDd6UwY|Q@2;+Aa>!QKox|}x$5!sL zymx=9r+)6K0>AX1>y~YNhwz8Z+MDD1v@96>;-w=AKl|ji0)O)Iz9)_PobZF&i1K}R z+jaWZeVLqDabFcLf7J5}xBm9ZB$e;5!^IpwxaOhnwm-24;fH>-h~uj(wx0RJrUisQ zc^s$zT6L)MssVvXgl~S7%NyFL8~bq9 zml@yOs*dwVt^V6?lQ*8p>=Mz28eYEfjWbq{dih3bcdHqk4r`NN_dmMIu-hDZ_d;I2 z`Tj4j`!&qwJ$}Llj-U47#&^Gp+)DK{^!bqElRLk6QQMyP6aJJATt3uh{P@Y?dwsEp z@a@m-%FECE`=ft*=F9ek-+oU)$7Z#={I17JI}*O~tP^?pS?_5}K74@HGonGzf!U{2 zUtHhm3MyaqHs_n#?B~C!_ieg&D8S|37{CUfdj(r_x^s4)=T<+2?+{+(3 zeN&jq&l&X!FMr{hXxGU@*naHXUaX%>+Wc+!{<|{$@tF5!^75BVxcdH?&;3C4Gz5Ed z{ADATKRIRwqbK@jVqIOn_Qg|==oV+~esvTtf5ox|_ka4wAj0o)8kbwNE54q0O{`)Q z;irw5$je`O_l&9+*ZxTO8LI?6ylVc>EB1ThJi_nUPwb<$x%2m@`ZKy$x&IiBzwOG6`t!#6AC`EA z;}a{SUYtG2J`R!ikOPZ#}J`bJBaWvd=1 z{Nbwuy!@TJJ-ul0vsV%Rm}OUR{9W(udH!){Gd=Oh_m*({imi7(?~|j!I~Jbf?mJ!J zUoNS>dUhAW&uKfJ$0Dj{ zfRF>VRRhb;e0dMHABTVQG%x?ib|s%2vXsdKb%$@k@sIbKa8>6u&r&`89$3TiPaXTj z$cN8he0jHST#nM7I(_M(YfikJ%2&J)k(oe-+1DM-Diw{iSWlCCi?mA+y!rZ z{Q^_NijBSvvKSzEvKx|ZK=c#!Z%r9?kJ3{KqgtLe`We(R%N z;`MxX!NsS{xQWr>(_iQI5bcZOzR_ylV*15av39)tSMxVa*?T>+2bMjug5$sb#|~9{ z1eu&!Ib{gPZiW$8%UjF-@ zO{+^blu|wAFD5wt$2(6yaQ3{RgzwsLKga*ne8_2yMNAHCym$e}|JpP9`5D{wqw;$V z7W?|wZ#T_Zb=h3Phu+zdm;Yz=wX1$O=`O@)p78f%u<{nxCF zO#6-Pi|G9qa(q$IYxlhLUUz$P^ex_gsrFTK2$Nj^C#K;m+S*a59xY?jO%`{0<#TSNy&W<98#s|5D()MZcM` z;v6bpvHWt5->JvU?N{%;BjJZ!%K3%9bDRFhy`21-@JAfL^+$c@t&Vv1`G5V3@Lg*8 zI@I^-v|`^eCx1xzo~5tz`b+jX?yT^uXAyqdXfD_32VQx{inAVI-+M~ioq72~4y^ww zQO?GHj}y5Zt{?Ku0s9^F*1l9vRYHtUx4rk8d*WiYuSfjG*Mr_;;KPZYSNW*?Q6t~t z_4h2hbJuB|nEanwR3h-7zqsEWud(%i{6mj&eDAWsf%C@?p?ab(`#8S5&Cbm}{?ri;5-yB*#+?&K#3KWr@5bM@foU-WG3GM?~L>qPnR_kZmBd)JoK%ZiG*4SR%>~e)sr}YX%a2 z%g#@6d}{33Ywn6Nem(ocz8pV&UTwE$KV$M+VgQ$y^pk&Ce$D7NE~a{lj-1cS&$+mG z-@{L3bTT~naE?FYw^?8GxN97hk8ClAHc@-~zNxNNdJH8j=Q$q#}6!`tSj+^R^SuRnix&;4v2HXP3Bm_F~AA8$Lhfz4ObTL<#;m;dzm#CeyTN%iztC&uBb zYo06aK9}*AS)IS-<*%I|JNAp~+EV#gg!32u#($O{UvxqV;rBgecV2#B%be}PzkN*j zNy`P@xbuL6PU`j?TZi$^-2R|1`)0QXC!9Nr%Fmj08n5Txea@KQ{?w_2KX|`~1pb}a z8SnqNnDBLn-NNw??7r}Y=rCs29eDRP9KZ6~w|t%VUQ6YVzVI!MU*&&t#~&ZAA^haU zpL6`fTec1CeKe*X8J2!HBqu`ixKtJBF953uz!Y3E~j`E`4L(lo98b5wrF zYgY(-<%h|uu4nVUeMI!<#Y;B6e^2ZjD&Kv~UA+A3JyL(H*p11P$pI&G{M$EHe^^?< z_{c7i9XbA;yMJ16;FQCtp26)F3H-;G?zrc_m|i*Sl_1Bz`{l6ZckQ?hm7j8$*w-H% z-+keyOPJg;;hul+@}Hdg_?^{1v-KQG3HteMzd=tgKKNFur|90_c=_*!Z8__eNo*aS z@DZ1<^dE2X9dz*iw@~?AzIlO{|Hpxc-dcJQlS}t_Pt^a99(T1Q-(c%DbR(DN_21W= zfBwD~GWyg1{WiRwja|;%W&WF8ss32IeL4PLdwg^D+IyA}e%!jL9KUJ7VP~AQhRL@T zvpApfwQuiRH*qGDPj)K$-YoCiW=h#kcYJ;=)id-*zW#k3?|*3SAx~~e_yg`-&&zkN zek5_>4@^%Vwen|<-@fyS*MD2voys5l#dMC}@uh!s>Q~9=Rnu@T_xg6ez2}to$Fp%e z`H^#Y`CWTo5PP_x57pECKrWB@cDrrrH5YvFIpO<$vL!FS_dSO_yzxvX|C~DLJ&rH& zoi=$)36lede{zw)e|%1S=|fBp(qH5I)OXjW8^=rbeeaC$N%k}-XyO;38Hr~qXIdz6dtmtR&`n@-EJG*x` zdpEneV1fJn#_}>deO`ZWda-uwtKR8w(->+mxM1}k4DOgP=-c^8RQ{@M-IKxPKle0U z)nglJr`r{GF?eO=nHy&=JAuH5mz>Yw&dxX3Uu?UJz-PS2_%3VpvlBm^efBZ}KfmlF zR)6xvRXLMey-eV3?CLpj&*}8mRdeaNow;xqt6#IR<-2bWr*ubJGL6Bfl&>4Md@)@g z#{*1WwgyVxoK`p3PulNsPCct%yXBKT*Z*(_floU93{s>+P0CwFUorG znXgmV5crh81~K^bQ9H*~pGx%=C)w5go%wFb!j{9RJ}qko(<52uEGur-v&%E2ojHrH zVeMS{@RG}ZY97*u?Ap%Ym%TaR&7U6liPSG>rq1iCM++}m_vj-8K4c){bF4S^y!M-u zU%j2cFaC}31J?PypS$DA(R3XKZDf3ib-r`ZT?1x5P3q^Jpq`&w+MKlN{*IL2E5BCV zm%Dmabj;mJ`IFR(nOteT>&%6_y8QerY3H2k!EF4CUK@JgW6$vf?prj3!55GCX3pcQ zDBkEXjq!oj6`x#}^vPVRHz<644y(U<`@PGDO?;8Gle$YiKM!}^`|w+qc?5pk4i#@d z{G4>o{Mug#{P=RFXRto<$mK8mUs?fer#+L)lzuFh?({B^3Wxu3cm)oxz~L1*yaI<; z;P46@UV%en1$x6Ykul50ve8H=1|+*EcVeEK$b~9`HmxZTXz&M?SZUZHhR|1E1DWP? z?DP#x(Hy+uA(c9@kecA(1jbaR#)y|>F_k*~k?==HK!z9MeGu3$5LX(bGZvhg$XH9A z$H+)jcb2Qt>w|}^-1+7Bd_aYhW~hUM&>T-gA1J3|F&bakj2Gib(yJZZ)W3-dDK!?} zX*j`8!xHoG@(f|domlyS)u>tC*9}NYOmT{J0HP<?zI0^M;D9 zN-S$)TmbUQtKPBapXnGGSx7btG$52NhJyX4;44R zm`>V=%?SsFCmBh^Xd?L4M7l~CeG}Yew%W0Fd6>^$Q>C-Z5`UL*ec(q{yE}B&8O#0g z?=x_AC6GJTO)!;JfFCh_!vD!n7MzZIvI+{CU+#^SxixeHiscIWUnE~Dd_;apB6o+! zl`4mFK9*Q%Uh@6^pzO=?lml-A z>1PXr?y|q_A@7FdwF%2}rNbg-fCxke(@sfFL^tn4c>_zV)Gd+dMw_ojGJ~fM zDvH{N^Q?wahGkWZ8?Hm;tb8h`;bmB^J?H^{UOdOmpa8ESNqY=o#mIaUQ8{WND`1Dh zn9|HUfDKBQfun=*wZ=_A^V)VS^hJir9&epXF0Yg;T;4j{P`f|$qzbSBxt>}lq-1x4 zWKa1#_{x&JknCOfXC(o-rqu4AOj9?8|4pw+nouUZt{>X*+psk%u!a8>;iK#xJ3IrC z4;h1SH1OMr+uQ?67c8+JIRpVE2M`s=Dlj?BHf@35p~vC$#03M*j0Bn)>2xtBBSnOr zF^q)Fpu0FcQ!M2P?l$i|B#K$}8%`_q`a+5T2{jWEcsfboJt_Gbd?^nCT1swY(Z{56 z!XyUqvUm5EYln6JbnUwK-aS z7KDV&Hiy^a2>N_Lvut!udg~$){s5#r2^{>S1v-K*Nr^wo?occhsR`3;-5Di{lksQy zeD?Z=r=HcYtACGTOlO@4lbqwMl>M>Z1tvxjk}sBCS7|w--QS>mhvgoQUJ9SA%dYae zWdG!P{HUq$)4F;pY#u?NFQX8Ga2xKQM-I50Wj3;Nb1Kf_y$&P&3n)=E;q_L!WZ?JRZm-7{_P`ko0e{!y0;7@f z8!RtL96F_^oJ!OCgOUyzTC^k?A+bDl*T_7jIZeW4CA%_oU@8x@b$09W=TGjCz6cul z6IMWa9?Fwgbn>e!w6`RKQC~k!FC{ju9+{IzKk)15!;!`@ha?^G3hOA3l8KXY9da3N z#TPON7_o=OvV?Ho4~a{&4J#{Q7hl0Gg^MP^MU&>lCWg3+O?gC4*pn(IwKpv3=njR_ z)5J0g$vnbMRekJrVO|wF7M|>*yj8Dq8@Rx*4Fu7=2LJUE76Zr+5frd#@l_cias#!k zPl)J-2xs6=%lBl%`@$|672czLu$$HtL_N5# za1bm%3n<_eCP`sYsX{JfA{IaOoL7(Yz>XoDM+0mGrVWFK#S1>VZgJR)Dv6VMCsCIJoNYnJ2{ zOAXJfu))hY^H$#?SIyCyPc`haRQ1NOVAD)mfCLMT{=oZ7zbxYD3kd%crY#nHo|LDv zqzpr$Hvno;c9;KdrLuq~r3r7&iWXR-r(MZeK#e*jPECzQS5uSMwW3G3P!|F$skBQ4s;DW&#yJ5lAhl>ob2$WR-j8x_X zY-&cWB8hkshxp>~-pJ7D!$p=Q@IRQSW+9KND|`&xbrR~5BfI2EV5mb4SdwDlbow4` zI968tW|W3`Se4o5| zSoS_EeULgD%Z1oT9)gQ@>yvoAsGs=;!XWT>Bceb!ztp4q$%d#!=$XVujVWW28m^2H zxH*d6iH_39k-!TJCC-cFm=*Fp72Z`GKv4Y%UB?bx4xhLK^)~LXvRl zcxakdVWdGA<%>lRz=9kNJ8uPbx%F}^IwlrsiH?dUZ>EFT5^6lwV0xYIz@9YJ8A{WU zAiGX9O(EBAsIxL;Kk|!N&~$3Sh_&y-!{#^DAtg9_ZB+vvZZWL?Y`J38VIBfHRy?}N zfw+XroJngw(gBQfEXA@dJ{qJvxF5L2ni^1KhrREO7uqT=*e;FkjTotld@?w((;Pc~ zys+`yT})7uhok$BMEDBp7&b*?KKi&Iu&#DoHHDD5WH1^R=F*&T|rGqQ(fGsi3ZKCyyLf+!V?>!0lQOzaLrVUPo{tmeoo zOpTuB^f>)hDvJppg#Cu$vC4#k`MP`Y6jrRMFpWHGu{U_*Lygt7GHxH*Y0Ac>F`mOP)N4D4Hk{vYA7QK|y zP=25z6TmWTg-LcBfvJ=_-Lf|r>OcU!(2?-T_@nV>r(F6{pWWlHfap-#-ir;{ypo{9 z0lwB1K^JXIgbt`XPYhdW?EgblK{*T!7jOl(e2jq z{1eHkuvycE6R>0``R}FRGXY9^0}G!na)p!~jmJs}T!0Xh5~(S{#0cx-;f$HVsPwv}bJx zr3DrpD?L$q6_;e?mW3($7BVK2nZFK%P>P4%13HWuCF^%t1 zoj7qtD9N0Ts!yv~Y$VOov2Zpd@FA8!DJsq5+0@bDlN^NmIO0sm8ZHOM+9CB8vJ8tk zwMLYTF2rUEyl9`}nNSMAfyq&?*140kQW6(5W@ydA;d5OzWLlL(+HT4)JE7<1`$h zMI*kRXTtn&MS90dKMu%NO<9Xel30yPv{IjhxN8gyIyC^hDzR`ds3bvEeGJ{Yc$QjR z1z5HrxONbcDV>VtR*vsP?${ix*@R~y0vj+`qibbfr3^A)Nc7{G{)tln2)o>HaUNA2 z;VsK`R`Pr~xP7L9KZ4)u5pbtSVkR$Mx72w-S6xW|jLQM5)gKWCy47vPBBBWhaYq`A zq5fxSeT_U8Sfz4%z>7RP_;{L-An-d5`=n*-Aln`aoOxbfDWqfpQ5ZXe-wQY$KNJj# zo*Wy?LXDVM#j1xXA}>ES1iz_x3L(84NkUovsQ|Ajyp+SeCI{fTdqHvy9egf6*7nu3cCcUw9O%R@2zZ^F zy)92-;n7j#i)ge`=&&21_J*iB4_~OUL@++Cho?He(0X93vvoX_A}j~#9%0{&fdbE>h~nI0 zc}mdfgUsfhP!xrABHmMQ1G9h|n5BYdr49F8R?lQ81uQb7G=eq$8J2Vi9J)bCV5uUk zRz|FdYQ(jWRm|yt+@&zY!<=ep=cK{7b0eW-W8oo3$}_@W$xq_(p|lE9*A(Hltb?)& z%icyH+v8;WWDr}zI6G@2upDM^4J?y2p*Qp6gRp?g-boMR-tB|(E|x}EQanXT2jff} zBr^ApI3nhR6X`S9?4;|Vz!O19SMrz*6>a0bwdK1C=_x{JgAR<(S9A<%q5l9hOe0*# zUtKhs*+ywX8i{Itnx+{-4O%!Q8L1@N#<6A9)TD(0hRG22Xm=^jM7I-N8mE)Q#@@%{ z5_wBYHIE>7%T!lL28oI!d=v_DbBjm%7@)V5kdm&5Dp7x6sLtd4Rn4_T9nj)$kmh(q zswJCgjtE$zFpAyvd|scBgM>NLjY%VNazYvCgW|7Xjs;7?ilxYe|U5I#=g5p`sxsBKe^Oh(c+Xi0it!U#|*S+?O69)q$0i-_YTx-@{!*b{PW z;QKW|W8`Nj537K`SEO4}sGBEo7PU}Njo}d>rjiI*j#o*MyDZb7dkK{-SNw37k4fxeD zd_j&ftVBA1$Qdv|g0BKR@an6mpvZxur)Z8JWd-`&6h$sr1HBzEjshB~9|b8BzyfDq zrb=Vl_RIVMpWP9_FG}ptt43f5GpzG+B2X!ce8yw9>7VK7Y472}B>g)vV`cgM&Pos- zZ&nAH>j}DPB0No;io&Y%MuQ6xlG}LUIkYzr`5*&|AN;sc##u?a{zCJJZj*z4>noUp?^g|3)|-`~96ae))D##ZO&Q`ewEMq_m>& zqMvT+Soi3+K#YgZof#^!|NKph<}R0!b<{1;Kt{txiYi&%7A-zd4kOTiwP z7qt`Wv=|XcDNb~BM56Gd0YcBm-y2`zj7?7(E9-#H6pcuIbc3b0ke5h;|AB{IEWe33 zZ%26k>&8D|2UY?3LWv8Y{shKD51<=KAo?V{8*Xr0Q@lKARLA@n6S@2~_{69g5uq0O zS@{%_heR}QbdXmgI>6wM#FFSp0vwp|+lWaVfh2)m-KO>w$KM$@1ifP>VTp~b^o&gk zvWxL|##p$GSZ)9G=~#-Cqr8iRLc9&I|qC(N(< z+)?ro#~-?^f@D|9Tw@kL6Gq z67s?PYJ07Hs?A>qteR~^k=-M^INTysP11lB`vi|?)vAa!9Gb#+YD_55Xsb!HzWD2o zNA5oH=eB1rK67-plRmm&XVI(kp5L^$HrVuvyr)ZE|9aZI9&0*Ye4#UW<(}H@XSUwi z1Kx7A>_r-Zesd{qNE(!mSZ?9Cj24`O^^$q23F^Q^GHdbpL-J=mKT!ei&SYK| z|IxlcmABICvAe)>QxgPHk(X$)Kz%k%lRJxt_URmWv(tQtD*)?r3NBVLlo41OBf^e! zBcvFGn#qkzYt1N8P1EObu(YXfLD`8#B-8I|Am8wLL|8De>DL*buj(erxr1zgA_ z0Fpmi!|Y{{0oKPe_fe4v00-T7SC+pLZkxvCR3sg0u_Q2*}EZ4Z~4%zpRt}Y-OF;K|e z1w%=|{g&tisIo%SB8d{e4CmeQ15|)EXbeWy9#{p;E_3U%iJEOy#3M?skzSrR=w+4jBs-uvI8gk)XqM zNsY@%wIq~cs#U@VNuN1a|BB{!%~1-oPxCCpbYVE%^7842RuP`c#$Y||?5JCUI*d|z zYJf~z4I84@C`>aIdA1|hReuK}Z-J`FquoT`ugH6%9vq&xL1?DReOAu%!}{l$okLKC zRY2fBW?x}PGO}}glALLCHFQ2aTLf!mEl>XRz@-m${RxQr9-#1+XQ4cfMa0so z%lfP72~_qU8nsvtCd*=Z3AsVciIs{a_Tu8`l8qgXNL9CnUYOASCiBLpZm-7r04E|$ z*^Z|PWkZ=uvb9npP7;=)J*s=g=+dK zoGE?rjh8!_HUxR0Bj0#+86AdA0#YwI_O5lcQKG45o&@2At;4qltO29n}Q=ziVNSI6~WH1!)^NaeFjDY?F6<1bJT3Op; zS;JSLMN%2yRMl`t(F`4jX^EiIj1HYZQmQ!V9At9S6%XqWD3}m1lP5yr8|E&#w91Dm z@YU33P(AFIiw&{x@Ero7F;QnXEyoLD9;Pc({LHZjk-+e%rtmxSHxIrh;o(AL7=0$f z;#4hGebfV}M6DkelOP$Ez(gj2iA?IO;|_&4xFk2b5Z*Q~&kp)(<YjA$t>uO|9v6Xs2Z)LEbv^xKBZQ(;-H5Ae~@)B(2f1AyDb$|>QV zMH*W*Iy_3(K)Do)St5{>petzZ7HPk#&hVC1J0NJ)!yY9nmMcQZGfRRsHK0MHp+&F( zNk;tawAy`V68zcX4r=@EIZB(r=9Y4%9nWvm(UhR>oX?dge!xi=0uxs95)l17;3H269tC1dU zhO!PzOpF{Z{z$yEXk%&$(D^{*X#t+GP4S08R#NRPF8+TU58ZW8uE3)6lzTL~PD{tk zzLq8jmjIB~`6f3Tv~s914EUoR z5R^)!;b8@1F`3LzwN;pVq26?%L2PprE+|}95}dv+ z4hke+#6Uq!sg)v{zD}4(71j<6d{y+(ejb)laZsdIH=fkWGs>}L*SNE3Tuv1Kkr)WA z$Lt;_UY7rUp93%T>U`_HgJ<-(?#zNg@;PtT&7HONDYyLG&E0nVFmCHP*WSHxx}1OQ zyBkh!`Rujl$e#SOp8Brz?z_Jm{=5gXLG{=D(d4+i8K-@} zV(}eEWvzbXr|NS5og44^_}Kp~?z8;XuYWA))BdqX%2U61`r(X}i+`aB`Ojvcms(1xvzDNwPLwsm}SPLP{RE ztb2X+p?t7H`i}%(VUt%&#MW-%0Ud%+72Y*?ffoWKJZSq{7+O{ zf|u3G^Boyw2ixIP;u+IGg1d^NxX}_^Bf6Up5fSx((glkFikohM-ytY+^@Ihpz7GX% zzV!_OJ`>le8Q+K3fcAlhE0HzSkcBW4kOm&cu^KZt@sL0EN)f!*7io~<)u*IoWF9iO zuoSI%e7Bx#pikK1kW3!kQ(XCqZ2|J%ykxG}=ICGmoY5%$;v079 z(qLUa)m5#wprw@UZb0|mU}Y7w%3Elyinsw(8P6*m?R|(C21DtO#Uz3k%ReK`JPDCD z7`z#}Vk|V56IiYl_wi+3vW$>`57tpl94B^G@Y7gHT|<8hKd7oGNE64s4UO!=5>pgZ zm2=o>LkL$qF;MM^CkE1#cmlaQahULXACIRQNihSzJ}fDQ$*m-tZIq7DltvOIMPkWC zUk{f6^A*Y8;r8IqO#Ep*9*TBQT4140IpLQCaV;90NDu4kK$jDd(U`qUm;+v<@NAdNleJWe!uzXA6L{WL%J`N3c>D*GzO;`SNhCXYTUZzHxtE#=$QF?s z!wF+`sfeY(K= z3g2a5^y2;)B2nZxc->Ip3`Yn*BKV>42Km(*k!y%w;m;Zi=Lp|b%XB>*Md0xk z^{$pU;32didov8aCqF}01`}9Ym>;sdiF2C+Wf~TNm$?)M8d2UkK{+U=sN5sY{dUsmp9Qfu-attAu$_<4PSt1>FkrZA z^!S6|>RRjc%jGtE0MsI75VT_}mfhZ3IgVf#Ux=f9v1Utv5|elhTb9xj8=FQ*780Iy zn}+OXljU+M@Ri7RpQDNjV4P8)549X%L*N{~C=YQ&f$rG9Dw<8;AB17QmERXy29C3EE{KrRR{4!{vL8NlmCZ>CwpmVutp&WwHqSkrSRS+S9Fh*&}us4QCceK#U<#x zPs51xABem2pbWzDw17z}iV~zjtbhU}lm!!@0q_ z5RbYa;lIAZ5=R_RwLti71N2P|krwokOME#Zd;&0s-|&o>v7q$D6*xqhNXtDi_uH`W z+-E`z5V8ivGJOagz5S@GfR(4V(fb0TxX@REvI|^JHL?>Jlk!^%J8M}B1)hDjtPptd zmZE*IBP#Y0h$pReIxy)A`I&iH-OQD=kY^9Ud5bLbJth_mhbtLdHE9Ef3dGqL=E+W+ zmmY>r*I?lVfe_*knFHV@s0x)4;O1RXszOuAlnc|p@H|VchJ)cf^rEmk>L{S2#}Esg z0;MY!19sGY@NpusKuixK^p;J_%W(e_d{=F_VkbhuEJYo*3o~$Vy_k|i=bj}uL}g;^ z!ZiRZ2DK^UMae@<#>KJVmP;)CE5oUU2wA`T6 z32qAf?!jGUCM;vf){>&}r&2t-;;2pxQQFw1360`pT!cSt6JGQZB?D;XF9ET@1U=%3 z-|={OlcKdmOjyFSh|06LpK)msj|$Pxb*T{jGbLiNXpuS!7>H?Fl!?P|qD8r| zg=b?idh>DBgtOtLXwg2$haVplGAYW7V<0ouGVQoS?ua@r4 z1IL)9@U&?q^&SVf0eLWuOSab)bbC}jG#&Rh za7&wVh!suaK|GVSNo`q*8ilC&Y0lg@v`s^h2=}gh9jU4|N7gjdhv}DLTFLseS4f@a zOJzv@cyuea=2t@Fpaf52NbodAxy0aV4BLL}`l!vMG#$00l*s3q^DCo;i-@r!}8J zSCR?KHGGD@2XTv=z<>OSMO=Q*=!IV=B`)$vh-ZQ>8#mym1uTc>Z3}TE1k+%MrOQd5^n`lP;?|l_&159n#a(D?|0${& z%O9|GKVUJu`*?ONjlKIKmNJq8D_R{Zc5WoA*>jU8PU1O1Q<`&-Yy%(^?^A3k(_|XVB68OVNIm<#QH(_~DR7O{Y=Yt`gFT%5X8kCc; z7+_-)ZHyK=yD=*%(eSX^jmzuy!Zq6pWg`}zyKl&f>GyjbPE1q`L$aiXT+l*5@F9cu zsnq`|1|M8MxPp}jA)9g><%LE&lH;=z89BboOvtTG?Gd^UJ;0<4!>gN{TBDZGDm0oH zbHbx3f+3AFS(dOB@P_>Sc#-FN4s#9Ei#&z*a~qURSOlK+495UImm#@}|F$K6nF#qy9So+xD)V`hT-8eL+Ab$i}*i>&Y56fRMVm< z28Mnf%e8b?E`BFp~_7(v{X^JQ)gB+mKrVAqbn-> z@DzdUAvwZ}$wLlt>9mGwDsB5UFh)r=#)z;q{xH2J`VT7*lYtYGWXl-ItG;H?Fh^Eh zBRGvjR#%0;B5`aHE0I>Q9Ebw%q=gf|9H$RrGZe)yG-WYGbe|CL9g5X4^FqTMh^Da0 z-(oob=U^2H(6TfMi%1T>SX-fSm^3U9nzUEJsY@~}vZjk@i4=ZZ&n?s#rNrw2ON_6` znPR&RZR7fPuy$WyF^+(7*^}aka2hheNP~t9L^??&#kU;mzvP4D0WAL*)}}~!;hxQ! zOb|cAX|cA1l8hzRi(EL%raV6+DpioYMe+P{DJ2(HjnL|*yd8K0rOlCn3J-x!F5bLo zEmNXcs%fV$7TY|x+#3WQc*4X96C3EwjC%~{pe>@1E>MoeB7(`nQ8vS8IWoxiibBLN zz801!L`K*sxb|dRsP0fYV-ZhB44);`kM7@O_qSSMt$xL_&oEoY%qh_)Op{NM)lxE2 z7?y-Za`lBDdDdt2$R3OKcZu{tm;9nQ%X?v%V z7MP$Kz}vM2%6csEnMv$AMc?-k-Co2CihL`u9Hd!4Eu4x?p znwQUxT4iAD5XS9?{Jw})d3?D3ym5Z9)hqge(29p=?$iL$9%&R$%9F}*lqXN%CYn&7 z_dc}!lHk}|;MiN%$Gl1wD=!e4-ZVHe@R}4$;=W4v(&0-WK}h1wszSG1A8IOk2;6^Y zfNZ-N%J{dq75#H4qZLfFRxr_8Hzt(kz>Zi_I97;A9xjaP9dz0(V7n>x1pyg&xZJF2Ku5}0N(gkOlkspf^ht&@q$?t-C=khB#tAkQUQsO zUx?}?0!1gz=+u-Gf}nLr7*-d^_PT4pO9*5Q&iuo|4~&_2v^QQSeN#3(DqZP;P?=&m z5cGM*+Tq2?gpeo0;;%sHR09$tAO-}?nT-Tw50uxj@B~CE0SoW`uFZpTITmpX198_qoW;DcvY5}u zJ2?{y1Ug%$J|WdbCkhYY9(ew%-0rI{a(M%gtqPJ8dEoI!kRQg>ltb1|DvVLrBx!|c zE6}I%y9@_11PXeXWE#^{z!&N-7aIcIvITU@mPH&g7xT1A4ZI(`>!C|mLxV=$su_fa zX!MXpX!pR}Z^N=GntO}dVaTjj5zeK z5XsgT`6eNU=a0O0nx5f|SUF-Al_HeEJl@dR;JJlm>4JwJ4{-$+Bj*_E!}n&c3w-Ct zqill1L4tSqofcbTayZtb;QT?(Uu!FxTRhy0jL+bpGl5$MRIFHxn+dZuJUg8F77Bgp z%i%&Lwh!OW&Q|`DIYMb1>S88&F+ox^c0=aI&9jJ7#R|j-F-nvg>&XX=QBZLUq}3fR z2%91=#o$Dh|JIB`sUGLGPU^+2Sv6c3XP_RfljUp$H6HLGeid@>2kkEOnzy01;4s-E zGe<5s5FHR#JOc&eskS8q16dP*l?`K87(MyDh)BqUBUhq*X8%p})bao<-F;Yi?vbN? zfhupM*JF2~LJXd7AmJCd*h%8a=y^5A)WFjaQJLgtLI$N<+odC}e2R=MU6x@%k!lfFm7~WnTq62_V;beUlY{%@cIFJhI*?n#zb_!`-1!AY8I)e30X)q?>>`8HB{08MaEcb8(2uu&2UFC(~-^nDkep4Q!#dSmA-7>|iRZTk1 zdpH5#YUf=LjqlNIcq~0~z~wBXk7QGy;&HJ&!f%fJ1|GB+N0r{rKvl5JRsoN0J6%e% z1zAN|*&|`0n((Hqd5uDy46mZ*{;L&vYeOo6ABS2?-ywweJsDBh_q;WXLNZnhoPpHs zP{0u-b;}A|q-Z8B`i*)#LERsWS$lL@HTd-Bm&5xElr<372c|ENYT0cMRM}*Q4IY*! zX`ex^t#DR~rv&KTOCS}IcysB!#OwCXFiUzGz5Dps#;Six9K>_0RY{>Ke(om4sfZt>1D z3~X+OfrFc2V8b#p7VA!NT%o;UOu*?fFe3w7nqlAwW*FGg3QZ3r%~FwpvOZJ5QdV32v|~zl}|{Q^dIPvmE04`$ykI{ zDEM((YRT5f{0f)ILopo`1sBl`s%@kTW4dbc)fAhYO44`Q`NRq+B0>0Xo zjaZE0N69b_He|LG7WFN}SN9E=!Yf#o@ZghPXP7;3{F;-dr2mrPS0?{?`S zADk4dK`Xpmkafm#GZsD0+wFAAwvti#qjK4Z>CKAfK*(*Zne6b}ibiIaB(6@rN&vN}wN>?!uzOB>L6$%C^_o%bYG} zz$udzONo~M$ciBcSR!*cx;X2pvjHA(MYR>?my||rK>RIcL#~fj+>_Bb+>muo$wUNe zlB`n?=Tzi#g1OmQE9HcN!UJOAH?tbUWS)L5+QPsy7ijc~8daUXCXhEf&4;)Gus)~YVwFOHC6NmB12qV8 zB!0L>PSp70$0>1;A$|Blc>r1GE$osydktyVZv=Nztf(~2-c}ayeKmtmbyG{lLA2-M z;zCXm338H1$wDR<8Lx%bu|17E#XAmcDmFwAuh{ zDv_KV?ET$Md^Sx7n`$wTB`H2yWA**f8YqHia&n95S~=u9`6D4U0=QNW@hk9#T2I3y zb#P=PE``R)`@5G?z*HRkSxF5q!+b1^K(zYRBQOgS19n+V*T1diKD z;JBR>6cP7v>Dnj~nxg;k+o+2!DsxoLKpfo7d!!G8gk3U?#zLn-*#SBuuSY}&L-|}3 zvcp|(N+9ZhCIHl6|1d3$1|Fu0p<=s(d6f8VZl~X2%lCkZev});fktN@3Pr$TO+ z@`uPb!(|s(h*MX1Lu`?vj0))|4d1kvbGgN40}fw_qsx-9f%&kdpjfACHyS zW(*M36~V?gHB799PR*7<}JI|Mtj02u&ahb_NjG0sxKR~DtAuJMe(xqipR{G>h zVCln2e6G*u_4zSihiQ(;@;$7J`D6E^!R?H(#_iC+Sx0L~A4u@!sWmQ$`3_al)|5eNle7qIA@n|fg_qP*=oXFF`>Z_Ow9ukTA>= z3NSN5^Y1A9kV$Q}gu{-3 zTQP(%lsoN}s%1EZ=j}}Y3^AeFgmi{YEOCq)0%m6`&%j+$?{fYAW7n}N;n97ZDD z{1oJv{_jD%BrE8D8tv9uEWOZfcyHg2SL|GS#`1mSP&hBy`&a1KcYo@l6XqHBp6^2G*|2 zK`zK*xx_n^!G9lp?E97XK1ty2a&>+F>i7J@ynM{ZV6kMqcbQVZpXG)7YW5dm(746Y zKj{_*x3*f}&bjJ50v~C;j=@tdOY8Yq%IgH~oA4EbH!WXv^d~>8Bk;CGTU5Bad`8MB z@JN84V}OOhTlljVwW@Uyc%QRYF?h=tUzzuL*%|`RY3^e1HYcuoYVbW{2)td@SQWl{ z-tvwY!*co)m0yS~464uMa6b|ZuLJo=|e zmwj{xfsfsB27_mQa_%wne!GsqGi;wS_?a{MUVEE+3xRhk8_(cFj>vHC=!YyRWQ*B! z7lUX0e8RblljwLRZr#P;*`>uTyNm{+4ZnhOnlt#wVIQ=7w*}qbv}@Tp>37a4&#d3| zV>43Uciac8e(_tsK3o3??N@&Pdj>yuY`du+tT>z0FYGdl!6!Ihe*B3eUMBFSQ$Aww zNv~dDzv{_N1n#$g%i!{w%U<4m747%JiYx|qe$(;G>e?$v{R{RFV({vApLrJD1CB}X zJMyxf4DPw$wQcQ6Y5gMuzcP5ud9%l4PCuH|pE3O!2KP_A;JNnCEF^H>jt3ch*0zE2 zqTIa%UUq#UgJ1DMW}g+;(fix)iwXw6a?t*YPX1F#eapFn8T_X8Zu^D*qvz+u78fx1 zt=~RddH(OH5Qa=C-#Z!nj@wSUuIhNqUShEnznsqCcec3eBWcB#1YVmwmBH^?`_j|P zYYEuWwcGm)zNp8QcTYd|0QrNXdN6}8$?Gt0e-+)A(oW?JzH&hIy&rwGmeilniQ$ue zE5G|?LHlK)b-3~pR{#EWtA2WK=?qf;ocHYv{@|%E-}C;!6A9e@NCyUA+hhCQstZ0O zaNn_;RQP*KlFl1?CxOo#{SAXZbk;9V%~*ILfw#I{#T%Q>-Tp*yJ_fE^EN6T@ht=QQ zTf%%>HJ>j%_Hr!_@X6) zKR)yP37ech5ct{BjST+OhITD}-DD^5ODgIZ{F(PJ>bvn#lH$TL$I9qMzvsR=W$7>Z z6b~GA&F!rIOH-a%u{x_cX{Y`1V;KD9lis_py#7`KAMw7I!C$eI6@9z zzINT>TmFxLEh8qJ&g#E)!mmZ2EP0&#A;-$-W52h%oZ0n({YwbEcg@+X{+`P_e70}e zf&V2NTxcdcv4l1m5S&KN)=QodXxl9`+`I&%WdZ75?O^s{1a$Bm)*pUMF>4 zpOv2b)1E!FewRlsX7#^3_WRD4zS)=5uUMkquP@*F>;9MDqj>f7?rv89>((C(`u#?F zukE)MGx&EmoY4BxTZo`)nbcBd@E^98y?x%E;iUci@oGCip0IyuO@1MPPpnh-{paBq zX3m*8g20QeQt`>JGi{gLd!3uWGsZr}+W+f@JricFr|ao&^P37^nzHQP8z~)6*~j>S z{+30p+P|3PAnlBAd9G5wztrjXH#6z6vP@XU?pJ^5-UG)hE&iI+_dSxy>ZjPo%zb_% zr59QE%~s)_ciiWn(Sp>kx~MOMH=QVTZZ-ZQ0(YOE!Qd@VetGaOT?P|));6{d{o9;5 za>@teX*+cX7@yO>?M*NAkzf0W)F19;__=?(6WacCpcGZV7R&JGu43&U^X#Qh?Xdhv z;N4Ff#o)(2+bj6j{o4uL{ZwZL?|9Ov9RF^5&WoqJ7`#*6iND=(9UcEkM<37NY3XBr zKI!#yNITx0jBn|mR@CjW;TNAm;MEICSp9CDJIoo-p7Mtm-@@p4{~n$GSabbDdr1A6 zgBYLF|J1(@xE}m-AA#3gUd!4!E${N+iB8HNmKRqs_!-Zfyh`qMGO1s6^%o32(B;~B z=`jlkJgqOo8~wAsd-S8)bV_H3?N`@7ckG>4CS{#Q>W_H(KGx2#an*0`{bLM;PhO$I zx8HZ>%Km>6_*p9-VetGNTTeV~!BMonPhHOu(^gIU-+ONpxO?U`tp2F;&-Zs4)PukS zUw2{f!o0Wpt|)Ip;B6*4RQRsTw{{+N4}qW5<8cNrdON*S^wHOUS;&Czr%9p4DX&JN&8(#GW_4a z@`bm1Y%itj+3FUx->R?1rQF()(viA!AM1DWsFiz5i@T9_Mt3}m!Kd8Pqv_nAC}J%= z(2l|VYwzqc(S1CrKjZ6E2A|fX>dl{Lwk7a0K75S9XP>wH+FzbrMBuY87|!5xE^vRe zcg;WocYJgugI``d(>?T8dSAxBsgCoyX=A#MdFClnf6%8*SpE5%nlFC4=W_&JK9BLq z{cp2&ST&~nGXgLA>||E|_UhNh?pjOvu8V5abzV5RWB%aRE+qABCl9P<_3!Jt^!`&e)A{C|*;Iw!Fn807ZyrJFU%bJl z!XMl8Y`Y67K5x74Xa--?H+glFt2UDQ-Kx}czIOXF%ZL3z_v^GyR#t!QYv;{+_;`vB zn@?eMs{cb*{}9~gqx?_Nd3Uh-53PCNwdtFJr2Qe!ZdKvmjLW;^G0JZ=xl+CF8-}## ze$_oxF6iM^@$(bY(r5qv-D{+sy!St3?L51vPmdw9ej@P6->LZOg-c_JyDbhF|LOD&2Wy*zTc6PNVb68GaY5|LWQIw?FaGt4aO**((|RwarW3 z`nLOK0=HbQuJfCdzWu+fPp>5K)JJY$_20bj;!aOrLh<|sZ>jk6od=urF8b~ZQop$` zkJW!SbJ3P-Pe>;4K|cglc*%j0{s*QLc;LUXsJ$AIhb>%O_I$ zJNi=fUVM1by!^CJ?VMM3jtal8iSLDvD4wq!@e_l8ymMcm z+niKVzw=4kRQT?Ud0%}(<*)O9zmdVe+~hs&#{HL(`qNTwWALwz`e4T8wb=wdo{4>b z_5Z*2!ydaK<3$1=eflS?{x=iv2)_2hdICS{YsOFZ|Gv{jv%YwTu4j!;-S_Xu_gUV% z=5$g&`)3u;{C4Mw?>+uBr6YO!Ph;)>zUz!O*8cry`zzjM@ITfqJ9EVH90G6gwu*26 z*pWXm`9_K#9LKQz%9Nfv?#y``z}^JEem$2e?PR8;d4DU|e=LC~w;IOa&9Z#6pV~(2 zpV;RN25(XP?u@PJwBOmw3mLrSi#M(KXf!=<`M)!MFSAwCHb*2)qWGjTe+aAJ;keJb zeO#VP`fdHgiwxd*+%LP&@KCNbyzmwG0nu4qd(dfwsNrdFcH3Zq{#3tJ}}+_c1+JW2f$A@DaV5-+Ny> z%Fp;NeTTtEKHQ<}dAm6O1evu|bfi@FZEdye18KT7}@j9qjakK)FT=EoEE!geQ@MR(oWO!CouTf4L=osK8n(dl4~Dg@bjDWxbd&A==fW# zxQM|onE1}cZ}~&~^V9tqymH~68wa07>3HGe(-^!e|LPOQy>t!fxBhj;CuCOLG^2Xw zmhl8W<0VFCGo7Bv-%R%}Bk*(wI}n+k0Uh@paRSA|&AV@7?blrR&W<*ZQGDC|*=rfx z-y!+;q{}}g?f8CJ&)|X7yf2R$OXb-n*D^g}W^Kz8<;>e3B=sv>|HA6mjlU=3whdhg zeD=v*8T@kRHAxdE(fgRPbrpkOvB>85p|S_5e~PTG!`!()_jSzqnZS>@o8igKYd&dy z+erWS1b+OS9ju*e+nsrBeX{_8*S)OHYyRuE%xQCXa{{07IHQ}HHx=hBedfvM34G|M zxvZVLr@!7a`{gwR-hSY*4E}&~(Ua$g?pM2Z^Hlg(9~TEk)AQW#c@++FuPu8#F2en$7V;M+?X{M{q>r~Lfp zhopY*em|)2AO5;=;->Eiyf~f7Ynks&-BEXGK9$$fw!OgW@40{X+oR`8r2ZKTmjx@UO9rCVc?SD3)E_L5*%3pOz zQt$g`S7*FunMd*Y=q)N8{Os1feUJRV4@mnLTFzwce7}qZ$0GN85eY z+4m}~|MaO0{+;j2ZpU64B=F3s9U1)lfyb_U_KX?=Z~xV44E|He_}$~qCtyqI7b^Yz zwR=jYzciivq1)9e9{z3r+9TTUqvtBU@Moo+0V&rf?~pI)OzK}$&emr@YH3xQydiA} ze8_sHKN-+eo_E07m+n{LyX;;MX!d#a%ecTeV(J;Kg&RSifz3 zE6+Ld7)tL3x{p!e8%Ir_>t03bH<_u9=g84(AAY!RF9LUd`Xj5~zU^5(G79NJOlmcd z!H?c}t@E;`be&zhKWFd`o#!00qv=Vco!pvR7`)>a>rox<9ZcX&eK#}s34Lxn`Hdq- z6L`AJ=-_~~7C9N+gA{L1d+QBWKkbrhT2Jgq`PH-`>^u)R<=sge0$blD?eyKcpVjX* zq&VlN^v?)UkLa>xEKkpez zA5Yr5kHITazLDN(_7ka}e4V-u72{`K@!nZK5crU0AF1{CulDwSVjY1Geva`)1FDbd zA9#Ew<>xPKU%={D_Z;r~DYpx$pLbCU74HA@=V<{Cf%h#?*KP81Eh?qIz9I0WEsP%< zF!{Ik@^u?1-<9+>!vh0cna?bK?XB&k{^a&ou=Z=_UATE{7fQ!nKP+VMDR(aJ-C<4< zsXzM5cNyGYUHHp7FTF<<-5LKgAaK=n-#<5@jE*zN_|gHv*LIh5_{l-wbw4otHemYT zH~-J^T7Lo`cE)hl{$NPNRB!Qn- z`!TCOKag?FZL4!w-n()y=3)qPy{;wSZ&rc!>g^;uI{ z{gu1xe(%2EE7E?uOO`YE#!t(Sy{U%EHO-d%$>5t;edT}u$~#H@KFv;H@W+~WxoPdG zmlJsBh0iefwwk_At-Zxh;6;5@Joe;s=N)nRVtO7N3z+;e;Q1v(o;%Qo@~ao$zKON- zvZdtok6wM0v@`6x9t{3!w@H0=tg9yQ8PB9K_|EBVUjNZb&uv=IrVPG&>Wbr64W{?8 zLwgm^ytepj$I4%+d|LA3W>){L14qy6ykI_Qzx;}G8T_3wZ+tPM?g0Yty|OKXe{^ci z*-!SMbhgQr+ZcRr@50BX{2-J1#Tz=S@cXX#dC4-$XI89N=ezH;>TBlr-%IL`d}1l9 zzwg6W`VIWycmi+Rygh?|p4R8apKmB6aNqGu82pQ1d6wsFiszekQ_tIhz89vP@ZdsH z|MZL3vie^SoOi>OLp~?)&NahS_@iI#J}#N!pK*KC^Yi`oXJ79fc!<~u!ZNDtN%P9jllD&Td{UpHQifv zlye_}j}7)`@FRAnefrF-CkedZOg689ZLVI{`Rb!`2;4tn3#)(RmKO`>{dfg|+qaBi z@Z;7!d&}5t%HMiEdV;}Es484CuJt5R|LkT=Uoo)DO+8Z|z2qnYPkF0?)j#=>?|W4( zSxexqQAG^iZM`Qs_4&66y!7)z75+%(5xtI~^)K|7GkA~pZjg3%qWXbe-_K+4Q*v&( z>FbP5q@9ymGrnSA&)aw2|K+P|2>fg-qay>)n6jw&*i~l{c&BA|vUbv+d}&A9?iUmI zuurNPy!RbLUr*h&nZWDLc$UHYO}z4@4-4NUaNi_$o(J}?O}(UgtW&A}*TBr9 zEQ5BROyO;&U#a|I;J`mtSaO%#O6vE&W&?wtwR`A-AuTEYGx|tIM+OdktL4qdO7#5n zzU5O^KljlGKe}lxQAa}!s?H`=!TKs_on>Yuv`^B{t1*xhu({_Zj8?yc)_CIYuc>)n$+*MTRjhxy7y0$rBexf;M6+SZ`o5XzP(B= zA@E*HzGZOP|6r5b=6p-wmrPi|;MI5Cw)wWBFC*|1+pT2q$ulP}es{t=0v~zIWeh&W zYw44+hRRu|7Hwnj;HGQN8n$l+sXz6O+Zep|gEOv}cMsJ|Bo(XUtSdZYaPwE_x(%=X zlGUGCa(e34h3iQ>&7U8@;Bz{*8L;l{+Xy^)JflYg=UhGh#P2?!{E6iy#@`OSbixxi zT>NG#sb6sh)B6p)wCufm7tW^pe$6i%J)hABj$dk!hgTMU5j_$CGc6N zJ;mU27iLX!e?5f2hux~4llh$v^qQ4Q_qX@3ELMO1gsVUP?$fVG{pkxN1+M%XG83Om z{&x5uhgab63LIX6!z*xj1rD#k;T8B7tUzxV<4aJU#$q@Q55NAW284i^hb*>qDlg!_ zWGs;yxo>T7pBOY8RA%(Ow|G%zyx_4B-ZDCoB$j8FSB-`M#ffsmorKlu4_lh_JQR?& zlb$picZE&0R&(&M=dx^=Hv)42W#q(36-9G;J6N_QNEE5fN1+C<9gGAQG;fu5FfvV( z0g>i5OkL%NCu?Zzu3k`_25vgzlt7?dBBRYBgXc8y?ku-LqGA+{WTc9p-ZnZCPCYNt ze~TTzr=DWSB2@|b@7<8n%b{eHikBbCXe^{A6qCkODk-Zt!)C#K^lXKPY2qcrTL`!K z6}Zw3j!GsT*D|KQLg?+Ln8^5|IhFJFt{tI@*B*1Bdo+(F5_jwpTwiFSb-&^ zEPxfW&WAD=3oq!HM(wia60q6k6tBg4m?93%Ong2>O;$oB2~$I}7#hL!`mYuotgM6@ znx`y4=t)tGSLaa#m0tWKGY?vCYZ#vEi%0c8isuLp|Igz&^U@x1RQ`wVJs7j3by#>} z4rbyQ3VBv@snnOs!|?bDBoDEJjFs!GG%C&Ul9ePzu8b!q!u4#jjFVG^zV{ef2r3Z@ z2#pIkE#YdyO7c3Pk3xoZ!rKo`I%7m9ux*b6R+5}hfN7QN`tJcTipfh^h%KeYp^-d< z9x3QV5#msBHCUh2>%f$>C-*iwPy!4>Zar9BpNX{!G7 zLII|!vce)+VUeuuIS=FNB|aeu@W^>ItW!%j{6&W0FM1pPqL1M(`WpVCpP_6qNk-Ct z86C@niNe_nt$0WpdXu0Dkkq3y7lX1v`wH#9JK>x39xT*rSa?rABUvGYAw;E{Ha?Z+ z(I!goi|w9D`R^s-%Q>W%(N_%xWmKH^0i*hw4|rS-We8$Wd)`uM+Qj1v8~YKSF5TLHGP~edz9VfmYqwF4dCes(nrnwegK(keP zz3>``P4_W0U#-(2hrU}M{{to4Fs7U(PY&TFf7HZxX}PtKEm`2pQ06&hYRUkhU-(Jg z5I^~#RAY&O?%>bl7u&E#X@wAKv|z?&vO#U(-);5rRJPCS_rt|A zDJhO{V^I9~hdpd{LIUnOQBVEn`KSimbt1A^50$&#P|`s(UjO;y6jygv1ew$i72O$Q zr(^23a78H3+!)+6uWQE1t6ftPMRaGDQurSX5Gv4riWd3aY_H2DV`^XgR??#v_{Y!> zUmLXSfPzsvTVE7 zSRRDcT83p?e0D8-d(-ml@a7gin1Re9G+}a=jR{lG&H4mvZYGZRKfk%m2GlT)+SKi} z3P^v3x1MC)Z=jqw;E>q*PhplHV0p~&y)N{Qu4(A4whCxsv&#GdpWP7%^<^I09{_}q zydKK^SWGET@k|_P&N|Y^+-H5web&$Ha}(ye>u<8VbaUNhn(QvaTz3OZcGuhFcP5XD z$;C9eD7~X!UMJ=+c*4tDF8lnp;quhzC-M{v#<)Uz#h8H8wORO8l&BZyqhGuy{nOXB z{BTiI;u=sM;P*atfNlJM-0UJd_;< z)g#EwEQE3smc<-vfaZY_MLKIdlLb%CG3Of*&x3)dPt#asU~N)_o?Bs(9B=3eGI%V) zOONy+3xY%;NHu2H@M$>gOyeAKyz$M zjkFB63Sy8Y$S)&ZFZMQSm?RrwN3<&Cqy{ljhGpNUjf>x*L5B{3;+BwP)RH95gQY3! zW0Z%N?t~4pOoQUb(f~REpOc?t0569=nTccg9ttLf`SO{Btas>%O~bnlBd}6j8D^9z z14E`QFX(aLGwBIC5zv|C7rY^pp+M#j$)Q830{$9XmctPQ2E86XN?FDylK2>=_Q6h_ zH!~xi_0;JU8!M5g1o5>{@waoMnGr&3#oy~K@;TkkfU{QCX-V@oa5U#Z`XWz)mQ{nw z4VEgoce^!%lArI{w%yBfs&>CHAJi)nc|-L+_z%d+Al;Rq19xzh{K*1J1O+KDLm)Ni zCFb~wV;X^xh9gXd&G4wh4y{7`06vNqO!#mvPfx31$|#Q!y8c2e3pA?yD)2I12jvPZ zl-`Di_)sqeLUiG=Jp3+|6U@)x@&NQS_&dd0W_$ClCbB} zlG1!ng;(eO;hM<~zpZFwc1e_cC5~BjYGUUgLj~YW47dBMfIrj2oEjXwf=@rNtx>Yy z4-6)-u0D{9#3;yv{O0fxb6%=ny~J7Rk<0OZ>FlzK+|@UnVUwH0Xp^0OfAlk~ zj9@UbqcdYN7caa??}0biE4(^SVRJTP!o;{_N@w||_U$#mmgTDS`ka9(ci41c#z}1v zS$zWqe7~g6UQZ0$lvQVU28PRaSDsn45ibgopK(Smw|0~xM@YVBFBjF#wK;u14EkvFL>HT^G zGtf>QR&XRP=K&}mW8uZhsZ?L}VZ@!_(f*Z$QmYd4IC-*tbVY^V0f^a?T?LrBSoVOP zOZLU#5_nYD2(8!DEpi1bot}_93gd1Xp9hHT6&hRV!VKPOBfO}+c)ADOxa|8PmYBc1 zaa0rE;;x?qB_GQgK1o7+o)y7Uz#ck1xcf;09D@$gMk^|*E3}Gq>cx!6p^20s)N(=d*7#&19u9|A@b?g+gh!x2K2~Y15Z%Ymn)1vN8ZM-PtdAgTVK@yD zZ`7K&ja3|0g-)sjJhXx?yN_)`JhKg~Q8LfcLP?5%F-C}wgI=Vqu!BvuL)n5QaqR3- z0_q_hMb@HdX9}XHMN&~`4>+ngl0cXo;zV@EF>KDx6%P_gujs_&Bf94 zBD-1SlgphBdjRtBM%PdV##^vuV$~agKe=1K=TY_=e+=<>v=0s=Ab|wwq|+1BPR7#c z87Z3s(r!8E>%AV{sZ;hxIhmm|oTfR~AyC6T9$Oj}a#tAsKMOAK8yh`6|ba9nT+ z@mrA<6qlKGnC6@UjZ7hGD-~JB7=MJs}&+Oy^;&oI|VYrr*y$$m{-Ad zKT-hMjRNaZ?o`D+&k)B1 z4PtZzmLv@SH{5+?dGr!RAx-455*qShhH4~+zZZ94QSfwnd@fLk6=@(hAwFcE@@r?Ljv4v;ql7!zJNx)El8gC?{C8Y&0u z0*expzNhpAglPfYt_5_vmi#+8@^+~YyxD5Jel@`$PiSYg6y2tU=r$otM?yc6W%{-P zibrKodpp3M3Zt+zyM<`2i3vZ~Q|knd&kZJ`INBMiK@ayq0N2CN8RF?@&}&m|UQfHD zffLPyV&{)c%cLke@f1yQwEZMZ>0a2g1z3bg zXn;uIc|l0JARJJon84UqO*mIWd)(pvWwYBSfI}!UK-B>4LIBZ)k14Ix7X%GqIsM$^ zeP562P)C*QfEf7-blF62R6VR8h0CLnn004$J0g6 zX<@>|SQ{B8Cy2>oX8CNMmCK~H0*)u1RpOV1)aIOfxs=9P?z98O4)~l?Lw;$C;?=`@ z5c*vJJxHKA^#Iev#6?@i zu{w-Ex*0cyX|y)Q!!N)EXt0vjALegz1&WIi1yE}PT!2ucWdSdI3wYsM9QPAWJsjCl zt7@LhTQ{^mcWMnhKj8;%H*^=N&yUCl(7f_PFLV_bn7@`%1JH zscnRJDt>zy8ITZ%xX9otidYo!lSD39F9E)z7K_=kU*Dg9i;0A>m7l5bGEDDSjCGU5XgxHz?m>(b*hw^p#+&VtERFD|-HQRwd#<>TEae zlwt&qal{PY5*UAKLeKxd`Yc-TEP`IjvL4H7j?@WkWPl{l27wdOd*g#3R1*dtSgbso zi^jc^myA3IbZPi0FX;xiBc6MtIs|Cy2|UQ4zN3KvFG^;}2_Dm zra_U_%AuprCvN7rxv-$bSk?>v1AG^x9zy2xNQ9GCLLftfK7W9^Gn>PB90od)-PT}8 z7`*jyj)!NAPtrh<<&>0;>66~4?@*`5?yJvp$}VE7O+FZ`TYR2A z9GO`~WR|#S3J(UXNhe&Or=V=cVwN5xHJorJ1Z8mI0^ImgPJ!2h*3BxIak4p#(qK}{ zq3$u%W1QMC2s_zIi}Wn)Wzs27AP;;}R~?Z;bJ%mU>2b%;Tj@wgcsRAfwZMglK6+#i zWQQ#`J3HvBl@nwfiykrQrvfjpt;p-D_juiqaUz-?tHU7|J=Z0pms5glZ8}^;gh;59 zZ&0&2MVRuB$bPafIzuUUrc4ee(~2I5I&YS-!4F%XYQQuY-6+dWp|MCthawUmYp<;a z6Dj)P9OQW25TUH*Rn+0)G^o)K?v6f!>M)h8OEB{!8{8N}!eMxl^@i|XafCy)qqwXW z5e^%NeMpDpIn>z)%j2*H4`bo@$weY%bP#|La4J??H^jI4C?6Er%gg2R0FA3JvxSZ742I@U6bkNCL0*Tgw=$~KS70?|5Orr6$An50OD4%np1-TH8 z(|9cLQ7tO5%Ly$<0%A$l|6)v5R640>WCK7@-p1Gqs9r5&PG%{V2vU3fV4WA>mwY1mcb&t2!8n=_Vh?Gz}txn4AB=fg1s_+F&@Q3_%xKquo$=) z_?^WnelbJ>H$p_5(&Q2u;^M0yqzw8ICAZJxsNRCI6N@osAHD#e-6;P-6~o0ATGV>k zV2}&gJ;awIDRd5^cTTNOP;0CT1UcjI;I{{6*foYWawKL(2qiqaB@V42J5fHW95q$DxP*Vt8$=3@vR1zmwg zn8wb{Y5d||?Fg)m^Ms{IGrM=>k;O*byGAj9k^^_BqZ?$Fk-o_~>@VC34kM4J1%D>; zsr&GZy$A)OMl9P6kbCeS2OKA&ja4M;ak71KiM;|Mu3Cu z=6ME;sVN{S2H@}TECk2;h7}Y~T1x@6*ElqmK8JefnuUBvuDS!Njsq&W=HQ7#13Bs~`=)++aI(1`L1HnoM-Ilr%w~F3{mccuI%p(UN7P zQ}OGZ4Qxm|BK=j#&+1E?(zz3`Dq~9XGGo@E=O>gnRA;wf@|@k$$yl9Jz^SXlX<_G_ z+WIpt?Uznxqq9xe;F!{E^zPKD0c)bT@#&lvQX>!&!F0rI>?gvTRL6-AT7yt64^6%X zqN=A-XWOA7#6DtZ1f5~DP^nyou@I!}4aiezJtR&#`;Vh!abift0DtBqnF6v$ynzNk zBChk!#;9_5&W~xcElJ{Xyikw>Csjv{@^**c1_;#;6G$?^exwToa)joSR^+XdeWNQ% z>qrV3unLIj>Ln!mmL*UYV$nIdePuMh|uQ>9PGtV@FA1H zeO#6X67Q50<%IiHLT!tcm)w%bo0th)t8jtJ>nP0(<5bJ(a$Q;OHGc4&ed6-^09VTkOUELl(c!hh2!5J{rEE*~UqZUfU zu7m1vSgg-zoiI6kSclrg4DhdHJt52sSF}+uHn=0hg+8=JTMMcz0c%^PG|1Xv^0r)p zd;2n!9awbE1_TcEvgJ5^|I{Iz~tOnT673&Klk z;pJGn3n?L)q-b=J&QjpLV?20_yO~|(bvoo273hFsRG_yTFBI(LZp6S}LD`R`Aruq7 zH^y`ek$NFs-#GsN4yP@|;D*~_aFSMivZhZ+fiOn3L>Sx;U=!ZNayOqDAXln52O?+z z_ebjq7|sU8MItFpOqmykk}7hH4b#*ZjWW8WqkB;4mYT(M!bF|?N@P)4Vxa$L?>nHP zNVdOc1`y0S5=@vCG3NkCQcwhps7M%sL>WL)N#>k&bq%aJuQ}(ObIv)gy5_j9->s^d z+da_T(*x{#?|;6XbLuVc=k4n13OCiQTYRZ5BNwd*?-ObO88jH%$N!jIY)b0?|6ML( zfWZkl2UN6S06tLxk&!%8#+Ig$fV-yPf+Wc7M*3A{gk_YuI{8Ksd6V`>0}LQ!U$K!C zNoK;?(d1dB#I}T-YZ`=(4C%7>8ELiegSoCM3#BM2A`6vTl7lryCXNxl#a!eLvQ!t+x|}Ffh8&C8bU_UM$AnQcIw1d_ z8)>(o6E2Y=*GWP;Ej!^o+FfTk?0uDhzlP7=jd9uBC)4L9l#8T@=t6o-M|;l(`%Y;k z*C_65w00@sB|{k_nM)6;M5LA8XG?uccdh6%o*!pJp%ob;34Qe*jIrV!lozBJ!NYV> z84#q%u4W;FZk%V$-Ffw0fb?{Ao!l{LuC%IfE4Ww|jdQay z5)@}5kaQ*&-{IHW$Rs$>B-3TUs+6`+tVrRf!-wryawQ+#;NxA!rQLG1)yY^A@JQI6 z5vL?_D9Keaa#nJZm9#I%5uM}%p?_+S&bkQYBq>`Zlt^Zy>y%qPJ&V*N=4a5`h%j2Q z%!#mu)6yEyLohF>h+L4S8gz=gdX*@4uPpa|oGVJD_YJ zMLbEny&Yo@#6KAqP6F_lmlB==2`It?^!SAAMJ`3iHG+HnUibvldQc#ZiD?bvT;oNv z6%`_JS1rvsPZCS#!1I_*u3?1y%@Ssq?FdXG;vgFvLE9+%K?p{4eCB{NBO2Jy2-*fl z(ALkfh!RNBO%HWJ0i8;2`OOA?`2TW6M9rncl$v);5L-Yq-0x* zfrr71D?2?cP@Bru(s&9X-i~BkE_B5M@|7c?B$FaTQ2K^JIBc*BoKlF1OVZs84*Cgv zr3}d~^fY-^`x{GG)+i_t=Br8-nY2Qyn>?RaWF?YGj?rOKdjL%R(k(aNmtRH$r*|TkKYFX- zZp>&JhRy#Vu}1=;-9w`x*9Y%0;}jOQw3V)e(R_kJ0w!M@F!i~e4f1pj_E2)-2@sbM zhJ6J39{}I*oy??` z?BGIfR5Wmd;5Rb*r=c7sMdY9+Wq3>mdAm3@Y*eoq)%eH?5X-vD*T=;r0ti3;*+>KI z)Htd8|FMd!yg*nQc-0k+h|mrBi}?a zGLTbOp+Z+ZF#X!LV@w=96eXCnfzdz>N}+3}cr{>Vhj{W{Hz;jM$%d8&kLmq9$&#~# zQk;}kq6)aHI=)>%e1J<_Oq91;19t|IT1*YF*X&>6Z3K@q5qb-|(aLIcNm-z~8cuXY_geSCO@P*mAz?!rV zeox43fa#@dONxj_4-B}OokI}0`@Nl769jonN#X?Z`2XrzHIZZP^h0>JD~V{>ob@ll z^Em?UTmb0~=tH`^AXZNaDQlFcj2%f*g;}=dn~XPkg0{-8|BH#!$WotW?9J+25Nzsa zb0(T(W1-~mu6X0b3mF#}&+CLQkW({o@0`L#NDoE^4+QXl3^@U0ayCXNSOlL&SHSfYC&T#z69=uqget^Yz!A4k9#UVk%`Z7a%mv#=4hrC#%FK z$hfvb@4Lt+$zZMY^PS-E54qEwbOCh20MhkCp$sBL#0p`eH9p=+9T)Ge(IjYBwn$Vl zm^Ctz^N{(XJG%l6k#(w0L|~Gt_;1YNEM})pM3T#77S0-xgEf?{Ykdd`iZUp_=}0J) zqsUO?gQ6nk_CK}?j9vh$|NLy$c1dCA5=BEOwMh||Q_j)xapa7+-me*Xcn*|lq^uK_ zCGJrmhkOFyP_r%llZ;saH6)aaWjq9xE5!wsaOG$?{YJ(dW8uUdv> z<4qRHLV8MI$2^mt!-*unqW6~PQ0L8#cAh=qr=n(1Z&-m{ND)c1wvs{=t$eE4KxVBSbVY+T`pKK%~0D+rVA^9w|@su(GcSP$UA0x1S`Rqj`r<8)68dt(*GY!%luue2M zno3W$eu)Z85@|vzPLOv*Z$tBj-yP-}HiL9e;q(uA6o8;qnjC5|h#Y6_H<3uRP!X_FHc%EdeG1>O8!Nq9g!ZO+t5Rv_~L+~Cw4H!5>P95L14UBUQ;`7Q&HD2K;+7`voKh473X;MiwjrY7e=0%BB_|<}8%EFT<1S zIuUMAs+$|$$YFJaCWPC$gh#5q;$k2}Xnc|<1ak(1chXqZ!;lYiHm8SlqI(>=7xBJM zr?W`!Y^%%&v)c$|6)7?-Dv;tN3Pl~vT=cNPf_eeeKz}M@Y=!J7``Y(xBW<4sWgIC& zJC&JvE`3mCEK4_9e}mV|g0^uf$_UQF6Fk zlol{8VOl8_;@dZrL37(TCfQ=|Vtg9jZEBdEE)z8o$!3pJOk^a@vS^4;O7lKtLBc<} zLFq(_B>(V%ttB9$KUvxxq3i|qtNw)Yl$5MD_wkf*9S;CAQhz%sudKx_--eN)@`$_< zI0f$xpR7Sh+6!^pg@;1cU&GucYeTXG+KQ}9Xb9iepVb|qZAma~iN?;y&7mG^6^uzf znOdq5x6Fw&ljxbe4$JzzSxi1D^VKJT-tz0EyTOSFiyUrH@DyQ#%B#pX3M-c%i0rEf z1yZ3Y%gWe0gOF$bCY^>X9{HPd#%LSHG24GST1#1#^b|OZl;Fo#25%GPdhXFdar8>> zfJmpv0F4Ix7wS0YL`cOP5FbMwFxiMPoy)XHtWRUd)h!f5IhoTsyO1N;Vl1BbEFN=( z0hP`6gLo}cvu^~I$WHsY@MjL$et**GWS=>Z6ro6FR2!M!hupKo+*~HPq&l*Csq2sZ zNnL-&>X{ZIB8#hCl7PrGJT^TlGA23{6e}s81bJX2tW*PJ?~OQO6}hUT1d2xKbeNF})}O zjvmDfAaM&sJSb(Hz!iB7JWYNZ$dud&1q@&1Dk)Lwtch*WkGNSgl~*vKzvY`?urbBDbHJ?JAP-t*2#U5#}k&iHfVAv-^xMn(4Dqx@ZW1P zJ33DaHh;vN;1KrhK6 zQE#@~xjt1k6;3~ zD88T~@>@z40v>^uv!|pJ89w0S3{HsDIXO{8(Q4s;OtL@O{)0oMphuv$LwnbgBE;KR zEN%OkKqh<*h3YalcSLl|0O*@gH7I!l>|Ee~yc43M=`gG2i85n&iO?wy?r~cm8qVtx z6AD{1+MeD+hHxqrsf~0_-?imw)1(G5R}J?BArje0=ZN^#>U3HK*+{2{Q}V-q^BY(P zU_xlvQ3RC;C7I#e9hF(#D^%QT_pLP0>RekXC0w_p-gLed+pgd4M5{gJcI~g!>F&gl z6~7d>ox6P1oXYm=w$1lR_53?+;;`$rl`S7+)J-qiwAP)ThsK>Q^W4s5@x%TnE}m6A zx;-PdRIOKCXW74>2;EVJ4BJvD^GR82IOHfcASeR1hw6lb?EsI^pNj7}5If$Q=|t>W zw%5dk4%k7CG03wHVG0_DICaOE=xDeC(=kcAJEDElD$-okU?p`y*w*oifjc?DO-CL! z@}l5e8#MB6qQNTOL-~Ug0kwHxRHR+^s7Pl`PylR4X@E+h5+H-4GVt$qIx>M2MVTmg zl1J#KL9X*Pc5wWS3kzG2bsp%~EdQ9>7xL{vQ2a;{v0AwW3`F#&6fvOucOt{U!1Yiksv|`=YlVi9Y;Uk>r=mw9Ab*Jx@|P$ti+B*Ie}fmn z!=6l-B904aojpm;L(|_F>)kf2FN&C{U^UARkrHtU(SG%H^x<`_l*KD>7D(iN zLsl^y!(=0+r1@KZh5tj8oT&l~kTCK8u5`>Gyp~)WYDbDBujOx(0WtlxAnX&Pm9p;E zaJyi<&L##9dD=u|e3-VRy^)!5Z;|=J^Px!1K)*SS46j}0{p%A5bjgSjT6AQU} z)pib^uC@-Lp>gU^-A0tje1R9b>E+9!WHZUe8QXLRY?JU9DR<-0ruk?-? zz(S|lwgfbm{B}U=IoGa`@}V<(!$GYB6+%daGZLSeI4~XNa64b%s}6?)ID^!|Ea9A( zQpDRV^A3m(RrBa*{xhAkPrP+La6*>n9prDN$;cD{8s3PO#P0 z!=fvBP1F5DP8^rY6$wL!!LU)+?os$-FDX*&gg0xcMHWss2L96lQzGk%EKWY#kh6xR zb_}#OCl?_m)iYU$W%%Dkm@4^>%$XHM7$wzga9>PA78VTQDY6zp`YY>`B4t{)^Kn31 zojfWh@-3HHt!XZfrieO1I#lb$G03w?FF>!gfdtg{1>lcagM00%R-HBRHk_8lirB?UkIPIegMP!&J0F8pwr*)|B7~?^gYfEMOd=i~c9%tIBveF=wO_b*vs^D9apHbjZ|(9%JQDKW7WcW~yuYozP0xt24@by*5U z*ziS2Kl(tC{rSUKzxnL`6Y(*LKTaqvIZ=9-OLGt(7vu9w-(M?GywX0d{o{i-m8vtB zeV5t9K1e@t$;_s$E|PoCVLC00MtsuQZ|<#ah#3O?_U8e_=X|c%rJR2Wikla+MSNc8 z2ByFL0y}WzLCb+p(r+B$hR}fz?yF!hieK3#VSFu_x#21d=-P_-02F2U; zJc{`8fLniVNhCH0-1vOzFT_`QIxg9CiOrw%ivti}8*ruG^+ByDeIc8^h_7#xUheeQ zIuvhk^*f5UTWx{(=EKF;CDcryc##zg5Z_Y#!&9FN`zh{a#?9v~-Wff9 zZwse);b)rfFw*bXRwJ~}vOE-z%om0DzLn+14!HA(;?Bw>#1C$|-eu}wYVjz1OVmO9 zM8z8~j=dxve1#$^-#o-mrnXr)wDJ#%+YPFZ_&NU;E6VpFn==YU>pGPXzqDay#LfNJ zDITzOFyfcrO)UK8dsB+H>h%fns|$xmR(`gH;-+4^5x@Rq;H=}mp%f3@YmfNjDK|$v z@U^CR;(HzZbMTYC>zcP3){x>comS}nVelW7-VSY3dojfaEb`;jXpKcP+aNJ2=V+L>B&P6uzoXN zaf`#pPq23>OO-)|f4we<7pnDo?w#q3zYSbb5%D6wT3p@ul+8nj?xBd6Exh_>U_3eL z2>Yn_V-UAF8c_e2RBDbWoSlOZuQ1&!U|SV8O5eu%CgQfk0`II@O+Czts0Nb_%~1e&3P4$*B2ZM^hM| zanHA!!&ekLn&+1Xl)hisOvIZ`cr`cbb2W-vJGSERg?4jpG-7z+0=*D#zH^pqu+>*e zUo4jE=T@KncT7nuM{)lrIG=~K-c?|HRAEMM=T!vjY5nnYRP=*Ml-^<8CdAtYo(?ye za*E<*{3jyr;9qCNfMvHS?mM+J;;z4#ZS8q>48@C$|H$F{9820n9;CSE%({rXTl*~Z zYdxLfH430S9n$`&d+9_ASBhKLMY%J?)7{qdc~K@`EY`SVJso!pU74|Y5vA|wQUY$l&`^m|D0m_G+1-eqFVrq6aTxiIYaYlwI6|8ek@Rii1rPmj`w_dHb2i6?fArl7tI;x5z9%iSBz5W9H@bGhcT?X;!tL?3;I~An3r=1VtF^A6` zZrZUA#jBfkKs>hmgQh>OMsL z>|YUGwL}L>U#`$mq)!d%{<-0-ffSFc8jpC|K8xlftl4@|+~nworbTWWu)&Mcrw-=U z`_StqDVP12JW}7=kM)e)^r+>S^tY70MrCdsM|Iy9u*K4x;!#gWBmLOG9S!QP*S2R$ z8i#Ltnmov7H>EF98uf%B>wQ);vlS~9cwX5%@xxnO|JwV4I_L${ z1J$!Qe)8*(loOS}@u*27I6SWH+CT5GaUU?1NB^*!=iK6-ejaV-B7Vrr z_s4?bOdsgf81>a5r`A38oivKcg~aY-kp6Vb-UpISF}wipdWbv+=F@?N7u_oK9;F-DTfpegVfZ z*{uB?WiN+$v>uNJ7m>cu_x!F7*O*<9Wbco7k(Sd&e2HNCXWe&i5iilh*#NawXklPZM6Ox87O~~tKV#} z@WR8H6nE>Diu5%mj7&(M&-9kUWm+O$Ys$fc9mcYL%U|*b;~=Z6|JX1{*s8- zG5@3Io)T<6M0A;kxZTj__15oZ`on;meu&o{XA@B7*j!qV`#IDDlkGo!uiEO)3yQb1 zS0a7=WncaJ&RRq9ICn?H8{Vl9*gOAridX&x`F3)n@?d?fV)DXq_Bo_?zH<3{n|>oG zz4~S$#9il&7_i}PO^OGP`{D&jn{zv!YJLY9jdd1QOh<9)?8T0oG zHN{hx)kNI;*BTBM)om$m?s6INE~`{l#~Ls`meLsYx8!afqqo|fW&LdB-vjA;G-=wZ zaED8@o(^Wti1#eodHYQ(R*%!mvWWM#&Uk!1k?}E~U8qMT`|tFAIK5I~T2IK|dyzi4 z(=F#x-5EcuyXqGX|Gcm6q%BO2RLNM6c&K`9a9Rtt9{a4|zBjDKlT9@)T%h$Ab-0Q2 z{c7|$)uWyX#a+K9Bd#gzb@i}cTZ#|t&$TmQYG_8&*-TIFT@vlJtwqK6ZDRcuLB%H~PbI34^md3X88 z9$!YMGWt6lpEj9N|uzv2|t0UrP?+&`W;e`dIPrtJP@oRls9edEK6UB=+D~R~L*RyMEAGMU? zHD9hl{L$I|<_#SxF?w&*$C4jccw2o`fvOa*Y>xU#^2>`6znv)anc__@KgW9hT$;c0 zDAn&2Z)!OP@wfBW@4VG|J;NRS5&u+w(bmY4Y(1Jz;O6ts;-ibzKhEr_Mt6LX{^!as zW!psmp!Gy9+@r%&R89A+EgEY^@t~re5YN9dc=DiaZ2q?>cL4E%4l~pTEv8WVVYAH< zFEQcsQ48}s6z}U-1M!j*YWH7|berNsDqa^&I)6b~93i}aRxVtR~fFo5C} z%Hz67vD|RzamMOr6t7+44boR^{JQ`u@m>wiF*?wF>F$+$|c>yzwZCSMlV&x4z4&hg;b+R75uDjr8@$ zO@0;qgN;{(jkvy28dRD6vw&kUT2IXps86OesXu$zw1RA24Guy*C#8k?sDuT5-%|Ra z&bVGuS}uNkF<%;6MnDIPW6oXL~6lHxTRpdXRCknxJU6}Cl!eMSccUYv&WI*%?~0!N$FnQ>u|frffVm# zgK{CouatZAy?S93H)%Eu>+#>W>2gA6HePjZqyCu^c&>p>uM{ej z{FJt{NqRZN!><;daCS7)+ui#9iFm(*JdNnEJ-w`#A|4s| zuwe1~MJTR*f&4Qi^1f@el0R5`8g$^+OH`CuLYb>fuZyjZdRI#Ht48T-oo~^4Du!_N zXs$b!pSqIi=TVR6;Ctf>-!4C^|2Rr-Kd>0$iTO{&bz9E*xyvE+Kc^&aT>HUo%WO(t z_%T=ipuFaOdoQtdU2eo%tY^rY>79Sw{Wqoejzl{yC3R?<*G_$zyt5yQ{5d6kUf8~| z7n!_pXkHoX89rk3I6Gf+T95N9Zr+X@dns~XYu5fy7j8a`&M3IIOA#fdZ@KgY)-!(0 zAC}Wmkc=A;Anz>Bh?mGwNd&=}zgMRsCZb3?K>dp1r?1*LMfA1eh@meah zgHnFI^YG>3PmEs`8piRZxt+ZBj$K}#($_5V9p5{@qVL-}Uzna2W;Ye_h5O%@v4~>z z*Y|FO_~L^53-qu4p0)ot$Cs9A_7}=y^Nr$>vt5yXMKOz^)2xb7yxn57BT`m8zVfNP z=WdGk{jD?7|9*e)oz2Nizp6Fp2jc5YBYQnN&*WgM)94RLS$Dqk^ZCVI(t4r`)JFRC zHf@jG^kC~ZHR+)s!i$D<{Y0n^0St+zXj8m3c1|HdQMJmZ8de)5=!5`SY8hQYS!UU%LWvW zy2kbYsbUA)7U{;;OZzcPkpA>4>y$c?Os{LQqXgn-JAHZ`kv5Fh)9Ga@hx=vxJ+}CG zil?7mhxmoVy%Ij1Wqh*2wgAL$tf@A&_tGkq-Zt0{@tc!&c>i(NlHxVr#2|hv*n8== zEzFKE|HScuTgQJWu6C3vGQ#!&-KIY^$Wk;n#|^BU=Sx~|A_2Z ze@YnRt7(4Rdq38;>U8CDI<2Q<#t5wc^Vl~1#tv&n@wyHD5&u&8Tf-{t*}6#Fih5wm z_hK_WZ;fwE>7!n8^XGeY*BO8JXZ55VFu{8Memksk=c>+>-rI4$4o_7MSzoG80jBpl zv_W~AYB8vqoyi5Zj>^>hjPwQbZW&gp|1Y#2%TJX!y!XW&y_>P|jqQVaX==f3chCB@ z9zp3_tnfhkLOW8{q`E$*cx#Vj#ETrBKf1=A$`mjEVmso+e-xYf@KGAYyOi36c*zzW zl{ddIeYM1=^N5#eSn5@TihWln_alf`8UCS6|JTE5J+_K^96n)QPg6fO-%{?P{+wDh z@YXP&&)q3~!4Y?mzS@$TH|M`II@w5@#d}#gP_x(2PozmD{650|=M z+btiZH`{g;ahHI}<=zIqqT~nA|7r1vP;$0kz z3~pSyB&}yqZIqj-z041fpZ$!@x1{l2NZ-3k-m=5v&r$kDzMBy5v(mA1)B0uj7U{k*524VlaA$ELL{v7V?mZuM6*?m_F1 zyN+@{HTKw`Qhx_AJt3**dZh1Pq2{G=eVM*dVnAKQHER=Qy=Zfo*3+o{O2h{T^trNZ zIh+5c=G^=l8CP^!p_Q*GeT|>XkbZ*mvBd9RA5q-h1m$w-)W19Jd7LqW;;mlUApI|P zW#<&Uvyb9EHX$EQT~M^usW)AJQhdle)MHZ@I@DW!X#wl!D$DOq7g%-ui_byBEHnoNzzQWh7?$!oO4-DPH&HokM(~tKl#M&Rc`76?|>>22_X&B=( z@l#fF_zP9RH~krZ?s^#Q+|>1--%ok={v>^GCohgaY&74sVc~nW-b2)AC#G&{xwcr3 zlT9dn^yocU|0eIiMY|7vq`0U5bi}tDo2?vwf!R%iPL4u+`}SM+9R@S~q2m_RD^hnn zcpf!xI^&;C_MMS_m%5==UjHhPMakZj~Hc! z_|Ym6r@mYEp}6G^j(;BeSgTF^@o0)i&ToVCr$b&oSpQAyNAg8En0k7z#oG6N8I(Sx z1KP!@XaB16?bpS26tCHp!_Qd`c(gu_={aeaP+v{G*k^QVWi^v){)@PIc&&P`hjYVO z`vazP^WjEJ-3*_u%+9shh5BmhjkoO<`A+wv?@b+96x)Bh@3vD`-P!tz9gXrd_0gjT zqZMw9KMVpEVvjxF#!Gq-9~K@L3cbXX5EjQ=i6s1WA>zpGSxsMP%1_E)qD2$UCU$4wrsr<3#34?ht2C zOf=l}MsmW?bp1Xt32{N{V8}YjP=T|PEbB)Qx%r2e5kq?s4m;~fzKG>6GA4V)?*iYd zfu7LVbyG(K;AqjrRO&cw%2v`0-Z!uj5jv2`WwwAT2|^(e4oNQ`q`RI#e2n>-Ey#BT z!hu{!q|DOjK^{i94k$Ju-arBia<`U(>;W7hg@2=^7%SuRLEofUH9SXuMsc+*Jgz49 zMR53?_mq|wiZHp0gvo)cM+w_<%26UG2I*l)$b%Rg8Ia_w9vDwP!&GE#15a^xXvA2Y z$T?9U>Ei3sl+lP+bHhy1&84o5%JQKdAv2zcs344;|DkgDzsM(&s&tuaq!Iw|?vBxjw2F#VmP^qk zG9XkVM_#~Ss`8S>p;Q9D!z=3h`NkR&jNZBO5v>fzTv~GoJlg$g=!6?iM zbPvMobiXucgQ@@%Gb&Swbr2J*j)d#FL&)`BkdE9b3|v5@5({RNauycRKRShkXyCRF zbu=aOR!2huMRlBkLk>|v`1$=Evs9O^7Fi5^35q)3nHvpi^#nPG;8%v7XK{XR2-(a4|T z&{GXaw-F(-fRyZMt|qz1#UvV_&Fr1oe9R7uA_FAErkGe;DbA9$FW0HWnv( ze8w zFNft^6Z~Hn377ZDjp2GZo(P#e&psT z%3M!U7X|WqA$R4d$O_RHL$u>zpy)LrAT|^rHWUkXP#af&=bfo$Bwsdj)VZl6;l2=C z27rYf1j~utGOFYm|C#qnRLq$nr)p^vT0z<7XlQL3DNDt9yh9wxjPH{arS;}W>^^a% z-r@0spkC!-8TA4k`AvX{&s{VxrLgdZT*KYZMJrLsoKeQCE2wxDS(NCS6tM{D%+R(C zZW4xleCBNsnMj#ftqfTp@?JfD#zeNrGAESUytpD1JVpSYotvq8We$uSRtha+uE`1T z*9cOKnUk_7rBXr{(VyvfUDZ@Fho3+J`$};~{#pfUg`sP~B)Eb}_8E@2zC^tF26)IH zWLdz09~zFfNn}dVWx>*!lh2eJ3-Q0RYV_BHnUuGYNqa8tPDFVi>kv&Sxva?G%8;ta zU86}*lRID`uRfV;9cq3$b$;D?_*=Q3%-M}lR*^EBg#SgW<0HcZ?E)z0w{!6Ja&YPZ z|44rpY|A@5J}e>7E(8J^!y|R{j1X@-p2e$*s*S-h5Ra+u_Dg0wgj{3XjcK~v%>*+t zlZ8jechkS}SV0rn!%1PK7b$XujbKm;vs37mBtm<6yx>}SvNFfrv`|2F@>&5BMzDuq zkW|^S!}M7i8*F87m>eoNYOktEiiiNBE8JZjA40Y-e3GK$0|t`Eb9k)_EITe7OJX6R zDxa$oRF=gh!trYeuVoqJJuuuRsjGKC^{aon zabm-ycQ9L;kf{S~L*+z@(0y%Ml^7J_@E{VfocJ9#- zy9rS`u@Lf#t>uYugFAq1S5Vh<7y1dLUkrOL1hyW3r3Oh*WCC~m`DoOFL`gI%$S zT4GY#pJ|sMz1t4IphIaf#cL${v4wV;?RV|@3B*ox0H$X&x zO1+zF9H0^4n@ zL-Gs}5v~oNC;xsq?I>R+9LF9?by9>_1LHV80T47qp2;snL-bzlZaZ6RWUpG^;3g#h zWE8!?3YHNYA4DS7yTpe_YS<1x{r|iOcC!0VA_G~_6fgqD^~A_%F9~fj30<)XotekD zD0?C1!aH!lYd393&Y}?vu$4xHt)MT2uT}*DGqiK`aPT41h5XD=y=8HiLV7TvH&Xe{ zq}LK(h;k&96jFrrQSC0KW4MzmZB`D$=7bDr!T7p$0$Qmcp)HFb6slO;cK!WY31d6+ z76*KAw&JEGHd90bm`K;c2#h1c@c;@W+fd%vL=2O_n1tw{q@Vyze5BfryIqk;47igt zOAsijCXYNdPlO>7mZ|g6N^n)}MtyFI7lR&QxhB2QA$=l}h;#*-&rm}v|?y&-)EX~}Y#%-K6KpJ?JeA-kfu+5+tD|Ah~Ry+pL(~%@# zj2Xp1PJgNmqJC`}{z-3^CsKyVM!3H(&X6Lgt(ji)4$V?Rwm0R_MFKpA$L~m319{Hu zU!FJ6j`@4V4gPHNyh()Tkt08aNfB9z)bi(t)~RGI0udI+*ZE+4O%2BkAQv#WTts*; z{Qz8?8hC5oTQ}m&9*uK&)3r~5ZRy`Om&(}s;6;moC!KCR`2FeC71ckMUz-j&os?Fj zf0XdRS5h`gtbMXW2s#&uc?TC(R|v-hJ65~Zv&;DBFw`C1Ya+${czU>$&r*NK!mqc8 z=%78NPYVrzpE3{W3DPASNs-_yVBGu0kjSK1HQ4*?Xpy-A6Y8;^DKA0EjhXR@lKH!yQ*oZmbOF4OwnY1 zHFU9zxO+p4R$2pA?jvJZ3ksxXQ&yfQ&VZS^Y4Q)S-v4u2p*{2&O$+Z1|8>vdN`@-9 zUsp03;6qi$k|J(barfkUlIVA|Ys~}~+M$h21W3F;P5? zh;({^Y$X-pJ>;W~1RYKt4Es|;e7${4An%RF?XGm9=QyE+O}I`zp5Ja7TJqbo`-Ur6e)?6If8?B;eS{L!#m}kd@#a97WoLi(Jf-U zGlrEAMNVt0gAMX35dlDIVZF;8kdTVFl@L>ML>cOZxjCAoV_`Ii=SV>qr9UYWrw72c zj>S|e+UQaPsa%j8s@DA?$rP9Zg#>7hVH?!?`*m8srW%|t5C8=M1RC;e9-choNhLFaWX0r6cX0-X2QDP4!4)A=4Pjrp{TIm` zc^RUgX>aGNd1Qum)r-@I3-6VHsUl*#>M0+2^ z33cFkEaCOCwBf80k(czRe**DG8JycjNFdTJ(3f4v1S5B%Y$C@~{zn$uOfaZt=@ey$!hQfF zS*4Jn&BM?}f)|n>Nzb7OhXVU1iU5h=M%7`o*CuX{CR86Xl?UQmfY{b*9Qtd^ zR{#GRWeE!jP{EfN$r<1SPLOpDXReejNRgUH-aZa289dA+NDZD46rT{s_GBgc82x0q zYI^48N%P!TzR-{GQ@TN4s?6YzAEd~TB?@x^8DzktY^0zu#=R_Cd>Y}0mXUwb;1}te zIXp3`Ge0!aK5Fh?|ASFMs(fT+<$-zeH!1s+*<=)ae}OWm+{Td0?Vn>b%KU_FE`vg@ z8qJW3MCHZd11bF}MOG<)I}!+sJ-R(3Y?l4|sUs_X$sg+1qUeOr;}mPl4o>cWe#)>b zrmX_zRJLEeVoKyJ=UcH(?E_tlzI^N1%fG*CTI=CUx0b5)s>`tJwSH9UbeDv^uO{tX z0c8Ox(h&ndp^(bMVrpPb3r%SrXVB*E(n##3kQR^}Evl|iI+7xLD9NLFh0NIhZNu9L zQJ3SjXOwN8(>0n$$O>lSa~#WwKuqlayk+f2_}OYGi%F64+j_@Ds=0&x|HA=}5_&ni z{KT-C4~s{ZKT(R|X%$hjkt1cl^T_08*=Lt|%!2`gi@=pLwun3bz<;QVmxUlO_h{Z0 zH(?O}?tX(Em8-koDzfYSsr1$MFfa>=tdSc7f%ntMi-ACLGK|_Eje)R*7h93CMRZ%W znH_8a_Jh#9c94fG2&PC9IwmxvDlr?M*vGovZ>h~ItS!eD1kVuw?NUkD?HKPOvG_3! zAJnC+LHJ$-6u28)8MMxDXMugB7lfoRk&FP4>LA^xU;e6wHs^4!9@_y` z!H@3M(>SU z%1fk(=Whfh3Xb!_E~7_4Ae@AVBVCn;XW#4GSi(C?27Cv`9hd0FzfCW9-FQMQh4Z`# zY0pcjROT*s$=pvQ3_-&hsmp97o|H@6-O6rG&FCTIq?QP6>4P$*L+G7jk2G~D+W84$$ybT)LW z{|rZ#5#XQs@+{=9x(}ob)_A^ch}9a<%*GS3SsM!RK-fy891*#*f{4$5;+&dbVk#j< zCP=8wU{(vhm6l*q%dU?ow?=;_qE&iq3R3p`>gjhB^ zEQRzueH~_Qyf$W#A4I0Bktw}FB)_7L(pLKixCY^M%2F*}e1iY(AU#h)*@^2nRN^jL zmq_(M5#=?iUa5HGxe+6BknCD+r3bviU)deMLlD=;G@{gnf3I zoroU7a}|rI5kSGuq%83*nL>ziY4K!Z-Q+NPHtB6t@kG=>@YHe{U2{bZ+#r+H==50` zH?|n*cFRpY)5M1?=Vwsvks@I{Wm%hGpGES5#^G_;X*F(b8;a~Oj=KnnCZ@rlVF7J? z1s_arKAR2yoh^fhk`K#cz@L#VCNAc>lAtQRwtD}M@*atOFFj(IwYkd^ zjbzC1es=9pBK$>;y+w=fb`T}AYq)v<-0(&I%*Hk*R|C9B_Ztiog1b{;qwH0$7u`!L zEBK#X{>CnCk*MX^h#-xfR|hAb%y~pKhIxUA&PR8vyTd(xxG}Gh!8PQtGm&q=7iRee zgFdueR)yH4qIW7NA;wwpgOn9PF;RA*LRrl_!X|to$=$`>2c*i#O5HCy+^&6eI0=1< z6WD#x{fPN-s)^$h4wk=o=6h zs)j?6up(tHCV9pQRG6FbXA-lDU2rKufKfB5EA`sE`SsjIk{#5B2&LgrhLB<`4>c8% zBfPj&AI5 zh1_dm3OP(yGsBr_*o_oIS$Rmla4?ogI=L8w>B4g)a1ChGG`s*bY6a~5DlRP(H&e zJ|+443n^>F{h}nvICaLyMuz8#J6^`>7UCC%-0|7ny*DErVZk~>sSufu{GlVAW+Fl- zW8U(rk~Onsong$CX-hr~`k^4{knT{tNHJu8l1EHMbYapPnf#w3$^k59tt(fgPe@f- z3K0)8RFUajq-7!rCsoN;d`JhAI}nZX0^<6$#lO(WCdUhiPr-Y0!Q#d0 zZ0iXrU&3BMF62u*3d)!88rU}ZKfUiqL%!hDs}iE=l)Xh%bjk#}Xdr(iO<)Y;A~{u! z2~Cw)i&zaCB9W!0FIZ)*Ad##L^efpHVv1&w#YRbasg5NU8yXSNX-X1JsC*0MIVqbZ z92i~eX?Lx)j!VWYbV+e?x!3ZFj63wL3}+~G2Dgu5tgAz0R0*5XdNDLh%{zOK843u@JBO$)p2{@G;7ESkgZc3Ld`{c^mReqddJL+AFP0+sEvdSR?uCCW(oL{g!E( zi3lm$7Ve|yv{tAt5q`S~3OV4rTBO(Lqh0H}KrTP>n2E?6GKoQv4%V9&MyM?2Qn^#v zylfX93h`xRsfp+#O2pKkEt{vW$swnd15|W7XsBx!_~P`fTgv zOjPGUmcoSm-|?~5g8`{Qig>hfx47_lHF0P9#(1kW36XSfz${xwK!jwVyd>j7vQgy1 zUKx_ski0hFQf*9RE0L>vNs$T;>RO){qpBxP^GHb;h$CXTMWl$3HOl8(BGmyO zwU3)UJI0W8A~Hm@X`K`J zB43(Gwu=uqHxd6kCay?-2uvc8g#urSSIUd5UDCPPn`ct3)1L~tIwOe>eaIxX5VD(j8?bxD>tNRzj?m>=%dc=^>b2xG=utVencDQFibU>&& zE@!*BhSUO~e}{&Jk^{5qM0I3#_kQw0@(B9^&?BqMu3oV5!~663$hRs2Jxc!6{>rXh z`|w%lXmg6!FMSR1b$8cYPOeEp^A(EHbH*dSv*)wlX7}@_c+l;Mi0|!EOS!f!t0%r$ zW5oBr8&fvr^dw5}IV}kBL*^~aN^XaPeem;fTZ{OS7Kal) z=!EolGeQEaJ;>20g`)YT5{N&@H)q_SyJQnop>QZX6Y(bl1Li!fUV`GiGX`_`*4|}G zs76q{`-9SmKM!|2v1bJABf`(tQ;GN=e>To%J%S`DQ7AmDMj`%Y-Fx+l1A{1DCcOvZ zZ!0Fcz3SJ7;%Ti{a=263_zg|=P`q2848-62?oL{A2@=o1uiB|3#6MO0G^9?6Rup$w z{}}NvZ-U2~r>>xQn}NF!|5>hS|Kld}DDKpt4~O5|JF&}yV-znu@U9LoXL@vkPp?XK zDDHT-FyiKE&--0*Ve_Q$Mf~1!c}tn5_pPvi(g)f(<~=Ch_eeV8Ht%g7SNimd;!RS%B3?dZYJs>N(CtqS%>j~Zns_{Uaici)pI++1!M3lfARr`Z)~=CNE}2_z|Yq09pW_#{@yfS#xRO& ziuXsn=7GLb-`c;UxE~JJ&vFghDTAWcvUylNxi```zYtL*Ca5~4Pk1{S@mBjhy1Nd4 zK=E*!yNI{D)~9-s|5}Q-tg#Pqmo53iJT~>Ac=_q6h`X93m0smT&buiTE*ZxVceA$H zHnT10xbREb*NwwFmFU`MlQYGw*Z)A=W75TaXJgs=ZCHitw~p?G3Z|uoQu+!%kiV7d zG;qnHliS$3?&Eh4>+!OU*>|p86G|WG#LW}0m+NNcnL`eP0bgxrf%HBn@{KRr+nVB$ z{qG>&)vSs2$ct_iAM}mu&z@fsO&c9iQM^@BeWdpb`jpzZQx}RC*y)CNuPsx`++6XM z;;rX;A|6rhO1{c%8K3l?rA9p3KEUzbaqYY^tAu#mqnW8+ng`N)Y85Ju_<$tWhwu8a z_5?O8%i&*p%=|XtIcsMdZr&!9p1C&Nlzo??Blq5<&LPv@cH2+sD|Kmx^$aOCcu|A> zzfrtxyglNnlh$r}cp#bLR*$%TOaFAO;hVbTz@S3msN&YeFf&d4fXeqM?pd@6)-(E1 zp7}-HQYjuX#|iPVc`NNp>zzVz(*g@f*s=a+5BesnY8s>*v;=dLaF@-;SPI z{)Nf4w7lH>nSSs4#d;eV|E&DI3)0Uhba7*?ag6`>D8=!OIc)>K4ByN6b3k)${mxeh z?J-FiPuuBc$IaV}M#l~(&zev1p{2O~T(q=MKKo6_DQ=Y>hwokfqKwbVmp>?;ezyhU zYcj?zSXs9e#RrTmfcWp4+lBLoGJ3Cl%^n;KBu ztw0$Lf9E%QTGdncQ@0(!dM-{o_9k%RLyCtDzl!+va4}I`-N{tCoN`jFd?4n=SQ{Y&$ZudLg`bx9zyyj>n`{oU(VKb+hN@N zc~+qP_=K~wDSiGE8A$)^W6hI8kFfW)TNi@(i*nWLCf%(?>HF?MJ+0i!53}Bk>cI5& zh?S@>m3!m6;HT|}-za_FpW>We*LG$sw@1{I* zh(5ZJ;>8DY!1Q^GwOyuRS8eE3*DCtMowJ{O!{1G1tb?dRni3 zi+H{@&yW6gw=2cHl98`k7ASFK;K+(hA1JnR3DOrHR6piT4W|D@9;t$OktSVclzqtL zTEWxEPb`a`8fW&f51Y>^b5XCeEOz9^5ASL8wThlLZ?K+{ztw$HIoW~!gLiS1FP5dd zI}eLEJA~qGS4>6vGT+vCu4;da;+4AEAzs#eyHj76z7#iiwMM+syyr9XonZEh{}z;M zmX(*EakcAKhSH~0_Cxym_E%3k{_=t1#jO`1-eSSrza921r+Dvyvk-4(_Vsd!H|Z2_ zklYnoo9cKE&O(J&0-8ldU`dc568NNS89(mj6lX z>9vIGw+@9Yrle;u{h{BeNTl!Dxki<1O2*GMbDksa7gW7VhshslJryRQ{Ic{fVA11D zaaW3W?u+us(!X-6B|p0{{^M6}F4og`zG92{EH)2a2crIC8B~9_Ys+x(6v5B$H?(&w zgCBm4>#?;U#Y0{vU_D`;GktH4heHtXE3~%{hflhuT)vl$Zy(?3h)4c0_l*BlCrV$h z>J!9cI-R}pc{$_%js-U$KA`{Cs8FwKl)mqp(TEQ!ShBrO-_{f_msk<;As&rab&4xY z@u61Hh$l}f_gCI3!zr#@6pr}Nz0HsH?Y^Dj?xV^eKHMfEqG(;lPtw*eM|{Mpw6jku zF@93}>NmtkZn|8gRQEHq9+z5G5g*-jSBLKX8&SN&8*cuLO}8s?$1aWHet&ZPGtMji zm(5-`D4uZVPpoI$nW=|EnDTL#Jz z%js_wdtP5=e6@G2@mSBSn`fq}qM2QsG-4~_^UF>7)<0hmZO_oa%7`z#7(?Wvx$U9!4g)L@U*EIZ*NB(%DDG+Z3h^zo>Q(Ns>Zd7F#X15iU)ixqWcHSqy2*lJUG6W;-+`e zFJyV@W=d$CLRx+s@i)?+b@H0nsut772FzWH__-UWGA`|6d_HI`$M-HI&vzWQxf8A5 zrT$T*zw+V0h9%3NQ9Ps~+D(>Mhn{dr7|GUAxd^VFYn#qK9K3_cDgQS=u%0`$mU#Av zV*I4KQzZ^>(93&4OQvrW?D!h-dr7T=r<*c)-COYj@%xpA4yd}4>65XkoE&+u$M$=T z8og;dyL~}@&+>UyTTPieOmB1xM}L>)iT zV;on;M%ShF+sqC?`ZtZIY#!Fum*PeDwn6;c%0f#TlxO_b`)PB;zgtz*OnLGbrB8S{ z8S%dYYrU#Ho#|;_y;0w={8_mCo&^)w_^KNf)6rWg!Ur}lc7(}I{|GO{O|3%|fvcI_ z>Nc(;hnK&ovG2g@k1;)lc-}j;zjT_^mbRza?)r%5Z&$o&p=peNHi*FWYgN$dfe zi)z0(I1vVmH@m_&9f3CEm^{5Y&K)h1x2hUUP~x)avteid*k2 zi}lpI{B6#+v1}bVjEX_LL9y3ePnTuurOZR*4_3|8UhAHfW8>AbUJ}x`=@_==`$@*P zYp14i`0YXyN9XmY@2$PNC*lrE{q67fe@XGu2T@L0In~PFz%-*F#oO&b|Cp7F&xH<6 zE6rti*DqL)`?0Qb?=5HefEIfYZ(r!pe9avTN}slS7vi23?3I5UX7jM$Qq(J~Ivu^V zwDBZQN?&kJ7}9&yYdPBC`!R}prWEAxIX`OMyvpWhjf2Aw@4C^V`Ck8nl-~bEX~cW% zy?U=;m)R7LI^v3WpVH$uZ2#avaWC&jh^td7B&LNvqBqw^2S?MI~KWFgBIR!MclU;CrLHzq-73!zKFO zgc{s>jNUc;)v38BDc-NQGt&3(uzuHm3pgb zt%1GRdLMEP<*8Mg{pvT%x;CKo+eI(NdWKu=7?ZaY^IPUoZs732`6m3ZXZ$UB6t`YR zOt`KX+>*_=VaaHZSdEVUJ!AKypR|5wD@Uwn{KrFe4(54G@or}O5uecFY}%)-Y1WUwaVM$!AeTs$>J2^GhX*UxY?Dp zC%w^Mh|l?6KF{qRt0;Z5Gn)|4Sa@qqx#H_6?$mc4;!7UXsa)+YtG`IaPKYnv^U!W`n|aZ+o*|wGk$%mOv3|+>8&h19#?`;h{o$=`Ll0BDyVnJz-{d%G z!v7TPSOcvQ$I zZ0CtpA)hZ5@}hX*rg;!Qx$M*BEA!aAYPM-M;%7Hks}iz>k}KNQ;rPk9wtn^FO5UOW z&}}$3&(8%#wD@qKKgBIuHNtw%t!w$`oxgTdyz>)oyv}X)Snll4=54iYs1I0O@~fF~ zaDE9&-)w1KtmlT4&!-&?*!rkM z9UJR;i0O5WEz%KxGW^%Sh8$%4!Qx#9#9x$|U*^@KL$n_MGouiH6P)Mt#L?aqFYe5> z^K;MfWy^GB`fVOBj<0@+YktI}d|ygmQ_b=1ziiF~Ra$b7;#F^O_5ZC%8*Q5GOz{#g zckAA3tti`J>C+9RDIR#V0^)_sm;V-VrU1n&&uE5t(QXfmU+s0B;!*A?h!^wmUmupo zn&LjQeL4K%_J?Oe%qU(no~x&LOO z4qbh3Mp4!egPhQxW9_iX?{3AJ<0yUAzj0k#J3hHNyQTFRibr?+itly4W|=;&@-B*} zStKIv+9a|`h?>pAVvbz@d(`=m@B3`l&;HZ8A-z`}j~5vg5@67UI6UZC@7r#@2h{i$jQaTm9nruT=vmy-ATei1#}6{d?@5 z;uP=l=qBQQS~aTQJ3N`Cxu!v%c2d0QV6Oi|-(KFj zZ`f0cN3Cpw^bvkus{+pqqPX{YwBxL!R+K+nrG0sd2ad@=dd;%oX}2wsC_XF<`G$4; zh*CA~FJ$#}zgZXQ<8N$zdiWrlpH)rJ-mxCgt-~J!)_kD#MB}vmX`S?7TAxpMmrz_~ zJrwIntC|$jZQVVJ2X8>V)H>}*=;^)(m>fw>bVvFTJ4+SPY#Kr7E6w^7@sT%u7y49Y z^V#9yQN%}gcUV280^3*h|6?ZN3=C= zzG!XZ_Z08o!u9j)-Rm9Qt~H^!TM4u~tQV^8|FHS%4~jczxOuxU@%>*tH+xV#pTl0P zf8l#&^D~1^Q#_&UOT-tAD)27frP~zm(}?36%eMC#`EI~?ihEVrhV-kOzG|Er#O(2E z%F~FiZ~wJnp48QpzG!z3#5Z>S_2l#_=P7QVUJmii1us}whp_paWcL*DZ3)-z$C-7c z^dY^ub+p}N#Q6mmZc)6r6HYAa9i7)svrNiM@z9wl7p!+q4IcKnX(NgU5AKik?^Zpw z(UfI=v%FhTAF$rrHQ$NZ+PDtyAt=YK_r5y+()!Q?T92m839M(|yge`fuCtlq)%X8` z_@NFx%kLS~hTn2QCRQm#@PdM-q@zV!dZg^8ToZ<~u zEJOTkr_`A@Ll{47PzCiI>$9W2n9tughtlVL&-L@!FTX8#F!CkE%PmDc!TL(`iyePy z?MU(dt{h*zer9`2gzZ?0yInp4oOs9CGLAS6y_m^zw7Ez!j#S2{;g81Xl z<211+nBAx8wh8gqO7rh`j-R6RwHt8tysi;pw;_)Ci)wwVjP!3BABmWphxJ?NsSzB0 z)^FP2R-b4+L-)rb{!vrMYW-AZm-Xv<7V*zD?v4GbX8gp@@iXFIN{ud9Xjdeyr%FO4 z#J@cl(BJ0$3yM3gXoC2UhTE%N-p$r^Y#hfoe)z>L>f0!S(wpx>Kb4K5rNgG4O_`n? zRu1K$jpBakhs}2PrS$D~o9ODdQHJ&Ot^I8S#iI^(?- z1_dczYv6beU(>hC?2nZwKCrDR;sv~)OmiDvfa2YgkiXd!IukbiR03Ns{$Efo+Z3s^ z^H~g2dlemSDX^ZRJ0G@+*kn%YiE6Qf!}rAJ+hMJyxOLhq#7h*L)W7QM&lDfv62;;B z&s?p%ntfO5dt5IzRzvnjSH7P>>07kuh4j`H8$LQYoAHg%ML2J5%3t>BX0nuhuYD|z zi%rGrw|{ioI+WH^v?JQTHkC&&HFZ4Sg5uR{r(*q8H`vW6wzodT9X{iHu&Fk7Xh}@~ z^V>L$LcP?chV|9LOOO9W=}mUoU_CYcMtQeP96<4Q)y5)T`&dfT&E4xzyj-5`h}-?P z!{TKKTQ5$R$|7F3%9P{vT6LxLH79fZP&YB~|FL%-a7{E#15aq8g3?3<3o0r#G(|xa zsftn*P!I$R5HJu3Bvi!)ijTeb-azaPdl!2bd+)ttuixG*%%MpTe0{(2e&+Yvr~H|l z+nb%8oxQu=TVS6_@1J-~W$R;WxZ_^)&UAhedu~*jp0a;)I3{%N4GRDM1VNJ%=e3t*Z_u3)XOLHTywNDPst3MT_Z~1Aks1&m6_A+JbuK zJj+OJx#pxaW6InL7TdVFG4j7!%Pa4bPg2-pkmn+i@H3_Kv(oZDqEspdt8?7Qw+L{} zFLPRXdlS;tITdVi@q-q58tBTOO0Ude3_#3eO>CyrgA_8&QS$j!3zu6o|99J4$#3it zT#4m#m02ZNyVgjP{QTJ{{A8 zEF$w3lTD$2=qUdmx-g$HGI`3x9n6%9R?af9wsa4C*ffnUF-$4_c9&w`^m1uUx;t56 zrocDJ>dzj5o^7d&f?Yj`4A~tb5jKyhP#G>dW%gcDtn8;X*Ti`$wL4%%3*{N}Fem-d zHdP*nxMN6za3V=#AwYCCXBo3GDCaj=N;O{?FznX#_Ets?Z8+Ha#uyr!@ zn8-M?nKe7V2(9oN%|EomFH@i@cOIo$Oy_Atiat{|{;KmZOZERhcARF6nH)(Wx5Bx$ z6=lsoG??_qjXf%ekhtwsr6ah4T|!9bC>N8NNHaV#Ger;@R>8?}-#GB6R@Qz>5t#Z{NKFe2XnK76GjR%+3Zol%@(hKa-WhQvhb_m zOSLqUD3yyOXHo7#iYrqTL=KD!%!GqEu(krhA4c}M@^?05WXML*3hoLh{<4pPi1ouM zE1OIx7_@)5&Oq`F)I?!FfuzE%H)ZFcsVPDcPmmZTCf~J@@;VDLDvrwJoa}~5zcnAO zAXoU+B$uSfWd9y1Uql5JvVWk06l zG7qS)GNo!EhQr-eL2x8DKj7O-6>PgiPFcamL={XpaEBxE1#z*2oaq;%A2|{8V|GpF z+$QBRQ>t!%aui2NK_(=77p4-ujnP*@bi(Yb%I(T|z+7r5DFIBWiYbXa{J8Q)R2s8N zCHgSuAfcE;GEk0VmBLi12K*QE85^z|`QL9$k+&UJ*BvFw`;8|(%*!yaS=B5plkINT!{1Hmey1 zuWkJa^;^!0P;EGQ9Pqy5@MRq>+v@edhXj`Zx7NUy=d|ox?sfCNL0@vJd2t5nX%(IK z&UnE9kdNAfi?y^`cgSBK*6u6t+QavueCy5iUJo1L2|QpozT~IXHf;KWuU=x{4O2W& z-a)T!nxBU;@W|7hkUO^Dbgi}WM&O~7@ugcW_Y+OOOemoC3_URjdbF=irW?Bd&FfT_c3}JP&joHt&jS4lEuhLuSoVH94RSJWkpI<%fRuwO%*i0r2?m_Q;19?3i|YK7GlxQ^95A zqqp{3IAi2-khk$VhJ0*lp1s3(*kmiLLvE~)AAd5wbf}f5!a2}% z9DV6<@VTKVztVd3>3)1jr8(9X`;o7{9vg2OTL60e+6+X#wpP1+!Cx|f*Z6`jD{HN7 zro4RD;LpIrZ-%4%#xbXM6_3jT9_@Dt`KH4;?vZJ9F@se91oADtuK0-zlt4ay_AKOk z--PC8+`bN6Z`oSp$Hrf|;FtFvc=|=Q|DIa2UNt(k4&_^Laf{ZO`}^EW4Cu?~zAk#G z=UlU6f%>JJdG#y)$a0?x+V*>zgB}a@smRZNNLWzZZY^*vH(X?^b@9RL5f4vp1>V^* z9px{@ZmZifxgqex*0^X*>+0xw1Dua(0e9$e9_6n~KfPG!MC}$iV*tx1kD7Jw81?^l zOJ^d#`)opbuifNnH2Do))BySO&GXIcS_}c+C=g$^)_VThu%qqA4Zy`6i&6e%k2RkR z^S=Psx4wYc&#ODO0r{vGZ2Wn%=Gv<7S+u{mx5!2Lx5D6n zl3BF=+I#0Af8VKvyTMo5e_h-HkbiuA^t!607wEU(j7R?U^{xd03k-p`5Va}e+FYY4 zLtI8O&n8IrGTIQiO7iiR$+PbPPcp#zYpZVb?;JFbJ{xM}igwV}9DA`|lI~lO&&pFr zJ++FzTF%XA4}5TT3i8@(`%8^P@O}iRU-W6@x&!(bU(aj}^1PzX$n{H3B;_umFWIN& z)Iwgr=v>s`bM&QB8|f$H2IE=?63nwfPh*d^$Qz8Av$cg9ed$?q2fk#l-OzDLwqVgw zkPi-=fbz{2PfXh0=Lqn`kmW32+kV;Sb97OPeG5C}##64pHrQqY^6`8Lab8^F`h<92II__C7MwR>C5~&_kz>bCo$swn`6Z0E+L24zil!Uo0{7;bp#JEN z_r_ly`~kRS80ItD!YrSUqH`mGdu4M`K0cklFV|!eaMNJyr`m~}D{&=hF~I9@!|`1^ z`Plxjej~2|H~uC?J(9&iBZn7!1)g&n^F8f;%7zoT^Z3BKH^6aFd*H#?6$R%n0ylAC z?Uv)zVU5Eqnx8~!&PV;j?98}}ih@BtI|N_K*B&;g$HNhqXuK8QU4Zf3XABqQTb09AYXG4Yv*-Z1yg#b zdjM}Xl(pxEvE%j=xI7rk`5x(#^kr)>R; zJDA76pF;al``s;3zSueS;KSwgyhgS3k)Lfj>dCi5ok34xK||zMtowPq@S*ax!`ZlW z*7@zG(R`I$;OkX-}U}!Wcmo?E%QF3{4?tsiziH`{URtth2^duc8w-q1$l#i z*!n!5v*;`@Fba6Tbk;sE!j~C4>(P8N-HDCQuZv!HvNN~<@{N{tL;WR3FN|6>aV6E$ z1@j;6lH<=}JNnT4$9UgYlz+ecM$#$`WsrB#e}VjCUNdjUe*1x|*BXcXOYrhn^T+iD zp1gzA^L?Ug-lt}CoD#LeJVA$(za+5xej0BrQXiM;(c!%InIXPK7d!PY<|D7Bq&hj^ zJN0wNRLo~|s{6JYb$ovzoYy!_73FKHT|A&vEM9;8!G zqVz$fx;g0SW4sIX)a%!AoyN_2z_s#lyw<7jGwc)piZ*bw#W^TnKlqZtT3uTI5W~aB z4VoX5bUJ$!|G4n>sW;rP{J3@XUB?Byy6SKDq~jHb9HtAx4C)+C9#^P1j?MEzk;SI@q2 zdm-r2yo%$FPE@aXH}XvP05@J(2jvB+MS7OIdjPj^azP$@<8)UgF+9spvdy7s(#XOLhA3 za%;spwE#V7I&8ZPd7A4OCZchPbCUJ*VG}IwS{^(M^1hPEs6ThYg9#rl@qqUk(u3u1 z^`|AbwWhq9Ir32^Eu3C(f`OYn!hBw5)a8MJ?KP8uw>aJ$<;M>7AN?$x+O5qnoR{g0 z%}YAk{D}(4H))8Q3+PN98s)!h2i=Y@G7Z+GPm>YtO9oR#rUDsVH0 z5y$@pWe1`z% zZ*@oc1xLT`{Jfp105CyC}ancHKO0Z4t;f zuEzF@^o>R2J)HYqE?Z926> z;s92DXCMFP-*;z%o+L*c$8~mIczP$zh{pf+Gub$^tG>a4Th*z2z0BRHe{W!$8UGB; z06p858F;BGtFb~!M2#oM5+-+}iyqKA48HNN{q zGluqef6K+l&rN;$yx=VzHzmp<yiY0!%L4sb8`*eu<)p^y zj1#%QJ=>o^`D>mvmW;c36S(h@iO8?(4Jr)YTN8NVK24VAws|c`q;WfBf)?_dJsgy# z2S>eh0Pf?DdArU_-J5l_uhaY_Zscv$^G>Lgc&4BU$hVS2A^*@LJaoiq+K$17H;{kr zHMi@F+Myt?QmYvGH?I$uTkMPht{l~%jO(iQ*mC^nOq$O$tRH|}XG?&2J@XMDU#E6^ z`kQXu1%fNeHjyA-lZ*EUbQ?r`8Xoq7ju)PTuzhtKH@5T$QtArw zlBMRTzlpX=U(ctTfHx02iM;7UmCsk}(EKVbdJ^(xTkhp2w&#Pqh9~-oZj0c?4n>>j z_+EXW3d*;fQ1g(lqy*%>&1{gHE;*X*9ZT=~nXJeA2D)Y*)4mQHLj9p;%Pf>PA3mA4 zYP1LF@m=MN+`6dCH^cEXe~5Uy40+q{4IWE+(0&nofvt~|vd@f3UnHQX>n8L=U8mV` zUC!qY2HvTJwL|+l6W*-b=k`@b-evWQ zgFQhYpWF}U@4DjISw@?MIlv>1bU^u}l=xxZ!xsT>o@>DJk^R5c9<~H{=!Zg_s3zq=(yv(IuH4v?k+xuw$uZ8aTMlhx;c)g zhJQKv40v{33Ca)kT2k0hZ$5DIW;kEg9p)de5qyibZ{2#BPwI}jRBKw3Z0gU0UD)_A z&TQU`oUwaBkKt6d9Va&HZ=yDW=1U&$U*dVEJLmu`TXG3+07@>_}1jU8}g-2ma0V^dxLyu&JpAV3(wE{Zut#(d=0jqD+Hbecka=C zCs^l>@+(g^Fl+kZ2(6DR>(8sFXS7VRrhX`S`x)g|zZ#dFDtZj^-9|q{zUI2;u-V;g zfvaY+{=9bE;4@qAQorh7pNsMvyGzzPAM6YA9oMmbzEykV*T#3EfonMQL;39|7fmS{ zb_%#)bSCm0E}sT{KDZiqyQ4UN*WGz%{IX8t>jEE?5Qy@-^tSdIlSbRI2;GQW~EaO8sZxXf~c43#gI5@h)xmP_5Od=WMSXLuM2^!g=d!S+V@! zo6l30(D5IN+xFcadMN)2OkfT{`fr-G`9h=+6CcWj*!t(DqTtZ>CifzuW5q@&g~$Mt+CG z8R+}T26$q(<;d?@OHDp@qV?Bo!N&Oqw!%jrT0H@If6bjJ|1cwT_KS-hfM;A}+w0*D zk4;?`bpl>(@^qAcoYZ)m!4o>)H0^DH{6&w%j12=aKt8C$F619F?DxLBITQHc;Wv?g z|IG8~lF$ZtO9RU?uBQ}n@~N4ZGw_;HoCoPuciZ*K(AY#9c;aQe zkE&N=VZU0I##?}!KA48`wGQWc3+&DT_r=qG*VC$h`RzS58b96I`J=q{@K2AG-e-fn zoj#7sdO8NXC(W{<e z2H?(X2C@9R=*snt6M>5xCaZlckNd6!Zgf-y<(t(n=^Wgk9&kxO2FtJMAI}~6 z0=UYlCCH6uH5<_4C9P-oZrG3XOcr|Hujfkh?c{@O{VnSaYG+|L6!dt$!#JR4IltFl z%SSZ+o3&Yt`mO6V2os;D<5WcLPsnYa%>57-S{wBAiTQ}!_EyBIt77U`mhEpLZ+&9F zT4)BH@AT7;K;EY3)n@zF(Kr@y6!Sej$LrhD0}H6%HstA}ypz_s+7lYmdA<7kUC2Aw z&7Kr%z8~t-`7=I8&~rEVrqe!!>WQ{u?eDp_=I)xW3qam4E(G;>>vZG0$7(2o;q~9^AmI6P3m<+{oTjp#}*8xerRy& zA@Y!so?-1TPX+m4O9ArmwBB{v8}%jxa7yV!}6F}_EWRyI2)h-1$k5p$=BRbG!Jj8 z`-g; z{=-l{=E%2_lcEyf8r%frv73$^Rcb=pUAp=(^1d~W4-1(~$9L_0tbS4V2RYY^6G2a$ z&n1*kTyt~b19zIgg$;O(T)N)kvOtT*ABiT8YkJaqdi4+K(>UYN1@E)zrL=8o|9H$M z(4XZLjCwM6UbJa=pWcV$7Su%Ezh?Iw-fTKg)M&)^->iOt>9yulKj9>6p!^`~;%z1I z)c>6vW+5MX@Wj}@gJ`?hM6>=se1=obC^ajnPxA+CocU+O&?OonYk~VoVo}e8ZU_6$ z-|P%rsS9hLnO33`Hp%yZ$8N5J@-sV}JbS_A5%7kdt&q?5TCo3vt|4&4zSWS=v1oVq z$X6+F-|a1s&og()n0qo4c;dx-EML1P^6)b1pZx~yD&uAUCNC+?fMfptn%9f$OUrA44u1#DHW}wPEO^EgfT)vG|yEiP7sj2TcX_gDe%xkS$4q>Uz%vc zqiYD0Q^_(r!Jk|gNUW%);FM%B(yw-wVQPizixlivz{r$awY^3D8cA4j$J!+@GfChV z^MiGMxo)kBdnAGXaJcK3RwMWExYkTrEyqhr7Y%s}6XONZbmb{syJHNu;kX;BbPQEP zPOh@9O2_$<)s^xVsL`sxs_;GBDrxi=q)Pc@W1DgsD%dMc_VP;&*q-Uv14v0_%8p7k zuSZ~jS9dp=#g$YeX@{yWRm)~-v6PhgO!>_wA%~K+bX9Mc-!L0zCF6I^NFj4xu3_bR zg_l&^%GRchTdG7t;y|VwaS5n#rB@Rw*mQ*HqGX>VK`d-FrBa#2gcZo(jtdp^Shv1n zVU(Z(0qPsjARMjseZwOyGOh@!0g*-#xx>T^EDfI)~M1tfS!W6ND z>HjMK;^bCdU#2bvyD-UfJ-IX4s!n-H)hpOUr-Betx@oCATM#4qG8VNYr8!e7m(0kS z|1p;3DoCozrCmg-Qu{tuW^As&y(*c&R&DrHx*jrMBVV;GdHm0{Wrn5^q%gzNkP7zm z@)e`q%QiA0N5HRw*8GjlJjOEZIEj=|Oj%PwfRYMhg*+yB_({4+1*y^E#LNVyLdum7 zCKZ^T?zN-96Mjsu)hcLZ%+e|`FQ}k4)DaZ#TVl;~7fQ&ch+;`5t$1jd0;eG1O-8ta z6aO$nn$CF37*d8YrGl>Nmzt84n)2V|F%wCxlypg{$rQyla^Qi-bR!!xi4*yvvU_2b z-PcmVjVIy?<#)fVL^CTGcZee5Eamq`uDl;BaMN-DOM%3Xj;vbM?p7Jcuiz?v+P?YE zd#qAD#$%b`l6hAyPTrVSdf)BG{p*M@{3-}-ij%g|W7C;aGp~{`xl-cBUj?!NVXW7m zyj9hooSwUwl-W$FVAu8TKK@LNRsWBs6IHu|{#&~zRS@XP_6RNwb!h^+g;*6Gja$Gp z7746e5?HyzRw(cl2cCOpcX0w=nAnXkA>$s|UrNd}T}9b0-T|mYV5*>}q8geZRxX+- z$o-k9R6b-@CWt6FVYvYJ%P~w*bYZMYZr=%`VO~Qln*c^74Z#d7?8e~o^5xRt5fI=9 zeMm{3Ou7A5<;^WiRnTvVFpViMuu!X4uvg^|-#d_}LGgUDq5#Ou7CDDV+07IM`{iaZ z7VJhguNOvj6~Mbvl}n(N|Db>Tvh_**ncs2df|wh%VN9u@n+BBI`?K^3OeJ@iC5p>_ zapY{=KBNRQrHT&tKXAKI^$)hluY0V5h(uBnS78dxVk_CKTmjRp%xjFy(xk#IitiEs z(5&VE2fw>O6v*Ghp7ueItE4AX$-T&F_cHD>k`(fSB{y3^G-i66oH3xH*(e5Y1r}$b zXxVn~3eL)ipqdKDfN~*OfeZYYbE^D7pHonIVzM6sJU>BNS;rd3I2O5KO1}-U{Wlzo zW(M?@4fkL1Ot~Lc`1d;{GXyAgCxzUtQu0z9!#v!WsdzMbYM3SnWFGhuqj72|*myTZ zAR_N0q)JnGf#kme$$tg1M@waQJB^ZLCZ&jZBqo!#<9WFK+yfL$`uK@bsgUR58xY`C zPQ8NpmsAkN3n+gTQUy6XtxS?cOe)gJFCfsam5ueU)e|QScCfcCC#b-di9%u)U$21j z7E#bgViS0se9CE*HAAW4$fdavYl{=g2`dN&P)`rHZelVOB`v75RADk2>_EgY5mj(C zOgQ*?TEln-(cF^>cLk&@U`i!pDs!aV#}MVxtl4t9Dday<0_iVPuu2E*-|ox*Vic+1 z;REilPq!kkAYc4pZ}W;C9?$^8Se-P|DyGHUNNL9u1^tLP5J>|Ak_1uY<)f(5Cno|8yQJINE8}2t`GiW@uv(g%SK#VD zh!fRiKM~Ua|By16DTnIi7DIUBp;=>Sbp@|AN~)gpWG_CBRM5!08@b*q+DRiGKDrO zKa{w7y95wv&L0>^R2L{bqo-{gbE4mEjUPt{&Ruey+?J#?W{QF#S2oY4LxhTK7$R>n z^yQJ%*uxEGEs6u$Pl>y14E;%yv1gKO7m)dW31j_LmCUX?i$&xukILraOv4frSulQq z@4{Ebv8oV0e>+Zd|HYm{u8nyYo+BkCo+)z`x?!2K6Df|$A9BVF#u?R!!f#Abe9QhP z-!Zl!Z-A4L;LmxZ>|I$IZ?t8ei~oCl4L$>LlAMOTW63#K!3!<;^+>m$zKG3{`!-#< zX&q7g2X2m6?R$@$v%lNS@Yeo+W-}ipEwPU&6}&(w_oL_kJDd0vX<{{!&8hWdN+l*k zv@kR6H*rk)M<#mG=i}lsGX>&L7;R0;wcL-X9YA!W4=8Kcpr_%l(5u z!5^e4$&yHUM@SV_H<6#3WGm;004e!{+>oGS17h$i{h7eLI6_`ea#wf`#n-36Yuy#rN>Pk-uOPO_4;ADB<@-SZSe*oE z^WHWjr&__QA{RbN=g%^R3TxsWyYI7IDM&9!uY>o{=)m++>0FdADUvTk$Yom z8O7w1CART$Rmj$jjD>uWj4Wdb zS=oS;B&jTg)5&NEU@9R?Nrhu&D03OHGM5n$EsYkZ$O_A~M1Xv&G4_$s;4LK&Ze^&u z+=~m4>k{sy4zh*_U`#1{8PFQCn5mkqDFPU`D*yBVTqS@A%T$+whh^20 zm8mjn-5F<^!6lO(n>7s0r%%*lw0$f<5Xq9j31uaGaBA~)_Z8f2;vKq@Au z3i2AA>8>)zyUS}F;xzJ<$~U+?>Mpk#7`3uCVC*HQ(dD`Va|!V>Jqm&$^E^!zvz&_W zkd;qUEAfo)$D6ZiGk%Zo}_lTs%HuitbQQjP|rS0F&0?%uR zcaR-b{>F~dm+pu;9R737@f(l*{`9>0|I%Z>-x+#r|8t*A{gyfYbD!Y+mN}q1{T+Hr zhaOls{U4gP{zj~YJ8pmQ9_9b3So<6Hf=SO`dsXoE%MY*08^f&V|Es-7TE``W5!a@2 zZwY(5{K2<`YgG6=oSq8rFDSZ$Q2rql+*v4nF}Sj?56kGKtHXlI-?st1a$YO$z}%Pk zjUEaU&;PF;_Z#+tnd$#mdzla)Gh#~RUrL0j>mRh&|Cy(HmQ06K<#0G(nNoR!{bx>Y zYY=OwlKr?;$xacfX_bBjm6(oWScPZE4wbjFZRJJnDlckNc~Seyi?*q}XsgPLwywm( z?<&~dy7FgkTX|83D%7BD6=d5~LDs$svaPEi+o}q(c2$tIohy@YLfSyn327BH*;HQE zwkopLvWqLq-sTPR<;V0$5sG9NdBWD+@ZS5+D=n*VNw!rmq%CtVK=qfeF#mgAZdcGn zV0BVt9N7cQE1GQB%4~ctk?qH%itBT&Ux3^{2yfRUk`Bioc zDcM;q?z)bvYh}Bm0M+3skE*NEh&3ew(c&XSh0kxL4^%)s#Re{m~2zCN};J0 z7@uj#vW1RS3Tq1Vfp0-edAZBh30;=DKjVJHPuDU|dySNHOsU8P%6Bg2&>9MAQU0p_ z+uU1rhX7~-5(P!kyl!GqW}-Mj$QS)7w=9(DwsKGBk&z-ul#=aYp;2UwTkarFA=%kf z0CJV~(dvKFM`ay`bz;~J;lJHOWora3%tlZJ4hRB2jBiS}iI>AFsVMUAsHzRjjIT34 zu5A0U_4&DT5cwo>PA-p>7EGyRU6m^AF|yIHEUK3K_6Iq&S`{2a*4x-XQPB6pYEsv?_|vUMmgZ0u>9AUkF# zl1-|V)n(7kI!EcUVEVZnvTGevSJ^=n&4Ia4<(fv;MDnksvJJp2r)9Tcs>pA_re5xh z?f>uYzf_rqs8ZnzYs zE9*_5mBX3J1XgBwC9~g=ph|Ws)$lvtp^>C>IMy1(Fk8)!+w?FE+WHifwfusgST!%U z{_?;+D;K!!1&6XvlbWAR&a}BWr4V?ZMHi5tw;MQl_-S(Em;9o3v}gG!{dbqTp8?)z z{2AmI*T?Q3I+MAFM+TO@y^vqo`*L}3jg`P#I^id_&2QYv+81)2Sujf$te?hD#+%>V z@ugG5=o-L>%-(`}9!yGG`eb1<;EBudlicQydd3bP?#nE?C3e5O73H6uYoPAZoa*nG zz(@X~{`qc)+L9IH4MOk+akHQf(fdKEwAZ2r#V$a%G!)qrPh2}k*l1J_M$xrYgX#BQhY6Y3V+ z1!gwG&vXN>eQH&iyoJ(7SNquzT-FA3mF$cX%T3c6#{9W{Wx;wGgvG^wa8s7WnCQi#omag7YR* zp1BqM!J>|2>QlSB9-v2Ebv^2@cff1cijy6Ir_HuTUcY5fKIaYDoR<7tntwpvP||*S z(t~=y`z%*QZWPqEjp_aIz_TLR>uNIZ(8Un}GfE2KEcB>|V9__VrP~LU_HSR)Pc-Mp@aTFu>TX1jUMyF#S zZ|{Ts(W0mSs$)?ZJAv2fho6kM2(~+a(Kw3SNhZIH0Si%2@JNdT8Z){BkKBykq_+rZ z7Qdu=&-1{Wew&8!A#aMW-`&CNBtbS#zSkOgxb_CulMk3};yD~AAJ%^&Mm`ALaAq=a zNv)SC-)Fn?=T%0-feTbwzlyB6BWmBi%fS0y&_(&Et6R25R|m{VT6r6J+}wfTz1GtB zRwDpENGeKxkt>x@UVKP- zMU+Sbcy%8W}&6+;w)kFYw^b_fdcDzy#aNmeim9Yc4@PoIAGHoa6x@U-Rf7&G`2)LuHY~aYJnMO5*2l8vO zE)eCnIt>{(d>NBTa5#OY86)4e)4uc59n^0P0v;mYnLCPe;Y1e54|*{W`7S?kbkEd0 z;2y08A>aKiw}a5(CGg%;pCI2eNBfETP_pYN`3>^>hBh! zCN}n40`kc(C!+iXlQ(h2dGHN z_D4&#p2rs%Eu!simvXvH-m;pt^VLb-H2$~Ri2c!0^X-9;;S;2wN5sE{^0kYF%L+F( z0d6zI7P*%1qL=&DO$Xj}S~ukS1MPRr{uT|~&)WgHfvV=kF<-|5@3m(v%k8puu1zff zUZ<50a>E0MOume$2V8m69^@?!ez(x>O7k>dH_YoSTXwu=H?sM0kdIg}0Oifpyi#m- zi~`>HjRDJT(k`Uf(EMk}rJ=|j5<|5+eu@P7hE3S|w70*S|6WA%tC}VPl<(lUW=2UE z^;?fEI38Jgp2@W;Ql|N#TcIDycOOtVw`U6NUv9TIA@|>RCHO(@J#bz_{yXFW>Jf9b zvZ?=vI^AWtp^Izc?hzobyeJ5H&!WQO7OP9+Mh0vD&~v9fk7joTd9~hZC?EPbHg!WD zvuhJc<4xKkkKFdbWcu3`z*XPeK^{HnbDNjHY|TI^5yt8G~eq}w=Qzw%^~+! z)u!=NP~8!EeBS2hBM-wszh%l}h~-Bnbx2l62wQjv?j%%W#_ zGdsR;INfGFK%QK9%DD4G0r0xV4bq9j%+oBVHoAMO-d9@B$T~QVSk9iJ^!!m>+Fsi1eAaUA^jPCzOYTEGgFRV4 zTqt?AYm^`L^RAbt;dvJp>@o7({ubo@^0p#hG^?G%w!YLqTZ^)h=Up7vI(;+EXIc(* zL7u@7C7EnZg0Ie*smImWBf&(P<}_pFAm-g#vmWJlpQa2J8^f9 z%J&5BV!8n3i*jq;9JJ><@b0Z~+_x+mwYiP%bsD$p?7;lQvgqaR;%0~Ge8;YYz1|}c zZj;_})`On3IjX4tvws)xrXg&6 zyJ+EkJ1LX;^S~Z#f4`~byy)771|Z)x5c3DiTfBA#xBQrUPGp|GX&2V>jxt|)^my7| z97AWZeBQ07$$Xj@*{x&y#luCa%l7J0d+LmAf$|Se2EXaTrGA*5H5K`zi%Xr~J8XyZ zreCr{{v>*VQPZ=_z!*;4CBP$ts4R>QBy}}aE->?D34PMRB zdC4R1(R?rPGxj@P?OV@k^=kYW| z50=yn^y&t@UR#_G@^seEU!ysK#<%KwucEx3@8qu;lc^rjaLn_0`mKyse|Mz$L(}jm zl&{Bo739CG5$Lb}MhSU+^#i+x9vK5XeNra!M#7<5ojT43F20K6KF_Fov{itV#vfnJ z$td4s+dP-Iv#CFH8Z`rX(|x)nkBewOGP9b8yqQmpy9IA(``W5vp1?D)-~MIci8MH` zZ-6?=o8%qv|NM>4Q=*=+_B2_2KK4jkI?l#?#<;|@E;+UP{Bdf3fi27J9yVD%|Ih}| zZ*#Q`>bG|tmAp(!^9}X$MaZ2V^HekX(|J0VgZT!p{rq<4Cckb9dUOV3KEQLUckun& z;8@^;uY5s0UOOMW9+Xb+FPX=*MBe4PIK{q6AjtPlnuEOijD>55B+@vRoP&80&p%d@ z)Yz^W$nzFxpuGPV^}0RZQ2$9v#C(Pq99=`rIz|uVMef=tA1d9qMtf)s@F*RO^Stnr zN{&Uv=D=geOHsbh{Vir&+8qGidf;p1ksEXEy1t*zEJcu3=Uqgo}%Q&#ni2)&sC^7?Z+uzcGk z7t_l$Uuv(ywoCfXUT&R(?}5C*fh?3Cz_IISqMQqy*A(Z!yzD}aw-d6+3&P|ln3jw3 zIlK0}dX!1;zYV&@_Q%|NMy=v*x`Mn}G|pdmqk4_b^Jz!@M4-v~?U?EghLdlpgS?j# z8#l%+>Ax>@)IQ+WgW3K&zR!N0Sw($-XAQ^sBX2_Qi7DsaQTfc>>#?2_q6#kV%9{`J zb)IiWKD~k4xp|A+fky=HLq22umOYb-X#Z-($8n7}d+6J1KKrYKytFZngS&>S$fyd@Iavc}p$?U6|-i{kDrY+m1_a+SlJ*kOlJYUei%e z-rC15CjzN_j}x)T^K}jU{Y+{9%_>}meCgf(FQqGKo>Nc2>R-Oy{pF#e8lYeNy&B4| zC~(ESy|1EKI$k%M>x6nXZn!e-p=1WghkV5R zkhk$pvopHmXuMTzqKxueS2xJr>Qx8i`xq`lzTG}3V)2Wol*eP9z}p#R|L{X~8s7rr z*toRYx1qkl%-JBHUBLFQeH#X6=!^&j-qze6^&d2zK5a+y7Qp=@;*cN7oH)dxdtKmy zv#k8l&Px|Q^eqBz5Y-3ekLC3}>=^bPc>D9L-yYu)|HbPjjaPo>Sv@D0YEKy-Nb}Xq zSQXTBDs)HdF9uUVPp_VAJUsQxw29xTV&G2CSie2(9vi-;7xjPBsf$t1=|w%mdxu7V zeEs!Hk)LTF5HN1;IN+g;b&#JQJXG6PF9CS>#g~y^5D#v6eKHrgzY6BzybDu}_WB(V z0QXvW2IVguy?$cwINGo6rn2$pa?+yqS%K8w+?TNabFG`>Wr@)w&|`IX1?stLJb(VW z0S>^kwAk_V{;VYpUOk}WIREZolz(U!5xV1J2*_t99zy=eV>;g_(*k(!L#+Qi>MfEG-psu9D(xchl!us>~NI4SR!p zvOpj8)E#|E)Zrf*A381FguI^F?shrfQbE4gp1mypYH!^;kmds+Z5kps2+)n(SB>^- z?fu@!8#Wp@bMUaephskn{nx6=lbjWz<2264+`;>YRwm)9cMJE@aYvkv{$|yx9nU4f zJOlK&tec1WTg6{qli0=>_~5r}J=-?DaH6|p5O9wTBT&A5mqXolU3~yt^ZIy}$G5&Y z{ER2?gb;J&9WtL8b_*B)++@jWCC-A+A4p8l!Zhwgmp4_3okA|)p(wc()OXqzqa zfqUZz93K(|TxYid@*#UVCPeq_1Khk2^ChccPWm^Zt*25wC)su!(W36mVt!BHk|}pk z&$ve}3k?iM1NSP>Kt8oYN@VMnkAU;d#vz|!*5+FAh`zwn4`V)HH6z*i?wTRPfNRd} zf%3D?UR2f?dklEM+SADA&dm}f!m(NIB8YT@zm`N@oK;a ze9%JqWg^qlcNS~_9yrhu`HHkgt@c!-c{1l3Tc34;nU6kd&jEQGuhuAEID6Z$uU%-n z#6>h^`N?gEeM6i3z12!EaE0>vEsR&HFqAdHcpu$hQe6d>w1e z2d*4#g?tD9(9oXf#)pjhVpwSPUQ5w zMB|V3Qk(}_?H{r_UUlz5kWVkC=fLu68S{BCt&ini9hdtHHN&t~KB zm1n*BEU8BGH{~$TvIDGcr1&2SKDZ0y?eDPh?XEcFO@}>n{B5qa8|Cjg26Sn&>IKLr zsj&V1(Yi<9hA%Y$E~tJ9YQhe zr`OTAD!$zw<*V5lKC0FC2*@Y!KOwJSe9|j(UncNQr{A(XZm`$ple9kuZhMDZW2N}$ zpyAYRjm8Hf*W7Ng;BHo5(9=l29?NgPJ{aDb<{=UX9Cxg>xP6s`)p~*az|9R%UgvG0 z#SB45;I4HyAlEfLJoG>d8s8GS79-aaPL3Toi}tTU7ZlM0x$a7tHrHrTJA8!5HLqwa0sCS?vLNno^vb+*c=EbB$SusL z_Bm5}pQmp`0LyRP?li4G^~2N^X2>o3I<>WEO8r4+BaUm<)@u*89`KUJ0bzIcdTqLX zJb!yQ&Bu(!2cjNZuSlhl5kb@rpRXcsGcLAW9S55KbB~Wl-nP-v&DRZRe8^ma^G9oU ztMvy*4S5E7LdMod`A*FY{SBPyydzbL&qu7gPjM}&pH17bYXrtI>+aW_Zfks|@o-2x zOVkr6*<$iy#tzW$rOxUPyDVxqHsvF5Teb5jAD&XnXi@1ntE#aNdEcik`|Ieu2l=-5 zw<8y)y|t@z=?if08yMfLlWh%Ge$yQR+@vqROup>j9FFM__}kxq{I$Se3;eafUkm)T z!2hrX?8y1^NSVtN*)?9J-vV}F_Q@t+UlvBWio{XzZo(w;eM_e1-1Rbx`brP+N=)O6 zgwa$qP>_-0kr5?GN+Ij|$YDyQD=TF8t|&d49wxJDdO1_w#iTIzhG(x)bZ)k~R1f*K zY&X6TDol>!C~Z`9VCl!A+2i3z@&Rc9S%Fm5$`&w{T}29G-@Gk~&dHwahst&mBnl+_ z6#5ZxqJX2M@N!8dOQnf*S(_=8S8zt=B;>cAsWx*@IE*Q>YeY+1$dxY@M!CdF1hBlB zh{BIsRU^eQXPZLG7^cXsD=ItNPi`l>oTpUKou9(@79_@|^!*e51{+k9{GLlH$K@z= z8`spB7=c6(%^LQnZld%X-K2__ShiTHYJIqh&BbLtxXbNC3b|Rrbyir#GK2hN29@71 zgTm|aOHD~iP5G&<71l_OU&t;|EcGF>wTFP8Kzk!;_%h2@#yP8MPjANk{YW7;<#bY5 zd$+!PNuby@GeuB-JtR4V4W+}Qh)gKcXPI9h(@r_0kcXJu{%e`oBZv|SlcWM(lvpC* zkxkD8l0?3U7fr5Jz;lU|rbzfvDU6i@31C#Hz_rLfirH^L%JUIOrTkcdbn~y&(-nHY z;uKGDYGO2Y%$enn6H8--JlMy<*E<0AT>0VDl2o!kM}mOYjeLKTsod)F$I82;vPQY2G;%b<)VHMoi&%=S}L z_==gfa~FtG_)IHQ+6{l{5{x$H3zB?^P%2LRU9W|JR8jqZsJ&tzXKVp$KYyi*>5xp- ze|=)cWMzI2ekNZv?Y(pZqi*DL>%Z`Gh)VJ`(dgktjmjh|n|{?Te~vWFg+WhIdFlGS zdQ7(Qgq-C*UOTF_Cr{;+#Ej>Xk%rTTDYC1o%X*GDAwiguKz8sUV({aZ_L$QDbtihb z-%-^bl*duNatF!vO9Rf+ZT=@(9Z^{PZ<)Bxl=My*FZ zQ>$;bzW106=H%D11n*=Er#V};NMEQ2Jn(Hk%FpCm#=LDk9C)Ka_=bgWexGMb4W8}> zZjX@MXa#7ZT<0{)g-tR>Q@)gnU`8Gr8onT)3F37jF zIb7Vta1hA5e}9R5k8pRZx#~B7d(6N)?!rCG8#z5a_#L>!5}zOm_v|t#=orO>6%HrD z>LBVVx_iZYSWF$@E?1f(Kj=Gp`^F;Sl*-Eff8rpH{=)a#2fh`+p8-IljxHf z!O71o?>F2l>^Xf>>Ri7C@}uq#{5AFIon!ye7g^qK+ySMMv!FluNfh#v=REp0G^h60 z8C47Und27^#5}17@;QC*j=QipUDVa!(tO~NHeM)y!K+|_Apat8;|^@QU(Tp+X4rt* zLAvG$%3p13oo^Y~803R`S+G1U@AbP@{{U|%#3x0=uABLPyJ2H^=m(Fb$q5PwaZ|22| z=o6UUxABRS@UeBr`6uV> zk8N9d5ajz$!Y6ye=V9&t=`Esmh;GHU*9-fS2YtNVKwk9;+kao(KNM$sv#a|qlyBU8+u-}B zpM##L@8~~qM)kuqQts2Z)Y%^G8E16lu$6a%MIb*UO9}NfsW<7n($iGn@ndsY{#bX@ zz3`pD2WlKf-l7vfdD8aJz?(P~A#Yj#uEBBveM0Nk8T)Ts%L`+kY2PRY`HdV;rSQr@JzSJ%ld&_Me7& zoS!wB@VKiw$S2usM(&btr~D{|#vj4ZddS_hPAt>AcNpZ`wZS)!;yl-Mv~Jd;J@DpP z_$FGM?=0cu*Dt6Zi92i0Ztpc`JV>JPLG&Eo1c~!^9uRp-gQSV%SJ$c&o;N`K;#&th zbKnEgS^ES;yqMd*OAzo@z5259XNT>v>O$W?6!Kixt3p5iIT zrfsHv*f$E}TU^guVMDh&j|cgX1bpHe*Xv@NB;9Iswx2ZXEb0kcb?|HdMNuFh5yAR% z_|e*u+o~Uc5897UKI5Wp4sAH@%01w1A~BA|#V1|%dJ$0o+&K^9SX@%|*>BV5_yG6q z{STfuNv|lOtNV1|F8%OLy}0CVW`U7!JbfQvYHkuQGJ_r$A=Yrxa?;kX=^XSj=dMQI&yUY8J*&(~VF$}NYsd%qKP zkry-`dXld*ALP3p!8b4B*7aF3`n5N`-Uc<;IA1t@#JR>(Y21i!iuqey;jF#spE}F{ zJwrlSf8O_c%V&Rn6W~rpdU)OWJ{(n?IerfkJ zmq3ro`!=ZO=-nPX?piD0tv9z%ZC;bGF! z^|ZfuHz+}Ve#=p=GakWjvnaHg?I$ceFodPeMPB=PX+s*1(|%&a0Dv{XL$$ zbkxqrOI3ll6JdOaS8AKkC!pjmy{@LLyy|hADW+TLI2*U&0-m?pi;*6+htu(B$aZJs z)%Cd!+&4QwkFOj0Lwt?9_C?JOQ~w$KPz~iZ?PAQLM%D!RUQ;m6$7`j(xN*U)I&g!N zm|w-$ud(C6()%=z3eEFDJ@uuju9p_l_8nNV1$kq41J#;gH2!3ImgAu-LxYFT2K^cB zMxcC?)V<3uYt#1PrQkRc-@KdYuyNIHgM1>p!YST7pm~hVfVaSNL^zJbTbSJw6f~#x z9I}20>bH2R?B1||<_}pralRJMn>TAu?=LhzN!ZaC<$3GYaE=V1e$`ow^UC;E)s;WI zpWPqM8@U?aJc@6tad*mmJ?fu=cj!Oy4ht?!TYmpA$hS(~i29vs8MeLktP}9S??;il zdrY>`OriN_n--dBgaBu{@kaErZ@ zkS7#2f7`Fv6nGaY_UrhRYO@*{e{BuC!=q@FPwl_DL+*5%KbXg0{vV$q)-^h{@G8iw zYhwNopB34{WyN_q{}L{Ek9x9-PH2`m(|j^Y-vIf5i>)UP(t8Pd22?A<-{S|lEqszJ zod{gx4#v0mAwh#VUsI@^d%EV89S}bxB<^qz(`1kzbOH0^`0Te@<_nIc0UsQW<3jw< z!kf~t#~Hx6ML6!n59_64Kh)U-xcJBw)IVC=GI#H^MBuRpFs{Z=xW!%6#OM_8@F2YJ z5kIl@c$2F=KLKwtc?#;8=#hBUtWG`Po%cUQK1svp+GVG~z=bXAAfH+7OQ&fbbiURu ze;)EV3CgSH7%v2Q`!j4DnDc7-@%n)WfU9K7mU;;&f?fDieM<9__o&Ponbr#u4Q$gnr+Usl4;+tTwG@TTkzSn*-Syltu>aN`v%k?*>C#z-0?1fHDwkmV1ad89X3 z30%J}Yvvwm^WKZCcmN=e@G-o&5db1DB_cDWv zQC{l-H&*FJ4`UgI7 z9Zchlf6^u7R$AMh9xG}A@*WH3uzYLH>D9h&1D;}yfk&<3!|MQ^$-~J4o~MM793N zyGB0yzV*dk(9?M{+m2mxmYSZ-rg4dr#$H#~VN>tC)2H{PlbUoyJ^oE!|D%4g7U0Tp=yh_=XrFp3^a}9Up$m{_MP5n$kZ}&U zr-*IGoa@$GE*8>$)H>lE$`AE*GtKT)7v!_1gtI(HkB0{*=Y9un^%2J@(b(w|wOx|w z_*ge39p%TKyyj7KA`0Y<>qN2q(&_ANhh2a-h{kb2G-3W^+XHRseckFiaao%26R4RZ$Fads|SkW zmpFpFhlae7WCmTxO@w>+|MK>dO7D6!d4WoRlk4_Z;!S zX_LdE)sdUeA5>6G8_3lG1Z>Ue3vj9p)){Q2!3eSZ4$G1Cv-N$~xq zJx9y&JhS|i&pI!>jLN4z-dyHCdtLLS1O6uPw_--ms}G|J%BY zAK2-eA5lBUd~ux2f9W?fw{7`>(3>h(?IH7jx7VkWDtA1E%6G;0lKHQ{xc>_mue_b| z_iRnc{68*O{qgwD*C{_Y<$W*zfou0U_RuMm-*@|-GXL!)pqcm8^Q?e?b&Isd5m z1+x8*#=UjyGjH}%J8iQsm-+vA}g`QFW&o(*@IzVRMY#W)wA{Ha%d+Ks<``>#jQcnY7TW&TDJhpkyMS;&W7 z+kQvpZ+zH+%NJcB;{Qy{}q9?W`-st}lAFK5)#cTXz@qe9r^6kma|1 zc;zOyy(Hwo$)`$u?AiX=n%_RS@vo_!ao>Gcmfz#}9Y6Zy!viSae)IvEzt=rG|Md8W z1l}F^-s>`d{5v&o+Ve%fo8I%D%%3p#*t0&`R?yF5Z{AquPaOU2;eUC55w(BN8}fX) zXWt{I&41>yZ76@vc^Ap@HH&Yn{On%ZwT?_^oNYg7BgGu9V+O834$^78+_=Qj6F|0k87cy>nS zXS!M+e7o={k7Wv@cC_jcgg&v?@m04%&-HIEI&H-@2UGt1W9nu84Wsr-?bvRM z^4Hua^KTsa`Xk%_`9R7)sAfl*f79yik9~Z{Us8V8!+kRUrz1`sa>vG>QT`66Nx7@% zXV*=uyZNC^FB_7wDI-39+A^Y0%r`J!F-7UQ4X zDdnG@2ljpEoYh$YC);e|(Vqtzvd@3M?OxPx`v`yn6R+EU=h>8B@w&8M^*na< zKU=Q3Ug#t9_BmYk`_$&=+dI8|C6(V{%M-o)M{bU<{_uFp&;HA!8>@$PpELAj%8pH{ zI!2aXz10qt9f$pjKCHK?)JkR+w@J!@9+7REdQ%J{+6ixJWcs^&psmapFi^V zA1;1m4dqY1D<$(^8S%#GZT|6n%Afklhcf>Us}7!iT*Y$H{^K5pNW-WQ^RIzUR9w+6co)5qCe;eJllbDyahsPH_+HlXO zhO88Ly2rz}%JF>q#n}a`cQTDzlUW0`klulR++zx zcK(r*VvVAUo&#KEWhnu`72Kt`+t-_<*bjr{DpVEG_g(a zoz6xnU!`~W*3Lg$cx8ghZ!{q(%kTKp_(m7gQ;`ta)Z54OUYRFqPdH5Qm&_4MW%;U( z2S-`A2zoW`pEt|=y_fBGTFdc25aStslFT1{?ez^?E_$5u+vmS4^T%X=ef|e;)KdOY z*RCh?t1nzO{+p@KDZip|vdo`2^7aR}|BcY^4twZ%H{bm`7TZn8lvMG5fBbI+{+r!2ed@e=G2HTLBPutoe{Y7`0{xTt*UiVchFCI7_SCD@IUvNTjPlCGV%W!&-Z{ z;mW#W2y1jG3X>?fkH_SHNzc9Bk?YSEGV`|mtH zdgh9y=MO`rcs@3b*2_IH(Qp2I0hLv13{r+44D(Kfkquz#!c0cQK-;Fc(l4ealZ|4dnZ?C~cL%7}Ffs+fky(XsA z;9Z)7d-jE7dor7#TW3Q{4_dvPSJsWJuiK42fT{Rd2+&I)WiZ`}dsP}&n(eM6-bc=j z8UwXrmhs-Jj$*PJR&suH_Z7_x|HNdB!C+`;R8uaK1sEdzyVCzqr-SKE)QGy4nh?Pk z3|;vNpZ655`cAU(inu$7>E0OJMSvx&#C=!{DT#?_mY=X7lW0UDmF}9IZnhKNO>MU& zi(t@Svmp&v@dZ^XCeeLJl{SVn5>rVU<1#AjUW6DK7KxHYB{rd{SZM@TZ;b|DU>{7H z1zS^DdTawGJ|$RV$$f3Wjh&i84hC^e1U$vJ0N9uYhs@KaV_MOk>8a{U7P@=efZM^9 z-c(iEE~JueRa2`M&a7#wsYN?;{5KaM6>+|#64^xiqNr^Pw)E&G#*3KD2b% zZ5`Fzhg70F$9{lF2OS+ujk;7K-;rQGwB!pmKPsrvp87E}k8B~|$Fx)jeYdlN%4XU# zX{JUCG@jyWz-a9xSECMuib9TQ3O`hHA6l{yHlmZS(bdh?Fm>Ki=*stV!^M3{r1(C1 zs@XNnx7qv}!rF46P-pBLw#hCqedEUF*ok-9g-(7NZT8|`rYQm*u8%reTnV;B_HSj0Ak(_jWw2P?uYdW#7+0HS&PLr`bYtfi|fmAAP;LEk+bwAB@s z<(6^V)RN5;wMAPf19iCm3TqAg)0dlUE?`Hp><544EJ4_xO|V>|df;Z!($!|5tOz_wZhC;REP=s3+F2R~{IG)q&^jYo$IiJLE!nIAmk|zGP{0r4 znRyUN;)oc1;IM-}j5akjhWkJm$ZQ~zR+f;Mki5l+8){ zfKNu6TWI6g(C*H4FcSxvz=Y&oc@A(vy5Q*~U}mn9l?kAW#T=f&qNnmK^@gUpSjfet z;^x<2+jct#Be;Q!IRK>(+?La*xTOMm*v0h?71FG*M=R3BU@YukTaM!cU=p$W3`{6p z$TCe~=Y8Bhp%lRi%rvSt1{839+@eDlb_Yv%@PmO=*&So~(b_By5U*iZq&sgAv2oSg zm_BHJoOn^!Wgsxnd4bmmP+Dh!$0+S(vplD(Bdv;Cb)Y<^{o}b442lIe*r%Qx3vM_K z4%AT?Vs(qUY?j9}+9wvt5tmt5$Yi_N;le(3Bsq8^n!Ai&Dt1L^Q2jh8bn`e+$QkB` zAU(;@_cEpnLJn5k0y@c}GRWRtsUA~P1|h;Wi5)g89nz>KFnz$H^L(H#XArAUq2o{h zyJ%xq1Yw6I_xOPq_Od+Zr;X)EE-|5MW}ASWv9c`8o5!+LqN|$g0jAfUX7Lhg6gUwA zyXIN~1&J4BkwSN|Xo*SktxY@<}%)yHlIN(2lL z))_GXfGwTiwiTh1$*+U0U{x2KHrF$*6Nh`SvV|6Avr3f&Hwj zkL7W&7rcxD6uq6(H(=d-*@+GQIl+u|-(%Vp9VUDeb~%WLFYM^zh<(${D<(#ssaSK z9MuCzH<0waL5#(ws@YXX*Qo;*jR(b6qy_gpeAt#L<<9qAaZc{2L>sFNM+I&VM)^69IS&WoS!+=$mduZ z4g8Eh!~vD2gH=|shJmG|Sww>+F<2W?iQZlgbjh}5pl&wHWns?^;1i&sq*>Ync*E}? zjf&ktgk2UrvKgKz!AXk2&VsCwYYGHVgM1B^C-x)-mfc{oF`1-Vx}kTDDj~piao|Hs z!ch#`4{jbbDz+(7t~pWybc_@CKp-(JEQ~QZ;}nz_3klvcxSRnc7xZDM~=%v=ZkqQ9zNvQ{lE|0 zvSU-M3_}ylv7<8J4K>A@MuA}Pu#26ulq3%S7;*)U#I$4!g*-cR05~2P z0CAFB4X|kPdLwkcIM2z(uq2?wFpCK07M^*as$$ynT#l1M;aEGM2DgZ`wd{Emtd$8w zbGf#QfUy-hQ9)BCy94e>HAfW*thsT~9w9%W`-N z^Dy**n9j`u7)YPZ;S}t;LCAphZRaoq*J=#cN1ahDF=0A3m19R`f-I=PQ!FHYESZ5t zG>UdW0vLG=R@df4B0@q2qi9Sl*5Y6}vII5EWQo_zaiutJfXs`fCA792E20k^R3XVQ zDES7uOHHvLjl*Smlu?N>kv`&T>~Kxw708l-gyX1K$VG57%!6llFmnUD11!&TbQfwE zv`qkp{9+ESOrru4!;9Krtmg$w*jfX%qRv?)09RBdA6n{SVcj^UfO!LD=jM&u#PJ*G zn>V=-Z{}d6#ke3QenTM5aVY5AV7)Q&W|PbZeek@QXcgxefux56TxiL#uOQ8v_$jYV zLsKdKI1Za)kppZrysH7$;B+fkL%u0Qa{e%)U@()SuMewk)|u=lpp^h}Fdz*x=Rvv) z&hI#=LQq(2kaZ1e4BFngHKe8tngp--Kn-3UBPT;vW(PQ2XaH%WvCv?a1CtAHkSv%_ zo`L-`s}3Gy>=_WukGDs{jsubAT7nf}Ns@^aLl*{X2%;Icge?UF2ZW};e!>v3I$RLe zDiClEW2k`>XQiYd^Dysqf;Kj8f^cGG;2cIxFl(^<0Xi+_&(Q)-7YfTb6Ev)D4=aPx z2X@Z^HTzkdHJXQ!^cZUxs2G1VOrv6v*(9&e%)?{7tXTkO&T8fWaJ?+Rp&)NqlEwKf z1ER1|`6Z?g{PhO(V>Xg8PFa8@$+M$^4+g6s*ofL#XeVB-mr+`J71!%av!EYZxdTtpfO5+KTaWhQ&3hsFf4uGP`3w5*^hI3|RPqTq7nfu5K;i&Mn9(BAa?%YP_wc(xcli(*&r`cZW5;5qfO#= z4|P+X>f-qqHw!qpHTZKFofnMAZ@LSDmO|d0(u6d$goa(>^?2e?9HisPG%wWw$L3Wo zWOkhR4Mvg_FH$1qVW~8<#A^N|ezRL{X7W6vMIQ{-(-G{insJgBd^r17ANfhRvkW3d^7o6ghV%mjyL*%9T z=M`6ndh;(g#>NqWaZaK>S{I1GI@9JtU>)m8NDpBuCw`WQy2Qomasy4N(XJu~!MhVD z8Pxjpd5KiABT;~Wd0s%P=<&lSqFYcuEj3(6QKD?E@J)p_-A=bdM7dnPYP!7?cEwuh zE9OKGGXwEp`crB*Z{BgMI(;c%rrzTVO{BAqlQos;(>8`>v#5S2&*<3HxZ+r zAA;#(6G%WLIrvV$_=#=(1)xF{r;G#S+GMud&UrZE)a%5a3XoEmZpWSs;4;JRpJ%rh zGP%Kv`PPq+0*?k*@Q{=BUX%!oIQpTH0=|U~;8qe~_3)Na1IgWuOKi8NlG!|j0L|p= zDxlkTE}Z~|0XJUks@ZJ|VVP%TAWmLy+6%3Bp;|AK?@Cq?`It4c1(xC~5ZSHd?lshA zdXOgo1mW(%j(>)*hi`{LShv`8!afdi0m|!_B8bw@3V{vC)?#@`_+ZB(;syqwb|IRG zPyNz%JByrzI)Xnenv}ol?B0Sgj^R@58y~*u#$;p=NcCpgaIK`<-zz~Nw-U|0=|Zx{ z7M!5CUN3Z9u?M7`F+~gY2SbgG2#q1-g79F5GmM1$QE@aP2`IhR;X^*cMhq|6y~{EO z5T*HR6(lw?E4@M`mPBOTV80Dbi9)w4|5l6!oUuNE^Z}+zc<$##Q63f{tSO0me$pWt z12zmXhp*!Mo0C~&ryIL+^|@RoN1~9w8PPyK3Vpho?~PiLw1m*g-(5qx55;VMDonYD{FW4H}W4+&Cm8 zd9dmKMsj^Qq#t9VVQ`eU&dw$KNXwWC5xiXe6aGMV|w4tsW5=f;LQ4XKpfl}HJ3skqK zLIjW&3u+yR`?4=2{Clif9!i4o!IOs^!C$lyI{@pR1?ePAMt!@E+TfuYTZ%`(gm42r z4+j=L@;(;_7+|b~iiSgnA4c9ModO;(v)&8@O8{QrxCUY^;6%_`0~CrP2FM*afv5TU ziJcqT-!P~^)Ck1~zLxm&A%YmvafJV~jGAygD8fBBLKN^hj(tb}Nk9f@eD|cq-8PepGoKXAqC15tJ0MbtNC# zA5vP%U)#acqj2hgCn|)Qp$1}d=MwD&SC_yEyK=F0Dgu#IVu=`VfakDN0qS$?r3EQR z;*Q|Y^1oN0nKO$kpb{HH{ks#B5rqXpCbIcnIC)hRc2~eMRy0__@(6xtgeuK2rozDf z$1vb|8C`Ms`ZA28U_VisDnzFV2nr7A46^9ymamG5kAHq_?dH~tuYZ!-5$gW{K^|W~ z$5)hlLhv9cMn4zWOP!H;Jc+oGqgObMEDI0$^it*jM5X^8$Vb^1U)0*)D9!-DOv86L ziq6*@*pYvc;?fBJ#TM(!H4n<>oPRVUXwHHJB-ff6PU*s`LU-{C&D`TNQ4A>1bVzeY z1l6yUH6x4w7fIBzT9Do#t+6p(iHb7E+XbxvD;1QYpEV#llfz!GfpjS*TA(13IR`Y{ z>2?YpRieJ(k9b)}dXX)MPIoupa8HMHJSO9jLt_FpT89O2tH_)AUCJF*OgS4zbqA!I zFa=`-zO>}pxgtKt6o^1Y*0?b634_JoJvjPPARUW|#A$BHU`+?dE>UXNU=(Mah*|Ra`^!!c1Gfs-dO5+wSO1;puvB%BKD1 z!5$Cu@>Pv?KA!;Vj=x!XNa&1&M$wo^L+KnLCf{t%&S!da@UCE0v-2-0ar<%5UpU{C z>g`IVX_K`M+*!8twl!wb$wEe$W%)9NM4>lNM2h`h3x}X`RAilCi#6qJu>OL(gqT}|a!I{;gQS+TYcp`a0`4Z{i8g9g+-Wy~+R+IPO949P zl0+e&Nmn^K_8d6br4w8_x$Q(5Y)K}!sA>uv@uuwSkqEOL2`B<+bGF*QigFeLf|@d^ zWP86~fmY_|LIOhMRL}r3Idm5pO0FX8Ae5Dt-X^u(5EIX?N3;k4RV0PjftgGz_TWg6v_spoTOAx zi+&dAjT|Ry4mz$s62apXSY?^kVQ zS)g{E$*x{OH63bYMnRYGnK^>jIS!I3Cpi+T#W)+kVCRvIhID(5PE!&oz)p0GA;xFt zm>GEuQyFbyeu60Jrq@{`n82L#B-+`Sbp^r*J~+G=rc$!HsO0_mZLEzCns#BLE#|<) zIg>OvgU~i})p*eodoN(W??U<`rqG}TZb-t-#wz8g0nJwUWf^ZF8{7@R79;MIUt(w4 z^&r+YS;juVNuLb~CCpPIs6If4LPUV$v^X56#R~>CSdcv7 zQv-d*h6U37`oOPK1HaY;er*c;+7S44X5iO@VOHw|`jXPVn7Dyh8fkNG&ZnCQSOOVrQDA%IUtdM}+-;)YJ!c|sSK@pe$?&vu6 zbNJUsnEXbqVvHtCc177bbm6E?fYFxPiYCPQX>)O3&5pdL-Gqpj@M()=W5i*DTws+; zX0TrDYd~f!;I-Dqn8Fh)npy;sI5t9AB+nJ$%eO8FUv|_OV_8K1ITKF`pk11G@tq8b%$)R^qT$)R;(Dl&IOlb zkNNjo@SkDRezxD~Z;##S$o#{(naJG8so+5v#!5_nb8RtRXgJuI%;({}#Nn_wl*-WJ z(ZECFRys=Q)7ig2_L z5*~N85q;+*b{_4L2DB}ZKO~NY%QqA^jAS(G$BR*#$=*P$U*N5);Or7{Ph3 z+}*wpCm?NOq?L03CMGaHS?F$tfWDyc_2Xo$@;npWv4&VK=mc$Jo*PPN=>^9Zc#tmS z7WMmOcqvyb|M&=>G zHQkYmqH!{qNNlf&ww5sw%U9E!brvkRPL*ccC`%X!6jdB+Zh$A9XLd$qqPJi>62a^o z1e5SkCXWxU!A((9rQ!qw!Gbh+IR)Usby z$_?z({OtLAHh>8pJ7g_O?}`oPo88hZ3ga2l9E8@LFl;?us`C02Tjnu-BGq3>)7J;j(o^<)c(8HX=6Egnsf}D&4+k8&Xx4m$?gef| zju9wef4x=_v7GW|&~I>o8V}seJ{2?o=s%Q)nhU<-NH72h)ZIY>Ug{*?Sto^1m`Ch- zfdl}Dw^aUy>A+nBac19UfiGCjcGeh}J>#9}f|S@nU3)fD8c}*?rhSp0%6p^MTo?kD z*{dOGZKxB8fF_-tQ+-Vtbn=dV$x@%_%3qNbrRRQDkbka9fGX>h>2G&^dTne4RN``c5t z>(3ZKt{gy;RqD}O69s1ww=qnOH3t&-ELt-|oD5*CDEcf3#eRFp+%z0`qf@jvZN-+l=$Do>s+@Muc(959|tqa1?lK_nM z`*h=w;fIl|tX&{&i>aj11*=5CrHHnnN+QyJ+!K}<8I)xZO%_DXO&$77Kf5EaoDT_2 z5@&=0MJV{C-Lkm|hbO}bkW(6m1oJ`4ckU+*&<;s*2-k(-wlakg_!|uJElefPqM^`# z#m%+YM~G#WFd01F{X9U5bcl?uhdKU1rJM|*>B^Ggi&->w#h21-SsxuEgt%4-pkDrK z3DyXN(!(Lm$7HW|%Q^Gy|sj8c< z9R&@imEgKF1T;04_wF$Zyr3J3Npbs$Yrjj}T+Kji)w=0UVd+*&3NcqJi-DJ%8r^loHV*$xPc9dAd@hL zrVJ^%!4#WRGXLrbc{x8FTyP3#Pw<)}fyG~ekJ)AzqF7OlQ^x~cm;(0@qOggLxBh`7 z`|ptcf+;Fd#72htHRT|^zg&}fbZ%0b2Rt%R&2&_KN05LP8xq(*a;T_tI#A>CBx8U+Iul-n!}|vD`-G*=)xk9X6L0D z;KZcZ8j5(%i*@?2=gT3X^#9{>tT9k82q3j%Lo8aFB68Ln5e!nsjG=)t z3?L{#A`TRPQ3HQr9dz%CEr)a_rcfvZ=IV4uBG*9_CJ)tO7TKIMd4ldV701JmD9>Qi z7vuQ;1?eA{?om%L0!YayaWDy2%sb#h20Z;Kd_YZvtD(-JSn|*?0?iUqmrJvhLCIEK z^PXmMQzJhV_lZD#Y)HbQdPSp;y}69c`&WcWsBI<9KgzEyqSo7dic$+EAKK zBTAQ6E#TTZw8JfZFKoJE=t2AfOL(5H@0&HfnmoicDVX_2F`AADv>Q2AZ!)^LTS_BT z1|}^~gK_4d+Rz-!ao_-*&NWCb9$>R$@+LcX#N&oY7BglPfr@VY7l_RVK$?gtNY*b> z3!u36tA~axh@N6W^c3qRBiBS8+mp2cdvYRqb)x@bM>+z3wCKd_w)0Qy!7nK z`<|G!Vcmj_ub(*E>ipF&wmAK|sbk-}zwd|#pTB>jmltJc?sDtGpKOwN?24!Exdqx= zg}?`QvMsoiZT&F>@YUDWP1pAvT8RxO)0DRHaGuf)!9%L*YioOReImYwp#bThr0Hk{ zbO?oxGd+o<@|=#}4bZ^kbKdl!|{p+H{0)=vuC$&ShMbK=VIIPupr1{dgNeicO)?&E=gO@hcNwWjAP{L7-x{1Zm zxH)VUq}wn>5a41PmM>N^yxQS_uD^(#`?*1AmGU9b)It(NpMr0!D=SJ-kg!8rFxO<_ z7RA2_^W0LLXes-!bF%5`vTBK|G)!Mp5*^@)K@ppzKBwtj%DA9xQzlQ7u7&H;faLwM zjwVbhb?WTS1l*u^>&?w}K+S+yRYEe34+y&BW;Ua4&rFNw3K8OtcN#rLh9g6YpBV^O4n``DrBUxjwwWM*F?wBPEiDK z5(dcH6OuRz9zN^=6tW(N^Z+KKIO(Z%C|TF~MeCveb)t1RAsLpjf=nTrIPK^J`Z5_8 zH!BWJd09QGruQ@oe^VfNFWvZMRQ_}eDrrA_>BjmwBv2f!J2hrO1`xj-SpbD!$Rmzr zMI1;}+^cdxwytYI5tPZL&iMC}0Vg<)EyrAWl-p80T*B!0+pOdiROfwIgi3!=R|wRO zMKoGrvI^;Q(r6pI7Vvsu@j8~Sq^|)H9I=_!!w3;iLwW?0N!oJ77KIRs&BInIOniu` zr8&zhw2&z}3hZUc9(=eIz23DYS1RHbDx<>j!0*=xoNq$<114gA910c@F3u!1+=!S( zm7}6_-E_aTswA0=ZeR$ssFgN#5omEsC&?1dqsSCxTrydSvpc}Hm21Fy2Z1;bi5{gS zv@?=5(*spd8(@V%nX4Q8DCI{`7o!5c8wG(-cBfxu1OzhS0Y<@9@Zd|rvriDuK*_gm z!=$M)VTso$B53^wim1;+G}&BlLr~!mah!9~>?kh|Xv-!@v1=Ny1&OoS3Eig2u39m1 zDa70iwjz~Q*ww*sbSq8Q8D^mAN!k>OFDMA$vrx#3!+|FSDKz_2spPKlpm{pE!=~0L zNxgy!lxaWpH%Z2NIFDQ@O?8lF=Lg7? zn0ZR>f&>-gCTk`yeHI=oYE0z7ROx6w!|xmo`6+7vilMIC6PyX(J zIpj4J9cE(1U=8A*K>7fak-vD@-_lqO+6ZX+^hgh`$oeENd0#r)(P-h2+eRS!!g{G+aOeF>w?w=5ov4u--rPlLK=aoEZGsUU}!|)-cN$1`r;8! zp)-+G9!k>?gF51a_~?&V9Kgz8Ug|1(4=qib9>Cy!;K@bDuvh+3EQ+ zc6Ni^w*TK1_b)%`tz|O|*0uGw2$pc{VTiUB;W(zIf0d{*CQ9LI z(+NB0iKSVRl~MT5vxaCU2&Jg%0;S1BN*PXa01)%e)ik_PD!R@Iy5E6mIn<#@hXYM& zQkr($I0S@PpX2^-0BIN|GNot~(>X2oIPk&MkX+CR-LJBj-`pW!$)l`l=YuJ>6A-8r+(YNib+lu-=!yBI_eP zdKS`SmOs_WApDkos>|9?G0)dLlrMW~dP*L{lvW{dS8k1md)R_56=8`=&g#i%PZ%IJn zSf^A^r`J@EpCB|;T$NQm711Z~D67((fk%zUG$r~|nM6k!RmYZJwc4rbH#j&07IV5U z(tJSrP?yhp{A>8jnSExwu}A!f)YjuBoU;GILrx$5!G(W$<=THWe*Ew1zn{^#65#Oy z#D^M4lQ0?d6A^b~Dm?}#_ZZ4+zp2>L4IpG|rjUS{GkA;_L9~ZFl%QXH1%HMl zxUVQ|D59#jPHX5K6|0A|KPJuEsgrFIG@bjJ5|NxnuKa^7u4M`tYl1$e zV=9A^yCNQrQ~k|_1&D(?eEbDW0Yr=gA;)_N+Z*b~0fyhZxPY)%4iOGu4I%_Tk|ZI6 zB=ebcFd-yVnYhDInIQeb2#g7&EcG21uxA)M%hwM1@TE zr=gzqn*}Xe?T}hAMVGa(vEk04px+(HQO0@_?fI(djfwU^$t<67f7w_pIyZf2z$9k1{_4(XgqKis%|RqI>*r(h9d5ba6_rH$ukGd zsJ-cSH;|S&u*rc^(qpB73@Q%yn0`6rGlIQNu-Dv?`*Do~{~! z1i@tR_cG3|l-*Q-=i0KH0yVRMnpu-IPM}a9fLHPC3pjizcYtvC`k}K@haS5T<8Gu^ z1Imuv;BRRZwWu9pD?Q^iZ?x_~vmhcZu# zmIv0ft=gz1WY(wKGacwnCZa79V*5+Nh-bGKZ0DNJMLs()G4dvGeez2T?u=W|rxBnh z8kT$|*kJtIh^L^mSqESuCCRTaJ8}#YX__#Vgh79;fa_1h1pPHA%oJ1;8#X(wy#!+r zii<;OBk3UE^fxaQ`f^^oAOd4*&@nCJQotHE!h(7lyLM)%Fp1hsw%<9al<`AGIsDj- zCqm6>1foO(*gZih!kcxJDou$7pE~P@A}qus_@UEVtlAj4GSbM|@3tc-#Sr)~t$a{_s7Lup1!$B&*=B?AU}uoIEEJBkYt zRIL+D?eo+ZSK%?v&MO*G(-GlP#{lMh3sZ=bCnzR<6OfkO3JGP;>jUgjDvjuc*k*-M z6q^KFDe3i~Q8-;T^fe3Zg^c5O7Y-eeHwMTXyG!e%G!-p9=mFC8@MQWIIFDl>EyWa) z2u*95!OH$_po&O92L0micpQkdC>a=HvFjGq#6K#xyE4Dy%){$%FC4p9W&4xam5@gk zC2+8^+AtZ3flgm>YE$bZF`%}iNST3#r2uMC{>r<2@+&|JEOd;Cy$tEsm;y`@KFk~C zoDAWD2fVLPtDXu%QE}wJGi!ezL^L#9Elm$9#vXg=*4rF%d*|6*n<1{hic^%94^oHx zf?LTq2cZp^C((R=ZIU2`Fj;(XLvaBfhq@17(sWLR>^Lzfi;Nz6Bx0rbf6(+0qtIJx zU^4GvGQzNjr1@O7s-?MULTxGuCIP4vi~BjPPjqr?p@k)^c^8^?eGf_V=Gd$w6X1Zz z(Cfo zgIf>ct+@ygfsSv&KC~7gBEHr@f!>;11q*N+rifH3Hk2Icc|s_(7B@nW--;yF8_zc6 zT9eRV)hi;q^KJX9NRnlKsXq8z(yv9aJ|T#n(M84*XMAO{EbFk2JHRqYL4&L%@Q)0p z3((k;whO6bTU8>L1shLQU6)phD)hZo?EOS;S7cRLsi)V@;*G2T=nm+qrQW1H)++j_Ou$edLV zz1aRfy6m1lnE8;CJ2G%h0Gy% zq6_V*#Nr%?@^H+ne)Rw~-JLgl=&LqC8egF;(ZPSnb$0O|dfK~HxD<$(%M|=bfQSZj zh)X0;>lMTEhPZ>bL%I=DL^%hl#NuIv9ly8bdX%rvNr*&I~X7np)+2TeYJeWd!O~K2w=#iL5lXhO(1dCaU0`@u`agi-;O+ zycW{Fm^9z75{eAQLBtgv5n4>R6KU`u^8AooUE5WflqX>{%+KT&<$*8R&6!NWacR&t zqqu@|eikfm1PBpc-!sul-DnpQH8~rO9b=UmbJ17dt0f0qLhR5WRBz0u#cC|7L|H|v zuDJZfr60e)={rm3@3GI}06x=^v>;62Rc4J7yY#jPqzm{Ki~A_lT+pIOx^rX#A{F!+ zQA^eaAD);csT(!`zlGS_OOSqriL6`USP{G^NyomLMaGIw3D>$N_XnhQuR(%YS}*JtZpmXr; zxImx=u`<+pG~1nkJKcn9&QjbFs-kmA5vd${K$872EbU?_j*Mc%zJrbTGc2%mTRUQ+ znQ^e(p6P)w&G^D-zDhuE3J*BJ>jtu&H-{?-@wwW}0d}Biv9wc?YbPW^%ymgO)a7H` zD{$etVqyX~FTc#-*j=*#6kSEGU>Q_$`1p(48`6ZTS`~A77^r_OR z+XYfzwQ)C}6iD@h*DDC2>IbLBe^`CYx2M!Wd7}k!eUS9ZJg{c}!lJgxENlZR&9KR9 zPYaFj2k=w*Ii!y;kp;_zIwQYE30I;1-v}jMNE#ecxC&q?p3H(L>H%Z+3f82OiM-<( zu3@4+Nw31xOsd1q1;{#HQAcpQKNR)H5x0;(K(pi1?TpI5EbMuFz_OrZldp13XQ7tG z9RqqLnE7ld@fs!ujH1rYx95^sbXTQwcMX<`CxpEQw4Id^psO%UD@KFvcNVJ*F@g@Q zwBayc--lrmIvIPef@p7!999fCy|s!#Sk|DN|`Mtrie{;4t8~ z8fB;?Bv6*)2~`4c1(|dro6Tdq9o`Ot zmoCXwaexAtpFb<|3dkaT5Kt#q1!4~QaQc@-DNUZ9G$wyBDRl^OttpdAwxf}KXecRT zrAlyV)nt1Ls4!vy)4HEE2Q0cL?l#ndUkga{d3r{^EN&jvj8U;Ca-E+*x&jmJ6vv?5 z2rW}m5W=RqO@?TR#RKgT0j^HaoqLc#TgmmR+ajO_{%*z*OV=9>wiG_(@<}~JA2k4f zh#(}c%v!P^v0v@o$MTAdjaaJilp<#bQkgelK|tnChPHdrYs=0Gi8p;e=w z2H0a27O9xl2X-v$rxMEIL?P}0hB{CH8+iBKl} z=Nn$rE)JV7i~EeatIR`I)}kSgo&nuCFa$5NJDf%Kbo8T!wsF;0T|P}E3Y`#Vz%L6cdpEba0aBzdciSb=3JDnnm`2A+${P!z;Ln{no?vOBl+NHhfR&oU3g2>jg&M@6V`;vI-9|FD z`N~@N_x79Tr1S7{EOlB36?0wug4EZ zN-2k&me5fARFk1qVuQ$|ONVQ3^nT(U4l6ZNCc^-|9-5th2DGcp9z`Z;tqTP-?kk6k z7~~BC_uJ2plz!b&wl28K2lC9y`j^d*S6=IG<28jsF4@)#SEBu6Q7B2V?l|&0AVJ6O zgoN?IZZ>-8>Gs5>p_NA(I%g`>8}!<9ZH#mwnX7nkrV~bL{c-rY*TLVbaQHGpnnoZ? zDw2wo5E>CbimCGq{QFT%thR%eCM>LZyL!*!RxoO59Uckt_F1(VN9_&v!z#6JOoMfFA!5KP+2upJy&BP=k$-RzZw!=WPZFPr>JY0Gk2fy6UKQ|q#}@toS4d_yIL0npFp|(;DkOJ1;Yt} z$Cr30kXWGh*>Q1Y52&8Ui2=mK>M)Vs!qs(2m<%B0%?#>6xJ~hB9sV1B2SKCpgCRlq z+jtX42hz435`>f$y0ZSth(UYz4J}z{R`=(yf>@dK`+U;X)463~5R=;bEm&fRwNBfLu0_%wa@2m$6CzcfaY< zrSIZ^Lt8GTP40@ErbsDewJ;Kc$<8%Rw5UVZ@CnN{NUm$v{kVn4K{^ssN%k~tcFUZx zSSKeEu zWR?bSKw46+F$lrdzNj{t?RFfsxiU_NYJg%`{!!U*O9ny|wM!}I6RMkj83E2_1 zTcd3y%8PJakyr~kHB@V~u2d(AA0NyIUy6(!3uzf96Ae-C>_WNHcaFSB+Tnw2orqiX zTS(7hVj!z7?_MZcUxh{?o*2SHh)@!0W3HH!N_~4fj$?eJ^ALQ~TZZc{bB&Q+^)pNiC zS0qXz`h=bN%9AYOcF)6pK+JgSX%)3yZkKnR=D(qS^$;J_Fh9EB#Y4V0xVrNn${`@7 zOj!Pbp#oQeB&Y~&(!4yT?eD^*c?Bp~s)9&Oqxn-EM-lh-LU|bMsQ`NLvnXah*e5A^ z?`3zRNhLIuI9z=lk(vuh49X=&&Rw`HS30QC<8PASQkaG_zzKrGBnpnB&d90 zMkw;k*`DDPkYFQbAytp>0%==J+NqPGK*>8jSWCB0Dy29bP?O8_vThKfT6im@3+@p} z*Cyy=9qrsxsV7I`2CmmU5Y&Qh^G>`ZQ=ApISnC3lHtX6)d<$#fiwY=%DOxT>GWmKZ>?GivY7k<$$!Xw0Bij#X$C^D?)+pQ8-oNVkC5bHCIjTI& zQn^a;+LPDgwE#u~lX=G>pnn}W+t)(ojok~Yc{?VJtEzO%C9%??ISS34cqoWFVHv5c zuO5^xZ72-Qrm%DPJ%|JpmA@63O1dgI;b0WiFThj>Eryi!q8(QK6pJh&;~+MvUNbp8pY}f_r6kAT~o(z+)FdItNoE zq5>6wvVJ_ooWxYY8G!idaCO1F@;c?t#(AM?$K=^r+^VVzff*Ms??Z z%H;zXRIJkP%xpH3;Z+O251xB)SF7IJ_^;NROB@nwdXaH=gcVTJTT7Hxf+xbx#lHbC zVQm5F8<-fFt;?g>j=Mapgi%Wsl0D-U+hhS^-ZCEsb`+)dFU}ay5(fhx2+~;FmP42{ z?eR+^Ob5VRCt}h(lmq2WvT{Qe`K!n2!t)|Aj7i)UokB`iM*XhNaRv8&pk_iP(l7MLTU$HX!MG1nr)&+rgStM+hkRSrKT7f9- zHi^IA;=2)ep-6L;DxQT4I|G*8{F_!h7CL{>)EN!f@RE{xl?d4caF|8N;Tj>;V`8Kb zka+Srl6Wk?NP%`gsOJj>-3+Z-n?YJ1Q+Ni9gNb%Xp+Ts^+~Gh&n#$oZ49Vi4{ffam zEzq!6>76sz<2r5pR?BkuYipb*UP!qdQ^^Y!Gwk;E#3Csv{0E})+=TmiH6+kUtxL*4 zC75TFC%=Y&sia{L@jTK+v9*NL*7XQpFG529`_(0-)|uc+?*W$;Y^HQ0OqaAt6gj^8 z1z=K&-18z@3Qj&|eei#e;0Ug8u`e)%Cog2t*PY-Lq~*>)q5X=xRH;}gFOgi2LggL` zYQA$yHP>3L*TO?cjeC}?0YkI?{>$X4@YlMy9b_@fY%>!Ii!jo`Wj+!m@8`I;*A3}~jm$*PoxGax*^$2Q@I zm$qW3LHZ#k5_dSV;aWx;>lEiZsIhjAS$>3rx*pP%m{zLvf@Cl$U#pv{mprvP@upB0;UkqI6kuc7Y$GcSz3fy;qMKYru7&ku$x-<4-EWb6`J&= zlWot!BW)LJ1&tW(-7|>DuAL~5m1U9taM7Pkj~0beZ(N%PGn-(C#-|W$dm;5;GTw!9 zdHbwP+EpJs@P(Sv=pId}pl6rmnX4B0MMX4MeD_N|67}gAA*z}YQvRVc*L`4;dt*{* zn-pS^GvhMg&qv_!-4e3(><@qMuUSuYm{&va+64DZu}SrJAhw3Pg<^$xk|{_U zo7J02iLG+(BbC%my&6ilIqVg0{NOZs-!_ash&3vfE3!X{>mvL`sl#PeWuR&x!nxrw zu-&6!2yqCi9KQflIHXcTWT_$5u)X1av$7N#J?f)|?}|pQG?SOG3wo5ri6Ik;0f)1d z_$?dm(MYX&qJ4iTiGeJ<19~)dJ;6Ja@J-)VS3BbR_t)Nb*`Gs_|Rq; z4DO}Ho_&Pe975tK#M?+u=`Yyy>fh|%LbkWi0ue+Ki14v^1l$e0D~oM8(GW^nLOpUI z2nf`rds!&yp;Fwc9Z+#(+qKR>VfyJ}r&7bE^D=-e6z>j2c=Fir+9W)c@a9G(ytz@C zC>v05i0f;MrBi>TdERMWDB|R@ePoQ9Nv??8xaFKsiWjQ5mdSS|tBBstn%NSPhy={S zqnt=X7IA!+HT`W*rO(Y$a9`t1Y1O8BSrO`qi_O7@u}53YSJi z+cAanEgA2j8qOY430r^DT^W=n^n3Y5H(I?9@aT$9qMr*aPBjO5rEOH;yc?gsnw~CT zVO$+@(mfsiK0TZXq9xI3*LL@&7xjz4wNj+A$|s}HyAo2$+I`LwH$&EiI6BZ!Vn4!E z(g@Ss&{W@8H>P@`h8=6wHhC$Ia0aAWOzL*H>a6pWXUy_#18yMH@~OB@*e2dIxe=3Q z!_&F6qT+gc;*)dB-;@B!L@-d4N}O51Q0cc42Y&{n6EJD)LBVxtfRsKCc21ffs2%tt z9*Re2$8AcdI`4v~=(;Iqwpm7wqHbU^u^mKX+7~6~o=#UB>R@%^ReG47Z5ucl!DCo{u@h^%q8kNM1t^Tq} z46dpX(;R0ynw1VPglUW51KK&-!!rdqiuc(&G<`<_2gy>X|5z-GV|^78+Kzr(QtXFN zy-IYnkWNGdnnA`W?Gj~4`6Zgmku%Rf!aOT}4CyRPk)ae@85vN^ZwWyAh#9sQX4>*q z2WHyL4${JbI?!m?3B7i^&x=4~AuTBbMDxHQ<>`5bJPbo*@FLMq~65^VAw$OZ-loT+^)!{NPwzj(n8_f>vCDgb2_1 z55UBUD5X^dO&o2+2G4f0YeaY7gk7-mkbtjQi^_sGSRyA7i5msQkN%N}60|oYoRruw)9+GOnsy*&g+kH* zhQgy?B$Tq2A_hn&LPnbtu2;Cen$tgOtyL5`6Thf3FMSb5t5^$u%dhF-CEVENy`r0EzsInRox ze3B59R=#87F~lfN`xSm5bWeQ`>P@7Qok_c6R-(rag#n@P)_rjWrij1yk)*)2NoyV^ z4y+;MP2XrNy3TnBNUBe8OGl=_Fqal&E+0$Z9P4CD zDv@L3{0NLK<<l_55#NTZ=?4uzq!E~2_kVrL1SBrgWly>;X5F)+0dWej#P+9A@{=ZBf3zRo=rB0T<+rUBa4`5oRbPMbKm;KM#k#;b)D< zgQF#!#T_tu734Uhd&=coa*fIqafnAiVt*kpe2_n7%+(MGu>Bh_|UCI z*6~K!mgs=##?`J(sJH>bG%`0dgr`bk4v33mJ#Ge7!h2p6-$8@A{n&XVI-mstD8WqE zDjl%a00_N@sZ3mm4Jm2dcca$dsZtu9_j<~otDVVviWjQ2G`EQ0Gk-J2)vBIXuybX^ z!!$RpG58YbtR1lG3!(_Og3=8Rd5qUz|K!=1UiLeV9@QJ6FXgF?m|;B`%V zPA<{D$j(8z$e!FGy*W?D!63FDiis0H@NpIR#*l-#AdC}~sE>P*t5!?aMnj>c^X*s? zJ9`DvbC^on-hfyDz7{-s5f8W-=$8UC77XBR7bI*$_iGKiUxP_nn?hO-lcp}{pvG`I zN9?Ws(t_m&5FZ~VxRGiC$VtGIV9DWUZ3U|n-wqPo&5m!T@+FsrrrjX*8>wGC<^(L% z&nYqZvZ4i zvH-y(-JSO@RjG@G2Kgkkgdg7-DMc1iHzrLLGtfw%LCn%@o=PoOQ`ZG#=m&qj*fBaQ zoQ#PWg(lZK-a8%1E<0byR{@DqA0C7{@;K2?kc#T60!@kMBeC7{ab!~1A)|8O$Ql(v ztCXbUs4*oevUVCm(5DSSqqsO`_@UBcffdFAj%WR_Omax(mq>w70|*;Kqz04Km!YHt z40i2MVYEWgOK)J+j&rxyTGH+l0GsgiBAOx-jXW0}FA(n;UoISv+uu-sbg8>vgBgDJQ+#raP zb|?!~(f;U14?ng2$M-Gx$M^mQ;cXB0dvG-&p~IW0(s#vg z8oRp-8Qb?E^Q~-NZ=BA z9LD;C$RI+SJOhre{U%R56c3o6zk;+QnQf${yr;?`%Vy)JW?8*kHQYupIcZw9UeCV- zWp*MCCp9=)8=TF^(E%QZ25hxbulOk1y!e{sIh5S13Xq zT$}yP_y~*@X+TVr0}b?GPw!=UFDs_2?9`~xp$ zIQ-a8Y=SCj4uwRTJT^d%sAeBx*FWA&G;7tfK-w^tDHKmeiE8X`TS_E|$N4IGIoJw{ zeOt8L&5jSSf5~Cn9zZaA8qy<}I9f!i2z-oHs$VriseW)Nm5+pZHA1K!(A@xRHnCsh zta>5!VA2E=UCuVX`wsOYpHE^P{4ImtJyT>v9E*)Gnykg`nVCR!3f)p(D~mD&lDqOX z3x_-y>7{{em!}VqxE4|sfU7f(jmU}irPU)I*#IP_3v5WRe{07$Wn7g2E}~nhgeme2 z7$MzbED2b1;6x`^N5?t{miTk|5{WSWMR2{lh!AO?gG`5Xk8vfm{xeMXmz33AJ^%!1 zq1|5a(ZLp(SnmYW9}aRyDgCC4%Ut)^Pyj-MRtE`}vR%7tYX> zJe9n|0Y;zg9*sKk0#u-1=_`IFXGH1Dh&r}EL@Ts@5f1MbNO;%pS|i@O)Np=xGMCCi zATSSA|1&R|-;P)ScgC%KF+En=2<{@XD`7a1YW)aZ>6dI=F-=o7!{EKSDNO*=wy%hU z^oWSM^4^peVRx`7iZvbAa&t%2Yt9ZYI}2ic3ybORFJHy(O?J% z++77V>T9W>zfre9J2hF=v9JwVhbF7Xj~_G1czDl^0RT7dmqQZy^q8upld2A$R9`DO zYF^w&rGqhTxO{178GhC_xIPa;0={9b929AG$X%g14@BI8i${%#LVLHJ3j=gS6j^be zPA@{jB%`dz`*|)7)f8ZCZM~o>!7_#Q{wGmD8=k#13#v^XVmyP^py^tn3@*_3h}F;D zePz=NSH~)EIbyxm)9okD{$kR_AC7D|bdS?UZ}`c{H|+k&_zm%z(W9`F@p+JDVN$uE z%cs(|6DNIB^{dC;;BbUvMuWyw4Q6|OFh#u99c3Yxx6|kOI5`Mdd^4cq@E^Jtvo%aX z;n%_;ygDwqMfh&9`oWzyaJXuJgn7W9o*tgHGdn5mOu|{}ls4dXb|T%nKwVD~!a?0F zx)>2}1@MZU3F$;kq$;?8UW(WI{HIDY{S_(+QQLRL2=~H9>|7*ZKY-Ma$;jk6;yP*! zU6&a`EJ`DpMFcz#wc!k}3F14<7(VvgBSx+5cv- z|B<$efLYrrLNXgHIvt?tR!z5;!Z_FN=G5Wl><0-?J;!N$Qbn(p{&ahHE|X3!OSGlj zaQaX~{AzGBwuH1HCY4NS^a~3QW9ZKy8|_W!%4G2>Wt(S)=aR>PXhhrL3f&0_yeX}l z$%5ljNs@h~9TB1qgIv&Eh31Z2I+1eXt%8Wqmjs}|B^(lX(kQBfAu@#$6zo_blk>|p zN`G#U0(s&SqIsuXM`vRMG+)fW5RE!h^%TL1ARR$2lv_6%OG~|~L!`Z!DnjVUt zs=d1vznXUu{L8VnuN+tpBS?b)BjVa?XIm=sontSB7}Rijg$SVjD6ah)$axRbN>w)I zxr#%#A^giI=bz2Jf}O`T$62cFT7W2I427D-!kRU&R4*_rA--tLPHVWK1$6w5UgTET zd?@UFTmvOm^jLpcds~X zpnfeumGLHnpE#9wW1*Dz%Ma^6eE)zoL-<#u1i6kI%uM=)QR_h@D)Oi)Dz%GMmQ97} zBD+o}ea1&8e7xDyPefeT)Hscn*Q!1cfVo3R3D$dcWOwI1Z;dNyZ4qApR$}fA{6TVd zb8kA0N@FO>9$7M{qo#vlCQX<$O+;g%VDsqE-F8FXR>ok*Wiy!x;fP}-N*C5DF=xzJ zSH4|=lEGKN&`|a|qKq`C%o>*FYs_TgyMSD^Ehd#-yW(};z3Z@%`c-2x>IYd39H099 zRMm8KArA-c+L^j+2YDRVfzRVe*1*S`qHrd+V)V-n+_*?p@=v_%TM+)HOm98r(W)O{ zaT;*gqWJDWy@tSzu_1rL6v7CjTXqobHjZXJ(nzqzFT4jJ%p3z5hIE}`n1SSo4bohN zFT*jNdLReLhO+{_e44YXWdAzfzbaQsJ{17ECqUSv0V|0G1?E6hd)9J!+6)) z+6K}lm?ECK;oXB+MR@Ub!q~8fs*&Vp7{uB=Qri(1De!I!N@y4WDYgzPkHD=HO@Puw zH%45b^E0+3lmrLOUoe!t*Qcw`{W9*hl&x4y!d)nRHWLZJqCmJ~GW@D2XcfZ%IljOY zg7oO@0T*)J(1Jn)V~3yb6bH^mN6+YTg(STm8*>?IAQO|U4h2vD;Jns65w*0OLbp08 z;$0^?!Y_f_cU4n*(;e&seuhx)e(|Mvq3967UreqfiWqn(!5{>D z>a3C3Q-frLkPM7!T_odhWzDL=q^+99MDvBBuz8gla4ThN+CX_ow5#Q{xQ0qmVXD$} z66NcZM8`}B#a#gJL8&a2;PMrkilnrq2K`&9o**e@n1PQ1;WpWm1SbW=K25h$D#Ffo z!63zoTC-3r0o%BEql#r%XoJAg73x=w|EV8bJ3uJTgsm>e396w3Mf7eT(*ler@^g#f z8&%eKAc0NKn&9{CbuM7A{$zvg0RXR+eO=F*YGE1U5UD5Lj46bA=3p_{nGr5Vgyt{| z6>;!gc{NkR)FQ#(Wd@GTUBe$y)M?MNYm{O_8WGXjs8#JAflLJq4C1|J4d=AR3@*Gn8om11TKM{=-$+`vy_M_ZOW+7}MZ&uQZsOGrwNdUf$XC2$aSgT= zzUi-|nH&R4j>1=Ia8uxiH^3`E@2&u_t{5FzX2K?hho-m@h^bj1b`KT9klRSyBP8u* zNRmV5k^b2^aL%>!Av*S~im-+wR;q%PMyr)pWq^Cdo)==voSqz0Z6NQE#Q9eLcqHL1 zmdb$-_NEGJOO6j*N@-DbCU>8I*#6BKCBvxbMm`PKv^`*AlvroIJ}Ut@v;RPNNk}(y zS_18KHb9mP&v+)e{zxlu)wK3e&#U_K-OS}30FGkkZFmwH36A#oj)+p`JQ7$O+Z*oy z#1=zJV$xtbm_knJO{N@YYN#2rG|&jFipAmAhhPCQ!mLr4{J0_IC(jyClS(G?4jc;( zQ0bSWd`LUxH?oBY+{f9q&;r#w_`ZLe&6T1r^X$9ZX_quny}qf;zwopR_kQ+*XDEN-886HHi$DMCp<|z*y^Xbe zzP`-A?CLizY<>x&D8S937t%8S^0!Vnec5&xeKi)F`g%_0U$xWptDf5i4kh3>^TW|H z|0j2Ce9@D8T}SzKFT5o4Z)o`KMX3~cdBN|1e|qD&d7XJ5EZ*-`%I`d5A6fq9KTqDV z@{z|Wzx$Jx1pLeD&r(d}z5?hnkLOy!_AZ z{`q-{-%|N)*IOy`A9?zKB_C`=2Qab4dmJwFpPF~faqk=l*U91c&5tL^{9g|}^3$Vg zAE5kE^PckZZ=Ld+(`J!ZQ*5)-pOg77rjG5Kf7Ojte)hBTW&TUES1)<>(Df*P*1p@x z{FkrZvFYVudr|)I{%d9atI2~7_%wL~|LK=|?ebyGNXkF@%}ZtZH)s6l=J|U<1ZwzIZ|&j5J53v(R+)H$^2hG{ zku3l2uD^b4(GH(b{{C|=k@+87dC8ock0N#zn{@hpGXJApu50?vD7*;?H{Ehu%ltJv ztZ5y8CIqj5U-L~HxcO@;>OWj~XgdbNiN#tbPLTOSVn;u6^#=HC1>orq@AdLed;G~` zUwe-7x7}Kl3p4h*ut7^~EoDq<54Pr_A5>))miXzjpzZKj{AF zW&ZXJtMY&QIWThgb)NP+nZM&n)4o_thR9f~ZN@z^f0s*>2feeyhg5#A>wY5hcm1UM z)Fl-sQ~t8ySIPWu{h+%0x(Cjn{D}>DFaO@DSKRkBJnIC%V^>U<`Fm_PZ0x}g!2v7$ zIvTf>`Fl4{7`^4hUsC@3o`Yom=ug&raPPW5Q~uJdg#R_we|~4hCX+U${EDm2mgUD) zUh~QO`<_SnhrRWJ%-?svGwyo!hf67c)+ydTPU&m-*}KPz^3y9v$nv%E)acFrbr+T2 zZ??A%bv=(P+yBOYQ2s^>z9q}oj~UbW=-V}vKk*ewXVx6}&dl{M-$(GBz8gDa`I$fY zcgLAq3A)|2{dqFKv3<(@PaG`pqGN`nGi#de-LL+>YZp@cRmbll%g88W|h>>kPi-sc_I`hU%l)wC zi06KP({FYY`7DxzpOVg_DFoc z1{Chp%`(3u|LJ*$yeRm{HxGDM=G)_DT(R|;n^XB^eW%L&&Qs3bxAhJ&&V%>4%*(&< z@%s77}N#!e_SuFF9*|2-^anGJc z`5XV$gWF?!mVJ11*WW4snC?$y`4cv%p3}2%d&+Nn>?JS%&X@K%WYza6zv8~BGXKPL ze)wq3w-2KHF|!uP{F5G>^2*ZRe1r0Lz4LaNf9m&U7w&%THiOSM{zm`$gDii^w7-A%rmDYE{%*T_ z`*rEIm%n-5d2OPd3%z!(==$Ymd!8)l$+Xj6mF-;FI{K=&@7saOA9eHhW&VnD=O6#{ zR)T+}=1O^H%{6Due0kwX%c%VK(&J?L>z?}f!Jqu@T*^Oo8!0!gx&Fb$w|sCJgj|8& z?zP@J|1|m88?7I%q5QpflXBgfJ4Vg<^^w~jM)~Uw-C4GON8P-Q_WH|e%HMP=55MlX z^odt)dtA_~U{G&2|)z%$%XNGS^ z`9HY+2`_*7T^AIVokaP)7u_%O@7wFBt$x3J73FWU%qxH2#MGbvo)Pfbb>s1}{QXxy z^7NC3E~oPSCmb#FAN*qeC$Bc$O!=vG7s~vHclveJCNs~X{Q9aDGXK%{7Cn3HG(l%# zznUQPpLqM8ANPN>1C<|p;J0P|(-Z$6d*1;U)$#4WOScy+(O6JGMHB_3*#&7z6GT)* zSzswja~BYMFHsYF@0!>(_MTW{?=|+`ja>ojf9A~IbMIvfyGY*q{oddGy!k!z<=nY* zXU?29GiO3OW?cON@S#^jcswtD?dkCWfLCd93GuUU7CkcW$=;j3kC#8^&hL5Ipe0$t zAwRoDe7{}lVfiGbIP2%^nfy3jlVlvdvgvoAZaV{=uw$ z4|nwk`p^=-h(C;a_x4h&QGkaOuY&mF?#>OD_%eOhz?-+Po;j_ayt4CAppRidYlLKm-RV^^mWQ4Z#n0> z1#qkW8Hm?&sWduD^Zky0-Si0PtuLR# z`n`VJ=~MRx)7Q1ePea`Qmz^)OYcRWd(4-cK2izQ1+U?v`sHbkZ5{L&zzBpO=63stC z^v*hz8#$q!2fMugg|)w7LIl!>-O72s$CAm7e##MucXYmW)+50V>WTD8;&J!ESO4&4 zaT2>(Xn*E}uV}n_W@ZA=n=f%f`tWBNZ`QUq2Rz0k2l0q*QFRsb#{nLFbOqv35!-Ji z9PtOdtlx0NyHA_Y%;|Ggz=tNIJkNu*XWgETIbzRf1g`uC+GCM9iCjJyfxshHuCLHsk(3X{*2au7tec& z^<-LK-qU0)lUGq?(SOOwI{mcT+(SSv8NBZi(hrJQD+$V53V$eF?k(cO`c&O?=29uZ z>pgye_;9Q1t&){Yf5lv!h4`ozjT!_k_{iwZ`1v(DXpH-oNM=_Iu2%u+#~8gEe&u&Z zpm)78mB+i>7_;B48sHV8(2mU+TleXcBXgvH+f}TL^pk&j{@2TG@qpKOb_Vh3_GaP3 zfBYM8|5N6O&z$MLrP@7aU%4FS<@2l)z8in5%;t5?TWH_r%--Io+3^v~FAlz)h4sui zlJlv8CmY9h6Vac|ncJ&J)urCM;JwnoGDts9w#D1b>JPxnv_iWjXMUyR?4KqvyUuSf z&(HIR&1~E4=dnQFtOq~73qMY(wNVxgxc_QntbdW+sok@luyGHtDbC}k#=g0^z5&p; zn_LO;-^#T6x^-nD;35d&u;=@2^>rt&_P37!9`vOOQc6AKaT*s>&SJ8Z*RHsz}NF#0Iz+4mxntfbKZuvy8(Euft`_l z$Mc&V&U8%$yt{8K;yZnR=(BRe8o*0O)d2_Uva`u?L8#31GEZ~FY z^X)mH_+z}R7Lyx8<|Sf1M}JzeJMtW}hvl2gA%3iJdZUt+v!I?n+dlC4%Yn9CjF_CS zSDd#8PGz5~5P0(*(04!B5a~~SZP4S?p%#F<+TB9@v`IbNw z=Wz|Ew@m;qaiRm(^LUe!-Isnf03WL0<<*msPgnow!0f}ILywXEY44Kp-TtW#^z{d# z-JA2a(jQBkU#tUoz4`G-|MurIPy1|O^P*J4T*TkcYx*cRlJ#?^PZJQ&aa^c)acv3I z;}rA}@w|Z-dL+9|0o+}=0r3xO5@%Voxes`;T+1nsDd$ z$~TzbWYOLcamzb)YwC7qdbUG@*@#z;$}T_Y?_p4X-8LBK$*r=x@|t`8jL(P7FNXA0 zOU&3exotMk2i*LOc+HVBk5x8hdT{u>-iTW@O`09th|TNdjvV|ow^o;+h!$3@pq_SJ zJ-I*RTCZq6&p&Vx;BjM7Zs*pkX;OJa+)co%c6ovH4JNks8D&u#@EXp4A?~o&KcU8^ zp8>BKi}Enn$t=|M4+qB24sCZMz4MtzM}HmE8t8{7_eb3QllO;Chra;s;TnawN4+jf zcO~5d+<03!;w{Hq`0`5#v%@>CTFB!U5C7CXBoye&4@SQ%x8>(IpPm(G`p&w6E7G@a z{qCh*V>VwZ??67!_3X8|%Kk~r5OJO9h4elVUv~KqVDhK_2-JhQ9a2m`U+MZ4-Wxd= z^=xj(u8aTKxp*MpVYlaEJ>ljzMom2W7Vugxk^gf$JJ+up88em9uZcnWE?EaGO~0`I z>Cyw|b#9j_f$i)b><9Xc6!gb)yPa^A&sgmMxHJ&uaBg&Y`3cwGF9PoGxd7{rzVhZ- zv$c_cS9>@SarupvWBq=f4S0w3d_9Q^Z~lDX$zOn{+gT%h^3GY0I!=xTyiXew#Cz|N zPjt0(20XktKQ9zF=a1de^8n!1htS^3RW>sE(R`jU;4#X5SWkw@?Yjf+GCmAnUXRD$ zb^P_GO%H+I{x8(~xmk6p*U77_1U$GZ`ggh6mBvm@?ZEt|;cfZ(n7yfS)!E)7fxgPm z{CD-cd9U~D6f?l%|7?Zt?RV?(^pF=X05{1FKzyKEx8`QUt^q#qJ^G=!!>cTvQ};8o z-^x~fjr1e3n|r*_y}K+1e5ger;$yqJY}mVr>7%;kXCgi!;?{4@ zPOSa}FZ2_0C;ooHtXNbU)RUTs`ZRZvUo(&K^{fH+`@r|x^ws;K>OKNkQmZBE<=n-i z%~P@mvU${KEyf>mmmfd4Aj#1e9_Sy8{$uXS_3!_*OELmH>f{q_=j!8QM@0{N4tR+w zdl6rA!`k=6{7k^*&chL3d%K(O-q(zui+AJa(WWMMe0_441HE0Bsz|@(%>2#$r-uM8 z+kP1F?HelIwQsr_@M?!9Bfjfu)=?YnP8!G>*jr&`HAgUNAmcnG9{gVDGBr?D|jP*pnYCM=ju#vMp^UiKhQtBR$wQU zT~rP2z}#cS(`H#L{0#L-QWCJ9Gp!q52>5#k;B|ASBYrNx*Jg?ho7c5Y9!LCqT94Bc zV^}@GQ`#YZ`Bk+pUYS*(p5g~lzvteG_4PG6&*V>=w2erA@8CaCQ4<;8_P@sKmj?^) z_9*uo^PB45JcRVmmhX5KxQ*$T$m6`ed;NGwjVKSs56Z_LNS}MBRO=VHj1jYUltTQg zPu;cGt}?rK&_%Rw^Nj3|SS@Wb58Cfg{~br4XL0)N;~`aRMlpA?AS@941_uL2c1NN^+dRx1e zb*>)X0(iX*Xouw4x?St?&}A;*KQwHG^mWUm*UuQ219;||zYw=SI4!)t`DRv6b>z1^ zhmt;R?lofHYkpUT^bU7NymkMn9MD%-h;k#(c}wh*(^onI-uCP#q;KMTOmh3QCEylM zkx%kmEPCxZFx?h#|G&`x%5#~R@vwJs>_Y1ygRA~j^j>{S$9+d2A z*WWe^@Ze79*W`t@FWGMHmvewuc0oHNucQ6ynW?Xse5-vH`=6^%BC%m(0}p=xpYJ{J zy$8Pc!1o^b-UHuz;Cl~z?}6_<@Vy8AulE26wiPxrj}v*8oOROsXpxiie{*J@Tco3i zrzZVd^C=`%W}dRbzlstNsGnS=DH64077*6LWh;P_PQpL%)sxGOgt-XV>8E^m7-2Ou zYoexVv|d$2F8A%N(3U?){j>BqkSlyWw#&e)iV8^EYf^|yiKO=_N7L{y4Q1T?OR9Em z5YIqqKG1=gd9Qh=0HHrDVBRN|s)wW}>;ITTKY`80{*f z!m2>S(`*=!!=tb#)TMMKT{?&qvSJ|3+H1Hufv>n%tPmZ1j7Pw8+f>FHFY3)2q5$&a=#waLjJ;g??m zG^3+fSn~zeoQl$XasTf&Uka=c+NODfw2q=>J(gaY{i}3721x zT)jhxfsorxl{!%M5c_{U zhz(0FuM+z0VB3-&j-VB)euHTf=#HEOS_cxzp$Mf8nJxd#PE)}w zq@*3DEzM+6u#j{JQ6ky27?y&Pa-W3V_9IFK#NBADy0czixfkN-+E``2Ln3sIb^f2d z(Rd{7&EH6&JCEjxq?~Ru6`~m|p%!`4z{Eq+!UzrWmX%ZjbRs2)7L8^L&B#X^R6_Vy z-lNHP0X+W)xs&Dx_gLNeB_R89`-9bJ)f1-_h6-^XVU2k&tYj_D$km|VI zfRC7xyvM!T%9XK-q;wi2)!)AVb`M5Fhw;9I${o?!9x@5xx(>LbLzKHwo3Ej&b+<6M zDy9`AOZ7=gmWM&|F78FD)L-f;Vg)I)ynVt7%(h5trVK3-2I6+`BSgI_)r-~Xc`{9R zzKEonw)%zfY8&cV7TA35rWjB(+@%zHRqqHn(z!<=avNe=~`>Q8%2cZ&En zN~K(pp;szGZa8%(UE8XiN%&q@F_d5i5m8XmFt@w_ms>AWT74+^HsV5qIG3VcUFEOh zyl-+obO<7?*Q{uealCNg1~4*8eMX>Dq^eqc8;g3i`MC`8>#J9*wL9UG7Y$-cmDEy0 zUP{6tW+_yk7t;TAZcOz}5&FL_ZjS%4Vcfz7TbyAddl9-lq?7)u-5z?t#FG}GQO9}C zS!tQDHY!y!mZ+K{Pvwt;1yk$!IVlfl(Mwc9cvp0_8hKPARiBX>jTu5JzWxC8jbK)) zB(W&?o1aF#3F_%Pxwmt-j|IojuqbUR`Msf^O+yUvw20oN+iBqPITz0VS5j#~PRdFx zX#wFRa@KU@nzeDJ3mJMy3kYnBYUSL@*i2vxHh4qT0YX`X5d5OYe4&_>)2p zqPGFlL}S1#P9CGmi9zVp#fBhoMsEy}&LL$AEqa-x#86QvV?_L4X*4Y&YeuJBBi$@97LAKeavMj{@av`(EC(9!lsGzL zZ1{4WfkIu>;krKvnnrt!^fB0fg_KsXieGe=4GjbSx291BX(b~a+J%;aVzad8=}+4& z@@mG9K#Ika8Ddn06mm$*sGNu)wRyhzXDn01o7LP(&f*~VCS{OICmqO*>+p|`^H0BC<~x zq$Nce+4pez|2(o!O}YlOOsDfrWx~MDw6-#3W(w_Z`jh??mzGH`Nsf$S|1I$#qbLa{ zC6E?Tq)#B-L(-H4H7Us(Apj z1<5R0p9oq%eiz_@R%MaiVsfP_op(h8o*Ip(&}AjNc5hL98q01Yonw#mrEhKRa&q!W zp!chfSpZ~ZZnR(j<<@+_(}!R-2U+=qD?itnJppjL6dSDPhZ`gQi5^Xje6pDSY9!)S zW`-UGF?d-Y#??;2l;!Kzi%@@*$%Ruz5M$qz~e@;oT-pSacZZ1KVuo@t<$W1|DWv7^GG6 z5U)3K-tqyTEr7n!82-EJO^E5x@#{9gqkh?r^!6o7UP^36R@KN){>&fo2E$gkHCV#N z*L}r(9{(~S;=@GNZDA6C!SW=QXRdhx||M#BMD%xsRhi=VyukcTY$ zMhp87Jbv5f%7gLLoRLWCCSVpbnd{!f=f8b91$eW>5lG+6!~JTv)K7pb2E9hyZ|9=l zw}x*4+~+xFla%=%&M136^k=|*>-~oG?H&&rWqGP3;8yR4BHn(0`}L??hNsrf=JB)T ztMqfDVGzRSZ7cKmN|wZ>xRi25D$0%X~yrZ=r$0E#6B?#@d)|xBR!IT0$lp?7~);5UvC^biPcjk zfUm#%q(Rc%^Y;LK^|CzwB(#nSlXXY}JYgEoCy6%>Z3?!g>%|hu(7~0k{-kT2FLpip z58x?fdAX7DWUr00SAW3$&R}*1S!(y5#ilfx2zcVEn^;f!Sfy>sxxWCnnk_+G`Ji+5 z3mZ1R%`RCY-gniq^5fnjJ~ipU>UQfa0Z*=nSrlbc7YsQ1SI;qkTOW2s`WYjeI=H+ha-aNq z_wR-H%;Z~Dsys6S+|sNI;`7p?MvV%}1l;4rQ67KTxb@i2n*f(hWm*^+Ovp3w|A++$Kwkcbsk(f4DbQ_F}sIs-;L4ZiaAvWy!(b! zq(A88Jma_MJ%HOy8;SUl7HejkUVH|4yG}iMe0XBN!uw?Mm zwn%^c-Hln2PP^d`71r|e;#B#&tzv^nc#8bwjn*Rl1&cFd8@ez(+jfKl;upWZJLddr zeW15FF%I!dUrt=~s1^Wtiyur7|2z0lnY;*=bc^Y@5S_Q`5ozqKe^rT!1-~kqb-W@`s?kI zZp|j_VSKJAf!T9p?<)3pnX+^m)E_^M=eL|CYsVyXdkVO-YckfK*Xd!*;1VobR+G{# zd3-^;>p@=^0DZ{9IK)4-c@wyF1JgSdhx2m&^Yh)^e~Hco`bL{DJCE$ksnW%ICezRX zk>}-k`mdGt-f7jpH-NLL^0YnjLNNaw@IKQYpWUAsTbnF92_eyAT~jBY%; zZSHjtaGxpI&KRTni%-ktEDMakiyPK&JnYHydz+cPT54-W#EUf#+ticGO6-N%WMWF( zc#!(4A_+#2pX{$8NMCAcd&%mBRHM&#R=(pNlOIw~swF1NreY%!L#x1@YR#H`YQcLI?oAM{dvR)& z*A7hnch5n)C8l1Ti7yt`>jd{L_IVFt`)afMJ?HTkJNo{R)*R?-EW~VXF&-uNrjL8g?EfCV zIDccBN9?UxvLdth8Z7RM^|TnWV*cO*e?vXV$E^`>mHFiPz)5UeI-Es)8q@l0UaeNs zD*}D$2h2_t&U`hIK_e>`tkA*3Fr{R7`?) zT}*iKn0Zlc2eW!E6hrz>&(AqNS$iMwej`RB-gW8Shll$ze84``J2A3L#iq5d))eR~ zr2mNYiN=;@gT^v_ZTSf0PfW_hsA})C&jGzp{Sc&2dG8xC{P9b`efOV2JXO&p^T=a1 z?!C=W{>NnIom%QWqan~I2V6q>As@zAWZR@oPb{~Yx(b+tRwBLkP2BmPVIs)PMPegJy^tQm+;>V0dZQ7FSJy?>1O)R7hT z{$tGiM0vk2h|l=E^lks@?7fcdgAkuLZu^kd$MT?l+o1w{`>O11(`x`;E1(3@FEHED z|BFjsz%#~P;qmBXe`%AlfLpe>%;O_BzO3|d4dAAx{Crs|ck1Zam}OC~C$E9@%c8Fi zE>^ZJ(0fcl!z*T4qTKeF-$uYg<~~CDc+KcCZTIiIt}yzBVg(R*e{D=h#PlMtoiWfZIpc(*-lKBfMb*;_K_bZq!0n4Dhh& zJU_1wll?9o!|Y`1$NYTR^?uJq<9AGs72l0|KjzQKO_?>;m4JF0oaN>Ap6rDazrG&; zxXY7<_};z6-45o-7~Z54U;ja;@arq(Z-Cw@i0AV|D+7Yfeq#Ke?TmJE%%Q!e_d3|# z2Kri#ynH*hZPuh>%lrWMlJnnn>~-`U5-MnK>0GC$v+y}R_aQ6T%?(q|VV{mU<{9~`{O#R`EgWN8f4*c(}AP z;&w}&`ebGI1H9=+)cdjaYcEIcv1PbL!vjd~@M_NN6XlqGZ@DlQ@kZyY7fn006zU1^ ztctkP^nIx8`hZ@$5$}4gx$C6B-vBpG=!>|lZE24)r&;^U-$45?HX(NBFIBIx_E-k--<$q- zomZtcGrerR74=AL@7fh-O?;!$YllW){k;c-9=O$O8@#u2I@4z->&? zZj9|SWs<~d8H-zX{~U((WLJ1)zs!NzQPP%e5byh`SZMJEhoGKvOY0*(!cr^{3QPmVmc(zlZq5o=u7mxA+tA*v0&OoYdiEtH!~70dHJ!IMPp_ z>s&IqDWmu4i1vBxf=~a9KXLpu(A#}JhxALTo$PXC@La%?6C4m<7TVXmSWF(^?hP=m z8@p^^#>N*VSig0gj`}oqx$8|+S!t$ssz>pBvfOXLuHxx4p`O+QP=3a4EPv%<*DK6U zNDjbwSM0v)^A0I@!~=cXd1%ka9;g|fQ0#Lc;N=#hy&Zd?x&PVzNACjecGwKte=uVG z&C1ue1K#yBFAq;NiRc{^vkveOAGDKW&kpp+>hf_V;6t~>VLcab)VG;9o!OuwzZxxYSU#Li}Y!=$`Z@Z-G7{g&)Va%KMYI zbyx^^%M@Vz_2Ad7 za~=lnV(pO*Mmr=I&&j?(U!jgCSAU%Jjr+v42iW)eU2#X;tYqdB-vvznrapH; zyjaD5uGaXw6x37dA=)!>CGTD88NTo|;594be2gnIePZKP$`HV9LXofHevED`y_3!O zw%wMJSijZqlLzD{YXiO8OXRD#T5IfMx~6Odyz`aoNMF0V$Jwxx%ukH`YJ<4-h%bA( zpSlV30ZVYa;;jD~y`t&(D}c+3uR?m;Qkg3QyV?Wp`V7ZCuFl}WAAYHj26)L=p-5j} z@+M^9)^ULQ?B(g}2bCLfxYQ276+@cw^hwpf#18)ixXWFXZ*lcsHeNq9x&z=fN1(kL z*C^h2OpWPTfT!k;$9f!V*MBs6L=>xkPc6iqKi(ZUekmKTta+%H<6Ope^{gGa9_Xv} z>xc9%uO8-1V{WdbhGZz>uJ2Z6SzBiSefK44h&S(7InsP)cfdUkL?hnf%7-}~KduG5 z<5;ve;#yZ){P^VJ>42AQk%;tdd>3rGak&NHDbF4v?%5z|cZX8%0q>J_gvXygI&|bH zYiPv#6Nvj{KJ#CE?>x}E{WKYI-;r^Zc7Esrc#W3R5cgXVwsevelMlrL`1S{SJ$f*x z7wc!~0G>W*P3soLwhw`NnpMukdcyi`nX~)-0>E3|MSCW$qwUiHarK%2UM2+X%(!q* z+Xkq7_n??7-r;42fyoNddT|HceO?C9_33%hWXwS#>NUXMNP`4bw!w>bx zdJ^Qbt?rL`40!jF4G>SBcxdwQevGda&DSEHD*Y|@NNd*4K?n9Bp61ZtTl4GUo>7kji=E!g z`q^acYQ)EFDm|f9E7qTb?tDaivi+L(Rex9k^?TV}Lwv^ZO;fwd-T`j0lpn8|VV_&w zcrFLL-a~#K{W`l(sf!2B175Q38La2meTwt9J*EI&}LT&1}y;=Arwd}wx=^+Uzt zgAo6tLi}G{AF=N$x6KmqKO2}QUH5wq^=Ieu?cX~odScWWE5MsM4nX=t2W|wqT<`{b z$io_l9~-}Dlb7uvz?BQokBd8g@|F3g)<*zOu)mD-XJ)>wbaDaH%QeTQBYtk~jB(Se zx&VFZ9JCMPE;XEII%Oi0tNkXU9Ugb3^pE0h zHQDmjtxPk(o$r_FAtXTW1#KfbRwpmO$ueSpXB--Pw&&YYh)#*)Qb zhIhbtMck({%l2kmV190`ydfOD+;ru>`SwExLp{Fy?UHhfEqP-VY^Sv+97n6ES ze0+}Sql$mxJe3z8wLYiwAvW*I_UeN46>Bf}yKMyXfBi#ozQ`-LTk-D6PAjOt+}>MA zU)?IU<({EzUbi`q`dVJI_WZNUJN*ju8H=AGea#!|LO*ri3wYaIj)>cMojbhb$z{MJ z?xB8>+k}n2{JE6{;O)0#f68qSH1n$VP-RySZh`gGO`LbEcau&)-{S=8Be`9e{q3*) zSpQ3Jq2DKO{P~}&Rf1XkC&t4F>uLPu{6;UM+fYxN)94q=n|y3Asi94Izz2unJd(Tl zevu5aX$iQ=)U#NR$GW4|@lP3l2DR}-yv0o0I!~tl4)g=o@Z;6;^ZiFwo&kV|Ho@=Z zo+H`z+rZzx|Ihax_}&BGd*FKyeD8tpJ@CB;zW2cQ9{An^|CK%9OwLx2z^0T0TcxFn z@=zu14QXLcc9Q3e4L*fhz)>sFfkW}pGhHV(P+3a*Hff0NvFCrAp)z9r>)#7KA>9SZk$U`o5 z77P)`lKyNy=##!cJG()WI+ASRbm5N13J)!_v$0%af+9U@D@siu?gYY}38dSUfoZ99 zoJj{uuSZ=dO#~&q8%Ih)iiJrH;z89{5gxWD`t85=)MWuC1ifp9_7?qVG$ACRLb-4tDr{RQfTST z3t&v2M+ezQ7E5GHVWd5iA-d#u!LnJe@e#AOK?0L7y>UA_%W0u|JM4uiG1%$(I7sbJ z{-$A)yOZZEhLO^b7K3sh(faDCdloWfs-uHa9_tY1?Zq;2`Nt6pDk(lmu26!`6*&O9 z5@9(uHjLic$uN3HM@S|nY7gg-sIo!P1QPK{EOEGqPFK5~4Q;ohf$eT$Aiax$^oI7M z^Ac(ki~2_`50-&Va5s?N!$5jh1L@t=Ib9bEI2lInXc)PxVdO4`kvB1n+}SX4kL_x_ z0wM!?GdU^7!AsFMJ%jv1O?Vjg9(S-<)Oj*2LqW8h(y+?hv`0fAa^V}$iRS+C^iGXS zOG#6tCnhOV3}Y}S17(1dfpgT!K$+xZpv-VGa6&mb8`wVv$~-3zb!7&8Mv@}>2CDIv zfsJu9klr0E1ralHiY6jR79Y-1cA6C!Km!|7R1JJnwueJ!4{xs!8THdim_q57mK-Nn zsB1UP)T=bl$Tnd?j`=%EUC@iFOe5AOM4&`%GN{XZB^t zvojpz%54E$G?vD3h5V`8O^vdDP?FmsvbVj;6sRQR2$Bv5C;xu?WOeg zstj|OipEQXvDM)Ggb)`P#&sWg#u_RU&!D8-CtiZRPC0*nUMquQSVc2o;d( zx#t@=%g~Fk; zTtPfXQk7avNKR#R94XysQP)Po5Aja+m8Hm%MIFSldusZ!bgH|Q4x~fVQe;V~{3k-J zS?3cWili)AhP=JJFaH$CL(x;567u$Hlbn!7bVy=~l6<1hK%t()r6-3NII7Yl+S%_( zA$yml&qeI7w=$EMeWN1PmX5V;T5Kj=84>GaY6OeKxtpQN&L0UE##$rd4h11b6>j*JE}Ra%^6P3He2j0HN?`%vS9 zVI(Xrhb5@&44wK@WDFP-R@L(pyknD-(v@<-muSd-j~Y$2*ayuQF`IbUnJVUPgb{Hq z8);E0O!Yo1(8f`JL}NFT%ctmiEHqa=%&g%pD(>cTjO%5vXlM)e7lw(&MuW(<7xf6Y zzN^ls*xGz{j)h2MiN}GTw#Y~N7<@%z2Nz&AE}`C+ZZjG9T{H`^6ZkLVE~C*N?$GC0~))I!0t!$*3zWdf7VOsRCorLTik`i$=K8R6TUpIAQK3)X5+)MAASc1Qfks zpiFeBFO-60F?Y|mb^**KaeFwi!oJH;xdRt26d-qs&c~7rC2UQX=KJo@5(f*T_d$?l zHCeLC0;gsqtlg5>48*C((-NsR^IiMn^fA?M6cx34`oTCuxQG9@{NSRTM^5x(zR#l~ zpGVSrgf*|x0`8wCRYDe!y}dx@cT~tymDF>jgHdpZT$dIFU7)UF#5z$u1o5Ay?@V;7 zXc|FM55lWH68e==uzeBOx&Mk{lRl;r#Ge#;bhC~6)`SF53lgdR5h!{$k&!hiKhpB; zs**NPVy?Hlr2RHby|k?cwZyw4^v2BpQFUzkpQDcT@q7$b*+%u~;4UGBm{yWGg;Ryn zZ&JWgkuxcbDxtb2O{2f%l&^b{5=#rXty;xmkh~8X*f@b{CB=%|<@gt*>Hi--i5@aq zec3g?jK;zJSERF1I-MUnPMD-BQosVDtfjUT0GW43lD`b3MKm`Bd>)o8%aUWjHH%oR zv@-fL63IfrBN(3*NmK!Wrs~F$PcbDqAWVOz<(u6H+Q1411VQ!mk~Bo4R9=ZFaw!Zz z!pMsaFkWMz%Tz!(M>IMRg%WsYp{n{Iu2$&4r1l6;fx4CIJsMUhkdTX6YF~vUSGFe< zq(b#odU_6)FpQ}l6XTrapv>gteB0e&2a>jtRmE}zw^WN}gSIg&0(eb1KnzKUsH_EA+8MG_VFgDY^M1jw*|!UH;*t zGr-Wb>Lu!(!?z(&Mk6lg3g3Z()f4e|=oBR=kLd0QGK5mA-mlgYfjpZUHzZPLM6wAP z_0(zrfNw&K8y1I5C7XIs0g}qTTQ_N$sj+=yWy*|XxkG-R6%9f@q^rwl;Mc&_-C;c< zu6kHE{}~>rQ6FmK(4u8?yrO{3@zSz{jY$$FsfEZ9fElb|!Gpx6(=#*3id`DLgF0A2 zcHyyTtdWk>Z@e0ObrS82jQLR zbWzTM-5SW!)k!4c7l>rOz|y2n8fSFC>lVb4YqgVNNQupKAf1}wp!%~9iBHM6)>Be= z!FlqJ6gKexMVnd#^!RF`1T)~ePq_kH!8Xiu2DjiTvegLb$(wMW ziOAFu(5tsfWQz$X>2|0%cJk4XeNOuKY!hwOYU&9xzUCq`RM1kS*Cq=61>Yhvq=l6T zXduiXdnv_CzfGgo zjSFkI6phX+N-0gdlJrY0+VwOKDqXM5(mk{)b3zjbfK}m{l;BUU{wC`fO5k)Ywhi$v z>29YCC3z$F8%~>%NJ=y<+9opHEGZDWHbH4|U+0N(Cur{LoGFscFq9-a#b=ZgBx z(S8sQ#~`?kcZjh2*=AVLR8zUbh3I}S&6}~bE=;$TWyk{LsRtXzvs0Fw^ySCITnFTw*Ll0IZ!r_rJwJ5q6+9OrIGd#^B*oh%eWrGiwe zIMnheeTe)9P&V5~$_`o#(1GUKjA{)wrf7XZpjvfX^7#}mXzGGkS)10^boznW({qJk zUqRcbjX?UxM63NSFd_;GWjj6w4JaKxjIC;UgUym zkM5}!2~;~QA@ad_l-eHR)&r=&V%TO$8aSB;UP_ikjixC zO<QZKJgLv#*9Wnt6^4`WM0h<|O8B?njGZ6PeD0A4LLOBp$qkySWV& zhN4IrtCnAj6fFvZi7S$roP5%rrBO76^4G3fX%U5_^3z}oU?ZpK?K*@Rm+#Ra380T{YlH&zo>GC zEi4>&z~LwG&4L2LMDb>E5At6`I*>#q1v@rGVx94%YWo6v%*kl>UCi9wRx= z;5dMeNBFjrT#yQS{t@*ZDmr*sr}kGDO30sV4rt5Q$u|a%@(D7&5qVci zowcxP{$UgkOVqxbC-V1!lq%}qC?E+{F_Ri6L`LZlB76nh^BTk{cX);Lx-ey?PO*nJ zTmeR*I(PF;qEdm*4b}3CfV)Lz5aVuM=5t>nT5iZsMC(=`d;Z-xsF6{+M~2iB8Kvth zuqL&Up<0pX(r{{8(Y!MqXo3FMWIvFw4{@`U4sE={yy2hpVKZPdP2|Cu8Duj+zF?6d zfhC=`)EL6bkx`LRb12t}UJqg`ge=l&eV57*5}H5cOE_Z&6t1X7m0SM}5yS4Jhjm7H z(-q*+eY3GnQ&dPuHbV)u{S_j{5t!Bj>zk0l&q%l1FS0@eH3=8SR5cAIO)xq`$`M-h z4LXr!gwzbd1XF288=vG%Wuhv;bZO}$n*dqA zzDx}gVNS9K%4N_>@dBKPmAr^Cg^L5E37lO0w!uw#z2tF$WMz>%K@4@!YP1C?;X(d6`Yc`WF-?2$zGCL8 z$4w&kt&aU^#^L0(We1Rz9tqu^FKtbVJ1trjra-^?kZq2V~%l6~s9NC>BM_G5M4mN36;)q`e&?L90QT@eT?4 zcywp_zhGAsDzYRJt|ATMkGs}X*+Kg1a3Bqe!}C^w%7RcC2h<=|>U{!7z2!LO%pCHP zk==SW-l-XizS_eo>Q*PmV6n_%aS+~7q29&1s8!Z;Q5oO5?Z$t>#1I`E74Zg_g-AUV zfn%UE+#<3Cpk}q_s4W~y6HL%BlKS*R`h2Euc|(T?wsaaCr&DJeY!J`gIN{Z+=hy}| z36gECeZ?nS)T`I>00eN0{PGnYbCCZ!YVB!|cj!KeqeMD94LZ`1QTliq>Y*m=b-|R^ zA*T4&b6KI(S`|ubJDhk$m0IhK5=nv;-S_j%V?j_9JC}V zE9o+WhB-w0qm_LXPK5D`AX-4PVM|H0PD-M6(j!~-38;`g=(4`@xUf`Nx-u~>LlvAe z(;>QTWab1`Mp~kv`KQ%K2{$ zBl!bVww(S7kMac>Oo&!pB>y@|i)ds8k|Td8LzXHd+qrExg+ptiKVy-;(D6JCg@`^a zKdpv%i^%54PcI0wu(q)VNv=}HC6{waJ!#Rp36+yRZ9@Iq@bj2$1JX46zd51;9i^#e z4XX}IG%sGjCP1>M-oXzJE^<3u^;wwsiS2)mj51_Tvoz47z60sSU@CPMkur;xf}9eJe0ssw ziXn3rSW%bh6B$L`Nq*8Yr0>nixnOg0F4){cht%iA7&X}Gvo%B=2yzo`UY;6PZq)@c z=Zh3U2DL>hbsmHQEv8Kb(yH~Q=>%H`#Pou zGl=N42q*iT)Mo`ZOkgY&_TEOl*d*RF8C$qtewYNo%C4z~a3w8pWj0@k3_E6G1O zDJyD_LcCC)w!M3|^*Bf1dsLi|epHJ2708){XHMk@13>|h#Z z$m(T5Y4k8x6ktJR6y=#iV@G1H*wLaF?;8xjP}4VxCX0ZU8wXe{VZ$mtM~Bsh6q>1^T7h0R*>%__K1rGQKN7rPr|b*~VNga@ zoxs&6J^{V2DLSJ0ZZD}_foe)wggZXm$cQweWxrH7+r%a#FD!|WAu9(gDN9gVMj|;f zFW4Ci&3jl&hzc@(V46kq@-LjP;jMB1=Lb9=`peEz%Ct0wti{Vx%B3 zW{8+6oX8{JBb`&wJSxf~(#9poNE*|kZZ)BL<@t?gY z!hDKcer@(4bH?_2m2KSU9 z8z9Vdw%s7dwv-$@ReyiH2AQXBg=wOSj4CqOXk3;|KBLv75a-b7S3@Q|ofH-# zUKbb_nhX){`V;LO&Em%*R>)tczm_#}QO^k;%D+mj?F%)X>(};ix>n3ZqF>OC{2jv9 zi@w!xHWLXk&9CDO*8^*PNt=BGoQBDz@z;IIEJEL5~&0>f%H@fv|Z|-q>r!`xfJ;|T&T+4(^WNw51BgT zBs!6kA|p%mZJKYLlP;jV@S2n-v=}fS2)V?lpsqATT#)(-UiT7poq)qd-k7LW0wVD= zkmQh0mo_BDmKJELCijI~X7*|m*3pG`)r>(@X?oy)be);>8n=kdJiMZI)r=c9_gWOX z$!M(6z^&w3b*WQ9!b4Gnhh3zY(M+V(fUyfS8`9YJb3LcCIvKuz*{AHVF6B~@V#_~& z*_2eXP$3u~@)o&JC*2AhpOlcPkkR}a-pO)$`*4w2C@iDdFw$&#bg-XZT<*$qIe7+y z00l%4G|v+wx&h(0%lG~!6^$mWV?H!;W2)PkgrG6AmX)$l$SaXjUs0OvSAs=5C);us( z?^u2o(6gsxTB_-CjR&~-Fs+uSM6wjRNy89wCkXVJ_=ej0MsyRP0m~C!c2N z1OMXQ$^wiF4Ld9eZ~xoN6H=1JPf8L(O2r$5^phwOlW&t`1xAEvq@Kp`i9`&PrKgi6 z3eijyv{F-areH&%U~fz`>jdu;h-%fE1!*HEuk{nOQkoF606|-H%R?qBh!Q2+V@(#R zYf=rfl%>p}(zU$0{Lnzp`SiHuK>PGIc#omFGoqmZ)ST8GCE&#uZZD!IO7+@k_O1I8 zcMA<>v1Al%zanB)a~>~s+eAYT2sZDDjBk;?`cK)Dr-P};)Y7)+P9!kI-N@@S@%A~9 zJ0eg$# zhSdgBVYtaHyRa0;eqZ}&ZC|`1j|DP-*2ijvK3kzgN&(ur$h|}@0o+nH4>Jx=?HAMRW z)u*L!VpH`%_q%G)t^Bl9@shcGfN8BSj z*Ldve|6|qQ6E3U11Pop89#?Vwz6l;@`kQabz52t*0l!~=Vbg19E61aXG0!c!&q@qE z(WQK@`_quq_H(cOY5)Apr%@jUm27x%&7dDTL~rQwM-|^X7H2C|tmhY+l$B@YzjejC zijVtrQQDj!oj;5U1I%2cE)0|+VK62>IZZ~gtEsvk?z$zm4;&3z1Vg9~)8{)HRNzJ@ zHBUmX&8-@bl!EM=LRvhI7K3~$`ppI;H)4lmIq{ZHNr=y()0)X|CLIcUQmkp2o?k9Q za%S=u(XTOmWeF_&+U>-piQEM^0B5d%ueqMuO|PaaSR`lKis56$NpR4 z7}9;DY;P@RMUB;^q9Uj)UtP|R0e{#zfBU-Gh_Vv^Z`|w$h2D~ZZ-)+qk&$6ZuG8gxH^vABv zPJ_<)x4jqhw4F!ViaV9f4)?jSt8JO)H?7B3_g_=;=BF~nBDZ!kDznQi;zFgtqxN`D z?`5}b(&Xb8u5SAfY9dh~s-7Kf)$U?=3D4)K zli`dN?gCJs9!SRPHriplyDW~Tidv|5VhQzm&h?>|-91k!t7>-+!s3)V_?$WiMz=^I zYxhQf7krLa0Y8*nrPKqCQK>KPCV=P zT!AB^p-(T zfTF*u5^k&aFaOPiWjWj0Af`)7Cx;oRO$Doln%=7UB#O~}I!lg`LjAD)>Vitc+|CzJ zC(lX5X|_cZoCZ_13n)zcU?h^^q8cD9sc#s9w&pbbCQQybT}{6w6!s8kK4nO+5HhMl zN;z7zGB)QnvN=nlFyatGF|CfT#u*XbK2T-$Y84I|pY!jem7Z&$Z*W*gCwIptZp;?Z z`av4&50$0HrKMpjgYoc5j?49JVPW)1#M8-!y+j! z__Hq8QFP*2@QgnW58=~d1zPG_3AmmR?RpWuha=#2S&3rqnh4dm2x$8T&gadyw?$B? zUvsPRFGvS;%D)9@ZZca6!TVhY9C9D zUF@HVS2&2&B)pB|7HWlV)m|~*7WD-%(LpP1pP(8xHO>-gLwH!Q3?3fpPt}GxkKNL~Hx=2-sx(v*2y`m(VCYDIrv3gM^;Qk4{xI?^ds@EW@j|LHL z<=jSWTsF+_)5nMduUl0ae{Zx?{SWKQdL~Do>g8`8v^r(>+>B3U`b{cv^PTz3rp~T4 zs_$65H2n0U?7yl8&Pu8pcl%*0^W!A4X$p4{>GCe*g**hJ!MotkfPje79p|L)lxsp`xQ+-kp@jQ>_z3U8f}r{O1#WeIEqjPi@LiGUz1nWQ}xX?xKm z5m1VVRPQ}dkW(u!K%BUP_L%chV zz3l0*kegd2t!Yt@rIW0)>|rx#|f(#VCXMVGqwb_2iu6KZufB3nwQYF z7m3sSmIRs})Hv64(MF_V%upW2@4{utkKFaSHr6iG62!br84Q((oMU!vW^Q2#`3 z*qQyWmr)q1GA7w0B0b7RipxNzkjKjvB=fXfsnfGjw-|N%5~5Io_>HQZXN5FW)opgc z0IM7Zy`1|XlHo4rA6ep3rwwaeuI&U2L!QKegzY%v=E6-K_&ho(@ymiMruSIBYcW8^F)(M z6Tvscyb2X_2EE1&ys$xG7=)|8ZSt z^I7ed1HI3sZirWZH14!{m=CMxpMMaq-MqoDCGKqicWnC#aodAyB-TH42RzB;4C3_` z8@tzf_5yJC-n9|0e=Pp7Vu>%{slU8I+(D7t*Lo}2aZi5o^=lDt)cwY%1|f35eV3&n z-nf41_-YHc0PgUt8IS+b$9!2;G9Kg?-(?!&&adYedwlv7;Ki4>LfmENvNd6IjsPzI zu@~Z=wFf`?c!q8ll}Nm=Y~}IY;ajdBH~@H;{?3T|&aOG!{Kh%J`VKJ_+|T}T z8}Nqf`Xe4u{i=NIiB5oLFZvVl&MBrXhV(xU_@IX~dAwh=@3c!K+duhP|5^|6E?4et zZriH`;3ZHWk<{{T$Kwlr84;7r_#ss>n8$yu zaJa_{)(?@@|3*BvO+YoLFC^gy`2|asA|99F-ucnGU4Z*_u|qsQz-VUzM_{L&Fm zboH!%;o>{MW!u6L@74QFr(I?K0KBKv2l3?X2Ug#${~GY1>4OnZ`Mjg%%|(n4y?l=# zu58+Rym61-KtCw-7UG%JDvyvP4hLL*a|+^FF~82-$+|((Ve7Am_q{hRqDCU?=ZaB7 z5brl?T!R@a=^jE7XtSG*c>lT$x2LwO1h{?2frt-qoAj(l`JVv~ZvPPR!F%?tIPz>C z-~-1DLwsbhnO#f4R&^pz2G>A*;&%UeAs^^gX^A8vtq0A{Hal%_r3KQS2apa)M8-zDu~H#74K;2|pyA--?(-6uz{kZlg+7izT+@%=NT_oPF~ zNqzD&{WyZhxA%5Ef3Paxfm65e_>EFa4}`J#XnBQ~w+By8%&Jg%G|;!W{uk0;+BjA^ zZZvDBd9#X$UtYI!POqOGfWAzbE{I*tlv4L;T&EKAwHf}K#@Yp4}NPpMy z-s8C~+yD=#!OP(Xw(^(5jRpZ;s`L*?|6=*rq)NpD0S|o6&%4(P?hjtvpUoGW`$s>T#Qz58{V>88r`Z7w`H=Uwc8*Ma$(K03Q^Ec7=^?g)6IOl@9>C z{nQCaU(fRX+Q)Hq0XHpKn#Xsqn?0fZUx3&13E}ZOvx5&=?Et))T@d08OHcXQ#q}lN z;TO*%?pX2gj9;eg1w1sk5902Rp0#~gY!={>IZDKv%Kk9=Y10|NBV?lxZ!zBCy^ZNY z!26yHK)mIdn8odnGd(_h4$3i`Hgi6AxR>()=w-(xNFUO%&50vN1_IvBfrG!=bV@#c zI-)ZBE-R@8_XnG<30-DBsnH(jn^o-1U1jz_NTqT-{^9e|^~S9Kt)~2fc;X)p3umrid{`%yr%$RF+P--V`>ryL z79)MH0f%C(D$*kwJNHxy*@-}Yt>5wEGVw^}ntS(LSv_9nNIzK`)hN8}YQTGr7>xLoLuWj@|Jn=i zx+hN|J}uIJ|A2ix0dKVQDv$s6!?lTb=<#5Qq|7{?|7Z70&5Sw!3GjM}H;{hr-Hk_{ zoK*2!a5CacOx{guJCy02G~-r0?y)yD@YrLhr%orn|Cj!dl~LXJ8sIgbqrG9X?ER;S zy}z6S-0#G5tY?MQD9OwWWi-J=J9;8%ET#XkYWPhfz78P{c4ZU zpE|cv0^V53_s{Chc8AvI6$d=jbT88X{;BG!=a<$2K6J$_#J3&$vS`LbCT9jmPeOcG zRpq>qEoT6|@rhc9@0)+J85^FV$@j(qG+L+E!+> z2XN0dM-jhPuKTUE&6(bb82$wD>khunJKB-0o8%Yc`HIIIy=;*5mmT0WcJuAL{`7Oj zOG+kxs=1)uXmg|4n?IP}02 ztmn1+PWMccYEX~!Hnb~j-oAO>{cpI9Pa+9(yp8nlOic!#+TR`M`dY^)DwQH8REs8 ztQb>%FS8rFjz#;ywxsh`uZ1IO0loDzv}bI~-fB|)w;61FO{yQnddjt4x90aRjQ?vd z4dn5`z84Po^@VyYd=FEMz3GiUv zZnU+kn73#Ai#CAwwf9GQ>kf;CFIZO{aJ!ld5U)GJ%+&2tNx<7)v_iao&K2{LyBVKb z)!T!(z2$8078lw4HNJ>;yRH4Gch3WVWBhES%tQJ{J?Ax-4q<#{+0zs8#*0fYG0)fq z?;YTW_O`84n#8f{bmlkpZ;tkot<%Dk!;*-KK;IzkFxKM|JL%KfmO+5KA6mH;S`%+VQ$_gfEm;H$ET z2P*2$J>4(?aJ!T15Dz(3ziqGGBLVLha|ZDa!-mGC{Ko7etF>s~+Qz)@?kBH59q7HD z;XJjCZEkirS<39X^0$1jo}`8gF52~FdVi>MWyF(>?u7Pl>JIhzO)7Kq<%IvYmqfs8(4$1O(e^$Zl)wl``kbYPV z&sT%~AA8RMA61e5dz%mtZj330Sb)8Ik}20x=1oVua1+C0W>H!|o;!EZ8~h zy(=j8uBRe4z=n!lIm_A3a(40T-T(K^yqPz%GxPTCCRqN*{(hrj-t_tA>+{V~ll)EIIGX35aCfix$Df=?@{c_{!ShetYR@}Aeg0&UzkcD@Jb&&s z+iZR92PcvI{og6z`F}s}!+rz4-jC$(UG_82pSN|NA^9WeezjEW?&WvLo;(CDX&s}!ZneT)?B>4mP*^8IIeC)W5zg|N3H@?qhJpZbn zHhgjAYqLrDwhcJnvi&t1mGASzUQ~{bH-E^>-+aN8_qRT}o|Heh#%uqUQ)}-&=|T$U zXI1Wk{^r+1>3OWqzm4a= za^o?H`2#5bJhEyP&;Qr5*e}KXDLgb^{wB|VZ)M{NNBm0jo&1$N|NVJi-7uv86{O#q z5gwiTWPH~?OUfvp-!;H1|JgoQ&PzthN%_j-_u=iV%KK|`-d`t>{QZyd=;K%a=#0IP zJc8txoOClU|J9wJAAH8DVv@h(lOCLW`%d4p9$cUDOGO7C$;Dsg#IUO0a#pr{-`Sx!V&Udlv+WA5X=X<|*A}_zo!^yjo<0yVh6`sfQcWu17 z>7^Ixcm}?}`RYMMUmw@dd`BK>fBeY@^76%}Ex0Bgqjsnn(=O-vd#%`S!|QhcnUrtZ zi1Sy2_KmJR^|_~4k^E#8r(c5(xMlN^^9Jos^2e+@khfEQ%j5GlKCO)8@AeYsZwHOM zYkBRa-_!BWxrg&hgGOz;=c2-uRDRs&>X&&tmH9>gxP4}R!=`Poh@+G@}k|eY);RCQi}GoH zN34#wb68W&M^9e-9ckw%o8#L-hrPIyz4`S6N&d`A4^F18IP27BFVR691jngR7lPJHp zN1XFTgWB#X?%VOVsid8zt2kdVC^=z=Q7gZrcxKdHf8*^WkNNMT?W4k^{ITzx#Pd7P zy>#Q-4?mye59Ms*uY(SMVZ#Gw4w_8zcX^xR)j>x*`Rvb|?KF$z_kQkC-p-M|uliR( zDV4u!hV9PtkGB_HP_^ZAr2N>Ohw%J)Ta=D@^;e32io3WzbI?ii_Wb7Lp|6wjoU?iRH(&bR=%$HNNdBgSIo%v|>j#52I_0aaN&b|#xI8uJAD_?s`$xULA^FiC z4&m+G(d)%uC#`)y$scithkx$a`O!~1-#LloZ-3ZzUitd5r`Ii-OY(~+jPddpUiRbu z!zo>!_}IZb|L%47c&Fgtnn$lcz5esmsT+Sv+BxXWlX?07 z9u@ucgO(jg{#M6uK6cQ5AO7*WP#fjvH<<3t_v^m1pa10UQc`~R`OolnzH2?{k*&_7 zaJbh^jXeMRBg&7BIx$jy>+d~0{Bz^C2lURXB>C}vhq3ZIth4ThOK+V^_p#%NnO^=0 zu?KD#K;dvi%{pHGb^ZSK_*u`8cIL#&z5J){s2uo@&q)3T3%qs)41Q#&6`}Ts^>+Ay zmmje5&BveF>`+pE;z$4F`5Roi!KtIebewZ0{mApT7*X@(kOwIJnsX$VgLc@map!{L zzHTP%Or5hKFTeHeRc}B3%{e5$f5#p?f4ll&A$&-v`6DWhollf8ZX>(5`O z^7nE`zH=U@%R3x!@_HxSv<@9-zZW=PvBLpR*Bx=uu{J5c%Y~ou_DjzhIQx-jsebI3 zYmegj<+puPcKs)Bk@90z)lsW+Q!;NWxH`NMCiRXXzq;mK7oyRRadG;okr>%^vfuVa3+ZkUxe=xrH@mjRuidJn z*VN*d9CNu;m({zj(#4-llgQzso_gI-GhMp5sgmUnMmsXcg5!{bf}?{)wP ztycm_KhFqm*@t@&h>E*S$NS*F$l<|R9y@LeIQYrJPwJL6x70xKTimE0dX#pMYX^H5Iw3b z@&+VW1l~i3I`;WO9rA&^*FlXlaLoYGA9!?xz-k`a-WX?+!9qoBBs~5R^R9OG$+Wg^ z4KYk)(iok>5Ea9?7aBmwG@fcrAY5ZO5O=TLIe1k`FfH9Krd7}c>Ln;ys!BFRh<{6h z=}0By2)ArB9SyN)L|RwaZU%?Ooh(guwYEACOE)4!=g1N&L*&KoyP!MNUEdt&PCg~N zr77sSp(6!1=&6|q>W3tPMu;`1?YK4o53MGz}FZi7|X(TrJ|8&dzd_K z5qi4nUr*n+_6i{L*1gD8-wFv$m)AaGi_C(6H3hm>&F{1Gz>I}8PDc`BIC!{~#*o+C z@b+&B24M%n+}52qa7;U6(qe;F_(Fc#Tin3t*sucj+snzMbx_8SdJ1A6I~}c+ECN>H zD2PRyYza?y#*~j3(a}a8&c&_@jKJ3Ick2nc&T5q8X1=b5do(L+#~1It`;Z|p2k$%^ zBhI*$q{2R-x?nL_Fd8FHp}}U#9fBJmDgs+c;~2c6-heZNvLOIq*+}TU7jQ&Ez==mI zwZcKUkoa976lsC1@CBR@NTZ=`F{yF^Kf0cPAV?lKFd9XTof7%HdzB_ZsQYAlIO0er zgR=5000xF1lo&cwW0EZ6gKoU;xr`7jI3O(!?*;`DdIAZx@NREnIy~;e-y+h8N}fDL z3lr(C=S8JJ?>#HyWw9qhy8+0MH*W#f>}F~5fw3(C94UB=P?cifY($x!!TAzs3ght} z$jBVlPJ&;d4S{5&2_z<=PKp@}>t&~4-ShiF>V+wLRElff&zG?_@(mRbI3Hdn3dab4 z5=|I6J{Q4ym~B!t)lxYz1AfcQL>aMZW3<^xrhumyRa&ygo)j79Aj%jgIm8-%L;~7kc0X)ut2-ZWU0DUb`1e~PukjWl=#=%0L zO7u@l5xC7n^93R%#E6m~h4m-#gaAT+>~{=K_9RHhVhXOnV)bR&M30`C=1$Vv2}PN* z&21CkQ?t*5bQ&fj9${>F+UpV62xUoh;LvS;+ZWp#DToXB-f=<{gzrkwrwNUR%dICK z6GGypsS#Gxef$L`&jef&_Dm}1A^_o}W^*)HgSpqG`62vv8S; z!eXdLetD7vC!IACrd1No0<}$0ryhuAhEvISTM=ov#+lIpVh9ZY3`2Pamu@(ueK1Lo zD4f1zydx2Dib~ts;_xgv=#HQ;|JhY_v3KELBe5yGO95MAO%%-nROyp!hZ6$28-?>D zk4cNUz5%r(c;2cYRbUE4>xK+1E}2rYd+{Eg`G5vP)uHv(%gSWKlFV!9N;#A3i8_N3 zmLBIms)h|Nf`zQXRRvy^V6xedN}B0F@K;z|6`ob=bb@*@)ip7ijJhxul8BY5sTx1rU{={b?aGn(t|G-{GzUvCl^f#g3L+8iP`UjOb23wb+Tkfswy z3cdoC^Ak+jpHA#Q$G59;V?lhL#Yuak2m`GPFBGZq+nKjonHcjv7gj;ynF-z$c&JIt zNP%(k17TQ-FzNePJ%rwg#ft&8jM-hhC?L^Fc%}-KO+M_TH$OU93H~#+FTuZDI4BeC z0|n_rt8ELnCtKnvx}H7*^(xl5B#sE#`c+d4(@5(+gv6^t*No_)y7A;zpu;LfmRFAe zx5Uwf=g(dB4+N-eodUB0{44}&o-Px8HqA%!(5|b?#%IwFPGWMsuWgPFXmY*gymND7 zA`a^3WU?yWhHTXXqT7HB>gmI->uPu46;ODy9l7?haHPe_j=jntr})l{?PQ?i0b*fW z7+%-OQh@e38jLqXV=WhZe0Vu;?GzDpa{WSO&6VOvwSeAzk3@4Bq{Wz|@u@UiAmQ+! zZcGpmC444S%piaABDT3Bxlu@6Qt@#FHrTM9R!yW%q8@@K*Z#xZ4qx+rPGArwfkC?lMp zv{j`NT1F`laikcNj&DkF_Ek!Ax+1WB`zmII@C)890BR-Q8ZS8 z-z?}mZyiYan6d|1qHF9I=)f~VjoeD$vmQv&VlDFvGJ$F-^fw^($bz2}wcLUD6E+hG z2uw&o;Kc(W4O$*Nt}?J&k{=T3oMF-2Jkqjcwg4)Fsq;h(9cTeWtXZ(l(jz-BoByxo zPo7ydtm677&N{toqi4T(YWrz$4hG4FUQk!dQIyK==4@s)*jL5gp_94qpeI*QNM(2N`ebb!j=f@T1%*k}2u5nCbMK$-#c zVmi=`=Ukd$7Xkv>0+Z1(ka5P92lc3h<_lmWnL7M(aDcf1$G$?tM~PFVkAtP&YYa?Wu2{NM0Gt!?OTy>gOlvB zu50tvXyYI}Z*r=^bng?8UDkEss%OBvea$_9aAM6pfOwH!^PSg;q}yK(>=6!wXukIc zM7jqiqgs)l@Y>SSGLP|FjSgaz@$FizWTpqlF!k>99+5CQSlOc5-kPQ}|lN!Tl9Ng_B-H*$|7%JHfX0>sN14{EZ< z?19#I(BtQr?ibw`GUFwBuUW)Qt3mylCEqS#3%@DAeDU`)EOZF28ipW%O=x`X$C%jB z)(RvSG8@rvU`NZ25O>S06cABL;-5c~78R)y6!=%eWrdBELD5uY67!Jk4vi`>%jzKv zU}SFx3Bt_Vn;Ve^N78X;x)T@B^J=sb{h>6Auw(X)nUG!&UeM`@Gf(UwYtDQm7Hv<0 zBNMnX7coO~ndsO2zj)^JSAszE6ebA=`%xsq>?2L;*Av!A$+Rf#4ZZ6pg=-OpRoakD zCBl&ubM+&<9&mq0j%OZ-C}8!7I@Ppjy0Deq zV!FDm7A5?%W_vT-lwDgQ_reNS)^@c;S`y%bJR5_LNn}+h=0Z=p)|P8)OD;FCqI|1! zP*h7EJpO|Tw@X65e_;e>K5_}!Wv<8c+Y*D5xti%DD5p}=si^IGs)n?{u0m1fXn?2* z5ZbFqrMcroMnmbij+hXSk#c1^v8me^Dq&PiHtTV-rxW?93ED@;2|t}=s=eo=G8^6p zvbV-Wz*e_pjAAYE)I6uT`cSC*0_|F%?p>*nj<`gTE8#|HQ?$7Q+=$@*g?k+e zItx_u*`x+q6fX|xr1Ov zsIDn1@$_=5-LharE3W1YM&l{Zj3?VIENaOB7FHJ`Mi3|E?10>h zTf7aA*6EPuV(K0ez$SZNEiyOqvBtaMBm`|dAu*A1DSr4-1qb|k*XlrdlH;M&f3+L? zUOK{3iAp}g>Ns5V3xda_Jt2*mZV0;DVxNd% z^IkbI7frnpN3{aaoh&LFUMA?+0W4T_TO$1G=7<~9?j(q&Q}>-tpTM>5v))!6+A<>` zCVT9bmh~RY^L0#F(p&e`Sos-6s~klb2^*;N-xD0g)vsn#jy zMz8JSd?^u?7$}ZZ6q{hidlk9eN|Cln#%t+AK-IOxftiXcS6^uKmq2SInjZq)8#xZ&K~Ug^y2hZ)-etPCj{Dyj* zQl1ebcUz{+k?mP6p+W{`MlwBT5`?Hp7C6ON`}^#-0KKRIp%39e9qBh3NBtS3|6nq% zClh6B%Jvu{Fu@@s0dR>7l=tY2v30lbZ^xusU*fdUruqRU=}Zd<&mb9b-U;fG-=9ac zvcATN9{_1@Oy?n^>w1Pu;kqp2gCJ0i{3@`a2O-^q$+)!w;Or^j1UoChfgV<)#9}Rn zso2j$f}n8r6Bi0=5(`5J`RPUF4UNf03=C=Y*L{t_OA*cb53P|F{fD+>O7o#I7IxY? zH6P01wU)-P7>$i^gA>4W^a6FfN+>qs^#{iK zB~V%V)k3p*gCT8;DG=X5tVa|F3;a)@st~ORe1giIWF!%7M-7xlT=PQtyKjw1AtDGP z;L!vAnoYq6G8VPmM3ZAA(O2UAtOBW`D4kf#isoL0R+jOCh-vV=xQh=2n zoILW1!=`W~2Ve@oK?+xK|9Bi^Pg^ixk?gII3_S_yVN8Ve*U7k?qK+sVQc_$jt1@!& z7Bngf3<`?>w_1nQv8m7Dra~Bd8{DXEExiNYVnzZFNk2W&Gx8S68O8b zOcKV-%mpwDFm4h4Y)N5|xjwCB9gTp1qBPu@u%}4&9~1hmigyBii#aK0R6I^DQ(#-Y zRgupl5h)93+sO+WAwOFp z3o2>xRP;m=5TpE^h9C%`Qt0!Hfw=o|;Z#QgUeY818)?i!%05bHR-=z+c$tPZ%_s@7 zcMmiuT#;Jon7V!4MrA3|;KonxkzFQSRu*H<#Vy&XO2ez0LRqt#)YD)`QblKt@znY05^iN9Jbyk*((FpZMatJDT8@K?wF*CRB;zoD@-9wJ~ zWUc(s7s06bZaTlsYeW=U3~9u_J&5OiGb}a(7TsS`ZEk?~o1l;!e#_H#8LWJgp7iV2hk&A@rH1W!8NnGBn!(r5=r{}ROqe%XK7Z7HNm8T%y`Mr zHLQUhVBob;z;6!gl?@zuwivu_gpG{3bH@Adzjg7990I8ZQ+99*%~-vRa;rw;^V_ik zzPf>2_ym}0$bDotOaD823M_H2cOkuoDK}0p$CqTterA%cxJ6E*2X*NXlkObN(C&r1|+nKMv~*;#Eq(%UA@(*rL6&fzop-OBEB{a(%k|IoXiFsPiRJ~%AG0*dnW|7 z_0yb4D!pNeSCUpXUB54p8(Pv^FhlE;>m`m*ZlCUhW&nm}H6W>!l&(FP)|fq(qOKR; zJJ&s;a%{B8iF8F`4zou2oFlgmuR_#>lF`dFAb0iHc7vyhiZb}nyghZRAu$B}{vp!S z?ICT6Nyo}GHzb;pSk@rKnM5C5TSSJ_eQ0h-C6c0$7=XPJi&L4h83Hbe!x5EIYH4(^ zf@ygyT4rHwFs{~@kUqvF-CYsb`poRI%*LG!Bco zKYTvcx)9Qtm^3G}yt#qi^))EQvqBDtOYnYi76;q93`S@dK&4+W1ppa?xKmgjkAX%W z8nOPYk`@fzUK^KVD@Yq*B4SV`t{fl3U~-#erNXtyzdH~Yqc)*}B9_( znAyn6TEcD3oGeSIOD3}}Sr%tS>k|5mbApxG4wq>uq`NWc=~}XL7M9hz3lYtNu39WS zqq#x0KQYifv(F>ud z-~tQEu1P+M7W)z0NPLoc5GEo``6BD+w6?}DgsC6~1Ki%#c)xgVEZ){Ux!$O^aFuSN zWnmtzvRWUphDqB)aM?D1v<{}_ws^?3#N326!FAQC1>dO%d*}T3K%T}pL7DkEaqRZl zhkth#tjDIXIQbAeEg#&-@|$x-fCyau1B=YLV`?d~2|9<>013{0s46FV2s5^NzaEI}wNtX!>E2FD7ENLSY{4`R zH{DPbha4%}3B>(qkMt+GFLkqTQ?Hp-E&+L`mAMVj<%vwgQwgui8Xz=gOYwVxSR+gT zKpldl@g+#lVA7yp&_e+wfR9#zmZGQ_IGr?lvaDJb9GfJ+OGa_cN^2NMHWc$UoZsb; zP}g>0Mllv~yX@9(XGah0%swh`?M?D1hk@bmY8)wWE7oP0v^(K6gr~ztD_>p6^hM9a zkBBM((Ix<`2fH$G0}R)$hBOLO?t1^aXe-hC=iQYNpVxsNo~ihmMRawk;pG>&wB&^i z#r0?kpdroZ(gCY)Pk@CDfmd`0yrM&S4+cU^EMC@xnz4)-hf%e8%7e8sN+4`OyC?N} zLV=4K%~G!>MwwTeQyqy=%d%QSJf12NW~{dWBmTK>{s`b(T@@#W~a}H^d3O6cNg3nW<$JG9ySSQAqzzAbtq4D{jyJg zS$9O^#Y=8)JonQDzs%gU*Dh~1-nHFHW0o!(cW-5ELBFHU*e5l7qg4}!mfmzt$Dj?@ zt=hW$B&X=g6(_vA%SC7H^2nE0Ett`G)Zm$yu6S!cYCn&~T^I^!7fiWR%n9(Q8-nNW zpb-B3sNyhKygaz9mIwX`d0knd3akI+$XZC&3ozif6giQiiZbv6?R0#74GDgiYLk;$ z<+R4p*^0!ump*%qkBB<4MmO9pp#xGmH!PxSt*9ughIlp6h-kG)8u2KvBo)tm6@qYC z{-e-5f|L!#A%|AigZc4C<90Sio1G*?SE;QULIWrI?Idx}GqT@&!OG*U;b`*^&IJ zkm-UHT`a<3Ni$F%56j+i!$#-B%n7yT8K$U;F_I=Mxsp3*HA79kCbQ< z^T}ayV>Rho!}84{CHCY=M1tG|s*p}_^m3ypS+~NNL#rTxzjWyRKrXc||4KQib<`@1 z5>1OYB#VFqwK$C(a4oC3rX%J^4mmQ@>Z$S>qmI`%)#f!`YMdwbDec9Om3)MD30B3`SwP9`v9%c_CAmR zSJ@>-8swo~A^hKJbZ($78$J}qNQ_;AC2|C?Y|L$roL3#57a|;INek@1;Sxf0I(r1B z+*#U#9qJ&Kcai8-Nhm{EIOc$7NkT$n+P&AQhq?oAzaO)U(fO>GAw7#pM-+j?(u?s0 zB4y;-Q@x1}$+E7oSQr`;+wmx@rZ~07DbyAPRTynBdi*-V%?e21IBGvc=$Q^O`Oyo< zlHrowE4Xh_Z)25iN8}~Cc->&M>|o_YmEUvOr>gL*;azY&6-latx3!s{Mh_irVsViM zO3n*)?MlK{uwXaFNTs#YqwVd$ve1Btl-;A)CmTFqFW>e_;Ir&!VNd%)0FSoXsuv&_FEk#4!4rd7Ss2_|VgeW} z5=o(H0xlQosVI`FepWLB8Wf9wro@S8iUtk7?Q)j#r402tkznAe7*QK&x!pM;ADmH3 z&HQA1IqW9j9$SiP9P)pcfm3;AwnLQFlNtDo<6zqIY}DJr(p2I+aKh>WvSHDC0A(PUt5ZKVSz!~om~*AM1=)DW^Yt3R2CMiXIoP`EzqcjQTJp3NucosWE#FZ zSyUQ}hLi3DrDqk%@}$F6Epa_tVn#19u;Is&Af7oS$Sp0;cERmN-B+a>Y(NDU&EnvM z-DcJD-iqsd+X5{Q8#*2+ANkMgiB<5SA?*oJTqjad2rq#ya`<@3*s^*k1z>VrB!LI$ zPgJB@)D*#x9&M>2yt|8kpaW194TT)&G-EZ;`Z)<-tD}47C)WpRlb>UaP0wTAiFH}ZNi)Mr#j&oO%!i~E9!U)}x8H}jDtLHW$5ChGQ zcw=KnGthxi+Xg_j>;4i3>wI4lz-&GEHwL8WtC5w;n;n2$$T!KOKY^h6AwjX@d+Er4_Zro|#L(hBbe#SJdqS`tT)P3=N7mE~R=wGsimIt)X1 z@4a>73J4$=PwCc;cBHE$vT-!4)#OUFZY&B7yOR5!pu14+wb>Fv<(jrCmkw@!=UhY1&;D;NGD^` z;gV+O_YBEnErW3_#uNZHg1AA!&PaX=T0mtUSn1BF5=r!}N!SS*DhvkyC?c&UNO1o* zbl9u5h_y_Th)WP)5`#y6 z-I0=VumHU?kYNdrlNHhSUZHq$JgTlGs|f^B!`ji9u9a!)mW@{F?i_b7;0lXQCmN~7 zW!7|)W3EV{=>Tpvrkycmk0D^gtUu1n5=`Al@m5b;8}h1#4K7+WX18fqz49L3z}_3z z?Mp}>W704)z#&+0GPETbRUSHm*#`{jihF$CDEvv z3kj|$D(I=A-}D?3FqKZ5rel1WDBE|E#9n>P0_819XNGniz*Z5C>4t+JrXvh<8~#b) z5gBvBZIkO2`vS<=t~H;8oyZS^g8N`hxt?=`jsD#UB_vT96M1052I?k!uou;pm4(5L zps)fS=ljw!Pc(h>&kn(&O}|I#JI9dWHNGVm9e^mN5Z&cc;7 zJa+g$OZr7(?p_c|yPvzdNPN&pCBYbgUl9bhg|r!_%ubVF=bi?nz!Td4I9xN+5A-y@ zY=@3qv@Wd94v4{4Kmtz->mdmZ`eHB|02=C8A&E%%R$_8^0L*9KA#w&EKhYOv6uj+WPXYws31S0@i#Q5d<_AB<@INW+)I~s0I>s zJ+#KEb<}bm*8yfK0x>GfD3oz^FO%y7Nighe304l@*4+_IuJ;|MJBAEupDe8}zQxrA z_p!oys|C<1KOrljGL!Tryf-T08&ml-GrlU}c>~g#)(~F;PP!D3Zs<@*b(k~)Jt`;2 zTk0F>_?KLi6YX6l*FGPug~|`KC0Y&b7+-PJKh~H*$#Fg+6xArDNc|IhuD|J*&PT(c zs{n5ScSh88FhAs|Ys6pmAx?^NUGVgyt{J8e3FJc=3L_J=DWqWU(biRz{x9)Aa16^yJ76J(_G)2GS4vj^)q3-K%b`Eu&gA%VTtODlmd_Xn0j3_5{Ga%YV-G@KondH{NKg9mkg!uxX_Sg6H=E&Lr^C)m&QA! z*0?O{dV}x=0PW#3^!7oJFyceCL>GN|cVZT!_O*~?Sn;jJwUH8kEL1T(o0G5Mbr>&O z+8Az6;eAbs+Z5V_aBc2;Ld>k_4u18%oP#?IYg!KrT(BFY9WdRm@Y|eu_c#!jcM}-G z8Yc`9`LMlBvy*Ic!y2n+8(7l0l>g1Ww}7rn1l8 z($kqY#a&l90aSct2R_nEe6}GF1CA}ZZj(LWQ>{)_b1W1|A(Qxdi#kaPXt2ah(dG{7 zzt3?Jp=b!0NdQm)O8y~`)0tV4M(=ACDw+UxK{Cc`ST^U2pkos0*V0mDw7FHWE|1yPF|I^ar; zIo%lEryr%U4hZfRZj`H|B@Z%kh?=IUi9M*e#5rk@;t&9$i; z-rA<4Pg>S`#tDDBb=>Vu_wL(#)0YMNPn!*-Vki>k z7a)O-&t9Qn&p^~{P9jO@A!Rr`eqb>3f*D+EAkW?o4!b@hA&N~1*hSgOf-TL?jM+N= z)5w@Yg+!CcbNj2qp&dsr$TfpuTi0_ld@k&oSl1_+mS2OT>V@hT=3vAuI zwL?iK%(uKNvmw|5%>Rsd<`YQpcAx#OfjSaJY!7*f{lBMaGrHpphs_oQ7V!cJa*SefENH%LtFbsS zy^k!!#hg~~-k0bGA=u39N)3{#h{e8_iJoLI<&cDFX;YpYFOhO4eCu8eV9k40U%E{; zT9PsaTWa|O23xXDg>j#NsYf)Bx$vyEs{*AfX`O|jUJPj`Opi(a=)M%iquGUw@Ug9g zYsc7nE}Bj01Q_~P!{=aUL29be(j_=G^haxX^Q9|i?};nd2NL|-wsZu5_$_1UKBDmC zAB`jyZb@h!3<%F^?@}8{B@C|)H~{=&abL<~wn<`)u?84_Aj_NG4;CbJJftHq<)EFn z`VjU{C(CK$m-L7!f$)&JF5yyCcr08)O0{rI+YMQh6U}b4!R6I%BM;-G-DoaitR!-+ zOt(O8*}9odcsg1Tgn&t)D0IUJ0`#ybelFr!O&1}y+UCbMPn`YhE1%v_v^GL4p3ZL} zL3lfRRj$W8KL=(acwY=}POcAvyi~N;li0dfkRhn}bM?zOl2X7ILyI>9?Vn)(dw~l; zueC7wM14^71>!?~u8tmY_H^+D>Gtn27H(JHkG9KFgB6)hLo?y z$Ytz;8Bu!py(vi-V4Mwo#zWFFQ0~;_i&so}nqK{+14%K;BXPjg~D4vQO@-<|yBZJc0ETOsL=nNDDEkhf{NsU5X}L z$irD}r4kTL-AU|;s4N^j2(!&J@8mRV8YaqIU6e1)m3EP?5xWEiDGSJCEH>_4hTDo7 zoaAAAzAWhP;ma!EJc%zyRu>sFk`IYNmoTO|Dk0IN1-(j{A(jwd0F^LmHXBO^brnIs z7Cba6c(Oycn)n+tKuIy6Ga&=>cS`srTa2`G5l7U#U zY(fWSzLB9$i^G99FU_7Q0Q|E?x~?3RrYP6+Q*_h4CLk&_lqCeHJPs z66(p34OnS3sEQzbKuAVzG+<-M&FMWbvw8m!W z`|!IL(rw=!9~T~AJjE5kb6({0yae(2(aj*002lng+$+Y`aL99DJeY+tNjMlRgvA2@ z?V-_-hGXhs4FPU^@88W9mx;EiIGNGxGSRr!6N(?TD~_8)^bgCGpQQy+;^rxV_Ru1u z7@D{HJOa?^zOafp=tKduNYD^q6PT+ZA&i{!%bB>{07c^gq`cb)5~&r$4b>-wDa}}y z*jSL*1v%Uc&e4s7-aY^#VV7YdQie`X4>k-4@tG`|SXEu-iNvdsFc7{$Hxk!k;8_Ro z>7dGq*;pfB7uel!0&Kc&#K7(3yz2^47Y1)AxWBNB)ktr@g!C~c9Rh52V#!71`v zgy!oug8FojBc7)*wWUM6GX>S)icteRZ!oz&%i{<&4~OnUV6q5-$s)8?Pat|6Pj6K* z&IpU=R*~an`plw@N^aH8$=hElO=1Nl@)rd0t4*26Td0RQjAteH2}1vP*B*&;MI1(8 z;Gd#ZrjU72#HnXJf)r8NPKUoDm~yk!LCrw)3(MiJ9iee5B)HxdI!JfK5D_M^sQI?G zc#t#sJs1MaWzT&7Cg@R}nJMhtZ-q2?Z(i&OA*5TQ)GSe)-= zr><8}0W{!syFhLuAqTPUIgn1llo9J5RGa?lO$OyYL&!$o5{A!}hG9Gx!r<(yAVDZx z`%>Lx@f6I0lGa~zUyXOA0jx{36cd79&(^+EWMl`(MG}Rsp&n2_qO`52dkI3Fw%63` z#Ed3=JJCq72wDLo%Jyt;k-)NML%^@c-2z8Y`v6Rf6;+f583W~WW}(6cFCe)00dY5d z3>VotL*@rla%)JNCp)<`Lv2Ygx$@Ujd<87101-pr#Y>2(2+|dM?N_q|u!iUeYfXcM zUSJJ(i3@5Fo>VUtsA<{rBk|UvXal53M-lPscb|$G0S6(B3Ig_v;~ruFtMxEt@=sZ>?G)2Rz5njJDINpuq0s&g;1O^hb- z{aQ(vsVQda42R@(W-5h4@)j4d7;MEkurHasR%XQhfL<$S!MIPtM2y%HOsBn}K#y{o zHX*}F$O%8dXwHY_?6)l>ptSuq%gW&hYFoSbnFfEqX9<^x3`z#^TU0B%_H_yRNp-Cb zLP82sF|+@GkD*pk3<&l~)pJC{!qVH8K6|LX@T_hhZ&&-E;k`i?R`66P92ZYTo4U|8 zEa3{WS^~=oZy`#`@AN&>Jz1!#l=#@G^#WO0lzuW6%=}uRI(P;Vn#;QqC{Q6mbvxi= z^|l>XDe3Q_DRJKEi^QJ8!?(p!aQ9|nI2LUT1DaOdK!l}lchyehtveKcRG9FFSXtwW zB7(Jlp#l>^d84J@HPd)+p$GL@Qcs;`DboTKs>?475y3Ut4%eB{56Kq_*#e924c@8D zo)1SoZj~T$;f7@N8o1lsDuwMyiEw+n(^x~7kzY(vb-a8u-i%!tQZ?ym%2J%72MbMc z;phiKS#U&QNhFs-6I3(EgVE3G3Um%=<4lbT2O^M559@~>+(7Was;thJ3EfQ-X5#}R zF632K(EFUOpPy?u6bsfd0+?Np{A(QI1a7?si?>RMdUcO)Dg1v(Yd^Ta-Ej}Y<; zj)kLr(^OqZ0Wi2yX>z?U!lwgLp&`8~@+PMW4UDYn{1bf%lZK7U>g*zlQ}-o()L2Rb zlpY+>=})fLP#gwEaFWF<89u12-TcU^is%I>WcbKE@S3rB17>9jT2)Dc(5i}od{=@s z90=(W?@%~{NfL!h-8f+wtX(o-cZMotaIC^mA;L!uJOSt6i?ABF<1512_rhtRpaaqo z2^F8gtA9p}diCoxVc>#57QT6h2Kz4}APfPx$JgP|@7^aV*?RvzFw^pVhnP?YHg z7&k2;N}(JoJy--934(+&Sw+r~@R87n5T!=iaG^-|!^ueOsL-;!aEfNAw?tJhvEjm~gf(+L$V_P|3nl(Qdd2HKRSa7b}gB08_|Dkx!g9veNzmc*~$2>H(P6of*{r+4n%Y9aAt|fjgKV zlm=vncO_&dK^)bxNKB7_GY#R63#1bul+TD`W#nyI7lvblVPfexX|SS;W3xn__7dE} zry&7nVn3>KPCi%#nOWRT{H^7BtN92WjFWPON)&c6G=?-UY11UZPh~>+$f!nx3Taj0 zb`{N~l?1m=c(tw?o}Ing*^yea7f?(Ec^J>df3Sqa9jTdX)jC$4A@SXO~b?LGZI>a2Y9wb>j{M1qaOd7 zoIBLgX7rnAY8H!UGM9pB`22KQP}vx64WoxmHpsVJ!f*tEXnBiSVTfq~zR~3swH5Sl z@l+7`LRSysql|RgP^kx$(DNZC=uua`EYa1TigQlDXbNhD*u2T2vf*VyEES@A*EQN6 zZft}DfgbXWjZPyC2?+lO2%S#7oA1K4)KzV!gO6j}a91oIZp@+T5Vva3 zGnqpdC2kjs6}WaSyV{8f$ln-RNnbG$ZFR;c;HZpD#5>xP*J7?Ve(-cJVIRK>R5>82Ai=}Qm>XyR>wNv-U<}&lQnlE z9Y!;65{Ql9dRYkr(MGxQh>Kxlju`|jN%>)F$cF>*)=E~NWvdONJ8D0TcouQ&Lzn{j zoc!VO>$5ngOgg)Sug*@6!spAl_y^GIA)TEC4oTJ=Oymxm?%WGhy)@ArZz~xNH&K!< zqY_UP7DH{zCibHos$*sMcM2kb?ICT6Nl(5KO-U@hmdO55VI5-`ns`fnTj0N^`v9@1 z+k$IW!HXT(OLaKSPHU$)9M?tO=W%(MRyMroU<5{xw5{tg1v=OaWpb?!)Pzp`@Fqt= zv`z*bB(XCRhLpNo1Vay%LK=oCh-MeZ8OnzHk`$=|=LN!jbsW6SfWa;cr<~?^qKos- z(8t;tg?ve(78>SSfU(hJ3i)73sUa3*{ZD8IcM2yVnf%3aOsh>OI}R8aQr5VnL=Y?C z^GS_(?<(Gw_86t1l!TduGHjG-#wVdfB`e}iWOBW<{X$7r(6oVk?f6ukgam0qTL6$a zIRpp*i4ll0iXaWbWMq6Yp)excV1xOWDohsumG3{uM^_+cR7QF3&V$P#H#vz8!&;oDXci6do& z>4V>?x_!cT;`KsYReXdhPY!dtM8&$#c2j*fGm~cp&DioqNPw8xj)XNL1aI8fT6H(l zr-Jp>1z~1CYGv_pAoga;&H&LYvcbqZ(Qfu$$$|G(x7-^HXL()anmPkELrq9jpRouk z{>o9nBm(P6U_m`m9Q^3s4v(g)!pZ52#GR5C#~Zv0GlFBE3Xy5e(--Ul9h3mmI* zQsL5s6PEb)^rPT;{;jQ+W9vuVvY^rF5;Y=iu`+^dp2V9=gXx#~-=B^D+GK4kk&K5qKK!dKA|2xr3XNVfeS!@_&wd z@f4&-FzNZNWQ1t>wcHp)4w$L+f*@DHMK+BpR`7LpT`xrOaXvzV=wqR=tBGn5LR{Pc zVUjD%^Ej)^Azg?`#km~5y<>q)i)eLbQc~75P(_gp`$$G-7#RMp#*s!KO~xdhTLI?u zzF<&;{N#{NLbW>AAImM*0(}uJ2`Je@#ktC#*qHed45peN9s?^$Ndwi*`^v$&3qFMI z>JSHpzO0L*W)b{0Aru!VMhKs$D@#Y{BUJZ*aM&X#j`@%o4Zg1Fld4rg`Qg59(LM3d zdp;GmJ@i+AAp0vw_%Pcix^oPMnZ_IZYD!5EWfh#>j>cETu6bE{Cu1OM{~5I)L>i;ZL&B5r2=UYCfd%F{w!^5qdIn(}R+$nWNvM-%R9OolLmE3`=xzb9C(%>FfXEd^fSB62a zx}3aQ_v&ip*l3dz>59Z0riAwq;3nGOWs2xPSVHQ>mV~jez)Bt&>vib?K9$QT$z3bqAmT98hl&=6zI zn5spBE1{gEL6rbhC?sB6$fQD%#9E;Zp(A4v&w)ugSVAj$MpZ&t!V(#rW7m@8TcJER z?f7j^=HLx=(lrIs%A4hX{UkKNg#XfkQ&RgupX)Ad71vfmT7%R>C6WNhmNQZy}vjX`sZ; zAYnZ9Gc%sq_u}?l2MLrL_T`He^5;7BiF6r)n~y0UA-mb&F7_f5&{1{mLzdYPb>fAf zYuOc1D{IFW@4fqwAuujaPBnV_xs{~CK0E zJ;01+CmR9?M)oGHKU=dCiMQ$cZg$`Xb8vFT#O7Z7%>{9Is$y69N_qTA3aJN4i@nrv z3v5{^AGYf!OiKbF%Q94&C2Cv1b(!2Ch$gsaBA&@!MqQeVqlEg^9SyN)M7)QPG>$-1 zn_woq^5Eecvm#Qh4;9^!16K2zAT|vNA(E9I9&N5{1OGL+;E)M*i!~ndO?J&K{T=0w0(y1(#8QCtOdYeEr$fS*jl28;FN3V5P^!CEnsOB z2=sZG#AN(1+!!V278j8p1}gcA;~*R50k`!e;-mKsllN=Gov08;WCxvD z`C0H;f!oh6Oj%BxSAir`Q)bCieF&4xjzg1#>-1J#V{Qg6F3@x&b~-5E_Yv+kNNDz< zm;w=Tvc=L82vkllr)Sa~WWyIoOQjV}^QFm)MVPayG#+8}b*=!vnn-;VQN`1c&`a&n z7i<&e5x8tETI47QLoB$~m{Crw-AUlygv|InaKoALIrilK@ZP5N3Z&;S88BcIG4&RR zn1^FPk-EFqTtH}=T(I$qxtVMfJ$0kfdIL{M3#6%-0-nZB$HiIHP7#tALxKl5Dn%Te zEMh7<2|6X2jr*tfl1{2rMsP)uz*s6&iO8a+qpb}^?`&~!;PNg_kWM!phKyDLic?X3 zB^ZFnZp8)P2NFPyUD5*p4UJl%)p6pCk{vTxr`;u^_X8wW$(5~LW~+RZcc^n^ns5pK zhNlvOWLpnoT8OxYDU$_^_b0nM`W#N`O-L_cGN2lIx2Zt)m3WniD1@RLjFGM8nr*?U zrfeOBVYt~aVejHRagNVmBJO%RkP+}X+%@(XVj5<~Ho_(YwTfB~)^LPwKm>BYb^Uog zNZdc+_jKhsqs=K6^n$JQ=oHvv@fa_$0#deu18G7 zTt=f>b&q}I5*o$&7N%~m4G9(JdCLhCzz!xsj+`pU3^pSsmB42w+Q7jPuG)ZiCJl;7 z2*0i2G+l=|FXSk!C>5!)=u<`bTp23Ib#n)!8lG8sw04St;BbRs8TunQfa{0#E+!+c za@s+4!D4^^={@BBi<1UH%K|~mdi|~d%%B>s0BTyc@wj@&9HJcb$Vtx;6Tv7^(6DZS zbPXociBG~uD_{3DAm;W?u_#uH9yZWHHkkMh7`F{RjQ0JQ?hUd_qlSl*u7)N}&y#<5 zp!yz~jVCByzt~idZSg3tj)ag(01yzUXN4rqho&MEO|ldFq2-`1q^JeAu7-3O zCLIE3Zf*!qhmTgiN}tndxhq5(#YG?75XjnT-GIXdj9}e~Dc4gCb*+#pYQvjAEdZ89 zlg5RcCV*t9mLNJiLAeU;(5NpuCd@nOTv>n}!|y?ug}o7^zhE*gdJKzduCnVF9WS_R zHpsXYx?YLeQq>eR##07IZm}#`8(g;TZnC{OF3(a(cVjYQQjrNqG+Z5CgY{jJ_78&f zAAyYw?FwmoOpq z1abVWkgmmKvtl!uLr3wCJh=aZw5zYn3SdU%1SjS z9jztS=&ofnD3buEdJNwXZq$8fZf;3vKbTC==J+$f+-cwcG&*OsfJ@bE-JpmAzPOHr z#`u`<`_fSYl}3(MHN4Jddshen7hHNirujKx{}S4DmD+VhB8^Yq<_>j4*vTB;5XF zu(J#$)7Ur-o>9tZ<DhzoT&s{FYwMC!@zWCo(Ab58l#S=LAScVp4S;oORdgWv~@` z^@-stlQM_9h2s^;8Yc`f%_O#3uIKt_5ATS^8eJ6-S+Y#M)VL~k9yeyOS=bRSV=^OR zWm|hk3S1$;fnLJZ($<%Wcl{-rC>1kbr4M9Dk#52Jh-_)IC~N6xo8CoT&gevZZau5d z)=Wx7LDW+(*&3jr5e2@C?>$M>O5SHgDM|7k5%R7oKrjuO?vaR$%`)*V(4E8DuC_=^ z0>orL+`y~H3%+g&*}-kgaoF@L9mv$=J>`z7BMx{Oq;_ECqr)-NZKg{y)J;JjD& zkg_x93D<5w8=sMMG`NafpY!P<9F9ALtMfiEnl>(6+hk8^oHa^b&#K4A89ZdiA~Svx zaiEi^25%w~y^36`C8{btGE@&Wdy6U%-a&^CrgZni>=fh-k5duXEdB5Vd}X`>uj1Y& zaF|YZff}l{$P3g#uDWLIh2eG)Ck7&OxSQ@u1i~Qf9N@KQ6*@g=t|U|qti(;x<_;Q9 z*at^@^;r89R}h_SpvhB`Adohn-h|ze;$TQ3iG=sq%S%3h>`lS-`w@;YQ6lN5krsuV znAO`-u8icfgRGwP4oo1}A1j8?0M2H8l^}8C=S_;A`as?ZD(dA;(j!GZF)`-3&yun^ zx)ItDppfl+J`9>ey;a zbvpKfjJ__lrJj1tsB~bq5-6-1I8{4Lx~0Y#a>Q%bpb|Gu-K(iH)T%>5)KeszhW_YQ zSrS)0v;c6#1(VSx*x5}RQ$;*Msq)XKNrBNSsOq%=!>_aL%A{+s$YnO)h zxr{@Zs8#V1Z`{VoYtvEs`msA+wQWwtC}rYiXU)R#qTXUpVy^{DXkX@GkjGTnX|D|) z698i9z`Z0Eoj@I`P{rHitk{Y`94-@vh%w)XH^X_cTauxxkf6aUXd!^PkR@t_8RiDf zI*9( ziZ(!sbQBRL%hl420INxuT%^Hr@Czf6d>#@+kg%UH(ioXYdc;n$MD=!EJdG}!WM}9# zRu@zGM$*VkfC5l9_tAFAamhG9!LPcQj&mVujwH5$Od>rxbyge#!E{oau1TAAxsb?u~n%M%~4Uncsch)8m6u=o2qbP*(RQ#zy#;Be}DVJIfu$?}E^}iZy>k=I)gj}F; z)VSgyRl@iXK@Xv`D%>VvRxg`J8k9VG-O4LAWrz<=HC8Htbq=XqhGu^_u?(at6P4{0 zCPL^8YnMUV7ZZ_Yb$})v_qqu~i-+!^V~lCsN2vkEwN{i>$6*3wIiv#eg#;+3^1_)o zXsD#|E5t=K))XdGQIk0bYiW-{f(?5Y8jMLtP>^7oCD8wEimhEQXGWq) z_kmDm{fA^*_&mhXZUoNNWeg8`7SI0xxXF-Q#TpX9#)f0OnhD#)y&2vO_meWXh z53rOs5NK+T!6WLhngzzyG)!6TC4H^RP;=3df&;U$tMLe=Kq)jmCh;4IobF3ALTH5ExL9$HD&{Z=!>NSH8ou1so ztvbUa;v%gNaDVPxfi)nIHvv?bY8w%F>=fn|NG`Xx$Av0{v<0Rhw{|KTOZM2Kcvw2$ ziA!l4>ofSLbqyTvA6@-w?}V7JTbvFw01#)U*lReQ^ovGJJ*{_VVqgEHoX)3kX5eC@ z{hkC70=rS?#@TRP7!Z2!x6VRD1>_{Lc%G3>544f3X@oMUZEv0G3xGvs|O{L`Uvl8zwYy-BXzBdgU{RJWb z{|F%H*NuBzAZpDCy7y57!~5*1tlm&hIw_HyQ0kM2r^HUvE`tUlC^Q1d)-Y8IWgAeNj0aj#6jBQXRA3tgr1VZ$x=3>0b0h10( z5vdwJTG}8*W?|f7pk$3e#OCv?eqm zqCxNOXV!=sMvT8D0RYf_3D*RGdNq+T=KSvifHpYF+7mHlrJ|=-yKtdG0a0NF69=@E zF9D7Jzd=YXw>@s$;*rQ#_&lb6D93f)Wozc7Fg+u4r#@ zAl9*-XMx77yoIJ#fXk_9i^SnVBta-TwjsTBLJ4&RGbv|rB=94F$bNu7zQCl%)$S7( zy>(xSfmmcueK9Y@%Z8Ygx_02w^|Y`_O4U_pZccVe@yn>J>uO28d%>9l{{9MEY##)v z8k0#~A(@+S<>)pt2oq4SpsbNFIXM)J)5ys-)JyWy6QVNk_gf@Fq$|Mu4yBO^gJ)VB z(|1NLq-7F1Vi9I5I-NGxhs&;q1r9-&l@Nqk3H>FAL&wPRwRJ;=7VoZQ`!iWQSmogS zJFlVg#;S3M8F84gYKiGIyL>lm9Oj~9+tm&TGa^`@j0=|5!JkxP5+Y${!f^Hu#$-I} zc;?pDef5jJkSNjB00y%pq5FXJ-B6=hUjvkBt@_Xfz>;d4ffBVC!1JmDX*AUwhd8Tyv^KFxPm8!3?! zO)<$+1D3fR);u3LiF^oan*UKCmQZvw!A%$-Ev|`?#4Dg+)OHd?xL|8xD$UqV?sq9s zFNrP-(W4h5V%Ikq02%fzb7@dlD6TA$&{aBEvYpf62MKhf5l^ny95@fwS)(c}dplAo;)y^&#4ga>SK-*sDBvW9ct?g)Uk0R3l} zw9N;oygI^7>p+-9y<_h#2Cf0#x3OV6YzPf*M}uhAMrq%u%QxC3G*8K@jGAj_X$?n` zMWd?15wgNMErctg;2=B}(%83Knn-=_yB;uU`kaogb?@;w_RgG(NsU)syc*tc2!+)) zAB8Y+Oo;8omERH4)|hk$wHe;4PFnEOx}K5qEhq8|&gApb9`ztUjj*wXM)%laMXQDiC#AeULHG=32yJ zfo_9n&vot=F_z3zdB=KUI1$CiLxcz>I8xahFOfvbO<^JTm%tS|3(`rLBOcmNQbsW&3th%HVMD;acI~+$mG_+8aOF$PSK~{Z4p>JY7zuC$e(JsM=mACmKYJ=*3%efD1WYrg2d4LsL}VX^>9DB=uz=htw&}GiPqRU|P5{JgaC{Ype)vnzSXG zK+{`P$Nq8>SLnVs!aelz@m17$_Bve&p#`o&x>i>Z?zcd|&>|Xc6NH71SV}@zzNGg| zJZLkAM2c`gr2xl7mCG`iVMQu64s3-4dReJ)@ETqt=2nH<36SDaBwSOUEOS>Lsq}>5YpVQNh?8c6Y$0#>C5y_PrZ6nssBl|j3}TRaD-B363DFOW z0AIrYL0xi+~X_^bF_E zeRlIt$*&xXyD$#Y2uu>AYB*1X_bdZ8mA++ZFE*b1_Jq^qBp~(%sKqKPBC%+D(y8|H z0Fv^aAqy`ZA_m(TY8QGf(J(^9%q}VDGfjZL0hv?hp!sBTlYg zChxehp8n+L3pv#gc+-SNVaf$J_f~BI9HGm0tw4M*uwsPu2|&3Cb%DU9D(}k9D53%0 zP&eqI#2FHr#d@F=4hE5RJhNWekxfm=RW}|E9Rk?FrmHRToscPhvK<~LlyH%W5VK&Z z<`vKzSwa&Ku%3nV7$&K&On48mPH%||@@2;P29r+W$>wMgaGZFNy$Er1vS>IU1hg}t z?t&MVSTo=D1zSg!^vBFmQw5`R+zhKC3QntuAQbpbOPD>g7fDNJ7H80NB?4koLf&A%mcArPL0-1MH`fJd$Zy!;!k77bDt9qSTE=U|df zms7t~ZQ05Bgi|OnPlE%{(Zv?y}P!(^CHo2ig zJr6Y(IZ3{@v;~(oy79_21w5YyY+hweyfF|pxu*Ykg52ZEVdUht1=R;jwfPEpopabU zGdY#$*HqKd)`m8&g+^(|U5d%|nj-RIa8!pkxjd_vWC|f*+5vHWikQZRxaTof;y|V@ zX;%c~%Uz_Q_g+^deq4Kl86(y|@TYw?x@6_0S6g>p54RGD)ysYX&H<=8>=nz1n5M&3 z0sAC%l5-JnxIf=54kuP9v1@E)Z-<^ z5~L#lZ{|9V%!R!S(qc@K)T_tZO#jO;IlFj*+nCwKS@o2HXu+*u4@efp+u?Fm3a&nb zevQAZHVRA_5LBEfbQtyX9~V* zN|HEyXCrCVg(lhJi??weMP&9iq*pPmAViKWnF*u?Rw#At8h1hxW4NaWx7E z4@ZD^`80^`2d&zYFiFv)S56%hjs$-1<5VFKkM%kx;*OqyoWn-74X-U9UWTFTppuo9 zqnvM~XtJ9bx~KgTTbxvqoJO!Jg2EvQg9^EBZgV3o;RIu>tdDTED{sUm4Y_JXBN)c&^u4OPZ&lXNyPy>Y{wO*ZRS-Y;mcv7Hnhv`g znzF1ZxBmTC_m{YJ+|sk>SN%xxE03DO^KUzP#`0UK^e^2a}Q0MB2%&5fUpKj2c5zxmC>c>XkGdDW9IVwryuWpb(526J4c_g8_$34Kchx$VQo*!@Alsxc>W7J9{9}eXI((@$k3X|F0y!bjE0&|J|(X-W@n@Ims{j<^eDNsIk{Bd=Y)J0c`sHgXe$0&Cp>x z|Lby+zy1?n^ZZ}-=|A$W_FYJR#Z3!Xe$qN|*aCZh(5t{NK6@t554DutbK`wiko;M* zH|6;SJD7&i(?&JBJ);_sm-2(JKhjk7odH&|R4tQkWYriM? zO&@Q=^S4~}+Vt0Msv-FmFV^$?ZCYnd{^wi$N&cvP`ttm3*Z*mw!~e1g$v=F`H#~o* zFaCM!{5Xa4&V@BRf9Fk~`1*lwKP2U=H?HIPyA~a>{LK_SkJU$P!1IfDp8MY1ZN4Vu zM^9AcqJdW7fi_5LHb+_cMcr2IPn;rp1}>%;YL9Jb}LB!9sE_w(}m zoPEIV^Piykg%O+Q@B8d29gl28^Se%YkLT~VW7GOKz76;5;dku)d-43T3D%A~A4I$_ zt%{mCJiq+Bd+t8BA3dj2w^`2fN8Fow{@){xB<+k^-o^7r9e#`R@m8SDhTqOBI37!m zU+~P$&pF@;1HZ0a|HI2y@3&yzHwMu2QufT}UjD(8w|($|CQ^RbB93R0HK+D}{_uy! zko;qt^wRxEe&;tHJf}V@?DN4xbo}=E z{dxJ0%MZS__~Nff`J%61=J}lu@3!ZF%G*hPEOiRcpSkYfzV8pFcxm@T9{2LEIQ--D zPCk&7-?lu=^N(G5!ol@R)}#3^dGLAMJxvE)^crenEo;!(9RDOw`1JF(xAq3RG5kum z_15jg*&E#!|8xtIKf8p}i{y#d-7~%S#~{_fZ^CUG^M2>Go`3C`6@7}|tR>|SK5abDzj^k_XDm&=P4Z`-a1zhI<>l`;e(^p^ zH`m|h8J>UVeP&b87vTkI{26t!{0e ze_u(91oF7ZRJmq}nt*I}N{Q81Bc==bVuj(`BgBMBu$VWHh`ENcm>i&jn(QO~DCvEP* z^E><2Pd)gxD@cCPUOV&h?>_L@luhRjC;44RP3HOkxvyl$g|||^tKt>Tha^8(()7g4 z&^A8(HP zvi%*BzyHg-^76k9-0tspE@>h8{aW8-`6=tQ%g)*2okEhIchk{c{;FFdiwECI^5e@n zzn99dU;6Hs?`%!-C%rs{mtVWzd8r|+td;*1n}z ztn@q5&f&k@!}CX#9eK#tgSI01Wj9>L^T#h+`NaJ8IV8V&&l7q6fyez)b;a!{BU@JF zyyJO(&1OG6JZ#WwB)??u0xy5gXOBI4KjlNV=;Uyis(J0|W%tJ@J{f-1QM~-5qvmcn z`%JpOJM}5$`3HaduNS9W0=jni9lF!iJiqC(ALGeVx^AW0u=SYwYSmY5h#)I^OX)+9#%&pfj`d&}-#LG*p!-{1Xw#`3*qXQw{TGtWHp zjJjo!n^Yg@`)_}SuiEGNqF+@wg6;xiUzKv)2nfm7{_AGN5>D%lQ=H0oI=h|HkpyMI4 z;0i{6zCz=a0x#&ih%3kRTl0l(WeWD!(thdrTLngc`QgH9=f7Bu`Ns`?$ndKlOr7R^ zvH{{%I=x`{wej&i7rs^_?pbdu!|yhK_4J1oZ4vL^n#n2i-H!2#?;39)9$ZeC7mrWs zn>$K#R$iLi% zCKW$)r}Mpi561s3<$ukZ{b%5Gq#t~k%`Zy@zX1_LXCbVr)~hA^ZndcL_a}!_c^x^P z&38-nhTC5MIW-PnX!7?pMqk6D{^iqK+9O`30Gp4Ny4BWy`g0-LZiN>2Vf1zD{ZL@Q zT&jP%xU6M(y^CKBoE_MY%jZu4zgGLS>yrG48})2FSQ;$(V5|DOXvAG-_%V9_)rq>e zFDM^w_=?GEOGB5E4#yK}I~jeWqk;Di7b=bUsLTAz@WzkY=F{ov_|$F{+P~$* zGOD^qha!FWXN4Gj%WuQBHd-(e@#_AA7~bZjPy10xRG&AuV|>^W=(+IKZ`&!~?i3Kr z=!42W%KPbfx*klP$@rBe*xjRLlTCDdwr(_v(T61;S(+R;48L0-n%NC3?Oj@YqpM5j zZ~mXwGy3)(@g;AaJ&*LG0+^h#v=9F|B(l&r#D`61dblP0r%7oQ1E}4=ZQU}KPp4xa z4y<3E)~i92r3{abbggD)Aq+P@C z*ra-1z5l9@c!ZIye=Uhw(=PpcF%9wj3BveEyypAjR4nChJsL3nZ_#gw{-ayrWk_$? zKAq*?f0-$NLe-^+7b|g6z<1R9VO~)xk4A6V&TvCqXysl_IwO6ImhoGQ!Sr*jw(%~A zx2krP(Hqm2{adyfosZfpQyFd=aKB&pno>wVxTr851|`iOv}?s{#LL#rVDy95-)x#v zjL!FBKQaDn$-0$Uc0~0rkv{%@XGTBb!r(tkEui{vhcRsZVi}ciC9Gnb?~uM*voVZ* z%;cR%9$j@qyq5nwhL2kuwk&Ho)f-C>?#uA;k3tUnpZXE$qfRrsmSvLvZ?WF5w{!{%Zr5{z1**z@tuLm0n$GIcDhEug}C{ak>M*U z1+C4q$RF{N6)rP;<&TF(Z@x?UNv8|>7{0N?j$7jbx*~mzfYJ=#G^c1rT5GOAJFRcvD8dyH{5CBT)q~ zpW5HGVfdH&Z(OGK`x|ku9$zs0D?e32<>_?YTA(engIT`5(4=PNUA{=)|FOVt4{x{| z|K-5Bh@)-I^~pJ|2wubT}*U;j6F9*J*c~ma|kTw!W}j^9}I+{T$Wn zQv2vxKGz}=XRXac*AXRBTL`%2;FNjm24MaP+XQ{!hD+^*RlhBZcyRn^Mt`GahM{O* ziWlw0^e)RU$NkHcne#K!_sGZAah6}79@yY*o`SgdlKL#4J1-ymoUfXQc*%R748OZP z@?!iJn*WftpELY^Xssc>pLId{n$rZi`Jn2=+3n*RBkozM9;1J_Fwn4eST)4+PkzSm z$DjB3D*uF;h^yw!VEFTL4=x?QP3J{*!%+eM{_=ubbLe_G?6feyo?oBSK4?@1=2PR- z1V;a2-TYXKPesJD{&Zvb%dQW%RTIADyQe>5Ok@x(qm)KByg) zM@^nSVDx!rj9p*ZOy^OUE|TG%mAY)J`rSGFuG??lFx<;4EhKDqJmQ^otX`R3k^A$m zE3qH(277A?^eawv&0B!-CD-kYZ)E0w{%UJfz3xa~Lt|m|MNd?2``1F+&iy;PGyDT{ znQ|L$+(i1QicH>RmS{F%zG2BB#H;HTGy0OM@&~+j7e_p@^jHDkU-|0kgF_HcsLt#^ znWeti6@P4ZEyVMlDa`0go!gQ1ecp|Td#qW)@Cx@mU%c3G8u7|kK4y4Lx3tJ{=PBPV zn#SZ&X00RpS{>O!`F4?3zKp)E>+ksveAkQSGq@GQ{RVVBv~%Y)#8tmC{UOtD{EU0U zv{YVu{&<1WH<}(YqsxA3FDm5GgyDg{z5R{tcVa%q-BuUu)5r_E*THt_+XT?v2^}AE|r6vKR~&%Dd<lI`4Y3B}R7G8f3@nOXnAInUCzP;nQ3~JwNw9Jpun*u}YEEr1l+oTYoeFmlF zDbe}s>6njUrkT-awb*d2<=HI6%lBq-Epuq(Ul)e1>V|k+O<{ZvO`rKPW(l>Ec#RRp z=g^5CPA}Mtwu63f63c(+y?VOzfmEL_)q}~k%#lBL2>tu^ILyCci8w|->cG{^RvDC^ z3_dC3Gy3DX^&9m{Li&O!OpnSOe`w_5tD)hD53D$e<@3>kr}h3UJqYpqe>1%|b8@HT z)`N;}MZDL99gKeRokwmTy3qAb!5LpMeCkwT>gfe{g>4+ky&MiSaU^vr%GFP0r_i=pNNr;!f@B^b?<@r(Fq^S9b zn@X|ue&(t%Gtal&uo&?s`-O6@+Ii^lVf8x1b(!sieEwLxxJKvi5zkyJ@WXXi7PLL$ z{x9OimNjJb8+Wy8wn#_y?NLXC`MYJ=*r|_>??(E*v5gr0j>LN2k6%+hT(&clo0*>( z9`sEZ`W@1%FA040a}P_wE&Hb;-g0_3md`%-&TID{tc!T-sj~!pYi0eh3BMyAvGg&+ zznYLyBLAIDh6t&*)EVTl4GK4pcvB@6Yt8%#+@JL$2j*g8B5->}K>Q4|osT z^J_cA`wbT6(aD!ZR&N?c?F?NGmtpj$_LuMb&q<1Vh4*Fnw{`uO1bt8Yy+Gv~4F9h2 z@o!&W(qjJ2PV5!%=>74b&5j@*bxs%$7b7opn%(v`;;PdEU%gW1+Sr1JcOc$4d?L%| zO5m53zU)07@v!}i82&@8iIMlyUm{+hzQC`pTF%a^VWINHWm5p7zgG92?(+^Ekbb}} zp&#$u82?xMN|fKWYc_?^-+7f7bmog%NIyDN7`J~M+4%gD&qs*I{UFGTr+3!)c9=~0 zt?F!bme2Fe_kVCXI}7P!mKz!V*QB+vj~3JQVCN(A8UC_M=RC!dsGdAx4db``?zLR3Ki;>%`xbcL0`FVkeG9yAf%h%&z6IX5!21?>-vTl%&;UHUlOgpZNpy17=6RVa z+<77Xqz%bg^G1h<-sC`#=rk1`Zjn1o#Lf_LWydo;jvo=i+df3+eB?eNIZU{(aHyathjp_PBv~=O1D9R4c-=1C=_KqQxl+hi63_O_ zkq7DFMm3{QX0DO7(8#LikRFgEcWw!eJ7wVDQnING1 zW?hudWP($eB<8r%nF?>F%#jYrn3wJ4~5Hp7`q}tmq6K%vy8$?4q=B)Im19)zB#jW({-)+LH~r_ zVE9!h5M~kvsSQaoleVqil&ZxoB=sVzbJyI_MmS;3euoUm(~0yP*xc1sNpj>GRnl_- zQN9XY$8%L@yY7FdPoUA%e$Z+fuyAX@YORTUqghEh!Cf@*<#dZxA605eM1-#Nj%c;D^hW)Qi^)LVf(HYl!$yZ1HsjP&9iRM4 zd^-=vx22(2vfspl!$6KxzqyuZD-itu7MEE>hQMq{lSxt-0!ADHu1Y;E|CTW^$y#%y zaW+ixT7wi#(xqg==hZBf8~len3rOKMLs~-;t}EsG(^}-G8M1sE)DI9M|IkrOd*Pe{PL8}J)B-`j7DviX#xbrBYOi*+O8bYhp7QbZViYARJjU3 zAZEA`#N-pDHJG%1^@H)hRM$c?mFOL;MFhkxcV@Mw7_d13cO2l;p>6yE8d3uw=_YQe zO1cdGHCVr_cNs=Gc33{^n!$&l-v6IBs zgbrjdSAtZEBt_P4CE6W%k!NSur;gVW|&a5M`;+II8 zmH#AZOX+}N8Pbx|JL^Sqo(?`1jgud#+!fi%yK{Viah=fyjU|rT53?~GbR<5w$%p?i zU9g~cgpJuqt3yL-Mx><~;Ib8&r8lcp7+KJ0LDU*$ybk!SM4+*{kItY=fpSS#>a0a! zw+}C+fjG9@NE9h>qDgK4Mi{;uMS7KY%-^qRby2DEWJGodEZZUON*D+c z%Ti)~Zg;X63{Wd;{|kqvxzuY+D$1-HrE6qZR~Xr#^tF*PG@*U*ZkI5z*tWqAxY31W z;pB)kcbRUC(q_UfvABmS9fv|`$W2_ts@F+twiwxM_i09vF+j{mC@Ym}K|-dY>ub=h zLo{{yenFP#khBQbl7YlkN6PnwFNZO?0(U728me?`uojcf7U{^h%AYiA0%-xAjb7mT ztfM|r7oQbx&;=6}M(SmvEFNpwrmeIX zR$U{Vt}(GvjmPQ*g`sc9F_eukE3Pdal2(1oHxFp8aILYKYf&kqmzIneq8!Q^^jD(} z)CH3nn$skG#VYGat{bQx&F>!A5GUMV#*2Qr%aph(Ncjq@HTO~&n*#iYr1~{`M>-Sb z`j3$db%JXQ@x}=5j;A#74bXHz34@Ps05WN~Jt3KyCeX9~j^wUOLR+7Rp~;kq=x#9S zt;Pt~XwnfW^ETDNiSH%%mdFH#HIjLYmDK91GQ*5p&+r;A-PMumVnX{0OqIx5=^T_P zN*jY-YvRf-!%w*)@Nz!Hm}W_Lu8P84wI-=hwkkR|$8B;))^0L8lQMOaQ!~LnYSgAD z%ScUOAVH_TX)0kQZe*92Ng0Y&)>4sROKl0W7GN?K zIH9MgJ`xjaL$44@!8e4mxhKM40Xx49&X6uxw}`@KZQhc;C48Bz7ho+fX9VmEUU8#SMlZmAzS=xj@}Oz846oDM{ESazjm@ z=0hC?!#XpIKD;1$LP%C5Y8cu7?JSy~LTiy4^X78$wi8#B_J;h`5WPqZ^GqG=oc3VF z+Q?U3r2WG$wa9JII-?GDFHAmdb%|Pw!5jr%aXRVuAZYb3mr~*jZ0U9!rv}#RA6-iPUa0wU;$a5~? zxg1}kuCUU0x|XK!=JY#G=f-UqyeeL6uIiEvOhj_;NzG%R1MB>>rFBiao$t77X&84P<-s1&cW zQCr^T{@P6KARl6*1wFu|Gr}e+{tXPsYRhX-ye^%%o{DP1I~A>v=E47jTDXoL#^mk5 zQEhs#;k?%FtK2$Wx+Gv#qis$1FQHpp?N}Xcw64%day>sIdoQBHg-DZTWfF1%b1!4G z%uGXu4~)WTFeFtZGS+316j>Yms8YJuFQI`oC$q`;;3%6eLE$>p6r;@PhFo+3zePAD zcy6d62AsO5;{0XG1-*@4V3jU8V3q%WvbjXk(hxCM4QC$JVa^S9D_w<*Ialf1yryGC zNv!R-Dz)04msvFOrYAui5~=CgOm#ey;(QIH`*(5$Ve4bDffH(?mexdOs>)4z^0I2) zJveNx?nYX+IV3ootoB!$t+=%Fl>b#h6M}_dmY?-BmOor%Z*s#Nmj5hV+Bq+~z9u~j zLO*IuGfPX7dyGKchOj({>!IpLlC3F9{SK|98@zxIe@80vc{weBc`Oog64yfT8?(iE z=xfjz!l+@ji-{GPbh3$V^i+w7b$nMzhLX4TLsMD1Zjf0G z{GcRZ>BR5_Qdwnug9R$Q4lLT15Tff%@v@e@G=da?9p#nh;<^M-6u`oy^lO094-Msi z05MLoW2cIhgn@)B!$>8@IP#FAyc#b^8j`T->@g)a0Es)1u=>qocfRtg-(AYfSz!e8 zEQv8pWsdC7vP-7aef@I$rmvKr$Z~mTVb|QB)iz{@bmQFF*`z5zhH@OFUL@h`a!M5} z&BC?uHq?>EnmV)O% z9g@im@`mI>l2pLy27xgb<0qMXI6u5lI3{kO!O+}xD^CW|n=BW87JcUIi*#pEx^iN2 z%ldm@3`$MV8WY4NR@Qx}@yPL6;U<+V)}Ie%)tybM$(zc!(nt;9^6!Fx$|OFY&U$j& zU<=kCBAfqdCWwzEl$MS^O+gqFE{h<|BFRQ}0>6{vPrf8O$E}Js7!BuxW9>PZGcGJ` zdNzE7x>)a>JGA#;<)G-`5VB#}l(Il7q+}SOpv$o4CyNE!nzYo*K&}axZ=ke7j69p> z>5)_MYop_ZPGL2)#W?8s3eHFy0mfgjOM~kY@!QA+b<-)iWuuv;JuItU+Ef}{mJt~- z6B29zs3ys4Sh|FU@S{p2|10QU64i>VN8pV&Q_AL%qB&#}iP9&*K@}T9SkWdz-z2qz z2W=vM!$1BcNxrtQ*G5S5DE-<*>4(Nr1Ay}0pe{jcO>WN^0VXaeQ*Oj0c@1r@xeMtR zl5)(l(c0(rmQ`UJ^Ie9~zaDR24onY92wxDwgS@y#YG+_oZfqAXp3FCbQBSFv_KowKgADyzD!Iw4C zQ7!tiq_|SWMMR&yq%pCie$Xrx2rp*GjB#`*EF~yMwY8dXj2WZ3*zUFh-gWqXTY>jE zA*z%QC{~TPD*HZ27#s^Db6)lAX+#x+NWw(SIBY4&^% zwbKvMC14R?ofd~j<n{&6HTwLPv+h`5IsQ&fLIx=E6fMv3>sxhvU#l-|mP zy)UP?xCD!pWThZ5E7hM+YqbRuc!8-?P*TYa3}jX`qLqYIDTnLeh8`aYD@U`;KKFp` za&vxG{Wr`P^YQT?&Z=*u*zi0fGX;2&8VtMY7>7<@rD)L& z(uewhSb4>g{OFh!?RW@UKG9k&M)3BfmQ$O1c+9$DXUENV}WJg zd*kZ>VL{AV=`zSFU!Ia_zQ~Jzf-ihelHycN(Z-v6th_5>Qvm2~?4nVh%%H#^tC!#f z-Z|8k$sLzla;(uRD<{RJ>K8JkJRp%ms}!cc9^=7#$p0$qtV2T2DM=_PzaUN+@|l~B zCix#As+2Sz5`TCeQ75fkv8ihhRL>!4q|Qeggk1WPk0eDs6Z>7|Uy|fl7!IEKqR%UA-e>9|E(yLAH(LoQP9ad!5=W!_}dJgyNf*=iSjp*mf|Qv<63o zwv#p=soucvdP^h9I3($$-)9*@t6TY-(*P#+{gYsZ<&oMO1u>`CVllA}N=Iikm%Y~G zFPnJgOGACarSn5NLZvkkO)VLFB)<#7LjDjg1T**qVPtk97wR$@-?Dcw5hE9V01~4B zNp_@0yFe>}%}Wj2?*LVh=rt()|B~D&L!@dqNS#QM7wNh|s5*Je|C*YllmEe#rJy?~ zx)-NrD!gGdE4U29Z3prnSK0(q(tYG}F(!(_(6i+dbh2YgOAIux29Ba>YLG)fXk~s;iP~FZ^xk+AikuK8|7T$giQ##>SX3y1#sV`&^@0{l1 ztcW9x(bRBY_0G^ep~jQ`t}T zRy?-JG$GNDriIwxBp-N;WUzy`q&ku$MFRv5_O?;cT^j{7^ykJr-EWp#`qGWWju7_S zoXnhH6|FFBwPtNL+FTm$ifUN`7ZseZ5j$nWUqobUX|C8v@|zlJyvhqAysOellIc1) z%$Q`tp|9Yrqo~@LP|3BY-wq>vd zFE6J>;#?}0gpWW(SrQPB&(mE--{9?-K4GE~#KhV$R!YT|)n`RnIkecbwVDx^teYO( zD$|TI)#j8P{y2&Q0jsQoFz&!leK|3$eKg<3w3~(f=EJ@NN!vs^9|`7746s9 z*S`_3-75}S8GYT^DQ05<3{D;xwuSSkB2zLdFl`WJJ&I*|cf2-&^wlOvpo6JaD`@j( z6a1)hagx_c)@xm{0@`O|i%{jOfS^Q?J%ZOh)Zr&oJ5j_Y&j-`-DOx|XQ)Pp!-Q_cqvb zW%2Xzl?ub#qoEWS0;4wkUE8)=6Us4A8oNovZ_x-7u1iVN#&I!pML%<9DYSAY=n|+= z!Wot)b<)N!hJn*N+(AxSgSY-kDY=i+kLITNqcQ2hr;z?2Nr7R~%{q7aU%^R5{s%?7 z2w1}8-vEP&we8T_^eD@HtwH&n9qa6{wZ*2$zsbm%4{16{ik*of7>vG68Z~Lu#*oy2 zA47^Vn=NXBqv(3ZSrP1%!CJB0@^bfoX>;>q=pfBmNXJNWj&bpvTeOc2qg<88rfg!; z(8hsgsm2w?ZaHcJ| zTG+l}fnRBe28Y!8qTJ%#S4fA$nI#zog*RA%{FFu((R@evZVN~OBuVX&*47@d6hUT0 zDgmwN2_(5Zh6LveRd?l?YI25=yraOqVZ&aDN6Kdxr%jOm!O@L;#;C3JZwhkZn}nSt zYX*<(8%%)REO?c}mQJB)a-qAY z9mEz7XU!RhNI$Z(g7RZ4*@zo3UeY0BHl}3CzoQu1Oqz*yPa2DM)!_}*ju<$dosoC}F7eGjO_KcVN~ZUPyGutlnUPY|))bTf!rPimsvpR> zJ_qSINjNGM1xIH?0>5HZJE>;#ob}x;=2YL4n!y2I6$uCCFP-rsr6LSY<;m$3ByOe# z9Bee;V514n4Sf;{qjGa>Qs;s-#UVE1j6TV9Yp6z^H)4Y}+kmqb#l%YYf0eaRR<@Yf zoGY(6u*f^D?~;)J_JX45NOL$076!lO@ zaHv#m#y(Qy2N3%^%eO&&qO_~tqKA#M0wI??a-dQ?*RrJ#z73f(ii{6%vsHnct*Qpr zM{=2s-ju3Mg`Y(aakCV{C`f~MhM%exxhAa#1UoKfM9AC+2x^%w#_bY%KjW;`~TfMvMU+Ne?cNAa39%LOrrGZp;}Wi z5UQxZt{lsf*$d1)PQh!Swm5~8ny2a&X@R+rrjjJD7aCG+Ipe|MMfumVyI(2^1&KJZ zGC3@Q;t3J&ZA*%%0XlsuZzxt=Zg7ioB#vN#Do_KE>ri>}DqL7KMFo|2sKn3Maj=m$ z6XbShyTl)P^7YB`FZRVg9rgekl|;N(4S+<>sl-d2rbJvkdq^F4B`53KbkduxAwk3& zb>p)RZMvq@4ZTdQQBQPd2=PMiUJ6Z1f%}(mvyU$wDV2-NUL0o^Es{e? z6`}2dNkdkERDvY=>1Qwz;jU7MD`bi{$iF6Q#K|65o~nY`?JR=(lyo&ptS{CRo!KPi zO99b2qY$WtH}9BbxTMMNy7FO%~)$*CRIpXWfqD2 zRsyl-alWr2zCnE#tf(Y@rS|#8LSjHi29!u5xeSDhTYUm8B%CmGipD9udcS1jiuqtD z*Ij&e8(J=iG-De`;J~GBax!P^8DuI%8I|K(G_H-PV+8gmcONaw2ZLF#*idw&b*8(;w)hsxKpcnVBFZ}{ zr|q2LV4+e$1BW1ZQgepvkdZkpl9Me&m;)q&kLo!jShJ}fe3wI+OxH>Ll7??>>qUiH zX2J-DC2pYwMR=Fe6h5bVN$O909f`NM!X|JEwPMSi0)?Z5u#|vTMJEYSoW!N28Fbpz z?$#U`e}Eq4JswCrIpKT`qfwI2ZgJ2l;SrkWkWXTTpSVm4i63t^$4yXGZ%$P|N9#VR;e ztcq5enM4H2#>!w?k~Gwal`@242ov>DIR(n< zs3)lpJab6x!IeNo{Ph&f+9~nqL10@)R8kLYsfbzR;}8r?)rlk<^INcW!8OV7pJbnb z`qTz~J}_>`%~tR>K5Fj#D)(O!3`>0g(r%I*Tveg>vRKVIXn-5SfzQ(C&I}mxM8PQF8QO;s&7fHK7sTxNlKgt zcgU`9D$adUWz)DvqW$Mx!>%gyokLP22_^XcAVZwZn*T;5AD}q?(gc zP+gRCaSKR9!YQqm@p3Kr9cDVaWR{*GM^L3A2U|3!A;Gqw=E!b|1yOc23j;+DQvvqN zBXvn|znn3PFeAXPLM-c&+$)Ta&*La5Q4b5HEOsQ`W(YJqwx>5&g15x3`|Uq~1Y z>ku7ddf@7mO17y|U^EM?gA4|Z^UA#AO1j%SSEy|)nygzR*EUtu6Un?A35i4@9HcPs zlE}T;j+u;wWAi3chP4WsT|H%@mt+mkSSW~Q8l>?gIn6@66c^#L2c&XUsmVoF`j%HW zDCcB(KDq8ha_xm;n{wKnINa4@iK55_jsRn=o&JmpQ@A$85hYQvl(Oa*Csj(#Y{IQz z#h~6slA}sjhDB>Ii8)mc%nrG?(D?t_+^}ENg}EnPRe5kQ$!im2k!14WHO7V3QciST zhaJx@sd$sBDG+58t!Rm?yn>ST19CAiO*#JlF z9THPILhaDb<{ODAbP9yiVrpMIY)$4IFD`TBIIzrdiCh&@&@%k-D%`t}D?^mosMDrc zS(P1OzfLk#bxVi35*ICRzbl3N$aB1Kr6UwZgYq2bNXUKU>S2(;i9>C%H+G_;mJn8jR2C z!*68)M|#V}4r9;7m1yosG?$zT56%qi5KDh6i%K-UkA!x&wT?+PVb54EORO#9@~fX5 ztYdHoU=Dn1&Q2wrm@~2@Yr(MNSD!!GTZP!@P>QLQRdw7Qgx5rGl8V9OIqYtw2iG2W zAL#C4>c8vp_??wMNQ$cyS-M^LvHjypm&-rrMv6ZeLsTmW6NZ?Nsx>4zs@1afIQ9O7 zSMi~@BFMV$^9CzrO_pZ0oV1f{4rDJGVjOXwA~F92!}sYowZ4GHgm+;I79H}PcQOld zZ_+}Eso{Gh{L9wxH@%}}yy_Py$PXkrJ+P>a8eWB{O4cef9x`EysI@6XSY)w5Y2#{U zmVd!52sz*)Am|u z{}HXb{9bVN2W4K2`*Fgepn@^`uaE)x8<|8SA=zy7bRc*KN~s1cyBe_UY9{A^b9g(a zC)jl;qTH!bK!YaKEh|?wS=&cnc~+VOWl2%tkkQR^#Ml*ES=OGCd#9y&#a~fX7c3=I zow8-hQOrbsTUq*~^d!BZf6chVa z)JSEaN!eIV+mc)9=d$#)qwnUf)|ZRgv;Eyc?0s3~#BpPZr;KXM?HPu{VG2F%QB;FO z_9Qk6DS>if`=`a3eA=hQId3pRPAUEKxib<(UJ4tSB$v*m{wx3W;JdWyQKJ*@}Zk&N7F`YRHj% zJMI2oyphrz1~T4E1tC^6b8|GQRGv9p6i77&#yYtBJGfJaPUlbAvQ!T6`HK!C+Fj-5 zgh%DraH%Xy_;4Ohy2ZdOf0x%)NgLgIT^PoP7_{w#BlzwTCIusN#0S6ZDBva5 z|9N~s3B()cU&8QlVF`;q+(Pqjw9}vA6Aqm!c6{Yiq|dq^%kYWS`tSI1-!a64+x*S& znc6W|JQFbljH*`c@(iEbe!+sInDt2Cr|4P%e|59Y%6gX&Z}s^+hR>h)_vsBI?jT+@ z@-)L2U0rhXqc5)_-tvnL3}5l6Yi5h0!0zDbaeNQMS9T7$b!H)if`zBsAB`FQsb`;S z8yA6D8Xk42D28uoSEFjf76lLwEHj1S+xBa>)%}Y&OaZ-VB*XW$>5$(o1YASmX?$gp zfdAg%asN`kBJMlFm*HQ|aj##jFFDSjQpFAL&+x+qr-zPKHAK8+gNY13ax<}4%u8ZM zRH=&H*~jqXxBu9Zr!R@60&#+?USs$PpLRdaYXiO=@Wjp$@;Om&$;&6d5Q&f%+6zCQ@55 zh?~sISw2_%n+-nwS5?GI_qf6E8>^F#F4_(Eguqkvr7-V)8NBSu^gC#rQzb1E`uCSL zH*`l%wnF*}9+O!pFFaiyakoLO8219{ zlM4)g);Zs)A$`Gb0-k`E0v~%(qO^C@+J_MD)N44SfBjtZCzJBGj$f=~ zxJP;4Leqv&{^=6Zo8ftDhv^31r}SO*i0Pz!F@o@hNoJu0}L<o2{J!K2j??-di4Cn8>M%VmbQ{k_n^VXug>8m>l6Z^Q6* z)t{Qmouc3Ek&nrJkEqR=KA8y%k-kIA6hH(~s&e|9@%NADd-UuCCIuMLY$ zqqffd9PxlwrwEE4*6 z_fL7J|M+Yd;!UmQ;}>y$m!1^wgLumM@+_ZyuTBk%Dq0zF^9L^(elT+Eie;61A|6*> z;7bSl^{utw7do$dCbwerhff>S9}HZC^iivXaeH*ar^fahOo*2%DD>CqoD`yRrN)mL3w2XC&pfebat zh=)J784neTSRHG8W5j`V~5mooZ7jsBXd_XtP4MW;-Lmo8lN zap^*v5g++|Nrsop+i_QB9G$;0&-yUD^0~>c>J6iMY0VnHGrY$3tL-frbe`%z-_7v4 zr|Y*FT&K2mUo2jwvCR7JUIUo z#D~mf>lDv+Q$K4M(2eT1?KPjWe8N9Gk#yqgT1ek$2;=9Tooe^KcBdP{s<^RCu6afz zCC^(?pX!a(kGZmZx&%Bg^-agN_(Gk42!=;ye0?meb3?@aI)^blI?uKa6H9kRJWj>< zq-V5$%X00fH$c2V>28d^N7?o#kM#&cymhTK0iX3t!(;WzB3^OFb%ysmUHjzl=2VaE z(aFT{ewY5}T%!!_m!5sR7@nMeU#kIq>AYyXlJPN5{l$h|EmJcwfAzFSj9&jdCG4M3 zTM!@eVl~4}Yj3zdy1N1Klyo-lJk7uVbg^?@Iv)pbT*l}J4p|h@>C>i2pJzDJ|2+p@ zc~-vXb}HX>J4!M7tR-XqnRe|Z(pSx>%J3onQ_GIw_nA!-`|k;5^rP3gtf|(9%HPIb6B$0nS2b%#zcl=A3Bz)RPwaE);E}^^5I26* zk>QhWRQe(O;8etY;tLA+lW`xV4!n$b{e1#H%Wuk)=AU#%+z>f~(a#?nSFwB?UEf)@ z3}pDn%Q81N5hqWLHSfWUB8KYqXW&o5wD_)9Eqgho!X4zT~<2$2@zU zCW8YZJY(hw<7eykVuKzpTZnksea%=t+Y*vKxl;2Q;+^(0y~1&zyI_uY7e<#X@c!PI+4Cm^2KuN}i5w#oD4M&6Q$ zH%YC*@JBH>{^>Q8_V4iS0^j~~t;dSx3@;Yz|4ZOUluuepZ(w-wfM<=bk1-;BWIfiu zUZrc*xz?@me#Gm~XL84@?2SW>K934Tyx-C&mQRJBzDZnjgMPQ=BjLLh|Bb#-?#@}H zcgtY{9&^;gq>0|b0+{=gMyeK7x^Croej>a1-!pyLKQUyAhV z&gdg6JUiQ5OZjl0V+#d*;@p1IS5x`kqfSwVM|E@`v*A3|1N&vQVtCKdb%zyR@(jN_ zrr;}vYp;EOYUWJJ4?`zbVz}-DT`AXLR9;v9frnpvB`!IXSs_x5`NTyu;eYT-dOZAA znVJI;FM9J7!}|}q^=pOVlw;)9b)!+Fu^?Dl^<- z^wKteO~Uf4{rg=VDRjda6Zh$bqGOunqdGsSH2Yr_;66l}w_+;Mwb4VY4hUpbv zSp(Kp*5!YWc*~b;edIN`aGjrq?fwe!ny==we1^_lG&VM}72;Jowq*F|YKKN;)S=@c zc`D=EULVfR?Da)8Ixku`Ve-^#V#hfHUVKmW#@>V0v3w>~Q9u874Yl*M_7}$gnVj`nGk)=;uFomo zsO2e?f6anJ3(L>;NBRclELP67r(6Hl@yl0;hsc@DyBHn9fD~4|>@n^fZ zbBhok)0Kx`d+kU(vtRvkAL8A<*~Ug9u+fMDCbV?sMQ`b|3>=Z1u_Ks zNvV@xzMyj1^MhIp-}m^>6)Q`JA$?UB6rq z^XYR*;Lqp2S^n4Gg(ddg#NI&w`0G7{>-HSf@$dB@|s0jjJy1uEMdfI~eNZ&tC5~IIS;-LHF2UOqd`kTNv zet9sn<3cm#1EXH{XY{`&b>4IR?oXJHOXYG5zoj1fM}Y{+-`cTd(`&E0-hB*}Zcu*i z-nR#%zqh)~*8N5DVm@$t6vH13&{)1HK=t|ZulyMPXZejWgSW*Xy!+1zs=*`st#*wTD&_Uy)msc!_}4g|Ilj4Cd4zJ=V!Qk3)RT#O}8T6Yfy297p$Rf z|FU^9;=MQB5%8xyHl4WJ9dVD6-!QyTv;12gU8M3ivABWZC40uW-v9Pbr0<(PgyE%{ zPs{6mWj5lCUe;rHnJMGyULUj#@tWt@cB#pB;*L>Bv5ezOtrm)!K{bIPZO} zEW@jmdANCNIm+K$KG`qe{X7#B{-*rL_g*80R}CxjDEbj?&n~Z+T=1^ZD}C4cIS=u> zMKp}RdDlq2S@h~z+Ap0e{=@RAY4+aSY6sOP1B){L>|Jl%$vT_Aqx?Vi2R2W=>u1jD zurZddquV`Y{LQ=m?*K6ux=zL7{XY$3n!~2&0c2*Dz^K6di}nx4dL{)ZR_S&u^xBSIP;- zC%vQp{;JT`#nk>*wX%lMcYSqy{uHel^Y3+UF2lPAUrw$yDjM;6gE}$1$Bx52rq`o( zn8fyV8Q#b3WS!1OQjy+N@(jcKeOu})&*T?~CoE^{dhfVD9=QLsegWcrzB$3@&;vNr= zGJImICxv_e(+_dWff5X#^t5Azl%K009$y{9z&;*Z4FbiS8VOtLa`3D`~-e!XGbT_{^ujO&d2b3-Km@2z+u@)_%YG z1%E@_{Q#2-{Cg@@<%;;*`#;{d!21?>-vaMj;C&0cZ-MtM@V*7!x4`=rc;5p52V0;4 z)QN0x6XVhBH#~Pqnum`uy+?BFl$|Y;#(ByfBwfuNJ|!8#vz!!iBqXw9rxeQ1gv-6R ze^N{h?m22$+N)dONgvrWO&G``q=CP0199XzD893Ja8Ls;9r=C$7_-vNX+Bo%;ABt|H5mYEPe^K#4%uLW zqBEs%Z7js+5+qp_JY;ItMZg7$I9Q}%^O-(pGo##-Z8^MBLY<#X39=VM{8s{`hh|wl zXcW*uy*XTK8bB&-{gA5@?CPLqlotPO6RY!k&g#PjY<|Our6OBpV@Z;asF#}QN5+hc z{IBU*qDyduNUbUH$&%ZrIQ?6#6w;4;2cDTQEHwim0jt%d<#dvgobpI#hV{f2Sc6oN zVKYen1)0dZ)`aXld#*4m2X*BfUy|dLhW&p&%D!eOVT-3B9U%#qwxWPLY-mvC8l;U+ z)>R2kdERBXtM~R$mKqlgvvsVq-iIgHP4F=wjD+m|DB|>zMQKU9CAuUBw zU6*|)Dll!3qD_N)13H3z2%7i5Lsz~|#_oDZD@jt|*#=a9T;~#VR;tcy(8u}28MG#! zw%S4IS@Q1~6O*jDw!r62e%5TBW|NSHVf`i<(LUnK&9;y-Gi65p`{^kpOMGnH z1EuN%6vPFioAbd?90&x_I36a8PrEqEW+?NNurJXkoa6Y0m@~=7psura7usce$k>gtn}#Z?LpAt%}7!Zws<$N zN_wd>;qg|(IFz(J@gRLolGFstlu_%E)Y&MEC6bpDcZ0h)H=bko-+7RBXcpG&2-sXjoq+3svkBcCK5{ryOi9~&9;dNJ8+ z{R~=I^~0-zh9=Sc;L;L(Y7+IzR;kDx8>+dGrjm354SRBOnhK~6Z*a?@9k!4yYbXtQ z7D4fZ`1KB|l(5H=4*OfUbL;AKghCn?-5y(4{@tkvhfqbC)vEQ}2;*xLtuui+6lzux4LdhG;jX3Hs#P}lHKO%kKv40R5Za|3w6%1|O2=LsGjPB-i&{(M1_<13coM)l#ic6_5dMz;xLLUt`hOoh>_!Zgpu`{ZhO=0M) zUZ+@0*(GHzOEzAk{EsjCH08*UyaDM7NeUW6I<9`)t#tvxeq>CPnxRYswdvN>$doyo zk(4^sn4+);0Y)qNB7vGRFT3$8EJ2%s;S&VyMRd>jZBo?@kXDi8;EIhGpJ*e7_f%>J zU&JbRjO@z4NN*StF&`!ltpzs!LGmqlwvs}_R*DL?QdDU+v=Q<>lTR2`&&UQTm^RJ& zczwE-zmXcsF1?|Fm4Uu5ybhlu4>6^yK_yi8BS~@6@cNx}w_Nd+|1Nd_Rplq8qP6Uu z+}DR1H8})J%%x@We6*z^p*&AnTSGqWMVPgZFQ!2qaGYAP&xOIYLcwWtn&zF<{Vz#w!s_ZU!*G)spiCMt`Msmw#104lV+4^ zdps3&2F!`R$mihHiU$>b*;^c7EXvplt*f4GEhJqI@+BfQPt+$_!21NWX>O~I40h<` z`_SV~ta!y62vwll(oArbVwPFg#%R=LQ6@+k3+4}h@XpGLoRed=;;gy1amD+Ll#?VI z?8CZYBKcJb6b}?$Vk9KlxjMh8Zf~4OR|R~V+gVP@PJ*_&M188B^iiZPNpGV2w@&Sa zOP62P?IJYCY@%!oY!D9{UnxG^fN*mBV0Vh-zvxrBV@mypjLwme&?((1(>c6^kJ`qd zu`hGfw*#uAKtAMtd36m)6-ZK$AVv(@;VJ)Xa)wd}7UL z9j}Og_KNuWHC7xGvWr|rYFX`G(I10S;|LNDoZQ=F6*O0y->2rx0 zP*!dcGo~Ta%CS`ik4NrHTc=e*r&KXVW#?|k8buJcyhbY(u<{a<=&4|Vl9J0dKA$@@ zxl^jbJ68d0$YJYt$hF-s%`u`pG=fx*BpEr^)}YNW`ofR+sM$J+1IU$A!tn}w+@y!} z#&yM4WJQ=WY}8rnASXs_a4e`Z&xI5VA|oyw;aE;OZlHI)ss|J(f+UCcXSiN-z-=lP zI@Yx-q;QhT$HmL~$BXRK19Nl3dt8w8~ z2Nx>49IFZ5dM0G<;LMg;mO0ANGb~zzN%-JS$BHR#f}9Go9JmoU_$luAhfpsEJ2*I% zIF+S#UUl9a>_Zb9Ui|5b5C2x~}L zlVFN`KG_zK)_WZCFT`mR^EUpPVyfdR?7S>cPw(` z{I_Z?q~#<@T?W`1h1%9S#}Vg@a4jB&g*Q|hC-&@YXa_WR#qB}O>F^&;@AW=Gc7ivN zfk%#*oFqw(X^>?Asg|ms{ICB*{8-Thm?K6l(;U<`_+P`pFO$xF0qG%0cGzF%pzNpL z-#dh8Q*@x|m=py7XIWD?Tja>{Pf^-Y!`hp9`K$kh0ic-)2?8W*CON2siWdfC=I66or*@)2}lr>s@G9a{nkx$|}+sZe1o+qzg*ejDx%E=!`b(!mC3)}@jSH||Dk zJGwn<2WOo4<#c;#t!%35??O~+<`J247}7qH?AkFR(hU0etSV@alJP-jy+lPHrG|_( zB1?kEr7}SmXG!vDOaAPPj+Ca3u&by`)fq+IV&@(B26?_AoVEZY@UK_9%SZ;aruh?6 z5BXo;$qty}MwgsRR&H!`6(zmQ+^`&6ON*uo*X5#qL=Ruq<<=8Z^eTKhCl1r-hNUh8 zFBc`rp4gOxHu%4PLWMMJMIu@_PjO|x1}cP<3lm|`niJEE zDIyMnqm}<0_@ih0+Cn0$WSv|bW{T2<2LCy1oiJz~PU1k%xym?3gY8P6q9YE4TC>F@ z>L5G(kLQ`9A}GBRZ3N$c5v8bYh|7+3Kaj$@e7^C{%JYjpeE4)xv&2pXO2J^uB)k@U zoH53XfToSa=`z!`6OGY-EolYLJ{U7WN` zen@#p$`Q9k%bSdV7=w~<=Gs#M1#_C0YF$)5z;JMAbm=b;_eXD zxH}sXq;{-4|5J7>kwmg1zQjf^JH(RHm~YWSMmlaMbeyU+q{bvUVH*K*(GyHE8VLzK zrR1l7hAED`qmlm=e9*0#17|JnXo3|Yd5P_gS`!h;=R=*W`6G11Q%dz5(gTukOe;IC zfH+Kz2#F9!(}4F>8pT!P8}FS$?tG^@vV3)N_fqxJp^iX%*xT<2O)F?h*aFuy$|-Zn zxdX3ML$Kz3{Q8nQ4J+#-)E_s8Yw4WH2dSnfD;jc?x$m3%RBPUqJR8chcn*6(HYLnM>bzE2Ebe7fa)3!aX>te{PsDZ zx+ZiOTsWkzsMtzWD~ix2B!DNoAuWCYJq1Wct;>IvRzwQKg=0bHDmR#N=%Yg_3ytJM zx(?2Ms4kP_pl6K8BEhY~=)`{$R;A1VvMcC0vVh!znrco!BF>IqJI9=$ZB*WNm#)0Q z6_pGT$K=Hc&&hN~C-|7MsH96<>4qc!Ib11Ygq}!?LAP7kfNYB&#>6@+0qolnl76TkZC+%d{mY`feEF(z49Eu+0%FCD$U`T4t z5+T(AQV>bhY`VH%>vo&K(tg`fniy`Q#OPYUhCOFti zGncIZKYAP-Y$A=B%yeKD4GDWY4e1C;pG&wm$Cv41MKLrcysOgKlp~59U&tBGr*X2A zKf9~A3=+KrgHH(3NlF6Gc~UL#&rp#ItS8y<6erTjXl`Sb;L?UQ4f((L{I2TVYofLvr4^C0FVzK5D;U+INL|Z#dq&fBA#ezA%JZ z9xwjZ+`9TaUAs8VwO>OL`xq>H6AnOTxIb^_e2CEx1q%6e_Pq#I^MNW={k-tQ)R37y zU)_BE%_1z}kfJO3yKX~fwf!~Z=Tc~ORrRX;fZ=mHR=oAP^$$p2GiIHD|G3f5`(JOw z8#GU5_@Z<1XKtpDP-ZGs^g(t!b=mj@!&h6jm+f{0mdWrGTfBQ4QMc=cDe1bpn)qpsh7i+JDT zLm9sAaaMS(N(B)wUy0p09J1LXw%G7$dl4@;ligh(vNX2=#uKbjieg^T8``O*vAv->K)oOAHVxUr~x~H?d&_j0YukKYKDj0Ef z&Gjt*UAmcvqI!ZuAUs_v3iaLd?1L4{8h}SIJU!yOF#0cBPkS})(<+EpD_@1-`#s0D z>@?>#;u)jZ9pE7cE_y9)mD&dJwsF-M{gHkr-A2YWLA=$vI|4puNOZDpGva;Mu)EMh zzKdVeb<7cR7DlBS-m*KRzqB&#t3Pg@KzziMIEMeYA@hvp6q#~x&GOH)8UE9pyVFZD zPaoRYzADo9?auCO54k^c#kh~!ha%qj8oM(*wsqnSftcmppwFjQ#LrCXHfvsb0YW$aBW=PCp}_8S^j0>uj5Sx8oc-u99|7Wq953dp?(;?WbfAl~<44MyKAsQ2NJhIG6IdhTI(%lSKYY(GK!J>Rfh3~%L{Z_8 zfz4MbeYNWBPWaI79ZDbmemL#-4}RFf=zCha_kS@w4D(MMy_w;?^LzO&EQGFSs^SAW z2)Iv~=Jm#&L;69TZ!m{{@+cD&M7eYwz6*AFyXgt5*{}kv^jilOv%il}Amv<+B2D*G>-^eM&&w{jCc? z9>b$QCFGyc?r77-N9rQpye;E1p~mG$o1HIq6Y+$BsVpB;{YJNzxmgfzxLW9UbM51y z{ki#K88(d356rjE<>MD^k-o)*PZ>V+Y!nURj(DDlOumPX{H^s(HwgLv!+A^)+>y8pO!4usW(r}30Z zjDBLJz%j4pQ+evTccg&Fms@^#9PDYpqh4Bs;gi1K)M7vkmG6F~zGL{z2=n%T%AG>` z)_9{&H>`wH+VlBVI^2=0D&z@Z0+1PHDn1}s5Bf(HnZ zO$bDHH-Q9~!{rV;YbjQ%*;yQeZPDEhk2exYHNC0s>`~% z`T?Wo7VAX5y|CrXL8qQ?A^fa6YIFRB8xk4~>CX6h;h^dqzWDCmS9yLeN%%gqs&V-8 zo?Tu9cb!Y{O0JhVe2w>!rKSf=f9Ut24u`LQ_bz2%#+HPi-&I_98}9m-f0UQCKbKLI zgPRskxv^Ns^qGh~>v%m|MmPV)uV`PY$K{r|F1F2Y@%rxtOfTxYY$C_s70~K=)%k-7 zKQXp1hwmx3r}ECOy9i#gnJ8cOy~{FCU$!8@-FFn`_=if3&f)cdt>3VSy&V2WsVP-1 z4mnBqSvL&g@WVmZ=4b7)o8aj~B1QPS=_5|gYDn1|R`irepXWck zXi#mE6XEL%iSqPPHQoFZub&Y-cre$i8(p7Qcjjwd4uXFhUzgW^dq{^N+dP?^ig>~8 zf=0JzU%623!uN#VAxWf%yXTgkZ(ZBWZx`j~^*q`7F-O59HjgDXALsBF_gW5XT%75# z12%Nx@K;l6Yx5*By{LQpcOv}IEYrX{L+QK8wM0Jl=2(GaeO>Mlyym3c9RHnvk%f)= zGP*U^nk>Q(wLX*BdJ5sU_{8U3ryaUErC%XNx4|2E`*kj*r*>=efVC%EdQMk5*EYp< zg?lr3r(bbVs9)zgI}n<%Qk+K9m%p8mzkUT0jE6Wnb$mlwJWJB-KkS7GyB!nZQV z&lq?v{i_)t2|xHeA7@?mfrqpkwMz*e`-#hCUG6ojs^{$YhTygPpXc@DS!g=CWn*4~ zYX*Jxn6FY7se zdEd~RZQmayxYz1d9PU=-#tYY<7@arnIfKJ1{2A?XyILW_Z}zMWhr9RAw6}OECKtlK zAHv}^mhL{(yUugMZ}Ma)hu0djaaWb^77)B}v^bu1mVBIe$BFU(wmEii{JJ6Qe)P)n zg7Ax#>dfIDr9t+ZD(0gRZn$P`L6;g2x80?o z6xWNX_79`f3~R&YMRcTk+7{$?fo|~3U&nN4ag5-d3vxcA81wL0zDSE1wF%$tj5uGvmG=MT?Z%e`?-taae|OrHdD;rG z?gY=jnEOL?)5lJGQzU}P)AH%K{MF6szO`ogcWhp|ceu*ynKN-tjW;7YQ$3vvXXWs@ z$FiNN70LLsKKt(+KEGr_#gDxhe@-{7EQc?+m;03S!pBsP?hlbaEUDi5OrA4E2(BN@ z^%mWVYLn-UYGNXI!!6ui(5*VWVM36{b%Og372z8iFR81&$@rm94L$$vroOL(Kdfhb z%q5=y{-oR1DyN%i?kK9K-kKxA54!E{kc6WR(`S5Fh;*_$AZSli<~6K6E4aR-+jI26 z1D7kzzKEE?<(h8)@$s*6o#;mRnloJA)*aZ_eShKHZUm2W7~*_{{L|)H@!1p7Llx6EE z(<*NF=`OU~>c6Gx?}XpQ^f$-9l;PCT4JV!vyxIEhB7DN)^C$1kBzXVRqFlJ#tw^zp zmzZ5s_>3rjuR4c+m{;aB;a4gr;$P2lbK?FnJ_K)}JHYF|9h-6mvz_~z+uu%eV2)H{OzOTGgd~GBY3x@ zavcAkjtyIWSD4B1@2fu&;Egpi0}k}ck%{nIeiOjq+ENuS9&T}j;QgL*`=YV-(wv5i zGb|!_2kmf<@8mzix7QEh1pn4A4~M%nto!ljmCSBUpD$j7$CTRZn}yL~O!GfP`0su6 zL30?L7n;TCt+DG<*GYw&HlX_3Y~$nHIK#_}@r8Z9A$WYG_}z^0i-%kZX8gRq=V)Gk zrgA5v|G03D@U_}!9GD^GFWQUvba39G*W*!yV-(Pa}B5 zt)e1)jK_VKkF1@A!})@5{B8D$$&Icvy|>&5F2@@eGUmB5u2BuDCu$wHPaA()E_F%Mi@#|9(TUlt122BK%&L?{RpM3+o!c>(-Uv$=`|iC58k~USG_M;GtD3aQu=J z?(FVUydJ@;9pH9l<4V(8ZJw~I3BmKbi14cKv-PPMQI_CA1;z2K-uL_uy>l==+_`-b zUVojE>#}yx=OFxk&(CnU*W5lIGMr%krH0zl9Nu7%`_c_3nLbt`gNDN!_L^7Z+U%oL zPvW0fIlS3WznV!NX9=$VD~kwU<@7%O<3)nkd&TXn#{ScM`)1hA1vw;I;ua;m-CIrK`-lX`lm@%g0~Cdevif- zTa;+>y4E{_mvRx|ol6#)db4j8g10^8!|M-OQ1r*Y=&oUnrk*>uHyej9e)YDI?iAst zT<8Aq#$7g4uRZH*ErK_$xr5gewZG*sR5-HyF(74{j{3yRo_JJRek)%}ecP z!5n|wt84e0Eo1oIvd`i0iK8Bk9@&cVrCb^AityjQF|O7zew$~(W)7e3ZtBwLSs7|i zhP>H1d{#ogAp?Dwp6S=SB8M+(9lZ8TKQ=EV7cb!OrI(KWxT0n=swYPo1Bb7D9g%Np zO;&%Y6CyoqXkYYNmhb)|{D{B_9Dl={*s94T8K0?kMx^sC4ZRANO<{bs=vyvd8t=(v zSpMV|!*91uocFzJc8nO6=tuRZYdV+LzkkIYW4g(;30`f+uN;1`NRWTW-)O^tmL0H~S>=xBElCdFgfF zJA!LZALaOu=GMKKn8NsTcD1RPmwU1OxR|M49RF?R zxl268GXGEMxV0Sq_t4tEt$gB4^~C&?%;6u;t;|2ukA1gSLEcV3?UJmc$_(vC_|@L= zdG~YjNi4W3z>VOwbLU$EZuys*5Be#G3G7sF^dwJgHR8Kf zWcB-w+`{3*hg{D6_zmMr{nq}?;iGRXSbTKMTdGG_&zr-4KAL~-nEB%g-s z6~7Vr$%YlL-nwUGesyE3I~;%Gm{Zx87ygy-J7yNgVbjjV#YgRqC3vUV(HwtEa2KCy zuNZ!O)$cicXXDv7-V`$H1Cfy&e!wSX%+v1}Jv7NC((|Db{hp27!1UzG-al~sBa1d1 zj+?)jzMJvV7!Ln)e4%!(UH22bPSso-e$4c&@5Yb?1aCJ|r1SIbx{n{^#`smi$0Fam z(7$VqQ!yV1zinCWuk*XOpeej>D_*y09e+I}yBUvo#$5 zFPFd0-al2E;5pJcarob@yDi!}kI_}S{e3z7eb?CElSVK(p27GXhkvO0vwNxZ9#qeF zEx4ZJ_i6B^9xYc5CU~zm(*^t{nsenB3_i~IdC@Z5J`#S{XiA3AJ753!Is#uu;Ohu{ z9f7YS@O1>fj= z-0{?i>`U;mmC$CVolw95;k41t9GbE`?q6?w;iv0_^Gx#7LzYLAe0fIZuQ$HL8KX=V z7YNDEm|G5dp}tDd$1zMz$#yR;-> zd6VFs=h*3iP1veH3VcBgbfzqdhTeM3E|L}!-X>k=;oiI!4kyL{(nx9{=QQM%b!(!$1xq0@@ zli$*y*O&0_5)~b;^Dzn+d{dRqGh_>opT_kMF?Eq2VdgAW{s}9YG_bCqj`T?&5bVV` zC?l{qqzGx8=E)Au#z5U}hLG-VI=EKN5UmeM(p%4sAmrFFUz#PkbbS)G4VR}8i!zNG zB24h3##v61z#A1(W8j_6Y8(^lk@3cU*oNa!aDVb3&9ZeB(|qw|H_-ijQy|Cp%li%mEL1=-YYJI`~=)}yscXJreyWgN?y78r+@4#8)&UxuA% z&sDE^0IK^Fy5tOdSkAz%oJTseWZ`WGG97J{F$>NO!r@{by&Jm?1nxm=0C!1=sgKhx z=|}_%DjwzJrKxDvB+yni3At*Xs;!ux1sP+LxVUbK@m7o?)-}&iqX}~VnuOPE+=wOT zj_fk9ID>kU3}ljW#h5o+km!gOpohcrMowigq23Avs~-k6I*O! znOo_Qd?*~{##RKRjDvx)8f$7D1%461pwq5GVrUJe85Whr6HALntMY3i{wn5jmgu%Y zSiR${sK);?E5gvK##mIw%fRCgoVjIaI}2DFTwO(=6u@GIkmV#5pbrVx8_ZXNd^R;( z$qSZ>;P3*T25`3nT@OPZCPA%|W};VXu@&*iR;vz0IR63+IXv2uNOGH?tioc$l%Xrw z$z3kJhdmf>hKJW70lsx{z^`y`1*wM2FFBcwJkmzg1uuV9DsthY+p!1TpoC#jqat#l zsjSIZJvuxbA+Pu^GHUKstHF0295wdR7a29}R`~c@EWcavp2QpU5qg6jE=w`GMe8F& z!ji#`k1{o(fBK6*VplS#n*&xTnmaVmJrElbEx7m8EeMuq)rzDLsx*6+;dT~knc@{F zRy0(h8euy@y+tgYAL*QmA2Dw*;B;HFEiDHd?op*QYi>Hlv4)yYH;A%B}Xo{7Q{}QQ7PvCNfU2E-BESu80+OXHo zR>)B5H()E{KkYfdiAdw>O9NZ`FD%%FFjvmMK|#0P_+5_4Pf=<%h%fm;`J%-efqFwyRG30ab)ol`-O{P_OIhC*Y6xJP)SybhRHZv2 zpK$@v#-~c?&@(B`p!#RpYZC{-B55k^!AQCzG)_b}9!&d3#U4>B3DAWClZs@*B!Bk=_VZ6Mgb6HgiD17Z8YA zJN?4dZmKNrfy~77$358 z3`NVw+AwNIzpeor)Y`c?Peq_O?(1n|fS{-UDPIq3u}$qx-PZ#yXAQWVHFK4DfWZ&} zKWdznezl&zUzHPxjulHLLPm-0>mTT%+%)n4!M~D59`Fvv0eOJNri-#G4jDdTSM79B zUIel|iN%U?EUZS)L{pbILsSagUfT%L@I*7UF_VNEB+6Mhc>Lf#C3?e+*a}<>PVpS6 zoD{lP2!)Ia4@{0Vh4kPGoVqv1%1)rrT!AHchMA(0ke}I7UG2>IZ$-HmJ{`bSH3xh< zv$*mdftPi4k27?0^MXzCXua8YLsx2~8aFdj4-nK4Mg|(~z&XExny9@75-> zF?iGs(UY!xeM@vms*8e%g`+DU-VixoT9`at1i-`QcHm01u@zvBsH)a2)lP&kP7W!H zU&t$kVRM4*z2&uGlVt;a2Z5{Vy&+M`Xtz8j*FE9EYk}{=GJfv*M}xXLbNgb z**x9^s7BFMlv-MG>1~g^lCV@uVuK-tzzgA&O1W6WvR4NFA>lq#r z4~o0_szZvGNj1Q&;SLiRC&dnM%7DWMZd^T4>VSkKg=sQMDphVE?mKuI^dVL%Z6IhF zZHVrzNH5-N1qIN$w3iH}Fn^NnL!ed+sFF>hV)dSeNTY-Vg%@y`be{1L=fpHgvpz)g zs66Zecs-Eh9z+Q_8}!DwXt-qtF0KwS=}GTPRS(yz=sqCQUzN}#^TWnbGC4vIBwf~d z8KB3&YOJU%!jQ|9*e__pN?J<&4~ql!8)m}b))Y=aFvXMpFWDed?3CH13A2Q=LoX@W z;^1C@bt54QWdd%hXMuu#dOaNIAgzO%NHQPeEW6?KG4|Aw{Z~X1SyJi=VwX9lnryxj zP?wO5idx%@#*j$8Q8FsZr~yD}iH0yeG%?l)!4(wAlS^Gp>7<-ReRb)8K}r@&sy;=7 zz~=n|TuGo3;R?K+F9uF);W1IMlDO7lmd`p^3Qz5J%q-kubj<`mw32)vq^KFSTE$O48-71k)l5glR;#M*n(x3TN zeS#LE?#L3nWAY6#p+h=m6gD)(CB}nFkrV~HH%d#5p~q71_K$e7uGSTgioQYqC0@m^{N8i;v&sWrdt8mWx%R}*x9htVyzY`=yi@-R z2TsQ4YBl8>&{sF1ZITRy&e&ODjj3!YG13>cS9}x>UUB}*%sQY2i<44X*WA07!+Uhb z4!!1h45g!*eL_2BDuF!g7D@Xy!MkFAApk}L3cF_QcDqfEDyc1w|I64X3INFsL!KFn z+K^E^VtSQdE2(ZcM94jQ>L;Y!6o5k);zZoDK<%*2`IgQj_FZ{A(5r1lonqGwkzXD6_F_ zl!*iW0ofv!2fKn7z>1k8_jbs6nCxqkgAvd|d{(4!9o9&_4h3(oLze#+il)PLs0oIG zAvSH47lOfr8^;=}tVDIic2(FEHBanB^nCi0sq`6 z(Kh*oL>o!!IrGNEc#(T}xoO{(3`1oB_OTVS3aPjbJ=NOudmEF3K!1Uuj8+UKA8Imd*qRq#k!~5|0y> ztg-^EOBL>+ZuC16YiQHAU_(+!q@zTT2$J23nktNa0Qbh*;}w_q$85|6X#hZWu8xU$ zNk_WIg&N%&$Ayv=Dw!jp{i$iEgatqlJ0|Bwt53FJp~3yiFqus8E;f$VN0RC+Lutk{?k5G zJ=G+#Fi?*5;a-Umc+w@@LTiTZYFyKx9;kB7=82~GL^wPX8)@pom1|o2N<0>~5mMo* z)+~0$f*)H^Ibiz%B8wqkO^hB~!bZ#{25$TCIE=M(wep^-X<=4XR6CNHjQ_hM2;-=nX!4W0)a|wnX7g$>Wc8u7HAkYk?|N@@3P~ z%lluU#H_`3`$9oIzper=gn(S5JN!nEEssHCtPRuE55*!edzlF0BMW|Q$Ug*L`iQ8= zM95+VyQlO8_`^xvWM>;D=+08W5$guA(p4XZi%#o3&lRnq3D_{a4`d-065&dVoKH{N zn(meV74x$W8$KTjCXb&k7o~hzap}v_nE^IE&Ju%5aWV28N_E{w*r!mp{mq|Sg3TQV zWds&w(QORF5FTm1B$4qczXN_<1=ro^C|)4Y8jBSQ zX%ZD`2w`c>@QZeMWSk1x|oy?&FMghk^?&&WhiM z&6puFE*3m{f=+AR&QbN%nP&q6UnH-=r-Y{$exGwF>uy+lN2{(8F`F51oNZc)>P+1c zhpvV=R89CIu9Heu<+EA+13bx754x|-0VM+#<;gaNlQN?6E2N85el1Muz_LYaKvK%} zsO~Sqj-;jRVFsfiPQrU6R-^-*M4J}}=0_++v1~+zRatT=(DBWxXv=tpaLhg|)&QNDv2y zp@-P6IaaI`U4yu22n(^{*-D$8Lt$1D^G~#nbOGkhE3g=GSkQ(dlC@O}+kCRHv4T1( z45C=E@b#dM)&~c^AJkE|xCpuJVRCnsW6-jGPE?W80 zZFVD|8V_8(xuImn;wbSWFd@L+Z4KCl`TamsrIcPM$@v6G>g#s zIN4|pq3s#H-j)b8CdYuI(hwD9sXN1)^k^MbqLcCC+&QE=SXjB@QAkJ!5?)R1HImsb zZKFn;fUPKqw9M5aLb_MmcplsY+v&7fDLk_i5SJ zc7tVEF$)ZSk9x-kyi0$pK8B%cG~Zt1_gvOHemvVhkyGmveBfMuA8ox8oBZm%X_AfL z4dVIzwe?Q+h^kpP2Gmn{+Si&R+@o0U)S7EQ1z*Tc@a!43arm{`lT3~KwUO1VP%KT81ACcgzl{=;Cnb#7_j!IArlGSs6=xPcW!!ieu2Q_1b3=4o5R!fs@5ym z86%4!*10IZ2h<}&V2H8L&cOt4X*|I3GakRVanP%h1lPT9Ey8b?tD9#iD3S1Z=1<`8 zOyRymRyIRV1q9|ytHj}%Q=XmL-47#_;9itR{C;bXtbGcNs*pW^;B{~Edt^PbjXM?O z_pTMevuEJfV>bb7vWsFDbDa!F#vo z_mz4S{wr(r`ZcEr-YL6){>h_g(*^5WN1)CJ`NuYi_{B1e8{K$LKZ5(-Jtw^2QLNO* zH923FAb6h9JvhAhhFm+l=0x|nM&mx^6^H+rb=AWeK43A!6Q{q*;gxf>je34Hg5Uv% zPH}h@@B7;)4tqmz*Oa;(UcFS;4h3pHCwNS+xg1_AaPk?W>rR3w=X~QA zg6EpR@0azcJ8o7$zwNC3MF%$K_&$qGWr~INA^ggH4{>;dp81X0R$z#yMw4~kRSs`_ z!qq?6)t}(~d}nfa6YY!DbqX>%Ecg3-4sTKShk=HB=LkPZC(=)V(>srlaj20%?0e;| z9KU71KPPBCe;{}s!$uBoRk>@(FZ-Giys|;W54tk=LZty1+@;afdwHDWcknB5%l#Q! z*ZCI=;P9}z@2B0^wU_XFYxw=I9&y^AHE&ljI!W<3%<+5H?UXnxxi8@tTgvaR_2@Zk z@bx(V{RD4)sI7=U_raMPzMv|@?t3x_VF_*8U<_T5IQvWd5!Tgze_$Gf8v-XxeMJrK=@e><>c^R7pLq0!uI|G527G%$(qBi60s_0PG|s6|{L zM%008a9I`(pSSdM^F@8N1n)Yl0*5c|KJ9hEmK_N0>XOLeOa5sTdH*?W1892G73XW& zu*E44)}m?;w{(Q><@n40Y;)-BOU57aR_6CQd#o%n`qPm{UW7kzLT-+~_Hx^#%wFJr zgvYzBI6fN|1(zQF2F(Z9B)vX}<8NLzAYZxBxM!i!lnyS=;aeN%Zl3XC^dCNLCx>s_ z=e{mu0&e9&;P%8m9KL(%oIj%rqMIFJQ)i9g@O}3lPAf3Q%ukN;d%-;pC%-N3;?Lwo z*F=7=w#Tt^+iLU*=tA|>jQEDvb9}(MPT?Pzp3t_5h=2U@g945AFu9-Wx-Z8+am~L} z_}i;gPlin5x;u4m?Ye9E8NUk3DAMz(Cz)I|XPBI7v4qQCkMoVrmGfxx7u6Hi*^AeI z`Ii*u#UUpNp7nx=f34*6exW{0ZdUAagyY{lxx1PFB{uJYFG_Iuo$WD83P-0drrWw@8tR8=*PFh2tT`7 ze!g_$9?m?zhTu8;HgNp!+#~DUubn{f@QL*}ypZ01piBO|1lK!1;PAq4-_#nu(wpGP zbC+{?$<{@hb$`bAPyY%rB7AN9$p!bmC;W!#TX490`)yl%>bxSjL0eUX|FQ0`TeSud zyxGfk9A0x!mNhx*F@EU%?t2ce{mFY?gT;9Wzj6;wSM}>Gbbpvwfbp3MvlnyxI%i)d zmr3kJ_#s0$f2d!#&$Ve~(tXG3*)EQA{R*QOo~YiI;4ur{@p?QDZ0y@j$J*1k`V|iM znzyKT-475D1W!<=?i}uOHzw2FX1qx%aEZ!kP^)$Y}^2=2TkjKg&Y=GQLsj`5lJ zo!pM7-#F^d%ZjC$o*!Rm8OLw>N1@@53J#`v5=sVec=K=8WS;++=^?>RE*$Q^cx>M) zKmSAcRVr}#Ucbe*gY8}hR3Uif&_^7<)gHrvz&?!rOT6yD;q4bh{rpGB2f`n)?`IMI zX8!(RtF9B=?@V(J?-ageWXdW%!L`oAMELXmPK%B02%hO}6o-dbcv$P#t8)pS(Pa;Z zcS)agT}^@N#D9f2*3BmV2x{3j)6D2ES--<9c^+X1Sl;K?Z*K5$_!&4Ln)zjfL^gTn_EDB7Xm#7M&bW(1e} z^@rR!nmI0x$?@KczvcL2-?b~AE;Hl*rv6VjeBAXuZ`!42d?|mANgV!b-+nKTUS{*& zdtW4nPm44Xa)}6<>(p-RJx9`j-x0d?ca#BZ7BcEb_7C^R7l$TpUmEe%jX@fAy9g zGb^-s!Ro(umc!SYzK<%k<0ip7CH%tS>+j!9h#Cj`5%72xU&Y~joX$4A`}RG-n>Q2J z`<{nOoP z=H1}mJ=#Nev!nYAf*1RJ0f+y&XYhCb#AEmg9N5jx^~UuoH_h@e3|d&E_zA$34=0l_`Nbm%e=VXhTz(}B452(sy|bs{ zn09>$KTkPv++O6acRg@KX@cu|iG1?qsAr+|^E3L)(NFB}r}9zbr=&1_HEQI3p?*)N zeKi&h?Hob%Bzvyq@O19em#pZ^?5TcJ>xl5Z#RhmVHBDofagxI`1T=Vf&$yZD$?cP$ z!!u8x{mZbhf&@>P=EmXKJ9w9WlSAMh-YsYBSj?QC7Nm=n$M3v@fXYR9Qngdb9y%WKbqN1fKE zAI<0?<4i7RJ&Wq^{p69@pYYrD;`*UyvGhG3w%58o*t7{mM!WtlHf^KxZdblzkSfzEOCDl z-2cO6UcaYy`cRLBj32gZb%?`#fBo3%my=9h)R^^=!*yP(a{AR?MD-L+J}$z?eK_V^ zcN)QK{UOe8<39?`zIb^b!8KQUar~D1|2dfVn*juGUauyHx1L*n(#U}w32v(G%i(Qn z-Hc3EeJH^@6+Oe@9getWS#(xbso@hG^6t$ zqPd^PGu}I);@WBqKYeSlzX?M&CqK{1+MiH&4zI`1y2@{bYcT#$c}FaVCwU%i@q1Ps zeYf{haU6Q)hzUMYi`n%p6MJ*~-Vuuvn#3^v++kh~4(}6lclz-ex2c{1V>v(f9O%8g z%$`^I37)asJdQtc`uZXxJbxv)F@f`Q&xtdOB>HV->&q=ktY?1Qm}SAu7~NLoYTzf& zMKdP1C{TMN)f2vk>!qHH2M6|?tdAvl(bpnfEy?<@mrJgD1lP6a`l0923hra$PP6*6 z&f;?4bG>hJp(SQJ)cscr`1Ug&I^X$?>hXSdi}!2e;a`tyFDxN=feu`6^xRaWMbB}) z7#&vm{sYI~+#%nah-JSJewlQgIDCJd@-6z^@gaEG26;IA(BD}#-Z9M2889XthyR%_ zDbV)sS(v)S)Poo4oRnSs|i{8)S$z4jNzPin=A<8~%} zyH8bCGlu@-bZ*~yo~!-cz+tAk)XsquAM$!G^&D9|$c_1zTr1w>@GDCehu6AMo$!N( z1atV+V-Nq5qcF5I5-%2>T=&q4cx2|x1|&bPg?hW9%?sYfEg z)1~*}^<;bWsKdxwOpfUMR&aPhZH;HU$37zbmOqW)@FELu2Nl@akKnp7V>tW=@BW8! ztY_oq_Jr#dUKPhgZ#nQNl<<9zrEq-rzs{Ljm%2dks0!;iyy}&ZKb$f%K3O608HZQ9 zK6b??1Jk!Ptv7IZ?G@o`R{U|1>S^oLki+W_9N(+xbyiQ&D?fL$Z!{bhE&zSJG5!K^) zg!5r9!;~H|wVs|Nc)1vn9!$%6r%UO__*K0MoX>li9_%{yYt^-c->u;(UVmas&&}z5 z4FoTEnd=o^Nu5IX#jIv@-u%f$j^F*${%$qOd?b9AZ524YN6YoE`@fh#@H$Vsb9m34 zV=_JaP>SH`!udX+SKmg?-=1B>^oQ6i;y4djIc~>~2VWC@^SG(Jo}cDkdH3h5Zwa2h z0M|FX2G@={kgzQ$!Bd`!^FE|{(S_SHv-Q|>5tj>ILt1CpdFX5z!qi*v|1Mwfgy1_tH#%4y(DI!+$H5O&6QvJHqd2v971R zKfJY*S#J-nC-!T`oO742wJ%Bdaiy~IdS)!!x@Xszc?35!ILhI3OzSg0+r{R~c}OM> zpF8)Phezs`C;XBvIN$b~7x7)gEDduJJf)YOp4_)Y|L-_vl86(Cs7_9s=m+5yCT!~s;}R~ z@ej{Wc{Fi-F~aZv4VU{~f4-|xZ~HH7UMlqy>F{**sokQ6v2n<@Qlt)qWzTU0FFcp)rC#?RJx&QM!1R+J^NV!; z;DcXe`kAW;-zmdTUjO47Im33Au0indxuU#&cEaz(_0HcAJm6k1$A7V+ZNc+~bOf)S zVFHK0Y&@u{_f=Pd7d;Ze;jc!1+FNT$0fHL~j^yyaHvClPu`e5+blJsq@g`HF$*uD1 z2w&fSBFBGQ_m0=tz)=J*lvGB9hiO+F7%`LJruJMf^7=IUZNAQ>>k&No@Ie9JTRZD{ z`OCwb61;CzFo!#J^*K@F-C}|_4&`#q+v(8mty?=Ve&xBeJ;!%G^RaNBOgjm`&pB?- z3cqVK#aqyCU;p?z0$)eq>j-=ufv+R*bp*bSz}FG@Is#uu;Ohwd4~#%%Xye~dUSLr> zGEogXl1}AU_4D;LRNe@$Zh5B4=D93Gq$RrK2-cT4b^i&60PQ%mM|D@o-F2gHjen(by(Mdqe2R2BF!BPOO; z3!bmfbHsai+{zaX@}9~yd*7!&VA8fDZES?H5{s>quF``)vI968r?j2>`+v8dxqrJ65amSKvUPp~4GBsZCC7F1iGtfZOpcz}r0kwy(DEQG)`=RqlI4+Lcmpm9m7mxb zxPzII@gzH4aFme37h)kIRXZ$?tN^ZSfpg64cAVCDk)rvg5qR02d>=OXpdH8Q=~Iv+ z7aFdGa7=AEEXs6e3@5**%H70pGFk2LpC#2ZYW-qIjTN(XgvY5~D&XM3Wbt65<%%PU z6;Ib{YvQbbg7OB-4jV_3EqI&10k62!TONWnnkPi#Oj$jZmVx|mq<>;4T(TsoCaoMc z%_|$|#s$a0rV2!xo9WePMUC`SPfbe_v)JOPs@F|GwkSE3n$v`eN3U(CiXs(g5e&mD zET5N{RiFeXIz%nyBW4C0!{ zM&y99gRO(-G+rshZ=iy{l!gRj@GaIl3`THg$!@Q<8pi4jq_zI{+4_*c+*JVy~F(h)(O6# ztpx>kMYZng`iau|bxuQiZgsm%NTKwZNy#1JS6_lfYB4d7rZ*G}j7n5Z1z;AOutN0V zkPK2t_Xh9K<78eWj;=6m{x!FAK@9`26=?cmIH{)+0Ye7Xa1;DUkCSa_(hO_FP1f01 zHrY@td>X0bI-t+N9}Xu;u$8^Tr;%(F@m?M=N0M~~l#*Rx;~bDBu2v-!&)j82XXh5Z z4T)n@yH;PSsWVZr31B&rFxIRg78L@~6M;zb^P1V5z_?@yqA{z6>rp8Cu-IPT*qp5D zBP3ilr8lToC8VC0Geppf^@iAxXg49_lfYGY_Gk4ZDnc$7^KHLrU~YCgeQ0hKb5tV* zLAq7Bx*_YAa968>ug0vMp^4Wd4$Qka$FI(`a*vKMu$~I{x+-;yUjczRnC$3SQ^@0w z_hbT<*nj1v`oK#rFPpAzOT*1V#JL4Um!`-1ZI|kl1nB@V&6q$?#5#qF!ys)Rr%oF; zT&m~gWFH`NNwMP8jBwz}YHPuxG{z3JI?n^)rK z>Ls`Kcv7!(;RkNZ$NvJH{3J^M`B0`~p^S4@+yNy0W#Txkp3*c(e#{uI%>u;*i;8qh zs04k{s3d*0;zClX&R|kd@F~%~$_ojOxnRS(Seg}*4HNrZLpgC!u*+|;SXGCbh8W;- zWW;qq9kMIMzJi1j6MqTGH{rYa_C2VbwQZNO?{oPV3Ld>_WB%;rs|VH|v%5m(U;MV_ zXxPIzFsa+6jqL~gI;!>cf<=~Ps(f%`{EM}#qyHIHcV)q?SuzZBim9z{^?lnzs>Me}vr_A^qa{{~CcoX3g9<2Sg| z`r0nm#Ip4Ry2fRbjQ0o&&4SWPz@}Y1WHL{Nq~o!Xdfz0-CT!OdQE!dJ#Mx$7BhW=) z(F)-*HtYrpNF0WrprBK$x7E-CrZ)KKqfNB20{9vyh3?1&zMaYl)HfVkgJ(JLJkx0f zvPO+70g+U%jz~~RZfi_X+t^8{qWqy$yWg~M&Fe?ps8L(mvXuuMxec}(o*USKT~Ib* zaZ~};5*w2&Cu*8`nxn{^wi&kI)5yFH47VtW%hm3c2Mxz(ANC|1N(U^;!)Q!^-Cp*5 z-mu|)mg1K8XA{3xfp*Oj-C_;HC$(u_?B;IcmbaKlTJFfQ@a*Hw!>vOMQ5d0M!8Obk z*>gpX^W`f89_v1&?92C{-FtYC5=nF0&bB(Nq@xO-cXH4)bd%p}H<`ni=%F0<{otQHu*kiG zR;g7gU105e2DSf$%LWgOcE+N{Tqw@b>YeqXvSWirFv}lZeF%26mbF~MX3fDt@$8Bu zpGK|zzqcE+;S_NGZaI9G8=`=tak6w@h?=RwE2^6dbYJmasA?M)d%3eFQ<|5DJsT5b zO$eryXotZ?;%T>bC1$L8>(LlB8^vy*#PR=_uWpyW$c;YBH|=>*&|NLx)A@!)N5vcU z7Vpc~vg#L&f@@!0m9?mt6l)jKYlNW=vvi&7nE$|rS*WmIXO`yzSHizPS8vEzcbjRkV2Le8XOXnt(i&zxg&!V1eDfG=w zWq8LC=bY^uyKIcz=dpRZefb15`4AS>+lVa~=l_hEcowHI1q%904Jty&Ks%|9vp`WY zSu+>z^0=y*=W+oxcN2+ z#5bI+#B*3+>&zRsxN8|m6(C1c=M)ltNwB;K0N1OqhWt_e|@Xw z)bHP9E>QGE>z9TvwqI>4QuOu ztXQtgx5F}@%(bJK_S$zfAME+%#@lwwLZ4M#Gi|!j`Ng?NZI?m$P2VSuS=z&`d5OoZ zXO7);sPxn8rg6qUhy8jWdUM%RL-UsH^y8<+eacUnI<*u`=_Qz7Cs4JW8e&lph87%( z-;V1DSIQzEQ48hKp$H06*d?R*}WI2&?GAovq?+$O-~ftR3lGp&w=mnL3U{;c6SPD*2ZwEM5D2<3~3j zB{H>anQ+DgWEl8}OwdwUB$tNSP0H{zRPR#w&s;2b9UIp;A|?3*CIp zro5dN3zx4Pt61imf;!q*5^18e*52pqz!+r3!A04NK5extW0Tym>rTp|+lr4*5*VdG zj^tQb2vyI-Vlxzw$WcZf8YhQ{%9il=v~~&EG9(`$E-mO0+DQB5m?JDdy#jR!EQW`} zk(W`z%u}xd5}`pI?Umd%NK8(rslSJ-&i2O;%UWbeY9A2=NzGs{tOYYWwZ^hjYnvl; z`nPt&7S`_6JC|>x(!Xb^0RP5|zO{v+`N$FbN)g@8$qi{0GTcD;_UNju5h z+{!D^LuWrIpei|gEBO9IP8MMPC%);x0?%QOWRe?~f|7P zJxy>yY-pm1_Gt6}9=784o?jzM)y&ZG5UTmD2feBPN7g|%>zChJLcczpcl_?m&s(%y zwB(fA;aLCjwJx_QTRqq*;=B64pNWm{zyEY(;zdm>uV%kTOv(T1;m_U9PMvxXXyRM@>G+qOIJvro?(X^eDARKhT{18xw`5gyssAGgz$h zL4ouYcC(%BVk8uBVwEQfpRih;Mf3`JD>Ag|-X*x|!Q24@#*}NeW$vf-ZFm3OYhl8$ zfNOCcbKkc-zXy7D6S|2(#+rYy$eEdi8PO_0hYA4TXNJ%N?$p}j0qg2WyZTBO4UW1j#kBMt`W<686`mQr4vrcfi| zW|Xgr5M!dk;tc5#pDf2UrdpihcB1lEK}nNW0!@*GzcEb@4(vO)z@a;z6}F!?I?|=~}(B^iP zaEjJe^}gOdaWNrL7GZ8!Jv_5o2U@BWV>HVdY^*^xR!j=wxmNmP3&h%2UEN;NlvF} zkQtUMfG>;x3+bQ*2CaqFqMc?{gAv#rkHB@n`b{TSUbu|sep$P0K>E5(ufARSnq5{H zea{}lGqr-3=T67^d853tRNP)^-7|$iwV1Pea>JFyP$Xbnp3?>> zE3n9oP7Apv5vjtKuqK0gJdyeg1tx}?U48NyQWD7iagd`YS*`#IGcM61<(*Kf5(T?= z2zWnishy6g8FFl;j|;Ixz_K&g?ai{+PwcS!!D5cN?jrw~FxJAE^yZK{oF-G{hi#dvjq7hVH@J=)& z>8&A<0z^VYt%kT*qbVfTgkQwx0}Ox`wnDUBvB*__i}fSr%oKlwH8|PHFl})_s4AUp ziw8G~Y;yy)m1ToP$*WOjKJxxq42tLxaFnTNyCd!W3S|ryhlM)4h^vGW?qy7nflGabN8;Z750>V``S)uz6t1%2g^=l$vqy zuEyDMhGff6;_HoDCE=+pJ36o`X=R8pwvwA?V6#e00_(!z5FT!|n72*oFqSqwG!oM) zev&IB7HdSpIB)@D-|$gL6=d-mEiFX1TX(U|KK^4naoQ}nn)^Ya;~&a0&t$-eSdFuS zgn|Qlh7?P@?ALm zy4Tendxuq@_2%@ifBs-PxEi{G2?(6ZK`DX7L7M{yBa>XprCwr8Sjxv+$)vzBVfdb5 zkaWOkL&Scb)n?yvChb^4C`t`aA7=&^bsMHP%n@mA*l1&Y6H8?~_Fy&5_kQMQx zi^|NyloEsF;VRdlBlVI@jZE2A-f%z_+>&QmYTI%FZFY&u7#1B}%Mf$J zO;^`1W-L3dt~jhKYYW1ZI>E-c(^f2>bJzz5DYIN37A9Ed+ry-fH3FX?Lrz`%s#hT- zOD{=REeim-UNAfg;quWqK`8xT}Uq2toMTzOOYkV#*l+$!>UP}D<^_JDp5B7btsZ9)9WycdCWIG~~1 z=eDq9fatc+aCO3#koWag+Qq|0;*$ogB5nE$9e3#nUu=a%K7BS+No=e6k{&@5CYegI z1`%K{0wP+0e~WXxa)z0imqW9F~kpO~Zsf*e6k6 zVz&=N0T!&;L-vA1#H3a*6};*2B0cQDu;gt~KoO^KT%M$jVvb{{xR*&`@W7)0DYUTF zuFAg}9Zvb9cIrpD{uD}J^I1VaEagvc=tCkF`%JxNiP02LLt8y!?kTN2CPryhN#4fM zgJ%E^;|?gWg{j#f7jp`p35;_#i%@un9%uQo7Pzufl(bz6n4EPhw1r=Ovj_Vz5K2!h z+ikgq!riM@tyI&7e~5((Nmhh;Jz0NoD7GaWij@>djDi5?Gh@j#m?A?98Beru&Qj~P z#lDWK2?l4Y`#q#mNQOgT5Qd1b8Wk(MyZN$lm2cxPOCZiI&}7hu(4LU9SBanc7IZ>dN(nFFK9iDk`bBmoH_D<`YZMR>yxW8xo z-oHTds;-B%(Z9W^Qg8V1A{CMjHJRj7tM`tGrWa-|K0f+Xz3joIG*KBg)Lf$fXW+p# zhcf(BrDw~!(}(rjIih8|8l&be+jsJSN68BttH(9XoN%(;j@WwXu6xFRSF1y**PE|* zTiz-%B+JmIB?hK!e==izlXh+k`+s`&!>QcmhM)DS5P7fK$TDpg8;j>{d3Wuw4;5i- zN+J{Gx~`HKj*E{p(Uy&3zGq-7?uyAd@CQktzo@`{wmL?-?onv?J}hZxZSb~@y?1+9 ztPl;EW=5$+MhQ)!WZ+}rA9!SSxbj@Yu(?p%0E$pnnLm5Pf5r7w0}9ei#k8V!>`3*ajbzD`l!2j%0*fak9V{H}$dKFlKdeoq@NPGJgIfmmdlYDUIf?U0NTu z2_Eux_J@C z^{@b_$3D|<0yYfOg~Guu%_{lCsSAF<*Ep+d5=`F6sYnnr5)T#~Es{th{#^k-fH`y^ z&oq7*9xY~~fxqcm)@ASy2zJ%XlS^g`(hCep(&NEIxE%#>=~24aP4pjw+XSQQY%DD+ zvJ{WGkagjFVX*PkWv*~5mYDJm=~9wPgwNp>Zg1ghwFg2fdrId3CsmI{?I z51_&iK2VS1Rf9sBO#9>mWgA=zJwYXUsZEbabVEpC5N$(hLCv3j;^phDeO$7 zdcpjKmDpxD1)y1gMS)C3>4f4e9OW#J7jw2DspJdTVwnV(YnJYm*dyGq>1(mw1#_Hf|*p3i+}bamcAyMo}6khiNg*JQ$iwAzwtjQ{g{T z6*k!{r~yJ@;LbCA%Yp49yKdjHK~?xkcoyOy+tP8P-4XTwKr+X{XHj*Gba(=>!T4z9 zo=Ys z0rRWP3dI$R!p^V-Ehfi?bumB|p%jO&gAxK46gZ!maY}+TtO|aCqnS-jg(fRi8Pw4M z8&jJLM#XtQ6xjZ7-eI2$HbC}Dg-$JoAr;w1> z$c=0ZWQ+LAbaKtt0+IQE$X8@TKKw^q@N)hjYa0kehhsyX52F-Y2L)XU%WUq1nKe&C zR1&CRp!dpzfW|2;>PA|H)MjkGEs>KzekL`MqvqCDkYE25k)z?(hfPnoc{1dl2N)E3 z{;P9=)`#|6D7mmW!V8)RDK8p@#D+(kMQEBTFz3vG&O2{HuZ_fVQCj{?G_lvrU$<}h z%DIchdW=^}0|KM+J(BA+DCe+PwNBay8M*NCD|E^=$D8)xHH|_V5DTk@zXzDk@~&85 zn(GbfC}*Z}EIDhG;{bjIfou|<$@C8*t&3YKok>=E`r7>g0-i zHLCLqv$IcKJ(a8JN|mvQ0y!s9!WHxs(JSaAU)>fgh}0F_m6um=5kh*_Gf{BDtM^GcX($4;^ItJTtUn{v4?Tm&=uuWCk~g6w?-lZ6vjvFfaoK$iWXpg zLy`HL4JjSZXCfydVMdhV)Z{y_7G1&(BH>;(b7m{6)WwCA)v1QH49EVOO3&rR85D*< z=o^w!Kw@kx-VY}ahOua{JV(ERS#2@?7M=h(6R@ZkCkhz5;G|bDhs8>TT&3zpD!bZV zfwYDG!Z=!{IwpNv!Xho2Chu}kNAl{ay`ZwvY`mp1X+a&WHjb|ei$k9FDkoMa+T00? zYOT&mfO&eXE?@yk>SCT_g+&tE4(e!i4GFbcgp?|*P?3E2kO>42tW&#o$B{0;+euMd z4FEh~w3ysEO8P}SyQ)plNR$mf$Mu=d@)d8eN5?cUcca}NcpsP>gL>$>f>DSEwZD|R zQ4HO3d@N!9=y4)7%8p4C1+S=JI_mPp&@Cs}1#yC15T}t}!uy4N$dD#Y&}_c3^!XB2 zrKC?W!!I#5s)t)E_yd@ckZ>{0hGW{lY;HPjH`>|q*r+(TVLT!P^4gi-CU=1&Z^s$U zZ>DLu&8D^^?_!(%5#dw4Rwr+QWiX6F0 z0S6w2o?`nR=vEz zM^Af~kP$&zGgMCcBF6pA#iF2-fpHkaLb_BA&%jXIZD}$E@3Tjg4$oYJ2Gf?(=UEU? z3qAkFy)zAZDx4sm&1ohUxl&}|z={nsP&S7U3}3*#GxBJ$-7{xvr^f`(ijn!#tV(I_ zRZ;gcruJ87wkpug7d|2U+z(1#_O&|k`PidgNA z`Qr)Pfl`KKH>-2h zXEWX&!^wfT#V@V3^n>B*fn@{wNv((n7_v5yELSBOksk_hc;w;RKj9c%f^rH=+C3}q zHa-7Jj(QzBDc)mh%@8oJ1AQdF4UE#9DyFuM7}pL&BHLd=Y_ z+w zeV`;^v1MoJ0-INYYzUQQDj&RTdnsGd>IPyn_-KEoyAm7ouM91sE4IXLD$O1!uPhQS zo!vSrD!lGW_d%1;`)!E{zz^!)VSEGP|A0MBft$~qzF|v`!6n&>xP_}Vg3;#1#Gl3U&#hN!iVk# zfZTNytGLz?2PbW~Kt7X1V2f~)2P@M$Vzfv$Y#Ky|L>jRM`5;>iMZ9t_o@SSXF{rH= z^4_SiVRuK(J*BVwH&zTk6t;)rbF3&;uw;DVz{95ZkBZmB1+97=tR9LSPosL8mL)`o z!nm8@v*|;lP5aiI7*UF}iVwO8Tt+~F#7Qm#9WW>H)k~k)~#uj z(Fj-RvPdVRaDSV8QSgN=zR#`L>8k3Q4$h$4$&w_BkwiTV*M}xX!iFXM**qTe*79a5 z1W=guL`z*tM@p1ALQKIl<2+Rin!*q+g%A!w2^G~j1s}N?$($R;&L&be(l9->bd&0E zN_r*NE#)urS+ji8Uu?cvDOQNQ<8O-dE$H5@0-6ZY2L?43d?YX@}UU&D>}9yv4Jey5~RjW5q{Hb2old`{;q&v6FmUN6i>}{D+ZMdi>?8-4?&|`RK8_ zcT48wjq129_^+Q_ik5qtUvFHgzu_}^Wr0Y~>jQRvxSmbhJ0h$Cu%Vw(mZ3^yZ8Ow? z2;VPl)8lc@aae4b0U&-F==I^DAz|JAi}GeB44<|Hl!92Sab63(LLq`gjBEHZBIn=e zHqicvv<40?%{466+y;DUHI75G(UJWWmRD1e6_}Z_6-FsCE1lV=XW0@3=^?OtxnmET z{n)O>g-EK~d@0H%mztdfHQ9GY6%#p;eH{yb$EvDYW*_4hx2=1^=bf@aNrxrv>&8OK z%J}aI;{Oc0Mjrah1)c>5VN&n&)LScBp2e30rSiXWdcY|+QYCk}DA_#VS74EuYL=DZ zf5pLt@ug8%Xv(b_Ru+dP0iPZr)r+Gp{3IOUr%>)?D5gcH?SQ7ShOQ=Qu)L zu!R{9{T;FXhGCS6Uo_g_1)x&d0gm-@D~i99>Khhu`*M;JmxE{?%54%s-Ir|J z$~T%hCl_mF%@>*whdv{vL?gWIV6D);v?F6{W#z&&k;lYVn26QjRL5f%6czwFj1!_i zTdlz`5v?bbnpkXkd7HLqZH`NonhZ7rQsuX+%Hzj?bN(-1C*A-@G8dFgSd?ZgJ~WJ7 zla^lT*XR&as8RWcuvmA6iS{uV!|ac8hQkw(L;hD>=COKHbX2Gt<)_nyLt3pK3bhN# zyj+Hblan&2qa_mM%Vs~c84SxbsN)2Sn(0@7wn6>~qmdtl32rpUW0~GHBq^kaTS#nd z9QdWdXW>S!wFYqpOoIU!^f)b*p~ZkJ#I0p=yk5xDVrUi>)-4w9Vwx<&Z3eCuv9{jO z0H?xG@?nwhOo{v@26AhGgU^lls}b^a1(;b$Q}zS4&8{6$1&M67eZ;gWX=aS__6p5x zX@Jvi|Bt=rfRCzZ{w@i<7m?mUY9OI^(ntaXLK1qtB$oo0yKr}b1dvb^DbjmF6ObYx zAktAlL=jL#1Qn!85d}pBL{#|C%--$0%iH(vE(E{t`~Q5u-$x4Un5+Ro0-nk_mU zN5P%0(u;P%IB@W8713`W4q5dB2g}8^RC&(VY=bv&uzY{tjf?I z(X}@T!Q~!K4_#aw-Z38yHkDC5H2_!+$Y>&hQh#waPFfT|SA^BFxu8jl(p%HaMu;j- zqp%SusnKT3ijoBFo1{l;7oWaRwYCmG6$Fv;NsTopSg@$zo?%O@=*n=PZ8YFBH?iSUXP)XqmtvL%Tmc| z^=J{8OA#&5FI;AZ+eNziDPX&3b@~vb2N(*vclTBJ3-h_YOrl*x-8Pq4PF8W2np7bz zLR6|yyfFjco{nttCctt8F@;#H3Gk!F$I)1^rRmLZ+F*8-yH|9=8@_fhg=4pPAzyk zwfT<1FG+h{ z&fa&a5U#vo7U0p6r;i602{i9;KsGo_A^ANz5uL!W7zYkH~4MjA}du zK~eqL1cW3IFxE6Y7~Y}B?qKoMbvFhHX+6M71o2l|M&YtVQ&jY;K^K>rA^L%IqUeXb z)J>xL$tn{6;L+?FbR#XXqIwKEqxc8=(lwu(t3gNlq}3naFWOFBnapz2*SU7Nn96B7p#b+@3;=QG-m~Q~ z@A7qxOobL;V&94R1uieUlyiFDmeEBZ&t$7i<=u9cTSs6e*y?cMo|Au~UHtJ?Xf9T5 zg3|_EAUX{N>pe_;5rGV~eSvKUGne*L9*cVU_LF=Bl`KZljZf0sTmj~CSuWUGwhf>? zilt{Pp6+=Tn>Y7Mf59}^r&qp>tlc;C9wgZGrn^XUt9$yOM8W4-bdM`z)SBRrP5ieQ zqpP7W819?p$_ebOr=uW|qzU!A%KA3QoRMlZ*`lW`wrg;8W_-s}rA`M;m%y8l%T6=L zl^BOIaLa;BF*wV52TkI&R#sN7L>9}+z!!y(9RbZPM=kaWz&HfYg_%aHEU(!edQh)Q z87>u}m}VN9Kzzk2()eT-V$p&Mza}`X&DpvLY{L}!iW=@^PZ3sP0!o(`w|H_-ZQgA6 zu@x&{+qiPnITLzxpvgYRxfTn!w$Xq&N|!hJE>(7sXi*ts@t)*{{f z4e$U#5N#r<9=l48(x;eY-g2Ao7W?nPp0}IXA5=FVZQFji_HO6R+D%}daa#sV6S`JG zV17wu>;~1dc+NdipI*}zA2X~vlZ6{4UP!GdXQv_vSsQ(B@T11tk-w#-r6blRI$)9N zxH!n+ymfC~Nf+VdmW_1=Itzil&aHMQHeLi3%tBD*HEc%fE~C4peq3{JHq4ths2^|m zP;aX|wo1gj7E_uzPS5-&e3gWqFYb02y*swP(;7y29fHlWbL(mXWlibP%Esfx8=c8? zTDI8(8f@#0frCGl`>j-#c6K&b@?W_njpWM#_i{FT__NZa@kA1JV8n2H3)ox_e4~or2&+~0ZcB!0nGoO!vWA$NkLb{eJW0W zXDh6Cw+MKVp4>`r47wr%3_LfQ*>4DqFbExZHUmsWO1lbHz?G{Ph;A>~!}l_{BUSC< zBf=p@;n{sla(1;#xo7ta2_&e*cq|DoOin@fOgwoAu%zL*XT)|>PcA({?m9?R1+_i7 zu*dr5A99_*hS*ebztcXhzjzTBm}%jk6kq6B2pN44alyW0{>1?;ka@#5XRztkW`pg1~QZp`t?^uA~Dv*GUWe(XyYe6Te zM)nB!3E{pzYqH(~HEVY%Md;Z?kZJ(Z8#vHNM4b@ckx_9^2+TDnqu7klTa!%jmWVWq zHQYGLG(sPp2AzPnoSyDbpI1$QiU=f?oqZ16VwQZc%#FjhU$H)QBN{!lluOs;T3O}z zn`CbHwcn-XL9zxH@iuN9m1m~4ZByLMg^PP@5Fbxg7pmsJeU&EY9-m3RToL-lq+<4^ z1S1%)myq;+0=S8wz~g3$eJdd3Tfue?Zt^J9^k1@_qxlU#+Y=G1Y<)mQ!2h|CEbtzQ zSagz4K-endd`T2RCI{Qeguo2jodWO*Jzkq+@5%QbZSSZqOQ5!yI53+5)*>j(q8SfU zilfD>W(e1DBouYy!Jtb^OL=A?kNH)#LjYj+UEAlN3sD>$;SYKb?p96G851F899@$s z4K#k5x2p|4`KcswI5=qu`>CXmAaY5k8j|&9dA;^hU6RxF@sTF*Yr+ANSm_Pyja&oS z-wFw$S6pcyC?>cK)I&2^8;7)^zN>@wEDfL|2{3JrQo#``5ymsmKke##2kl-!AaAzQ zOgNvS$T9!_V+S$5M_O0+4yU^C4yOvuepsaZe>g0L0VQbe>($(!keCN7k0f7En)F8m zTni3+s_+^;TDP>Zt*{xnf}i`?CKJVyWI+*bTaP@G40pNAp>rQ$(5=o0G!Sb15Ea=n z)ND#im3j)VIXw~hjq?ETJEse^Lh66=*bVpjx!Mwl9-&WmNGe|24?j~&u{LTWuv?VoVl&EQvd5*;;r6ev62Vs@8m18xmkGXX}egSiH z9D%kR+^5Uh4k^^VJmv&iOgS}1%iM4{u#pJoLZLr)-+1oWh8@{HTPytI#8dg zR4ATD?#=no?->XyWwM>Z_nzB!pL)395*SZy9Kb*XcevQ5>_8^bp)&X+jg~yz&Vs|X zJB_LeisrcPBA@4y#+|O^P{eKt7`elZ2L*7EXG<-WySS^Kxz5pO64wLL3)u5{ zy3Xm)%t>hELj+fgrkK%s-3aug2SQ4{5u$YdF7q|pDb)&H#hCQf zDgspNT9|u#ayoH|OgBVlfPXYyC7J{K3(r>UazB7b1l4Ra?%mA|)i^zav4PJ4jv=U# znOClK?R4V9a|i+&=yMTeR?NqrT&z;>S~e z@ipwqZGfu?N@GlJvjXzLfH4-mVg&VSg<9>bdydEIy?5ndu)4U%{#wk`%2-3gaF@PlWBy# zGx^mS(qw>)9;)X%VA+LdCe@CB*;5WUWGrwgUF7?)Iiw`tLyR%&^&T&h+Te`w#1tZh zmTI+mrWJDYEJjw9=NN-(pDiwsqC_S@HMsgncXfwpzvj(bt84pQn+bGf6|(7j2;w2q zk0d{|@OtW0E36Aduf@h&Jh;{nGP+sx&mLQG94DN+UgbNBG0!#I2PJ9f0esp8!86*1 ze$!Jxz%%yXe0C7zKf}sy`9B1GcQzJ0;$Ur+J3sykBN>e%kQ-KeTq#fB6-5IVE#_fh)%hN&}Xx4P=7T4v80Ns&QZ-+=T%{!%A})U@wA*L(v~;L823cN})4b z{7w$vw`4Vlij#LkS%$i2O?-r3asuE8LheWBzr~io!_=SSH(^quL)vLucut(hPcs^h5bPh=@`>_R!ZJV&x)k zO8LkF-EK;;3D`$9nQQ+Rr)#r(1aH{Ht?1rVx1^w(F;Qx^95;J%3_MKQ`$#$S0cZn2 zV5$eFTG^(Bw}>MZ^)>$Bw5ug?HZnes+3VAX&l( zX(uC4c%X`<-Y+<;w=hV?C%4KW_v_BRuGA6vcm(1)_j1fDcPkkW9hcfUI46ApAf8y; zQ%p-X@3}BTuyTmGlF3LUC~n9jCpKvvQ9YOvN|?xfS=`7nub$pe)1+I?< zX$Rr>f=bguJhOH`&5oKVjse$$eM#q?8^P`BfU$i2mjI3$+r@yrqr!W$%lrxucRKad zVUvrg3+Yy5d#?qS;d8NSUFZ=(H=GUBTngo5DEPo7qwzECm(<6G zMdJ>!Pz^mE#mh~?-s5SE*AbK`3&&lfWK&t3k^)Jllb|w|{s-!Ej~4OXNKFJl2!fzK zu=lJMlsnF3&vs^T0}OxRsSdFmJW)`qwi`eYf*KhTg@*)*DO@!UI4I3LO0QNmQaHo` zJ1~xovRv{Fd_gV(qMsMj(1>cZkvLQB0Px>t>tyRSuwmlT%x1mO>KmG-Gso-W19=D@ zs{%qJ@m-#c#nG&=ohzk_60o$7Xh>Js18MGlI8_dR{EeB8> zLD_0H!>t2>I!kg~h|vm%k}{%c6=@IiVKI(gwDc0muvC1#Uz=ur(Rvs#JC}ii1@XlLTAB@zJ^j znM)%W>sbPT8?f};XMb4<0y6N*xor19ohn}BT76kCG+;6uqBv*C~V2?-dGo|6{!1gef5Bl>|90t~e$JV`!Jej3>WQHyhmkJc8i!TwK!r;#-+0AN>1(^#H( zmAvL~9M6zuflFa*FY$lc;@cL05eVvxqbAMawmemH!|7dH>*?5bO8{R4dCnGF&y#d; z99z)!cJMm+^I$Nwp`z)r#3owkB!+?lFfS13-L1@H_?M3eBV*^yEb3V z{t5wR3Y|%GD(=d5fvsnGAI&Bl2lvbn%8!r=#nEa`QuMTvVQZUKn>!84LnAiw^qd~j zkRI9q;ISb;clL;&oYT`0Yj_BNN3MTzoE6F5OeA|#c+(rvi)a$uw>Q;i2X2C}3IhyO zMJ9ZUTQjHm6F)x&pgV&4B7+XZ=2&FFThjbZi_Ne?Xq!E_P17IQ4Fh-3msDFgO0kK| zUK1MgYJ>ZH?6v1K7oG@vKb(=y0Id-`I7kk~ot_Y^C>#K;gwzChWS!XS$)PuT;C#Y? zLoI~(Y9}epCs`836n+)&Kjfi_p~@C={f(A{9BXmcV36oVUWt-vpv=)|Gr-V$LM?Q# zl-~lU>}?_wRF8f`eSBX?_+%O_vt#X2I5(6+x4nR>2y&C;D@}?ua5n9%$o+^=9ctkzUSYe_|FLH(p%&r(s;S8 zt36(0*_TBgD0PoliGQJpL*;Bl@aWbUc!3@-`8GWnk+@SO51@0tigYYC9}Iv?wDuxW zvFPKBM5|6)GDNE(*5njN+d3SDD}=;oAtXkd_>orCHkM7M?VxGxpqQwft7(<}a+C^6 zRjE@GEvlh0dfT?D&gZ!qN1Lu9zktJ`CeJ9(QyS7@NRYI_ph68$j2^B0P&uaGZCLLUCY@0ybQ_{lGAFU4I<6N>@ScEPv zk9bWvR}pe3@fx=FjLf!7Nu)s4&zZ@L$Yi+0KxrAgJI<8in`km68uY$kL7B{{W|L9x zaEr9XH%Mm;Pc*`P_kzn%*(_=_y|7X|mj3~Qh)68<#4A3cU%~1$`ip+B;IR=$R+7v- z6_qVfqGKUPyF`UTZQpbXDboM|N<$l;Ys%DFlKw%;gw~#sGF^B>pEGgd858L^CfkLF zdw}CcfHNOA`$t2Rrmqd*3#6M0aY5!3OQOYhWSY)E*NY=2LT|C?67>*)V4F;h*C!-e zJgBR;afHz{+K4xnJ6B0VAgf5~9`yunBe%kp>OCnr9CU(?V}`*Woe_4p!FBl6DjbJd zXIyN~rK)buDI6#_r6yXHHs=&v%)p{Tz2LD=S0n&bPo=|Hx@Vo^=A0K;bY5W5c_r>r zlD^~>Q?kOKF-?9&^$;Y!j7v4lKaVWSJ*uChy!oALnU+J_=DHraY|L-7Th%RI*$lZ5 zTDfqHt0`!AEM+7XAT_dR;S7$ZBf@q!*dD|U9AJg$BD}2?>u`L!A=AeKK;W5nz%frn znp~CznyglK%^Wt9kA~fqXtO0t>|!$KfqW)@a@AsZ3gicjOSVFjo(W%yU367@4EPZA z*6t>DaM;4eTT6j=>JC$oue6{PI!tkMNol7mK29X*(A0U(a#Yl;DK*9Fv;~sG{o#oV zj2xysh)&%F#&${d@zHvHJa>TEa*nAptnf_-HlZLoh$z!QM42XNmwQYHIz9%x06`{* z%hnlb-^rm$4MtRH*8spawKiKcjus#X^0yWj{i;X~xzM*(NYf^6Lt#r-b&4I0Yqlcw z&=LDw$(A;6VIn-C!VNfA`QW9$5%SLPv(tk&9hh(>Rv-m+vIPZsFR)A@FM-}e*~P90 zbk&MY81pv5jbYG|&K#FyGkvv%VKg)!0lbgE?ynKKdC2w=vQ}*;7UiR0Q`NcP)m#e( zX!`_yj^y5U&D_Bz4Efa=U@7PPkbAofkV+8*5kpy0Z9C9~B+HHAr=yw zIECsm=F6E2!4@_Vr<5;VzFV9J*<-ZjoroqEQ;b9H_3Xr!TT02XTSi2)6S}koL4mVu ztmd1bH>Rbq^<=c#Jg3b@QPZ?N z>Da2eVpiR=aI8l1x4;m1psv|rBQ({r5X4SVrG*8&LC-%VBG#j2<%u@L`?~`5;-l%L z4IyESW+Q@NT>$F^l|1P7DEBMNfT_^9r#$y0FJb6fIAj^21bx+lVlGM+hEnX~}Y!@3Xh7FvA6 z^k|9s{5M2jK|kQp>O5t?9;N^Tq_L(fs;my_zZ4h;p*z~%2qH;|>_^6^LLwH0O%dg& zV^xk7_aJXFw19gq!6J|_>WNtLAo4^Ti&HiQ0E3CgyTKR1;9<61c4fiI(!L?{6WFuQ zh6K@Bcvpq!;w-ERo*CGk{s6rYj%Zykv^~9&aR|2X6~HNk+`7p$-X01@vD#D$x05T8e^O0Fur6c>4mt0`Jk|$zs6_t$M*8h!^aEc)d@zbT|odnPOlZp)F&zNkn`t}Hqj_Co>Qt`y=7I~GDH0YA7 zH^hgqMV8#Mm&#F1wY#Ls6IT$C1|}!k@4`_VCK4+i3bb`9vP`-OP(G*jzN_3FXkRnQ z$I_7?oK`{Vep|9q9HsHV!7f5m)R${iA5o#>d1)`&&Ikc6=zy@z9VW7Xb1BZMj}J(t zJo}7=*nhjCbi!5F3kZANb^X#NMQngNnwS(n;c?TWmhzp+C^Iv z1=rUApCgE5DJ?GGN4GDEz@tr$ve(sC-(s8^$HS}P@wyaUx}(O(ee8zjB9Z|l@6k3u zQ1p1vHnA`aTI21Z0CZ$Bs?lR}90ofVwzgVqS8n)G+X`u;CjdH_L-)DnN4S_e6|zTJ zaN`EzRPC`x@V3)KXL-3@q(pPX(D?;~BqpyMd(pX6`10mtnFw8nSfgE};j4KP;qGiY zMVbs5Bz^3I#Zt}5UdKH$eBw9YRB|2> z&F45!D*zTD$d?FWi}Tp zv@1k30s)ipao8n=Fw{6v*qTyyEyc_k2Aw{>si=7+qK33=;)KVH+Lee}+=NG&g&+}; zS(s^Ac09!uyFzXj7*`LR{@P7Qy%7MoSPOAud(@G7A%067tAYnwHLn1SLl6xSd|D!@ zPcO$`iA!TmCWBsQ?Cbag5B{?1Q}8tpK2b9bDRK`0XbbH&MN7znH=bdF+UNjgMMM(< z8q=^8(n5a>dPOk1sy)vuo{3;_QRIyiy<=|(ZYVLvLuyNCFa*8xpqO^aJPCFo$J!BJ zkp(?0U{j8YI|cSe9U4;{;!c^#oRd5B!d!n44Em54y2t2|@K?t+Xl9u8qq)C?8Qp?L*Rle*J`JHC~cDX{- zQZkb;c&RgjC;SKH>B(W(;;~6Gw~DWY3&n z?8`Ki>Ydw0if&a0;nWS{;N#K^jwus!j1SpHyP<)t2rdqIZcJ_DdZH-N{mMEhT;#4R^g1g$WW3U}$$wz}-i^_O?|;af<45g@n?1(#65*rvcHsEY+0%T-o$f>U|NDJ5>>`fmx}tHB_Se`Dw$e;F>9 zAbgM6B{+V~%0>UIDY%>YBd^`W8+zIzm?;6 zw6Rt^F%u1OcwQUI@$Y(l)1ds}SVH&T+KA(KPETlA99`}36m0h=$G`WU5x&A_UvvEJF_AGd3cOADE?Z7<{GHKXT=EM;CxS+k{CduR)x<-Ug`SE)RU;V(fM^TxC_uY1u;~!N2ylB9bi-fOT zT5rcM)y^HMZyH&Z@LkUOaJ<*p>8FnbV3-}a0GpdQKHn&xg-1UdLinJw6D9nvhc9Wu z&JjMKPh*bHe{@dBr&qrxe8i|S9A7N6@vo+vl?Wec*~sxF&&4iWG@tb|vD7M#FFmwM z`Kh(aQF%+uUmRcdWxv9PD2#)EiwPQ(=J*OdzC1m@=Np6%c%ReB(#qQ`0}u7>PWa-1 zk9ql8(*`fRTn{ZnI1PA8`rcY!b=>%6!KH-nmi8MjU%TFdD~n4nB79Z9!yI3C_{6J4 zUS{(4g^zA>e7&{1Ljw<&qVl0N9&miajSV^l7C{3^qv`s|WC?$;%a*R~+7Q0a_46Fx zIP%Tx(nFa(YWH_Hj&CvWa+&BdN2$DDwQ?Naa?0j@pSP<;c&+J2j_>^4Q~k}7M+mPU zdzs?{w}ts!tJR0_K|478FAWa+W^}!|j1H@PA`2k(3k()Q~K zgdcMtoYxJR%RVpqKytp2`pPxJC&Pr|#+ z$&XG8;JZd3Wy1H0+s*Mq=FBf_D*Q6xqZ>(d z5?B7o)>5?@U1hBKiIrEyO9ExO`>$ZD*ffp>WMq?)r2{#h!T@G03+`QeWv54^hX9O3&F ziR0x{$~PGh;m_nu{y!x;F|Mf9dgP5!RNgP^9xtET|5&3oL)pA{J6nh2M;=+cH2vWt zDnFses~m6sqVbYR6WbAf=%^(eKQ>@U9m9xvgzr9C;?uD)-50MvfNlYerpwyGy!@*N z$NxGg)SK`rUsd7wIo7s+CIr4pcuOjmw@c^xx9=2cVDcn$yHwBIT~8Xf-!_rTk3IMz zuV>!*^1q&4iTkJ!G_1SL@e3|2sItB@>wiFvS{%Q~+$%GtU<)c=qUSA+U)(m|oxYcS z2%oQ_M7K)^ohm)FPZHt#-fzjvXH~!2Va@RigzwtBmxLd4Z@954`O-9F-fhV7%icZT zV$jPeRKEVEp&Y;B!1bNeqyHxSuxpz+ep}g>ZZGXOi149hx&B(Zt$P3OKTUg$@HJw% zJ+}0nn%Y;j*S;aVuDOQSv!nN!%+glIN8#hRJ+pMjoLQB=eYAnfx2pLjFaK^6pO$q; z*CBkuyXhRi`}XO`p(~jE)AJ0sPnPcSYqY9?e|aijtim;3es8&hUryPNn|B&blOx}7 z{Qk$2=8o;QiSXn87|!vBOApx5ZP-e}C-;}=`S5~`Z=dj4Mfd^3rFr=vJm2T54lp{I zSgtp(=fi3h!}rA&pz`te)=BsWFOFFGIs^{G)4Pu}J|CBSZ1xIiP57QiO7QZ>j6c0G zVcsW%A9K7m#~+`$y;R~dX4jR>l;qy&pmrB))htBiqocmy<-csZ>qyF>tAy{rO47gI zR9yI5;fBl(v6kt>%bzb&^rwc8XHxkn$xc{$estjA%))+zAKI9&N0wgsGymn=YuLJ@ za#u;8UR|)f;f0g4sQj>kb9nvNTer})So8tmlR_o^b>r>3Gp1fx#@hX~Ixl~7Z>K_m z=KO>ow^Y)n-~Tan=#ln^2tWDFy}bNS`xl<~YY+SX%WYlJ6``@b{(dVYRB~8_==V`L%QB$`mxEaA2`19 zh-;QF`?7IJI6jr*tN5({`$j`OwHx+m2*=kd)38}sPbOE5-!|ZQzv1WF4H(0=u)6>7 z3CB09v|ju8{&A|OPJgN0R^Rj{7Z37w1FmZiUN49-P_XrIwJ662K1@H7w1wH{;}XVjeAkYH zhV&`PO10e8RUm-5U5@Y9VA_`-?7c_$ zgx1SAe(;~aP20R^58+32=XOZeutoZN-Yb|r*1VV0uCByKvFR4ZcU|U8;q}B8Ju^OY zN)XjEGKG(0nCygoFaC$^7DnG1FCdV5pH(h>f-Dbi!D`MdIwCu^d7bh(ze6hV; zo@9+$o_76}OI-+GWQ(4c&nUdTP-1dN!q@Wilki{ms#fI?<5SJ48XQ0VKv>$mQuV34 zX^>gM-;FIhdj{k8mQQ}=_{>JTKCCcz9+mIbg3Fn#Nd*nYcIR#pK4Dd7UVhT2#)uVd z8WTPw`y9u=HuloDhRaNj>Dt%h`01~7DOls>Y$`wMP%_8QDEiJvUsPfC^UFG^o|%^i zb};{4lgc-=tmNfqWu7imYU32b$8MU-@pG#T9=Ny#(<5b#YdL=2{OoI9HBM6b(XUJM zxG4PO-H|nt39sKYh?mduOWJYc>05-4oVu>s>eP*3VRrcJ5N%?#@5n-t}Y-vnMl$R^#~HBYXC)T$$Pb zkyWK}*gblIB_io2)zhrxN?!hG!S!D)dC110#Y>Ah{*#33ADlnP=t{HUGRGh9`T3P= z-!cA*FMC_Uf1Pi8iK|TC1$sZ^_!B$d>o{TS7u0SapGzEn>f>G)ind_-)bAUKzs~$I zXm?ttHB`RL=)S!Cm*=X43~1ew@U=>DyEp6Xi@qNf`jyG^(1tJZ^5>>ZtPu6iQz{>E zLz4gBOz(5);|6%LL!;@pt3NM)ap{KBbu`5ZAOBY%$6tDB<)DPmXA<6&{{hF}s(hww zxEGtpAiYF~-?#q#{H4zyQ~9y!hk5zi;U7&4W+#O-_5CtA{$8zO7j~_mOXWik43O|6 zP8|PW%1FZd-t8mdm#t3x@cq+-4=XE;^Dpl;|NgfYI|!e0xjip`|L2~ug~ohH_=&Ac za{QAsV}C3=hUxt-iwbi5Q=cw_pH3}7h_FXZ@I<;+3XDF98QsZgaH$G>!H(YygI znfz=qFq`A+-6=G5x{ZD`-F9$%{Z9*LUf5KY+8x`P>x=A0m(~v}u&4szYYdRa$FEqs z`&GKJap<+_OJ0wERo|*>*ZoB0GY?&s@UKj}yRk+F;mv2)Ncayw+uk*n*@t89a5M2$CQu*jc7EA8|V*yTgOT-|t&=gx92Te#{O@?_ad% zgxQ2o=*ib>*`c3QslDmFUkTspE3PlH!=KJ*_Tsf9!lxaT#dT^@1!IXl|iW^aKn8C{t}R`T!atq+{?`n5(> zzMOG8$M^lvSgPIUM+vX}YAVO~>-&lB@iZghlUg3)_}IIxm)z>}1L4QaI>GS?qhI|n zsV<|RW-}u=KB;s0{V)0#qw2|>YTmm)B7AZu zu8*=uAFTcRp^-}nKWKxI*E44OqN3f$G5auj4YxnDCzm!qPP);9%6I!(;-e|iy$prC znEa2@W$}8ZhK?zEI+m?dS{dHq_!$K*#lQccE!8tJIZDC@4gDo?43qN(SH*Mu%-=W8 zKa+Hr$`^Q}ILFV@`u2bF%UHtuo1}JUt>|#^m_Hkb?)#qb@^iMGxYl6h2r6%=&h>uw zf*-z)n-x`_@V@I`q;UGz=jGPdqWTO-lo%BY|g{buZ^@-<3Ja&Ki;k)qSyYfgB} zb*>k(-<~+>>Sw3=5}%6j@*`#`=>K*@xrzzCNJVu7opGKI#X)-pSrK)!%P+3C0)Q9`f~m z_P)JUZ(SSpF_mxgiNx>k-`X;^*|>9rpP)_S^&jjI5`OsHmxM3h_$!V-e0utsUFX^Q zsMqgDIR1lB!?bZFQmA~`MoG>bd3345*mZ>oKl#E=UjC@2#pQZ4nSQU9xsT&dr23D# zK8nei&{e;1{OQsSYLuG6^k$o*+^)#}GW+!MX~miRDRHYlFMl?B^vOLRFnTT}>FeyX zhu+%~)1TST`cE~y{MRA%9_}b~h5A{&m^2RGTzT=E)BBhoCTdSHUj9n$CO=!^*?9K2 z7|QWiZ`OXLOGlwC>F z5q?N13&%fb`RA=gw}%qmXpH9gKdy}1S+y3kSA!N`Oz(*A1r`ou_ZA!}0BI)vbMYJ+se;SK$1$tmEmXhn9{Gq;^NI7|hFu zl$%+tZvJJ2PhBg~Ls-o_ZAbJdO8A)jyLkB?7uTFB*Wp4X`%J=z`>!W3{N#B&vA1*`qwDd8&ync9_j4kEs6FzBHQ3=1d zRj+2PyAs|np4*MfMlAiHNZ0q6{XgWP)UI*)z@0~*GW*=GVP{^CWoP9&trwQ1dNSwM z=6LIdx;1Ma-$nTNX43a&qz?blw>=ww?|0Af@|nl#=JPuCn3bQb<@gCh67ugn%KTB< ztBD*x>H4WfO^tV{y!k6`hb((F)T>h4eX9tc68twWKlRF?VHc}?M)-;|F-zQO(N%jPcW5I*n;lQWs)x&6OvQT4l7iLWw!*L1!Ee)~rs?e5Zx>Z!Mzue+Bm z@n7DeYU9y_FItM*&&!r<|NBzl2h45^Xg1N_Py4?bO)X~o(u@E8=id?dcLe?&fqzHf z-x2tC1pXa?e@Eco5%_lm{vCnmGXl+^THJ7Nhv1m=eYn3Vc6glA9ftvFR=D604n|t^ zk#Im#o1;fzP?r}hhP}X1>eW{9UQ>sYHtduiR#Q+hH?6%mJJARS{~V6zC?2E?65lhX zd{Z<#+X%Hw$0%JLgv7#Wv2f**W1d!v;*rZ#P|ScvjxHN^pC@F3VU6`;q8C zmg6}~I)Bs~l7l*)uX5*xJU^%f$F3afw~rql?Q%Su>E8Kv_byb#bGKgL z-t@YL;08;@^lt9gyoDqdi>c*_qik~?W|Ok#dkYD2%xR}6d~I?9Qt!zno#N;4mz-pa zYiZ?5;6g71QczLGDd+&T5v9y~@+5iA2jD}3f=wy9WTPaAb0hQB67~fc65$N3H7Ug+ z?~8o`RTB2uMYviMQcl1;mfUo@2?Um>mk80(;h1ErLEjZJTSKlq=iIvgQ05RiD9?NE zn2JK6ce%x}G@iGjU)-ffTC(ZF}|JZwNZ2;J* z(^eKqS<2>t%0l5bMv%dx*GP*v3QtGjEPesfiFhJa^Frs)31Ij(_hfT@7%Xo;0N5_^ zuJ7{DJaBzCZt1k-t%&z-iPrR301JX=a?Wm(J{@M`!$s$c+vly<@~%%VYh_AzxJ{zB~~(jfvoHa zt`!9|SH4aQ8utWr-pXFD2gpMhIDtVbzlxX`c8ULPap9s$5u)%`9u3h1I-P@BG8=r8ny z*M>FMD9GSx%XzD%Rj{&h64Zb!d{BKk!{5SNC48k8gJ6RQ9ETZD1wNSgPTLP462Vb& zIxaORs91cjJFYcci(!Y#l8p+jJi8e7Smy+j;8t3*$Uh5p4h)(nVtz0Z3ttE4LRRA} zX|%c55AZgwgS|Tgv_??8qD2zdJ)$HTT|!a3C+Z;&Eha#;_=W_L)thV%wd34%c>EL2 ztpBN{l%kU{SZCFB*BcY9Ng?TR`c(8LyL3Bw?qE|?O;So`1f$iLeXDg-1Ura+oH~mIJQh985y|j}F_HZkU`|ZK z+j;raLIaxIX$E`~pN-hr;{YEZ2!(D2r0|6wH9n$WJ-n&ak^%RADv45TgXgMsEabRH z;4(X<<`jNXFaWNH+B@D;FSMDhumPu!$17nBVA1AW6X6Yv(mfiAbkC(?ynl-per=dw ztPOhtFh7bHL z@*k+*Br8v;Zr_S9C&aaG+RWcKgz=eYtR=sETcO(8eA^tp-M$CD&y@~iT@vi7(Vl{u z_Ord|Nl1ctfJxxM#H@x{@@fUp1R+;T2TeYA*A5PfOA;{y2S3x2=ecT4cRx&FQS_Vz zu@@1V8!J8PUX_;f3g%7jxW>`IVf)1Y>mK*R$a?Ps;2Gpy&!{S(3VOWA(IJ!R@vvA=FqlUB zk|>W%Gwbt8f@_Z8XLJB)fv~}~1nHRuGA-xoClG5vXVyprx&370haAR8oHd;>kZl3v zdQ+VlK>R&u%>InW9^eio#J*~NpdQGE(T4C%aMo{3C)z9W_DHSvHjXfwMjKfbp53I8 zXH)n)e7g25z^4dG;)J}e!mBkD#fj&-R&liiKZsqmirSf0OQMhYX9W;nR(h(*MO}wc z@OWqMJkIVqfE5UPlol6?td-|$DUZ2SE)M?dms9dCyCuP3hUjLwZXitXgi{cCyWx^E zeUdKC;+tX`Zi3TI$tgO+P>V4c*SNmniAFf!)HNz3N{3d(@KC77$(Q+@gvUCV zDGlb>!gH2gav?m#cS1%Z0Tcv)TD2PSra&S^I2Tl+aHo?aY=MdlA+Ad=(43%8otVlE z!WZ==)nqj%2wL?h>{(k3#~EC5nnVOQygJRBw{}{IDQ+7}W+s0Hny^1sZ1;D7pAkgg zXURxZ3l#-3MqwtNQPc#}z>0eW4oZ~~_rM*e`3t{)H^5ee-0LcMn;y?xyw9)}wY7Hu z8EH1aYY1}DAv1zG5xBi&BRA&c@(5~`q>(42xLzg;g_XnC+Ba+V%HFVjqdfpS9y%jB z1G>kp7v)D-J!eLkiUl|?B>_;#DakOFv|H&{i}eYMOXVP0vZOzk-6VCqO8IM}p63V+!7Odg!+2Ixx3Y z5X9o!oM6Fs3dzYBZ+mu>?2h3fqPk=;Dz+0%8O}>(Rn@M1?W}4@i@fu>hz@Lk+^_)P zbp-cl!^sT($N52(xII=Cig&m7GbOmM8lDr2EJYUK0aT7;$z6;Y7BW)viD(n4$LX}4 zIu#PJ3F>jVJ7z}xhAQ&t*ROJZ2nCtH$Z4fFm`w9j#MdM&~BB)2jlC;$Z;&5Cn_}4ipQs*b0k(1$GzxptvWaxRC;$ngolZeo>bk zO4}>YVOS9hx}+{r1TR2MEK)QNf;hE$9O#Mwr4hse#3mYi6VsCQ;B=3(vVGJ5!)RTG zC0duj&-(g!>LmP!C6Cxys_=Qe!L9M2k;JpOS6E&tCQm-?^r%XyIK%Lp66mi z9{O)vp)rxiLsNITSdd8(=Z<_2Lu5aTt0)23NGSfy{A`NDDzzJEFvX2vAt7?_p8cbe zQZg3|*o+K6*;usnA zRzq^EFRMDP_gZX<~17L-x~QI9Zp zMY6@HGYV!Nj`hmt81$r|sN&YAY)d3OUYDXvS0NKmOzVgE^;Pwv(n`(cn$-m>?1A0HukZg>Hqpp&+RFto5i5RUnk4lDv zvQhfPWQ!Gic#6a)SkEffog10@JdF#WLA$9S=M@_xF!iGN^YdQGYHMG(_aP8PRkzs6 zLTn|s(_xV!Cw|P-Bfu(J@A9&V`V_UmMNdQ>vDF^vKCale$+t0Vvtif%kp?(f49lYs zBSeY2!GMGP7GJw+(Z`1nMv-p>T4IIl z185|JL!x@584U7W82Z%;_gYxZkb2rT2L6hHzhYz~o*Rv^PTZOF7ERmuG6D%VCYa>o zL7g&!iuCOf9xd;R!V6SwKd4*QcezW5TA&yB!D)%QfL!xNfyr0O)NVj@55Js!^w1CM zJqx86`tNYZp`u6}S!0#s5v;M!9!JS->F70bbaIMXkVPrDA-^2O9cvYYrlPu&m-gJY z)V_o|1l&xT;Rw0&9@}za$aGJRy;{Dt3oYR@8k=4XkcFUVQgXSeGsc@zoc)vVBAkww zF;Y%vDU`CSSvj@mQ1kKz;O+I;)j0rD5k%8%jfHJD_)+8SI4#ngJ7Qf=E!5+l2V)_2 zEO#bA?{M+L08Id&XaG1KF|Y;!IR4EIMJ)k*IKmlELV|5Lwx_JxNU5TjfF|_+V-2I^CAL zcHm%H9mz&(UmP76KD<;-3wuvmaMx?Q2&hg;#!Ty~%M-c!L`)(2uuOlSkaqs6^9 z4X8fHlc7oaxDk*=A4SM$lX--FV?Jl3O7HMUUEBy=qRdeoiBkoa(`$c65D}g=QJ+p5 zq@_i_64?vMQg{|D5prP(=@O2REB@dwOz;B4A^ri}J0pc{z&5_p^b&Wo#U#2?j#m-EAWxGj^HTcNiTWhX1QokQPwcLf zFeu&`fwm%Li!cQTVDE5|`!51Nin~M=13j$VR?Jx62(+6ZzGTmt~eseeyxox#E`N@CXYc~0O1O(<1h#B zp=xyFbz79Qb1g)nvX>%+cIZs<+g;wn?TB4Apegc0K!vHBY4Y?GB}rp-xk2))iauMigq(9H zUv@c@LvL6_SQJ;UHflg`c91D0)r@I}O-A?WR#DU2Dh>$>a;pO&=~lfFo3>DKps*q~ zweKFeD=q?Z40fbmZ+69J(QFVr;vm(+J@lh(b;cyay1=Sh80VKL!p82ZUj{e1SWR&z z1KdS}gE!TZ1h;++9PDz;r~yTD(l&Pv1c59MG<^{T1eg!n&IqLKWeUrN@KsWl&Ur%e zi5mU*Wc%<;sS^LWsy#>Qj%P6$v}itQ(*aTuMA8iwDMpgG!aSQG zyp--_2E8s9XGU|1f>MVSm0VPc!=uTIp(H}Z-vD;4;|s172CmE$G=Th@(ANUQDQ(QM z4B_r+`j>G6-UZl{lCWB2W0ZC4Uv|(^RuD(YATVZl&i}BPcF+m`_fACXxm< zCOJiKfo|n@CFE?MU=y;gO54Pj>i9(K=&VTW7gJrP}sGLc3o$JpS&!+h<9$&*4( zX&+O@yo%yTPobz-kN2KjneF=c=PQh`Yw%FWDL)D?W-st#V9}yN<`A6t&v}5_wGAYf z4dBlabq2B;#R)|WY&D2~fIyFUrxUP}SHECsjXtm> zo@q&9}#kEPr$qM{BMbxN64q@u~Vtau~Rus5yz#0Tm@NEl@vXAD@DaE z3P(Z3$`BSojs}8jvk0b3+J$v(Ls0A#_m->DnZs%WeHKU;p1Bjf6!$Pt=%bloFj@5I z!Ip36I(v}p?L!yHTfPqdfTYEm6{113rrHip_=u)M6ep)_Rw&H{wC$EdPD4q1;kcFt zj%#VY`9z!`#Bqg?z%z)4gRj2}{U17{YUBUHlF9KxM)kZX=>AZu4LYO!*ptqX>)*Kx zLC!Zc;&CPK^#Cgo+;u(T2?|DAg`S)1QFUpF7qZ7w#FlErfa5+acrnvmIF)N!X+oD~y-wrwt!k(;Y7S*bAx+Ya+ zl7hF9$vu|}R&p<^&W}U?UAi%8r$e>NImD=|8rd+b&a^}SFts-X(5VhE3fi3eLcpS% zfnQz3hk_urKq2S&P`2I$`&B`&J+sKf_)sYi^k<$(sT?9R0^H~j+QNh=gwt7=r18!x z$(MKH{MjV=iDwuiXPIuleu?FQE(;R@DX6qXRoUHvz@^9!ts;j7Q6MJ|zyR{frz)V4 zeA%|6dr=rJ87w&wu7lmBh-UrM=E9FqYcGr)LI3Z{neM=b=Q4Pth+E)=@1@C5q* z=XD_@71u&mH|>LGqIZpV9t(y4K6wCC=BcfQ&O(p$P?a#5FFWfaLEc|4P;pcA@*1!IPdD69sp^wLW_{G{+>b$<8 zOR30WK~D{+lwWVhA#d??9a;ISwq$ z$mnkDxTuvvDb>%&%a7!ebc+VJlQGc(ZQ2j+xmu9sXcgYvjk8D4YY0JjC(!USGVi&&wwWKXl%= z9N(zo&f6bnUL$w=U8)!u-24s>n-6oeB7YfPd`)f@Mc#yULRle^zcF# z315GaR9-*si+oe-=O=vV?PmGtvgf5Z-X6CdW@|S$F&7GPMamDs;7kKQ_B9GTjV7kx&%FGh9Yr(mM=-w2Ebyj;Kd|P^)@>+-G@54RzvB20 z=4IarioZnoo_;Gi{v+SQ=bK)Dt3~1I`=~v~A3MEnP_N(FJdSuZTf*Oa+;n!;R4QNT zf|lctAD=j{@bHp^j~G3l<4^uJvh&UtIuU;KcUL+7GlSvgzVA^=!fBY)(HwtvTSDQl z>&zj1qshxS{+mt3>qP6?56XSC0ZWm-NfH>lst8*H2-54Yg> zd-by)PK@}4>Pdf9s{fZCcFa6<_%Px9@-N}#f4$S@aDy$3-eOk2&+!jqPF1L<`HRYT z?hr2FKRG^r!w@ECiq^c(@lV%Q8UE7HM^xTenahn{ns;wnhRq|i=EY6C-CjPAJGVR7 zybt}*zVI=7J-v#Dm%m&#vpV6+A3Q1H|9*XUqo~b?FyBfz3Ior?4pAImZ~Upz0UH>)Dy+ojsc^yqo}MlE{Pya+>|RutPPYkfog(!oWKY*Ovd%I+ zSmnSQyq>VnQ*QY$TSn#Ul!)Z`?v-v1>@W!zsBmM;{)ZAiVesBHKjH!ofud%G2s{V_4Juz3B?(cfA3f0ppQyS-(o5_if`eRZMji%(1 ze!P6&gT{<1TN%G}8s328V}CDF?$S2&MrkzhF@-rkzQ~T7^Jn%ae6Nz+KIs+Te0KYY zR|gP2?aMm6yybZ7*1t_IPxz7fHgdf6;nF*X=7R`drsX>vpLQ(bj}Bg22=Binl;hLK zm8%$XpfTZlzL3E28K+7Vy>g%_;fH2Rd@(WW*z^UjF@DV0e1w;u^7QoDl&(zfO&EHB z<7X7n7M@eUMD_IfRT`f;K7C5Pym>0&i#G1W%P*){?$sZgG$4GHb`sw$SzICIY<3yK z`({q(<(GW+;a?|KGd(^b;4#N%m2Gd@^wwS~@Bh+Jj$i&La%JWH=xESrCTB0@_!aLK zE;O|GNy1O~`~t_X-MP73hoVfc)n6m^XYGxH`A&tcr1Ikf{@~>|&dPZB)hIYk1dqAV zCmg?N*rDQIS4twhwplF4Z>{!Y=^mre<=tV%yc_*TmkCH%Xewrnz#wL9{y7dgKC(6f8{ zPR2kLSYF)Wc1u*Hik3FDl9}9lsbqd$zS8&!m5&WLLgkx%+K%I^d|o2`r5jrbU%mD{ zj<349;=PCE&Jn)QloXDy<=?XBZvzVuK6XQ6j(;iqPQwFVHza)0?!P7cwqduQoM(Kk zzj2x48#Y=s-V!m6%7=Z)?SZI<$IiF9xRb3HT2xHq<(n+tKYHQaja0tUP^tfZbKWoZ zc6t`!hpgx8yD0x2?{x2Yl+nYGgt@$)=64rNS-m^5jV**9y@$*B zs8*>l)%WNbolJ`7@+zuLjlVl++Ov80c@)6w=@7p2(ETBks2-m+V>rI!?zY_*r^qoEsq;N?SZ6#s4UFU+0^9(#r3L+@R=TsDsNGqNI=w^3mSx-EaW zF^=kQ{Zn0DKJsx^{j;w%B7B!ACXSERv>JIjg~`>f25H{=&HQClNIIjdiPcZ@^8NM= zo;&FHb*g9l>7E?lf83w*e<_|$_w)QJE$Dz zqo~2z$#;X=q)_>i#XjQo41K?fIeR;^TQcvr=J>duT5a5%xR1(5)%k$qlWGmLhQu)Y zq{gs6IX=1B`dVX(Gy7!1uiQR~N-b3V_TEdZpD!=;<>k%VN3Vn(EKK#6{g}(2DDxY~ zcYU(_ZNdizPn61^?DIm!Q8fu)u;mSow{{8*)87apynfACj?Y}V*qdZuY#3BCQv&xH30+{5uR-tTqsLPIw1 z0R^S+n)Ci!MNHjGQu+AI*JZg%ZB>c5aVFZ7#HU;gEASx((y@f7IJe>h-+c#l-s4vOllq?ZYECZRyJ7`S3cU$b|LMNg-)Z-=dh%6{=lCOOW_qn! zi@_ZKW9W~KTc*sXdQzTV$RxA zdbioRV2qXOG0c(l^54A^GT!Y~l<@71^LYJFYrk%e-cp9}lPp?0K3e<7xtCKPJSKdr z>zodwy^=oYcy2ng0}ZFRo{ILaTJq6HKZH6c_ zb9|`+E4Kc0;U3|eTt30^r3*z=>A8lDXBTT*2_N_2+3r`5Qu)X%&PUOucizeRZ8)RD zLHo+^@-Mu#+w_KR7?n>N&E<1+xk?#R$8=`=QlMHOFJEEgs0QD)olE8Gwq42b6+4d| zf1~+H!dvbhmhf}S4*RG@W5SQ<$o=QhRjwCnFg@Ly@FnMk^YYcMR$jjR9@AgZ%ekE& zU47*r_jWEVMdc$VbG;B<G^6aCVoc%K(%u?=X|7Wuec9o;m#|AX= zaeT{<+nnsBWBR37!|NR1%24XEzlPa?lO7b6@IRSrg?5Xgddgj@#PJ=oN0rsJWBu=( zv5Vt_Z&W_CB|o#@N;Tfc@jZ$)-a4`8yHrp2`R6%4rhjN^6W@x2Z(fVbz3ASN-})a8DU zXhV%{<5$0Uitr=)Me=$~MgDFZIE2mba8ommPqTLGQO3yhNa-VUIDTyUPcNsG=|uHR zm~orqGuzd#d2chbm#TfRiQ^|O4eHcm$zCcSyzmUiPi_*|boVdJUh;dql;dBW82?A? z1xEh~Dm!BE9^@HWZnf{H7;r`X=*& z=re0>_?C1Nvs-%n-Hw;f9=~*B)jM0Mo-z0DN%)_aec7$fO2S9RRp$7Wfvc-_o!E=; z<$Wdjud*f40_i;tZJ_c!d++Au z-`}3nF0)Yt;cItWBjJB2`%!du_W!Z>CIB{8@8kHrcV>(&%2LXfrR-yi5HV&3!`NoV zp15Z2+!^lNJ9F!1+nukCtg`fitLbE6%7C?EMxOY7-@@0%|i(jtrG zuN^PRpM#GT-!|)6s&|#imFViw&%F<3b<8LEv-5hg`oDZ4CT8o8IRrl1Ged$OJ^jjr zV^p3z^|>UUk6hZFQ)+Hkl0Tx$<1GKN@*}4_=s!x}6?}0Ld}{w~AHCa`z{gFWCc%F_ zz3|0vshuQawnVq5Ug}k$OZj0W{~e_yIs9#fMHP~qWeI$6>*cJTZ{L0MdY7Re5O~Sx zZyEgivU8F)Z=-bLjbZvy%EdAnZx5^S7s+3yvzz6=`1RxKoA#voZHaP?82s0It~y0# zk0SZKyFZfP?^VdC{x{W&Y-7qW_|;GPzgBp7JCeWF(^VM!M)`?<^lZGHz_V+v7U8M( zx$7F&nwdf1Mb|B3@Q4fNs?|G0>7-OQ#=ohNpLSjJ$~%ve{4M5IWBH@jWSv*<6hpZP0WF?e)b*?ld>eM|BetM{Y?|NcO=#vnb{y^F@EdQO?PUcMceG`F~j7($j z(kD`)7ha+KUUJA*1}`(9_qhl9H6Z!(>WpLXyO(v|d}Zt^0#E#`4TIk^<)_~tdx7F@ zh=a+i)N<#B9;#T6t{0CaGJP!d-dc5iLmJ*m>ggZD zgFkp*=I>i$cN4g0s8oN=)(3xFSB2`^Bd)#8^4I*VefK6+%8>k{3(aQmTBELiF*B2{ z3-{cS!r%=j?x@=TuZ<*s!}`q`yiwGKMN5ZJ{0wTr*0t1!jvku--7{1kM!r;ptDzWtvHH&G|j+b-IpMPsnHaz30E}Go<@lr2Z%Cj$rT+j~}bNb|%#iA4p{KKXv5( zsg>4uy-xB!JWHCdQTOy%GUmNL1m30((EZ}Q+h~uA7}9AzxzC^$>nI0 zf0XYR2A|}b+3mMA)Q%T@x|jsto%GDtS1*zL+0{-m_>`3KZ{Odn4T1M-wvNGHIG%fd zm&KH?6W2-n{=%=jE)_3LtF5zVO@WOyNAe@H|F`;&+>^`Z?0ZfB*Rp1OH**KMeebf&Vb@ z9|r!zz<(I{4+H;UAOr)A!65()GWH-Q4cCgWgNgF$)9{bfjxq`k9Q=B$IZoyV{aTJ4 za=4b;qrT&m=wc_up|cWD^huZmn;X&qOuFvyZS#Y!?s={}7fzzxRM0KVC^+I{A^3T4 z(m#U)CqVXn;khJIr=`%qywNw|{zT$u82KuNAJaEH=cYvOP{}#lnm5&E!}y?@o?w95 zaDoccxwU_V#1w!u1e31sG$W=&Z%$qiyy0BVY^=p@ngkVuMPg2ZIosYI6OU_&qZYQI z@$!4iUms;fUnFJ~&}0sPWujwZ*t#Sdl{=Tu~fO zgBW;SxdBGNGpqV>P#79LMF`a-J_CUrfZtXe1Rf0Gq5CN=)s67yX23^Vw0z|fV{7}> zQ3Uj&cJdm4H{LSb@@gd7l|#iAd6L=6ODwiaIONfghGKfn?ahk``h7!PF{!u=#rZrQ zc)<_C9K%=gix8CR1yar|c>B{C^!aI#MB!g=NEveczBE@l1fQWfAUGcVCsb%(bfWnJ z_;Va|!ww6Oy*8%sBp7emwMBlwrE^6%01$pzfh>sd**yJEskD;xTPuLIOnA_Uhfu%GecTv2r7>{fO|AT)7cYhCTHe!&Rp(Hlr z)I*nP=$pAUVy`AofvV!?@D!JsFt0u{VGhPj&!xe?h^&|MlF_G9&l~IY`XD4L{B4aH@y#S^tlyo7acI|?DV6BWbip$$u5_t25~t0`9@Eh|)R{0` zd;yGKgwd0PA0=Y!={U=HEe5aTB43)Z`KG`de=dNK{pliuU6#OZUvss#)hDcWr{NDHsZ+}$GFg%>JrVKk_m6i zLH_p)t0y^y+TS(IjTw`CUN=90%>1c|-|= z_)swj?XlCxuwv8FAiy#~HHszkeFR)cw7kM}tB8vfmxXphh-|ItcF2e*695jC{ZmgZ zZH6J;n89dPk-^NfF+qU914|UcQFn_B1Mp?cjHD+dJB-(ScVHSBmewh{qfI-cF=_gZ zc^R5vxHaZwql$33nXHUCX&;9cC4KBNlCT(R0XtRZ9yedA(EH*86<B^|<2FkB^BXp<^g4`?A{ zN~PV$BG860ny9FtNHwk;CxGF{ByU;}Mu-`fUAda5>5>qSq)iyp4-8X4zVT4WRFM_{ zkLC#oF(i_mG4|!Tt#DVc>!fOI?fXNiOQsOg9t~lRJk1}4V zkT!&#D2Y#>IYH!^U!W<03o~JUMI^|DhRp9E1xWxR-h3JC7R9c4%94u^W0`FrUa#B^kD&M zViy}~6+mV{&erBsklyC!CY0KYw*t^9O8(~iMdpPTGOvBHc8nLI5Hc}8a?&je`zMhcjRiBw3H^g6%(E9AyFf9V!7^Q@_HX;(k;b>80n&$&VJ?pG_Eeks+HfBr{$k!rGm^aTVc+Pz1NK@D* z%(s$2wB-nJg*B8T>LeAzEUhEvEJ+X?2%8~eD}XQzfu^F)u@) zfJiUqDS(uaP^?tvwY!R~nK2O|4$SGGI15lK%-nj@2&1zm_1_`|W9Ohf^Ef7>q2#4R zm0HXZ+%mc{re2a?oI>;Kjf6L2F@gOT#e{jCM4UtOGLN(&He}o_n0B^&7;A2%UZg3L zQ^2Y=HfSO)v1TQ1)RU{EJY&_1tT>c*l+|mq85t`unsN1na47$nXMZ{hh9KispaF4O zjj@k(Bk`t^dek_Ti$5|PoC;&Uq20%+170>S0dPLVu^2Z(F@+<7Myw*(f)K!7vFuyy zrX`^qceFer&%6|Yi51pOV|FE26HsByQ-toJFUtAXCVDdW;?yXM>5~m9g(Ej6WkQ{l zXp}09x((7LiI&5=J;6E$7kW}>OH-Te%!x@w`X#LZea%vQlX0E07<^*vt1O0?7uZ7k zPP*(1>jzW{y-+qq+o9j)DtbtIuGQD|DN{C3D zqo|K^g@6xbIjmFY;j2`O1%pD&gVa{Gf{hDYCc^_kJ2WD6 zP1$dXRiT)y##9AODyM|>k4?!diXI}OLOMt%LLzZxbrgLfa+P06V@z%-hd@e+Qzn~d zieDTW55b6Au|3(i3A#ubD90gFQbdhq!eG+yl(R`n3A3sEhLwrESAL^o25dr4WRydw zfRq6&E73vA2wjwojG{yM3KS>%LLX23ING64Z*5*lsOprngX%3Hm))*clQ~0Fp4{1{Dtg=6Z zScI8Skuz3^IlyU~L+7LTeO0Dkl!XP@Sxu zR1{0>L`~LlN~)CAU`WbIpqQoCIB#ugnc6v#6R`}r<8e;vL3#j_j<+v-mVS+(lmh~AI*MS@eRLhjBrVg~s6jWMC%<9i22HS% zLZ+}f2YpgP+$V_hO|0MV%nxWjg9{|&%nrnK!#`Z$S{dk-70gWRsp|3BQMaq|QM(Zn*1 z;X!Mits00xS)H9}nl3g1k~_Kb8J;O|IPOMzLYL;HnE1Y=9N&`msR>gwth zy&P>0)4o(mzF{tZTVI|xU2tl(=8j4`Z(9eQFAEe}78s&zJ((Jv8t+Q;5ue=vX6-Dq z2d9f)VsHUPQ47MEW!KCo$YYjKc0MJmk%&=o^<;TvW;118n18g4u&lBzyDTeoR8=Xz z10m~!L9LiqIeyvJT-H8moUI+K+C`GOC(8_-g~gX;dW)M0$Bp_H%f?4MW}|B)%gC>f zESd89_&CRG;`+#H7yF4{GI~snVVNae?T$Dyo~iJG0LYv z%!&2N>y#M)(3`@oA9OtL%ebUS++qt4Ff_0$LSZ%^w#Xk$STD6bMzS zQNZskAp#W-@blvE)m`ADmQ<-28o#rMC>6W#DV8>_%FIVCJR?DYoTCI|z`FU|jW+fH2ZZEC*o1jKmJf4lN#T+ zjZvDPNV@_bD~(7{i8#N?V(^KPl(HChQlNO5i7Z<@1*82}R!D23-;_ovf=1ou1RTpu zo1{6Yj@Bsa2Q_VyaUn@4`++rygH{d<>Jp`n(lSPoEsR=O4(k+pC_6)-9f3M|-5^~M z$|&u)h+m*RWh>Y?egcss8?J~4p=-*1Q>+Tblz1ndV0f49jRSZHhS<xQcPhdd8k4xiR~$ILdsB_C?}c}5eClvCSYIr4U33Q)E~I8kOIm8P-KU#^@{n zwJK+hv`M?E{6xru$~8V=i6d8{46(u*RDQ%Eu#d`mNsVkM)OuRB1)6@_LBf~v9_2*S zN(z8Uo&-j;n>c9b6jGhh83ROwruOWV99J6c5dE*cb)P>l8WXARS@;XaZX7L}8P%yF zEoZYuOh_leZ2I+=875_+8R__0JULnXMk&A}%_ByogPO%ybI-%*>=0hp4$scncXN=H zGAKQePDXMk@2kfN!KnEk0_jc;dQ&{kfS+H$8wk$8Qvk0k=*b!sLrz&TFse{5PJS9m zO%((SkLNh8k}2oZ0=@AE-TV(A!sLMlN#xEHjM1r)Jv~?JLj#QuX&!Y0fnm-ZIaG>o z2(uRPY?e3JufJ;40PQuNph^rHYyTW3HZl(q1lWqqUaWPxf+sry!R7(Eh%|>3QX;?Q z>a*MW?O5pCwCr_X!PGrc1QN4j!NMuZ zi^sfAcWd1%t84fAaStxcDEH2bWB<&Z*Y8l1itUGPzINhn_vv#P$5I-8cJb3$oujeJyXxSZ+6jjlLt1fwDH2MS*LC^d3M>b-+EOHep#;U z^zW|TGu2Vzp*pKRUh~wH8;9cxE^hz!j|+>&@9eyw(tX9pZ>oPK|IL$K-JNGQ-hX)3 z36^}K{rSgE+hST= zwJrNDcTR`oX|LUNtxB)ww*OSE>?;#S9(;OQ*)G>7)TwqnuGrb0)gw!|3P#=k)%X#$ zOQ$WL@^lUFilRd%#*|Ll^8Df-AFMK`M$XK!8|H7WyzKb1tsjqW*rxO&N4}l?ZkwL< z_7yMOC~H^qc^&sem0GoFz``fLTbt3p%le}4e3o@~Q^9Lxwp{yY|MZ8aR$n!AGxr@z>;#N2#|ET9zN&8#ZIC?7n`uE$8EKM$Wr_4Xqqn#0s5hq6ic?#YFKdv)Z{62bl@mGF`-cov1kImid)tNS>%I)%a3db&Z`g7OJtCeQt$pu?~`_7&;#_p)IxUj4Jk z+KZL{?DJC9Jm;{SyUy0x9((`BdqLn}C`#K?kVasVX$s0KfAE?7B3_qFiPEw~lo)Z< zS}5g^t$rj6Tl{1~P+Z}j3t7L(;k7DIBSS7{kV%jgxdF=~a{L@Fg?dJzB)FEid47zPI5Ic#GVlnXpUTZN>SAT~rH$LSM^6P>%vdF&g>*^++ zEC>r5n-|Q4KeEzDXj#>CmfTapS!iJW875+jkUA}c}bB8#9Pw>N-P6O;N81=&rsIA8W4 zxQdkC!5JXL7omQmK$bftC8;soGSa-JB;0;NsTk0GAR)z-mIr}}rOQYG=zgTGfWli< zK5x)9JSg13(%oP}?ha0GdLR>?bHK69(_)?YEVnCwuhziN-UJZ`H{|SgOgut#4;thr zgjksO71j>8p)1>&2@i1K=E*%&F0t7Xq_NV-$y^dp8dV2}YDq4w0>~R?M4G(>QZ-va zOhMd&l&j3*O(vW;G#@_D`ViIfDo2tx_-b2NRR zWt-&2`5(Z)$O}}{;4c#}@wmo4$dwCb7MOV6R~@wsibQD8tDFf58LO3G+bhWBOsHEY zjYzA+E!)Hq6S$1-WOhku85h5cE4ejVx57n;eLw~g>fPaQiJ0^)Uby6XgG$9H>YX#a z`wri6rEQ^)>YQ%l+Tj|QIQ9fo))T4f8%SSZ;!`I_16Dp9026NQIxxQ_T|T%O2LBdG zsv4y7n0Vyu9^}sm01k8(5cv{M)dBY)&SOW!kgCp$>k7YNc#2VjTjaHvSZ}lz78sQU z^J+~b33k8SDz!Rvn8`9L+bwYx&K}+`cfczQ4%nSI;&<4!v`AEZ<5QDT;>eBywD+Jd z&F863|H%|leDZ~CRqVRTvAQDYNl{&o8BllOYJbA;v`iGna$!@L&sdo1e%eP3sd-i)d0uHH5;%aiW%8@hLp zY1VY_KxzQo(b*R^Es5|h1X2{xQFr8sS0Ul+e^WVJmf{{17z*FGPv5{t;BYP0&*1Yo z)@53^v(3Q{GAV9BP1yWre#M+U_xBgVJ?Kw6^T% z_EBxlvb;7J6-dc)dtH9n%B|ZW**Yk!#k!+aE%YW=ZnDh{arl%O3vuF-T^{lX5>tVy zcZN0J>2{g-+YE07*DnRQbOzxmH^B)v*5mepH8L~XNO8IiI+kpvsK%me*6iXMCMYeb zS!qLDLH)fOaY9YO+X}j7aPCCuk{8fR!f@CZqV^Ub)?VFSLv}_0XpA*NvoJ(dnREvT z^@^%C$ory#U0An>4BfgUh&W00JH7CTr$2a0^nP74JT@l|MVC|K!7<$pj?%1enjXJF zP(sBj1>34QwN|%AN-N-6o1Wy%clq`6X1TM#joy<_WS3x#jk*S+-;6m%OQ(p`w4q=L z(T1XJv*FcSy&+FM6LMNplCsm<5G3gQ;l2JmAFO8fz*>yP)m|Tj+ z02MoQD~8yIP-gDdDGb;#U>m8nz6pbWI|m0ygGt67ufZ*T z^3Y{5HC3Zdt%kyen)e1R-US&Ja>vjD%ZYrLoh@%qVnj~Q=}k?}2i)^#Xr2Gas~7rb zm38gJB+(5pj7NPP$jt>kwT`Xk$*v$SlG$0p2`Ws9unG&a)dNZG7^F`zePER_+WLY) zAKc5NzX%dTM8#MNl1H^6D=jP7&S&w7^Kcoy0LO^8Q4H(|Jc8D-BPg?zQ!}m|LC6U` z2(cre4Sqi+4T|yy;G?aOntt3ao*i0wNr}=LoF{S)w%uCGk9^Z89EFNkY%Hua#{lDY zz_=YSZhy+OW<`d3^BYH91yiPznqSs*Rld&7;qClRH$M7Its)jxa~O4mMb%hett0z7 zrUD{TVHSwx>Ja=5tygL%NNnVzZR0{+p>r1Pc7C&?9Fn@2+wgh_{fP@_yVq){^3aQ*r-8pG)0dK|#Non5k zC@v&;06rd*l@${!u)cWNbr~J2Ty&y2^51mq7@RQL;Dph(#`Hx#RXjr|O@9B9!iOhp zWC-uUpYIuxiTa=hIGg^&&4Xbb9IJo{5wAEP5*por-A6Or0Zcrh2O^Q)#O7~cx%M0) zM)`UMrwJX$Sx#<{s^px7=Er!9^9v;6QzD9Jdb_GCO+8RAi%lOxBxD&h9&EIe@i-;)+ zDH>B43=wIWtt~LAEFJ>8WGu41Ea+9}CXi&1?*T1|5F`OWMH!@eTvgu0L?};X&JX}G zaJu3e9+R8r^u%=Wc||^la^&YQ&EKKXhOP0p(AX;MHand%KGIclOftsXr01S(^D;7A zeylk>zO`FbnV}_eIyDXcG655xQUARg_O`LmE4+6#oUHj~C<0@66Oj$2$j{DSF%+9u zESBx_=VWH3F@u*-!80LqY?-(n7MWa+2cbuH3+yZm0Oy$8H3m;eN6YZEr)X3Arf^ma zeM7qoI07yf;{^}%`yvy3z>IXaglE-`fMl}_&c-e{vXOvx(PSL@O1#o-`q*It{A=KR;Mr`5!bcO1fQ{{&ZdmIFEICc^^Q5 zcX~JpBy)IzCs8553((|A2f!LAOG?=_4pot$B%fCin3 z%S^%23-qsdU3rvA>Nc*dMcrB~#cDfK5-nAxEBy-$ZgO&^}YpA9d5fLypM@5uX?0TQ+Ef0}Z z>O?u>eF*wpL(|mDzSp144?*maSbWZGziLNEnlkb=?% z<;c&x(MTvLT&`Vrlj3hPj3DY=NQ*G(E@OCtsalx_-5sW=uLzz5mRC^S z${_}i+)==2|1B)I;qRr*n(qea9Bjw z)DZ|qQ$mEvjO({-4+VmHC8~KY zNc}PK7J5|k$o9M}@9Qno^Z1qDvMqj?3f=#kx*M1ey-ps&^_9AtJ~DI+MlEMKq{Wyl zYbxJg8Y|?T$fmhTMV@ZN;-{$qaIEtS1RdM9qX?S~=3^w>YRiYZ5y*m zNMkdXfb3r)iQ?3eYwp%K0w)}Q;tdd8l>nG9&f^QXoNz^+7PH|sciVH2#$d7}FD!2V z?E0cgu;@?1{-D^Lk15O>$$$=mMb+uE!pg8LFhtR=*oOS6JQWkk#)laf}ZJXr=YYjQ|*4(%X&xXf$=;qHF z3i|}u>q?Qhj7lZM@k-&yEpE-!n?51TNGNJHs>UgcMiM(H0IsTOL5&G98cS>-KO0`B z_mk~DLjg`BP(o>xU40;R$0T#XQCywGC!v^24P+%hyDW-2eWMAj+?W+UixQ`1u!#lhpa(8SCXj#Y zZsNgBHZ9ZHr~w)k8#Zpx#FRZwv&L*+IyT=nuC2$HHiY(EQxg_@8=H_~&`~jGd_oEY z>7$tqt4)r3$e>!<+xBst&Ga@%n;F@y;K?6(IK*Bxsk0wBve3&hLM&($He!Esq-^$ zXpEALH==ESW8x}#c&iIO+6v3JP4xDYX4G02tX{mz&{d5a($3?|^fyvB0HF&s;%%t& z2L0JQFA=((h5nn`!xaa7I9`S{36rMmLmrbNJvaCYBDN^^j_b7~mY;GS#NZwMJ`}T^jKX|fv$vzVIzD?Bc!nzk+gswXCku}fn>*Io!_-%ZJ~q^ zkCx3#C|)ceLDqyJ8+BZ5)dGxSgoHjPp8ZjPktm||tBeKO%g#-Da$8;HZiOvFu}UdC zzXhz6!ez=}d*R7#gt`BR9FR#&p}o+jy_V$wj>K+iD-9=O-gKuwy}jR;mlJ?u4)eUI zso_c6YA3|nY4MWsdS86dtk zgY|`IGrCr0OB#v|Z@Q5;_y)tDgLRE0(vq3rC3^>m@2Rj_IW*U3fvBnS!Av9pqw{~r zPc#rfw?)qj-I`^G+nY?~(l%gvJZebZf8k z8kf45wu+(7OKlC>>OHRnvo?^}YoSwVhA?E*-cEX$)}pb99Pe0cO*r!p-(ZAODf#U2 zBrvE70b*XUcC2`-;k7;Q~ zpFPJFNEb2bS_foOi`*UruD2D|wLXA7;r1JaGzFd{E#o_c%1NWW)IVfLGQyq8EL7Nn zSx9$t3KOGx*}j>jSO#KaT8xVi9P`pB}!{{XMt$R#~Jpuo__w_q3Ze{Pjj zV?x*AowsjP#`|Fi)i{vh&&n;>BRSHL%;0>=aShX2z3snjDJA{|GTDk$Sj6aB9jvNU zew#XF(X?2^`SWvvK6t;+l@kP;i{_q1*gC|g#PY7z7~BDtg^4FLaLphd z93^;PZ($gd;D~H)++lvR8U`r6-AYbKSXL@Pb>61nJGur(_;W+*F*Hjx;%(bt3Cl`r zh-5@nK-I{zyun`MiGi;lIM?9Mz8L4K5~RB^5xc9Y4Rjt}&V#q(h#}`6wNIHhpoR1i ztP1?A!={egsv(*nf|?y7sM+7tmD;dA!SvCnN{He@y1CvU+erkusQ?&{N&8%mFUqWI{@jqYta9v_JY?;U062>&e3FLJBp>YYzh`2+e?@hYo4&CxTFidf?aii zlsR`kX;tYQE`+jZwPYYZ$9)X$l?TrYdAap1gz7C0F0E>)?#4%+-EdvyANPc@t`bKf z=ANf%UO`c;@TJGuwwqcCAfxD;XHweUjBZNZ^U&LHJ*JxzI8X!m{YzGjk5D*_hJ@Ze zL(TK7-GUsk>qrS<6&Q!zFu25%>-nF%#FGHMZiPvApOz4Zz8-;8coYZnvY%ttcb%)w z@=gMO99u_}f6Roq&g>EN&lCIfzm z%Y!&_N`8p=&bxD9+SbA!RsVU-IjE!y@`Q;P)|xnul!>!Y^@S7>br|hP*W8+`H{`{6 z6th~S97|LQIDsFDVQm!j95fHi%MFPRkHY70>4sbuk&_4A#AEm`HB|dqEuMA*+7?%# z(AJ)?mjM`pg&jNwJ-2m&6o*N7dk98CAJ_n3E1c~_ZI%5ZN*CVse(_iLPU(K6+)DuM zhIMX+v<8#u?TI9qg?$B-Ccl4anI|u5tc4z6fQRLlsZJ-jv`F~O^o0^mk3*mXI!@TC z>Il|o0C77kwe}{Mcq9hYn?rz3y>RJ!@b zEac0O&Jez&k?H_F7C59WQu886b1-Sz#8DTQ4pf;L1hIl}@$Qu8^Y^ZlxT$<4d ztfhV=#_sUv#C@14crZKgl`BMV=jm669B;?w;x&kL~in$Um0On|F5Vs8OvSdgaMy52UvAOfR%x z+&w)`K3Dg{X^=A$Ib;tc9Tz=(U>D6Y8hSC`6v!{ccb4Jhg)V8>40*X_N-?_V87jr} zh3qh{ubURe+Ik5Q#?VJI7hcKrbsJn*w!wvE+cE=M2)euhkP=F@xKg9OQQncQS3Xp7 z^Fu90)otPbW`FhB&0qa+#nDpI|n(j`Wg(>(VslB~MYzDcY}+&1Cx ztOyT+5F2q~lj2S2svzyMV1aYB%W`?r;Sw9UZcHno|BZ^?^VN{Q8_g{d+5g<9w(q?; zf35C*6+U6S341k23@;e92lqFhqYZIG5}6&@q?2h`coTUZU%xuPS_ ztgk4-Emm(Mj=pLAF>-rNz!f=yNQOU?Y4Ac7Zwdf-5J|macku;Jx=9B`wj{F}XQ)UVg9#65L8ezl|Qscs9;7k>G-r@iI<7(@#Z;L$WDHPMW z@xc;b&O2Bse&fN1TP=iK0}(3*?nyjSzy_?!EtPwctYWNA*cpUABY$hOdh9O#EZPlj z?J`E6kvA|^!o>~j=J*FCf5I;XcUX#pI zkX|(ky;Wp8h_i&pgex)KVz#t7ZmTj4J;vXMID`d|W@6F}9LLzDvnvpAx?R<~IrG7b zGF^Id(4l+3MOj|sZcVJ;@5~QCZxj!zzX?4xqit)^V5E5>*VfBE; zP_%~OKP8Pig80AdsOKT2g@XqSlZchvUh^P~4S(m5+JMW`@mhxLo?Q8o zroY96+g3!Kvv9WX8xp!fKCxbFhQ$A+^S&yKqU%5vcQ! zoBbSdf7f{ZUB?hS#!ABaOl(<|9Dv2Uyr@Hva+T-H6^LkY2~6%fqt3XWY}xd&})hA9A#HXIJEsgdRJ~&wT&B z3)dze`104wlbg4`T5oBoLO;DYYWnpqUmiN1-EPb24olB}+UmZ61AVK5~40l2W)E@8SEvVijB7x4j?Iu-Ph z=pC9B$O2@s=e7Ug0|cSBf5OZ<9Kg4KVB*WKz)+$ImEwKXysx0+E&6Y3LfpH~9JziA zUs3p%)gv>9fR1Qna&R2B^~9v>1JgM+jw_D}ADMgj7#cxOkH307ZTF=63O&>9RKoW2 zDW?Zcy?WYrqcqf<2F*xUNW)=U4KH-Q08%=Ohvc#@$+#}+Qk~)s8OEt&TjEJ1D1n8D z7kUc(4ey6_()G9K>>S?C?{s6-`_T86v7*QZsml|Owp?)ZXv?=BKiYE9Y=HH~3C07I zj+iWIc|8KI0QHJV$jx(l0#HH7uNO`#yewg#kBKKJP)8yTgvEJZHN^-~lK3TZt-YXv zJFTFfUlnY@tnj~%O6SVW<26A}@~muY(tKV(u>Kp$@-7oI0N4OvQ{GD@-{1zJ(u)vZ z)-ZBgmB>2OE{iko(B-QzxLQYXRI>~A0DkDUYI_t?Q%t%xpe_&sQhDHIAKv65>g{n@ zjlrow(8!*vVQiJpxnP}zOL+1bqEH|Z9^DWNFZ9mBZU93OlC6r42OWQApkE=g5B$BRx^1!1wdORsObCD+bfrt}2z|YR17{WoU9%jLX*#)eE|evI zRBAA#WR1mY(s)%)qZI$@ zJvTG-Ov7n|n_cV=6eCU>xP;(gXNIQb8*k8daSan*dri$s8$z5S&AYQHPBsFF%x@rl zfr&>CWbK5HwnFO3({aNemZMQw2ItPdc7S?LCG1Srf{gtZhj|0iRZQ!+;z2D=6rwDV zoI^tewg`>$Hia~Uhc~Dsb9(+K1e-kq&|u{GqD!ce%Dc?++!pwR>p;Wm5|whk0}ac@ zVmfcMOO3Go*8vI4lJQQP4!;qb-`x5}FWBfqdT1d+=@!eB&NW-B=?))d>HEN?aFAE$3{l(uV9Kab!Ut?NhQgF4; zgW&8bpgINMeFsSevu3dh=Vm@%@ls1x(m_{x+x$>3rt>&j-0Zf+q-)XWmfVhO(TMo5 zp?lUdt#@qvvCU^V@m;aX_aMEAiAS4A`vLf9i&PV+?gA&zE@?jUO`gY@;{?6f`u#~8 zhShM?hg1WTJ|cU37V+8bAuKz7J>ey zM#vQ-e{4;7#|a z2Qo_|r0THI7-1$8)3N7462SsUA!O(Aye27{+NOV6TxVlEsL$Bog08l}2m%0g))Vi^^J{(s89hQJHk??DWE|LF)6P z)tF4QhaIsu7sW5LOloV0aK6pmz1SRYOD;09=td~A6=k$_NkvAgdTQ&ws_g8n6)ltY z1W2tgnKb}1-A>_+YFUupUXd1#dV4eax4k1`lZ9f@S_Fx^rndW#+60&G3#ykpzLSvl zLMpG8oJ^nwr(wgpEsHKaM`L=rZZxNEeqYd+=JUX-6zJE868jchoDb1R=c+`D?7Sv` zEeb!>)9n%PkL#E$Gg;(9iQT~zO)j#=qzc?Fnn5gz5z`Vx`2@WrWMC{Bp%kP%vbYQs z7xuz{3(0Xncfm+@rTJioN*;5i;>K>YYA`n_jKByDMd&W+@&<$eh-#W5bBb4Sv$AtM zuC94Oh`mVrL`Os&2iCzqR$#h0g#@&ao73>D?cRkEY=${;+zF{LCJyVSxZ$7|Gh4eY z;&#J(rg8y6aB2NzBh6d0)XK~0u+AlqFoMf!-1LLph(<6yy<4+dGJOc|L(m;?d3hf) z!4rIhT%=331zvU%0SD$UV&Wj5&*O4>`}J2z^DNbQvV+95L95teOxBbMo6h+ON1M=> zGp5BA^b>#Yqm*IJJcK8;G&;EusGb5R{Vs2st4m(?AeSF&a+sDNM*DWjlmXS+ElNHp zLY#S?gTFvTRofU#7_lg)?fR1;?AIru)VK#yNlZMdL#aV-hx{it2E_$9^{?!Wk9QMVdC34)E1HsK2JJacYz}0M;}czVObGR_4y%j6ef;teo!q`7YKwV zS0i16lIZ|rutPt_v|M&z>B6_f=BfA4y|y-@>q!cFE2-6&odee{P$AY8Yx3CH76g@f z33w9{+2R`p>N7C%Jf|-v2$pL=3pKr3(kpet3qqCR)@%e;h6ggx?FDAV zkAlF*&=!v8A&tYNOF;149(I~M*NycTzHJ8xMw0466gy3U-$YN4edNM{SmM+D8& zyAg9rr?I57x~B_(Sm=oCL z&u77@qyqpFJg10#OnOI+BhcW;9`eJ@9FcQ2f;cn#wM)#B)#b}lr zT;XM>Bt|QSEUS@{6mp7fbnXJ96i=mva~E^xHBc_e=g#sgXanFMy)fxcUrKUnH`HHUX?PU^ z{+5yDanWk%e+y;LELXAE6EkfyU&w1eb8^#5{hclE?VmOx7e1#W=E0^!97`78q{y%p z;_oXJqDoNV-~{~UtgB(lMM9w}xv1!4O5UI#gpuf)anr}>2l!D073~Q)VV;VK-VRxC zw%||81jpKtivx5{?PybTG=NkSlZL&AdIN=F@8Q*FJ&FR@OTA7`RsX7?`2V7|rSGF; z%@EWC2uJdiuqv9kG57>2rtMIy7IQ?s(}~TXEJ3NBdP-b`f8hPfGYeHmezGlnN=j1W z&Q4HZfIoD%o0^6J;WlA${8z>PMqJ9rBj z(O_o3VXuy)Jr)w0xrg)bFY&c=uyMBYyV$B}=P!f`nVsm>@S&92Ktm_c9+%nZM5#KD)44q)QVEjf^c zk2VdbCU`|mPA8O_LDA7T!<5swbpFOMLg*Yv`h#feHbZQ-<2XJO@fz4ecg)OZYJ00L zrY&C8c`0RRyNL2i&>c4nio|Pp8vZg06JN_xvr%VfezFS=GXpN%?gpSJ`Q0olO+Yk* znbQVlPTM%OKZac5yWk}mKf3o}%Z^)O{SP@N#A@+}W-fatNO73>r0ofiUKEp4rJg*- z>p%RO6tAGtN`ii#FULP3)a5)$4nS^+?Cyp*Wmm1jq1;HBl|A%g4yAT+@1`A)fX@}x z8)_>_>JmJkZI%mYN5}5OvdJU`p*I?`z+MGP--}7tN z4`jk42L1Y*H^1n%DLRy!aj&9?ve_R*d4bls!(!RmD4WA7s~a+y6>fz-X2eUHJBgQ53bA#O5$qg2yY?HWAbuaPurN6~;OqlT`|^E|a+d8JPTrK8R}fbi_USaGu1Zza{bJ zc|2aY4-kWw1Mn}nutG8Ni!fQ1xSVwHd9e=tC(2lJq=?`+EtKTnv=)`V(304a6QXPh z9sLnUyb=@s4vfTt)BO#^08YdZOuDDQLOcV>SV8v> zc3p|4Dg@1lzv0;SEJ!b5;=d`2cbVl+M$R<85kXLy!}H z_%^kTo&OOvM`cM?aY@%47O^uNF4hm27s`vFT%4G36MT&4fA)cpdSl{|J2FEKVx<`O zE55S`bo>S04Oof zb9NUZ8qxS0rZrl2Ln<)IZ7~_owav@&KnMaX?l6*y;w7gr*jjv1Tek_B0uqi8utyr7SRe~0|C$~1*IS{L--3+6Y}ei6kHJ! z?%&H=pZf^iO{Ff)fr>1Wb=aI^mAJ#;A3&GADoz7#Fm__n4wS-ql2W{ZqH~F#Q%c)I zK$RK$r|q+($}aW?ijg2lsqmL1Ou8EsyzSr&LZmTn6o|-@dnz~!jcT43wdSYH$)oN@ zn_nL!tOp@g!o=eqHw1nTK+aq8e3!@R4ra?am)hFUG^fFY{4U*6{=;7j?@C~5B6wGVURO7RFX*in(>cF2GO`^nXN4{skXbK z*iW_bkc3J?MGcRCGWEqIV^ME9I_-sUs$JJu2a*`~tArUT`PlN19tT3g#iut%TS{>U zX;gQ+oa-d*4vLwwh@lE)CT5TZj<_*{#Jtw&NXNfNtdva>^c#N|GsqqZfB6&B&1n2s z8~(!K-CGqR?dJH{UIb@z5Tw4C^wkM+fiBStUZB#uLQu+P*F2u5ckVC`{M?9lxZr3{ z!Niy5LQGxlr^My7D;@FhD}&XF{{b{g-UqVv;eBuiVU^*1K;uD(d%46;yzE#{28T7p z07y5je%i_Fd}#jq3KO}?X1r%6+9%w+fJ1PJ35Ct6NZcKJG6tgvq(*FdTi{U!*B%`?}V4 zG259Ii0J^AO*AcVIZnSbI}jtk-eTxOUr0FPCphAn$c0K_NKJ`@fV5R5LXB6%>4uvZ z7-2gm;LnM{lHi2{hHRIgJrt#T|B;J96D1TESM@IJ(D}8KBmc?pk7qDhTee;xY7(~)Aqyai0Vfr4Lb^a|he?+bQ}S{ki~$nA z(-ZFuIujs#dOnmQKZSKV1*pbz!KcLep#y?2m=Z4PN`Dc0j{IWeHxo|QQ zDwu{zi-HMy`Op6ZgMp9`wYp1QIKgP=BJNp~L)~lr$|+SvME^7Ez_(BvMmaRP@Su-5 zjW-(jg}9d^q^#opMR~d^<$&Nv{F@UYS(swWE;(r&u4$D5%)pPtmXSi?nTUg0DAQs%Hv9GKV1&G;TnKRLkg$42+)O+g|{}c@C4&{gc>)*m!!^7K=xj z(zJAKl$x6qK_9{fB~{3%d(x#dE6N*;BvSW&94JZ<-a6dTwfG=iJg|V=#q@Ss%Di;H zucs=hOVFz?FetKn!ZSsPJ7U|UxmpKlgcXe|i@JxbvV(mKjH-JUD62B`vLXp!YH$yn z$|Wt7MDq7ALUx^f5atl~K~`p3Z(GFcB%N)`^Z~O=LvFGYJ`EPlB_>mi8)~pz@rrqz zx&8+H50>uUc$}F!*PeBl+RTb*!xKK~X$8KChA-t5mlSOgH|KhMdv!b*B>v9BXdPg5 zaJ0o_#Cf4QxXIvGx|n*RiWFlz0y3WiqC?8eZe=h4E%yT2MfQZ8?1sPfQrb|8m9L8YQcph zsj=4=GKaB%>F)KFeZU^TkKEP=p0KsRWNs6S0Qn*cpR=YGawtiDj&wjN;Tv4Ne(_ME0z5SSw*1_~4)KZi*!wnSKH z=OE|R$?#_~kC4P?CT(`^E)|N|HTJ=z*Ko9hO{{_R9wsY`A5JtbfI>w!4Z1Qx9#&da zEV&z?`}Pr#Ks&Mf4Ux-&)nTWL3I;2qH4xY*VR%|5oPfKm>A^-MA>3Qnl(Yi9b#uA= zx-_YL2T(V2su;6Ru-aK!Fhx&1x>ceRZy$pcgs1Sh4?4733No0EvAvx^pFbv*>elqX z8oMApG0!Wgr|GKmL)Ywj8nwEF>?G+M9AOqDCnihSg#zSfH=+e$HiYb6Y?19Nbx($r z^NBVN9K|9B*x8l z=BQZqZRv9sd!K-E4gIgU#|=jSSm$M{(gJ1_e$+c_NTmVY89Wg0Nw{O$XlNUIAV;Q{x|@W{sI;FnXZ*iv9EYxYLy z82;YGp6-Bz8-$JF%$vi2G{YizU2Rgm8bIIiw+99j1>_M`8T5SvoD%;`$=o7-j^Enlj5g+zSvE_GqgVZ9SETAe)w(i!|(;aw-AMOGNK z`K>(JX=(LD@;p#nYc^6SWk(jeE3Q(n(>JGP+5=b)P`kj`Q&-q^6j3*Cin6IFB#jlKJC98TyOE zYT7_*hRKLOLqps{3F()B6}oSeJCg?9Hh|n#(Bf)IsR}H5@t%C9_J}i>YiZ?L0oG){~Na zH!sQ?s&ae}C5_CKoA_>Onng$<93TlLgKlI4F&WAbzl%I|?3BF1?7Hi*Y@LPr@kgQv zCcs}>Vd67$de%_Pia!GrD!%6^U3FZ`Whs$|eK{CT8Q$+DwsMGWH^>E28Xf=(l9u2< z4r{xtTf|)C_#q^q~UauDAkL8fY9*Uf5hruH@J=_H$Ec%d)VuuYbjtP z1LHf0K9{12T(@6952`Jk1t!*(n^iyPeQP!v<}j}XnY45BWRM4G#lt1 z^Q7p$p!mI2pIXW5Kn{*LV9~Ll>@riIruR(FhmiJA<*!b6S=i*`vhXRWy z{4M;x>Ck%4U&EYW7=mAw;!iMmmjkI&_BdZA@CMUIGkCYrtEM&Df-0rWRx7p`gC{rr zWkK~cYQyh-paX;V-B3F51#btEf9#xc3_kGHz8QyD4#(1_9c%i@g zF!%&ER?W zA2~O3!afSGawmfiFZ*?Dd>`C=f%|t#q6DAt{KUVmR3PvXpUh+MabK(~TkSd$0mOkB zR))c!S+n|$>MQCH_}H(8NbqCrM~{EKDuMg9O7r{dduK1dx+|B!2mCya>2)sVlPh-<_{gOLCHRN0kFL4t7Xq*S+kFf^_0cPi{X6KmhMc_2;IG{1 zFe^9{?Yt0%I`0sJzuNJe&8I8U@eVz@hrwr-DyTknH0|fWUY|4gYh|w-+j)x8ZOohv z3_gFq``GmD%Sios`(I%21%Zzb5AT~q;G@eXGx)+och%X@>n;Ls?~Y;cWwZOe`ODp) zKEN;P^PLR7>cZf!-l*N4z>Du3#o()BhWlMtMiTg_jdd9OgZIvq`6L5R;%&D4u75H3 z+R?KLUEfIYbMNja8GK#a^r!!P2yd9$Y`*>j7<^mp;GU;Od`;k8hnJV&1M)|&nDQNg zk1Mg1!M9JF^+1VDPZ4FB;s%$wMoz-u-x$>3k~>h;^eNI1xuf;LPK-eeEAZce{;qC)zD85ko=wRkn*4C=P0-E zFd9m1wkAs?d3eIL;l}iF=vE4M8kW7r>M!WBy;kIp{Rlku+av}*72oj0rT424c%SW+ z82r1x-`RKgkv9oE_qUfA{G6@t`k5`p5qMgMTn0ZMTj)ss{zw9kINp}QFI{gjuKqAs zOySqD`wj-b+P~-^`}354-S7S>!AE^C`khI=NdCrizhLm+9=+qIzQ72zlBKTml2=>hc!Jn_3G3?7{@tnZ%-DSkYE zFg`j_w9)b94?KO4xK@uj=mJ(Nz8?y|#$K%U)cYa{9sgB!AxFbqsz__dotv zH?m{dQ@%*89U;LdwfU>(OLQH{yQ?UJSDD`A z>t+|}Iu+k_4ue-+`9;&ktujcvHNRr($cbvRia$NNf`h=bS8QeZA1M9x+x7ZRBJe7e zcQN>bfnHDjxP{JFqm8vC_-E_erT1P>^0zMLX7C1iEi2Tog15cU1}5RB(f&m*mzzP& zmcz$O^*3I2x>1>{RIX;sWOR7qp`~jo-}~!)QcvmH9a;TNx1Za8eTJLBM;>d);18FX zU#Rk#Vgw#hoXPDIkL2a2)PIh`?IW4IJ<&S##ObSLXg{6X;#obddoRE5)3u#QJq@aU z#o+Pxe%WE&{1*tk%8)-8ykq^T-P->ITRixU`DCyJPv17d9ZmW4spa=Fc$cLWpW1r4 zILZI`@3R>^`S-4K22VYGPnjp9sebZMURefztjK|Rznq>x>M1#CF@rx| zb@2B;T%q$@=RDJAPNele@|b5kZMRM{iLTOrm>$=)Fy*_7X>6T3;chx{_SeOhkop@` z%wY9r_9)fUH*-9J-~AiYTTb}f)mxhREA4-!dpooIL$?ih_p`NBE|t3MW$^qu-)Hx@ z@Cd1=`9qB)cyn*xE{En3cv5m}1|OC4M5T}Fen8-^&1{`LF}7E;m+ty|EP?wzl=yCJ z?t$)of^^*}cljPx&xGqSbB-UGOY$f8ug~C^_9f7FFl_^;A3u_W$@XlS#O{C z<4yv9aQra|zPfy?7131*-2Tl}2A{t>^XJ2pz9;aso^0Jbv7pAqs^0xnZd8BdZkB)X zzWZOFvAi(JpVCws*W1U^R_>UL0TOJs4woc8dS_y_O=D&@An z=Wk45^{<-Quh)}@3JAPbFOLMj)^B(0Fe)d#r`j?2nob4Nei(_T6%aS(_$3BkU&-;r z#lLG1c*Msw8T`Y?YJcCS_Cf-$ykDC4Ewewn?^^X*1U{hr5te`Nb8!>y-nfpy+irZ3 z!9TS>wYb7;6uecj5|CuUh zyL-v$KD_6!i>-qv&NuB>zu30jB!9V+`&j-<;|G-}Rs*la+HBs<0~q}B@#)*jbfo(2 zkk6UEed6k##)~3aQ@ZMK=2w>gFK5A#T8+LU^^7jU*3AN2#i~=9Z=-sCjRMAB1rev0 zjlX24dUA`^b;WuLBEEaF+7r7LlX_b0VsfbyHKqyxY&`SpGtd3SS#Lr4oU6 z9u>vlMH9}=*s_Ak=X>|oVDLNd|2fX{%Lb`O(UO!oHxje-g`oU%5BSp6f;JhOJ7neN(}G+k4&^m2{re-|6dq zEPth`#}~D)Px;q9b{d0MF1mkza3|Fd>(nSA!5>Tukd7jNS^G3|Kqo#J+(fe|FR_EPs>l;u500E&`7#!sJy!^PW%m>x`o7 zLhA#WEPv}so+@Lv(0y*^*AFvzZ0!cm&e_zD)H7_yRSEvX?qa)|bSCgeH?e(FLEEc; z1sXoEiolzF@)pbAexJR>=S4OUc*U0`e0GRV{^XfLMBsG>?>u-&nTMjDq5VnDV(_jPYu(jyRt1()dTzap=|2TS|30(g&;3-79k-+xt7pWl zxevWOq%Wzb+mufw`1{492acfhQzE4ngO7Ugo(DQc)g<|wzsBqU1yB6Arhl{UbX;*8 zo@Mz*_t~~9dlr>%EzeA6@UemKwoDoI5vgZn>Bkv-+>+m4>bbKlf#-YJezV}&HgA5o zE0WG*c1x-LNsZrFI^w+%B!402d{)oolI8ze+K=wvof`%*_|z6-e^~Qwd6K_VQeOt2 z(dNb@?=Kug;Qk6sA1jzKuh`>bEAA!mw5{h^{#mt}{*fFgP2e%jCAyvUag7-}hK(ig zf$wFr{B!58IW_lPihtX+4;g%Z(ISV7)}{LPLwB)tykP#{TYvoi4KJxDWAH01|LYwu z%r7=+0fA?Y{9S^tEB8~!^Hfi((BnY{f8*o%1@BUI!#1?!PzGOAZruD=@BNb0^Hg27 zzbjbu$S;eZedPjyH@;d_%0FX$r$X-xC-9MvoM!MhC!zW(c3{ZcY1feDn5wwsGIJ zCGf!?jA8ICvBTc*1P&AUUEdvG@U5BqmJDo~PvG9lg&BNTkrvVQ8eSyuwvTpV@ZF`V zEx6jdHi6fDxITmLiOu-s?%)jqPl{U2;2$45*s;V9V+ef2fNKoC_m29jORt+o;P;le zQ-VL2)b{twJ_3*T9b)hU-k*1*#!-GB_lh*{hacbj`1N%!ko?{IOLF+|%08VM9)F&| z8$ZwXM+INiI1rl`LHV)jhs^#^@b!u*^}Z@ph~zKnm)89gJ)3>*{hiWPpTtzwpMt@6 zZfWr##aqqi?vmjC9iLu|eU8-Ab;aupe)3Yuf@z!HBJc<75`Mm&^HZsJm;6rPRX*;* z@}C)&nEFA^NCJPn<(mwCwqEPMM=U%-;14g^&EV%&^=a@(JY63fZs^J27Yl#BBxcpK zB!7D+6Wj$C3%Wj2Xl644uXbY$%l~tW3I_+3A57q#7nEo4D}N9CXkM>A1b+V;QoC2r z44-xG*AEFicdR5ouQ&O7d^dUW{YC2#c;ftzMfgd_`GX5b?0<~F z8{f;;{gV-CPsIP_qx+y9TiCjPGP+e#VwoNNNPd5S@!iSj_p{RfE=t#T$0fF2pDgyY z?U%79s62V>_iC)&J0pMeWz3pQ>Pg=JC4-mly>{*cGbsH$7{}=3Wa*(pn(n(n``_#( zrq7=&GwRPGA2p9A^`w2n@#Xb&S9r0VZcoR&V%Nt43A6Bk;tF8(9A8*H54Q zdT}`duf5SizOqUl4e=X-w}uS?}e@)Cx}@An;z!mMnkFfXNMFo8M31zN!)) z8jbz@Mx`!vee80Ot@|e*zQf^KKd}SJ-|-le8z)=6<+2@5+ezS0t@)1CANTY{Td`UX z)BKg$`gk&7<$~2SkJ9zJ)q-f2zug=CCjJmOO7d5IZ-@jxe`;<2&MgSMW`7AkiIcbI zUiCcv|FQQa@KF@Y!!t>^1us1C0u^tKghNCHgd{+OKp+VqiOOboNmi2Gu)Bc-kV}2u ziVBM20Sa=ds3?N>g-;X}PrMa8@B|gn=lxYx&-Bc0chAmjfdBJ*%;MTrO-Z zTJ+GnbDo_{_@OPX;pL0oi@aaleF))4Z+pnXfBbjmnSn4u(53K%V z5BIvV%OmG8z46Fn)^dF9$p<~~-HKnR{M0$CIX-&O{NuK_ z{Fv}vez*8T-DhKtS~h();YS}H;pHdXUv+hxOP?luvu%Ekub=f&?Ca)C?~S*%`Z@XT z($mk3v2{0bDA(&YPHi=#ws>DAN5TcGcso-c3ASG|^crgaq|)Cw{<7<*Ue@YVrk6&( zxQ*klnDTOmW6yt)%J2Ki0UUp2?t^`Y-NL@B^gOP&Y`nVr#!HqgWO_))!PdOYo_76v zhvYGN9iCmx+nE!s_-1_jp45J%hqYejd~?T{EA|NxzS}Pyc=@>}-WTX|+A)OhIOBDW zzvbaj;p452Bz*Q=`5eDIqxpxw6kkaAsmr+jyz!w|4&3m$Ay2z4x8%agVWq=6pU3pH zqpq96+j(@`L086(Vs?Q(Z!yO|_QA5Jhgbbc?H_;a104Uv+?(!?y*8KdL*M?0^ zHg$1tHt*Vn7N2=$M(wq)9M9Iv;Mga;{Bz6hyz8>XY<->f4cB`&u4&V41#Bl#`@^;C zdHJ;me_frqm6g|jzLn!&JfQW1UCw@x%AcZ*@u!T zZv1NP;B4PZOR4oo%h#XY}|wm&%vFYOT|sdq(aWHInVK zG}~hF^WXNH`N!#V&ZF{uPWqg;^V{L=TP}!RNBFLPKg{uetqU(0xsK^Y=SKMVZpu3U zmOt7&!R*0+B`-F$Tz^yXm5l9a2j+4e1A-LmqRADR9+ za3j}$Hg&vx>Do81VERU+zJZrNDtq(iCw9uC{v2@hbtc~YThoqgLBH+(WA_N`9)aB> zuzLh{kHGE`*gXQfM_~5|>>h#LBk(^o0$t#&)OG;a?8*Gj(@7B=q!y_T-3}}6!;Y)C zIy9B4wY=hD)|%(TJgH90SefOOr=95h7C(yA&*z7h8X6C`K|viWsituZmQt>%-UkP|Wa+iVQ+c*wwau5~i7i_>BSr6yKC$KH5LQ~p z=NN;_{0&yWm6K6^l3IT36VpW{pZZMq*r@!-c+v^(R5=-+f-hNx;Qi3Amf?JUE1k1x zx~KDF&~JPwBNBRH&qa`*=?zv)#G=Yvi5~8&8Vj?Z@f-j+NHZQw#YU_Xm0Al|%v{M2 ztb5J!2K4pCLVmtd#Y@|W>Glm(7Qpo!a2a__%=$_tf?+@0xe*Xqg;UFdR zi)9-xCbkl?u2XYl55Q8)tUW}rGS_H{c0$BZ0B=J*9N(s3P;7*a~EHtWkBTyS=#M-6-r@Hd#Bdc#u-s zyXX1(i7;Ln{Q!C)q}I0$?H$L@ZIW;0x%mL)?T%$*{#%y1z?B?P>UjpUwYV#0TW2ZH zm5e->v}nkM8>B22O5Pcx`*T516!&3WWp)P)Lo%w*6tg+JDHeJ%FxOY@$BSv{+TF}lefK_JsmIQ?6k)K( z!^m4nuc<$VrfwISH+#qAU-PlNBLU;8}oP z$FIULfei>UmJRtD0y*%brn)F7s<=%n7)ZFt(-KoR*o2p(9Kl=>0qkJoQ@4Hw&18Y) zkOh`Q)?-R$Yb^Wx++5RHp|y3jDjjd%5K|1+_~KRBL4P*9s4hA_*s))&(kQlUkNjNk z*2n4;scQ0bVO7cWez8B)XSmC`I*^T~Z8%aB@>TP!mi_PtC95;W)$&=1Ghl1JUnmTj zPN+rEPhkyRpX$m;6a;8ZOq6U1riUosnaisOjQ?QB3=^P9D8Wp7N;YXT#c0fmd^Ri0 z(Gs=ZAbzyjkC8p{b1jJ>HfI|gYwVT2Pav$^x>!6?W4$^izT4(U0!at#F&^#V_95XJ9;&9RG+qsFu#Fr-a%w*w8BN;~r6lHtTRQK%5QCDWloGrl^ z%vmc#2X}OUSUee)MT+H2Qx^zVT zp7?pJFDcdxP9+wU8VIyxw9HPhX7oJ)AVyYimWHyFI+za^*hf&ykT zuXOZFM-Q%`0RA(eVTA?WHvZ13vm@;8_iQ0R^E0f-7?A@&Y6Hg zm|LkkfU%ND;o{WWUM39cPS|raSy)1|ue)s27Z zwk2DMng2r876+(CNF_*Z*~KzqPmGI>8tt>t zd&3ZFc$8~3LZduh&;ULEM|qB)$1lOX?)wnDy0)|oCw zEv{U`$beC(he?SArNE}08!c%W23JkRkHo6eu@m0{e1`Cnj?^ybCmg9;g>SqK#ZzPN8pb!39!yRC~d zpNdekKlA9ptJ46rMbmdMy*43tkU&+5)K?q|1oOv?3HsyxqQRhB zdX;YvnDojP7HtvG>XOGGC2c0;hhwl1VngeE)gd76Xu%k{g<-xV3>%JNxL%1ZjKu3V zb<}ILs{k%W@W{+O8;QCT^MwwW``XtbebfR}A*8f>>f^z149zAa(HOMjQsYWx&X|5o z_a=wv2ce|{1~bL)V9yMe?a23SF?Q@?AtTbxk9TLF+%XDglgh6-iv6v6#`!O(c74=^2NXOin3*vmqId;}GFb%P)2 z$xzT(5;+aSR`HPVB?!uW8{^v(u5_cZBeaA=SeSt zPU%jUXo{`#4R*SE7xUfVS@ug+1cm%c%aH#H{7+z6C^Vr)V_4j59P$W2C4!@r0+Yse z{|gkS$24TzN@Sy29N&8vz-3}W<3-`-Xan+g3OoXqb5zC=hxM7HfBRv$JCys@=ZZ?GB7 zj$~<5)*O{CTRB6WGdjKgx^Cmj=?*Q^dW9+Dm}F*+)d+TI0XKK?V~JfYy#L_|2S#h)=CN$KpBc@ z%oR-QCpgCo0B%8WwpeXiFsTNKdxFhq6a^JJiT7H2g0A_yUE|&{TY?gOXV+=u@-a>t zCi%YO668n_-KIT=;GLUic$ICA(g*sWdz3&>g)YQPy=#CROcflj)HUDKV+OR+}B9PXO< z2)~ef037vPloZGhA~m(Jje)u=RHa8(s`RMvLOrn#dI0pJ0S-fW#(5tziTthQ(=QT* zYuWomqdwS>Vvj<$q+E$RcMYwU`o)=8^M4Ne$=w$ zi_cE(JT5{k3Z~?EJJwoZ(6sxVLhT;xa4i7r1Zh=DBgdeRA$9TEx;VR97|PR=rfUgz zLiED{+99O3F0#^D>GB)x`Qo#=)RWygtc>Z<@xJ)IvKKbK`q4O2Hvn9X@OtByU_rPv z9LA#*MLz#nUnLiAP5zx`+sO^?+%>ubn9y^cJ`{Hsqi`iTaIqSJlj(DDdYZyq{e_@d z@*(2E&Fw3eEpB!A0bH-H5V>M2zF3{&D6rRHD0%RI24Q>80ie13SUO86!#i_H!6Tq2j;cRrCdvD6co;+*3;<`O zwSKAg)og=P=nKO_jY2JYlE$bQn$_WqiGC!)j#|a$%d$KPMf+k&Q`z3R?86vAJYzr` zhdtr%o^rAej;EMMtdZjO>$9*m;L#fJXzgmxqQQB`N+c&z3w0M%YFLxVqclu-y%E9F ze2PjA=okO}R?rss;wF0oKq}@YEgX*kf!+%%Eor}F510Pi#+%xXy1eMKcHAm~PchF@ z%@>?W6e$A-y_otIb8q6OdL^83puiyIDASwMJP+V_)S+>?&GtzpooqW)|D*#1-sQ?l zfmn=f7h`ino+&L=EysfjjzneK$|GSQbBY>W1LCu9y~G@sldWB2i!jwHu+kKfCso!F z!#0uz5~rdtn}}E1Ue+A=qM)^dE*ewz#VT7@Q62Ipj0~`Tc$(}FoKY_U7=)k@eD$;i z*h>DZGRP}Brc!FYD)d-+>kxJ;{~=r%l>ZQGP(<*C$18q_j;XhIl=u^}FnRmYIEG!g z(tgiIL3<|v-Uc#vse>b`IA}#@F)vTXO;<U^YXupx~X>56L#EX^q0`^u<;&!S7{% z9hAjqG4^#U06IrEKbel_qc~JkTOG9gAO8r|;3xd<6#&Z+9Jj7fH3(X2cV?=9O4^^n z)CBH)+^M*O=#E>3eMk4v*$8uR&Wy}b)xKJ==CdIUMA z5C-!zH_JQnc(_7vJsQ3R-IbCAuhAWa0#1gJ_yEe{GY|X74_P>$hfVTLQfdG*T$Zx# zP>cTn&6W;XTm-$HjNoO>>z??Lu4G5>UNcbiGMoVrCK?D6O(9GwI|txLdNMByL_jbF z%gzzluf(g5%v3)K;3x!dKAWWZ1-DJ2_j%{qn2jMtT55*J+1l!H?}F}(Q}PzT%Lpr+ zWI|OWs@e*1I`>taT+iuPmr$75u1;s>B~_S&gb#WTzb-wY)ekmB8q8B2fq$aVngHL9 zdq5Gno>Cbj&aVhfjVYBOQg2c?I40v-JQ!eKgtTTa%M(r67+bQ=L-b)PKJr|SCJCiS z{*E~%&8E3;&!kPg1B_9VcL3HSc#&m$yONNp)CF7IujA&v($YX-Zi-kV>@CGMywU_T z^a6Rviem>r%-gq_($+juS$0+kgX2dOvn|vjZhLj?TNkQ^Y{25kkQssgPfR78$_Te! zZyuU()EWCW#DhcYf^|WqlLbe-&{y9t>Z_~?hU0^R;mWwzqg{@jF0QKuWgpx2Rp-IM z(fn{c+K`GSjo~W*I{_Hio{kDM3`7JDmByn%UyV!mTdLRFyn2oUC(N>=8$tBSIeMx1 z+}ReWWBaze5Jqk%V^73!_+a61`@@m>*t{T)6VCf>Uyq&+#H5-0GZ1pfsv1;Nwq2HWMrFfdzqBRSKIL9vASl~`}Fe_cPaTanVbsH-+62reM&p4z^aD%V1$rPJVMCt>Y z#grNPB!Cz~@Fgi-QB^L!RYfwJ>i$}cqdN%AHdMbyjox{UIcHDo2lSH8piT6hWT4f|f0 z?*F1>_sY4lSZ!a-e#3&(mHZhwEqR+n;I;uOSS?A z#aQ6Fo^-&SqJ@5kI@=JG#B9hXm^G5@_?G5M2?J+9AX`d+eMm{L9ui*|$5ULbKu33l zlCTuZGace}^hhMRMBHmlo|iO?ai(GFx#Wb(!BMPioJJ7%8j@Ce0YUZvFKP___y=s8 zU_cP;y}QAro0v2h2#*q+m)jfZfp-QUd1Fu%bZ`5XC}A(EQVW0Kf(HmA8E=`)aaTy3i0k zndJTyEOfftIu|^hmL2rNwP$ZC=N(+6I89sJ>AwM;02|O#W+98W4VtLta|BGXuff()BBE z2EtS%T7Vf4;BwplKk)5M+XC!?pwx=2MU`Ys?xR$4j4Gf{F#WIbih)vfNz%hbPrVV{ z#?(u@Ua$}{iqCGV_C9$0as(A@;NB&uD~ z8+U;*>@5~G$jX>$?>FNr36;&8Qk@hhE4MlX`!vegC0Ypj>)=KfD`9m^Y1J5_*fNFe zafRN+rc&f%x8!~*uj+-NL@P(km?Ac=X*dm)pI{6XE|?^(#c?uh{zy-k{whCEBnh@W zm2*rap|V_o+~H~34h7?M06eVI;Cf6)<@<2vN2hN=!4uL+^G)i|cEi0+*H1#uYvcfO8W+ ztdT^9HiE;f)EY?(kZ z5xmK8$UH5LB9?L-7T%kRg&F5kufutJ1>kuE#{jqzaKKRlZs@AsF$Y=DA3A z+Yy@?{S73x5CHOApQle}EdVvRw62ZvVSMA$0ILx^F)hy24Ncx?QTxBVeg%Tfv~>t_ z-cc1rg;J&a?nG9m(1%5iCFergyEsj5{KdIdzG$K%W%_3`9C(pf%Yo4)7lxiW`HPc_ zoBe@m~FCb?{-8*#Bv54LtZEfh!oBL=8C7Pt9a3=Tvc(lktnt%EmM2XC;x z#}1F+gKzexB6y3ok>;QB)`U~Q4thgeS??;+$x>VBSjDu^J>96kF!W^|WOCfo zVq-+ZtoNDlA2i_e`4J)GEbw5HXQ`;CnQ}NXur64ruHXhDsH?6sQ0>9uI zfJ+ck(`zt5_r0OGVgEGr5U6c+*me)PurFkf-!U4aqc){*%^J2z4QU!(`7;atb0vb@ z7OW0C9r{(KYJu#6*jI%?Cn#DW@!GAMV9+SXINAqoQ*ucXh4@|SBo9ep8&K9`W@*u9 zY=}>qsi;zSaNOTk)Zn~F7M!yv~f(EOH#WRdUh8=O2vi9+U7nqC(C48 zso0^dYGVjZTY-eu9^e231*?c5d)HdrVB_t~X{^rrZRZ56ETmu&8&LbXV}3;1>J^1o&0&jDR?opNAQp%I=?>lpv4YLFhFY!u8~~($)gN;- zT|sSTXUCaAhm+%OQ`}JnQAQpaLZgT$2Ed~*1;gDNzRHg=TDAvS!M8L`rOg_yJ41<0 zC6L)5DIFE|kyMIR7MhguzTJaHOn z(imIwrb{(BX^gE1@JHyW(@ublU$HTw3^4lVQ2j#$6`hfKuh^wlD(taQpM%K_xPElEX@-*kpKk(zx8@Ckxa+@LK5@*C~w zmc0 z;~K@{0e!lh+Lg&tM>nGA_J0V8MHb|4s1T5WSIh%T6y{J#9_B6T6ZGAEiU;S|(%OiF zZ27uN`WD+9p((RjxEZ(3-A-ZSCPpC|mOsBYGL;?&bYfSyVyO(b{M#kXjh;?H*iETq2N~7mZTcX_G7q^SZIIRgQ#N5(qel6%{o_`Y1WV2@sNEgx`gqTP;;vF&kuwsRy7^RbhSu3cQzKO8_MjK(>cZH87$A{4|TgKprDKT zZk>8$kAy!2y11+Yj^CA?Q+AHHonS3bp#D-LW9wcnO$|kJ$PP2?-2Lqx^p$r*DpA&Bp_ zrr*Yzl?#!k3_M=a>;@>dLB@Xv0zXw6lSFl!=MN!2ohGC)Ni3a?Bf-g8C~EWc9W0HB zRtNv7L69q?H7txlSN)1(k&up)_+3RLQXTY#N7(gw`T@P{#@i=i)g=J)5geIZX@mbt zYmXu{(kTW_(DQ#3g!ck|%k=;b$pR9|k`pm@I}PhmNEVRTJT_`Ls3}>%w}AKzK}C7A zDWq_s)cCuqs&!NS&_(q_jzGnwEGS2{w`6a~^>U!3*Bju2Uqul4n2j-(4jW{Ie?U>q z-Cd~eSB$d?11~h!lVcxC@Tx^f6k2a??tFj*hpBz>rh!UFMIh-!gX`q#X2+YrZW|fgeGJUDHtKNE-qv$o|iui(`G3;tG4nLS{PLrmfJbEZ!X^`5H(_Y zb4@7b&(7^rT++>6I3~JG%zh5>$AfqmCrqEByJ|~O3KzG?bLIqH4l1spc@4nJAn51=(dI!irkk#!~qA{V1RSZLWL7JD#V-QIay@)hM) zo4_o*@H`wL&wLLn9R#D(^kjfz5JdX3a~-yiWn(n$)8$f%MYO{hR4NaYwd&YTqM|=) z9;CEEYa#*29|&y4mcq^(7g8!nW^%$l`Nb?Np|TTZ$-MmHU?9i}r)+juZdX=Pw1tUb z5fifbpo0IXWPoCXi4zwBJ5FYAF+~M6pB1^cLA&<-Ri%(Nhm52G8wasvQwOfVV@I8vc8K8$4hlvK#t z1sUh1SrFi?S#i-A-L3TntVE&Ri`f4hN`oy8sZQYQtVOSwF_{MOs7epBx&b|affff` zIWWd#!>3wZ5`Ai%h)_uaR?W`u$Tkxo&ktkG_T=%3^{LVilx`2!vei-O2|P`^g51ae zwUsp1a#AE@T_bIkH378Elg8U*NQ-}*46!~W6tQKfQw+FAhNu=f$_y@*K{)whP7|7qY3p_4sax=+YiU@UA0fIO?crsMESf zy%xHyJ&hkR3xJ}tm9mMr4VaaMK0mrq4JWrK#|_dyI1Ut)*sd`=i-VIybk!L|) zOb0(6Q`MdTSc%}70c5x(deH+$^I+`8!@Et7v8Y5OtWS%zArC4$2WsN;EPlor0O%@F zZ8${H-%U>j^Ghe?D(?f0WI@z=792{-I+he_f$j}Nc3n6Wk7bwQpCz!v7BgGkk61^F zYIOXD-HGm|WQ}~qCU%9|99vVAKdef=VkN}`!OCbb$f8eNb)++yTW*Sut#Mzr#!J~y z*!2kaaWjQ9Za8c)*WXqXsdhah)N*InUCwnqcTry;1pBbATdpFd)7{j$F6s}sE?QIL zx~l_Sm#lRC`mwn7_tQELI-tk%PY=@cW1ni;`Rx8pb3)Cu>`R7UF!$q%o&|HWv@TuW zDnIGO$D8hde16le2S2Il*M6XN9x-a4DgEoU&fTts^JEp8KKoWpf8tA!$E!3w^Az9} zbSM$x4z*7Z+_FR{t7SUsDqb}yuk738xisEN<26~Ggl<#Z1wYv0paK_!Rd>ER$Uvcz z{3>B`6(^O2zBviYq|&ydA9S!~2vqNnAXf{*K@uQRN4$AhH7OOAR)T^FjUGRO(pzP! z#zW#&!DvBvOoVCf>gWog0yJ+vwfN3;0M8+~UQB(=`kAh|TTwJPCRFd5XXVyKqmU_B z&X$uD(B$-`ufa#@EdX=`2P;l7$5~#f)IHHHRBnzyU(BtMxmKYXU#+ou!uks1?qm`Q zAH?QKZ-dhemjh~exK@$)EnHcFr4^}9VzF@wwbe<}P12e!#EAjdgbuC=eYrAEuRyTo z)u!0LW?}#XcmBDs|B|dkFRRR*MXB_xv#(Majr<$9yLxyK_o&4HVk!xrQ5+ms2RF^& z_PA+Qrew~XXNamZHLG%X;=sd{k!$98_!n9MPq=>@RZeTV%`fvZPp*axyYv#SihBSS zA~;*hOo=BAu#ev#tVSmycr>9RJt^#LTW#Z93{byWJ}hNvaXgleJcB741VxW0N*0GuI;Ss zx$Lm`Hj{VQLNuUT<|1?0MB`!8?wBAniqEh3@pl2-h9IYQiLKcuTv<&d0JXGTxU!aE zcP|H+f#8j{y-H<0#mX{*Dz9<1UgFT-oiDhb1_=P^RP@zkNvUlBIzD9Ev}&%jHEahp z(mTZ9re%JHiRe$(ZCf|scto59<}0O}Svs9_C~o@8&kiYv+3W!x&|;m1>DR?gQG<)| zB3SBqASnGkfY%Y6t;Vz9uH&$;IvC&~Qb=db+_3=h^fgy;OwC34_FTHJ64UC2{K43; zU?rR^iu$7Bl<+2#v?f=aFSVYK@+=q(N0xDdW1g`0O$s0H*n`6Fb|GU7H3X2+VY(o@ zH#|Kp?PKH_sM6euKqTkJm(vHXw}%S!>_Voy6nk3+P>f(ZC>;p;BlhUAK|llv(d^h$ z{btKns>btYEYb|i;;#l59gXiuW&Tvfu)&?KbxehqOh8a>9~0fk3Bpi9(xD~%IODkp zhhq}}@B!_;HFW>Ej4wKMgic)eqoG=i^bGp&EQ*#gXI4gf-`t4L-He|)AK)egVjynT zLN1i1$KxJ2_0-J^N`f`DXhPIQO-1J}?CHw@YY-ex6Ag-lD;0s?4mkwyattS)P}=G?}u|ygG9;7BC%*9+$o+ zwnB6OiT7Z7n)CvIO^+t0D8sQx#0;qohKq{_fQ>mGlAuDcR4F^Dr5)nNB6V)tY7|}N zhE?K1H>KNsWJ}$QM}$M)tiQR@ICR;H`Ey)&&Ko{32u7fbLN~?e74Y!}D}zyG6rs_< zJl?^C-iZy<6xc46RLW?hVaVOUC(8P2XYZal!)DS4oM2}s1`P#<f! zNMk!WdzGjTamf_$Y>omaCu;yxEi+?g@**`5I%QP@E@ifma5|G5K!)`uI%%%HlO5ag1lZFOpC7t+vjH#8LACC(C8iF=t=t?)%TB<_{f za}d2^ahMpV#Jyq#n@5VSqu>!wO1?=}k)5>cF(|roI6^|T9O!I@M@PP>d)ry1y?G*0 z$QXfIz!-pY5xiAzCQ5%&yDMw5`xmmIw9aJ4M9az4;_>92sA$u#toOB1IC@7rJCHC- zXjpOlN`1tOvU()QUV2wF62t8D0bewpJPKL?ebd9)p=^;+>kj5Rzyf z2~@$@rblX1XkHFS%*G<4S_t56hpEsP!(pOl7qV5_VM^sGjPDvxp_@F#YW9_7+a62G ztzgi%k#NBiH+4vUEbmIk9BH0nUKl3WX}f@z6+k)qVTPrNm&cy z8_`_GEuUP`N0G3^e1247=rMKSORB-IT6RuC@}eSaa~Z&$2+qfrY>{Dwq55Ee;=wDH-cUu$aPVWxX50-Cc_L%%1Uzf-LsG7GGBb9zBHkQ$N^>wq znpcS&If1UY-^ms=bG(Cl5u9o)iRJ&DBU>ST*=M1o??0rtq)XSFPTUs&K_r$tKr|tf z6ovd;vjNNVsY-L9))B<@Os}!I(M7A2N>Gz|19*p1xd=uwH!7bvRxx}s<;{ViaF4!d z3nUQ~IQRJGg5uqc*{@J6$K<^Pal8||X;O}a_?2G>WSmR>HygtdH4uwCfP>7UHPO{b z1u32$SGYN5;@ep{+_w=HkTOnz)1k>DdHXSCf)Jz5NW~IKIiki!kz_za|~jt z!NNf}#g^tJ73);&y@>s>=3=BQ4Yh(js18FYZ8l?wZDJz^x`?SMrsBGCuc>IuTNG%K zA8vo5@&md?9qK<10?_dQ8VfgmFU(knx+k`QPkO2+acJRnN!v#bcShmyfMzgg%|Op? zHdb_$8-&H2Gn^D{JNwx6j;VyTwQ`g9?o+KECSk>%YNZC&EOU@K;)`QQ{}>{b^M^(J#;s~?)Sv{8ju zq!iXw$3wN%a0!Vh4iiO(U35B%4WJ4xUQ&_1x!W%;W0%@TD%vsDme{^)bwaTQ&F~J~ z@iW5rRI(KBT(FOxIMV-o#Y6S&J4la6#pOtq5+~WCHUR=FQ?Z~?i7yVuQ*p!{qc}99 z+*emZcP>J>32iOmp5^d(%HOVVoG9-It8EaIITyDR=Xks$^2B;a@WLRh0*#q?L>g<6lH7{1ON`snk*)MlEZ$ZGPEBt$~Q**0t!E z${U2zzWUk*$r1D7YF`X#QI+K_>E!vnNJkh-a3jJJ>(EH@DHB+4Np9(kIaX=7FwQt( z0_EHWlHac$7bG@YL6?k)0*Itxy2=xzph&NEI& zc-HwO3HJn=RG2rQ4<;3=fjkeeaWy^|h20Bmxakga+j*mKkDS|!9hfRm2y8}kjarHf z3`N#Dk7EkCFwTd>0lYP|jribtwG- z24s87Sn#~Z!82!Ja9vGBFv^DwJJ?)dh=WQt+*ch6P&NRXI!W3mDi&jAYgzrjt@S>FrIPaQqHiFXoDb<8Jf?<`w9GdNL*LuoDFAcI)8AQp(U~2ig zQ`rYh#Q%_7qYNN!uJoZB9~IGb4q00y)f|$-2&G{%bccLbLU~ bM^zZe~oax}Xt< z0n+p~r=_wYv(0=2-~oik(B4Q0B1>>Fn>rcSSc^+a6IT9SPVPVo-F7?hNUZ*hwTkay-D2@+XkB9rE<3wtZunf zyoE{RP^4wqyNhlz+Sv?7Mb~7aqfv~H7u$ED4AHf1x<2!Bi3~dS>s+JQFO}`pdNf7; zr#Ncnlc=R&ycSrU+UW}SLjx9q1e`X90txd{<7_GZ3J+QxnHvG#MNqnq<$3_jt=(?j z%Rvo*y*d`MqacFDY?>>)#r7SWv^auD)U?E)U0eKyXa$?r&d44{Y%Cunae*6aO1Af| z_$s>(+#Orl*=t|HIH{vMU^`nuFuS=%ygHbj$i?NJaJJAhzkrqQ>S{Bk%9G`AXPLB8 z#~hn6m*gX)3Z|n_nu6VI(yKP-O;=>2Lsy%n5z<`}stK|dz>Fd$^E{Q zh~t%^lr*)tj|m6%ln1lDDJJl){~cRPC-=FV`&-PlmF(;HY6&?mTo`+&w17e%kTBrE z`&;z60M{ct?#)7>2$e)qOE;)xH=)(k1mPM}zdeBln<9N4&Jn+4#kJ{6(fxfRaX976 z8iLg+-#AQ)nc7u%tjND4sWTrlcgz?Px@09KPbO)x!+5f*ds3w9%qcCn zP=OtGO}W;MePO&OC1Vgk9)ee4!D5~hR&Y~=3Mh+_PVL$ggUu3^C^L4J$J2P@10F5c zlycCB0XID{|Es%WLxHHYi2%4m8YTCzJ5392oiXCAxT2=ZSx%~0g{jzuPXOLQP$*rs zok)^UI;&j;M%)HyIDUHhA9(v zSuoM=`%NiH0y(HzD?`ySv+ zgtWYpP?4TYxx7d+hzr8wL$MH~WgJ=uv0!81U;`~ZLChpoaW7MA$+zY5gZMGlIbwH+!+_`ghdrnXm4V@v>kVvN!aJW_j+>hWf1_%z3C5WUV?K0mhv1Ne9Zq4lezgoC{ZwiR< zj=PYapqKi!2p(hO@Hkv!s40~Jp*U^_UH>1VrQ48}E&-T|;93iZ!d?|=`^`E@nmaaT z>~&m;6f+NC4uXn-kx#gd{8uMGh^z+OHdF845vpiquqqmmy`kFYQAY)>v%;rn3QmlP zP8WYfb*3#kMl6jk8d*Pq`&Qv@fGb^hArcP1hMD3{-7q2C&!Z=kVz=B>!7P6sHyF}l zR(K6_Q;5fCdJTeSO-(!4O|+i4Sw`xaIx~YJYRw*t*9bS5Z9~DqZDdOj)d-_T@#*S( zPhxZ*jTJ=XO2T({(9x{M$SB1gfGR7L$5&whHy4NEG$d`GtdtuR$-zd- z{Z&PEE26bgfhUciaht1G{B{~Pw=PL>)E$S;eyT@l%*%%@N9?KNtBgH%P9Hnea@`Tf za20ErVp@efRgE(|6nuuVFYSnQO(4F^6ini*5kwS4h8RCfkHRulIlEmelD635+p&v0sjHZ#$Ifi|%~9C7 z49DYFV%`;E?<@v52GtWU$hx1@9slg&;b!g((SD2UvOs-RrPd;_TzT);0v!-oLTjc*$~2b7;JHvqosA z*o|F8v7crrmg`k!e1onb>9q!Ef*|KKz(`?$wC1W`Rnb)P^8bV#oPCfoQaiN8rGw)n zb7&hSy-G;6Lp%A^_+og-p^eGJ{RrY2s)W@;{{dam?TskKwhH(%YqOPS)tF$i zO{|CeNbK~$;;3k5lzx7Dc{XYq`mn8QPUQ@P?YydXmX+!sc*x}KDbzpIGjqH;0Oeja z5gU)neQl)1;jASEIN>#?8ia~!5Gtx|^){?5^;g0ykU3Hliutn(;Sa&kf_G$!IRx#z zg6@W4tin4fd1XV;9SRk^1^zJ$ff{fl3&+-wOBm{C8LnkBUQq9iQDFP<%*RQ3833&@ z#nsxd_m~%fEq7H!qf#QsYALlTu`u*Vk)%%9BdCH8U9FAV022`8OK2RsT02AjD=bM# z$n+oxjt)YTZqLTiZSwP=0&D?jb6k6V$JP|(4@=jEkduK#5ZM!>p$ojp*8rOkR;xBI z8K;$`(K7bz;VZR6(>+rq`iYVpfoAkLj}%C_HbLPlQM;p49|sXNcPn!NC6manrVMQq zMwP&<48CI?Sj^>Jw$5m{Izg`ZD7B;6Dfn|2-G(TdFf@fnt-!?Am{0 zdR?c{+yO}j(%gJkY@w(!=L6@=*p)umCR-EKR;6o26w9XPGwUuzlq#!YI&G5g!L-Y6 z`MpT?61E6de6L6C!INf!!V5GGQd?hwe?5!f-cG~H__zh! zTaQ{^N`0snOYeMr2==7O$h<@pz@eN|!`b=KXe8RVE*z*vRSS-Z3)%=311lgF3RmWb zk!HVdAVETP%?bl z-LQHCKa0l}$x~L%aSdtB+rH;E6Hd;o()G{o@(GIV{DOL0MG|P zZat5SWAK&MQvNI0*7hR^JoCBea>4}X@;0i&ilY*N(0F-`aAi>Pf>>RRy)R_omcjuF zyA#cJ?oVtX20Rr$HPc>!T484mg~mhTNx;E4qJ;qY2&?7dj+nQNA$RN-s)l67!9bsA zWgVsor&W-p5SC-8aCRvOOSs1?7@#mH(IrQ#*(h6LD=F%-_L98S(r7g`>`wkE6;s9o)r#P-_e*^)z3KVlJ||3r@f8;Kya-$ z5{u+M#huF|$rIwn%h|{84_3noEkkL857OSpWzYgZNAS*@vb=KFg%)EC8J7doAv|Kn zrupKY`_8qRGlPOnwhmvX$aW-Wwm2M6r45oWk3NvIwP?aE{T=n+6#B|ZEMGUAUSRd!D>RnE2vj}=|4UQTJC#?s9f+4D` z2dH8_{jeqP9{idRjx9aAApV0q_z%L{Fx&9m9#sG>!`nJbLF4Wh3mYB{FSXNB9P){F zCJM(INn1=B9`ez+&g_Orypx`L$)T@1F6%4k&~?}=BtATxl%rS^2~rNqB|N>b1@GI@ zH8o}{ip*IOW%a*(JGve|2^|y43^w@5nWA2X`5)}c7t=B;gHeZVon-R50H=X7H*du4 zmEY?rmX=|U5p(lFx6VcoJ)d^HY(PojAf`n@S$b5y5g9S!srhu6pJnUss_n~}(9uf~ zWTLLx7afD4SX!1yBY4(C#NwF}5sSOu9!LihooS;1$Zl5f5M$Vjhc;rG$ZmcbUbGrP z$<0B}P?(pCEwv@lyiBU1B>$vx%(PU>A)z!kET6|A>kZHy!M$+;r4yb!Y-c^d3ka_F z-D@If$I;_eM|OS2m0t!T_a&%24@S4%!Vh~206mqfRK!kEaf&E7u)Iae#$00Z##DFH ziES8Gu*)0A*5HSv($I{>!Hr9@ETLY)LmCn4l#O_iO|r`tv0ZN1%Ty)MDv zfOnea27I0FX{BKWirYdVi7^9J9*uRVLXXPN?lcc|2}{lO@!hB|5b}j%=9@F+t3jfy z(D7Z@hHoP_OlYa`l!Efr5gkJpZb@_xkQL*_HG&$62MIzc1yQG8fZ&ZLGQ6w=TVZ;F_&~*(>?H?g$NSW*BAC>_sQ>*2ca90XeeIAHCAlk(B75TkKA+ikm2*LIPJU_ zmi%&GhwfWP=L*CcDPET& z>RzgMz>qb2jxsbQ#K5F@0bD$TXF6fOma_rL!MqfWf?x}1Ni>B9g<{s#w?0qgI)lh(Z z$5;{ym=Wyd*nTSiR;9Cl>osTsg~Qq%ve2NRw5D2@oJx15kB*XM&aY^u`_Z`B+NhPA z_7{n9f+;@8&M)|vpxLS)1h5YR1&g_({X$JYs-hFj{#0~~>{QY!eRqMX=g zf-u*z($+k@DI9VppTri$#HTxoot}(ChGC1&`D|4zEXy@BRh`MkmQ9D1M{X`TYHjor zzDFJSD1HkP57eNe)FbjgFIj0MSGmZXs2u$cy%u6tX@XM2EZwx{KgkT?c?0kC%(_ zlLp<Oto(O^nM4QxSRBSS`~i#a)3n$&V!PzeCMvF74W6FqLw*Qc{DhtI_O8YAaf4oRzt>-z7aSH0#)hpxTYM{!Q{6Y7jM!_ zjn}Qh8G0E2ZCCZ-Xm%D|VYw=Wm#mgjGKz(vN9x1TVsZ1(7F46d(fojuYHiY(XUTt6 z<|_zROqA4M8K4}NdE>(n>3|d37aHC`6BbV}f8P4*H|PxWOWz0EG}^?un}q z)SP8tZgCFhEaLX7Azne&Si-P>FpSZ!5sZ^JQ?RA%cA}iR8L9JrfF%fu$Xn(FO{R4s za`2l&MS6Dex>^Z6w=!lZEeJIgXGu=4@Y2ddg}g*w&>x|}$5qiW$L97;*p_GIO+&}y z+Vr&U*(}h}L;YMBo8btOl?2&zqfyc@)JH2+)s)(+U)-w3z$jHaKE)4V#kq@UbgZI= zD#dVYT<4w1EOdXu!cnWS=CV#h@S5sF3dJ)uOG#YvxNuxphDFqKxlt;y4E2kF+%7<% zte`4oSH(mU?`&ke)V~yOrPI`&_p4iKA zelfZWZDsX2R2d_K3R;E}TlCIm)s}(S0en3?bPjbX{NoM;)w&;pMKk5UN<-9C{K!1V z(1_Dl+HxFoe#k=1%3)g10}Dpx4jV*^3cIh1C0TY9km*7DImnFLg?&|45YE5&q3|t= zpRpZ$5j=Frg1e$b1w+!sVxx5QlgU9FDolDNLQ7RV>doc$`)QbimxFrI7uUZbWnh(c{6LGaSk5MSy1zh&jqa zC1mqp25{gjos)HXCy5Nh&yo&dyo#R$@`W=n%igu5V#iHu-V6$+Tnz?y$Z-?lB);I}Q6V7vOpXk>2e51_I0ePsIE@ z>?8VJ$`R!1Q8Y@!tJrJ+VU#h}LM3H* zwNR32A@o7yGZ9uG&lk*Ag&qxY z1d*{^Rf6jD6e4jTVdx0n=_|`Uv3p%hHU^)d3lXiG3X$Zrqq!E~`_zXg%|bR89vcvL zSf1y&5^tn&nx&2=lS))e(_(NJ!9jvfd%!nTjQnZQ9=4yFzsH9z{d@r?ZG^Phgr zAJvKQ*;kI@`0X1%S+b$1DdAhca|p-(R&{Z=UnW0C_^S67as2N`_Sk&LgewW(w%-vJ z{%ZZrf%jsT2-r|P?gNhh>9t4PJ_8-;aLfFj zagJ}b=J^YU-GhQa(z~=z3j3d4_h#Z@S|Rs&hc&LK9Kv@ z4Xpi!cd|KtpARy=&tHVfvZkH1p&iG!?bY|~^X|weeDD^l|A)Ms-~HUxPZECUV;AxA z?Hj)ObW7$6!tb~56&!!~oqf72xfQpGA;`Dmi5%Z?---MFc^8|PVfB42{72Vry>Me^ zD&O<_m6AW;e|s9-=yazj?X!KRj-4)c4g&1Udi!Ywl%z7R|qk! z@U%T9pX0l(Ir;IYOWG0s5dQ-lf6D34xBqZ%E5cXY*4@Hyc;ncaJ}h`xKJS+k zEc{JN_E@wWco96!PrJs#|G41JDSx6R*tW18~dz$02_x3FM5IFtN%6p{onQax6fY4@%0;@ zTUEa=@J)DzW_-`_4ZrMJS~6o8;U`?&ljA2H+ho$cKMyAS^jG%e_^ICv`)E^-PY6Hw z)7vh|avJ{IKnWZ(Xnt$6vB)OvV#`U^s!MwV8Y;$6pz1 z-TSQpcM*QH&l>-$&t3fM3rD|8_}-JA=H+Mgy7e2 z0A7Ax*Dts2yFHWevFf=N{*FgKeQxqzgzq%}501ZM*=^rFRq;3B$JKGUaQ33=3)b|X z#MW=WtXy7x=?SZbp3`v?l^^n#wN95_Uo`ml%r6Mv_2Ex=`3Fw^sA=@qHiY*tw)p=8 z7alX?j&Im|qw7!Ox z?s@$QANlnRj(>91gdd)Gas%P_8rhQLpXocI&6ZYd-cMRGmgCpldgai?C)H8;vR4k` z_!p+HK5>4hdk8=LJ&UitbVAw4b(fDJyzikedHFYc%pSjC!?A>)R$-0*Tb)-O@%r0r z+$NV@&&$92>AM}SxQw-b(5DuEcz^$W&iSA|M(rG%c{DG->B5gDo_i_d=Vh;lIsVhv z`n~nd4QTzs<@P;Z;`q(8kC?O9eTNf%$P3SN{Fg&#zgd3b6NInK*}(DN7PMbHdO8Gg z!=oQMiQ~7_ZTPcLz;8MXiIy&GsH^GrwPV_3B?3zYYD|gSV4^i?74xufL)8wMEBr ze81OjEO~San9}eRP2zH4RR49?{dC{fb%a0U*D1Vw!7pb`IpAZaAD*%N2#z1PC2&D- z8{@;%pW*UiRN*T>_nhC3@r`q0eBF&IS>LxwtQVvI?pJ@r+Zk2#vxxN{OGcw4YOXknDA9TuJ4WVFFa<$EwQD9 zKecu?FF)pAHy-uj`l|`Q*C;NRM^$cKJ!p@z*9hO?bBmrM+m{VKcAqB+KlSYXyq)-? zKmWC&DO*P!dRXn(OAyXE=E09KeZKxJt|yPW==hiS+2cp1kBxcfM_&G-Sx@~sSf4@dOnaZp*-@7d znQ>?Jn~V<}e>&$Uqpmu;-_u7uyp75a8*TM-<}<(UKjE8l!jBzm(a+4EN8bL-2DXku zXEo>Vy>4{7OUr5udb{Il3qN7~b;aB7rgmy)a{Xk~_2)OKf9rKNk7pH+;N|CJt~%i4 zzgAQEgJ)Um>y|ebuIcv%v)88Qy~WGle(LD`zWAKUqXFM=`9A8-l5O|g|2C5^=lxa0 z%P;6Pq{%BEGWkA2dz9lBZ|+-Fap@d-Z;Kmm=lG@3Cx7*S&G^#v>$%=IYT2abZEtNq zk;+%kna9hoth&2!^)JjG32%Rn<5$hk-lHVI^xM`I*0`;D@yrwczHlM6b3&a}e)TDL z%`O-)mGI|G(|9|NZ*TQe{`Wr--dA%A$3Jm){<@4YY~AfS)*8>JdY|~=$m^C-`A(0` z;^m)Ow&;ql&UlCL;eGDs_~-gRzi`BUXA}O&tGK>B>iK6!`cIBEBm606Sakm4l?yi? zR@#d2hiu=Qx3exUo;$hVe8T4kdRzDrZR)3vV0?AIe2d=RoVM_YmCb*n@>90F$jiSK zZgKJ(`K5$!{X%Dse_K2L)${LUa%VtGt}l&xyZY&AzcfFAl`pmU?K`($e(E20v?P4* za~|OBy!*)Lxo?&oNcge(xg7uAFQrSi7Jg3n`tt8M{{2tyegBd3ZX^7@Pi*1%O=oTE zyyuFK2tUGa@t;pO=B=$7z{c&s+4Fh%&C?IP_0JfilXiU{w(#>?zdb*CCAD+r_fJ~* zH-}6)qU2J-`@USx@mou#owjXzFT%HbA>YD(+3wcBm)i+H;XgAt{>RD%H$VJ+2g2vK zvF7*3cUoQc%o(`Z2m3MCaXWO>FMY3EIc(^?gx^1C@$+A<>ep(oF0B8ZPT=~_sNa{a zDS7R)D3$L%{v`h1KhONn50|~c_&}dKtabGFvY5VY|NW`_DF^RwmM_yD?RRPaeI^mU z;fBXJUcdE(_s(VR8LfEcJsjVpps?NIJwK%KM|VAe^4doA4jVF9o!F{}) zuJhVm^KFw;3GaXTDULs-O^tuq%%=%|_Jpk*-(&U?bP30wG3$U8AD_z0SD1>pQnsQ9C``yl&ykdfzr>5|c-TYu~l-HLr9W z@x>KX{=B{K;`rV-w+i2PZ!O_Rwp_#Ud7}=y=bbxS6W-s&>Sz9OfjJcwtUt%qU&hP# z@3``m=yb*(DqF7L_yLDsIe+C7CsR8owryeIe;aV`8~Yti_~4B>96#v9E|aeqa~yf%B&H=<2n=ml;1f2DGO}B z>(s-KVeO1K>~vl}v|xEfaA+}=Kj!ThIKF!BS%(zf)SvK^>$n^&i%vW9$t|}ZN%+z0 z{^I51Bc~iyS2CLLr~YV-+k}nl#$I{ncZ6>q;On|=yy=*EgrB~N^S!bu?{6p|Cbd6Y#~4TR%x=7$8@HU%(0;}P z)K2}~TpuW#``K4#ba?7Z!nf^dt>1-NcQo}4zku-jb>nidZ0Vr+g*{ikPx$elT*2GF zyY<8mT82I$e7{!KeBIM({?QNViwPfi{3l-i-tce!A1F{W<>S2YY|8=a|z8Km4`z9RKc#n_IR2_B2-h_Q4$getq%mPAwQeIr8W8 zIsWr)OL7m~{0x=9pxmN|&wpw*@A^ZS9N$+T!pnbAHbZ~s2d1x{9{YgfH(&MUhsRC- z54BVFg*9$pK6};UbyH6y{OQg21MR z`st5^55L0o-mgq z7QSiM2d->;HRHEgr*gV2Z#w*p6Mi^q3zg5htCqL3*C}Uyz3RO)2=80R{eI=`sz=|| zcIu;qZ+0N}caN=~PV@FTl{`0oYggeZ+!g-!l1i?%y4FI|KgAyRxv!6V(2s>W&M!q+{`>AAf8wmJWqeFs}d7nE{4tGs;kem_h*ejb(Y)QPW)@{0KBGl$$f zk?<|P<@8qWAG80B&%HQ{@FUuCx+)JG|4FMCdOSk-3;*>7?@!ewKM!bmETh|^d#(Ac zTGl<@wN)0CZ=-QPTlx8G=WK3%E&Hy$<_+TQRJVS2_^Dq%$J#IYf#bvL59$A};7Gy; zg6%jya^qP;g1<0*X>c>n-^!!Uw}0om@`I`TfXaGazF}Cmm!I9|J%%6hwuLWy?SlH* ze-XaT^w}Ig<-N@d-=5Wu@T1P*e5QQ*6E}|k?ckFLf7a1lPcENv#FuTJe)?j z<^;lzKHz#@{;t@alYdz?h44rBxR&D=U3Sm4lY6msI&Kk{*X2teI=jhZ!MCXV)Gw_0 zz2}XFreAJcNBBz1PhP&fdBMPM=3Y(sqrQETw}1c8*S6#w$n?4+KjeO`@&^w%qQiCH zG*J12w^{3MWryqsZocws!XNz$mxJXifB59yuRCudeDS0*-u}w%Gq%04{7J%(*;>x= z5C63FgMuMl34g%joUfLz9(iBeoBn3_gW62y<)1t{@72E#U~=U6?cBa7f9j0W^KbZy zt#|FWTX^}kC!PDuAy4E}`<*vfd~EHuhvsh`$og4%%W7W!rQ1*4lHL0&Du4d!r5wNh z#FBw~=5{9hc@vgf_~rY&yXX-nH%q?a`fB-WrMWZOhmNE2IavdF`PVCEPuslRPxy*C zT(2m9d-AmRCv|81v(5RaZpGB!mRC~wc2AAx z_$}JiLx#M<=)C`st2ln^y9eC%;1%am`F@MJT~Pl0-A`6D>B{)kzC9aw`R_Mha!tXx zw^8|u$GH7fzO7yV>h#LBd~h}c8|dB z5!gKfyGLO62<#q#-6ODj1a^~{Qc+~~&5k$h^*?MfLO zoKOHq?tNi@&}fYRMS1Ji!hbQ8NpTh$b9Q2?S4G-Fxv-H}lGCBAEObY4R#jHoma`Dg zLQ}et8u+`0a$MvL(9V+ZOZ0I>s{*-@X9g7KAxA6|CA<>+_Gz#=LB_J>BF6 z+mGzZQTZj4c(c7&c1K)Vx&%6_9}Ca{VKw&0ElEjIU}{?r8!W}K&)02uzDx@mf19DbDDG_Af7)V}1bg(%T62E|x5z2r;EG53~B6_PSbMT51F z0*7VT9!CGp^;K76zwHmHkSQz;6=8T4IfA8OYZ&^JU}<2`CeFf4WnwH_cK^P)BfE9# zfl>pqZuxz2t|(`SH4cI(yamxL(<8g2Z?V|ytvC}HxzYnc%&2b21X~C5 z19`=LtbEf@jXiX&aUT2|4XZOG!~hCsjKx7gffP=`0_@gMfC2Iw*30}8eSU5%!ai{?af#4Fw0IOIMtdAEANys;9WOkgD zklLJ;#|jIe&Px4vb4HlT&~iR(G?>_&@FHsrAR`jAl8B~jAw`# zF*Ly+be*`-@>Rs)pykV|bj)#2tuh&Iw5c=|@ORTxfNykQxnl3wn6QLNH^6@|5cO)M zOyx8>q%K}thp8BM4Ux`8w#Au?f=C0M@M9FW-Nyoo^k=bv;uhdoAm>J#0Z$ahHdy3h z8s6<86)ZV1hC!XP5R{e<40v9sG8l`O)&_v>hAWc?9%_SOPyx;x?m!#SXdXWVF8qmx z0$fDmOYk8c??OM7lUasZ2^A}ddl0Ay80DZV4*F?wW7Ks+KgD=_zYkV5U&mc)>Y1?py&@5h?kfltkJ^UacltDgPlB=&bm`U#%q5Mkn243NWW$ zxF0r?iAF)=WYBlJnV@3 zNrjD}RH!d#7^9F#Zv=pJ3HmjnePS@g+Gu1vXc5tDU#y{~CK!)~{MmT}I)e3A3z|#} z8_p8VA!b=~S=xHbe| zlaaase$QY()=!R_>L*cI{((c1Yvrlzp1Y~GcjoAbaDNG6G zhS$OIpo6lZ=g3!JEPy1UDeex61-i;vf`|=AYt%Z3{N2DT6sonne2u@0_+GW=+RnCU z#7d2<_H4gd_!*oqBN8{E^(E9NxiKWU-F;2{W0Id_4YGRcG%NG9pxAAU71BTTvpT&N?y%-EW> z;`8Xn&&Qy@Xq!Fgee5$F=Q9m5bx_2mVh*~k;gtjWLV#NlXvsP9Lc35Y?vp50lwlv7 zliF$rV!lL9u8h!=)dr`nLM(+tv3U02g5nZEEP0Zc*gbfO!NdMrM9flLCQAYCKp+Ra z3(7T@$uM8Il51lgFC0vJl`O|D<9-3{+IV4iP{+xKERrZrGec47(7K+5m&I+RKrCLDC@WyB{##gb1CkWld-(`X%N~A*ZY$P)q9#oD-ey7s zM`k+&5_PWDS3Dl6v8}K+%(`(=6)s;Q@z5_Csp(&mKR8$kj_>ioA>p9h>QBY@&B>+9Pm*UPrpk-S5QzapnxC(Y9OJbA|VMRNRxnI0lXxa zaB#Ux?k*vr2ndR(*suYLRHa!Fq*;Jq7aIz8QBkpC!>-@V?7MyMZuh-=@9u(pe|^8- zXqemGw{Lf5c6N4lCiGSE@{!-5WvP^x7j?qW%4%vf)G4f?{@^GN_IX32Y;}HF5-ynE zm{xvy?!bsah{%d5pG9#X;KQI>R=Y3*pegusqD0&oz)NWkOO7NxfQSFjC> zh7_ZOs^C^)bciHxJy6))=!YKAr}&SZ{=@;;2=EYsE%gT~h$(UPbZehq4N~Ij8|5B) z_{3A1gs$<7>f z;YH#rO{^=~nPPG3VSd1!+BYv(=%InCS1GjwFA>gO$j}FN&{Fj9as>=t?s68SW@m`Q zBc^(!z6K$4E+jI9ef)6vYdHKRZstjTgej0z)p+;Mj>^Jnn2e)jDxzDNO{Nm4@CZ>@ zlj{RFI648eLy&8C;sT%T4V3#`fkAFB*xPc8h_B#3DRLn!)@K!;A$}0l(FmChX8J-{ z;(cDH2NwGv81LCXGrV43klf%lAR$I;hO43({^IfyNc>5hAFY<^yyPm>-o`%G(G}%j zY=+Y8Ol(8qQ)WVf5u%56f*DGGgnxX6U?lj_cg|!rl2nT2@B>Nxie~NHG5(e4 zSDb+r0AQ?C?zXC=hm>xpL(k!|e37wkF1+$81RIJW_R_Y_=P=Vsu|d`BbqkDPQVRV0 z4+O)z+A^bSc4q$}dBejN#9DS&xME=FwDjY0wADjIexdv$??H z>%(6zS|Vs6@%sXJv#-zzj@rYtzl9DMdN3FdAWX&)vKA!K_4ZlNArxyzDS9r*`D9I9%PQ{Qp@ z@u?M`T}O8mj9f)efYApo;?Z-sWF@NTWR!gz{{Oh~t^j0t_-;3322C=SuR@(w+Bs^3 z%Sl90=!=OQjwl@J2~>I>Wh{8pC0&U?cd)D~p4o*F>wX;rP1gloPsP%LNMcHs)fZAb z5!;Te^sZggdOmGWwqk$6+Zjd8i2XN{4)8(Malf}qmmZ>6H+ic#20P>JLv|K)0!ZOV zk@VzEIUPDwiC}w9ppxQR1YZ6*6 z&;x~N`myd)r;s@XT?W=7#A!J`+;SR2$~cmt;}}x-cVk##d0 z)jmfsk``s~qg=A(7Y54wccL!sbp<`{{8TNpMZj-CQZca>nCL8(%P&dObfZ`pEzUMz&mRI4lqE_|CWAP(JSkNv1TJo5(o1+ZLs1&P{YNO##kLDup8V|tgU=y+ zPCietvTf9$t|^n+Z6f@%UwML+ZI|WExi+n1eZrqPW;kzW?2X^N&}cl^RpFWP`S~1Q zylUL5(+)jG_~ZMha=d$V$#qX(iZ@_D8hyeOy5{t$?-4%dDV_js+l?i)o_S&!9lt0iwb;eW-+2Fb zoqo9gXDUB!`^g+X@0eD9=j_Gv1>la}JW}X2frLNd>g##= zHM^(I`ePRc@PzSctj*U0bH4bZ!(LQd6lM4~OL_SRuPZ)q#Uqape#*-A9KSC8qsA9Z zVstg=>GL`M(P#c1Jj;Qn6p9k)k)z?CAHMpBn_nQj^9G)na@%7I=N|X?KHw>MPTl`A zFTZ)$`kPk&)|~L;4;FL$QvAd_)$Gvyw zjNbhTf96(gUS67$`pl#kSU>aH^90k|cC}00cf;L3QTd)9-ND;=WqGs9hfcqZ@Dpwv z$??0V-L$>Wx0e!LahGxY8_Rsh7OmJt_{*BD)bJ0zp8Up?n+ac4crnMnwc?hmGPbNG zeA}F#IR2eSZcAFd_*}vtbD1{&?>@bG?(Ewb{g?a||JY*QWzV$4d)bO|PW6i%|8q0{x4(Nj65gvD|KEq_PfK6O#%)qY z_fYxmj=zo_v*BgNFPFW?6P0eSb?!r_zSM%rw{}^}c=h^hS-WgpN9i>? zi{snXz3cd2)kJBhrSZgD+dGzAS6P11Vrpmbd-Zwwj)AvxfBv{7;U})}YWR2OZ$0bn zCkQ|2uUj}iy;x~C^SCs^=Pu+4(YAN%_47r$wq8j1qjS#X<-6BfG2p#CbhUzuneb!az~(aEu&AItIQd;l`J&G%IPyqQmNeD7}i#~gqAFN8mKLA8dT@ys3P`q+5- zcW^nj{rryy?Rx88IK_dd>NcKmYI}zB1EpDmC4}!YfG7Ujo^i+7Pwk&DmGHy9=85*U zXZ_fA*2rg>Jek;qCwkl7ulWlPI8X6V`LpW`<^9Qh{+37g&HR<{{n|du@p&)*;`yf0 zDTKdxbwI^mKfL|+d-9ITqVmW1&*b<~&$s@5^>5!0zWnsJIsTHP zK5gvk{TAT|f2VN#*x`jg9(oC_WQx+~Z?}dYk@Wqpbnxnhr)2JZ9ABKfzJITka|k~y zsLhvmz}*Yp{)5qBpDsM{*>>NJ(|+FYSQ9EgUH9J7`tujPb`$D$igMhyJfYt9vUzPk zUHawGgrB+VbN=4)$;~R2x=hb$yjY{F^4AA^|Moj<99ow=$;;0u+o()G;{$4E#=9DQ zUaw5v`_8^Ygui?iPw=<>h8wFdTEA)>;ivrZI&WuQi%++q&Hqw)2s6J|^}r*t0SyZ=@oBO_E59p{+v1yRT2MRf zF5&C%_E+0o@y^807@szD-Ok&2^S=8QKc4(kG$6h%5*Evj&N^8p#?QMVS z<2tv`om)la9lKuU<=^SB{gPF0F?rZ_%xsSTs-FhZvXVjwm03?@fN~QeqN*h&ra%gbHnjW{-kVP%-cEmeelK4nx97HonD@pZ~LJp z+w!ZjIuQQyH+%E)hwf|CZpBi@zbzl)dfoP4vbNPJ+{x(Ka{|{-w*PTa;qSd#FnY_q z`^iu{J5uVVEbDYf9<|?g313Hc)E;xyd0QK??;6yO%c~tnr96G=o|&If`3Vi%@^%`f zuDEOYUC$D}|Ji?X{Be{2zH|TQT?yZ))=3=S^qtDbXT8VdgZCLOKX)|y>gBVBE?i9I z%htWh%QrvpR_ZtBdI>+e9#4R{_Ux zu^iw2p{B>YUPe1grTlL$Z+CP!XUVkWD=wpUCY;)mmp`-9gBzdN^#|+c(Cr-G@r27C z+&%RS!jC%Z0gg}4`}^{WNj(XlcFt&y@7(w6eP1^Fl<<@GYvb1C7|+@#4s9m<@P{~` z?&wzQUGER;jv{=+bZz|4xuVgQ`(Ir{_^!*faX9zw91LfUOJl7rnsCk9cSL zTt}}5sJvsu29Cezl)^Q~4p~e1f{LjeKkAV#4|J+z@9lM73y!~J$U7t7ym~Y%|KmE2 zAA8Q;;-&SN-j$lIjsNAJI+kVSj%DTVaPsn(|2ZeM(J72hdj39`^9yc@MNn$_fxZyN^cC zQ_pBJ;H@9o#Jgtlb$Q41*MGY3t7N9PPydmxgF9w?;#>9AY3EQowWsm@?2aqD&wi%U z^`(R#`6t&ucU*b#_$%_$pC^3F7c{z>eZz4jo~w={{DrUab!5jiNf)e0Yq^~8S$#D5 zdEHZg+;)SXtrx8u=JM~lVZvX(ZXtg|FibV(`ooSp4{ZKK}`RDE7?aaUZ=;MxRyod1KdCNI|!Cf8py*X+&;T!c?#PN$qobu``)0uo|)N71} ze{cO+56xu!K4DrXj$fYLx|{E5CMO47!u60HtA3kya@I@3sr{pWe~Xu2^?SEg?Vq@j z@E7NC{dvdQ?x(p&RWW^U%CpDw^6Q3ww7KhPyQqB0Os>c7SXVu*$^L=w5dOqJ%Xs<6 z`n*5m#zCJGzQ?E89RK*or3b(3#`;rmP#d==Px>V2`Cu`XzjWRipn8F6n&fRd@;vkL!D_ z{~s>c`rG>}&nEowzct|Pe{{jJ+x{vTNce(Jp6B?Fr|+wr-+de5J3a9}$A6aI<9RFwgQGYygi0!}XcApi(S35EWpZ)&vte=@puHyLQ+eb~wsbu(b8}j{rb@HB{ z?!Gs89kpLJWdSc=_v6-EmyG>{@P+F*zf{-#G4R{tqkbcNU~mC1U$0iH_ugE<p0u+ z@+VJzeC?Y9w-SE*X1;D#H!u3`+Uw8!j_|3P9H?&o;P|#1R(wSG@+De3r}fJYHXn2) z;b-i9kGFsNnFlIY3{4_@&-vVrSKWT_)Q$7XHV{5#d8qi`)$QMFlJss5)*t72H-&zv z?l9ocPa7Ncq4JJKk7)R7n>C$(Oc%npK6nAgpH=UkW!^*g5J7w*;{HgAE``dM$HfihWZ@+6solP%R`Kg^+?YLa6?t1;7#W(LGv{E^tKQG_y+%0dd@w0Vy%qiM; zbsOh+-hllg>=Z(Mhfj*Zr ze(zLu9LM+G@m>ChQ<&VSI-jo#)#sPI|IPKIncnW6#n6Io zTEg)IS}WfSxiE+DB@MLi8ua$&XD)cZknkOD;Cg0t-k;Zh@YK6Zzv^@dY*Xy19(CS@ z-+n!w(L=lHe2%}YL;j#czwV`W+}CO2F#5UfxxL?Da>I4Y3SPco;zfDQA7S%5)}g)E zd-K$%XOvwC*MK%#?NuNR~@{4{f2p~hZFvo2Q@yL-1(zherZ;Z z@SO*p%-fl=YFdZMRZM@b)$}@!zv7}XJ5~%lk;)Ib^E-~8-m!7dF0~#b{Ar7}bNq}+ zx2=ERwf6{LaKnilfAz(^_g79_O?Yqi2OK|lMz8rx?%z%L-q&*ZUwy;%ANO>Z^-cSpPhR*Plm9b&e8Stg<;2$?{Cy##hm$@X%kj6qx$e*B>Sa;;U2prD<8Qxm zL*M)7k0X5le6F8Y&p)*MjWw4uJ;CSD=x4!~N1uFP1smrg;3-q!l5c5M9$ChgVmC683JOMipfAAZM1 zj^A_H?)p@cPbIyF{+%uTnrfqvo4!<+v_O>HVWp<%cuHkxk^}83}vvO`J zYrp(fKX2!~l-=v6f5ztJw4GY{5ARvJbH3{qdT+Pky?FV3^~R>SKVfpXU%9r9d{pc1 zC*QieGnF6zdlE1I$s_ZBytvMVgm+!5(Zi>ipFKBm-x$JAJ+OtB|7=_TDVvrLCVcyu zH*oxcCFNr`Pht3xyEHodV%fozA+FX`zVhHau{MtLwX$OttS5Z; zb+?4d@2vGg?Ke3G3Ip?qX9Dl-~Q>R?onaP1xtA=s>iJPxHf7%JfRK9s* zzP|4~DdX*K$Jb_ZGQ~5Omp|Fpw`ch-rcYK~tBp^yjn2Dosnea>>D*K6e~VuZJ(vAB zJAdic^8jzB)uT;zJ~*}|l|TQ1*&N^Y;T!#5PGbA+6MORg$jdq!|Bb+ZBkB%B9S@uLwuLJ#@LqiA-u6iNV+exPOMYzF`ng@6 zLQII1;plOxIC3P@QRmNrVkQZP<`@lm_wEx9p5*&7Y+ zR2sb7W>mg1qx1}Z8~`i#Djkh*?wt&s6dE;C~XF0kK_Z^4Hl3cSD{=4tKvBi!|4@3^5LrN zN>@R75EJ954f6k8gv9zC03Kc)Fc6MqWLY){*a3m%Y>C=QWnqbDOe1jQdYmqAg>X$5 z^EMcC)w29m4&j$S3V?2bYwgm8N#aEr70XhPs^#GACW#j#8-vpLV5E*DI9Ex!48fMD z9Tt(;qpqzO!2Za@9^##Gim+xBltR>TsJL;uDT6DwH4;VCpmUXw_GG#<_zD$#SeqK&P=?xOGF>j(yNq6`Ze zCAKxr>Q`oz`lGCi(TloD#TUFhog^Vv+0 zkf=*K5_klw!#j@<>FB71 ztk@5rH-cO`LY`?S65}ReYAjw>b8>3mf3!qZia{)H@DgbT`pEFK5$JPsjjiGV6 zGFdfa-A619oifRvDVEo558uQu8w8MzU__i<;YWIGiB0ce+33GjZeHL6&O9SE=Vyshz46AQRYT$zwszzJcOsxqCP zf^v@&QcmM!?6%)rUuVD-eG;JU{V0cu0LCB~$)RrWqvDYN3i=`ZXi-2-z}Jljz;!v_ z2A4y0T8koq3lVq&K0bUUdhO%()+Bc&=Pho%CWTK)vMU=*85jCslDksu1C+-Hb63*d zd^!AoxxH|;Qhp4meCW7OplfXps$&FrZ78{XbS8ts_&f}qPB{tSSOi-;Yv^;|OnAND zUEvJ6Al5Fncl0uOUvbBn=PE0Ac?(>k@}zx^G=uX7p-mHQ3%Zq+g9ewSLM^^`g{Wt) zVwd0IxUQBr1W8G=F8aEEcRX41^ka&V#5HN_0C(n)YvVD1k zL!Xx3*IAqqge=|pE$CUemm(Oq0nj1sU^qJ4skzT84chT$%P z7uk{DKx_48=T`+?myQl!c0e|}{6$V!mvE8b#3@twU8%alhM&J&KK)41+1>(QAzCS; z^P9muGdmLRWv;i#w@kV~@*+qy(Pu;ZaE&_c8FL)vd4GY!bIPeG*7^gWck=o2{b{(G zm6>Lf&5{oIfW+h6L35x86EDwUwro`FU3ADQJk055RZTtcx^Z=sMJ2#|&F z7``IPPJK98gFxvEuyZ<4QJ`wrb0Id08etiNd{+{nv#%J$ycKr^dhq z2xpi)m*xwj?k1LKg~NC5p*{N@T7iH|^^}2j;6)By8cmZIK}mcTLmwT`M+fxLF;6@> zGN&szd(Cv0j&u20w^KwOkEC)CVj6uL&|+VAaV}Gj19pfhRu)SUmoBx}&{@*2Tz*^9 z8W@fbj4GByh7BK>j6hWhSU~)=p7H@=Q{=!oie@g2@NrOcwYdtxu1+Rr))f7h%%#zc ziUH&rdMxhQhan+BI0y$QR*nL@`UD@ZHt-j|ww6d6>WGy%3j(P*gPaB8+M|{rah2sR zb_Ig{oCRPWsWKdXojvD*tbXZzL7Uf%IpSVQeSxzWv`S2%2l_qOP}~I>A%wU%t5say zVz(DI1n_y;^e23yy~Oi+s-lU391BPo{QSr|-#cu`B8Q2jQB_GiKT4_#0KG|4>}A{0 ze-+OCM0app21u2@=#Z$?Jp!me-1LSB5ss|_snFBD9$&!(CI>|UsunJF78b%18%P}r zf4B7DhTpI$b6mjdZybU;zU0sj!|$2&}$7%+wCW>9Kk4O_?sD zy&)ozxB900u&V(8jAS#xKuf3~XC4C|Ot5Sk9alRHynNJmS0dju1gMQ*&m1h{o2=|S zNZj-#>v?8#`*mAlfMbIj8k(6MVW7d zaV{ZA1*RCnhrEVgh2cv^AS5d9EwmN( zxgv9^FC;Z?K!I~Wfh))5frQ$IY>uAvV5w$H@NidUFuStARf=|NONQA*X)NKkgu%YN z@`7==+{3!hJ0vQt;|pA=WF`V3!lw|83L@c!&o|ATdh!@D(UVa|RKC@UI&C)_c5Nka z*6N9z|GR_@zFHYHZu8B5xDkY80aJ7M$KMxbY{~U_T*XcgsX%$|NiMCJ&;=YLooxn2 z3c78$H;#itcH4z@XV+0=Igmqap=Y>s^*|swPClIhlz?lu1i=ZxGmxMLj*I5`z zCyT-g=)Rq1J)F|Qe&sJBGfJ3EGMs#%Qz$1G)9^0}h{R(uQjuDSI3;>s?whISW}CJG zvFY&7(VapDHcAM{i8RD>5YrUHuoLld!i!!{mv4@mVCQ@w=#$lr{vBcS#s(J-QAHuA z_CBO;z-%yG16K`LcBaD`2{UjmMAI^GDpRtrI=)r z4ZS?#kR68NI2;%7hH{*TVDF3(s1?Kp->bv4w1N4<9cNxnMp`Bq0C4D&MG>ve6`OIr zUBQs|^%jB=UOZYXE%wpYNp*eY zSGhySo$+xhUQMVO`P;SIze)Z&&W3S39YHSbg82cMX{Db0*NC$fCd3MTK~X30%gGTzcn3D-kjn$Zy4H<-|q6u0)sLXfb*N8yt3{r6!c?&OQFM%C)xR zlrwp-kQAQ!dgidr>8KmYn-2txoWCZPin0MEhQ1@jyvU`p#)~0>kymUZ01A@4c%T3c z2S!_X7XBwf9MF!_1-0<(Y&0`?*?lPF=~&UHrix+{1m(fQzL6PF!8@??XC$y*flNv->TR~)rCp}NWO6tEyeu7vTGW$6~3@&2F<%GDf+`A(v!O&*&nD zyaE$^rjit!)LrDL5orgU`md69wO~;HL`ZS_IDd*fyG^peFGtWZEFEem z!@&NI@KXH7{?NFDWRHzup+#0Erc96JkSG!(eCi@2&H|W%U}?>cWW-$BPeOGiURIm~ zor$Wo`2+Z>!=$w_85{H;=@u+&CMF|UVGuOMNPMA)F|j-0TS9gxxmKn2!>$-KGck#u zhExLNL_t%Ig+J;cBuLi)2NvD&?f+9T*c4fRGr%JVmbCpy)+bhk+DcMPlH=0RajxA@ z;wSJMIdVNH=*QiRk}Urfv?K$~N223E)MjcdQk%gWIS#JRCcsNdT~L6={vR$Wq|aJ1 zYRQ?_AhwIKG%^)3F!ctpUE~cSt-wP@t(p)U+Ck(0XR+}F4ABMzOAIWC4NYaR7DGC+ zf!w0FMaK>l9V-CtMvx1K;3T>tRZH9i$$bNicUR)R4X%GnB#cp9i`Cd$OXiSBo`QPj z=8(t=X66vJEH+4_N$L-7wL7k<(VkX@`2ZW zEdD5BMYE$1u{0xjvolgz9jXQ2q`Z&Ie+{e^x;D~ zeqRZ?C1I3W99(=HmRzMF-bfIfIERF`qgBW|Ujyt%FybAO@CJe7fwM%~N2e}5R^uN% zmTepZRsIPgHs~)Yk#vWJk~d;P_y$Yt_B|3~4G3iIFwPDwZV;}9sLuU|$-F@VxgU&O zZv@K(m=`S1@8=eC5nwC_M=OAn5MmP;DXTOQ2nI{ zMUq=QS4Mye8zn z?#$K>uN`S}e-zB^P=xJdVU4B;rKm_tuGxd4|5oyn+zm*?O`?4$)iYN`S6cR5R3#J-jAop z$QenmymKe0aNi`Q7>WLNfEy5Oi}ILcxg!djKuE<)T^ut67I6gpRl z#e;={l*kTNv|E4hhVXDgN00=~#kpPsuna*)R=(2WAl-3Fk^bs0PWS6oPfblV(lCvh zvAolJ2>Uz;ARA$$75@+8V_9f|J;SioHvnEjSf}Yk!v3)zI{oV9D;`uZjU-8anUM)* zNj>>ZN`vCiFNgd_u0e%Rub|@F$TU3wIw8b;Myq3*!{$s93#Z|bCFTJ0JS2~s0r2M0 z94QT#mM}(1mQX&L^o#8A3B1SBPV9E<*+2l0iAG@-BNiBltlf8IP7fJdpMpO(BE&#@N#>Lv3%45Fcr{p9=rbUS6*53C05A+Y(&Ik! z4r73S$+B`j5?55BC;jX26a7T!n-9U#?nt+5QRzc*#Jt^^Qe(1JI~e_!$<~_TRDOPD zXEbBm`^U1r0VO6#0VGbH2kl*lU`tU!c8Ed8aF~mEY*alRy%VK~Jr!_}&+7~Nyt-t` z*h~FGk+!+*%V0guC($GgnF9N=GQUAJPnmvA*7l5&;)yw~Alp|>=xVydGdmm*3oRdM zx*GaB;qmQg5sc&orcY+^g?IFw=Q*y+*rrc~}sp z^hDG$WB7=o?3mX~uM;YS&NEm%O)h05?2rd+HIC^62EUdW*kdHc8E?V(S=wl#l&O(L zL_71d!$SXW7ZJPxj%S7aHd!%U$@1Dm<*+9YXNG&=$3S^0(s*#35kh-q+gxUY!6GB* z@Rx(74L;U%gCg(~8yyx_t|p|u?&!=8$^I`${b-vNPdX0%;oq!W2ye|r*lLZd0ztUt zUFgOjT*6%)`~rF|!bJwR=?@{;T>}(TbFe_PZPKFgfDLw{?yGU{@N^Un7&#OLIO>|~ z$NTTmMrH(#3@*KoBS_X3T&O%{@T1YeyT2$XtA>Wse9PJ)y(L}Jj=iPr`I=hVw6jq= za^nB((l!^S`zi#RlxkbL3jx<6mkV9MHRS^65hk9=|l> z^vg)om2QlX!V^IHjKU?Pk32zkQcGGLlD^Fm8s_r2DxBURnmO@kI}kQJ@DCcHSK*JS zk--M~yu}7bX=Vq{Vl}f%K9QxNW2XK_k>z#gXm7%3H3W~7h9FZL4o$$(Qd->S23oLN z_1qxt7Bxexy1QK*7XFyRW#_pH{H`Fx4#k+}>u|}H9fFsJ@*|I60jy&WNKF}GL(#V5 zKJ?GZQP2F@)+0O|IK_~Sh;dF=hfTkbN9fkRF>Z^vzMJTrK>n#=y-)*js}amc@OR^^ zBuKDRqcy0C z<^*(6y9J0cCUFg_o8$z3GYlejG42*M0#f^ECk;W|?4Z4!qSMFyH5yH*UlVr^wHB#| z2_T73JbtzxGTh&Axh6|99d|dhfoC^f;~sfkgN!mQC8mjck>F}UqGyKoMc9t1+IlP1curbj1bAQF|DYh+TQ+Q*y5A(2&TlV-=fAdeHEwrdj51WSZYTHs?% zFL{W)WWz&oNTNCv`TrRkee&sWFmMWj-E>qSywse(z|Q!kN6{U-FsVQp;Y%k#8sVWA zWag>%z(TO!VV)kp&3zHck?cyy(*tQ;)kJivv4iK8ioP9;Z)vflOo$mTX&fqhrjF_< zjDg)@4>P)0*=5OxBxJV1MQ534N`f3;d^yD;qPV6{%E%j>7WqYDwlVhgT|4zm&F~ca zAQaoUl3Y#%Ksd=_zD2DHT8PV_clv z0gbY=0IY}08s>_So7^gEEnJpRpU23=a9P%(2g{|BX`mIcN}DuO0SbLF4YU&3Ae6@k z1Fb|ouky!wUS+VZ`or#ZTX1uNK3X^0 z5ne(w1c&b~2#pgk)ZjHsL}>NWC<53fNld6KMjXh>q3wb?R=oR$-_73%HPq6;3SsYs zS0~?(qUMDcE6Qhk6V z1e@lWfKyY{IHhw|Q5Tb1hH}Y3j)_{a%AFw=%gf*|3v3odgoKs#6?pdyUsFiwL<6Z9 zz_Dw$Ec#ah*AbYlq}{RUrCclK-_O4W2HV)hSTbb4O!3hf~B-pn>1TO!Q=`h zH6Joo$nPnHdH{oEdifz#PRt677c8Sw5p#x?&_zw(xkaBq(3_Q&HZ#pjMP5J^bxF$w zX~cKGs8)i*Vufp^yi6r-d$V+s3Wr{`Xu_ZPtj8h6T@G4N+$6uElD`_f0xHnsuo?0~ ztyY0=ehMJ!tw#fbNHX(2megsJ7M(6_v4i>{cVWStFIWp}YrX4;b40`2K(Y+DO<)wJ}!&f<(<(C^MKhv<1u zzaNaNxeypaAvXwtGK8gT8~rM~+(DXs!d&R%C8Lj! zz(F@q4j_<`*@TQ}EgD)5CsS1td6R4@!9l$8hUqXSokTg98kvGwmv0h26rV%*k4^T+B2*P{$-h}Wa^1)({IJ&ML2JPsd_C<3B3LrPs%_OQX_9#4&^hW`RpE?HIOq8<{p|~P1h35kxbFX{kQB487Tt@ zY&^0{G;zo-4oSsfEWSNpWwWf2C1y*B;*bIt9}E9KcAG6TrK)e|xr@Cnf15&A5R`8m zx@1wiRaquLMFXg%vs$8dtCl3e%S^GVFNt`_7}03XAZGzIe1Ud?2YqqK)PHB#L7x6d zj_n{=-|$nQfm4wVqFj~J%Qn8eQ*FBov2ayR-!yhde^o9jb&|C$2I{m-gt#q8m&FZ9 z9CcdKvBi89A)PkKWSxnuWinZjMa{xS(3FW4!ox;H)3Ian`ifUMLLJ-D9N;*F>bRu= zxF{nR{BH?_Ryase;y0L*K#Iv8K}I%adju?RVUG~mtaJyX7D6dwmlLoKW>Ac}b@XE) zC0Qmhe;B={jH-F%{OwG7|WVzzG4jn%~v_xLiZ z!p5A&YI;fZ%l5$uToSFQBaxJe6K z+}J0Q4dEij|0o+q3C&H*qbyMf*V^P^kqqmZtXJY|kP%FlV6j4|S5Oh%XQG}bntDx@ zlv&^7)v(o_;_O9<8*Mn`Y;8=jHS$s)1>GA$nv6UcwXR^ec?#zz^7uHsFiyEml7cE& zi{eHnP$h=DQrPbQ-qPzh21ctcf<*r2mF9y3F@Cr~R;`kPaS|;r&mSnT!7UzVfj3>B zxs~Ea=LVc5&Pqw^q(jO&3+})90qARrzAdsy6k#@jkypd%;iaQ*)195skANK+o}I&S zJc^5_08IQS!YP%T4^-XLwxEj62)0-j`i>7pk476&J%sxTd?l&HK3}oNm0BF|c|+Fc zEV!_UF=jFfouyz7#fr&GBFlpBvddYLIsobo_f2qlmq!-BU-GKFL1!huz4K6H89Kl9 zg55hGGPR`A@aN_Y>CvrI+6XxQ#mP%v8d*p8;*ns{clqy%ETQYWS?ysiC%C}l*TG;k z#VO_vzA|zu&4=3_ST@P>wkNc`i6=A6ZO}0-FWGZ(Z|3vHIXjR2pWM+?Ub1;GK_>nz z23(5M8pFyW__KsJkB#d5S(K507=j>BC2)wR9OKr5!vrv2aTS!J$FVq)xGAY9cLqTg z!RIn0-&X;iLy#x9qRxdt{ZhV`wO zJFk#pV59*6sU%xp(c2-v@YG&bn9Om1Bq#F4t4)7c>e>v|#c-rShBx4YslB4zoi^u! z6g!M*pZ6oLnuK*mdUskY5mNQxI}PqmYh}Z=eHt5u-JMba;bxy(S9Gc2*ckJzpE8$LF z7%^biRb`J<_7(8&yAkBG6R4DL<6fG!NL~`^9(SqzS3>}Zu5W}D$%Yk5j+*7O*!9tB(N-$l!j!^89-wLfM zG+tqd0KvPFN zP(W2huq+e_ZD`RZrQm+G6hXdFsfS|@x%h*6@f?Cp#SSEjgH>bLk(Asb5`zGM#hlCQz^DTN-{a=7HgTfWkwdp z0W@(Zi7X!K4^+eZl~Imbdh!9x`T>xY~b4K06q-VAA~B^9zp5`EMXg_xOz@c#!f zCrS*drkNvL3|VrKH{ujC7kOEoHfc7v*Z9UQHXYhYOI_sEcO(DXk}XgH>yV4Qxy{~Z zX0!Jh+3ev50}E)p+Xu4QM`1#g)JjrRCX}uwQ1dW(>aZ2X$~6Fy!sr8SO8jU9WP@Vy z_3+R&0N7$WW+TX?Zz+%u9S<~+{c3nTK*oMq4KO4414bkyuK?_hL`K1o#-?>3Dp?0#3a{ z*b%%K9mH?8a$_Qr?V*}|F)zO{p<6ffHzrU^e*{5B&><6^QcHgr#k8+NUr^673<-ut zn>Hk|jX;4DgXdT=8!As)AbVyh{2wIyBi@)pWN+mj1`E?3?qd_$v6x+blhrd(ip1i` zUMB9%Vuetzpd#JF_!|D$k6^$)%z|G>q;j<2i`XOHP_KNC9QQE5Dg?m`o3{7;%7f+p zNH1*1Kh1#~py$ydXp*hac-9RfXqwb&lcuw3MVy(j_k@&vsna~~ifyVk(G+>3+@cmb z%cZL(=7GCV9dpCf%Uyar&hm2U!Bo%>)%5hPsaQt39lXQR8bE=&5~@%f`9?OBthK;( ztQH(o)mm%BSxPhGOADDkFBr|r3*ZP>_orNOOqZiO8@EnZA{d?NE;PuS=^{sWeIU~E z=f;3}{K7@VMGs>SSLzF0_3*n~%sME4W7-z;H)i@g9?13qp6TH@=^1~ zVeu1NwJ2U6Hg7tw%o8zKQHFLnWFydZ=4pp{`#84hb(;*Y*B7LO47&R25Jef?VXh(? z-3tAy)vCh2o|6KcEWk~kfN=OAxxgco;f?S(xdCBdRKxNhr>6+wjJOK1U4A9#LGy9R z@cW%rx^WP`LT9z6Ye*JpnBD!EANg|Z8isfh9K!L3+#$TzYa%Q1aUf37bvOVbxSnuB ziH5-A!c6BYBb&la1|*4qgmLakL0XJ@3hy{wL4o^F z%Od-u`xqle)lEWzjt=U$T3oxMTj{&XtdmP_esktl4XJj- zTyKSr2zS{mNED$DLL;HfSV`zy9W83L!Da%P$n3yRWKvS<<+uEJVQf@?%P*m7^pSr^ zglcpY*N)P|<=P=LAiyo~(y*&%WMwnIO%79Cg0HAHY z%0^v>oo{j&eG{Hi1wYJQ7k^|*2iRUN`ws8i;!ZFpv5 zSIjSym;Pgy$(7Hba~~ksOY<8ZC(`Tly3|0CNrvGcLn(PsrDjnetveG#2jlk;{t74J zRRFv#V0JBQ!%L0P8~L(-$$K4FnZ@q-fMa&CUdx-_AV zKYDwg>atT>Qenp(sMOG@K)zf;@D&qtqRl(jmM%UU(z!v>XeuwQWRx^oUPHH9MXZNZ zKC~!GuZf0Uk5pxw>9NwuD4G@n+=&o%&jE$3vTc$X+uD>A@YWUBQFCvXQZsKCpg;Ky zRb#?5p+8IJZ1i@ieE?t|LVQerLV~VfgC?J#mLR)bB98o_LkUm-644X*pm^^p#n}P{ zy^gaFFrJj!&LoYD7R`JlB*`A;^cMO`5)huZYq$6tNg#QqcS#6QB&HcShcZlEtBYe! znSdZ}L!2}KcjgRfAoR98utpU+{iy7O-Wvb(!Dq(Pb*6hINIpSd;{PBR$#^~pHY?DL zjTqZ4j2|uMovNiKD|lFFg3=DKH1d#}i#4sOFYpM zOq0Sn1vHbgP`2Y|(_m~wh~0jGUEdG0qS`#Hw0p{Rw)Hv-;3 zsgWWk?n*F9l&qOjG<3*+0KHJ(j&^n-FAhdT`44QrRdar!6d;0IbL`T!{oR2)&Pa%H zfqX(1FEoWGK~U4A;}GHyc1j&F{S0lO`@xdv@|Qvqzo0=TL7#hK>X6)#g4nW~uH|k) z&Qb@+ViypT_n0JEd`xIb6~LvK--oi6Xo(>;jV%5|M9E?|#W(XDLmQ%WGb2z{0@;ZC z?gGkXucjsv?Hx1{nDH@k3Q*7hU0|LAWfZ_r1i=iAh9BL*Hk6^qqJ;>{j>Z?f4Dbws zoJE1v;YX#m)CE>V21*Sw&+Fv{vxb0izrwndvf~%K8@~$!?583u(QM~MIaqxFKwkvI^&(Wqimh!3HhC++^$7Npq5>hQC-{)~m|GGR#}fi6Mp2W( z8dAStK6dVNfDaLj$bj75>WDKg^@I+BrAyXO5Y{ZW*oGn1)C_%m9i2Wf!oDeeRKr-I z*0$9|34xzY&MSnoXs!eebbBYb3WvifGuXAEjbt;0%2?BhdLV-R!w}?Aq9&l8fknf- z7_>Ft9%n;4mJC7Y#gP0iz;1;2>Ac}1MywJjbrqxzDRp`C@^X0gvOGX0bWwmkBX3+= zy6j7Wi1f(+%#tap2$;|-Y#@2gT^vaJ1gy^|%~+hOY}5{+SB zXTTLU=;GlIy_4;@`IqH-i+m_ffUozV@aX~231OLRp=QY-j70Hy*uc2}T@b9DjX_EF zI9BBTH5LBMz(&j+xq_-6gh2pt{h^M|NdcOTCv*bcYU>V-bVSg(0BC9q#e_B*oO4lx zf-OB6Z0X7S>>GAqZihPE{{Ak=E{OhDpn5<@lt%x0cl_f@#Tg$|Bp z;h*I&KHwM~=SIYETtkQPc{v$iaA(%2=k4<=`a-xeUH+gGG>s}POQR^6!qPML^?{xY z#REZ)EA-i-bWw#_roXB*=mUSh3OA&7ALc5Ca3p@GUp&ZB%NK`;i|y|C9*Yy*5@FdU z*#jLZg)ect0)}1Dwqcp>(s3@oO3tE{j~dK{BX-y@2PEr`+Ev{qG}KMCmoW9(k`5e_ zWcayS8_*kBZNv3Ee4rv(6ZsOD9Bqk?Y=H9+q?##o6x<=PbZvX?-WG(ba1^Su+L52L zP=Kqvs@+fUCd5r{L@Ejk8)4IPR5RNmb1uixfdL$V>jKyFW!o9Zu~9~2Sxfe-2i8Yv zPObdHK$$FOXI^R0(6VN<6M`;U(x*w!*L>P!OD(W~(NaP_Z7bnjixHx4ERt;b46lu} z<8rbX=$z#Cz$yeZTR6D9B%dhP%7*)Xn7cY>0JK1`d#V*IPena@_=qlPUAk%}C-`=y zxk<`u6tM1~yTY|h5L(>UlLtms7x*-bV#{1V6U}_QNmXo|M?&}T$AA{l1AkVh0D9)blo0`Ez@zW%P-nsrTxb48jJ^ZSD?0+V^GH61TrnXud|pZgvoUJ{ce{(x1`iC zPd(B^w{$+Nffd5nM-W$=e(5DP_o*P`8mK3z;uzp?k#H_@f_euetP!55^F$OLYV^fo z2P102Yjl%nB7kX{o%tTuPFoXF7zh{mpSw%Z% z(2qXvO+b8szSDdcj=hGdcGRhQzy(X>S*Ytg1+Wo8rpC4XfObp-ae>V z4dt%@OQZ2#+LE3_x3bJ_|9DN$NYNqN|0OU6!w^TmeL{x9U33l$VAs>xU! z>RSLX(C4)hy$;ks=9QOhG)Q(%UqPh|z>6#m-W|}j+Lr^ssZ;GyiD4pmx6;gnXYD9W ziBy8bbyt&}w8&+%Tb>5%mR{Wv#W3+S6d6(wbk(Fzbg!@gXwpP`wJ67_6fBYn(VRqy zqje&GJlq-AjG+I#8g<0#NA`yXi~y*)84&1^s#uA9N7O>yJq)@{Jyo}{sdSjB@uZxH zu8N`(6VfZ}?)~E1udNqkM7Ti<)QC{WG%Z3@X!Ke{$o?f)ee@+mEr-;NzlPrd_Ws%~ zTm#Jw|4bV)TBphIj~Ca<5TaZrLXfZ2swY@|`LAF~mi=Io z%uiOF^fK8G71pt`{ zg58nyIC3=vl2`4abu3so?U_u4*Zw2+P)qhs3yP~_D2!<`oJA#rT`l1w2z!&Tl2|l?nRi~lMu?r) zuO^YZ*Z&`<++9$XIRP$4Fp{L?W@j9O-_riA2;amvzwsj$q|1Ce(}#r$Z<9aUQ^R2u7npeKc@5lGI`Oc_csJkxC#P z-ehU~?u5Rj25*Sj8?u$7O_9gv42I$cDHr1Bql4F32)eXIG;(M^bir*0HJ%j|p~tZ|`Ny5` zS5K_`0>BOg%VUQVr6ie;o#n~suB zV?I(gWgcg~vruovH=Ql=CSL^az8yj5wMMfw4(ObD-=haUQayH4e{V+04oN!SKwUfB zc8m?_ij?|&1+GGf!pmL-&O+>;_$oEv(=r&tq%QzILWsUxI{BrJR5~uoa~FG^80c4B z;*SzdvAA@F9hQNBh}HZUgD#@;U^MR$zk#_= ze?Uv})A+4)Su#OuwKz%I5~JD6#p7-D6ID^KEm_)SaKm8k3v|x^%SFlKeW%yYPLEHUP~LWMVOp z@2Y?fD)r=I4#cADhX4fLmBzsU2d@H;tcGEx>;NQv4-=)@fvBXvlx9-aKJ=(8?4DJa zM7FZkakNKb;L(31UXLbQdqDsWgd=1iFl*dpNeE$cDu2W;o1rmGIICD#mGIurKfEew z30MX7Ll<;X)$XF27~!)IS9%|e?COBCbH^|QDcu796+({`d)aYfVZZ|UrDp4#$ymxb zC4uz&g08{>BStpVplk$YBHw|o58^s%dcJe35+A&{dC2Td(DUGCH zviM3GVS7;ijx7Kk0M;gdXyOTL=GIgP_Zc z60x?1menLfmw;&JQHeLeZ^Vy>d#VavO6)3FBlRDT-dbvkB`6#A^u<ASku@nQS7YFF>}Cbj#ed2j61Fh^PDpU!MXuR8zJh#3iEOmCCVJ zR2Fd+t69H!Yeq%;8bpkX_$E8+fV$tYb`dbvos{T#%+v+EESAe|wS(tRh070SZ2P^3 zGb`M98R&hX?O=?z_e8Zr>w4sEsDMa#T4DW$&ZhbVbpM}ExGOdMgzK>Sgm)f%#)}}o z=!W{;Fderc=%ThoEM`E{q4n$^I5%F33r-&ZT(^4&G1>LY7DT~dX{QR&=LU+0J=xHZ z<4l0o2nK5hvzAMbtL!gbhJN3|n#L`JVM%(mvnqq$%H7SOqsB&Y7!n&MwoWi+Nhbg_ zLWog<<1Ew>tv)f@$zqk-aV^$j?@1KOVoBPU`0B-V3lbkE&rB+V6ybKl4Z^w^E^#z} zGjhCAgJznwu9x{Zr$7?TkvX+n17-?!o*RNNP%Yhm@YaBpQ$qB(`UhnY`mQ+U0L(xz zU`BRSaJ1}KW99b$(@}xMW^do{FB_iFR@R1Kx&aAiC&1$fuh_bM4#tB1gII_nF!;C0 z_B#V;$sbZ4EG@^oqYw`p8dZ`^_s1dI1c1rmAGUQjCVV#960nRH}RH~1d8(c&~kFilm&)DWV2iS5< zj5Bt&-DF3CPqVV^cASBe9mSah9Z3$8izB|u$i-0!LRXPNJ)0v}Lvl^TgyM|6@o*^6 zh8&pP1w46kE?gXe+Tb>6r8<^WpDG-q9{|2YuotaPDe_<8Vx=7}Fi-pycS20%C5r@qn7pS<34SSz z`2qyvjO%)W=NhVe5`FwDVHTZfER6+ORdM**_8!iJcl23lHc$WL=IOzNEo za*r?Mhr{OaWyE~w@uhI{%?2yWMVpb3hP(h0Djhz)L-S1(s|(PcnU-VMN!XD1e5EBp zX%tAJNKV#HE1L= zL3+8RaVyN}S@v?0vPSY$R)Hj^!4I}w4JE7r_5(du<2yYzRyM*V-_aPLK7u9f0+}Sm zmWmOZ+>Jw3if>zi9|)sy0&?4T01&NQIgkhmGi*>6G^Heo4ptExg<-ivvj=6Rb?fxc zY!wdSm#+gbIl)KX4~dw6;soDF_TUM=M$l5WELELC>WTY*Y2KK~c!4UfK{gqY12M;p z9&5&}m}^L1Hq@@)Fk!N!H1i0yq_q)2Z-;5!jPQt|GDIO6{N)7@U0?SnztN;53*PLx z6vLswl?ir1sP&M|riBA5ZUtcHt-4-7&+&N%DfAlvye#yoL|W$sO3gehkOaiRG)fRu zis6j(#iPxtyhAR-%u?_XR%TH70Y96ov+~nOWQ@ae8fnCWbQ-w~db$u{olRnBlZJUW z=t-)1LRyIsQS_8(N1qVf`Lb_{q4wn7Fhc(@lSVlo)=!^lf?u0*qZ zn0Se6^ob(UuHC5nhQpk#P^S(y#*=wtv8zjCx&_VU71N22Sw$ zCNyz4+XDq(G@!_Y8_|cGVur-vt zB!=~MJ$4*ysqFYre$>K_SrUG*ze1xKxF{EjUBq4{JKCq?!`ST$ToX7#>B-9KzWM-V@Col3iKgD#diX@QTC0S9CtY zEu1<+*Iip;9F=%q0o~gysf}ded=tiH7lIL4;m$-xR?-tY`5rhBaW=<9dBBhajc5%z zVtr4myaQBK8$9r9uSbZ}CAxXyd{zSqvVXyrd4u5Rui9rzSrlUVHJU^nwupu|^_Br$ zbRAIO98loOad{v!bArAY^v31mofXc?(EY^0zP$2+aYLPjg|Or1oSvY!L2~U_LVw11 z4=r)@m7gGwiG;4RVt6Sc60nlM%mtQ)%_`YK`<53Kx%_-i#e3gEND{ayW|o(U(yQJV z_M%*m$5rg~^aX>+ggo&0-iuxm)_h-QVI*l9I-q3AGo>eDD!~^n zQ5=!pCCszVDewzj;sB@;TR5!1WfvB%?Wh~Yz7M1$5^U%&=sskIdJNw6AcEZR8NQpSS^p)w z`p{M!>Ztlq017F!MYR`VgUXzWK*5nO-X;JC+FiS0aBlTBo$-x`P}FiL$O4vIIlF+y*}f2l#}PdORd^)B{)6;= zRfm{1d_2X2?vz2;MI_qc$S%)Niig<6QxEln51V-6N1W2_4#phC9vLS!mR0jOp_-mU zHGY;9XUU0-7#&`2V~c}FoXRr*Pa?#y%Ij&bO`xQ+j!BHKoC-_=FHa2JzZfQ>%+6dA z?sa3A@M*D&o$!0Yn9*~Xq^V;C%n>*+I_{Q`WF7_O!0y<)6##@^*h$tNo`u*-Hfhcj zvR9Zp|I2EaTuFw&{d)eD+b0;-UI=h_r#}eeYMrMYtC0sRS&$O%Gh&ws(1Mg40GNPa z*N+GZu95v??#}kBbPWm(T(MTo+08)3) z%zVQ4;fd3P3=KA_g_YYZ0;oFWW{EebRVxG8IAB}BE1;3Xj!hy4b6mJ~r{4vMW(d78 zL~jZ~@>NY5VkLF-WeOqIy9bxDnE;a!WNR|4;>CXWQAslRwIu9LEKyxP9NW2^-jPtt z`m(BAgMC>Ha3_L%OGQUA3HRpFsj<3a8G4t@nTKvpe-E96bY#jGLfTdC%>~5nDTg$7 z+V!B?(Z!53Y`aiRc!y8|yxkxWQ7Rs>vBVZ;q2JAF>yut6Kf@e3rT~D-~I>^pOMFWrF;h2of!PUVlF&#Mr zg zjXenjkRnE;Q!BzbK(@EQ2duG4Xj_$Xz=yJ|61?-Oz}q0y5AU1&cn!%DhAzvhz)85P zQ49jdF&%mgS0x;k0<#Lj0Kcx56}cod6&4N?Bkl<~DfA^+kZaRMDBhT$+xK(3JcSuS zI9kdt54r---B=~#)$s9`juyH=qBj6O1tBM2;XB0K8fF3#M-;~XD&#zn`i_qfWRe2J zUkNRj$H;y)^nC;Y;}2U$JBIb$!!#2{Hu_b8eg`>rQP4stLp?Zj zh6f+0#p2r}EFu;cAsizZ>L84}f=)P21mk@%>S9cr%7rlBehB53QBdFt1fUi@4nd6R zl(;Z8%!@O<4gjJMIM&EmfQ)b0s&VcyiIf1|4kSnnl~$z->@@-o;3aQ0yuV68{$yWA zhC)e8B%9@Juje9LmQ$c7gUVGpd|;_v3R6FA*qs34`u-iRLPoaFXYf#D(GDjZy1lJ6oF0_yOmAI`;T04F2JC>c23 zUxek2ugclu7&suXrFcXzQZ$w^5)iU)3mNGxG1wV6=oo_6gH5zI)bT#jCpTKjBmoGJ z3M?$Wif_1cA+aOpSr8!leS#(sByT4jKwnxjj>sAhsW(;x0vWB8d*RD4R>UIXh+6`C zx5=pR^eu;&hfE&Zlnf5z(>C!2wsx zi@|SBKmPWw4)!{px<6*mQGct?n=_C3qRY#dJWBYAm0dLaZn?rtD^~jMrW;^Tfcqsn_b6L5#Hy@ z;N@>0HtDtYfd+){@b`9(zw7fWzkH>`YKA}cbdJBLti_v2g`X3C`q-a1e#Mr_fu48F zCVcspyEuN$?lH?w%jiIO*Dnh>e#1-Ct8)f6C463)o8vdNzi`^#3cNF;D5K7Qp5wQi zIO>W0DJ=+pUXQ^V{*3GLybo<6yf5<@j^BD}mzHs|e|f>9FMK}=gUKn%h46=Uf-ZzxUvK@9lIwO!#SUpU?68dX(Jr`L%ZtzQ>y%YIy%$m%i{D zo0q(`bvgc%Pxsw0@77zWe7{Go=J@?HGk^N%F+7J*lyPMN z_nQabeE-B*yXz3%_pB27;mz+aJg(!257_)pxV}om|2W{@1E0cr3r~;ip&b89vqsl; zc=9H~J5Kz9<9};@rlV-U9>V)Otl{|IJy$(^Wy>CfKYo!mZhv)cH{j8Esf5q%=-}o5 z`fgp*+wN!McE;a3L-;*P(}C|^|Lqbgf6mdDaD4JzGye8p&F0rJ`#uf7XW2cizD%d` zWtZ}K-;?s&(S5!>@BrZ_Z0g3#*BSK=U`oQu#sqe&_9+c=q&_Q|`zm zeDnR^a(we$-wo{Rqt#9+zhfWApW3H&k0w(Xom_Yhr?)+=2d3Wfaq~mej(6P)ynO4D zo;SXGE0Y^jYp>$?w%gZU-=y=qRKDR!oZj}F@#MnJvr9)4zT3RLynKf?jm{d^>}A5A zav7(eJss<={iexDZxB9xv)2EPJYoZ13SIga_>GS=SR1i%khJs zx#f%Xr#4~bpG@WWVZYwJ^!rP;5x&##&K!T~_1<}xE<*P`MLBI#A;*t)FWGl@=6Qra zv+e;6UztDf`Pz>VKD~E2$B*fw3>@|3K*A5qSjzF^9_(@JQTbIen^!eL3-uvR{%qug0qIQn|a~#J9hYt(fnZoGsa)%D@8h+Wb zmD8zwgX6fI+*96a*!V~O#7Ovx(&}C==l4|Xy5x$>*EA;ldB5;=e9xq5t!^oK<6^>} zo~`le^rPOt`r@vzU4>^%P9E>i4EJZb8+vUf{Lr=Ua{SC=_l-(^kkMOq@G6d<)v?Vf zTYB9^<;QM$Ps3;A6x6-CobcTzUB>a(ezJ6Wllg33avr{yFh>8JPO<>#HA(tOJYw-df_;YyCbbKj1n6~S!6cbTH`*TRy*X2l0Qgb$AF z$jdKW`}bE{2Qv9Q@`Rf>{;s)It$-8 zA?xK+atPn%!B2TR8^AW z)}5)v8oyT`cyxGLGloBU#^=2J)8}n}V#ta2QTrF^=<4Z(>t`r!{2|>*V(hEd8MS^WRCx0 z&FrK<-+zUEsC-LX-@khD^`tQ^cM-nBij#QxZ~A`J^tTtg68`da$7%TKyQZ|5c`V_p ze*22!zxURk;d*vG;X6P47sns!=lk5R%E>-$H*oy#?R|3=4rJq&^NEk+|9bA(oMDq! zP&=38Jgeb9Yq??co)Zb5@7Bio@2ppbPfqSY_$24sq4IlEK409&vt%6M&zilT23@e$!0R z0s?k-clWcOJ`1U5cQ@Gj>;TlK&wPF}XV`P^vUk~CSiV>8?>EN(o;!E$+&TYqrp~Z- z=rtex+th|f)*Qb$o%so)hrU7iCR4i2IWJ@1Yxq(0V^b~bdxU#`W_)O0PJ;3+tGyp( z9?y8gY41D4+wbWzdFLA^D39&ts~r9!#x8u_09O8CmWbOW+Wo#~?icXe%x@`I!! zA}Z9Y54dN=*N96e+B`4ixEXMdj1a_qQ@d|_SMnpv$FCIP{-?j}D$Qs{)cSQX!~?%1 zc~9Fj7vx*li9@K77s`l%HqqQ8R|jy*RJ1#(vvyUgUa~*a zm+psZqWtW7@8&c;$?T(NpaF+(N}kmF6)S(N5%Nju+=s#ShK<<=`TM@GM)}2626Zy} zdIsymBSA_XjM|{YTV7Mb+w4|wfj-4H+SD!T3T zDxJyOok#q{;xEoiKRW~7tOfRKQcpa%+{)PYPrwJyMt?H(lwZeYZda=S-to;j%;#cY z_Oc<)F2R;T5CM@~Krc#n3KIlOa$zy>=%1McEy#^KA0ZzoFw05^RrMf~p3 zqPx4DTLHMw&;p3xt9)oqzb16dQzUZxh2zhA>p$Q2E_4lW=eg*gr~dY;R@J30to@G& z;J*9g9$_5)~nz&@ayr|6uf6t6hDWy$E`G5b;0Eor4<8XT0YUhvSE-f4Xfh z6YEIls6?Vt5Bn+P(?tHe3WryezS zV?M^sWgmY}>oVP*>2*^N?elP0qKeYSG-WUZD6T%%|Idchb>+ z)&|@({sH1Hk<}`ty)6KE)ir2;(_Bv8UlQH49pElAP=C{UnorMkj6Vzb=xzNmpPo`r zi{AHl0p88DB;p?D9IN`IG5@Vt`@V>Kx&~Y-oX+e;{qBnpAGmnj-H?}GA)nygyAU7L z?Bb)k-pnq$idP~oiMn0wYT9#<_bWGp!-tlcR`VRIXL0%p#JzVN9=5u;8_3J5Uq;;L z+LMcw$29~zzGgKw8XdFcuN+178%f_#;4*so9X^&TsE9mIH`;2^Z) zX@O(fh|=!Fv2u2wiunYNIa$Q|0jtkC@34Q77F2z*L)cpnkZ;p@3ChdPkLdXAduPC{ zlI9{FzOT^bIc1oCJ8;Hk#3PoDJ67xW`yek_ioBX89~u`Fn|dDb9^cR}N{e)VGD!TM z^=tauiZGw(_m^JpUE2%f+njSoJSJvx%cC7K0Pi2R9`WHlY)-WPR1a{|^67|=3GYzE z{~_~N3yd>Fe8O)94s1Tv59I6ZLVKMy_wabHkkDd)OBb7<{CqoyR;?TE0NiUI$8Yoh z+-q84?-jtuP2$?sf(5hIEji;3c=MmQ@4mFv@Wq8=7Xco$mea2l3vBl#UExGgWN9S*6{`0_PXz$XJ??zV|v8)l~Z)?*8^FO#I^wiC9 zOg=cg9^!|BW~L4E+70r>4s-4NNVU2F#k0oe8{OpE`SCW9x06iS_^0i990y1{<1-=I z>%tPqr`nRPnE$!BG_;@8Wy-&3t4o4+tm8Oq^Te!mu4=_$wu@AW|Z z#`YWY2F~6OcnNck_fluR@6+Zk`(A}s7D4%&_vLYcJ6V6BMY+<5-#)OS`;(;7kWZ*5 zXQ%GneD&R`Br8v;ZV@Pdze_K2z_<;_SGr(__=8GGNgjn80N%YK`afw8JC-TH-h|aN*)IFURUKOu?@1)8$KC)}anQVs4 zIzf$Wkkx`_R;$gdrfSYusn? zO!`GClSD@P#ie!GpynuxjEHrYMrOtG(V?a1Vso0oA+h$FREzC#%i3D2(8oPGWT1FA z+7L;-)F72qfJ`wIct%q~ZnuxqylUteGp@H@S$v;L(Qz+ogd{|6Asn+vbtk*JcyPPb zAFY0Jd0zqX3`XHft zxXe|9iqNAZAU+>4k0?ju^XYG^a=c0%&!>27RH?UYXN{0%LW-2f5ICx_9~HZ+ z;p7vgUE->3J%`o<#)cG;HXzlV={ej;4&mVZL#rJswIHBhs4a4}8`;BX+=&P|iK9cc zE6OW4z#G0NMKzw6qN+B^g&&VETR8s)4Ydi9WbU3vDL0L@!cz)Cm0ROWC{yi&AIcZ z>S^WR-3j}fDsG>mT;PbRK0tkxGW~@x(7tOa9za{dO_DCtlv`gahj{kFaS3wmkm}g; zA}=MnM_*A+QV>l`1%n?bf*u$w%XZlp^(F}Wx*;x}b3?uPI^kr9HY9BVqeKF_Bdi_Vc35|<~b1Wmd$XHr4`piYna zh;XX<#@>v6LsBPIXa#j5sXa}%^4cItm^>PU%e}Lm6^XNFC-ZS9M<`2uoMpbD^l^r2 zT|MPcd-lq)_EeqqEC&F*96dw;q&1-z4H9>w8bpTEM} z$!58*m~dzq8O{@t;XKipt=a6JKWWYu9<)(Y;}{Sb5G_@-TOtlWgLQ)Upgg^qfBZBm z07_)b5r(s(Nn0kiNGv$+N87UxeRvV!MiS!fFMPo}ELPw`E*c_fSL&w$1Rg;T;EC`R zxph0Q?kzlDh|RXyf0x+AR|#K`-E-ozLYhE11IC(k z3&l?iy&yG^D9^d_K6K=aaCLm83z?{O@X5<5AB36ZPLt_Pp(^~V$Rv##g#1t!n->3N zKVT&xOgg@`P}t)q);S*zG0=%8*HJR3`|0k{B-AA3v3_!Ea#2)J)mIiiMkq2u@Yv_r z2!UfM$XJ-tITPI2nL0IAEd@Q5f|O62zNzR{el>JkE9?KTT_BMO#ALUu__hvR7TTr? z@=-Xqgxa6z$(LiceGU55RY0wwD_SfWeWXrN?IwgX!veopCP1xX8N;xP?x zYK*X&{!dciJxX);W-Tox?eEZH58SL_35;?u`iqN6k& z&g+1JLuZnWNUU}yU3s8fd7PZysFz`E(Ixs)zmT+4weC&{!K8PrJ=_R+Rkkd)~=O`6nRp$Q5K%Ua}?!!a7L6jX5= zWeV-pM5)uajD?re&nFBgbhvl6RJb2&CeD>eeSI(`2^!L{bDj@#Gcy zS|3PCr%6a9sCL0Tgy5MMFiRn1$@HXOxltqS=K(}t$m@#@$*a@2B44ysCZ(x$U6e_C zwJ^vNb^fd+?<&oto6x49c^F*pOY?P7Ll_1x&Mc%@O^ftnLs};J*enGUB_}V946@~K zLl&2&ACFSguQciY{k1mjingyyvnNH;(IT9ouXBl{Q#2jTJKOeRbh}?my6q(k@C}gq z;94d62KsSKuhTcv+#S>ZIz^q-jCRMwBvzET5={cFoj6?)zH;&^IUJ>?s(*AbqAE&< zr1-roSQNv~u;vTrRC zUzT*y#2sk5pa;!Tte3JUgK6{$hPhQT9ac#lR4sSbiYm@;3i9!_Al*1`Nu*RJp=%mR z`EXYODW`rETHKv}ejGLCX&G;Ph1yKLPapFJsCnZn^ie|d$1rM4+4K-i0@jFVv>duo z#==Uci+V9zDDaRRxA88V5 zdSnr-56o1W@DIXfV{|^DkwUkS1FwDk`0Bu0MamIYeihpjy8@(}zKJFGtS7;Jy z^ssq@Toe^h(G=>hSqG`P$wz5D4L718Bpxgg-XM~5=Zcg`8$2NJdX+@? zkV{cS#gm~T?y<5+Nes#?5z59TDmZwx&;@5#yit8$!;5VHxA2G!liK-6!iX)G>rO$- zvp<}d9c@7>*P&{HNr)d=q5gaK9f;#q5eO%V!Y#ljCL>W~=llq3&OD322 zO6`J!L&>a6Xaq0(gZfdgZ1>PAB0m{b-~1R+A-f;`%U%iH3`BRRg$b|1QrVX;GEl#@ ze*@Q5=M9vwER?3Gwj79mN1i!?e$)CS)u2hpa7TKP{u+@KnFw7~JLXPy)JJ*=w14*q zUAFSm%}p|;(L~p^ZEG62`+L=zL#zeD7nnaV(cZl>Nt8mCgk)hD%SNBEL zQ7Xwts}ZjGq+I#pB9MJ!|78~;7k(aDFu{KLrv-XnFOUl@fRG$5Nvmrqs0Dt~Xm45# zx-A$8mITX`MvWO0(msJ2+7x;?Y|Q3sAIF^hJ_L|&FA{Q7o$?9i?IrOMxPdrKe$>-2 zoaz-C8Z4E_JO`>gD}an3PlmOAieVuzL_M%O-7q!w}6n!xA zmKl_)^23{9TU^N#{xjZ;Xf1i!r8M!nA3Wz2%ve4wC()5EHWL5YvIzO={S#)@D`a?b z+GhHZL_SOKfZ&ALgDj>Q%V}qf%zb^sgVz%l)?N9!(jyDNErK5@4#G@WlsxodTw6Q9 z3k>><_~LSdXTIw|Cr?G9zD2il_}Sh;M%{J*ZhOvw!*4VnG$??SjrCNZF(|)z@snMFaRUIin!%Ox=L1(~eVR|k638!LH6CP~uuJ;7gT1F1ZQu{k?Cl-TPoR;6txBL_A@+Nyy-r`vEU?4iCCbNG=+EI@W-0xFF9R zyAkCNl)5qK=7yJmd%nU0g%b{XHk##8^()|}`|;r8gp&}BsoL|^Mt2G8yK>SvL9xqH?S^iEp@nGnL zyB%V?o=Bi0J|a;SNiCFruwz)SihCLYKFaMS;*U~ZY)QVc3GiXT$%sF$TCd>a^Q<1) z##}`FX*sXQOJaWodB-zdIQ;FNmgg_u0KD|Go`}DCUjKX57*;>M@7zZG_3uuRy~;&^ zyz!P6h`)E8+2LA`nSj?@gnE})(6z{*V;1WGuVG@OkWVaL=$@6^Yo@17ca}rEg!@@b zi6fmCA?Zg_)wv)t4 z7bmzsPjmx$nP(cxR~GI3wRth7M?FJ1`O1&CJ_)d#2J#^nO;Nu3+GgG@Lg*l*NMt?g z1md*}KOUd>xH{ln?^i~=c8}DnoBZj05HqXxS= zXS^x{xY^pdDBom9J-3Iy(awQL)a}7S4!_hhZDtoS;DwJ)M%?nYU9;0K$^u>^;%CHd z%dhQz!ix^}ibTU^;z8AkwzVabPt{>OHtH@O44r7ZyT-OwUL!%?sKj#2r+u*Rhm$QC zk2$Wz1B(+~>h2NM`m_z?gIixidG{q=AHGSh0p4*t@?oOKp^-JbSDFKE_kA(S53F(Y z^zR8%0C(^iiTDuji9uh}SUEeN8;!X4;ZA?tEY8Yf`TjoQ{_eXUwg_VNT=hf@;sJ;6 zZzwf{>2I?ms4t0u5hd%NHa!B*Ep#9h<%8Ea#U7zc@yM@S!54^!*mNHM%wiAV1*hQw z<%wafZk#V;TO4rXQ3X*x%+BC&k$6ME-L_jG9)76z(5g!r|A&n|jCe$uCLX>w4uX8Q zvRwO*IB;q4&4Olt*Zk=b%17?7>M@{w9l#qtse^b-y%l@B>vjXY^3i9A$5uBsSX6^} zP2^{2J`V9=>ugM3wiyI?U=L2eCOq*v`05s!?jgUpwTUP{@o~!!68}WN3zjU2`1Eph zD_hQG-?5@I_r5cWmD<^8+-s0;JA~7(d38%zF5lJ|@b<~)FrTFr7k}IOnC?Xvi7G6- zium#^o7Zh7>c>KY>dy+E%539+2_n+=BX)9SA2e|iG?)z@q5!Lw9@}B|s+vth;Y&zB3Y4xrW zfZHaoLVWAd`rlI9lmonTi6@Bfk`+E_G&CA;|KS%9-!u1c#Fx(H0q-<;KH_^zO#RTT zoC)Br`_mDRx4RW(S0NN|6UV2BC$u{HLAIaq(jfmLh$j!(wKenM5Re}kgZ!VE{ML7| z$?FGzcd_~tiABMC$?X_v;A6@4LM?Z};>z;Dt)bIDB#D8u1HxZ%ybAzZZM~%o7EcqEN=k(>prs~f&%x?|2;YH4#zN>eA!qd;} zxz#(C#(ciFnsTJ#+X*1=VY5zwCmDaOJh557ih$SaSr~ECd9}?x6?z5uSj%FF7Y%)v zu(?fbz?(XnAzo}>rk70$Dy6kuSlwR+p1raZ?wxoM%0%fpCp+_xX<))n+$lXImnYq=EKLIz1{65 z;0?{HVE%RXSBdjD<_!3-ar-&^tWTe#=?;L8=o^oC{r58}{^C&>@B$OC{UllX_AD~R zfce8i{uqq%)(4-a9ACE;m^#C94(;D$M<3s1)e?J#+oAnP7x2qD; zr?dm}8@-17fw-f?wbT#e8UNIdMthOud}d<9Ni%CgJ|$X@Mfomf@6w#E-T{2@l~lyL z_LN4Bd&>G9BgdkBOzIi`wN&BpT|qu>Hrl%+kA8=Is@``6yuu2!J4wCcwk<6Cmid7q z&rO)W=f$^E$~89v`C(Xl40ALZ14IE@b2x)VLm~fhda+0 zVh6ZsnhoN?^9K|Z^=5ufR4V!vNzrevcDfMD+R2bj*sn<%@o?3#C%u1yeEJPofccEH z-8<8`?03LRHRSRiDLr(h`ygY$i*&z&@}n2YD@3n-4tV#JL5PpN(oBBNn(?Hs2<=YN zp!9VyxUgxRW7r3TSD%O5e&@mIrGy11w#J6pIe#beG z@pIj0!HEC-_`|I$>lnY4eTMzwq@9k&!xQeUfqa_2M!S==Yn8>*x1m=6AAIj4=Ck{~ zTbQ_BAmF~Yq7dJ+<+nD^_nZgZ{o4e@_w9IIZueAXr(DmY-<7n#?%jUN=l%)umZC~1 zpD=P%uQ^_|01vVGg!m!z(n-g>*>|+>Q<1|T`~H?OmD%@(&Cnl9I^4~2M7OmLkWZXZ z1C&3~e&EdWPgwm_P5g}b(ZRJBEq_}D|7{e`3pKTiwW z6~XN3kdUq@e`U=3rP4~QK08<5&f#OH-7#v#{NdL9R&e-qFi*%9}z2>vRtLsdrkEQ1f=g^aeExdYzqCdXIzdK5@)V0jnt;Da3B-mhC`?7Iv%z`NV{V?K{d zZ~M8Z=?%aOxc$oE8w-@Yd*c@1aq+Vde>rx{*fHJ3fHyaqiFihv&}Bt#FufSc`9(=@ zucmi?_9z47$2f8P@J?#g+~Q&=;GL4tFHL%Ha;?auh-rY2yuf|;_a|&WnAU zfRFa?hj_7L^MB7g^AvE~ImkG(N7Baev6az|3tNo;fJ?%-|7#`;4rBc*Sc$F>ANV0S|7o1@YRo9GfTq zRu^!ys4s}uiC#JVdtfWT`!z0(c-_QqX5S|6ylApZomJ)uq4RW9@GPI%c^Nn zHPb5q9@NnSahrF0ydOR21$g&S=+`ATHK-d}ZhDr#_Zj&=x!F9EJ8_*(f_!-RYs{y) zeV|w9<351L%tHN2Zqa6eY>Z(z;FgoWp?t^bBA0!0?*J}($K~TNx9?p^1k>ww{%9|f zyIkm2tZxlg&Qi0{4kmZAA2GU$bRy(aWztH_zq^tBwmY|(o$CM7F2r5>Sbf-aw*<)d zymk!np69oFGzwh``0#hwo|Aj8sx6=2CkAkrNm7*Wv$1Nc)(_(VuXzsjI=Qc?_U59! zX8~TUVgZ!*+#WHtNSr0$(&d?m4?NMY^^L>x0Uvt+?LxBGj>*klp0xtJMc4zB4@mr8 z`pvO(fJ+vk-<}+JbmIA%#XJG;miZOsWsk>nUu<6r@U8#P^WV%*?m_uz z*E{Ds#2kg^dfLPwK52f_^DS3+06yg98^ou4@h@U^a|_@R_Yx4Fx@mjTna=e9Z@se( z;xo%nY_l--Bj7bckXMsuzH4WE;m%;d?pPvRl8hl>l#XZ71e4Z$Ym#yB3Tm zhppjwU}4d1L5({t0r|?ayitD1x9id)+nNJD+~x%0%N;h(I)1Vd;G_4Tf0(>(#Ax56 z7Rvx1c?JFXorFGmpHS-Hb0$H9yr+P&iRXzya@uo_lIAYZ30SO4*YUv@|sbcL0t9rqnm zUf-P}HCzGssL|Ij{{u}6l`a;@{L=nu91k4m-PWi5*ffx@X+0k0586FQopX@2lh&_f zh@UD{W5YnhA|PMrqB-K{mmisPZeu^d?WS<`d~Lzamtk|*I7$EZ=x--q&lr8>b4BLI z`pkB~d~VDu6Opkf0`iGl^E=|Vr`R`GdZY^A!8L;rzdL49;jx{218%vxCgS%qENUKc zSq`|5^fKZP8Wl(yFqe(9)%HREA^GXafLWg2to;NWMSmmth1r{k+3Oge)O&IR^Z7Pt zWxy_rF_6F2B+Ng>z%a<+aVEouJje066vGyh@U&ldgS`7e)UOo7Idd$>`ZB+(bz%JO zDMs?6er+#WfV@i~^fywB6EoKsk6`w?`8!VDIO*nvE^nAUvb%g*QO=ZtcRml7?_z$Y znafbbO`}W-Ew0A;7uJ=~Z%irPum6e} zue;^|;NI;^a=2X$pRSjy0bb=h>QPGR2e(?Bt;5>+$VRPEzKq$)LRYMreQ8(^+ignO z+O`d=pBM@GRNqt?<;&0N)hEb>*)Q3I_J~(5f55iWLDv4`#He>ERl12RBeLvoeY<-o zU(2?7#`$rq{!N<{LA>^-@0a7Awt?rGW!6T#Zs}f|I!_!b znS;1>o4w{OkFokMv*;3sPr1J}=mBdd9){?jq%_-FcJlYW!yq50Lm?>N=18^k!?tb$ zysKpm#M{-IxpnXP1i+hp;L2l{6mApQjXk&Eq!lRNv9xqc*Cf_Y8PzrkamT((<0JzT zAs-jhzKD1Jy5hZP|9@F2vGppyOw)YU1pLe=c zZYXP?k`;9kj~p(qxvcRK$bZBE^h;Bs7bmXFGI`_G~qyfmsY{2iUxKAXi&U6U`e*E#H27c7Qj~e(<13zluM-BX_ zfgd&SqXvG|z>gaEQ3F3};71MoziNOCmW#;*gxG|pU$TcuAbVw`5i&`z1;lT#i-?fK z@}e$eo&2&xx4Sl|6=xx`=mX^B^^H_QGDJvygUK1~5J$ozG)O92kUc9JV@o9n2Cu|U z5*p_&RwYyfPlQ#xxD2Tn(HfHIX!8=@R*UQ#JMD){Owb08(2hWq^`TbgdQ8|Cy%ujxsnQlw9Wgv7s#$PFbM=av^$7?<}ZEKE*L%$d{O zN+EPYDYw#9c60=P`zkJGM|N&iM03dB_?kNMZ6Ymw97%NkQ;;ht-+GgaA_L*=uR{Ey z;ApM(nUA7vb`D8otAKdQ5pmA#%RV%inoSaMlGoC*EMcvzcucgknj3Ob?jMvF9Ux^h zR=>+tC5)|L>(8li>al4rq+g~5No28#*z#Q7qpvEsSrK|w2a;9G;yK3M->V(>=hG>Q z;}1#-a|SXf;WTY04pLj^2Zm>PT4-HHU7tctDeS9f!WY13ANp=Pt0WzE~w3 zrLrfR?I!Y=zqAuCN~aB-EY}c|B~;?ZLK;eRnyt4}6Cs84ANeZDI%_mGt59aalCa=l zzPfAbF!QtKqN50Box`!q{A{@Hq;NK*r%XPJHeRN<6>Zqs41s_>R`}|Fg)xR9kWSkM(nM#(u<5Vc8RqKL#r!8X^;oo>+J5@qM4-? zjW;Bx^rVH8qT(*)Pp3GH);U?aCMLd&Sn#+e!c{T}DYU4Fuxf{R`>Qg6jEpy_qPYp> zB=k_VE)k(Z;n6+tl>{O;LFh^W9K0e`PR$lGnIwD5NCD4?PRjhNH{f+XLqx@ z>GTOXM4D3R0;}jBeU5`vE{zC~1e5YdXwYeThBvPitFrg|X?E_I87W)=6)nl1PQ|9| zC6QpQ$t`%5sfAwWG?c}@sQ4uPmS|V>aF$9|Z{C`B4#7U{`rH4Cu~uqVL_Q=9po!OeJB+SBtR|bBFJ~FpWW5RRSowJaQ-2J>6 zSVb-vk(PHPkZ+U>M%Y^Pu!#Vlmk*CSFaGc2r7(4lAfsYiiWYxiniPjxo)mQa%wW3#nyNDyCpk zVFsiU$bf<@N+lF5D#YgWI;jTX>?u)W_G$=LJ;f^(PRW-LZ>JxuK1nrb5+up6Tpt$^ zCg4Nn=C}x*(WIqON5#uuqpskD+#7WRl>r~> zb2w^yKp1JYQ7Rn{Kh&Q zWU&;itLE4RmbB9Pvms6fm zI(LX`)2eNk+I4j;o#dm1 zv6Nb?wVdh+4@ioHC09WT&fHk!@TN-dJu6B-{=t_v5 z&Tfv~9juyJDmFK$?KS1NV_~Pdc^97mGP@lqx4`E(0I*k`yz=h0{MzBrl~yNCpb8NS z@%`DceMN_?=~9iJ3T{wKT?E9RhMK$|1^RxsILo%}=nv|&VkPa8&PHEozRK^UR#SaV?t_m)}bK-M}Q zR4?90DvI`CSEZ;WSLhY>WHDRkN_BXe++R@Bn)@7!&@nVh z=HnC~4fau4#-p;LUBj;5oSq}NV^-yfJa3ZCf2zzj@G2vxyOow5ZOczWhgGrkGyXRS zeI{wI6KT>s216N=b?$Yhbln!eD^|hs7?5)sSqT&j%QGt3xSYu$Rq`wYPcWMh&oU^R z4<@HDAiQ$%@}kv)j}w}`W|@$>%bB+4(bi2um5a;JBt(5=)Q)W!FDQJK__jh9f+aFP zsqh7|VO-c7RwFJGT%%9Q6&subCF^qwxH+vQ68K!ajwVf!1#)6C#jrQkc_Tehuf}e5 z9++2~DOLI^>PP5VL*#`&$ccIN$lE*fk+<1$Hu??!6TB^&K;D$>4HAvuF<=fu0&L=q zR*&u*7;>a5(Ny|TNi-pG1WiJGL1-a&+dhReQ_F7QkrDinKi+_#P)2IE38>xqnd3q= z;YVmQUdW9Ml8=+Ct)DcSlIRvmS7_1`g^{et_RpL>*_>#V+-{(mS8|fz`+TDN`N$n? zl>mL={{(mFx-bBuBk1h%XtrMATcNNEL{HNxA;)U;^vH=6dyonmtS9xrJ zEV7ScQ3kCiQjt9gtr$Ed=^jmaqdUEI+_hSOp%0fgPeUCl{w04WJMOLbagl^bRa{o` zC0JNq+_WUuc4IvGY9^XY99=i4MNk42`5nfWa$jMs*m(rF)5J$5uiAn#X3TG)Ih@y;J%Gwadan z=;l{m8H9OOX~UD?pe!wvf=_v!e4g1*JOnKVZ@_@FK?*4yMgp?)KFxx>FMnuQxyn>` zY>Cd3Mt_{9BYB;?=-#6@$%j}IZI%!a;e1*{Ai6@@p@t>b5s?8fM=iAEnhY!R%>id> z)QvvyrIn0_R?AcAl50^0NyJi!p6<@sDRvJJ&K5>2Yu${7NVux^k%#@Y3uk_(Y=J91 zH1F@EZJQV$5I3l6Z z>!h00u!AxOz)BB#nBN7OguJrIh^+ky1ymb4aSH__e3N?ul(xfjS|pT-V3_cnx5Jat zYNcMcX*0w1Sr_!caf+a`x&;JR;X54`mmE|rwRc2pSY)ULwF`WL{e7qbg0io!e&HDVu%|f4WrSTb4QeaqmX7!l=q*L z^nfPy&LCUzoE7&x%kj)2eNAzyly4%B`D+qnhk zCi!SZ5p;uyF1vOqy>ebCEiU~Tska$C5?6NjbT9-;tSy3FyRC={5-&z5P>!R0UPw*t19Du>N-A1UOxB)!b#ZHw=-)OvtCGl2SC!Q`Z=((E(T1i) zZ%w5im_L){9jNAz(^W+GX%f`vxQK9Ha#18Wok-3m@%2-62(qtlWdxw}QeFNS4aL98c zok{9IQ=a#GaI8%hS^p&_}Shg$Ar3L_Ylf*;aZeT*G;7NT2()H_t> z6F`RpTXD4|3bd-0)^7vKR-6I84*a1yD zX0_mdp25lHE|TXUk+W9J>$9WbV%4O^Mr83n&&Kec!Ox#*4cin;f~kmV(!_ThK+PPY zLPBDhDEFr&{kFKbEzjXNmALLd)4ivA+YHD)djk@U(4dBH=81j^<2-X%PIg#@tpXI2 z)?_AEDhZM6YN+$-H?rlLe!#3Wi^Z=nKW>Q z1IDP*D1KIy!JJ8=GX-{c^w-B$cjnB$zL)JnYZU#fJZ=IK8LFt1in8ZnxspCs50RE+ zB*-@^CC?W!VE&bkYgw{(?olN$(7I=>SwodK_mRv^dE;h0?*n*)zk`q0VMpgCtBhIu z57n+ip<)V`EVn#F^HA^*&(G3ovm(70UA3HDF7(JaXjaz*QIKqLt>;J#8WhNn`*{)Q>+I3|*}5l1MT}Ma~XmzXFqqa(WK* z9Ejr?(|odmxssDYeQAsrdR1_c!)zy(Q@d zO`3W*N~}fBUnZ?loB77SC$;@SH8Ed$$lMOyf4xgdd&r`WB$0IlqE;%Ny*mu9kxL?R z&eoJjbfVuw$C(So&IkGg?TJzI6i2q*6C`(2-oO)&Z$J>KMraB{QAFN|k}|!5fDV3= zVkZdCGxNw+UiA|p%H>tV4ZMLVj^g1?1;cY)JW@4m=SL~>kHR$RL?RH6z)+?C&vRxV z$kRWTWyIyFf;f`YmZoLdhsfROO1a2hw z!rY(M^e$X5uM=g#nt#o4>HeNh4=k9^kN%v_$8`Oh`g1z-2X)a&`={+ui{tu~9eN%4 zgRel!840UqR?%``4=SNx4`iF1_=(HLnRdMhg#0kijtI_7vPWFF#+We z(Lb6A@}v913v}_X_a318vx2mO1vIJk+zb<_-xoMIOcEfITKI-Wgh(RE{!$A^nUAZl zQ$Vn^kH1vr9w{LkUSxhWssJv~SuK2{lOhYvYc5E^*3yQ$hoo&ZQ~5wyuzkW_~z{;EXil6ZxN21_L}6}QTUeysfHpQt+w z?qAO^&_5|fYE}2XwJrH{dfF)Uw{&KqZ!KO<>SjJonn!gQzpy_Q-k0udsGI*~vWg3F z3=?SC3c>T6vJ;^)9r75H8|8kN=uOHXn~y3J{2 z{o4mL#fOM?CeWmL1d}>oI7@DLB7<#pIvs4`q@a6=5yhg-aF@dQM!)I!eayFW$C;Q zG0)3ms(e^QIzf-c=8Pt3)8EU zIw})RQUFbQh;HL_Gq3B^9Xj)(Xeez3*YCkFY(!0un;^4#*7 zW9|YYm3!$Rz85+6!aLSmB99D~T4aSm36n&SZ8{c?q-?$1$YJmS-ekC!grg*L1M)n_ zW5M^eqI*;I+jy8&&U3ACyUGO2e7s7n8-oJb=dp(jwmTAuO=SP!5bVJWPmK8!F&nAU4^8zMCe-)5LyLrx# zYix{ewyCr>8eK7fZtV4ycuT3Tz#IhV9)CGB-Rmq`q-diB=?O242Jl7Xz zLYSYW*|oyzLT;Alxsh@2CE)Gp(E@=*Q|bd~w%l1{MA`@U!iVz8M^?L3+L|&85*Ic! zgsg7io~gfT5U684wj-u@ddM)#!P6htDl9i6GCi7uEcVXxJ7-q|J!Z(>`CMMxEgCH9 zUFcEm1-6jy)}SGzva)ya_N&~ILk|bIo%M0@+!T~P95v*sW=A5ISy{xiwCLNCjP^=N z%tN~WO&US$kdPCsWTNPsGLMLmkRHpL)oj&LV2;7?^hZYme#Lfy52;io#A;)Ws5+Ec zUmdz?z2wpeQf*`%AlY*WF|ue^LZ3}nb@U_8@e4Vpi|Uz@!OC;Vxx59GF3+vY(Y~vl zV<$!5oD@FKb;0SDN?mAdCdd(_1&~onW8Hd?z!2m-1Svn{w%Q2c4y19B{yhnMrI=vO zIwF0eN@LD4^~y&rsFGKf7+(#E6WL1^;2R+I!7`EeBEK@xxt`vzW*bj6F6;bTu2~bo z1`M6|3uHxHpf#t(egP_->%|i}Ec~bWDrO;ZQZp+Ggz#p9ta1x3=%?2dO;7DyrB+h_ zyft*ZS<0+=1bz?*{$2>>O5)8}@UoyXIG;)@pUfPp=xN54JWrBzkS5*ip@6nI zkgabd*S}ET&XE@q7bmG8O}b1TTf_Xe=B0(Jv+pRN!PJ~xaZAbH(k_Zi(+@q3q;WLy z+P|8~XVzTUf!CU&3onqnP3WgP4Dyn!Lu9;>aG1LMyuGEi~iI6qG?>rDzi(9}yO<=4!j9HEaj_C;KbhF?%}M4cG@H{#(*M z9J2?Z7dDY^yGiqUPgu~Lm*@+;Hm}CAz$3C&l4o^^d3qPd?RvqopqgY~1&R`cLt-y5AAJKOom8{g|0fcqD3!h&9@2R-7sKjG7QK_JyN69vD;S9RE6qAR zq*G`1pn(JwMqTsv6)Mej<8)&W{&0hGKI+MU$|=Y|kWR9SuZ}2$d4S%8EG5V#R6=2D zwV{I?C{gKQiajUFK^G`{h)a`HgeKiohH9CCuIj0q_4{kX@>ihBO7=jA$Q}sMM$JPL zU?aFTN^XLm5#J}vCc|^LI7bp>6m3tNHlX;nSr4Rp0CKlt-5Pey{i9v8E9Bk5aO7sr zQjlB+TU%N|m;bM1SZX-Lhe@L6l_hGXOK3x^Z?522-Minqu`G}AxUK^$f`ZVn$HQZ- zZ0(-iplJQP67ak!-pe7Gs^j78T`=Cgq+)o?p1b%Nx~r%7MDEoSww?WB)pMvwWJ&Fe z@9VnP*B)6jko=$gtn1$Wp7nd(AkeexPy4z8-nD)Y#2eX~9t*wy7I4p{uQ~j;Wk1cH z0JS0-^Qt`JO%C^|RpI<*kT2dl67i-*JW>~!-voS2_mdpnFxA$txI5q_jNK5o-5T-! z&MzGRZ?=CD;;pv7Ox*VJIpCvrtwp?be9VY#tw#Y~^KL=JJHFl+-t`fXh{*M%3E~br z%-igFOovrPq8`6;<#b&2@a>c{Y}cprjO!@x`0+shx%H-ly!qmOh#e5I|1xAwT~LI}z_zdv#mmpJ?x$#6&DFL14|v_VVY^WzC=B^E{q_{`L0v|)zjd9RBv5bkX2b^@Zx3HNkk!A}DMQ4i z=HFLU5Yveqktn225e{!(D7f_DuYkMR&*kv=JH0*H(BQoyQOx^P!~Fo5Sjea4re=tTTshJ(>BtShZNobv9=CRm*P{EWfE(F7 zLVR??*2ZP~`T}mgr7GfM>K5L(>ey4j?K8M~8{^nCa87C<;B`k2M)`5kJ$yTTngw|M zI(0aFr>9A?-^mF<r4tr_py zzkdmM;TSREvv0;-*;uhM;KTYoMtp8h$?@ginS9M%&WJB+ChPuqS6z@VA65?W#U(Z@ zZ9N&by@{%S*@*axxSef_muLj?b?)xx@P~goCw4gjxK+zQ#8<`@8IV5P7;u|yPKd7_ zKBKGu!OMVm==?k4YcATKN!v`KkC0!n%HD{t9oyxoTQqCuVXdnn{!{n;e_q@}-8w=^ z7OseIvG9-{yF~VCkze@dnuu>N`m$cTnmqycJ3IpM#P1p3Q=ig^q9T#mxNC?XC^fEk z=R&st_gXlf!+pe(^pb9XcWgTb@gts9?7zxs{3?;C{*vQ}pYT7{FY>`1z}xwA?dOz( zQ+mr2G|-|*M*OTr(u6M8`$X82ViTG_Nvk~Lh%>lg3 z^T`}OxP^Syc9y?qr|F2_U4LRg-$6IfBN3Na>c!xS+h`%`QQ~g%xXTY5$tr1UO_;qRj%a2$-k)IHM?>4^pr6uD5 zmp(~B{7c}6-c#$j1Kz3N0>r=B>}#^)z+%ANk`E~GbmRCPB_6h%0k}(>Rfre#cX|Ci zelOrdA4MQ;>MYu8vW@9!#EMFY7kL!btjt)JkH391;ziTvm8*8F8srnxavtI(Ea$mA z_`vuiIwJ$|lHWY_3ik;BTrkj7UkoO(}uqa@}Zj`S%zk8jxB^twpkwF6y zZ*ZWQ!>T`?0&cT!3gT9UZ@xA+`3QJ;XRbc2zkO@?qU#aB$IU^0NN;haviYu>VNJ`=|AP zTlMTikS{(I{f+bizr5=eG^PjO;}%>+`GMQw4NZpl0p2DF^*TM!Wz?usK{Q;MNHpkW z7nBeEnDnMf)uMp6--~`!dido{UuztN^$Vi@ZR(+X)ZW#DdRxOBv8Z8f7#C3yf=DeagdL@dKu+M zhi~Y5>HIaon|uyMe5~0CV{zBVfO}lw>S63JlN@GMnFqMhtv)C}J9X9kU*0gi@Z5SD z@p(@(Uq(HB2J+ow79qa4`yVX_tXv1UXfgV?=}WpU8rL_B@pg~HTTp&!t2FtJYm6sr zyQ1ApU$y_-nl3>*As@*NPLI~yKJ)eM8TMT)=d8ng){V5QSga}YbG+i+5nmr=7&>nXy$9t!uW!Hb}oIn>3XY& z)p@%H@Ny%3F#oeQhQHpTk;=#~Z22X`FBiQM{J`P~;L`FR5x?4Vh5O5&uL2$wkA6t{ zwT$o9F6*ZOJ~-w9%HM1;vPj6gPJlOb<9O-L!NH{lmpTBr{{oK3?k>LayI+4Nz`eh4 z<^QcwzxR(v{t0+^dyapeY~C^V__r#6x3)>Z=RSLPsN0IYZ2@<_?1%V^gpJeChXB>n*Op_}2UK8N|yiKKHw8w=W>?=-`NWgo0_6qQ93>abvMLMcP|}eDfOZP`>)cXUPVqncXZhWFO)+pBaDoIPrhxs>s z`Kh$53;T`%ySVSt?ALR33Ky>k`M53Ih4Re}&KtFhC*#KC=WF&8hkLdk)nI}(;3Z9w z_cB^HG#LACrx@_+1#Y0c{fkGl`<`R|hUo+|#2rn=YwuNS4)UWf4Mp5})RqSC7x@5g z@G%kbuJNhMYpy89!LemOlu%aaHWEWdx4%ZE>~y5Wr*39z*$| zH^z5Q_>J+i`K8i`$8_Cn+jBenUVbS(5g+03=-!1X?IEAeg$xlN={n`z;=@eeyEt?8 zJn~ArxS!U=fP82<T zZojVr;BCTdep9Jvz1Jqlr@PY^4&Sq=%m>pk zfSXr!KzzZPaf4ble+KyQ;aq!I@W;e=`{S7&g}&hGVNvyQCS67_`x5Z!6XvtkF2bb1 zGS=UzJcG+;>-3@WO*2 zHu?G!$d_G_hWM^wUq9RkJ_mU7ZJeIQi^nyZbEyyD#fz3e`S_Bj4J`Vv2fS@G_uUg* zXN1ig&h&lc7t_mRIMZ0>s%i&YFk{KM2oaVZb& z0S{=0{ickM+Y-$>mZ%1}&!j(5{&VQ<*Xx$Ca+cnVdY5T%;cdMEfkQ#Q{g7n}`Anl3 zj`vS@XL=EL8U5tU!hP!$>l9lDXMO*hzXy#!K^5cd% zBVPRTlk&UU8vtI-19>LX>{&JQYwy^&)~L@?lrPuuXS;GKe}H_wCD=d8EMGr%Mdcb} z0e4!l9OcVjPVLpTi=5^E$pZ0;qlWBTAZGoz;SaFgW>#+==xG%04Dvpex#w1YHMdE( z;!IzLJQ#!d)U2_tuTS5iATPZ>4e?qVlTVe~T@LVi)ntg*DQV$ic{u{`xUP{L-mgi> zgz%1lw|$EKMy7@5x8G)c{s{QELujuvn{;{d@LBUNfHz+fh51-|*tV)spV`gus;KXo zHUm4q3o7CX@}2L^M)_9HO)5Tm*&XnaC6LE5TbKOR$?d>6z$1rp-?5GH@-vxUbnA{t zl5Z?o@p z-vD^Qv|)%lAN2R=Q#}~)1{q0+cWHjCQk$l%e_C*2Sq`7o@$;eZ8X#}BeJA2wW3FCJ zINTZV7U5idc8|JKrPOogFNGyuM0uB)Wp4#fVc%=`74*9@T`kA%^dYw2r%!yHIuq;v3V8Hct{w&~KfV6cCpJDDGZDuVG6yx8)wOsEn+I{} zeHHT=5*6OE_|tBXPw!Y9zsmIcHevbmTWox|*(0ugf{sr)+-Io`$X9UKgZTtoY$`g& zwH4qE+L<6O8z^gOu!ep2F+I5N8=Brk{J9tN=i9GKMftEBLB(qI9s>E4=x_mX`Jdy4 zeUq_#Olom@6uIPGT4=xxkRM!!)0gP0Et|VtV(q_pgBqC6(4qIwezG$G`6vUlcbP+z zn)Zv`Ruk~5PU}%V*1w?V*^iX~9~~t|JTA>VW#%5npW*Iz5Fb{q$M=$b%|PC>nJ?nQ z?>?~_+mzLt$31t%M-6K{-c>#Zg!w2_5$3;OCkO}bJn?& zkBTgI2R!_akK#h+oVKP3U1Vng_xQ%yi}_Iv7jC(C5Abr+x$iPR)$3CK?u-Xo%KR~( zh07ldZ`b7_%m2_W#Fr*DdM`i9^tZWFWce)ae01}-4)bs6X5GIvf5%=G)(0dU!w z2`In&Mx|J3=n%mB+s#5e!K{#@$Ld7DeL7?RH1p8jtK00IS^sflW%TDW4^OJzs>Y&; zAm8sSj{jsHv8=K{Y{Pgy%oF?3nMbYeWNeIP_P6-FGx*#SR{}Ga1+#IpP&vnwr)0sm zHm|+~`Hzw=M)}j`A&(o24gzjo))w)zYrIEC+K&gk?Hf+7&rf(dWbgt@z$?^vf$|ru z`ps__%KXDnCr*Dat*w5vVT?b>_lpcg`72GPH29@R8sP3*`XYYaYR%Y@ajyaQTGb5k z)C-fNhGZNAJgTfc;Z1998m^v+jX-s|IFyI2aBh&@u=AIs}Xa!Z7Y6b{6^|ia{Kn;9gZd5z-1-_7^F7=Ve-jrE2vwxs5vyassOi{jk0f#V=d2f*S*)#z0ik|mJb-&sHaN8K< z?KhQt9^TK``wQT4Y2{JAdSy4~%ro|Yd)LG7^`?evEp+)W$mZt*EWg=ys;Dw zlnlL^0r{6Iy%llmZ>zVjJgaEQ3HCe0Wx?goIs>RnSgKQ*;O#g~kZRhsw=cL>umZpL~G;N+hJv1W1Q#L+v+w}!VD+O5bMSbG_d@)4p=v}v(KgC0=_Ea& zNtbhl=#Br_SU&Ga=?j)1$%Lkqyhehl~NQ8joeHnyygaz2FcX?)R$ynpA;_6Y)Y1D}jA3j|%XkjP_0$niW8 z0p1o_@tAFCrRsOjx9VHtC*sEu7H%>8Si;%AKfNOd{dJUihx$mof~BevV4>ROB%mI@ z0Ke)|UF2S98yE&T&mW97>*GzphZ6P1TsaTx9I*ZBV{NeR)X5@lW7U zRYR7otz}CKyI{Z2h=54{5NB-NIcLmQSYoP-wFvhQt=A4)Ga(0OnQ!R-*n1B6D5~^# zHVM^+y^9j-Y0gko@H{Vs(3^y&h`QMf$--tg?rsolVE61|K}Dn}f(09v6BV&z*Ryv$ zR6srbTTjn&|L^;6L|a0H?MyEeNW{0b`PvOiLrZxsKw1w;#qisZZfhuiQF7` z;Z`WWL1;2dL6SdN8_6f)cD#G?%6sbVc#gY|uiBx^XXf@MPO{%3ysemv2wy9dmQ8vVQ z>9?_j8mCHlBN8$z+i%+0$U5k3Dd@4Kpq-aK^mqYDq(;UPnE__Xge{xS$o$8fxj7yu zvNhGi;Xb_j>Xyt@b2Rd%B`y-nLC5!2Xlyn=HBorEi#fTIoBL!|wj==*1PYQAbr;=P zTukjg44jRHc;181%x@KxbWgmPEr12OnSqt*y*e|!IhU?AGgA|AHPI-uA(72xVi`}N zR5Z+aSB&QuB!{X_G&j=C2)KrHBjzcnk<@~dlWmnS>#;^r@o~xl1EwyI2l0crD!O25@|0GF|y7mOTg@tR!)0F5IPrsI4h2lB}ke`tj~LAkV61& zWbv}&SV{Y}nc(n!o;XR#m!w!%nEavU##cm?(fGc!TPfL@6buLhVqDy;Z^@Wp%sn{j zFjtg)vM|2eoe+eOPXPY6=eq_3!IQMQWg(Uk8!cdbmt{ha7Gu*Ez*2Ayizq+ayMKO7!i+d#@<(<;5oS=6KihFRrE__ zz`kSF55RxIuk;wRR1o#2{(#B27Yf9!8@K0oYY|c6x#$shH2-oZa4A%T+ESf-eA@Ob z_j5}Fp2-=a%}190M=237$_*= zH_3ri@PaR9tg^q?BViO;3ju0>GhV#zO(0y(s8DtHTI z70)0lB?`*M7x<=P%RcCujogT>EhsXHl(Y3UFE>Ue8BaiY5KA!(Q8;U5MKUWDOK+^L zDiS6jLPf#^x@=L6h&b#ph0owJu7HAhZ}zxSr5vO#g7(r3*IL7mwxsJeu1FOHT*pU(9TW@^Rn%A`+WgQ8|+dR0}~w6Y0+0ZqcB`){bTQQek$%UQ1H0! z4{*g`DlKv}N6&ME5-#H&oI1!3Vsye1CZv)i#{5@V2GJ_RiIFA0j!J24gF|xz6gb#! zEXW@n3=4tmBCtttcLXqr5V+)8$_n(bGQuY;#YZ(hIM688VcT*iFwWnU_qou>8}DL$ zaw!uCU&)GWsw__e5t~K7I=Ss4|0-2XHOe>mNQ=)fYGmAkGbTb_9t&$WtW7keVma_; zp?k%QSC6fRz)?h9;`Y5-4ps8)_DeLF*_@?3-;PAHj&6I7({0Zc7HAf*g9Er?WHOdW z0b&Z(17dn}z87k+8Q3;618p(xcftF_HGqp&?Ugl76!J0>{xJ~Cc`p zrz|$XQ`#I;Ff}1r@^?>7c7ws&9!qHEtxhJk7$arRepkXvE!Wd zrluunW)iVfHP&mm9EI3(XBzp`Dyr%*GA^FOpl9woE4fUMK;$$Tz4;~*Tj zb}%-W2k#ff>E$gCig4z;r0v)PS`B9g`e40TrZ}EiY_j!RNJ6SuRJ1hEC05!6Izi{4 z=RAbDGYm)MODOBGgi%fof)^su^;Y+Ye1{96$kIZOgUHtOdz2O;kHd6h?$H&Ry^Kqt z#LEh5+mhqVL_;I@n(IhF*0IGAb8$&P(m= zC8I~=?`=SMda*lDf0u*@y(TlT*vJ5~Rx^cX9k`?bAV4eJB7u#{m{Z{>WW`uBlQXA* zorhsDGxJp;gTWA5{yX80M9#yhI}^&uSOQsLMK~a$hz6w{T8&Kg&r6dQpzWZjC{i$B zU*`IeVhiQ^k!YG?&Qhoj`&kGLjF@;CdKoY$CrURJgdp@daJG^@oQu=3CloYD?b5mv zQUP?U5H?g7Xe^aV=jaGtwgQfVBx1?L@n$`qDS-L=l_-y~FOHWm-i1DY?ohD`u-uWN z;b*z4&Bapnu}uAcf$p_N z2&^oGJ{SPVJ9)Z&sR=^rSBwXWByWdN)CZe^fuOibz(e|(8lm{coq_#|bwKJego>*& z%FA4pq2IwkqnCdalu9Q+(h}WdGse8z!Y0^S?=}dr1-K8_6B!wO5RpGZ0sSkor_IL4 zv}=z@ce)R!2HrUYOP*5{>|A&4h=UH;zmm?T!#lQTFmACWQ08OFA3%aet=0t2=l2)j z7pwr1v+Abj%n1{<+k-cRZ;#p1wU9M|5?N?0OP_Pa^S5Ee>-RAS5DQ!zgsg_vD<%YG zk02g_Lk|)#?w(DXu@on)s5>mYi*J3}VPdD)c9_kI&NqZ!2Q^OZamh;nf;%PhS16}o zam9DJSRg<}qKlk-Q0R!|1K{LRIr6-$H~(coBjKD}8vJ%S$b*nYwAOP0E`^YL*NVDF z3<0tVAha};h1$ES+1rjL{7$tRt=~TQqu62EU5XH#^?A|~1md(r{~_B}_NE%P_E_f% z*n|~-?-t-LTaWgx(FfKy@{w%pf0OCoXibQV31$q>eu~=+g zCfegxFbi&PE9Wx47&_oHj-UA%%C}g8t-Vse)Yi4}bhGKQ#93>2SS&dyoq=3pxcJ4H zZlF}Gg6W5v8n&*9wCk-N@lk4#VO%9SSjpA$A!!6%mFYCrku{_#A~Zf;mgjkaA zAO4JvvJE|ar1%ZX#-cb>9UIAhN=C7uupIi5<0~YA%!z6bJgACAOtire;&l!2ax_uw zb;Up_>09WNK>W-P4m(WN-EFg%ez*1(+DoUx$dRXhfvSuVrA;QemV_c*7RNZMSCed- zm_tj$nekP<5HEV_Bjcgq38ImHGT%5zflY^&{6#4zF`n2aYvcE;&*R#lD@v0q}MxNhvS6?}`+CJ*|i5H<(Nf_DYgQj{n`I9aDH z`WP%;J%B8v&_|^`YFl8Rz++s88|OhN_h4~JI(^M#vMHA8pU%|t5db*<0OPQxlPKK_ zpvq{tR*)CVJwjE$j`VacBq4A-uZA@7!c2@hth z9(hn+Ewk2uvOJR@m@>}>qE}RP$@7SLS|_@~8UX^VBN!Hb@L_Wtm7+_Uzh46laYsBI zI~hyBHO`k|>vWFeaH=rkb}E)&PCi^noce}cNMXot2SwepQ(0^QCo&#n*4iS960A@+ z+Dm{#klVZ)Mv-v^J+{U{A=Tld_}MHPr{OeogR%pb&NOde3Z%JbI-}Phx9D$>YNtW@nz?u2wKisDx9v`PC8sZ2* zD1xQ1Ny&HFr~6x+*PmP|6i*>nj>vwcNeYncrJ!m$TbdXMg)-WSD}&(VRq2xBW8yP7 zq%aeg;J!Q&3R=i=?tPg6Pqq7eEWm=v#HkSWO{U{hs#|i+=|n0=UN{7^>3$9`9O8lJ z6kHpi-5H?W86#Vpr=TD0Jj=wjVe`TG8mQey&VX_f7G)`Vh_JXU)u4Ni^&eJ_fRE#I z4o>$VD3IvHsCtELnl|+y!Ok>8cti}i+~g@>i;Jmjp}dM;bp>-BgBv=^xgi2CX@Gm( z;#vHTaffS#=EDqcm9SgcTG=4c5O324OI_Bw?_f8fqr=-`12MbSh7E)ROy;4GMqeI+ zi8BVD(#h{_4bbv? z3Bd%+TMlJXZ`Ra9E4kV%DT`ndvn11yO&a zcvLy^UK>zl%c8u2D&yWJsvLT6V?bYUO9(NiwNK|6J(^r$6~;$>7Wox$*a^R z@S&L}O}%73QemK(iazQhy57+Zl3OttK3yU%L*c}(fQ&$kM-Sv^5mHE)oaFVqT+Hw*d>aToM~tC=vi-p_ujuf{l!e@++w!_JGw?9Ed23@3#rJeP#m(bD&3ZnSM)LP!f1qZ=yB4&1cfCG^FrphcrZ6R>x7cYkfm4Wx-Po(h3r=B;0Qv3?L`wX`Ec<7u-D_wCP)>4>L9BsloFz$ z*`E?}i2Rh0Lt>j0N*IB_uSgA+xszj4V{mL6!gG;oR%J4=>D5W7;YZT}C=#_Cc$Z3G zC(Nj}T2>ouSk7g&3})meEQQg4VrkGG2VmT!3Re(3f5R;S(pv-%`(5-m>2dI2;%aa? zGwItlg(9yo@j$}lKcgXGp)Gu4kn|$LoEIo-oieyqr<UJ*R^r492#OlM+CE`xGDmU}|2WwL?Vma^hr^VkdG9YyhHt6uy9 z4dDyj^qCNYjbxTbFgx; zi(U)8Ed<^NZtHbrh+?SnSSMh{wN@5i3lw}Z9%sLs(6!luH5Zk0kM9W+bXc0zuEhQH#{4*3tz8s2x*`AEt+1pYk4 zYn2;*^c!B}4`tCRaL<#nZ0o6OBMXrH)Ifkj(|BKT&l_-2l<`L_0V!F#8{G6zdW(m} zvQuhX>WEDG6Hblp6@of@>r1vPj2OAD#g%XJAlLz!STo+G7q#h|vJ3RPrtJ(1e;bGK zPqO#qu25Dx7lzg8^COx4aVEM#DHh56bxvLXHYC%y4F(Dm!7a(3UVxT8Dk&D# zisq*l^a=za=J)m@UTN`yHPFe@d7Qp9wG}~(ep=_BK*CLaifPbkKE##@+da4CX&ng& z$t`jU56NOuNj?&K|A6fq3TYbc8WtEC<1XAQhe82*6FKm5=Uz#tlU7157s-X6;1&MR z<><(l24b<%B9gu!ux5yvsY_?$jn&D-u`Oo*L<+Kf@z=f2H_=6zU5mE`f2G6i>&X_h z0^x8Pin;|6uYC)uE7AU|_pU-XzN>=lPwoD;x~ShQ_@mg6+Kq@1d?WH5>$Agc2)#D0 zJ?;>EBseFy!_j&a7rwPCo-?H-SvYsrn)hcZi2g6;=@~->KJK>F7gwKxIjb) zOI7WYlxmj#xS!boX$Dcvhno~F`PolEftKO380QpY_h(@7qMaQtQ|N7OxOp52<9V$W zDwSsPJ0@_oN%ds=o8!Pf9I{lJ_4Exzc^H~u=IX8~sK37ks2@D@`LbbF?iRw#Z&{HT#U1!U-3<=2D!kNYDPcp1twSjfPu zvMVM~4@;yHO|fLHX>qE4Ku4RJ(^*Q`4ev!tZ7Mi%Ox-DIulqkWhJn1=c#vb%Z(!#d zpulxjk)xMO!cq;EE4b$vys?lPtDHC*OWZrkY)(S1;wHEPknt3}e=Q4d!&RUjuj7x_ zlf(shFBCi&d3*k&b+n4fG#j3j;EI7fhLHtW9x^=UyxejJw0h+jty`4P$XlSr zosNM5*4s|w??<7uK$j38i|p3wEFW;ANv{KnfCW^I);qXbn>nF+Y&Bld((8a?rV}n= z1Tk0~ij-xih>Zg0ji;j!8AwyMVkG`y0`1L?OXM1v3-_LoOSh(aOb#*~6fpyAu~5OR z6vYMB+SM!aezd+d(4`{mX;>M>=~Ho<16ckRX3>%E&X!$kyI~QQ?mdgR?|@D537W{P`S7&0q)D5Jd=oLw+R<(At$K zC8ofB&`+;#P}_tyqi9J^wMRW%m+zFHqR2JHnk~N_8vw3gu`_-FtS$~45MbfDnxbMU zjaA#pCd{}Q=Bs2sD7$0v)08*MYfGFbbuMAC?Hj8{7b9A47s;O?6B}yq6{9n;RCW^F zNrG4Q^iP<{`s;jvxGh{UAagslEey|r8}bV#Tdxl;_GuWkoS7kR_5ouMqxEj9$hEjBRCJp1x? z$O3kQvOSjN$og!CNiDk>HXUdIp0S7}v9BfzDkUOS7L;SzLXzOXMv4fG9cfj4tQnVn zpjO#3Av1(y(eOA;w6zAmLYYo^7a3SJ>m)eV(A=5=Ap0v8_1zPOs@;1~Uc(YrSZ+vT zP=9qz^?(tzqkHtM+<#;yF*TMmhnN^Y8`+M|ve<-&ST;M%yYs!SYiO2k?bCM~n55ZYW>&cHIuDBjA)1tEr~mZ!W>nuqt`^99s)4-FT96U(oM{2kI&}l#6e>`3PQV6b zNr{%xrlz_dIKdMsIcj92x4l7w4(-Eq%=fwa?wFEl5<;QpR+58ySm5L@&W4wCYpQ#p zIfyp7yG7G_SB&pnQ!QIgd(sV;HRG@(F~R z2piS0Oa?sugCP9UZ!Qk#F8ZEzQwF)!VUwoe{*uO~L1J+LP3mm9dzZRa7$(WX6iU@%qu{tZA zhBhJ&0l6&5#Y`^^RuN(y7Z!L&{ULs?QYaAeBsKcC5gx$69mpNF1 z352*#%L1UV{)-s(HAbot~Ph_$}&vzfj(;Q%~$~pq(u@@TImcr%n zoD{?>rW#C=ZT-U9yyN<9VR%d;CgfbSw}k>LzccAt`8*CdOwSUOllOrFYDK%5Ct8vW{F}(MZmtc1kBt>1xscLr-Bjx#uKd@?rmc`Z-Q3BO{S_>z zE^x7JIn1O5x#xjNMNUcf*A!91_ZGA>6w5sp%daQfx&?Blm?HE;;hOfFf!4{d{LqM= z9w;Iy$ghfE>9=MG&W8pG$)OXMxmLMqIIL(}nCa%?P< zKy3hHtc3=pSV{%7V*l3J8ktGBe=^o!6Ep?iLHxIC8X<O$ zJ}3p&o>($*yqURCgU;3`fyYn!&S&;je#eMI*SUDbI4#DiHW!Oe0RfFzr~*)}J)W-^ z#{~v)ET2%Q0qQa&UOV9!LymFf8XZJ2{JXy+2VF6y3ovmlmKahc+*%CFU`WsrSEgUQ zKB5`jCW=Qy{DNKrE)ACth&3xSC1ChyF44@lZq?ZIAzC$eYu>c^C(1{)fZeAF0y3MY zi=o%9uSCjZ2Qb7)l#h(-THV)j7Aey&dL-UOO;2%8e5V&oJp*vbu3SA>? z1E6B(=N7ztXv)$;uLhn*QLAtT!rIrh&CemBtQ&J$bEcvO{#R3<01XvoTafchQT48c zG6aiFFsEqW>2Wx13jtlI)LKqoTLiBQ2+;6nJmQ`QWj2e-5eF$(hYk_Ja~-tPxEu;z+I2yGHJUsd%(Q9g ziy{2dT5phgXNFBd@1Q8(39x?QaUx6iwrs0bWf1?4q8Ljz4MW3qb8R@j=&C-VpZzS% z0QuB=pMwPsOl)?HIk=4Q&iVdW+kx#%DltF~VolBEA{nQUO019bu%Fk?)E?9zNW-NN9&|VSf^h$*yPF2HY=$7>lwXopSQNdAXNwXD9l-IE~ zMF@5!7t;xYHbJ$E(jlQwFr6|DciBv_iKxbbCrniPp!#oY9p>O_L-~njrJ-&CJK7;K?wDV;S=t`f z+)1ziOJ0TY92S;P&jtqkkAFw_p(ctxf%kt)o zQnBes6fGodaYa+u%EBEwpa2AnZWfXmXntn{dh@@jJ=e+h4KsJjxs88QT3?6_3jZBY_4`a13u*lZ~M9XB@#3pk%QWBoH8`sB-(~XsJtQ3m0Da^_4y% zOdv@_kq*H`!Tso5UJ;^~)_;yre0?iwyaSKGp^O1#f5O*6Q&c_cSS5$YnuD3hq#zqp z$zQO9J*LS`ELKucD;sj>BE~HiL`}7vXhmMi825?aDiJmt`Iks^mK5#wOz)F zF%DA@0T~Vy-a}{w?)f*K3kJxn+>KZLI3kY8a^#eR^M*jwG}X=q@h@z(|QL zLZkunHC9lp$GBK>iY7e-jWFj{!l+Q4OlKhxkuA0bkcUk{y%PFhEP^r@OTnX292TQa zFZUa(1R8&r1Uk_C>Nx`<5}ZNHT@ZqE7afSj6|UKU_9Qe&(=75joo|(E|#{)lpa4_ zt4Je7_mrZTi&oiOM@u!IAwMUHx)stxhXJ{|Hfe$VtO?5bE2T*g(HKkRglkRl+bTfP z+o=353=Y-I!CQm*&Xs=aEiB52^C-_&x=s}p-x~e|BuP$9QN}`arLVO@lxB+G#2DcG zDd)HZ07PN{nL-VWl9ma0-3qjsX|`5ACr0hJHPeI+Dp2N)+jSIYHuq?jSI6Rw_N;RR zty)%CNWz4PK^@bI1*T0+MY?H}u2*H1*;-K?LlRKAvd%ybOCfZnbbl;Q6cT4nif$q^ z0FO_hC()A7H`9r;YA>uZDb$`;? zQh3AK+h7ip3jl>Apc#jt^t&^Zt+BWw+Idd(;bx+tu`Zn%1i6;MVFDt&%bH~a(FpN2 z&md|Cwin9zzp~h>fPv=T<|CW&NeLD&G?=^_3{wR1Mn)iSWMuhr$K4+OjwvaxTW&8^ zphw|C0s!*p-wH&o2=R8u7gzKEIX;*-F`9xh35yqtLdZ>Y(kh*2!4ubte4>}ybkSB) z#3|>^$|G%S+u##=rwABAY#Q7)(Q;fcRD?#CJ5G^(g-nPtJ@38pyJ)T|8|wrNIfyVx zs(;e<1tDsxQkaiBPX!AUSf-U?Y`!)nvL>3v9rPKL53v-w$l+bc+gjibq3u`74{FI}8@rG9A{SHa_rxUJPBjMF_)~O!D3=K4I+k zto){G#fe9DOa4Bd&~V#%EvdmXs)=tKcS99pC!7yv(R$KEob?oInwjra%4#IqSeXJn zK0^rs#)CE5^_d7gB~7s5D2K%6@aN_(k)x)*DV?g%!WCZGY`Uqo5zf?40o@$mjoJ>u z(TLG8(=m{UVNyB+o*D3!EJp_cH$zyapx3!xPDIe!Oc61iTWmn`@PeQ>sr-$xUcm>R5g}=PVl37b5 zy)!%u+bm!JeN-`oCTy&TL2-r@&RMB`0X`CW4tsPRl&i7WJL-Iq|-VR^9tzFFDbmgVH= z?)z7Ehc&n%)k#GVlgx%xC(gvmG-_6=6OWU+8DJ`47q5>&lCn|q?=Dv5R@r^xZ-^0X zNOzLiknY5+a7gg~wdqcR+u2?y7G>w^hWpcscq+*Me{t56?~qM@4dqiT%6UaDtB~

m9hstB_}?ewNPyxj%@v-4RU0BNb#@WLIa8nMyQu>C`bWY`IKzK6aW z_dtRBb&OkEA?`#A7T6S5wHhY|jpN>UUujOU8BBugOc;PzVO^%eUFqUp7A4(?>%J9z zNWK&tg=;;a=%@q=fE$KKnK2Pj;8Gf|0O3akh%!8C2pP>D-`8d|51h{F(Ka44AqNfFKZW?D=~*vz+ht`E}GATj#54N5hfH zK+4afNQ0h*@)#C!;;1?%T&Xd=eq1b*ZGlyB&};c)HYP1xw`%TtTC9s5j(x!R&-2xB^QlO5VbJ)>XNYq@C5h8)z9& zLYn{1+%92E>|xFK9(#&efMJ^QBu~w6dG-sEE+|67E!88*q&O5%f>g)7KP1-@FyH{l zwPB@w*&6vB^127GgmX>N{Zi7_rwDc8L?Z_Q7?MacxhH3-Y9m{*6$D~2h;M4e@at+4qf+x-^^LA=*)8}IHo?U?oWSS;k|QN^4A zvAXne?z1q1Qn>CQPRerTlcyrgd+;&-oQzYo3zTiJC}JybG@IZ5`I#!mak>S{^;inq zLpbJMG1{%z@?0%cBBV#ttjVAbC0mC>uOdL9T=~(C0J@p>pf`PitDYX(oBj~Hy>0yB zyfBo=SO(KpavBskz*TZWxP-$jHw#$t89zt!z3K^vi&=0&13JUQa>y{;*Dar0u2i?@ zmYfjGeOsto+}m4C&TO}Cp@{|)3^VJEtx(^0_!z-_@|kY|cwn|jYnNBTQ2|6&yqxkWx8+syU1pY2-qLXTk&qBg0S^19Q zRCmR$X+A(Hm8CqQ`2g_^Nj5&@W>rC|hCC@E;_TlGh76r(zK1=*?ak`&YDKhh`5;N9gqd zbaxNUTv6#2{3>o-lrS#~P@uRL${Z|(90LSR8{%)(^69It{E-b7K$?KltwtqoV2+qWFbj+ z9&+5uDJdDDfj@F1S%BS&J&e`eJq-TX2S;lQD4nr9S6DccbK_A4Qp>^>4Ji@|TZcP> z-m;PSK7 zSOx^UR*PMR;n@quN`_pp97_R7T)9OZ#km8_l151VqAdU*8jkiBKz1?YqR>P)*2PPf zmqjtJ3q@C6&E%cvhU^tqOntc2E)qMAB__IQn|*Gny6gKs-x$WH3`s)@D_k0>p>8`XrhORjmr=w2-6A~kV@Y8GZrR52c^Gb zQpe%x_#B)NV{)pX#E7~i9F^5X!Cj-Cuwi<6EoOf=2VmkX{DdE&4@0(#!*^f=hrn=_ zd=KUSuoO>y_*F977E_7?>h5+X%HShV5gbLF;$N%4On^X<<_PyK9bZYlWpCHN~^hqsJ?wzWb} znX+SL(iNmTmmpx^GtqDogLqYu0PJFdb*{}4uHg&#;3-oh3V-=G7L9w5h=)U3Y7;TA zEw#EpliMDLViuHhuoO7@IHq1AV7NmrVnRs>IbcO#5?F0y4p^M0&aI1#CGUtWWFLcE zVUWDTri*_t+9NhN=+RdH@LM%dx9E&DM5w!7_74Du|8Z_@L z$1$XTOQ6ih!gPS3D%Ch2g{sWvr=-UAPt>JTv3NW&(2O+?hjb9(bS^*jNu!V1lBB8n z7;iP#%SwM;-OJ|iw6%r81NhjxM+}J<%+XSqFnRP;$GaUdO88dP76L;@i*#q}xKk9< zy~0~%ip92$hmO<1JIpMm`E=mJr3!1-#NXH&t7NC5qoshJ4pF$HCm3B{ z4jwZfcKH`5xEFYEQ56QgOn|MBaJd^em>jD_ODbkNYND{)d7pE%!||JL{UmI~lkB_& zH-H7vLz_~hc^t)ZN-mLfH_!%%m zM!*ai8BKX4xRQ=xjRRv%iDWLF!mNx|?nHXg2yB2ra5Te2A!~W`4lE&Uo%L{uB;2%6 z->%Q*I z`C|88y()X_UTr(`Cae*DhB2SNSf8uc?cla1Cjs8=%%oV{go_Js34uM)Eok~!5sgLf z^ymVmDP)Dh$P@_pM2HKgl@}GahcpE6-?<$Cu;WAbrGYjd z!2mtegEB;wdVbxJ9}S9H;zJ+((f zg70WUi*VjKRaYEJ3iINP5qR{ULPP>2&|EvY4}J&;oEqSSNM*3H`-Zb9*v+H!v4p!N zmna)2*gV?_&RxgQq|h_&xY>#wAtJ}WA!(d19bfJu@_GX3MoUJ2H}imutbG#}S$6xb z@-YdUgQGwm^Q#c%un7#>o{+3yQP?0i4+tOdTqHqorRdbE$dYb}fp=M%?{R4`6$zLr;o!Sni+y^M2z{p?+f~FdZ zf?o&3E)Gt)3Z#1Y7wii>|7itVN1E!-)-4G5jy^gZf5*Z(bnpmW{-(ti;S0ppZ-&2M ze)a2uj!`69$b4dl@-LSF!+$#rfAmf$(D3NZA+L32ioy7P1Es7A4U7EBYC%4BGTu|1 zE|A!V=AywAihR6wyoWyVtMDGT$nF;JVIcr7EsX29@dr=|?nT;hBb0?$XdG0AFod*v zo|d#6lasPDLFjy@r}T0)s+v6Z2xaq>BWtl^n&o=Q7L0%|z=1ZrQUsA%IX0~?-U>}F zoDquCV67yN z09=ySDGK;IkYc5Ol$sc;LF%^4)_9eDWGNIlm=ReNjOF3<{kD|)4s3M+m(Sr4NG-$i zYkN;N^;0=kBCaAqJba3RTO93Q$5DibE}w%v8@&ok$P2L~)8YC7q71Lv_^K!Y6peiL zAB*kqMoQht&2{YR57Bw|Ya0}sL>$-)niAd2qPWZm))QB27UQma1Imk7@-PMfiIjw3 zLjl-^?G8*gE8-gxJ{)zkCEJ-Hd>Q%C*jO@Ak5~L+YvFkpdkDGqBa5*FRTKdBH>QVo zV!JlegqDs5V3{`7MOO(%A-zNN5-b`;55^+0Sze7o zNu4kCvRFM=%@og;_*r_GgDw%B|Bc*g{S!&m>dCE}%1vS7t0S6GRScv{+59fxsWk+Qv7vZW`>K&ipE%?ij4PY}(+C&-u79 z=R>&y%c^kM5RkhAmA9oJVVo3@(PI>#q&hHKm=<9}S3`LVOK?gXDbbjt0?=|>I2%u@ z#KVM3!jf-Sd)+z*&%^=UTZ?@y;3_*Lc+3Sa4K2&P3p!47@5Q(}J0zp_QdJ8bwVU zJ-ylVx_#O0%29VSwh-f_0WUm8XPDqZuFY{yo~MH+_(3BZO6KBG7@c&wvuWj8owyRm zcX=t{09E<;+k95@17k-77BA@7u`8F006vfJFqYxG?eons>m$5hrK^LJbR7_C4zLsfT z`OPJ?=!6m`YN2MPh&1AJj#D4)Y(27k5q8&sLUg%*L8W{-qMQ>Zs$iBJ6P%R7T$VJy zf9{Rb$9{N3`@O5+pTAojIH5F^r)&kF?T*u!Z5vr(OC;tipxljxjHe+P zzLo91Un~~`6cM99p}{CzPJypJg55xV6f#LTQafZP|R$Q0*Gu^WKRD*U=x zUQBBBTJTGjh|PN)d$3}Q%_^*1`3Ce>;K#9r`N1r@l;-$6`13p)P1lOw_)>l&gWuxP zEn~@xoV!Jl{BRTmqUjV*Ku;L#L3wn%H~*##_fJj zO7bp9YySh~Us#v|UpVKh1SAEsK6b<|?8hsMz^tLorMOgfhk^;HLZmQ8vcnCh1*R}o zP?RaOmE|DjKL((SivLJj&G3D$eT37&Bwd$IC0h#PO<<(JqH45zrC4I5+*s?U6uCuF zH&gfZdNV~~Geu!DMR)S0>Db4O^P076iY+kAm_W-bxe zxgK2tr>;X%CV(L>o*AuR*6x;laqeM(U_SIhkLqBwvD8`=Ly^#0EC~FNV$Qd#AaoAc z@)w1R>6O^AE0poM&E$<92lZV4jq)UK;Mv8YSiH9=4yU1PB5pgvYOj?PIUJezA}DjQ z6g-n&Hq3jJKsU&xTj8DJhq$(~G&?E2A4Q+wU_z|lZ{5t&Q1uO;HOCs%Tu5@-1gnP^R6-3vmA-D{rroO=(WkLqs ztXWS^^}_5ftrR|6D{psiEdmtS+w8KWcW^tl899VB$-fhF_!pRjgRsn&rYu;(Bwi)mpa^Px~+ zkULH?(~_MMOAbq<5=|{lltmpv=tsj%K=4Y$aK&Ddw|Yzp0@V8_QuP25rIe1Ux|xt? zk2PrB5jXfDcqlMvBK&0x7R5+m`6Lp#p^4NKgv3Xa{7#YH^r<26y*eC@YoJ_?2o_UNk5jr7M!@06O)vpSA*n5K7sCM>no9Uzh}4$&rnESDtY-@^rnZa>fl`e{ zQAlA3RKCd;D86JUiiQISe}-oy;(QFs16aaY%IM&jWS_d21P%hoqv1R+{7uE{VduF7 z;P9YPG{?r!?=mbe7l&CW+i3kX&(ZZd5DaF(O@c=H3mTPH5kQsD#URbgv_W{qN|Tvl znX}k2@|tN7=~i!IL?;h!Yt2UiOGz{d4Ld-qehxCZKEtk8vW5{r(%lU;2LZ z`sAl(zS9+x=SCuw^?dZ^0atWf1fMNYuaoPM^Ap8D~-b=v4=c`qh(<79NJe?OFA?kmL-LO;Q(REZmvd1^F z{;i9~d^eKS52|@s)cj_q|N@e|fT#sPFRPmdD)R0D(#HY*ac{ z)NeQKtZ|P`LK+*19COL(qJH~^TPJ@q0RuH7ksU8SR@Tp0R)70<*Yt#7 z7bKuRwtv4~?^d1s?Il#d(f0iXe8s49yT1M0w^Tp=sY68l zAGZ?jeeckR0wjOrf_heDu z|FQ+g9<|%?1b_IS=8O6PuWftR_DdO_@tc1k>PO7&cJ|&=mJ|Gmn~U}N@yMk|ZZ&V< zxm3U7kM{}q!>)XB)#3|JXZWkce))Lpb36CAXSWKf-{qnn0{-yQr>|=I{9>x_^wbBU ze&Ut~ZS~1XbEy8PXZy+em(IH8s$EbXh(r$S(^=HV=YG9O-)=QjUwYx2qQ0TWURO51 zx);?aj=W6Pn~!}sbr#!?)28n(>XR4DIQa1$zaaP{?%YZPYGnP7-6^7e`r?wxzh>CJ*zaDszh?B?{`Q^EWP(}aDd!6K(@r^e zaq@{pglE^7To0$cSbzAxBZH{EVd;1Qf5zt@-FD0Q#LFTFu9_?A&phUZ$x|0Gde#5z z&qV#XnRTx{WIRE5I=(0O>4lNqpSbp)EmXh9rX2h~A73=?{l5(T@gl14-%WmZ)-ij& ze6%s0>SwN$`}dMpCcH9rb2iRLuX&Oq`gr!AW;{|;$>_|ula`A5D;Lf=^Q#9~zq*`o zwy2*oJbv(~{%pS=-}_5ZzwoLVOV5pVqVMir)j`x>ckP@#xBBrYs&9Yo8=`*EU7c%R z9ROZYcwodgceY$!$@s{OSLJ-&IO5C!&yJo?@IAjeK;T*0^!!!#*RXyae8_51 zf6JdgAO703FA09YpmCypS!D8l=e_wg)o=HWqz`w^-+cbpw?pz+c&aYBTEO4k<)anp z%WtRpF&$#TRZvOqp5zc>H7)z2hRL{yW!E9R6lT$9RC&5@BG8N<)2gi(4H>~ z_!aZAr#*82TU0-@J}v4W{_B4pK56&_s{g|eQBl8Y;Y;uT-y26zeSORj^-taO`L3&b zL%V7Yq2+&!%@;cy|N?K@Beg90sm>u1M{~1@gu6=W6t}c{`1Gn9v?M; z@%`yPN_zXn@ajF@c%H435nnzh;C~owY__r|8@KpTABp;(C-nRFu2DY`{<7#OS-<+G zN#AbF_T7>9web2ik&c^Pc+g{zaU7n`|Jq5^8)ptrrMfb@-BPlRsP8yGG3b|1&m#C8 zk9kMbcUslqjgxj`bgZtqR@85_-SNj{Y7zv0QZ|VL- z->z>`eN%I_sNZzN&W(F4`xDh4aOkeG{(`@~bz$$*s6P8fLey{hhfZ5mEPkHq2QU1) zsNX*Q&i2m_eUjmMqCwW5(Es&Y?|g^q%~wtm^}9T|?YD<6XZs~}tk_3ux-Rd0)YR+Q zdh6c(U;)4D;N|C@wF{%egExCt)_>FV%nqOZAK~BZ?p;KE`GC%^9&kPcU&AvXHbKJPI#gV)$e|VSkG%J|9(lohvx4}^_w)v_IID%a{gC<2Rhve=gyl@sr@QYyN!rc{?Bd`U0xoZgsi9 z^XCsPyzIuK89&|Rj4eg|p)Ef&oEmC+Y{i{oJlIE`OWqPhL1e)DQmGg`fR! z&_dZm=MRy@j zt~u)4zjv&?k3s2Sg?F4*0p4|NV zx2mYVf5Tc)U;p%L_uuwCTMt7ozC+eObMEt>Z~ae#Kd9jhQE!ev^_zZOZ)Ei|j~4Zl z5AE~gS=T>K^+y~p`1qRS(jQk%+nDi}E(gkW-n5<3<7HsNOv5X#s!1>?5abcgJk1 z?=p9?sK2P>$@~BF?NA(jImI(MO z7S8W|kB`a@owoc7KiPxA>q;z%MLW^8PNLccuD0yAKle*DfFY{kuI! zQGMmTLf&4p{`or@ZUptfPk2(G=QNODH zZvR|7p7G_{TO~bw>d>mv6W+Xq;Jasq-nZuIwNsy}e1^$s^@iZHYo2*IaqT~PGWt+4 zk)!|5nirl~H~xmtM-ZNx)tB%e*1XuY`IYW__oVu!T|N-?FMr-;(31CAzYgAcPf`Es z;-TYiAI)NeE{cGQE8@v4Nf3bG1l=Je|oNteAdhr>mpE6L=;dlC7f6t}cUQG4o z)(ZrlcTT*aZoxm<`l-qOLDau@+Khi+fAuB=KOuFCsQ+N#m){*;HIC}*&Nxuk|Mkf; z4*rIXTkMg}qW;4Xk!`+Sxs2e4&y#fN!>_83d~9#FAG_SSPQrixr++>FDdQu%-y+xN zy2yf4Z=K8J*pll<3;0i3Zi)=tuY~ZQu=$Rn{?nB&A5nV@dd$Ewy6|05|5>}QdOxx& z(@(pP75dtmuZEquVu$zMC-|CIhYR>`9-jQ;Ax})D`aiCEOw@m8u9&dr+iZRh-~W%I z{+AoqMjOYmc{zNESU+oxQ=_ALU9$(_X(@S-!>?_3)e{{Cyu;}K%wb|ZtnHM2uFLl$ zm|inzw?7H^&expr?cQs?Bs`^$-YV)h>U6=;3)c*%`n@^{zPWaznk9+H4n2(OXB_Z_ zfZux6T`#`3>UOH{eX^i4Yq$MBkWw z{U-yz9NGgj-b5msY|>rS?|V$cb;mxrmcc)Ly{O;sts9QNZ~0%Te!IbMi~5Rv#*JUo z^aIsz|M@YZzVehow;VnX976C+xng@!-|OUQA3U>&$;ruYHWKx{XH_4#@FzxxXB@w^ zsQ+{4RUbXLn#pzLONG9(_RzgL?0#=Iw$4wUE9mOls=@%vbp7W%@GkUYXoch4EY+rBlc5hKXzT4^<9}i~o+lcaAMg0+rH))tW{Edx&~-@4nAgGc!r#xWkVZ^^>+45?^`LD}?9dD+Iq- zn|Nx6{cit-t^Y_`u9GQyT(Gil3!`t{_SjwEX}bQgvD>wLM|h5j2s_Ez^fe!RQo8ak zs;}%P+n>JY>Dp6{Sw;0bzWSrUlYV1|A?;s%nd%2D+(p!94_v)=?q`=!eXlDY5%tH_ zk9_%|M+Q*+o-e&1>QC6Q(}CMhVf1$M2jxCGY1i#%Km5^w1i#lSg5It@`TY75KA6hr zXZ;{S_tu`ab4q3Jsoi!Z_%81(6YV+o zxS_k%&tP)(unX=I^|PkGvfWQBdJufcIzgY;Ub@dahiy8Gjq?t(C7rzNsy!F%bS9IZ z`~OYYPu5=X#EKCIJ@W|R>2c{<0{?>a+ELG4e=*hX@u%Hn{frJbe!qGc)tA3kA?w$k zvHWL)(fMe3S5bfMFR9h{_GI*=>IO-#7VR}B`S?dy5uVXYCOPWAoAO8&C?!`;v7G5I>GpYiQ20{)}2vl}yeQg!6ynyqAg$C(e^ z^vebGL-N@bvVNocw>p2=rBr{=rc-47X$M}nbQR;*$vYZF{il0;dCler_a*qPHd`s` zKYMkX)SL4eeXHB`OHu#zv`J@w*^$lrpH@9D>c6`%J-XY;TM(XI56g-AfBosm_s3tq zBddS$ucH3nOxBZWh8`tf4#1Wm|sAcoMQ5Ru-NX(w|}(hScd0oA?L5#y=?WDn}5UB|M>dp`O84jWHi z!|-&iM{Z_v4&HG1gMes9rZ!hXA zuK&5)>NzJ;{j~eU`dPRChl^{+JhzbQCrNwDy2_0|d41k1f28`EnOy{)$_bb3@g)Yo zz%%3X2St7NvuEvFwVd(C=EeUK^#=_5;PKjp%nlHl_pYe#bI2~;mezetc*^^nF6#fh z^?$joV#bdnE&JzL+lcz=UcHvh9>CUN{i%X3tsD5ljO*vTcNyV1 zeu$6**A3b6$YHlGV*1Fi3x&M5Zg`*5&scWhAq2nWRdIoT_`91NKA@h-b+hYRT}kT_fDcMvJS`Nd!-j`+>oO6mgV?c3goSncig zIQ6CEVw0ya=}mqZQzj^a(WacJ2AG14&9D^d@RLkUwEiDD-wC(e-B2)Y<(7-(q4S~X zm~~L8G;c~C<(xA+b_j=kM#mCKzip^Z+!0kWC63O-QrRSC{B-SBk-I)}A8t!9tsCH0 zG_GpT7PEtH#ogka&CPZE}AkYOq?*$b~yz*CT!)=V0jmD%wTrt zKBOn%Zx}iFQ1GMMEX6+NdzHs3ohPMjFo0g4l|VxABa*?h63BNgLJnWStORXETz(e` zeu%hK!$=*BMd9a+xY&*;1BCA}QuXv9epAZNau#*fk#3 z9rOAu1`=M#E8vP8PRkwL)ub8T`Xq$XTo(5Gf#?~CU65*)q!gx?VF zs~ME=2YI|5*F8+wa-6+&P(HxYdY*tti^8Z1zbw1$x$#mpmlNJnr)F)5<>HNy1*R(5 zkj}tOCQUFPC9cFyelLidzr7jUT|N!qoRFu;P#c0X{yEHe1fyk+$D&Vf7BQ53Fm|pPh#U=N92O<%ZmpR~#FAqn)gdH58#AaMON*n)L#E`8cfJEC`BRVIc?!zI zSndy;6O&0-a@JTg48=(0x}ps}5LJdbA#O!wxcJ;HFSrfx0eqgvE@7~Ce=M%lal>Pf zH+X0~hKb`?9v1)u(}OAq@RXDMf<}a>1+?w|2?gSo+keF5ySj8sDn30P%jS}1g>?^c zb0$4C0hlXd+38J9CM1%HSD2csEfMGTZFSch%On}9d3~$L_Zv8p-#vW?4u|c1*WGXI zYEE%mXPcPjigtr&F_MpU@71faw=^AsP_)Qvlt#sl69ZF>PrLJ;75n}J%UsbGqGPd} zYTaj8+y!U#{}$JbTH6{g5v=GpaE!Riy%s8p!}|-MC2X^15>w&gMY!PB^UfuCQzL9{ z$d@@OVb+U_E!JKP#;m`~Z9B8>|lY^KWG*hk_A?de_D1fWY56p zzd~W+G$413;w2N9t02EO7mRxExq#Ah4zTN5uG?jcxfJ3Z6*%zt+h~Mk__V zQXyjdiF|aRBg`{omp;jlC z1g$%EVQH4v^drFnaM5E>7IGWa3LsfZd=?tK%1Vya65MubqQc>3qM@-a4fn*=o72kq zzq0sp^cr7aTZVSpY%H6944g@DrIy(sg=#=XWA!5Z1?@0T-WO7~XPSYu!pxKJH{sQ) z>~{f$jaM{2r-otIGs60>)UUvYBCp~AgVU129cC3K3CLN4RRClU@#0gYH82mFNVg|| zp~AS#hcw|g)k{U43S)U?UJtTnLn#|nSU$;Pgm;74yvLMVTL*3>-JX>8vvn0lSe4JY zy4&6F#~wOwwvKq%u4D7O=fWUE4IGj(F2>TTW$9(AY2Ci-kZ0Qk-f{}1pJZ`czK1#Y z4a8PjXK1-e5)shV<7RzJ#^lXln_O6ha9_ZrT!UL3neJLF{^SuLBGF4!3Q9(VYzPWm zx>$W3uC++zDhLT)a{&gYRD)TAmF^t&^F3a~JI(O+)f+s12Xj)+oTi}0UcmEhv1wet zT5;m9h%}Cbvn;eXtBpRvo<#E!Fh2?d2;2#_Wem$q9HwWXJccE#U}n1>8y1^fo(hlS zK=6U65`pDpaRkOKX~84X*s@o?0iTKd9eai5M@$ei!nNx0E{n0TWTGAed;o$T!*)3f zI`pdQvbjtwo@BXw|CpyR=^kG57( z8ee<~nK(OAZA{7);-Uacl~6C)R`g(nZi7Yy>I)zbaZ!MZTpPA4063)w{P@sC0YDXv zdMvldP*5R$SEW*Emd?JPIVskX%!vyL@%_@^O+XFf+Gm;1wW&yu3Qy zoCpC9_Ajs=EeVJnTdoM~qO)XU83}CK;t@A$@F~4xS3LqtYcUmJL0}V|8I+oohEE!I zSAByq$;aX%PeH+aQIl-iG4j7rvD6f>fw|dVBpQTQx@A203O-r<>=jTh!omVt3pW~+ zgRK|v&{HIqHWwOb+zbWsx)|35za~R0ZnkfV5O1$yWZq|m1=%k>_uIsR(dE1KTw#PR z76tS`FsNXATWPC3E{?_K1~RcJtWar@+7@f-F)6*VF_bbaA-6Z;hz8xXI<90>m;-I; zHX~T$V#z7okY&(SBRye6_Qi6ilt2>x7e}&%CoYs;X#{=~s78IdiE(Kgma;H9v~r4r z-9If+1zI*?Wkwke04sstF5Mdm)rC+n@6cIf|5pu>Zu*GhRgUy>SS(99hz*-QtS740 zAREEy@1@YLb`bT@ZaJ1B7+trgZ`){aESsvVsHz=aS!*8KVy5C|G3a!wefw^&HMO%} z&8QLaoSCbIkcCvk^=K;4cV_H^~BDQ(sffZe1Hx50(`4i)OMuT~-FBSoVI;2n*^6A37e7 zF(#KtQq-PpN+!q63UW+4!EvD7J}v>wQ{d-r4&}_M#f!mY@7<sRU%XiJk}`RgX#dc34?~? zo+XcUn)qcilRSLOUZ~#C#iomQE9-Xg@rH<83U@7G&5S8B1gapi>t8XA}p-q)z;V;VG^)@Hes*mXu22f(j~py|8E$ zXN#~U@T|k7dOehDumsn|BkgVO=7vnHxv^qQsy>kcp~A0UF{wa*GAdidhREAs|x~3}alVXv@r~{)HdPteB zxlVo?Sd7c-#0ep|!Bj=>XngRy6W`qVFEGddM3N|ymb7a5c=7MBAzNZi5(n?#7v#i1 z1y9SflN7EfgSHq7&bfsgpy$+%?|Jfhg@vPY5&0sI%VH?F_^JO4POC~3+2 z@VD2oJY6hSZMmY2dtJJ^WmmB=YJhHYHvJKj*JGh1u(;02*XGh@W?ZZR1P&_%p}Hkk z&H}%xQuXZQFT6>Q;bO?z*DdI&_+=4bvrNiYf!rgI;laWaiFz)LR(T>2JqFm6KuAOh zghZ4amzOl)D_iPR^P%ZDoW6{~8B7Rw9zDI;6l71Q;R+*~j!rJtD1$ZA;$}0RLXcYK z^%}6+L_;c;gSbWUbtQUDc&ux4vG^3=m^!VK9WW5>lb;L9y>w)F5D0AC|J z!ALKfu5-)VhFL)BIs%r197dQmvmVLsYR7GQD%WV{5^;fYk!Ey>N zW8q{=y}+ddt4+6L;wA<>`+^Nkq|D(hXkQaxy45F_ku!YbW=%h6d5Y)_IWjufnp8ZQ z&f;MmGuN1webUVyUst1X55Pvz3XD#+jXMgq9)$!ghQH0jQZ#Z5Mtww&PjQu>n~~GE z1GK+j2~HMEY@n91!a{C%S`m!q)#xLd7i*D_n*2RdWS}+fTqs&1?WFO3>XA*iaefcS zwlk9Yf+Jm-aaCBO^x=0L2tMQ&=}KT+AP5^UseA)I!y;WVrl$eRJk3_>8>>h25;_<0 z1;bZRMF5>`$#tkJhokuqC~snUrZ}>Rj88Q@{alK0!ob^HI$4AJsNeusb-touWdZ(j zdF5;=nv9lapDYZ1pbVT!T#r*ewXH_~buENtzerZXCq!AEmD5u^QUX1k={f_+%1V5Y zl<}zzT*QYlg2$i$*E8U6Ct-O&w^O|Mak+z26TVO!9UGt~B#fMc`=<#CZc5XYQ)YB5 zGdY$Tnm*3V!g;F;lbAIvI!G)5}Xh+c`WNrA76|X-raD{PliGVY*(m; zRR8T!4hdC8VT@BYH_FU5gZ{$!WMMmu;@1~JGv;D>vPe5jiEu5def&lkG)mbBEjAVv zzDlFPr5JUA`?5950;_PYW_jdIU=fVQZ=(j=q*q85OVO(IjUY)J6*H64MBF8!b*kqE ze~>J^fTJ3B;8O1mr4mcN9SSfoxpsT@pIbv9$@T6}AT1F1un&PmpaKb`#E+dr0vUM^ z%4=Be46*fx!7+k_MQNk0qZ#4Ig%O(LL)Sipezuzp1wvBWU06Iqu$_PA7|gANSyfCh zY+^)LtAjX;D0dXDCbYs$`GA+RF-s)k!94DadOp(=0?izf==UNnsM&Wvo31tz2~-I zV|<8E*>C}Vwm?P^Tj`z`p9~)qBUn?7F}DH28J$Vz9EqatagDABJguo74&Uid5j`nhYtYS{PYmkt)OC4^oEnmM;;G%Q#vI)%t>$?5P(m@g*Tz zYJ-yyg4;iWNSHoSw(Vp5(6Bw@Ckdo^Cw?qN!uU+QOi5Efth(?kIpUG z5eHfeICP+{wsH~^2rvAvI7^ofv~~k*J75Vhx!8=-@JqdQ%Q)1EDsY7x?!Cf>+}I0Q zkT@}^b50`{Edv%|v<8n(OnwFb_ykMAI}foLts@Ji zK2#z9#ty{tPwT_WYyDH~zWa(ck*KsY3dtmI$|3>WWtNLf=f1iJ*! z-=SC0N1@!0rS&VIv!{w_SssY*$U|B}i^{rnKIZ{E&}hU_GWj0KIy(CUvO6z~`I=7J?d5rZy*4p$8QzV)NY=$2it zi#`d9*?17jJy=?^GrTmr;I4K1j%K=@qGw4jGTV_{jmqQvR=$6b%D|mi&i$m3~CsV zh8R04a!+*(W5vKx-V8sA&8m}eWcH{$u`=2iJXh?ZE*`C4OEa)B2(M#D0!4F*9-bI5 zXiql`HaXNkU5RcYL~c_ZZW$}2%#aWxo&MVnE$27B+j8!1>srq1d_&85Gk0z|=a#>= zoI86^%Q=1aZaME8aOp<3M(Xh#6i^wB$90Cl7}^5C`KG_V0u7K^Tr=%S>ao#z(!W9V zhTOl+kUSz+D6{kQLZKq+^=bu5s}&8UuD7I2#~41q>w5 zUFey;-|Drr98#E;27(r3oTluPU33A-wn)`-3p&3tsN0Z%X#noK64M4XZ#c=wUfK zD1wpCx=9Q{Rdo&G^p8&c-!sbwk`BsQO# zfRM*gW&@l#&BQWv++kV;*P+0*2Y1>yy?t({wVfr_BnM#oM60qyQJq-D&*(sOYu*;h z2IV}n6Rqei^wbD<5ehM5x&(w@9x9q6uv%jXxNpGqfT_mfSe9w1o8UO?6lS>~IPBl> zTEw_E|9c2$JpILtGE znD2bRj?d%R6S!zFvJ?x6e%!EyL4#~J4U8R^h))>|9_FmNp~@j~Rfeu#fp;T@%_^4n zWqgAq#sWUa(`!WN+TOze(;zG%-P4{MHES)d64LH$va(3R1>y*^b9+P|q!Y(gIJa8< zod$zaV#TSs6DCP#zhkfA9u08Unn;sW;j_WAIF&G%V_{uH$3Pi|CCIK4W_!7-Hr2^1 zn34e_S9L6&N#OWvfc>ZwE}4ul5E3xreI|M|7%2gVCQ-~l5S^^R&}7U>2%tOS1{=xD zOp3)p!^IO<7NqVx+Mv|b^c1t-bVz@ah$A|k){W>u{lcGh!(v%g;n(>ZGDWJW)dHQE zM&u7s>wdJz#-y}Pux6d(1ErhHF}Xrd9a8&(Lk#mo4E9s_ z+iEPj!~jkPODj^6fq=}lBnXvp@NWOr76hS&Y(Y2w582{NP@cvTnzL!WMy+73(W_Kn zmCXYbUI2a_`c?u)r4l$NP%+D0 zL)JQC&^RlrfXo2;e5j)a!~;hTsjjW;-Z$1DmQ{5ulYw-igW$|&Xi3_my*@b(H?o+$ zU9wMb=8^^Z9s~{Ro=CTS4J85v*t0k8hWW}8K4K4?G)~v!$zgJ6+C(EqV_fUQt?jrP zA-akZO};Q;*9U}>5J05~o~4ll5tn*oYpKVQ#?-;iMGAYwm@_{Cl%)jE$xu$}a`>}6 zc;W@(*jC15@F)dV5Y(*HDvq*{CI}gPq=W+|K|{5a7i^lsTZ*Ij^L*5mIA{x?;FVif z>XO zGwSS%w&s@0L59h>9%icG6NsoINF7;m^GO}q0)dbC9Izo>!^%bz@@$vH51(KMY(#(s zxg9imD=?16bnof|SYwo4M=seTc2*>5Qb{0fY_qx%~k{Ev@HaJ8PlflM$Y z=XUd0l9)&W(Iq@46IJi2L}m9Wx!8Jv0z<(}UG^$uP#Du!r0AuMzY;*uai3UFOZTzFuaLw- z{RR#&iYmtDPJnL$a0PsNhcLH@!w+Ig;Qyj4tR?i4aQxrlXkS|yVZ;|^X8;a(OU zE3j`)ofcqIN4z7^v6nC!+u+b#1!WeN){L_kp>Ne9>Yxx>hdau?LavpntW+8q2&dUz zG+&>MhiExNAndb>g;k;Y4j}(kUjR*~gHr}f)(=?18LCVt^(rSj&(zAJdnq(DO0*&{ z4Rs5Og5rXK2k0_fR)MxLviC4DT@;#Yw1dSOEro^p6PEA*UUmbQZ+s$t~b40TD#oGh0I(39@a?w^@m8zu>4b^Cukt zo~>GzsY|0F4@?%;Y02fTpYUQY+ffEYrKk-yy|;>c@4XHhMLWV`ptBe&;m?&iKbwsb zmJh9u*Q9cp=>Q#x=AqB|C^MkouGar&?>pe+s_Omko!KNbd*|7JwLV>wKw|J&*lac- zK#JK7L1To;%+2nY*`0M}HYC`vQAKIeL_sa+jt{=dK9 zx#!$-=bT&TE=hRY4?nWWo?d?a_dCh7AQ4H^i12-lCZxjPt_=`c8soj5OEtGnE($~P z@Q{y(21uHQ8iCCfEWF}trt!Yk1d_E(ZBx{dnsU>w2oK+{9tg83cw zwszD;rm{L@qbp&BLK_;4fmMUUtCc)YI*p9kQ+)F0ivXl33wN@zIWk=x_er6en|VaS z8V5C^_PTm!T<% zYPzGI{$r+6DSmjLR*P)6th`pgS>9-PW0l6@Mzgwkq<&NoSrDEgH_(+N$Gjj0i$O<2 zau|$IRKH-fyLXgXX;nZYI!g}3DitP>h7VV$8|6tJzBu~o^{=KAPA?MHB2S=4HZ*3j zmXEC3|CReMtSL6jbiKDCHWEWf}U(86g88HO1w$&F`mZ5=XbZe1SHP4kU`HM?PQ58MV z#}53jKyNQ1=owd2li8K!;R_bNgv#`4A{fJ5Q~e%aNq8P4{5< z?oH3$ODIceKe`D=1GWqy4)Pa5X_roJVINN}JUSmfkHU_JOgfQZ(7MMBy?iF>{nmCo@ZH z4uRbXq+@A{eTb|zQ`4||a_}sqPA;4T!u>3^ulyeX2z=%5WsK?ed42G6!Go%_l}|L$ ztesz0ELu^<>=Z;s8ZC+QGsl@A<|Xsd`8ZpPgI-Re8tZeHov3nZn~>}-Ow{`i9Jaq9 z1gD|E_7&7O#T2CtMnN$Zw28&Ke3>UmOgQ@GS{7BXNe3JDv+7$!0YEN&t+bK6j*-Ju9=@sB1x z@`aos&JAM(Dn^zMbPz&?;BUW4H4}s=bD#VQsUi}4l9Ec1duaCEeYzuuJw=B^xjCSk zALkg#n@krUH?2(w1mVceQ3N($Q&Qnetkb_3Nv*1cri-wcgmch(i2xiJ@`7s9AiZsq#YZAXxEz;s*V=kZrLo^evV9r&xObeC+GjAaZ+aCv` z!SPewDQLIMl9B$HmOuNX3s?1D^tr|T7d}KDP#ofkd~NO*2=2=i<1yBRSGqDoDwThC z5b-RNiw)zSWvfO;_uX&aT-8E562nDcL{radA}q5PHBd9Jw&Gw_Ey?k!LE?-MO*4mT z*41eg)_g|ewb@4cUi9)dg3v3|fucyf<+*H^aJordx6k%CqifUzHz28iT zo>E|d=D0^?V?`n^p$xK~6%%cwf~?JyJS-4Vgv|&&T!WXP%p1l<#5Dtg955~l5QDla z?Otw}Y0Oij>y~J-?h+;DxRdJ+mw1cJl=a+a9Kiz>Oht>;OUj8Kx9$ zGHUA35@%;lgeug7=wUf)CUX{^)ofp91k-B-GY~-YF#C+~ln{Z{kkw2B8g18H*ygJ$ z<7&GPRnLOkZQmjyoVNo$OOPm#95g*KwZoFmyJ;@;ascdP&W-5}T96I{YUZ=9X9v<{ zIO7GHE@^2iNEr$9ZEJu^Nv<`$c`np7nx^k|n#QF7eos2pmh3y9Dq2HY6gQKBXG!cc zP@kY%dQaN<3E+nWJ31Hc>8=Ni5JZrEi;*6s`E$?J9f*U1 z>}BkiIRbr@;WAK$Oj4f8_M%%iMVAsVHN9((1l@+}BU7wCvgF##mYPKUpim^j*8>Ib zjpAmY4<=1xE+Zy~hK%ksXBR6tS2 z`MhqTG{3r8Cr-01h)QDdkt6G!DqbDr={XL$jJhuXJcqyt*V)u)B7a^DuYT9s2Ul8C zE0z-9-!JkV3~%jtc&MWZ+aq>ExG3s2RIa?Dvb8=jJppf)Bb5f2JjnV7DN#Cdlh^21 z)Uq_pH3#&Cu6OZt&@%`R|}b6-lAl$eh15ag##sO^+ZS(QbkrH};u z4B#Inx*ZY-xdbcy+aI(4Qizgmbl{rkF#;1yX@hFf_hUK~BER8#YWerrlnZym?wn|KvS)6)Vg7!c= zBcZd+Wh6aIpQSO}IyzugZ)pj7dNn~x^hp)x^o-rj2AFJ7?#}jrjY#xs|42k9Cv9RD zPRIQT-5TW?u)klOJB`Xb#ah|z|5o7yq){(M zjL#|r&772(Pw}{OxN#mtv>R^@xw{f1(r%rN?@I`Pu!SrXBO*#6#YT)nwr-)mOPrPD zNCeA7ga?bkZ|+=zA3jEqoBU-6+tLVU|GXGpRCoAi8XYKgQ;~A5zO+$Fc0jCv#`y&- zC>N0&sAdY)7+o%+m|QzoDdPpSKC~9F1ggFk9uY1P?#AD)PY}2CUBJBrw)a#*Cqssv z^sY;mhcV+RODwKmHB9LNx~O*mK1X1X|4k$@FPm;7^t4eMe(N-{#x~$>jiowrwB>QE z)hs*XwR*ZezQ$`*HhK*qW`|O2ghD9SdG)bzh|VN7$0>JDGbnvKGpV1&R5^;(s85n~ zKQcNr-BIGbu_g&DSFyZ|Wz~fLl3X-R?d^V<4l8+pUqg@yx8R1btcr?Aff^WZ2VCk zE*e@1+k`a>W55`oP01E$6~p)_P8lV}q{zOVZAfMpQsXX{64I1@4EO;-CfgQEkm~6& zA7|}hdeC$Uc*8?DHs;g0U8S_6X&$F|lT>2c!$T@IGC9kH=8D8>h~c5NupgdhXny@0 zA`)uUNhEIpBU#ODH@PH;^i@=;Xq!1Uw< z(n)P%GuFW9TJ3M(tJFIox1_G6zY`L)FiT59As+kif0x7&W-?m^dMrZ^71jVLW)W0Q zz74VumdRNKSVmx@2Ta8Lyw)g#s*$CL)Nv8V8Krjf1qtaX&yk}y*aOKN`vuTJwzzY@ zo~DHhiR<+1E_t1Ugxct6Gl3m<`B}fUw6Z8`SCA=wAaVt@b>2!V_-nvV2~3L|V>Qj} zrZhTshYd8sU)cyAV+PG)Gs~uYD#lbsL;M3K?mhtc7D2Y4_B!m7Y9Rtn*B3c`$ylMeP6@C*O9G{<=5!YVSNaq{us z{PFWQ{^~^w{`$5%Pi>ZV{pE_EAH3%J-!51*>;7Y2bIaFTOBc?WJ9p{x5B}F}|NZdj z_b-3pXYM@n><8YqX!ehudHh2|yX=A6@gmTr(wTq{5qvdM=7d(e62W}*Q_^0#jJuoK zxo*!JX2(KVxLKN3NqpPTgAe$5ha>b`(F(Ctq(2>NV=7zyneYTwct}I+ zWxfOq#mebM!{i|Nw>*;lVzg4e zqJT9jL5Ywy0;t;e#Yp$L7hQ^=Z|7r#)bIvSsYLLVqLA9^krA56E_rZT#Ql`_ePm=1 zt&96!ETYMbG9v^b!X!Qm5HXixaE%nP3dSQ(phJtdj~w6<=Y&rMN|t2x7(6CXhreuY zT7ja={6^)o@F$~K~X(gf~Jh}JSmHk zEvI9;=@pK3ao_vuXa5R+{DMyI8v$zw>=&qAZPll+oc;2Ep(q?S1D1QEOoJ5S=cyEZ zhf^1S1fW0XS4HBcQlUI|(XRll22Ojv$ovs6t~;r==86(9huoCp4YkTrL&U!aBDK>Ctx0VXAj)c*Vz*rO za(yfQQYW}F_K^3lZh4)~HmHLMr%(eWQxHvkPqyHouqb&f{ya8Y%3+cP77s!A!C1C{ z*bTKh@Q0xh%`w9Xby+Gii&J!}nM}SiG)+vBWWwIKSj zxE*KaluDTy6Du9Z4R`s?xg6Xl>DEYyjOISI5`^5WSYDQqSUx@XDQlvC!c_Q}`@EQ@ zM3B3s-f5*aG-2!UFL|mJ&;m;kjg-_;Q?6*l zj@nUe*o#mjs)%k(qF)3enb<7%iV$O$Oy~MivX`1i&=BZzeWKo}Z}CRAO?jGrd1bS+ z6q&SZD%*WVQe8ehAnm@&c>M;Gdh4Ycm3CX&J+K7C*pKXmhqRuv{O;5yn zrzfs5_l!v!yF7a%)7izC@s%;$)EXI-7bG#Dw?*?n8I(eq2>6?ycNLyaD_u+k{DXjF z2yW2@bfSoYfOp3z^=nZ}OX`)eNu+wNvs3--o+V^^#JAR=JsXKh07J?Kr4OJ74+>B= zWG3luO5Z@b>DYHmb`S&<8r=TCoVcc?thTx5>163 zUuY8~M?jzyvT+6C$VM!Gm0lH4#EN6-hbKENQt74gsXm&<0CeCG4*aiPCgk?C7k!C~ z?Tf`a5eu(s3KD@i()Sxo+NB@}8`a zeE-U(hN9f?XHE+=rEvDeeP}SzlF2&tC{jBieDF@t!Jj~ z*c+t@fm1=gPBB>3f;J(o5Ot-BVDIpWx2uW7|Czw1C16Krsc7i4F|dPGWF~AcZB)i= zQOhdzfI6tDy!0-!uy1}MT(G5~Q{Ow!Oe-;)FvxPiAOW)`5k4n_NPXEFtWDJMj1iPD z2YS;jyj>-9d8n(tmDD0}-`5gk%Wx86LfC^@$4Y5@U(sjJe2??_5L(T~^)3x(^wh4# zL}f}CabyvUHA4&vonu+k>Wr!iNcjWp)5kF=N8*PjL6X-$)u69r^Y#oyUD&RT!l`J1 zlxviO{Oz=wWSXPbEyr!Ocv|wZp-_T6XlsHy_M4!N$q#879rNq->*(LT7c1fYVGxprqkxca9P8M=vrBhXh@I^(AL z-!I>xe*Xr53e5R^FJd2Ck+#e`e1V3&N~Uf`iExn8p;l=Ra6L9B;ji0;2XkFogd9QC zbaLSa6)?z}Ag&OfD1Z*^FD?3QNc5HdrNy9gv`rreQD1}~&LyyAq*y+Qq%s`g|Ja zZFxH)FuaD^yLe#KRTww=a{3e^DO-e)h_X=#Z9Mu|_{=))$LSVq1rVn&b)$~D$s$|V z+^s8kpaKX|T>$8g#J^BeuHpR^SCwk`A3d<*&cR>)N${OQuMJx=cCuTu2d&5R0M8(> z$vDfAhoUvj3UeR^>ATuzV;n=dbZnumiz_w4uB5NlymOQad&Q)OH%97Jn;;glB=p(v zw&F@p3&g9Tj;N=338~&zP0=`PoHETr-av6~+kX1YX?4`iYp;AZpq2GHJXBQ;0%3uQA{BX4iwo52{uUszQm? znDSb^tZBD}&&;0bFAm5J!o1~Vlpu_Z&T-*Pw^j8z(o8_nwGk@``AgP0kLV%#nY_0O#zV7^QZ0}NO9 zA&b;d4B2yR7o^*@rNm`3wb;-h{i>!)#1MH|VhrrbSjInIHQqRN@Z@w)lCxbuvIBq~2 zYYDPP6br^oS^ALiuYbi7(&#yTnOQ57Tk#P?&CgJcmPLP&SUSLNz3Y*)hmD$xAy(Sm zNa!c0*M;Cf1L?(PBUWY5O@`zUbSYI;?e2!Jzs~}PpVVNli%sb6%>*`tYDtUSznY^S ztPXmX;%HfZn`r@+OQY!olyKm?J*%kMJh#T}^{S#@a%psnzH#IdG&47Dzn%BSxu;^K zk!Zy|AsbaxSArHbiqK~BPEk#=cS@R+P4R?QqtzOr6}>1j8|`+|RWKH%q#&!AP=`y2 zW?Y~R_fUd@NX`Pj0H(O-QxIkh#Yy&4e`KakI~&cZ63RrHSLY;x^qIJcDCoI{A`W6+ zRVnQgzH?}FUj^JjVDoc}AP6!slTF91+a}}P-O>{*nR+>b_3(-%^X4zYA~}5#FHCj3h6jU6 z8?oN_X%s(=3S`xT3NG^I)_lHFjZBQ%L=8R`@z|}rZFMv+kXz&w%ZY_bq3>Wc$GU*RFWSPn)X|Q3 z(H73#aV}b3=Q#b8NAZX~T;1I?{|Al3<6aem7eShRWlY@Nm-(YKMN4<)sA%uJ@F3Em zkQ7{`)sc?-lIB@)afEZ+_wbkd2(Aw7*~)l*h>lSx+l9K&)I>a1v03?*enW336?Vyl z@7(cO$Grjre2`E~4t0T`l!PCn)dit4v=~sEbjc2l`lDumnF){K~71 z+=Dug<0H)}1dzkQMLrfpjmVE4Ri6=*Ie)=I>SG5)nHbrQgE9lhRGXU$$q&U^|3|PV zL(MH-EAXGu{t@jUfGN(&PM{*KifV`I`rn7?WGa2$ z-9<=BBL@!7qt^ROb0~W!H0wtWtXjTKoE=Rt%Ao#;l!+c?8g#Kneku-MD6(HuzYLZ= zjwDj4yd*K`fi{;(BGE?<39+deLXjp^g+43uqMZAZZWXn_AtAX@sWyqCP^sUfK&3ji zpi07d&6?dQ7}KI zbBn^ZIDEv~x)s112<|BeTh5;^3?Ppv0%TM?iTJ;PmCHv=E!FncB5fjqsY2e^F#}PH z80|*TaPsXP5YE5B<35BO=<5x|xUg|kd@zT+eFHy`AoJzVrgrWX7&{!!>$v9y_1R~$ zs}zk|yS8=TSUKQti)c;W$E>WL8Vh=%?>ku860%E_K=n%-Z2V5h9oyN><|nH;dtYOb zV3jkQE%Mcd<%u)nL^J8+*R(;lHs^?Tr&8Tay8!uaMP;+sN~ylLN$SD$mUx>g(~aP< zjwIJ}+q#Fef3t1Nq$s70;F4#%lJKpyDR1RcWHhtQSouQ*!BnSXX-?L44GRfCKP}e8HFEr}GG|vJenKf)p7Ea1z(IAvZ-qP$FKp znTXbcWFeP+@EyNIdsh+?`x=1ET6f+Y>_Ec1H)2;fR2sy_m)|}XRM&U`SqL4JG~IPK zE5OAhCy-u2A07z$pzoVBtA_zUCSXt1cxHW_S05V(nv7E^l;coqPV`?OM*j7TVB~!l zJ;uOKRyxxyFN~3$({Qq&@^ntL<-QYloa`G?;hOxEOz+G+*>YJj5BIi=X6|%O2N?B7JPzYNP3Ec|@h@x{np|@RhlN=+fKm!tw z`0VsUATC8e(qcxdF^-2L37_3S$wgFeR|J@Ps+-h?OLpbI2uDKO=#4o0{xhv~c<3v} zO`n1cIT9M)s_uG%?2jV}YmKrSl3z5my89mfn5LpW){W@KaU-4c0cR1!c~nH<0Mv^_ z1Vtey^g!9)gH&@_QO9yUHHgM7YCMc6LUXZN)x}*#A<4g_cg#^$!A7Bd`q(jt>-Rkb`Bx|kyZ5l|yPO^1!*I3> z4J{jp68o(XYPw^Ql(`}mr4T%P+&R@~gf?h>xU}!s1$wI0oe5<6m>h3Mru2{|<$#*t zFu*8=id-yo+bAA>rGMZp-6_ zWJI^`Tqu< z=sxFXAK!2839o(S=`a0B<#qr4l!q(-yyn{TFI=|5UGmP2&C0=x?tSLh-ZuH8>gS&_ zc;IJ$@anz2eU?4_?w6eX<}K&#deUcJ_|E3yA3pyZm%QVd&ph@gOZPncV=t@y+a7z) z`OSidU%tnJhxfYctp7Qo^ODd1^mXOix7>T$-;e$JcP_r{=kKAkD8|yDS`|-d2&7P-v z=O47J|DOHtD}Q@n`1yVRx%Xwy{?lF8pL_m!%Udsg`|T&b>%d(%+;DW`jc2_4zgE5f zxT&AGlMfyFjUVo{boK-9`?vB#uRrm?$+=Twci#KNxo3QC{+#>Xx8_g7ol}11zH+zM zw$8rihBw~!tSc`+^%W0)=c=cUx=Vh0+bh2Pw=eJW+|!=4OY`K;kJrq4+Q;W_e9BR zo_yiS|N9@Cj~Th_r1Fce*kjLM-_^YRe;@kKKfGesuOI%Ii=Tem75&%jf8wUcU3kEs zntR;3?-vFRJ8q9X-~Rf$?>XV|$8Wjv{+HhL&%d1g`s3!@b^VJExbUf8dfG#)2VU$Q z`<;C*xbDO6S@7@+jyv{!hrI5OC++e4eg36+`p<6N?*MmrZ0{fLJ@A7U?Q`axbML$E zlE$qIXO;i!o%N#|U;pDhcR&AS=ehkKI{2%fddkR~_8+~ZIr*gf-+$i+EZ=!v02U-|s0`@eVf%SN95-Y-1RIdZRM zyT4@Ji=Ol%D?(@w*?|JCQ|FQO@7k%@+FS+Rcd!M;^{&~))UUBL1fBEjoA3fo%_g#JVDGMHc z$wBLHdhkDAJaYb(&wB6RhOiUdxsd)Y`ml9M*Q%c$1Zh z4C8=ts_nJXdLm#+;uG7Yjpwmh%d8V$zhON*Je<-)pSt}e5A5?j$^-Z<+SkI}mmb4r zCNIM7OYg(-zn$P#-QA!P&V|XWhaW1S9CQUkq6HAd+ZMEF1JwljmEZB$b_WU!2ijm~ zz3s#*O>c0`*oD_k=Z+&g!k>i3U3eFYD1AxQI%p*^+LPTu^dEsbr5hgI~B?8G#tjvgyW9t{(^?n)W&H&EYaq&JjpeWK~vI z+{Vo)ybvI7cBLfCIyI6WiI+ZMVZtoUQ_D84&{9;$h;k_Y6?fEp@}L^WEe6pQh_XN| zUD%=Amt;>wX)(1P}$rQ}AUZwQen`KqaswMI*%U@7?_%0;wN#%-)b74YuN>(($3;}1mE%nYegBx>0 z4^=PG{Z6?v$KhO2%kY=i5yZVEAl$GJz%L1eIXRTRusdUI zrM+!p0$D8T)d71d3~Krr#rYIKmHAQPk3)mvj5mzM+Qsz*?}eiB^%T_3ensMo5n7hB9Q-)mKip@t; zSj=XD7j419;u?eOSJVy_*c3wAi`>SAa|>(@V~YsA<%6h*QV@Gv=zU{JOQzI4&$tnO zHX^~ZWXq;&GDCd521i!T6MSYcBSHUW|AmP6oq$^iY&u2@&q^7nCC6GyrvXU}=gGoa zpBixCLmhtMNX$m~JoU&iQD|pQj!9NEI41cEf0)EE1d{Ge0cteafP`cO~PiKgh zu&$XOTtH0@W+bcVM+v^*=3=!)C`ah%q<@GhsI1Avg53^&<7=e*K0U)77BDDn4fYhU;_G66@_Y zXuY2T*qz`9JzrNpAKk*a_DdTnrb>xc)fXfpS0r*#H}{#eHoF2`g6xkZbm0T?qMm18 zmYoHcJsvCKoC835TIW>3e1_aC+Rce(YihjSo*3YG%2llzo_L%b>tE)zVP)wS} zyiK>-P4?U_B_x|j&8WFq%-k62^~GNq=!16tD^oCPg$8ElUlZqU9GEW<@LOR~49jxK z300X7f}htE*dSEHBYlPlD9eItI&|s$5qL>?CN@CT^4WS-z2WpIEre9QMi;h6odWqz zhOmmEA&@1~n`dMVS}%O8Q$S)K_f~?G?2L%AR0xOKNy#r|*A&g3N!w{ko+>c5uHTRn z^=>Db^DBgIp8%Lc@IVnbuK$|||`BJhy{ zqDXbsy779eG1Y7~?3g1_U8U;pDC(-Cus&d>-In>>lXgwOWeje_>)(}XC+fz`X1ly( zZ^l}csqujoNOD%^ALA0eupKm9QTjTpZhOs3E}~|qnGs}=)@jnuL?=exAZaOsw##c zX2TYzK0L$IcM?G%TGc&@qxKf6HZ#_yV$@2O;TF=cP0%c)VVkrzLpt!@%?=6=8+bgg zV@&U3Ql<=JOp#=zjbH+=)gF+~QqL#x#cLI^pEkv2aktT~H7)yrErmJ)2<+6y&v2cI zzkG-wv!DEHGG3U8I&g4^vc!hR(%WfC_}9d>L^=jJ3AFyJQTEsrm{Ox>J5nD zd?S;{%kGfFTRYxl&8zwE(EID4^0wy1awaBvOVt|)t-Dx9zeCn}C2m!y%H_shvER*UEZ{i=+`l11r|n#BWuK#Loe zxwN+FsHLU(;4+rYRSS9eH;8yYn#`;b{QQSeOypXP_gQG;?CcoUzbF zbTsFR%@MD)rC#;gYrHXJ%x_g%`DtZjPXUz;A>_#NgDR?Es6I9Bwfw1N zLq!2T)+u|BC_S5VF=Im@xCw6v5A;+JV7YCm(x^^1DDn*3Ug7|e5MuQAW{llmP>N|@ z_tvJ^B2@8D0{kBX8Ys?Mi34vDGvw}1kcU&GhRPw`iiJsyuuSE}=VhjlQqyDUuZx?_ zVQ|Yz2i&DZ2fhNhoglkw^y-ljWpX0-Rf;iK-EIr@Ae!V)ibdI((XQqbCf1V`Pu0<;gsg1F4tnQATB$8s!NwWzNdS)$rW~o*>1jc-@#13PS88f z7hZ%r%=CUhIE5ZtAZ6K^sc1Y3@;Bp{q;$+De{t!tr!IRTy1OVe&J2kC&`PUb+1T)C z$muVgn;Eh5l8ABU7RNMNR>~-M`BnSpX>TWw24Y7W!`n@lN~nDB>oihWv~)#nN$PEt z_58uv1t<-;BVW`0=IbKv0S+?xKeA=Xy}ciewu zMvJoQei1K95`#I7M<0GN* zqjwt0Ad6*?#qyb{-CdkLGEgQNun_xZQA(BI5c^5zVMa3ySd!ALK0Rq2t~0t;=Hpp& z31BH_tdi@b9GdBkHOF=s)Z2a;G|vg%@+ns#96OnrC$hb7qI~FK#s3VDm=C5&gT_k9_I7 zNOyu^V+ybS+DQ+D0o6vNUepnJI?2nEhr&NLXiB@NT<**|HV&wS-w#p z7uzAy)HVg39O)U{(V4iiJCba}SN0m5pvwttFD`-GuWqIzFS0w+X-mAW@vnT^UWAgp z#ExKHrGZDGX$1IgoQbW0Tjh?$d0dE@5=Q-qm4}yG1N8t*o`*E674kZ9-1t@Gq~0i2 zvSMi2<_L+OFq}_qi`y^i4&P-SyZpJm7_P}|m>N`+b|*|Wb^h~LMviu7SANKF~YaqQC#Aj!=64g$jKy^t1Zy#7ZXHZCl7?$rc6u&!A>6eQalt8>uJRa_x(n@FRM zh~?;0a`RHfV1H0E;Qp18AWFla+1CQy2v16?M(k7KBC7S{HZ_`+j>@I@Svqv-IN6c$ z`lju`$+|zm!TKRVUh+;Sb@l}YQ^KTnDXbJ;Yl@h3mQq5fBTPAifY8FjOEdFqJqEx; z^vAj455vm^29JmpEM?_HGLTx@A?)zOgiD~6c26Vt6KlQ-!B_n{%BZakkyLCmgPdx`OhD@l{sM}(&TuRNrf=T&gni4@Hm3(sRRz&f8TkbSQ$TI z!u&T@cRE$34 zOEYw2w`;odLXWI_5%vwPo9?-}k4#jUasE57o0d{?6lXIV>!xvMQ>`Yv45nLNaElZ> zbbfF}0;UR`NtP<+8cN1aQ zu?|=Up~sn?#4DiuQk7fTc;gDJ(>%iTZw1r|;#pp0!%OsobK@9ebVT14+ODE;l_j4c z^|h1Xs)APqDqy?pYHC1yjZzw`onJIA^1WCL{wAE4Q3As~Uil2HsBEoIOiy&Fo28za zPQqhO0|Rn7RJJc#7p!ZAP(j{=9F!YBP!4D=ZGm#YFM>`=8B=ZeHKPN8sen`}&|L6w zLXNHYf%3*q#UnQ97)tdVnFht?ny&()QsB3D%m99a4fD}(lb?jsMhV1seXtM?6{~Xi z&d;Sjovxqq^b)3Jt8#gDr8B;))jSfGfo_N5{w3QcD--o9me>m|;*a_}J6yD(v&c1o`efwUad^fx<;+2FjD}lmuxw zG0lNj(|QPI4hTnaY{xe6xAhyWDFkRNQdc86yC_wR#y5^qy?~|D+>W)8P#HCdbjUFQ zF=MeshPXqp>PrZc5ZxYH4AM|#aAWeo5y$`xM6l&^R z55RGBu8c#tqm=eZ4;!>$QyKWjh0$W4jdUq_!$-?PNq=RGK3?=45C*hN-%S{NA2Rs$ zA>DD`*~Q4^IbO}^wo3OaWMhamGpD>RsAUV~DbCx#V!EAKSt(K#B;7UT)_JW02Vz;n zyiQcbt-Zz5qnIOO)58_hvP~~AgBCHVB1v!}&*Npc+b`tq}CKbb@KV_g20437l<@)1sRo9mRed-=$qPYr8m z9}9&CU6{29wa&iglbz1M%F$7yICEd2;=T&FB8NS&xwdIw$$|&H9l8tCp`bX7pLZ=aLsdG!H?0 zV2G2KL&i3$a&m^yyrLFk$$n%SX&T zO*&u)>!UYmL}YA&i5Ym?;W6UDowd!6sfAXLe?0=v$H}qw1)*JLeaqtMO`E)y(kbB5 z34TeP1snkV_LxKUw`YmRdD>wFlUf;{wK_B0sXSFaE}<|?_Z+~f1if&QQGQ4nL)yjG zOE!6zjOwgdK3P*X1@=SHpIozerd)F=(zI2g1*NY_QijDuymz%Ew#Yq?2!~4VXH8${ z$2rbX?Q4|2)^GWv zG(hDnl`NbEnnr5CeMHV3XMeg3-JMTh=ux`ao&L3xwR#I7I!JzG@KvVyAj3IMdwj2= zMWyTupCrg8uqu8^yz4;^9?U~4{FQjQ71>x^sjaTmYM?rbwqy!jFuU^m`5cX3S#vV_ za`4fWxE&75f#M>trphwtCMIs5OG(RUMpsv@2bvUFa{{eSPJ|Nd$Z)IDCOyfj>CV)2 z2bABdOi(waSdOvx&2fEtPkrIz1Y$?v8XiWF>U7S|b$u-A!jMoQO?fO-gnkneH*yF> z8Ez*Qq-0+2YrCbRdXR|hP~>0owvGs?O!p`#fA_k7|H%`d^33CZe)0>(v9=x^pDO?t z5Lh#=hRE}(O`GueQ6|6AWSyKayQIOm7^L$_4B0&a@E(F5Zch}?*9%%m#qw!R=3Ojb z2r)=rOmimhPSG4i17mShvL{+h&>@ddv5T}H*o6;aOUi2jD+qeW2F??ECoMCA3fbzTKIEOUc0CA)|veC@$J{5b*=O=@xVh zbv!KRICEGFp)1}rdcn6EZIJhfno1}GCmdJssQYjY`aKU`D{ZgFBrz_}W;D6XXgxD1 zU1-Wn>TlUhkJssQ5U<5$nQZ?ExXp$qGQ!d_w6SI-W3jb08-%T>Wm#;KQj2{Q8QQMH zUp_%_d7`;U&jFO+ih%}Yd|X;`D}?2=ME5f|gASN6XElMsb^0RERFt+gLOB_& z?KPEnk^07Xg(9XJX8YYTEyEE2I%$V#3ajAQklPSJ*YUwyK7lwEl#V)+%=R|WNsYjo zc0R=Ru9=2*9xpi}{iq^$sF_YpKn3Z0D`r>1JJ_W?2@D(qjnKS?cSWp_{!s2a^PAY z9n85nq(Rr{*OCK4VCdO%;G|m&PQ+IMDjre8IJI%Sb&cBc{pv8&7Vbfov9Nw3}PnAXhl$dqT&*$8+efmO*vg9)dZMp6E<@h@Z4)rSD&#(OM# zbV#~XAwP-GX=*eiEtYbPQ?gUn5WVkW9?+2+Ez#k(^qr1z_05Lh3tqPTkL>thcxZtn zT#t|7Gq>(PFg&ypbfbnxuC{n=HH=kGXQ!USLo|p>jiZksi}3;YXf$dAtDB8&lg){G zrD3M6C-gv1J)BFNkZ>zHULCV{oC7$;0>ldYeYhu;{DUzhn4<{%q6WB;tH&8g5P2NM5u)@6EZxsq&a~X;MKmh%|j!^()|Yx+kbc{D0izdnQp$U z+ML`}hvSv6wu4}azfQL}Kb0xWYFno|p`D8x&%!{LXc@P*!%LA>u;cNjGBR-bb|*BY z?CMqtjW8mon(K}EVY@n#3Gl0(-$}OihFx*X33MfePKCol(r8npPB2BA9N8`OG-5#= z4yJ!KF!6o_ImH-is}x_C*bPG=M#;|-C`6x~t{A+CCL~xTEtBCaPPlRh=~NQod>6sZ ziC0V$eVD@$)wj*;C9w8G$*GesI91&@)8|!hzcP1G<$` zUo0D8qR4=L>vY~Eg5AVG^`}s9J4wRCAeF2h)H3lquZ6{Qk((1UNt>MY()w1f#^ev7 zg&S8)H#+sH2K-m!b$-eDG~=i(^GOlBfQ>KAf46r;PR!)=%%iMM3FG%zo`l)LZpH+c zb=SBZ*rE9yK`PB#5ykZ+-8#Eo$3z4H@22xg5$DvFGaRdqZ`M9U2o49VBhZ{j!B&Bz zYqkbPS@j*HYD78yvPq9M>gQSjIeuJ`?DUa6nV4j9QcL$~I47Fvr)lUP0KAVNCs{&O zE0v2Uy%9PyG<6CMY79VoclbBl>>S0`jyGBJYQAk93Rz;xLzV`#tiA^IHv%}AKnrm1 zIw$_Ak@Zs9;SNLF?q>nl5tsp*QG{P-@ZFWTu=y{pQ&D?M2sN^|HsUjR6VAlJd<3p)ddz_?c0O6V6u-E*Tt(mlk;BLq_O zlE=%#ktV?cZ|$YnsuYGIN-rW24Q&m5*~mW|zb{3#^9a)FA*i2T_3x4`$mV-;B`u6H z7-Sb^mIuxeuBnCf?=L&?3C}F_CI@QraEg~itLkbKW-tX!*)j)7d9`p4w47uxaDk^C z;A!VC*(U}*L854CZkDgmH0Q_+DlwkJlgJrD{@q!{Xp^aq5;aZqE!blc(A8BAdC6hu zF5{`)#B#VL!9qn^G#1xI7z9+v71%aR_pg}nQ+7_x-*U7Cpp>w zeX==8gkAN95!jq`F}nLGK?;nZQnMxIoRlUvn`utvQOJf5uApo4Zvgsp-+QyO+Z4n) zZ~o%Sn97|qRB5%KyC4lGRsf+J1`DsQkRBOf+8R``<&%2+MA@c^2&thW$CTzan`lan z!#^InS1Kmx9zchS@c)?vX7b%IX-&Luub=j&z2V7DYa5#5&+YM|`OREJ<2(Yu9${jf zA+1KYJ*1nLh29K)Tky4m{iOpR=SFq9L87$ZzWRfRV(Ab7=hqT%JoR#!y-KS(zO>bZ z-0@YmhafwKfG1@M?*#6-cdv+{;l9wo|4UX%&hlDfXIATx(jeC zK`Ld?)!}wg7Ww?a>_lfj7c+!-aU6$ta|w*!21ab!`DxY;aNv3 zV`E-Tu!78ngjguWD~@S>SFp!Q*jwr>=(#v07ZAqn5`MAND zGa0Wp2SluL+Z0rN4w1_pq&<<#CnYqG7+zAje-5oVM66>bwJKL%eem+bh<1~9{7c!% z^kI;oHPSCekx6MFMlrmClm@1{LSLuwi>EWmxMUDrA`UpuN?RD90ym=7?xNDG78mhU z!i8@I@QVu{vj%5T8XP~%D&w0{tWX>IOTP(s_Q|UcMLYE3LLlNqV&Q@u#L2X{iXcVo zk|s;>%E56D$KT*N(HehmBE$xEv5YJ#;8hya2$w{;p(*#} zXIg^39Y*_|!ylU_AU>B~&~p9?_#J`y;#EkAC-vk*jb-b?GPwtDe1Mqkc~OL?Iy z-LVC6jYi`z!Sm*7)XD3W?0wxsW-nKE8Zcm!ghM0PiZO#%2?xwLz$ISmjize49WY)ptJ}HidG- zrZcgPLR(2}!Ut*Zu_F$4#Cf;ra*%`-Rtr|x_vFpZN~3f6@rXW*zd^opPP&ts{Cwx! zqEXL(75(9zL+cgqU&dT!5&mWFi?Bh@Be0#|$P=-~!%HbbVP4vv$JlmFtq0N{aMoil zRB&Qn+?Ub5AVaMK4XATh4vm03$cvH4rB;C@t1VgvweR6p^m-xgr)ixIAb-6N6o~Y3 zs(QW)XVc(D0MR~lR*6f?tW;NCnO(|n_Mv+QM)?GSo|duP!~U5X6=ukx;X$5&R(pV) zS{CkC)NylDD3-9?_}pjH+N)e22{J((ixHa;G5--Um4HPaUdr`BFTpy0C&-F81ieH} z$IXHtQ9jjE1~z0}Q7p|s7v2`^M%F2WaNllp7LEY0fj3h7QHGQydpC;%{dxzmV zPmD3llhL`}sc-R2l@(t>s4J(uiGkJLgwW!}G^IRtQd}=TJ6YSSBJWdY+dyR+@v6|= z%pEuk|0DBOwLVp`1h%qzmo=?$$$%?zhg4LV^}MF)RjG~DEDlBX(q_wy0#PNGi(J$u z?$Syq&x(k4mJF|vs_ck%y0psX$aQ7tL7LLo3=!gSagUwE-S*jYLx-*R7FNCDpoPQd zOLySHlx_jsK#(8F(HY)7g@P@!$}8TJaum7r4WDrGyRm4>3Z@K&3drZ^iY^&nzl@Tk zg?>X4GhcanwXYa?AVI}e6sfXA0T$=%TDpx+@k4-rC&6K&=l&>f?T#-<*|K(MNQcyEGSiC|L9;K z0?d?_M|$w5)+~x4<-apH&E&D|o(Om^fq3aDQu_yu^tRf%N~=9yX*Bc$-tG_o3h25! zFR9ZPVlo)@(Q2=SVL#3wn)&csn6l{mz;XRK=4*=E#W5Q0$;sGP7^r&paw6;-WI4!` zQjdxFVS=TRPUw3^kS-#ZO29OwLJCl!mXx>`(M*WjF~u73>sG6>tsTL`@R$|jk<1El zm}bb|CLrm{+wEzb^Ce&=TJ??SyE(~`=H~Rc4#cg+b)S_n<4t^N3PQH-tMA+YV)!G? zW#82w)BgxA@vWV!TyW zE+~#U1gAt>&RZR^G2v4ddlu2!%IS%XUMr4m)%ejuq>i}hX?;b#>c-Qvghj9~d9JvtEd zNog&^x$B9(W<9jdAJVcBR-;iSXK7+1N@XlIJUiUK=4GmARp&fHTw;jj48np~8)o4k zXNoZn%{HWx!&;=y_HbgYiQs>4{f6}$;x(C%KumaP7dm!L0A&{$JJ%v)t?g`DRIE=b zd53oB41NpnRe~NprO}?Vdjz`_VrFB?D0VNVj50E$Vp#LAqke#O5&T;3xHAG*+O%mV zj~wu!7UmLu8I-h`IgWvmNv`?Lo7c}ywdBm ztCcBwl&6U(QOM0}*BoL>uRE+#z#J-1zXt(70{Npw&HfQ1EM?OI6hR71TZUYNmD7zz z-0oW+r#9brmw0#XK)bW8;SH==I<(({dHavhU*ej_D}r^(xIc7M1rKq;FMyIZXCOOC zMjWo=GQSfxTRcpr1|5DTI~bbWe(&@3sh*ZxS)$Tm?wVn6N# zXyihWq1hBo!5K~d6@UJ#h-?YnjjU9tOT>_WZ;Z2 z;G5}`Dc97T>}Pf!*rEl9mDYvuke6MJpO(p?2VtP>np(yK7Nvg>6cwe5g?Dy|K#YVw z6*m}DMoGX~kY~}!k%~i0(d1iAG{754j07$3&4#U|D-UE(8J1E~p<^4!&bNL;F?cgQ zw#>kjWkRgw6c0G~vR?V6Fnk&(gGBO_D%Y@2B<)G7W7uT4DW5`K7V zEu0rDJU??MklsiZGBcnH-i4k`@%^V%qO*2{WW%E*Twqj)m=^Q5UG8b7iC~)T!Z$w{)Vvm{Fq;pQx(8>%YpBfv*N;N zK16~n-AO@>doZO|2 z%9yQr#s4j(=M7WxXSTp=)ev2c*!39R3ZH+d?rg0LA=*dzUR`Z5A*gN;j@fF06`%A* zstEeC0@JQs!w4@aQtVTrq$}K@H*qonyr%f4NdTzpn}qN zu9~8-ty6>F40U)2{Q73skk$I}30%K{@1RrWm-oJlzuZfZtaPu6x215G#G6tui^+GU zM2kR1DQpES+=bp!pgE#d@dR=Pw2NM6uQ>PTe>(A=zdZA{&h+eGJolMLU;UO7FMG$F zCvC#-9w5Yc9N=hzta^IX;m_juo)=%9L<5R<{T1v}@8M1C`g;tzdnZBay%kLH2o9>J zvKjL#;D05P-1@}ZR_oX*!tCWyb55k0tIUTyoJbmF7s&V#ffbeZW*Uy0Q>1fq9sPG|PIjlxR-6Md*!%1g4Cnvwyp$kbWR48GqlWrICqNt&-hJ|kH)x+`YSxY8%F>*4WN2S`Midf<-nWN*{Yu)u zHh`$h=Hv(IYAm7R+4GRZin{!jd;^Io75YyA2m#kGy_L3YIbe_=HO|IHqkLwZJVFqz26u$O#Pm}T zoZ$a4u(;Wp-mQ?uw9WVDCJxqu5a4U{aY-GA#a9gUtMaqNBr?H z9jWXHffng8gdka36Co(yA*=T-TLQ^7yEk;enfNIE6g_;f&7{Hptr=K`i(lI&U&$m- zoh=?;LFKh%vLh+#(h=~#V+y%6^A{|n_I8p>b2Kgh@@>0YEm<*Bte!xEUQ6LKa_Ob% zmkp=DZZxJ20ww_wwt zk8?NPXK+mIGzequFTNiV_(mWxQ^9aW6rsa5s^iTTnl*5$?I^XcZtOXSRe`_3ahJubo$ z`8YZ~f*>1prNNeMxjwCAbEwj(j(aVeM#Z9u?&soJ==Zf2jd|Qa)^A8j#N(}vsYyJo z7S?zIn;SeYoQrr+JF^Nz4LPx1G;%1MKPa9YWD-*H$OUmUfi@7QU=CqN#Z+b0v``bX z@~U?rsphQ;jv_ZA&)X*ioV-wBx9D$)m z=Wi7!u~!FCdZ3dnU3=rty|dD6TFm$axP_3?4Aj1qjZ?|QbkJmfuY@3 z_m_M>BQCG|D7&4MqN{-0na{Maoo?qSrhEv&1vZCGJDo_A=KKwGyp(8UJD^tPmGnOt z4IWvxu)7vMI>VismF-TYR#^${op_}>h)PIZJ*4qs(dYoopAh^a!-IhZ(ZR-%$h$TC z*6B(kF!G^z=o>END9@jtOYyp$j`Az80(e-$c~OXSS3HI9Q4m_D{b-p|Xc&8U!6OZ0 z3322l#F3Y#GaOrI*VJAB^HP_bpOr+$`qU2kj<~72-#5XnIup8>(QA$4G27yyo9x*g zFIAhKx~VsWo#@tY$c0}@6i3=Sh0AFN+)ilWKuq}nf{cC>sG>giy{~@uukg1OSigX( zWt0=!Jt_R6LRKC{3cn(pEja?0s1`(1=Vb}frP^Qrhy7`LKMS~yAQtDzpbDxvI{}@U zxBWs3ccb_rik(=$!4|C%DiRkrVZ%P5u!A|7<6>0b$$=|DY=>J~xpmT!(|>+y=OrAoYGM85v#s$^{Ge!!wCv$U^SZMiE69 zGSB$o5#5euvOYR>Ggw%{y=sl19p_6l71FsNSk76U%&edke{Leu@e6XWP|s`S`*rL9 zYjr8+MG+n68M(7q{^)BCNNu>(2FZ_u>PgdV!)GEU9fqVKfy8Z#d=Pdb8DwF~xiW})au+ko1 zQK?E%pVu~Y82r7Rs8rhna$`}!bW2IW_aytsx3^79ct~Sb712TDi;K?umHjF0AH_#) zA~2#lnYLPvf%fP(HRNVJKW*yv1AzAtd?HSylSiSSpQJ)@CqBuOEKdb9oJSNtg$8v5 zAll@H#_f82>v6*dzmgBgf&+8$}_R&eNOKm`El(9LJ zQqGRgpyQrFSK|+WUlOFqOHmU+oszQkBju$?%-LzSBvCYzQ}{%2s6GW(K)p&XvY29+ z7P_c+D`xM|tHOoNUSjN>YWD8wxRIdM?gtFf8}|ajy||S~n$p^gM<8t%k`rF&S52?T zJjNQzu`CYqV;9qQp>?z)j;4Dy9nCib4kfT=jRLKr|9bKRu2MH&27HkqmXdKC9=~Ns z!aRy2Yh1wF87YcvS$|NcoTw(SsUsBC*HonDFiOwm?L4L4)` zY7W=NJdzh`mP=iFM5!zti#T$blL{9|CP#3nT*@)L55diurN&T1gP9?SBNV1918WD3 z{Car^%BTOHS7uiR?+$Q2GVnzXc24V~vlLp>`(dz?20 zpLgC_?7B)w5sFn1^W1ygOI-}P$My2r5dXUThVELTrK@+>JXW5+7k#~rz{pdjW7##x zq}ggCJ;U(UO0^@fZ9nCt_Bt$Ji;)9a^A(K}7HqBfHIJh?{}DjS{9k1_zbvjQj2Di$ z1KW|TVPy%%XrQNnL6e(QiEz8=zd!xI()3>qAP=7XVl|(ElZjtf{V_<5Br4g9a5iG6 z&SwK9Kb0WYp3my(yyX#QixN#!vm-g#T5MupDAK(G_0~#?fZo__EuXA;TjO}?9Y*z3 z+KZ0ke*+#QNWO?ZAzij=WOU#C=FRi{N>JA+C0f{IB|!*M^9iyV`sg)Z(a&kNivh19 z$i#%ALg-sYO&tM4#%|M1qBro-8ig&;B2J{9l6fv`(H@>2Wo8 z-u%O*O4htyT{dW0`SAIEwe5FR{zm7!p!rJ$PR9A8+IF5ld8mt_U<{xjr56yX}AZd$h~vt&w?y<1#mZy2JR0vlK++&xUR^hY}W zivW~nbZ*E`UECnffdt3D$uZBMWvJr3Cf)t%-F1-f5BarxkigFTPBuIId@LT*l|Lc_ zKPPC0+f-m2(-O_BR;I{;KrA|R4cQtId z*IC7#<}Ce_mY@k3BM9Yf*Ul25WXpMS)1AG(jrHrE_k@$LJK&ACzWJR;9zQ^@g3vqf z#V)<%Qg^PU--u;+Bf+IM+YV8&A{;g;vZW8Yq(119`ktEQQaMktczxUBL)ArN2SDw% zB@|!T9GR|;^OG{etyZ&@4Ncg?dDU0~q(ZJp2_s>{yf*Ob(_$a3PC^%~QP7IpLvz*e z#pb6kFLL#3<>R>9YvQK|zX%T=hFW6@J42^cE1j?syy05$gvN;&r7t}^IX$73PMGOp z@q({bAz?7YS!$(iN{vwH#H`q$m4q`89O3plIM{iu^mNXYQzAS{fPwm0mv}UO+DgDL zUrHl`MhfUH3J))Ip$vbelr)21r3<%rC_6{NywTO>`+==o48jHH?M|h(&?%~{I|`Id z8yVXP1ZxMk$bq5OHawRFqei#cpv`LD5KqZfTg^6-g-q5et% z!EfS+dkAvyeybM`uY9O0HFy8?!AkPLVgT+P$;@Y$aDe_tylTtqgu6#$-=+I= z001(AyC@TZL~Uob6!BRw{Z8K{9xv}MD`0bX3muq-IOsrN zcT?48;U)z3SM3gyc0RvC{}!Tc@s1xv+j@2i<`C!Lxt@4dJ3wU`S4k`GX2srit}!Mi>=>3MnfER$!d-;Kdr8ayn2JR%9I~APlu^5m9jnM4NP86cNu{A$0ezrRX|Y%U^5nYl$yZzJ~~N( zN1174wvjHbsr`>V%9Ij1HIDF+m@ezO*|&U$kT)GxLaQ4YsR=E@tB!7DkXbrGMb)hj zl)JXm5ZNo^*$$0TOa0?FZsUowAk4kH+c3NQPjpU>i~rB2^Q$Nyfq^a?j2!Z#;TZN6aSRth`-_X6 znu00pQyBK5Be*|7C});&3_08-^7t*KwMcXPdiPezbo{#Pkr*U@j~zcDefo(Uw&(Hd zk^K8|_x79t!UjazsdzjNT_sB@%m9Thl56L!T$9)Kk1xB;*YKA&5nOH);RUiU!Yidt zj0Zf!++zq5WU+2{0UEH?8F-{VHd*ORw>)JI>L=&ngrtu)UtzN)o7rjx4gK4P2|A51 zu2Nd{%F0^eiXs%Hf&iI;{atDfUjz_px`{1G zN`u?YoK>5RCNep-nnzA9u2eU7TKL}({Ts5Sp*DYI^B!j*wRy1$`o4>wJ! z6WUkbc*p0iI`Q2nT!|??P{?izk?2vf+i7H?-c2nm6H)GhHbL}`)+%EIOX@AJiWkZU ztJ|uLdX?ExKbLLviHxdKZFb8Ep1Lu)>Pm&AKad<4e{~BDmZ^4ND!~OefFsy zeUAoKVO9}0!&e79N^Zu{*xIcGY#PaSSl4)Cc+mir9k-|RNp9ZkDzF-VuD0ffruRYX z9i+s`<>w}Y5*t$I{QQaU+(6yq`zBrEw00^pcttew=)h=frz+-T`|fW$ z)5#`}{o4pad3e&FEghK@bwKl@!h7km7PFT^zR9X_+pbtDUTeb4S?_j5(waCY0^Und z6iUj!1nk^rmO`f1_ldo*yRY~=k8Ci8WIdpQ0lJCWAuq#lHn zi!&<<8PXR0ps@4pbKX1E`A&h>dbd}zGI#};qG5vDa-JaJqq?{bW{dWXzPY#*GIK4dZKLn^SomuBRkX|0~ri%bf#pWp75vnEh+FGEJ~ zOi$J4=brI`g*j(Df6=0zhP-G|&W^FYy>yJ7%IEcpim77|x^P}Et^)Z6i$%&;5!;%x z;{3cl3PGE$J+K9(0(9cl(=7WG;bueX>C&eFml0$}fIMLQ?{Nu;y<3BPeSGXefSEP^ zKB0^5c#H((Z`i*Rn&%bQMw8IIk!vMkX-$<>f+?#@_(>Rjw}Vtd<6ZuX38lNNY6&wn zox~HGxBBvyZot8Hp8$=Ig!yK<*OH;is$8-WgqT zwd6YC)JIdB@gVQ&gNH_ZceWbh{`mRxcE%a+5OS{jQaT++0HOny`Be9u41xld-2(uK z$#56tAp!nPW)4U`ml6f&02izJb|rSYU3(+6~h}V#8ATG<5TGRFA$# zgZ7wx8c03!c!G?#&*{sB8FHh~JhVF}J0o`3{TI5~d03TLgfh0^K<)(j@$%>fPU)Y>Lhq0P<)3V1f>h;_3oDo^N46J^o6C+HL$s zDPwys`DVZVM@+tNWoN@|FgfH=T^FUTyG+5hGnXDpEQTMb%XJmqD?! zUrexGl!G)i^MoRlNO>qi*fTtjug+z9bRy!Kx8Tt=Z(xZx)frz}Z$T9GaZEAzA(SUm z^(OO1ag3VmFgK+sgtcXBe>V1*_CgNck{pW?tgS(oN-S@UC)%?KtpFdhg2JQn^AiPX zOJ<#=A7xr@U(H#dg)z@P?+&2IbI-$i+e`F`j&bU>kvbk!@np;=pD%&m`Y2d8m!!WS zqolt*$yc(Ze-2jRR03uP<;@M5CqivFN9&J({WyFFL11v5kiY#O7|4+fpZ@bc>nx5k7UrSTwZocQGw{BS%0U#`eg8$N$jo4%PktY=`s+(Q8?2{MRR3qoRl*?hu* z&6;&QQ#`PIaOI$3){Ll7h#i#9_l}__SRXo%p^T{tT@6o6b+$dSyUqd3c_epQ*-SRB z;Fx5P!o!F#gPuT?sP+9u=j@^iV zS-(L`roL%eY}-OO(JPN#d{P1Vy+Xq!DQ#^@AT4jLy!Y z3;R95eFSNRsuh*Z;$f-eN6!;5S`M6Q%av?H!z(JS&C&0>rk$#kA7>@M-kwspv^mlT zPwFJSJ8OH6!7_XGzWRfNGHw7|MR23eWhj)fY;s}^-pOiC#IQJSh;`}aCTEJC+)SgV zsPO+FNPXwmEMGmmV#&Pui*y|d2e_nhvQf1YGx@8Mh3Qj%NfSN|V8<2Y3>v}}`UR(7 z1{d6lKB!1M`k)dDeH>fG-{etZT)}ClZ^Za+%yJD;p1*R+E0XDQX1o#3?X<)|ch21e zoPx~Yp45#n327<%B7`M?$h_Axby>cRiMhK2$^JR&zX^|xr^x@odr0VK;sJprelZi5TetN;VAz$z+IYxB*1}OMxwxr0?emj zH!h-(+i{y3%}PhH4C4UAniwE8&dJXr6hNYA z)>yOs=~O5c+gZV}62}%E-JwIPNzbGBU2tSIonLTdQ9>SAk?B%9*xIp0F?DEpRKAKW zx8SjGt}b|_6(bhT6=Foz6SQzHEoACoQ2V2GEO?NH(K?f(K^h!@ipzJo6 zHPWMT*hMS{L9TE$b`6Lf3>8~a=~Uw0Mz)2WDpibZpdS`&`uWgGOQ0ZIpp;pQJs7B7 z4h5MuX3`{*9fBWWp&w$`CUBcbH%N|TU0Ip%F0}0H2svY5Py5%kU^8oF;(acQX>XK{ zn%^i6*lxbIGbSE*xw{1?9PX~)fyvm~))gkVFQqX3Z{As7j7@`$N~JRlo3v+Ui0fZ5XLW&9+3rrl4=gIRF;D13RF=B^YjxygovnC#J8OB<6E=^dItJrs7 z|2%HM4}&|AM8i%wZoC53h)LVH9!M2AED4Ygg=<`zE6bc;I}uEj#gOJ>BG=xa%?gme z-7a6S#RN*65l0W_w*MVjw$-&6Om@nB*uD}-b1(%%BZP&N^!M9yfMT+@jfY}1bzQJu zr6FBc^acC8pu%IGKpmd;wx5P|z8OgQXG~oJ9IId=!#1X4nSEx5ofdAV z#2SYt7K)OCwd|as3tDe)Z$Z%Y8Ko?(FS~0$q``qpL#iBP?Sr^LW6rQ0>u~*q(RWfa zTyTqs&;1YRI}saQapj0cSNlsRW@cKOiz`5che34nqu$IvU?dFLa7@B^B+>z0KA)?I zxzy3zM^T1dlmxjIrz!^u2xwXg^TRV5X9wQgPA)XEyFWMbGKc+vZckP=T+$@_Wc6|t z_&no+t-q2}ie!VAe$gr=?n7RULDHm@g}+Evg3*OWha_u@hl2<9Lu~NK62L?RnEyUV z`Vo3P5}O~cdr>aM(R12g{QuP51>{}AH&vbt*j_YT-{dGuvo+{of#6ezHf>h{-26$| zwVXDffL!Gx^&G)b(S-I0Ml7=*$WO(yNda~g74E|NxjU5ZB0+mfu0hSaYId~<9RQR#Dh#mOV&~N035vg9)vV~^$z`C3kwInFT zy3Qs)fpXa5Sa>{e)?lou!?xPrXjpU9$lk5(w>yTw7xu?wm8Zl-$lb)~Sa=!^C#9xy z`z=evrGrnc7_-PA8zI`8QLq-6t8M|nAGO99TmCQyH#CT5L;OLvFW|IP29KS->S((a z(5oXN0AG%VILE_Du%W;=R%jaf#sy1gYK;$Ywi6C~BX#LP{1COvnCXgV9Ad(2m$P8D zOu=M)P}5l7g8cMYGV__8Zl9z1sdFF9xhOD&Q+M$Qh>^N$0z^`F`NRmRyFbD!Bhfr? zPKay{`{N9H8>mbrrrrk1Gtg%AZQmNXuC0`^;*2M0`I7!GOoC$Z^cP9OQZZ>JVsFE< z2XPYr@hc{qk_L{TC~2^eR93`(wi(WbU(oe$veXYmvG2E4tkXDDfHCnW|FzBQgCabsv5Zon&CoHLPy zB&hhSRX;7qSZq_ zM2P(m(%YD1us1zJsFYnUf_WBY1V45-=>xYgV}zUg#NP+xWqN#Y@LP>9R3iRHfaNy` z9MjP~(p8vKps@w4R5r2DOa1xo3_ymXf z6G%re+1j1L@(K3vI*e(^Cd7tPW{PzOmy`kmWh?4UlpZ*ibQ`-nhSoa8iZ1jyj&(Q% zo--d*esPG+6nH740n;+k(dA;zL#p}k_R^y6jAeD*IV>{_(&@3hsZNhShSupZ2iNI! zl_F4qS9r)&%aLY?FNm6^EyfUDEsZ(r2&rG-$C4 z!Pt&k9{Gb*PQq+xpd%PNfr`&w{EjameT0eN-72q^L=GseIBkun>3F4h^0VDOQJ#Ui zV|VKL8~kFvb792v{W|+1rib6=kTTM^kfJ^y&z(2Y>w}mt5Ns9l#jOY)C90$&oCeOq zZL3hyLC8VGX3)+B9O`kvp&rL%iYa1wxI}$0-quhB-`hzWR$kB8q(0pST8#)5!w^!? z6K98RN{2e&V1oh&8Wrp%jY1WFp$6lZYqVj0Y#VvEm*8G@m^qsplQ(>+>XO{ zI<`UDged|c1lpj)g|V=NGMQL0kiaVvqIZ_Dh7|gN32XUvG0v7aW=&4AVqe*bBbWyX zwlWOe8Q`v!Ax0_TO}N0btYwlq0}VYk)u!Ic^tN11BBKtX0qTvQUU^ z?bSLiT0waGj_GzfLU#<*ijHNBRhwHiUgQ0 zcDh5(9}u(*uYgeoK$|r(lF6ptqqnaT4v3no0!Mbw>hCq;`Qf&@RHQK zTk2UHt(&4JwX$o31PEW_~)pF#qs0OiB5;LE}SfuofglRfl( z6Uaze38*|SWaWg&>=rGmJR~d8Glz_0q-WzkiC^KY#gIHWb8oV=BB1F?T*Rv{q$F>h zsgxE3@W23?!d@zq&1t!!XdZqs3psTCfXZv?f#7?TuSNP#Vol(?rUD-mMR*T(_N9>O zV6wSrvD@P#g_Q^;^vKK*(XvwfQs|(|vA1eNs)lK`$jq6!UETT&GRZitN(wXrve_oR z(31maq~Pe2;IY$z5us7>W-^7OF-e7uOsnaBxMMA&03{c)4#^IxB-(^(2$rKhQXKUW zuK2~2ChHemlZ-?%K?fB@GBG!cn#bNn7gI)PqT=Utuqvmmncuoiu(8xYMU3H@e=__WL{MxU#}n1Z_&4Az8EDXvX)g)y-91D>C;PR5p!vK%_W} zmP{BSM^%?IjK)mAZY89!qW7{UtT+cCM~KYoq@VZ0NopZ#?LUuEVXaO|Dtt;0OriaP z@Qd+r82BhjUaKsdG6;DJ>R7j7+G?z4iCiKPqd^<%SQdDU5c^Npu%N;K{i+yS6`8so zaAXteIdked9b}E2s}iZ}`k5h9A&A5XRf)v!!^gQq%r52#w)nCV6e7a`J5Y`Tm;|WE zfO{A{IUpD@#P#~P##25dXbV-OxbpJ65Hy@B>NG9`uCj%zu#6BwM|H!xb6f!V&=?~O z;`RD@+*rZ1m=32BrHH%_>;AL+x74D%f^2tzC&Q?Qpb$F3l~KHpv~TqJygs8tdq&?Z zMZhyW$I;p2&dKZsu4YEXbx;j90m9fi_IB$3E&PR-jz(yt2spTWhK&@h+nn1*3J1tP z4v>EwT`eFWF1|QRvU^DFIZ~u9EqD;iasAD11P~xw*OCFUH62;_-4N1k+y@})&&dB3 zI6zG9MN3G{lto)rFh^D2orf_m2=o#==M;@4UoJEPcNzmRD6z*K@;Nfnx{NEp%#yqf z*G1NFTiI5w)izjFJQ6|oRuBN!P7Vx)4r~S^Ront%BJ9J~7jmhLxv$WU~DPFR%Dr^NT z3=ezZ8v>MJj9(THzW?!!FonPc{E|4~_FN7#z1+F!ZeM@5-uaTH1BA4 zUbjpm_Q2i^5!UlE+yoSS#eN^-%t7g4Dkh^94;_Yv z)lO(Dggo@bEjCd2d%DL7kYa316%aJYP^s2E4_XxVbi5?fV8J*OH*YCpV)F<^q>xrE zczfxvVv(w335Kj3bY>!H48c;UKsQ)n<28$w;4>1@l^3F!3d7s!ik2jB%Zsj;%Rf4` zFrA3l%SLE~c@WFgv&9btFG{f%131H<=_|eA7bPiLo1rC-V6wL;RpUd%I-=!BIiw@1 zZxfWnr*L9Vfiw=2kyO>)HO7^}3~uqlN|D5xkg|r02~?puuZ2aPV8q(HkMV;~6Gl=VHb{^YjpR3ScyecUb>(Hk-Vn?gcpSIk^pA29MXIjH zWD?bckEntv1i$PBv3Wdv;r@T}II0`{@J1{{#$^p%=w2HmYp!-tj>%4(T#m3#QRs+5F8l|T4flh=+*y--MLv&ZolArB zYI(v6&psF<$5Kcon9O+{DIKMaepf9FW=w;bRRlit_cO`TXM#x@)rl6BGr$Iy;~3#c zQ}E8HW_Fw{wK4o5xtQxfAzhUyc;_?F5nu;bwuZmDK;KwwDQz)DELoB*+u~Ua`IUlr zNwHXQNUy*|0}`;SrLqpq01+S|{0%Olf2*&jW!VV2t1a|f*n>MVye6jU{|~Tz!(k-j zT{^u4s(gYczwU!TSpw>#gF6kOnHOU+0!yYi;75QDoq_xvpu_*W#rrF;A7ZhbBbD)E zwwz<}6%mWFG5ZQfYnYW+V%iWaQE1YK21IOA> zk7iMWo)V2>c=kyM;cbAT3}sUaXyU>7*0MI|{FNWW;fqb)b51~;0I>-yUSQEm$)x)UuhFinmpZ?rp;U0MhChQq%RvzbL2 zdpl0prqFR0_nS45HEl<OMq3oCU~C z&oxjy9yW*Ln_vnB$x6)<9sg4bn3sl;eHm4ALk|+&EbhwG_TvQ?fRuv1K2NTv0HU#@ z1>3A@-95w%|Ct>`IH$zzAcow^$k7+Sfjmi!S|NMk2z-ve2a9uG5|e$wb$V~|j_K)z zdu}yX0)CR=9z7?-3-{*1In=@oj7Y1~gEkJsX*@!!jdvx5Ug6Cnu8W5_gqhIGn+dV( z-G&}9th-y9YiBKl;pcDZlaG!X=7pLIg?Nwmbpew4BpHDQK$s)^1^TgzFqS1)A?1XQ z;uYYI4<8+)I)rT@@hAxk_C9o&FmSxi4yuES(6zY8(BJEBeVkJYI=Hi4V?16%4InX5+9-;fENb`kK*9qQQQGr_AUgU^CNU; zji^}bHjxwqsV_Q_C6bqddK%F#E;Ke`i)BPFgfj$@TLvTjO0XzKCelRSRCuMm{$Z{t zXo$2|PTe4fu8E?t(F}^J<&bEg#Noj+Wg(QrjEEpMaaMf4B=qGh^OW=(`LX8E7hj4O_@VWehq*I)gj2N~c1n^E`9~g#hzOm^#e9Yb6^&_nfC*(G8DaxrW}@4_uGtq79S?49|z_s}wJ(d*yZS=Y#n)t}%i@L;-jKW5wI9>>M(KqQSCG zaC8&M7BiPbjBY|sv=}ueBNA27VGVzwdhN-_cismHIl#hYBFr)HB7l|LPva$sGw?8t zIascMMmoDdx&e~~fWWUSBfy$1I1CSZMmc0T+6eoigGHkimm+(pmN&{H;(^hk7PJ_n zp9MEF0Zk-`L->mf;f!7=V37IeL;*4|Gn_qPK1CL-1OY{r-*Aq_*+i7^4ghBWb3(cR zV2oTnY@Z}L3G08LD@QX$Db7VANDw^qbroa>OG4N|@LEILagr`InlV}s$i1IHWoB^6+-%9TbdOg$t+1_oA0{}cD+B8&8b z3n%bYvaM)iP=Tp)%-><>*ZWMI{%noFi8K9zNxiq&zo^f`8lLfLH|vIH%&i%o&1O+R zjdZCizQJq-%K6o=K*MunQAu#XrO>H1q0(fh!93EcNr7`EbSe)?VGueM_aa!-j6lUS zAo>NHjsZdN2%=#;ozmG~DXabh${bP`#+gAODZ<(e*D`?mfBgkP)^1@T~oLm=NUkmN%%I;ONaO5hatWg2E$010sV0t_lNA+o_&2z~_ z1Etgml>yu0>_T3{G9jn3)B0MI>IrHUH0&^b912MxmA8N;!9f|yDW=MsTnMwO4=Qht z;gD{`WD{Vq4i?Ek8u}0i^a5D8Evq+_Rpn+|#!`WaM7(}%8Is|JT%T8a*^z-m`w%45 zlkYRQl1`tu0p>=m!RY8%swX#J4S@tXtOK(opBuajDqD+zfpa`1`c9s^iu3Ny$ zOu98a$@q9GMY;{EH3cJssn#TCO>AzaH3j4gVA^4|CQ$*ws&oa!(1QZAXo76e5mD9@ ze}P>IS9p`|0f&`o4saGE4*hmzm~TvLdL90?4-?&KCbJ+T1PJ01&QQzOz;lwJL|`>e zI{*}xZM}`_=_5#oG1-B1eLbZ?QI#=UWF=6RTw3@qj9t=>QnsE47Y)O$QW-VD+X^Wa7fi`^wz?6NRhzlSo>D^!u6Q8ql_hWvN?Mf##1}b5drK) zF@vDN+i{FWKpKeY{$L4FK64!qLPBzSgbK_r*3QKD?1c0LrgbKJo-B}xp;o@dY7u_> zSl(zedsg6U1a#6}%~&Q4DxuZ*JcpkV^<2xflLfjOi(>6ElFZv$_Drg%do&-aMOr zTpzbOmDO4wfKQ9x1?eeFVfR_FR5f8kmE$70#o=b5(FP1|9Oxd2MlX>9BpdA!>(Pyc zUpafg7qBf*vz?HDkX5|hXtU97jIjMgm3GLQgU(MdDhDH-NvNgXy zv$?6ew3Y+vKETA~+8g57fUlhtkLL^8bXu`T7kEtS>Deo-05*!A}fuTjnOARh5b6#Z$ zSClfL!6~H7E{Lp}sBI>)s-m(WdB}tn`{e<$GuFe_B zqpIR0ypYTOSeU75!mk|obq+7FUgN+zVPZ z+?)u_!RJ1lw-Ncv;Jju2GVm{~${;S6;r3EQ+q-|Kzl`HT=#%p?8O)o2Kvq^SDWydx zPgdV{DR%B!J9mx8zWq?TL&jJhQ-EPVn*5rekcVFbk_I< z=2ag*yfzNDUE*MmEpEMFwB(S@4k}~z8sTLdGl5OLU%~8W)dVRBIQ;dx_#;Sr(ywT# zHsU5&@{Hb}pc)a4J_>L5bB&{L+eYSM)-*fUD;RxXieL>lI!JIH0odc}d+&#ELJ*4S$F{aC#gd%$e!Fk>=I-UJip$q>@GS%)#18wGknpOK~{os={C zWNW9=%sxnr6%>bi%yAI@(fJ!DoAL@S=?c-%Nqo`Kj_E-Bb`R!|N25jV9(t0)a&t=mLd0lOv)XE7{-(#SqB z-$xSsJwd_y?d zD2PGa3e>^cL1-f(At3%f&PsUD1Ke>Jq*<73h?Q}cjT{l`Y$1)h(DH<(x(v+BBD&kA zeW_Y-0nLGfE8LD^68KfJpa?b=-Qr6*G=r}deR9^w9IvZDyPV!}Hx5jFNVqmHB89^u zC`iT-1D9c!Kd*UGR&G+4UVYL>xibp7Wy0;V6e-DX6MLNDV}WFN^G15Il0YtnzY2XA z00>sg7*D3#XPqlBxga?w%j<(Uj=5R|G=UXILtLNyB$CZfP@EBUZG>!qwU|yKIYQkV zz?^7<%pw1u?uDRx1K@~=(i@WzR5Dw+bmY@vgwCWL@p}W+AsC92W+SB4n9Ohwv`XES zDg@RO{LKh0G&7Wxe}j%s=9v=lhHQLCxI3=Zc5lIUs0)A z^JYw{VvgAovIGhyn4PV_VE1P;(FDst1EUpAzC;jg4G9kZ8U`em7fPVlx#A>Y+1P5N ztuCpMYCEzjQMP0_E(UDqrAK z2_?tM$Cnh#So*IqJdzw6gXsX;=s7YSE`uq7B2<0TWg{(q`YNkSpY(TQWYO)>QuP+> z($a2-RMD@sGts0eCq{#Q#JnBO6xqsk8< zW)+r*w>4Ko&O>R-k~-Or0z_G(>kBu{4$eufZOH=U!|bH&feF1+l!t zl8T8r)d$Vgx*;#bW|vj~{~q-7ucM#*XmLXN_?%NOJag&3n;#zb*iz-vw8hQJPkJPw z+=UzOn0-%HnISL#=IYes<%w6${Vj9-Ckt0Sl>PRQp>JO^XimLzb%>b z;-DKEk2r96?CGy=y>08hDyJ@58o%_(X77Jdsm+RFSK-ztJT0dUyYP}F{%019xNmcv z6K|hCBQ@uP3iCTXp4tDW-WOIW+<0TJX2&ZY`T2C6r8OEg&UkOz+pR`s&%Mey`Nvgjs2fkar5!>o*%J$+tt(O^qBln-Mufo)@#pO$KM+| z`1H1?-Tl75WbCiK=O&cx(4(-!7taI4l)EeKM_eI^; zul%T9gQ+kkXvmAnYHQOBhwPtRZQKn<;)a2%O}s!DTZ~U!m}3P7;;nGeu!Z%8ZaA^% zW$hHPec3f;n8wd37~F}bgN-IKQTM_hp)P>5(0_PN!7(0^50ho^iL+=q3u(-cRH{f2 zf-j(ipxgiN36N8mk}_KYl^d;!5K_xNbxlW#G*}t-PTwfJpCHF-0}n!av9q(dvTRH5&~y zGMy=ECNq&ahPY!a3}19wV!$DlH-zaOI0};?jm5MvfHi4bN5Vdn#y`42ye%j~k5gbH zlJcyV6SyJeNW-5{$5gAB5rf$P)`)*Z?NhBF@Fk@7@!m8DD>NW4moEOnFE`i~0ZGZg z!&fX6tdbj5L%qojBVkrFj(`=H5T{u^DomRpgXk-$kYVIGc;nNU!p|FOoc(DTC-`5; z^KIxbL4FjBILzIE+i^n8SI4TO?N&g;UW(P6{Rfn%fH{jx8EywvGObKM920z;VQ&vH z^;^3oMqT$$XhZ>BHywK7R!qczWYe*@a&<;PYZyBaA4>~93@^ZXX2q&U{{eOy(4(N` zDWfojM-(f# zpIl91n)ZKaD?S)iI$8?@jKYY>_kSX{Fvz2?-@s`g;AkRLgvWHE+7>l1pzF;r3kqQ_ ze^GzQXc2r$NBdqv40VfE*cGK4IHR=u1`+Dbt7aQt)__Y093Tiy_zEsEL0j;lVBwF$Kkz8$y0AxT zu!t2Dj|+q1WJfrqKwe?+g#{| z+c42t9%GQwjvb271Vt1_iRiIFzxsh}Nz5@77mIOV;B=AlJ*JmpGB7HuJ4eRlFYJL` zkjMch#JEW6pzhTJC1Il@L^-4Jl(?5vF}WBUPYfwv5YJ)`Fx5^={gs=Ew$^u_EC za`A}q^ilcOxioz~g5EfcDe}=%;_VnUtSFN)o095yQ&8dq@Shhk8QIm*bgZ8?#bTzG z4V8HqnM?ybiNdib;k=AwHpK{q;nf^y;~@lqUm<;m>BVRvP;ikrN2c(fXP^U^;pJTF zfP*mlbaQKj&f`#=p13GH!(+W<@#a>#!DKJ|z1K{TQ@2a7_2u81d)?5r31KZ1x95P+KXh2Ifs`yG{sN%_eH$AarR`%2r`gDiq3?`a zP%3d`VW+GDQ|O05@O`C$br~1 z1nn@1jkt*apsw~O?AbM|0JFR4U311ZeEHr-apy@<>P-ImwEEn2XU9KY8eMt-(YxN? zkkgA7&aHLc@HnE6*!L8tFZ#Ld=6iN*Ao?W#N1T3d`HyC=UfF@@Mb9nf^rf$!+_Lj{ zS)x~a+Q;cD{u(@I;t1Rmg>XK?z1*Y-}>^yV)_Pkc||^oK9lRb#?96wwu>|Gg`9 z`jVS7_U!(d=y}zqa{BtM@2B3j`g5W;=rfzsHzuwfdUy@aaYgAoco?T|S@rOaLl?b6 z^m;#a;Pj_=rx%T&c%q8Z;`aWWzT@G+DLdY7PWkRDbXDd0T#*c?()d6eX>}cAo!*5u4xLeQ8Ca zw`%?ir@y>>)A}cW9YgfKFBNn8fzdgGlcu4`LQ%R++{Nh!%MRc4d0Di=!0itgy{OY$ zJ#|;gbe4bOiDjJrR=tdmHl+SQ`OA*Fm($<=;8|tYHjE&pDE(@e;q>=fZh2tQpIwO_ zw?+T1kAG_R#d+OWzn#CS3eSIhR)evR)+?m^dj8| z`mYtAdU4{%cnS~<|D#*$^qnJbJh1b6qEGv*fks~tSNDq*7x}&hvq_sz2R1 zgXoiI^YyYIuG=5p3cp=L^lqb{*Yhu*>w71WwR3viCpo>;&}s>Xi~6v7;&yO)LXEGTwp|o#Z*wY;)(yUnbgSFYvsat}PwU|8R6L{I))ucv(XCRK{s;Q1{G z(Au7_qXiWkcj))|;p#;1`Nu=No=O|b*O-0UOZ1Dk59jprpV%K?Ji0g0`+hs0(<`t1 z;_#I38E*7<@O81E>a2p7x}JQD^4A!|=l_E0ySL5GI52_e?VLk-Js0~YZ9m-{<0U9c z^0A|wUiV_($)k6?O7uxX%IWmZ*CrmTUYqEH>Tcuo`p?{6>*pqBq|0I;S_dwc7ZB zH@!ymIz8{?^h+O^Ret#E$A~^{uil=<#ZBt&%gH8s-M1$4{FmiFwX%MTT%uQ;vzpT{ zUwGTj-z%coS5ZpW|C-aUSaE*)KhJAV^f5c$;`F2uRkp2aUx(;5yPe|nW(gS&PPvcO zKl-j*PH&l6r{DOh42Orja){Hfnz#0@`uSH;J!R(L(NzXFMxz4Y&zkdi{;Q|l zHM(0{HV+4X*of1UFIZmp&Ewxt{<=dB>U7VScYEX5eCzpq8=XFD`a2h0@)PAxm{FV4 zJ0x`Z<=(L=ME8H})9DWkIPyRe%Rl8ho!+ZQ=>sHz1p$qiz||e?tV<4|HDpKDVgxt<3yiu$*ny92*-8f7Ts2t=(kqur_*n9 z{FywE;q8bnM>#$7qU@VzH@=ASUp?(cPS0-e+XZXp;7KP%$^GPfPWL`kd|{Kd?0c`f zttF@DPw3RN_tZ+1|AO&VIsKM#U2d3mtR2x)rsnAMyV}?MVcFG0ADOS?lJCARuD^T` zYfr~ZALjXsHrKsnVKJNkL)UiX^zqNnbTuAahUyvHa1^Ic_;%%MWjC;O>Mi8*%z{Zb z%qzFAH5=a{o0{cMTLol^Z$60=)KoW6V2?3@~nS$}3Erg8e7Ep1-7<`;%HY9-(I}%Rm)ZmPCt2Rn;Bn?yM*$)%a`W#?>>9C>76}3C3@m4eZKwpbA|E;7qjo` z^WAkk|EV3lnk}9F9_6pT@={L!>(YDQUT}e*=tBm7tI>;@?SD+B{H~k1D;vhWxrONMCf>p6%}$+sG;tEc$&Qtr zoZj-R-w%+WXf=qEEYo^V8xRjyQUJGJYb_2TgdC=kI>H()>4)(}`YlX%|lK zdAwZqfIE5;y`iHor}wIpQ#JXWJfc_mttO}UeW}*(-;aKR=+jGY;`IJ=HhtdaIVR6{ zoT-oRkd>cR|KoF}ANjZQ`B^;Nvuy47gtk=Ah-E!^J+4{{J2cx;jp#LYr*L|Di}A`; z2Yw`aqpqBP6{oK$fAEnH2NJ#B4;(*>Gi(1|?t+^)5WVuo=XpKu>>dxzuEpf=Qde+% zE_TnT^WKb|jIULh#Bs8CAl zZaovvsjdPcG{)o;0OA7|@ z{I^{2sFeQex>&&xlvm+EQ$RENKZ~YU|d#&VrqW{^cC^iYIUH|AwdPEkv*QUS*zt%IifB-Pk^j=r!x7 zbNaMaf4KI!?j?GIejc6v*U2R<-@k$A6Q6I#>GQ5_aQniIw-UXQ_oPn0uIItQ*E9Vt z!#$tV7c@@qwKM5b%HOjy=NHAr6Sr47_B@jZafyhvY15C7Wd;Vp4r zQU0XsNAmZsUOb@Hi=CR}Z$MC1eWqSJ`TmHDSL)X73f5NP5 zc>XQ7zIJn?dW_#)^Cs7iinpx!YsPoaJxlrHN^!Zgc*}D=Zfbr#!`nuObUwAs=X&kW zx~Z%^-|6-5_|tdtk*gTrxnccg{@y(e>a=XR<}~H6zM=xB@4e&LH~BAZC3=-dP6 zK4HK+FD_h8^wK>);Q3!V5TCZCxP<8CejLN;``aJ-?cLr?U&tKOiPK+ur{fRfwy^cm zbTOB6iVtkwIsC-Q%c-8MLkoERgYkV|ZSZAt_TFDcaQfS6%{%;ciuJ=)hq=CA{NAns zkL{hs-aF)RecpcX+b4la@#6*Fr3W!NyqJDhp*^6_#or6Q`YG? zaO}@db~mj09JQz0QJrsov|_^aUaQv=J-x9$e?I=^qCrm&-$QiwOnu#*=sf9yiuKrg zy?3tS?K$Dvvwwe8CWnk2kj&{{IIAbz`v~K|xg%QW^o8DU9{THMs(^H-DS)f#%&M?@c9`zD_M>+2jl8uvR+^ecMb$?4y?7d3d~%MXa&ZqYlO z{=>Al_IFHR?eBa0>zw}UrjyeqPHsT?M?9tT@!tkcuREp-d+)T%xxQTd+q1{-+fvNt z?etMqc|HHzyX{o9ISePO%~;Fnf4tCp<>-Y>Uu)6y9*th2bUJ+g;Qf{8z3Ceob9$-W z*KQrsbS}{g^m$%VdccxJ-_?DA=vhbjx-Kc3I(I_TDr`M=A9We8r|gM8$Gwrt#{KdR zTrMi9xbM#Qt4>)=^$Z^M63<_ySI@^TEnxED`Qs09diA<3>t0;(5ao9_JgU>D&-klS zr@BPXc6a0ST2)T}*s&AiYqgeK%jvcEpSP~t%%>@T|4IEgy-ridX{`IBL&t~)4 zv$Ha%H!Zti!seoFR8PN@7dibp$NLGJX0i4ZmJH|gl(|#(%*kYSxi)bRogpw}t?_51jGFX?h@`}YYAnI77q-!7iN z+r8})CfDvv`E$*;>sgG~>;%KE?JUk7;p?!C6Za#tdoKNVl$@^(r0pBrE6-^k>U zj-~J8`FmzRb*1w*_Py>CvpK!j(9xS$&d8_tR=$C+-;%zmp3Cq2mhs0bgW`GqezWdK zzic#HFPB|NaZ&{}@F16LwDH z`A1}r_~6~UA0hgrPRBVtTl=t@pbyoyQ}>%qBkFS6Q@tycEO1)>)E{Rp3V7S$&`=NU%B<_)vW%n zU*Y+uzIFfT**V>a-apgJ=`$YvBXv=oMMUrRfQQp(&Zsi)P<$PtSE=zDr{8{RWE3(BJ*CTp`9y$)(U#+{p-tRvX z{qlY5_^}v5U@Lv!7*8~6cz<)jPUl07(1ON5Fe?9PD5B%2y|MkFsJ@8)-{MQ5j z^}v5U@VE9rOE?gK=?Y9nCl~SjV~UGK-ouu~hX@2{b{I=N7-@98QVv^a)PR7alZID~ zVI$SJQjs5>v>c$24UnTP^qYd49Gfti-658m?e!Voykiz`G@yjp1z-W$64N+Ah?Av< zjiFz)xH0St6uKz=1^CZSOp)9ULKWFPC>|<4Q54q^D=*`K{0a#@SE4`kim^`AxZvl~ zu`S$woR7)uvN}Fb!i4%TzUhrh^C%t`=P)z}ABt@J8T{iYrf7y*iMJO&>kOPN4>gPN zW8pb@1}5aWcL@0v=n34j-fM*JjJ@~^@MJr7nU&x!k+2|@JA~m-md@7WSzY}W)o8*6 z;Ro9evk_|E#UNaeg14x~7)8&)!>@VJ3AizBdaHdPit6kaN}1nkA5aYQst?|3Pol(H z_(of(cj7Mxpw zlqie{m#7S;wm;vU0T<3@_>+=-K3CCzJa^tmuMh6}Np%i%>cY84<#c4wN7Sc3?4gRcQ1VSP?w!YelpC zsEG|7CdB$>n5{>Y2(LH^IrMN9)Nn0c1q=#2?5dQL@GtbDJZ_}{BX) z`fVn?up1K0kUoZz(f6^3i*qY*7Q%%C{O}#%bLMbbzZIJ9u}$pi@@GR-Ksgd%T<|T> z=C|6e47%!2&7122gu;-6_5)Bn6;x;71y}x}++25o&y$fvh=w6Y;Z3*&$red}fuEx%?t5g=BGY^mkqda+?x8_cD_gmLg1%)#qetcTb4yWtvl{1MoR zfSW|p;S0V6AL3bD9J6p81{R77fh%URXsD}00<3nXF_`Q`gGX`9Q3evU*P+B$s zst|InudVZ9)*&j){wq2p8D>X2Oa>;RV6aKm1UOs;a@umB9vf#5Lt}|RKJ4{okQ!qW^iD3vb)*};3@}Il5nW4TxiyTKok@j< z4!cj6veH-<9kB#BkP(Yz)G$j>djn)bmX9NsfPg~AfJ{Q;g-li?L!4pISFI6`@K6~V z-d`~bsZN*Uq5cV(tbtN^CH8MnF%QQKo7hImzXF?Lfz_&w{$J4_a8k&tZe+?fc^Tf{7Zy0rdDf!cK3W7f*?u81Y5FU92x z2d^FVF$vhqLA`U1*HvJE>4FHFMtO9Y7H;1OKupTW;nxDP8rt`$7L9S3XywK>OZok? zM&h>(9VXnNA+r_Au5lH_W#}Zjz2hDD*8xn{uG*x6Mp}D-RvvGZN8FM98vydz@pnAXUXAXs8@@z?5ZxIYQKG`BG-# zx@29zggP{k5YRwg;gCmL-|RA20Sf}K3$oflE)!f508OZ0tebU|qaOAzw;GxO0~Dki zbg@tN~c)9DckRk$9k@7j71k3t&P zFao{-APEYjj4PO50~SGR6_z|IkeG{OiW-^U(3*xBH7pb0(oz6^NmDfzxukZO02lSB z;vnN1Mmm^{$xI$m@4Ch^RyI*%f-878ZPZpWT1V^-&3^-s1hu)9qj;pOaq&Q4Q)aL}C;=ys-bZ(&|WQ3j~rIqsxD7mG|!mK#Qd z`H8?B&-dhI`LSc|-@@vo{mYPV%kbun^kgN0qz``;`tbUB5F5sL!1QF@r==q`IXNfG z>+=+3=V}#Tqv0VZ1@0LxZK)RcTw~lmzdK3Wo9u#qBHF4+G~8Hm&>bw=u1x3};O!x9 zn34QNLsyi@O=R>*ibA(Ig|u#wtC)aM+ODaf2Fj2@1+;G$)Jg#{C<}BiI2{)H+~&qG zIiCf0xX1xY&^mR+hOSCF39#~YMT|#(12t?uPkNuBHbU) zOwv^SRhH=}nc>aN_vE;JNoY7rEy&F)Fe_{Ia#=_3PhWo%`r{%535*hY3e&3&wA+SU zw-QPaR)8PYxqiv4BM!UaPe>T3?B`cv)(z*BC$htdz3?EUrI=__-WuE`cFrjp>-J=2 zlRt8&G48wqs6nxbm=5WFbvM?MggXmq46I!_yke+(4Ybu8Y1vF;Bpc#V>;bF=!D&vLW;=P zVOA`)QSd4=UTRee$0ojZW>(cXbsm`x=VIs7!A=@ebLUE2-OMXdK&!HXFsv)}ESm-smb@y3dIAJ=BU}@*1UO0x7%5Be zET0B{#tL zxC+-3_Hx{Ck}{Z$O1G)AQegAX0}<4niLN+aIL%(b>me;O3eM}yioG;N*m>^hD0jii zn}sQ~DVr9k1&dBhp!04R9djo+#2Ik@66FC??>GUBWX22?XrLL+gU$k23g|2d32H+* z>M}RG(7auMU7;p3C%M>j|8r0um^CeI(spKs zbs)M?XfU&m>ENL@nHASuyUq4^_<=#Q3Q_=YvGHc_SDiG?>gRh%X7y`WZdSi)*t2#- z#_T0ps9Uqip?g!oVyJOuVEo+Ln5OW-rk;5SXUy$Q0P+L@$Ylx9)I(0UII%36#mNGG z3w%J}8mt=5Gt8|-0U1L}k_<8(twcA*>%$w>!*Bqta# z!jb0l@^?o$Qa%SH(4C*{vDtXZjzCBJJA2Z-d9I8MPgl1qzqdEj9TCef5k+${OZXoU zNx`pzfr^QA?jYyqkajro1`{x$te`at%T#t+6I4DKHz=D8na+auo4Hv}Zj%Wh2s)*X zT~tzoE@|_O+2KY&{}06UsOVpo2kwv%|HaK0y%T#dzJFeXd;hy?RNWqfb88`H;acSh+TsiCtXz!pHH_m?yaaOw8$p z1#Y7Zya8!N`EEhj>g_G)46e2yDycmquzFs5N4G!2=gEh-jnKKJ1#yh$fRFbV^!0jk zgyI>jL-e6?`?l+!Cv{mOjUOAz{_gx7SB5(mjBQLh?F~KV7wY9NWj}X=5R;Odc1n)R z?-wK*o?q-poF*`}GErvv7}9%~th@6v*JBM}87gan%2^7^pW&x+L&Xje`naLO*v62U z>dDQ|!3nMhp>srFq=5I6p~8^_?4cp1z>^DXud0KwJDjmlq8H)P3*UD$6s+_D+M*In zcYX{l$8vz$X{hUB>om|Z7N%Hv-W+4046ET;#8YMXgMOMH`wV)jWen%3CO4hU^OXDf z3Ro6|C&?oLZLxdAu+HhweHnm;Ndi)b!aH*;hKl1$1i(_^NPzdC7Ikm~OL7ZX6_ms6 zvxZE}&lm5~Sc{3yL|8NlCX#gxrVzokVt1uFq!{kuph16^76D9o0_W;6NO-mLyEX$8 za!3_@;m*>TdICN)9G0QRC(3o=O2^;yl^z1DFrx-m9Na>|Ar|1^VvIjh7DJ%J92(G> zLZl@Glw~`_G6&og`)j(a{Jf z(QRb^UAxo<3TXse&=GP5V-?!?jG5@JW}pz;^pb!nb8YN6gu2^(HgkxI0CS}=J)j5I z%S9(xCMU8#1s;(gAiD=792e+aa%PPe2*|E$)vP`ZxH-EJqDuuu_KObPAJIQ6Upsdv zx0kabgmUPKsxcdXZLj!j9{+s!;%rRe@EH3h9HSE$LoaV8+_m5qw^b}@^H%tq$WBn5 zM%5l$_cwF3h&fbY>}D8?M{%~AT2Th2(3W(k)EYyrz9ZPYf}IcKQ@>>WMBC5+xP~J_ zo&qf~U=Mc11E_^g4!4FSb0wzxb$k(Elf3x^)GQmqbCH9fV8skXRw>$Cbbz={Z*UMG z%1(%eW>Lzb;kU6JSgs|&hw*Bd61rNlS{Dq1gg`QwGOHW(x)LW?MT7G82NxE~Z-7AN zax&CfT3W1;(%uhmMJAD%f_2I=I|q^{#?&aEpTOw z2F4*&8}wTmddUem!!t-aeyOt($A)1C&xLdwCS!@9zbh}(n>)~zGg?z6u%}D^4PN3F zJ-DOR!3~t_e^TXj6vqq?&jpny%mz;gPsTv8O!Q9V@MtwypDD0ef;2%57a)zHtmL#P z+H~;;-KHxj=t31zVO)5yP-%nb82l@0=|gjSJ&XCJ;)f3%jY$dw$EA-nZ$9i^WO*`N zIejp~w+2#)&7q9Kf;S*~!zp-XDV46n~}w*WFA@O?&O%emRoO6=*$8_n)bC)aA~Iq8m+uuB^IIua0o za1#K-w~&M#xUj(@}&}%swD?9K|u&yIg$$*U#Ouh8?qmm=2B+5YDIGm71g<> zrFAMO96G*GMH;-|Y=qfG<`CX{mP{O2E?!VgxcD#l6d0I61Z^Y85NocZz`N|4NCeF! zh;zZoM&06*QeepfVq)#(y;l>uu?i;JYg>`;*9Z#-iOr)!Ajz6RHce(FM|}>IQFj(O zjL4=>>7=cFYo((uu!<_}A+^P1+u2s>M4v2q@rDd|sog1t$OXb)gyAw{60k_M&%`zu zUz8prQ9JQP`hK-DY>p-i3`%Y<&6~Ao6+RrP6xNWH#%X}*MVnsbcm=K$5Rs--i&n9V zDhL%u_C;!E#%`9jXd9Ed)SixXjzn1;dj*osDW(Aiy*$DxMiVr;(QMH+>iLOZ(7a8v zh^7>M0aOrCVOn7jmc-_`Ydw!Edju!~5e^(JhFEo94C=x5z}LiVLBWu|6fJaVU2JoN zxW6HO6PVT_Ev~Mun9OjfD|TJmqHSaop8BJ8n`mZin`SZj47DXTM@CwDP(_3vq9TsX zm#b`<<|O_R;mh&MA?=IF+Q4?$m5roM#0sLG-;oWbv`PVa?0yF?Pa|S~Hi+X1rDM_y z_PGiF3bhlXZiWh4kplz_MP!B5WffUr`urBLVLw<`lwCS3yc#H3B?ii?f31C6rDmm~xM0J1sRL>P>C>EjH8Wb@S; zC!!8)-6nP#Dtt$zov4CXgkOUF051n4oBCAggnKf0zjr-MfvzOv^VI>)G>BH-+tD;R zbeLes74{i<3BI{u=r_W%Y5OGi=>BVT9*#0tISwc6`3TLxHuDyUd!_h;ZuO18)9p&^ zuy&AOU(nH93Uv{1N_ZgLy5c6^GX_yFq4CCYm}v-=MCp+&G?Fg_EB@gTPdK_*^)xj67ferB z?Qk{`R3?CZ7q>E~s2KVJEt~)JT=5s>=DOiXent|lj}9(BKz9Z<9;Qh=F1%t$cVLpv z{g|w#L|A;Cy}nMj6uNRe1w~Md9!uBaSzp*t=VENySCBAT$tO<-^|Q&EU_&IDlcBhB zM(#17S3%_t3zDY6CCj3@Zs~ZC=~*9>aQB(he#lq?k?^;VXu}0AIc*r3Iv0jQDqoV zQ4O*se7^K9JWr95?aml21qI<*)DG$j&X{mx7IqNyi*YE7gfTP1CDO$f6 zmCIIp!@oK}wt^Lx>dx@F3qZgU-VNVF2m0dRAOFJ?81;u>i2e{@FhO(>qaSqv%P>@i zUW*2LW>6+LjOJ@@pGoYt1FD2$p`ni%dk@@Bi*dvv0JSnWz^HEb!Sn!fLP_P8qTN9j zdK|%yO;SFLil=712~olU|M?A*WtEoAANsRvE>ly^bseiT_VfuzA7Bz>I0jG{vdmYA zO9X>qKo-Rj3S{8-(t?;ubud*Kiwo|6DQcjg(5N9sj{~8UwLTE%i;MF z$GtwJi!ceRCl_N4(5wXyIAMjA6?`+(;3vcN6}Uje6J2KOE8OX|pkrkLq6@r3`!+l4 zOIWQ!tHlPhj&d}_c>&IPN;6E>R~9P{e_n@OeHhZ~m~6|YNu%QOk&Ij2$216!{#|F-#N@%ZgoaV7AAXlMk^HM4RQ~LCTJa1%;O;hj{6I0d`BC zliMGowOxJQc)1$jKxPGoD&Bt9$V7%SS34y-Z{sWB_M1{L0_LI z*Hhpb<3>eVz;9l&;E!!6^y0ARg`}Ef6|Ts)@HD6bmxr8NzUh@@-keKG7m|iiI@cS9m#ZT?f@F z5}KU}oBJ_z-Fw@>PbXF zPZxL-F=gpAplDRYA9S89SOtU{q{4QXC9Y=ZD>UON5XDP@6YNSO=>jS;L-%qOWDkId zAn>d7w8D<&Va~VPMz};#Ew>Ml;f?=i20{ZA9@(T%Va|VqZbIAnSC%)GIhH2|+NGWL zJBDI$8F7vjPky%B7x0GI+0TE)c~l6A?wYj*g^*iugkIKy=o_%;6CpZ4pM0zW9=vPT zQ5h24$>At#Xl7#;MPcD52um_R{*+G*3JXs+$FVG$InE3nLRj5c1${O3)7XL*kST)o zO?NVc5Os}C$FM$C|0Gej1$67>m@G?X`lN;~*X_RcCvDDPl9W32c z3=Ka!jK5dmtZW6T38vr=2`2^O2*gJYtx*C{6hj@AxXk9Aqa6YYT1dKJvVsGlp@dZn z@osQXfZpTVcVn zMfGTy7GR1;hEMk`Wy0T?QYZ})6#DwyBi#iV*;@MnpT`w+%AqjsRHYh>m^im&?+Prb zjTHQS3%(RN3fi{Z>%&VKzVxi5j{Q4yQJqwRxna8}RU+ur3PSbtO5O6dSU11ZFY0!x@Cif~ zOl)Yc3$4ur)~Q~yCFoyNCy>cODzI_gz?$dE%W!)~+PCH{4fq@(Mq6OFkWQ46Nk z%`meawINl*B@~Q5H0;1@mlA2vx@PZyC=qG9>F6S6}F5p`=*kQIo zLFN)F!+g9Zq4jC_gN}cT0^Ap&4d6Os**aJsmp>{zgml*N$`LUr!n+9R@D7SMFxf#m zY^~x9FD3-2E@US_&CVWLImpkzNWsYW0eY(d6UD%m zI@^?gC8of|1F-v6=yS8+UfAUkvZARtr$QJ7v@oIg3h^PMz;Jl&jhNP%1DUWdjA13Q zj(7n>0}OwrR=E&RDexTbZj++k0d%f=2xZ_xLUjyp3%x|}%g|6f*ri06!V-Y9oZ6BR zG-3gD0X|tazHWr2HB#LN)#5#CD~CI%2+a#}8wuJ665bl{O5@dKd092Z89g2nf{`y6 z!_1deNB2lqVGgcFyQ|5eGEXcD&tz-@EDWVLCMnV$3D5)bycp`rop~c(A~mkB%cB7& zY)b}h5(i}(iq%hrgxmc^R?f$1l5b+yqI91plc5HTF~{r((PJh~&jygt6S|h5r)blY zG!YT#g*6xfC^(`3cSc%o^_knj$n23R4` zZ{Qve;47$iat`@5Fi7w?8e?C9`@IAF0UQG#v4og(lmScs2bscV6GwR(33sOKREftA z9I%KTAlEr^B3K~tzNuS< z!Sa}eb4no^5e%B9FM=W9AOii3Hzq4^LPr7DQROlVSO(eH(*{d^4GEn%P6+M_8kE4w z6M!T^$RRs4*!D<}*RHt0jR8Vni4smhNsYUP#}4+<$`A0>P5=dV_hASj2lJn212jTz z2MSuavDH9OsMA5;LPu%wjxAFuO%UvOIkqz>ypsPS`2$)PAwz9k3ctm~bI{0iAjJhv zkhFeM;04uPjmhn{R2!lF{WAtOb1$Q9C?sN zVmgDvX@}?ked{SsRWyR9y(x!|Zhf(->F{H>mxBNNiAhlOH15o{=7iaqAj}0_MrYYH zAzhI8h3OKo6UyeLFxRDdscs3X+JUK78&GGIldv522KNaJG$0G&XlSn-fhQWX;WNQ! z1rEs>aR-&h3%|vLd%|2v5af3LKJJc1PGV;vza*c)kcutsp9#~wtf?|cIs0llqkyl% zl$Y}e%R-v#luH9)ZF7(<4^geAY&s?j(5kOP%A+mAC|3h2woY)bb%HaNvvKrrQ#RQB zR0OxwzHOT|6IG@Tg`OO+rUV<()l%94@YJr!5Ql+zQHFOaia>Fc%_$L>WSxkNsZ<02 zDX1v4ucy~2N%DcQbh*tTz_MIQP?dO|?$*wp8WlZ5Crz`ktI>vx;eBfgXhHlN1vKOV zBA%&&h9MSd`86zB9Iy+Azr!}1DtQ_sqgDq;M#CK%Y?TI6f_aQkivm0)AM7eD;Ei6dkF02Sr;$p_%^u-(+l8kXe z+T%5ZBg~<}kts4_CJh;lUnF6cIXp`3kwY>NNWB0(z7vy`Ge6wiJD`8hRJS`51N`Va z$PqbFS#c@WZQX|N#YqFt%Q*5NLXtm!<3LY6?5^N_PNCm)DOt~IFao;x%WBg`(qyji zeNB~*30iN^_NKAhpxzqJeuP<*ujvHZhAPiwVb-vIbD#+2EC&g0x^X%K@mhDB!tCYG zIh(Kmzh@kp!&`a{j(whmSnjNZSpF)c=P|_q8d^X-c9GqwijNk8_Ey<0eBIi^<;fR;mQ&7fmnHzWTBt{f=o$KA)?| zABpl8!QOc^u7A-ZVX(9>c9xm7O@)wPqno*^&@wo42n$_sX7id`*vT9{+D2#M4DN69 z57V`)rN;BLFWhe%+L{+UAI)DUIKUxT!P1)n>rnX>(s!7`H+{6b$PcHW!CN3jHiv{C zA)zR|>ufQI{E1M{<9rJGCTEVaUy6C44S~fthyBoMFP01RjwY^9CfCYn6L`V z*=T8U;%1RD4icW{&9{pRiX(Ceg7@Jw5gYIqq*Iu}A72z;sdJB18PtLgo(E#9TpHeZ zmf)Hr4!eN^yCA1?TthKhkogk?%Y}?zm{F6+O#m$HPJkq{8=BrQhbFQMFr0>T-Rx%p z*5JGGAz)tx=(P-!5P4fW?bQi_!3iQfNcC8(w9&F-c9w1sI6Kf6Ks`)m4l}~`INv_% z<<3oa`}({6-kdRR-&$S0Fv*d~-v4jb2iDhjf(^q6i0Mm z1n^c zE+h|)^_qK|Aejcnz7VuxSs<1Ct&T;50v=1viAf;du zu*z2mLC$mCNhu?9ykiqPy7LRNA&24+U`EP%B)7~=jHzGTI<7Q8-GX^Q8T*N5gw9YqgF z%fx{qk+Kw038oU=C5kjEVRghkqW>m{6in<05K@F$sZTkUN0XT>Nkz~ke3oMy`NRx0 z>m1={E!C(fG%@dn|IEc?A(FKD1b~ySeh9RT=f~)Y!SuWrrzdbU2XHh;e4wDpdJ?^T zgz-sGZQF(dqFzE15RC;+Js(FHO9N%7`(gvN;TC3uFnKTsf03vj;}5!etad9Ry3zzv zA|^pn)xZZuDVA6NvpE!se;U$eOi?Twtg=S13P-WN#wSSMnvPSjG#b795wD_b@JmN!xRX2(K-V|Y1tSAHN!UH8R**`^JCCUgIu9&@ev)C&Fx2IFa;1z0&}S9mEa5`A&iJ8%ks03^L~iUKTSLewH3| zKGP*03yv_OwcWw=jFF>ZWHZ2`t_?2gj5_1Du&o`YGPR{7@!)aHOEDQpJl*mPj$*a| zTW>Rz8m@Y2XHFG=yRC4i4?MY*TAo&)mv$c+yK4Pd6nYhHRbeopKN#D z(WWPee$|R0oPOl~AM?H(fijq)R9W&gr+--Ux|-E8$%jknH}DsozNmf8^;xVv*?rn` z`thpOtKZt^6{_cw`k(3a8J#}bHRc(j-?01=PXF?4?;RIS0=WR5`u}Uj>EGwR;o6q> zA<>hIuhZ$L4vyM7i1klS;VDl4;mi7i^9Syy{6oKajMIPZ;+a}IV?EJ}dN<6q#`o$N$%IVIJR@W%lbd2cJ%e>9$Wxes`T6|NN=*`zp z(di4$|NXOCC@U+<;9;dXz5F!?-udfk6r3Q=%X7PQ`iB`uir?@Py}h@P)6Xk#&8YCn zHlmMsrYfgb9hlIv*Zr_-3Qy(@UQVyJruDAZ=RHUCT0Pcq`UOjdS3T@;6aAWPd|dWj z@W#Tgo?rC|(MQgChUdTVlaEX9DFN3|c(Y-)Xs*TY5`La_jyU$!Rhv=o2XY%|_nm+r&j@@uP z0iH%>-{q_*r_vh;L>39Bo;V(yte)(^FUF>Ud zy#GxTXQ4g=k>T1M)bpQuU`y?*!6gZvHur7d^sA;8%}!aogXojX9MS2^23%RMFPrDe zu4{Gr&QE(KS7qy{Yx{3?`WIc^`@UU0s;8NI5T{>VdvD$>h4pjoKfdPlYj-^RRZIU> zl>dTCV>tZ=XRns09=nt1qiQ$j^!6#&Rc_x3w@(x${mq3seRFY#oJTqly-bhYoSx#Y z_HEXyX+)ovxRTR5z47>rQj?D{`f`07yDfZc=H&-#5WQ@xi9COwm)@!0HkZxY+}GxF zdcW^~zW>*(=PCd2G`_C)-MH%GUFnBT61{VU20Z_ew7%tjtA$9eC==%Y$?3yK9$vX? z0J1JcN%}-@=g8KFAA8F;lIYD_B=h_ud$l{7ttqH{EpMJ zpT6_kc^5Sy`jl5WKJW9^E_&;ybzc(w+Oq3-{;~7Ec&*mV2Z>&{oQ@CUmhQXjiVqhM zz41%+dH$m0{+~2?md*c(Gd6Pit%rI~xZ4A9Y~ZQbSYMCR%C2)<{Kx^K5A3b*{L|a6 z=)d6(+#*wyvD15U`pngbKfAt7D$&dTwUpCmKe%gWgPzwCyDM_#Z~e7C|L1o(;a+>>Yod3!;clLP{<7B!)?LHqZL^uPIsL8?*FKxF zs}AKKapVB!oUP1ZWeE1g6zv#!#2kP~mPV~Vk`nW84 zbj9Xgi!zCx?EZr1Us`8ao#PE4yaGHmmOsbo%P)GQ)g6B@{J-?8Z#aEL^#^YpUb3C? z`#;vmr}sT{qq9?uiQf|4U360WVc)}(pLAX@iQ(#$KOg1vHEER>mL#LM19;#c(%ZAf zH*@QxCFc{p^TRju{A+9NtTACy0?{iqd`hPe_BOt2&M!nCw?A8_zyIgRvWNE)-O;Nz zr*F9Bi%#G4xQ*z_Q~G+@Sg!MswO@53`t)TwAK5zVm#w#yyM^fEtK7ird1}sggX{LI zNA!wwnsEBAJC7EB_tbHsmw)q0PTyUB#Qp6TdWhbt^a@UYVc8v33Ol_(^sF~NwDHeiS0h;`9EmXZu2-dc$C9)>81ouKl<~7cWjMYJj~zaM=v{Z{eE<7W*U$Uzss9nZZ-LG){@1i&>2iNC9GmnJ=NJ3SR2ed$t0#l< zH>y!tYtQ~NZObgat2UEo9J>~A`uWaszwJK3aH-ai?0N8_xlH~^uUd)IFRYRFO}p}oDgTAH zU!>E=f3h-deruv%zi1Dq*WTTK!w*xwB6_J-yx;cMiM!?D=T4>&z1nOppYOl;%Brht z<Jb$CP@1&)=Q8QAMn&mI#^egMsZ+lxFlPhZ9!pCucizgRu-`e~b zY;E!&(XTtg<+}at zHhu5<>{6y#^~&aWyFdA><|hiPenk0u<<8;tbm-9k?ZolyyM|0E;PkGOCk($n|+IiIcHsss7D+dn8_VD8EH8NVpZ zn!xkB7Iu5H+Z5K$uI1x6-F^S7aedMrrT30`kOTex(RGLV$`2Sy^hTF+ePn;(`FAy6 zmvxZnHLv72u)nBbgKaGz}; zwES$%4@7VNh(1s5ozrYw!klVEukyP-|Cd+pwa)n#ldn47UYpmma(S1p|Bt=zfRn4L z{+~CyDHH*brl5i>MUjC72t`4%n}jT+kqrcm5huHo&5+rhb!IkXK@k;E#D<6Ga^HQooO}8?_k~{z`ne4^|^&R5*SAzYzsyOGPN33%kKY#a{U#RxqJpI4-9?|y( ze*UpWu>LoA-@3Z|C$SEdqm+Dg?~NO5Ht(IExt-fjzcyI^oBws?VY8lkfuDc)vxlhu zZ#`z!Z{}_HbAEovH@>8vKd@(hX8xST{CtZWo>I>r96juwD{BIOj`{aL)${+GFmTM* z?pvSR_y6Wb_56p|oxkVoD^K9(Z-1SVAMSl*`)U7KwP6=O-?-}z)&8efUb1BJBir-y z`pyTd=f8NvySM)Cdsp!D_ilEbdj7;koBrt&?-%Fp$n|bf&!3!`|NV*AU&-xvxj^Z^ z_dfaIL&he)UdZ!{zpdo4dw>1dUUz@&17GI$AO5_O$L@XV^s9=izxp$NzUk+KegEx# zo6Pv{L_weTS+Sn_?z2y9{f`q~+J@T~zOD4Zd!OHJuT$=52)?||>qb=j7l!u!{&%;j zar>3OQgY6{FYb5MOW!^4FZ_J*hm<^X?~9i|yk?yf1YV77`XANLU#bTj@%%(_j@CK! zJL>sgpV;AFjW3+T{WLy#wtD`zoj>xWbN(R4Q(LC^@0!l{Z@=S#SIy@3AN=f1vi+I~ zCocHM^=H4GpTG5yUiEzPmDkNLulqxOK4;b5>iN1)-gxXT>z~2T=Y3eo&ucc=_L*b; zdg*%ny!wu1s{O`0myX%+av^`N{OPmm`6jPL4zxnx_XJ4Y)zvh;C`Zo6}^&Tl{UiN?oo{Ra25 z$&`N8zHr!r6=QdOiJx!xVMyk?T)?YYH=g<3k@40fI`PiX9U?$W*ZdG`zRRr}SyI-&a) z*Nby^z*pa@jJa?y)@8b6BU$6M`niD_k{dr`+oA~)gCv2eFf8m?&`O6`vZNblvIrwPx z{7WZ&rSYj=A+IjITFF;yPTuH@tIj&_Np4?X{|VLplpE@~CqMmOe!lMZv3@4cMG4{Lp{IXBmcVKk*hA}_FEjO_}7{X4?bqmgkFKq z?>p)W)&9coZa(Y9NrI1zj48Uh=A!$~I`-U$|H1uy^!i;?`%6DI=kxFVvEX;>o^hOd ze%VJyxBS`39o+td4=et)=8Cs`;QXg6o&0?Ep+P@aJb3WtgTsRUEFGPx`uWCFD=+)n zg(2hpB@gT-^rjDMn7v*Ew)E_57A& z`uAV=-mSU)Cq8$BdVcGEi&pJ@xW~^suTb*mnp>|sce~SnwS=F0>n&96?enczEvKljx02kzYK!cPth`n<{fZ>r}%IQ_&eXMFr%?q_h5Yt-`}{_dOa z{$yU9(>HJRX7&8xPfeJ0(s`fd_HX_7N$UAekN(LTc ze*brmsrHY(<=JPpnR^>QpLy!>>iOfdcbNNNP3&XuUIBl9V*B@f@O#Ja!|hibujJu1 z&+K#YNdDF<`1w%prmCOky>ISx*nfrns(aew>iG-zZ?*T=9^9DQuebF@>iLT|zUzfc zduHJ8 zbkc9R{U^SqW#gto;~duRqygts7Oa$d$BbUIN8jvTc_to;U$^j+j=gEkuQ_`72yFK z03MP;yuzBcOtKGYJf#7eYTkLOtV*&oo>!KAYiM}lv0j%`!#Z${g*V`T;28GSJ3ErL za7kJ{Gfl6J!2cMerfF3VnyC)Altd@`a0~LJ$W3J31MWs9sA;tgk*g_g$1RA8zp9t7 z1(VX+h);26s%2BP-7ScyPyo@z1Qxf`q-2J5&0O7(*r{%!Lf1K)diE)OQ#bza8p3nL zxp?OjjK{g64|T+*cWMc%eVpu?nDm@nL=+#I=;v#O$&;3NiYixPLwg5GsC2Qsj6~_y z$y3ZHIamBJB#ehX8D0}Tkyd9DCTY5gFzqq`xjWChJo=cMq{&Y+MtlBsIFb@8@)u7x za#s?PO~9uq&?P89+3EAw_OcD@1@1C9q!i}c>XyY|TO1p*iAhBu##MEs-f9}>gep9D&z8NZf z!5k13&}I&EX@$~&SUWCSFr(NgUKsm^Xh>~hnB2;8y;wM?w{N;nU<1AyE>pt87;ZEQ z^A`E)sK$n4`X8>>%7uA-3wuNTUm81TzM{S{S}XOeDD|)WHXWwbg*x3PRBntFildDc zg??ONzYMj>3x^EXM@L4gwMJ>6$A6||t}wNb3mGg+U+F`mC0sF;Rv@LF#4ub*#jlvb z%I1RZgJ#S^DZu6B!I&lLAF3C6dgcZNLN1P8%ISUcrp)hel&IPrE?$i3O_cPYk51(t z>sKT$xLjrb7TOprsg{o{%CD-&0D0o1l5t2Kqomx$Ir ze)Lu_8Oe1DVeAJlPCoqHS62%-UZtBw~ zl-TO)Ur`z=#q0^KhbV7U!6XJ2p<PqXgE}ElvkDFD_q4aZdZV4>Y~XouIWUzkN+a5YNDPR zGeL0@qSVjuWgY%^HT{?hI_;q!B7yzD!FW7|IrX)~*t@u*-+$w~`fiVwD zR3W4o?lDxZgLd|EDMk|#I4ca!Z+Be$2VnK0W z01Qx(%a~2(xy;3cLTsxIClNN}aWXB%%w`w`#|ra$`@*7HSpMJz#32?FS8`>Th;c(c z46ty`C~+Y$kb4rn!wBXdgb}J~S1;fNMU9gWD@#CA#bFI^HVa8YqN#^bzp1#_Oe*e` zz?MNsssqJkl?VnT*Tknae4nK#n3o`-=xnew5RgJDF*qJt=tZ&el(v;&?(Xl5R(EYT zQ3W`5V>D_etbJ@QS3Ik`IM95^!pIZ;s=6;dTozBKPGOFTO85PWT(m(p$LSP?im)Wb zc);9JeJ~IZp|43}OnB-1DTL}38m5B{_J{76qrA;i30x=*A={Lxez`#4IiFiq=gfvBE7*?d?L^D9BVcO+EqY;yqAd8RG}UWf$M;OxP=-j~h3Zt&1&w}a21eCv zfpl@o10QMf)QdKs7Wh8vrG`I^zEUIFlId2=d1pFCe+N))qCei-j$=e>XRnAxNL0qc zN_W7F{UXjFHU>AA7X!DE`O!^IxnBZ)Lhz$@EC9rf2wE8yShV0FEi)lJa(@K!!Y2(PH6J=OCv5>|YT zeoQS@bYOEN7t0W#AW^IPax{9k9Oj$`%sK@>qEnJH74)gmvp@mTzAfpjCSHYtLnUpD z)_=6l6uFI~j?rpXbOb3!2QI{>A4tG=_C=F9jdso$8!ir&`yngC&p4}Cu82s=4o2JP zw{g2v9qYG{|4?>EE7E%-nRHxw?Gj%BZiry5=y&hjld z%NIvIHpo&(U(2_H>Li;M@fELq#u#+ACD98KdZ~8T`?Xv28i+uJL)Z6S;~#TgYAh-> zio7F^UdOLYd$9{(2ZH8k4L)2P6R8VT3E`eL@=|2jMerp_66CRu4hjj{r=I#qQ-^cZ zXj3fc?zC=;0CNa#jX#PSd6-oz4$`5)#e;pN3NDr@4e$}8efXcI5ogf!n`uP7O2i@) zfp{;SfKLOCCD71UoPZglLnHWyTu0(1-t6BI299O8dkE%xTz5v%&a*(5VQ{C5Jt8}h zZRivJ?{l=iWgg^+BQOu0;=u07dT4bX< zK_Yn3f+;q!Xnac^M(qq~Bhm*WR?6F+R_ai|JOZ}XN3$92T)>l7hu2MGE3b}YF%GPA z37w2%0ILYJL;`U#meZwB1M+xi7dERCP#i8+#$fd;fEW$QW8jh@!28VC4=3BkC<;zL z5H@(PNsAhmG2Rpdm0U;-*~b)p@HDxM4y#KgQw8x+3yEO2c%)V9X>Dp`gOR!dH3uwmxMS z4Ewg#GGqwqW85^>-Txln5q7}*zC}~_nzH+z%0o~0g(Xa5?gHU~k5QfD!vD?-?LMzC zSRbx&Ym`g%anl-NR+INlY%sa#!@I(3-aT`nM9#36ms<$?h;c7kTc*|M7}T( zV(wLnLN+{6VFVEjs#YtG)ng(unT8zzM`+9g5yb>h}yn_9;FuSxmIovPYL4bJVNQ97az7g}s9Ibbi z!OCJ}3M`au%wSB=9Pfq-5u-f`6B?b6V(Ms2| z(lxDgH7i}w`pD4#y_c?Q71y-BZevonskALpw{q{|j0|B>66$uXw4BU%y4BKoKlOrO~&9M%!8xx}}` zm-)X(x$JT8@T%&{ls%@>?Qr?#{uyaaXKRMO#Wq_PZ!#A~K_3g`&S(Zo5vUXxHsVYn znt?As4(?pyMuHul+bR4IYwJxWe18G(48d*bu5WW&v9(BDn>)Ryi~cC~Q?C=l+`*Sn zurHLYBd%gzR9f9ouCy>UmqHC#@SM`{U}J@9%U-@H-8TmH)EL9m&Ho7cFAwAHXtbQk z{~IP*iFg|3ZGOi?5Q;dtk8`}lys<*^GHd5UbY_T=`5(g4hb0>S-^6E?{8aaM{;$~i z&R+r$2i5r#TbosGQ)WNW&cxZ(Iwx+96ql7NkfC{3qwQOZYsC?iZ|T9minc8op)G@E z5MiZ7spF%>1{#H?I@)ZScB(`HCy>VsX zP>BAR`&VhXOb^rIGUci=&Lj+1i$7}3Nyi7*?nAUV?Dw*3j*a4D9^G24k@C5p8o3sw z%pnRakw<_0kVctm4ophe!zOcbvd@FHU2_|QbDD651a8Y9HQ_w1)|f6u(+eK~SxH{q z2oS60qZ(ou1kSMlA3b@$4{;9tzx0(L|H(jxPL6}5ID@4GTBbvkc!;n^5*8J+!7Kc; z^5Ij-)WQ6WUw2Cj;V2R#I+j}D5 z69jAkkH*V6)xp7%^xNd}_GdHU7~qqgo7^&%Km3tjF24JoL%+D!{rmnB&%W3)%1uQt z{L8N;l;e^~U&SZCdTEg1&~zTj!#}swC{{U(pN5xD(e0Y#{*>0ynqdCLjehcvWw(EW z0vj%-h5aw!Zv-q1SYi&TJS2BQGRCV3Ww%-tJ;TOrDS8(BA$bbKZ58P|X&p%IBPuG& z07N4_(_fq#KPnBa`R8ScFUi&L)gTk*CU+9o1-sgz<0xje>l9ceSOo$hLbb_;FDLcfYY}&rM0)`uo z4zr_X2{qy{kK7MwR!RiAHw%ATM5+pxx(y7RzCAb_`N-ehu3>1#b{G$32&bW1(IVj3 zu?R%=;ui_nNMW!vYjOoUDRr24q%Se`T0*tM(Dk^{A!d@!j85qmSs2~7FrRM_oD-)e zi1cPO$#rOF&iD0*Q>2vnq>|4u=OAx!^f-P+oX%i07|^YBcG`h6kho}qZNwS$sMt*% zU5_iyc!%Kw3kaTS*TL=b%it)|qKogmRvAc(9!?6YZb7IA!Z;(0F7y@j-f>usZ5G)t`MQbMxt18yd8HsJVj6yZQr=3F9KqgU>9mU((tg(V*T zJi5CFlkxTf>`GuOO4ADD@(I>iLo(>DAf(z-;z7Sj!pJxZ6|S-tEdkbSUs{Wg1CAnK zDK|=NAhSxPw5mjAWB%piB@xpM6H5+FOAR{x6z%1)fYk&yXB6=3KEIq0%P%=TX!^|Q zGZaCiSe$eL-$g?{pnr%uJp_jK*l|RAA07C%taWg=^N}JGW$dByK1my~5&-Y4C)|V< zLj3N87af-8#1&h|Lo*o1!|33?qE*8(kI zURwP37xvlY-9VFFiCAq2m_!f`uuIg_x_Y{W7c#}MgJzmzXI$MjPOf}qD%VCwX97#H z39ZX4z<#r+UU{-@M}pNm8xM8oi3edh1J}GpFH9SDUy*|4coA)BfJU9nzDRFm zRWz0mQj4mJ0idtqN3Qt}YessLpvj+HoZ8*%OV&&1RB~2Vg*+GatzPlh6WT5gz@yo3pqvtD6=gEsmsTR=38` zV>1A{N0%=z;kHw)?f-;mLSZ2u#C#88zPGI=zWe-ds9cyn0yc^&Lp8{mv|Bjw~%JK!upyXpB%{ zm{Of8VB|xiq-Kjt%c%NTDNYo|iyn!&F2S=@Z8I)-HeDtNy`4nrjl!N7CH*LPHg`OL zYP}ref?(uW;F?nCFk zOT{SU*A~^d4MV<>AQHU%as)XMy~%8p@C~OODKZ|KX(x0%=}fy00vjcQ8>qRsl7+*q zIbzKZk+Sr_VLL=DY=$rKX6ABq19cEd5LFYZXr#@XnV^WZ)-E^Bkm+kvo-_EQvI(gQ z%i7m54~`_*9*go8f^_XWOcTa0cs%?q3I@(XdMr!>;g1>d=3?(Tcs#Jdv#Q}BI$){% zK-@g*8pf+K5Vt(CqEr(tMK*i}R%LM|YXpku9~JXu8+>j${<1egM*7En&7xCtC4d;v z#aY8ssjGZ;N?}hV=tK15!w%=Pbr`u79%aMgbc0&><1&1n!pL*i0KQJ(8vZ0OW6D$# z_A-S(Wj`tS;EgnPRQ1gv|1P&fJbT8!8b7LP8yF|Jnvn(7mr>b*uZ&l?RDRqYw``nf zdCT`^kuM9IYJJQ9i|zXxfkli(81om=qpac7q3$pYn{evTdtFh(h_*`7yAU%)bTz(* zp9rTW+DqqnijDM2uj#-2+Hmlv?!lg*mj?@I{4fvYc1o7)^*Pi3@73DjXSDwxKm1Pd z#CDh~|hyl^!XE-4j%ZAe&iBJuiptyzV z89|UjpsNQC*@%1vX!)i+!I9j47~jwC44Cgb16~pK{V>M(+KDLCgRyG12CR15Oakl- z=tYOnIlSq%wlO8L?dA(@mU6zU42GE|CkWcgn1|HKPlNdSI>$XnOQo#3Pp8tEpcb}0 z2TOs$;^)mHtaOR6wWoqM5w>={C9;(^N`E#Hwi*jz*)521)qK)HHjB=EG8jcIM8TlY zAMGba*m}nSK1`7A$s#0JKh^%Y5#XRmS7}^OhytltkI`%!YuJ10E0#4J0=%I*2Xi%{U6?qCHTWfb7Og=2?g6yopQlOO zK~oiJ=C^tu@z%=$7ZPyZZ?tA=1g13Abfvx=GUB|1LZ3;WSwclB>GutD&_TfgLYe+> z9Z7LNYFsef*Ms-9!y*KvrkhpMk9@?Z#F)jP+a$%nIR8pT)!>prC;3Pd)cR&mpCSY_ z-}#sp2J=6do3lM(FhUX8#kq^7p#~?FD&7S}GCe;D*hi*!mQ3L(g zD#>5mq$#i{-`xf}8iWU~MLOD6A|u@0uTmn@&Xw|A!mrYm%KZ_i;%S0(!D)hvaWx?6 zhMbmU$~4TOY-J6F!bX||T#cEzzkmXG1ptKuZhuQ42{}ko2o%axN%n?JUt?7~lN@$? zdiH#T^hR#mpaiWToZfE4eqrIv!@`-LZyTEiQY~!H#qw}NT@XAunX_4P(62_8)Q7t{ zA?gm=LcKbSKxz6z1u=Jtzb7VDBuEX>ot_#wyiz*fpJ>n7*E)-~Vz_SdlFyjQ!ppf) zTjI|xo&4>lAPtiJY8RzqPnJqb~IW%ni zUc&72+W_D_&A&1Em~3#Ve$r|pf3m>G&`+kEi;LiKi^L^*yZ-9%FkfdU{;bxzrq>2X zhj6CP(wm86&z&7SS{f~#8pI9piCt7H(*+gh>F-1h;VXKB?rOC`M%$6|^{0oHYmL!j z1*P7RUXQyn;>V2Z!?_XeaOX+DaUI{$4f;RHS@%{drNLrFy)WlpSG+xmI-ag~iG*3? z6{AQrUDMOe_15Sn3uK}ps$Q4xjdOi+ROi5y}Aoi$RAp=g zz<|7!APN)v00$9R%7}E(wzSuLgL;<=U}yohmpW}KHzi$%@x7gGJ+;nj}`n91G7sN*xJx6 z*CESR2g-GH-KL9z23mgzlpMt+z+=<<$#q*thu&F1Lshtxog=ew{}_D|ze{MSKLp%M z;8ZT&)Q0p}(N~5*_2YI9fr`s!jUJ2?Nzp8K^L5@JlO>a$Yo(Uj3#q>*6jrwS1U3wF@{09Z@V^en9bq`vlj*CM#pvc@q zx~Ww*Wg*E(81-AVT1pc`X!Wwpb!eZX0{BCCG8?z~Rf51Snm_%xF4`aPKffh-Fr&Jx zM=dt1#PpR8EnGKHDD}6bTIo_2J`-u7;o$dYTDXePYp*J!ka?|&w^HH5a!8O%+|Up~%@(kkd7mk%Es zAEyUP!=e;Wfd6`}o(%aa?J5xDQRUNI9{{F?+(BCKqK4~;GhaQ1f99VTEiwwaX`TlX zHTl}pjq&HkH#siw!dX4LO`S4@6e0SsNFqz37}^UnhX>)I8CM$f9f#@gTGHi3G#OE@ z(O=BB((m(gIK0{nu2T>=K(OcsG8CC{@((ReW|%u{1Q zY%_>EZK2J%XKA*d1{_OZL7O=q-m{{x-WBQ8`;g%>N{7#bG>Y%j?{hRDr9xkCp0tSE zr&*P1u@RU0bZv&$zZSeRB9DbU;`}jn4tTsG+%5MU{_-RNyFZM5Pe+&qBC9RW1_R^W zXq-X&ml`<3l((i-xPHWi6 z2Zs8}uQhC3_eEsk0wdRb&YiC0-sxIM6NRt%nz4F@V&^R=K(5NE944yOqONrI635wU zK)S9CuD;E%Hd2DmeB&-wrkxR1na6?YwkUk&uOYx_er~K{at4e81w4D-QZp zXYZ-5tAL`3tqp#PM7Ch?Z6OGIPYuh`$pm3a>-+{gk!|JiqARo4q#4&u1CMuQ5Zc#3 ztXe~Sg|FQ`tuHz7heT`fTleoIt<$Y-zag-XIilB-i(n>OmR&3wuDX(!t_ZzI(;fnl z4qeJ-GR2$xvsaI5^i^8u#|WG*ELzyJdl#Ah>5HOhyrJ|a98|oSY9dFQz=EC4Db&|M zn&*)2mB>AZ>3Z(~yp7=Iz(_zAKs&nx$ZV!W;><>nOd99+(p|F=HW%>mP!{nngdud% z(bWVj8AJzBM(5P}iMn_<=Ou(vM88ZgB}9ovzvO>W)#15?Ch!d4R|HN1E}^(!t9Ui% zay1Ia!#SJ>bnj)uaxp&Pg{4vA_j{W05rAa`*QDF;W|fBrrV2-A9r;*wyyj?PsnRFE z2lzHY+prIdp6%RZvC?4V^t%gF@sR)FZAIWD3lP3YS(v(tumy6>@{yGkFmg~&pD^6_ z21U*@;7x>gzM1y2*A48yide-JLoj`^gDqV?5F%JRu_z-gUw!qA=& zv5FaJ+5fFjA$*N1b17DS0iXXjfrV2of?!t^vUN37kD*_VPHo&z0$8e*tj*{q3!-|L(h@1|RkMzapYj{=IiNfNFCu zemavJ8%-vC4}U;Hn_~|%N!r$a^n`4@Hj?1;0}>pBPV$sx%p@TLmUe)!>|_8_AU7i6 zIT9=vdPRd{3bYOe=@H!Dh7<6=PJlMRZsj)uOeV-6CFUk&)O<481lmEg+9DIQnR~St z60O%j znm02{1N|_Yp4!+*qv}^NtS>ALmMPG##=%aj3x1>eNU6WjyNW{|O2~-m!{5U_HtW$^ zpge|zVR%lC6FwzmG7VJmB8Bkd`-o@IO*kIu)t#t9)QKuYoo}=X)XHrhnR-Z9%q*x@ zD_Xrsm6tfZzrR$k&#Dv$wF`9Bzs?vPsg(PRjndrG(6UlZ)#tGY(wS<}X1C}z3rBI` z+fb=*bY!GjYeY?nZ{F!0US8GeTdG0#R0m2ZQdBE18*P-LzrfnOic*g1qz^@oR>F|8 zh%R%}8bqgtW-zctO-m(-M&}{;0~V>PmjpIFHFLE;bv1vjdX;K6f21Evq)m#k66!kA zV|itSP0A|Y)zNgK6?Rg?=^ks8Xh2cuDJ+t-)0alf*Vv@4#V~D^YEiw+DAoIGWsrm# z4(vof-#2=Vja-j}lo2NdF#7O{PlXO3$x#|wEOiyR*WRo-PX^kN_5rCQWnr2$82mV>@=pBEtprXHYC4;%Q(s;dmgMAm z=fmH-D$J1h`xwF+Frpk85Gn+zWCM-(r{7|!5g6M8=Jzs2AE!$*2MOHePwK`MXX%{= zzS}VmFpD57GEC0qx@e=+o0!qkiubd6<1Yj0m!6{s?U{ewPx8 z-VV5lz`^6?XH-W=sW5)ayNkOrSgNdTT6711{M}7+ITvsmL4x`q)^Gl3!#Hmp3A#wM zdckMcR~fB^HjM2eI;$H4$p5#lQw%OiuLuA|Cw}P@gTgiEK%upW@8VFpsHWmZZ}h0$ z=B&MqqMv@T4@+c6<*GH(RMHMZE9y>1)=`%JDunP&bIe10;lXLq6;&7 zy8W9C9JbkY=bTXwqr%kkPL3wt4GjfAXgQeb!ceM@Pw}+2yplO@Hm&8`0B<7rwljaE zki<+Os2TZv{s}u=Sqm$k_a0wgjR|dr*MF<1}vT z7sWQ^R?{}^3qbWJZx72Om76fWtlG*f+Y0fpG2FxrqE;?e%14z3SojdD=<)4s>e8x= zM-)+@q2rb8n-LVpm4aZ*?V{&=X;toK^mr{n%ST8oC#Y4HL!9;e<-Tj2KlfuK44Bp@ zFF3N8E}uWtVrQRWms=PDSPo@?(xP=baGVrb6k3`_&Cd^^q)+jOs2tn@xJ)Ap`njau z30?$$BEBW?!{b`?Mf~Nx1e%*jlOmdmmimzZafiCOz^V99F1MUe;~#(*2rMq@4zY+u zcoH4Tnh9U?cV=Ky5o6E{Wg~%Ni?M>N2{qSWg8$G8C`-Rn?ia~KW=K*dQ~w<d; zu>ZAE!~8sE!j}H8;eXC2NXT&Fjwnfy+%Yg_`Uu4Kyo95!zoGPQ>2Sd(JwB**9iTb= zuA&`q#CGBM%7pD1lSsr~!^2NQ9={|K5s=W8dLRBHvI3=%urL|JJ6v6zPv)?N>|lEB$Rh=U7U@^78aL^fQ^+@y7D zIZzn!O*H)H08bLQ&Ovv8m_MFHerg@JJ=mMQYY5tS>^s&10d1QMrjtY5icwer zJ}*6(M6t0s6SO*hL@9&ArN10SOU2#Z?iAcsEc0$7%>5+bBLu>@(;~q@M_I%ZdhIhb z8porzJH43c=uy#IZzlq`*kaIl2y$G*gT5V?pfg;rl?(Iw7WVpXo~(I`EUG|W4{1>G zN`2qh&`=3sef>eGN*mJ{_o7`Qe)e;Md$I^S%JbDM)1b#(hf9!>E(56(q`H^f(ES9_ zK=6B-a3s6E9@Rpq7ZjpCB{*=W=xeC@vk&NNEad&0|3K1RFB{jO+=L9|+se|@ZcM**-s zLAE13xn-pN3+-H2fQ8t^EA zi$ck1Ns@))W&U-r(qKtTF;@9Ldo%1`<8Qm`p3h{U&O(36q`dtHOY&C&m(s*+C6Lrv z7$|6EBT7^FHu6E4?-G4+L>5xqF3XqKfd%*84A_*wIZ;Wwt%24+6upiLCuL{Lr1Wn-1mnCe5Spa)FLdmEwU#elO3(yQ*zsSXduRd~K8)dwDWTPyRfS?L9> zp~lU|`mfV)p9cJrz(rh(vQ?uG?CdL=Z2XR}Sf$%plY)tMKBH-N&GxWsHr1}#6uV}- z+chJE@PC|c7hs38uTj;DcRj%225=grK@pL4$F4{HxRUoSByOO zeVT_VBEV?rXf~x@=;!DrqgS|y00pTM)p;h<`Sba9el6e?#@MbSmHR6#yPCO+V6Bdn zkmt~iQ{ZA2!b1~pmkC$QoP3ObBe1Bb5a!j3=uvcda)#4G3uqCaV>b-Vcca-p>D?x) zr`JhDbsGT6NO^B`krE(Lv%f-07#R<3M@!;GX3vhZT;fp~9ZzK&xM(lxtVksUdyO;= zhu9X`L-@86t_v_!uJ;$_;y->2NDy^HA4(@^EU}ME*bHSGc!vQN5ImJdB#u00ezgpB z0-Hl>vhXiE7bRA-BKZhcobnlL@%OMgp?TC=~}N^_})qWYijsYoczWK&;-r{uQNx(MoxEaN%gBL~rm~ zTE8KyhUU(tExii>HOTu;Tj^`Z+F@92ls>hf9u7%b5fPZ3%Dpm3ub--b`z=|j@jYhS zLD09oM0y|gGyezxhR^&1j&j=iE*wy^bG0Odx_nb}o4F*$OmX~%l+4|&g)XC->O%RA zz^b+c-DlA_Tt;m0Di;ii4F~~7|D4Fx0f6@qxbSq71J#MjcBWS>bLJ=E8|?!fgNFdI zD=0-34xHuI)BEO4F-w9;vuL~Pl+B^_q&TeC5xDpx#d=~kw2~dp>*QnyjSX0rAznO~ zAeiAcm&^whf(6M~D?Ec)d2hn%Ssudntv@MO~mWDkL{X>*vNcnqIG$YK`#dWGAd6G>LLcmd5ud zzQ+a9jDef8J+QiLZgIFcSgMKGVLoZm?d3og3fXc_br5?f?g}$rknN%d>>}1;v#uu; zQ*nas1V@^Roe9p%L_C1CrJrp53J>5A&hYKtUgwqrj4V&6Na zWne|vyxinWUal5m9I||GYGS@lJEefuJ&szoiem=rq)neV;iW{Q?8B|lMIEpE`mAMKFNuW^j@ljXc|T3) zhk$zt*d!TA`icWZx`d}NQ~0AmT5Hhw{o-NqN@(BYyH+aUG+|b9rA~wh zYrXO#e=LI4{AgmK*G4r5zCSo46oxhze*5r#ns;PDch5d6YMA1TxvL4I$xj`@zsb=`!u zut+I;K6n(>Z@zG(NoWg;_#p%ieZ7z zlp*ngFQK#bKeB5{VCm2JwO&vuHkMawLt@*)-<2yDA!ts#>#5_idyB5<{nOfw1=dRfTS zE2#kCI<&9f0>EjU`$kwKHL+Hn)5TDEMfheuT~KtwH80%S9D;FhFy`E?L}}>Os62uD zcFO8O)K`a#_!5p$@q;wE4!`U+3xc#N*($IV&iv45dAPb7o3*?=I4X=5t?8R=^D;h*5S&$I_%%wytI7}thhTjy%nbgY zZa+87B2DPTQA@Z+ytJU$SYahN8X^<-Rw<4`5-s?%Ws|-fA}0;VMOW+CwEELWM&@uA zr5eX%$(OlvIX^gJiU?q1!%qQjK>i;Na%!59KN=|DZ{;rx+Xl%1f6&R}G zPr0&MMNLA{47xH7RxV4rB96XXzvRXDZ-4Vu9N$OBRIzD6dxuxSGBp5oqfuO~Ms0}o z{6?)b0_RA9JZ%-ARdu+)UNQdPh5T=9-;kr@cjWE@MTU#ZDy0H&0UlxAT!|CB9mZRX zwDacl8I-wc)RpRBLE!)*zs^wPR=EOcc;pl0U2S^3PVR+DX;rBb^ukLuhn^YI62I9G z&tI_&pFv@66^RQaLx_)TK_r~tXpdUTCntUqf^7sdh&X8Ap@^z0jMggHLm%%D|3D6r zS^{D<9cKOn{4$1_Y{^nXqvK(!lQRStF+L2lYJD&Y|Bfuz5P=bF!(#q>K&u!V=%NP5 zvIYO(EE0bW({gSM#$H}tsyAj%eG(>L(vBY%k6Mu2$kuMV4m` z98NziT^tjCro!8RuZYcDvXptW(QDAA8UMMn@C%^>$on@s68P*r8!6;X&+Ycf|0`_u ztIjW7{o{>3Gvoe0K36{AW5v6#^4+?u^h?qdCO~ZXH^F`BQOi+cF+Yn=&(0{l=A-XF=MO2zuSGJC z?PxK1{JeEZNw^k(5@xx}(==j{0RD& zsf3Y-I1uj#1kNHS4SrH4H((2Xb9dDg7F_4*Ql?y<%`p&`$dh9*rH!{O3WUHc?=jlp z{Q+c!-77Qwq~0O|e?~y`!8(cqL*?PZ0`ZsW^p|)Mu1x|N#*;T@WAe0s4oB$#HWanv zrTvS)Ad2|Q@9(_@)@~*(ggr|rijgU0?S*qGSbb2d$qKp-hsV=>7%qX zw4a_15Iy}FfI?D!Xz*>OdrEAPgijjO>s`I_e`i$790KAQ0&2?Zgi!{64wKn{h{`Wz zqPmY0D(wu|j==4-!#7>2l#42iNTxcoI$#@8;djF7x$#b`>Csrjam#j|N~^XRU;}~# zfmmUPl#C-aEezG&jTDw=)yFj31ofPmHW?_$L@ixJq-EcdmggbB8iF>T%Z{~1@7gL( z+T>f?NR6MaQ`q5>rDp`$Zi|GNSglZKDm0UHQkjuF)876Bdz-D&WKT1_sG}#hN|Uk+ zdawPJCi9=iVL6__kyhu{F)Sbkv5t>WV!6c7*rYAPFc?IziryfK+pxeHABOUVjJ@nk zD{T;v^XK~7x>HcQ8=JD&31x5xR!nGv_F_;yV@aE|7s+@HN^HC!ThO23c`JG?#fOkO zmOq&&DHT5@X5&=wQ63fhf{*eI_kxe|&6L0+#FU$P$L$J;^r+xt?hybgLF69bs?qXb z8T+ADT(aYtB7j)4I{QJyQHI!NYcjqiN}gu@mW}L>kL0KlK*v15EP|}WdvYtGQEdnh z(9)nde~VNLnZHzTqmYm(`e16Nx2DAAq_y2cyRMCJV3D$kPaOS6w1mSW4 zM-DqyErN3_oA_TAX#T2AIjt=f+oRw$abNcO4B zz|p9(Qihn> zI$$Zi3B>0qHVG{-6I`bO3-xSWi*{tM3M-vH1DF9oTmvm zTGhG*wek=WF;+35MzfBu2U3RCjCxZ|Ww)AG6-&uAStzhQOF}L?qVeI!mlC`m|Fej| zK*y2@0V)uYn7JBRg#)DlL?f^_mR_Zwcee8JN?RK>Z)#S=nz9##W7+uxyUGQ0y$*e_ zlMjONwr_bY4G$uS0hK*{MlHmG6dlh@F3DmEX7^&$csK_0fc8|w=U8@frEEmtK$8fW za~2V@VR{h~4oz*p!(NgOA?Z@57LkL^2N#{dXBYI+j#Ftt z3$(f!=D}?`w9nFP$#!rj0gEmM23pA3nDne7Roogw7ul_vA^^zp<7_YNF4j?%pubjX zm_xuQ==z-8Re(zf47nwS7A=JTv{dsY9=yaqksU3C7yV6;CBzGYJqEHs6V;LyFcwD* zxyL7KQD3~4#(f9i76OOUxjT;+{}JVO<&X{b4#8WmL_xO$A~w(d^o3hWMJ^)ukj8T_ z&E~fNuB`W+;1F0GrAQwvb@~cEOk7z{$$L)G6;dVCVvn=15H?*KXGl5|%OfjFHPJgI z4s)b<+aiv|RS_zq#-)b0!xuz(mk3)6vIoEEj7uzmSuNV;5~5MJFfW#q_N zoSwkLX5R5)@hUz`KfYyZU+f8_d~c5o_?~Z3LCYl*(|r39D5}oorFT3upE0 zHg(Drvais_tc_F8=w_V0CR4UHCSlFSz&saopR%~ow0hW@K$Al+R8nUW>{XMlBM2Lb zOgS$QiRtAn*zIUY&{7fY8(rq7U&YtPVr5m;Axl$Jl?N=XA;u_T2-yS^IlB1Z#eA1?(WcbH;1-U9okM|4Nz`58*yZ8 zYJ9+{P@dxdT_BUiC{#eF;rupGquJEDxZGI5v4zME4XbbRFwGmSRGQ4c7Q>My?0Q&v zlN~p8>f4mV<|UH|NM%ozUfDGKhWrAbg(ibk+L6!-WXBU2(J?g*cV~Q@n#iRvYzfB3 zaCbP12F)<6fLip){1FOQughKyu{=VB7wZ(JEOMC5NDZY@NPPV>;CX^fj&&*U zWYV&)3F!|_5{y*G=__p(VRHYV$)5!{g}^vHmIAn!N#OU4gCF}T42pi|W0d(*0aQ-* z3pSE7y)`M(7GxLw=crAzs7N@O)><-?wG@-Hj&C2+LU+lwp@IQmc(Mwgv5c0~%y2<~ zFB#2be6JP(tOXg!U>%A}u&|S4G1U1{#rZSo6ul3ykRXj_gIr3n70vl4%ovaOiJFr+}YuwlN-P@M9PCy0>T z3m|Xg_iheJ1_>LnqKM!!m6u(o4h3sAj3a3s&|6M6eAW?rR|OXQA{DNMpN~g??jEEm zH2`EAucSl(pb7u-LD`$8;39+x*aU3*{fyDa(*ypoay4QTK&rqT86WVkHIHXu)CiKk z$N}(&LjnIDg2lWK5g0OSgt!boq10mPV6q_&N59}ZT^(3Z7OgGbSsVm~1!4BHWGUlA zP$Ds^fl<@YVpUXuM9Z>h{_5io?-)Xe9{`YYk-O)6PPY4|6V}r+Ww%{naz?LVBjnmY zXB=|>JB)@RIG?(~opex8AJLu>RwM99hqdI;(`#I?r?-SmC= z?O5$e4iZF=SH+KO|2O{f7Xl0F!&U%4JSoj6h%P%*Eh=erOq$a`Ds7Dv;c3L#lEf-_ zdD?VZ0Xkg2a}w(W#h`<==N`MknUBN8RvLpPH*5R+619It9I%&Y_J0Tbk-$w-3Z~!F zGj-Pml3eD)aRvSw3{?jx`GDWU3)RXPy_1c^I1N?#c+6yVOgZ;&S^(G`a-SkF5R&z@ z=E{#Bwa`IoM%`~BimCe!+agtO7*&g2p#?S8WW=RPzn>G^|ezS&?4vxtw!r> z8nvc#t5h56Uenv7Bk>(b5l8EP2{Zi+LHG43Q(|=u$1&!1ioQ6byTQde4e5urVq<_aKrmv?cc-D`}t+Wsp)h_ux_N$HN4+ zVgTCaY{D#sNHf)%;!KH`dxWzT-}MYGl1z+focR3;M8?|@ur)yjAw=3sa`;6EAspB@ zva-KkSa48JpQ!1th4y74HZSXa-aBK#@(5?izl|W%_;Zt6F~GDzx6I5-oMay%Zgr8A zs>HMw5G=#1Qb5kAw6@HA=u7}h_=c<#@P8j8FbGL3`E9VuY$@g$L?oe0Man-UmdECl==(3t5lJQKKwnbJH?xtFd{7CxK+g5ftG4R z0AgXiNntm3;=ojmGCmYhOC+sLn1#@U9j6{^#`3kyajQ(W37y(g0G}f;;(Ou_eRafL zJ~W*5sU0htaypIfT)=4r#)Tpgl86>h)J6YKXGM^_G#N&F6CX+ydFIy;5ks{R`jKeD zzl#XH(z8zDs82_%f82P3lP@56f^6z4ajf6pcv;cf#7G0oW}IW4N zof+_1QYi;R>`Q2$CU?Y#IQO6uk-A35u>6^ylXA+!(cwmUs06=-5i?~rW^qUbl{#iQ zhqqIHo4X~NEFB@?rl#dBM8@;e==h|kLm6~cWh14fI%{v?D=|_mHBwTn9bs1kK(F+p zbg0e`0uCdvGV10wFt&>sv|1}IAU5oOO}`o@K2+P$9F?w-%)q@{%b*$>8y_QW_=ayc ziN`o7<|^qo0~zNs^80hDRL3N2H47ZkOx#6OE8UAGE~Vnpa);9Q$2VB5!ev6i{Z;C` zvLQj5kt2tp?seiSVod}k@(ppJ(FNqO<$n(bEF9zN<3Pmqc!Qgo)q~5b#2b*(Y7M@r zicJW{cohx?j*FS1NY%m;E<>snhZ}U@)Aw6mid5(57vmd2*Wxy;<~8XOkNGN?_<1K( z-)sIr7th$2p_eQ@9+O$nC^flsLa+X*%B0*o90D+EN0c39dnP zx!Z<>4ZyVBiC(>$P1O!pX$foq$$JerlY(QU|RwM zl_I3$CegGbtUj2Oggrm;V!rU^q>&?)d5K+bSt>WjM_k$u_e;qn>ZPWPcsXxZTC>*y zCJ?yVH$ejT-gECg5$%a?T4XbcN-YzTD4NR2{GelU80}GSH>OoN5YSEFRFKc-3UWMc z!{8)kjwBg_Ww6U+*)Y{a43JGsy{Dr_b&K zm`Y%E#?jFDy$4<7zYF*lfsI9uUZ0db95B&(*dpC_^4hdyGL22BA_}getKIeQ_2Sce zWY4~JHJ(3NMMhfiAC1oisYo;mnTiyZ5=H+Gfi${%Vz`RE#h7g^gUkcwDD#r;B(k|>{5puVrPbAW@uszo>|IX^xBJ$cp>t9dD`y#+u1WvAUe^nNA&xGY) zEB(4|tgmT=(jn>vyr{f*P8mtU9^E6p$hv0~Q}n+Qe1dZ0dk+m;hW)Kr(0$O1SyM2F zv%>yH@u>{1Mwe&>o)*5;bqG=dVm*KhiuL-D)!G1*Z_)Ec-L>g8|< z)18>V*dCb2nyc}iYAme!SC&zY9pu29>3#F2G{@Y~u>*pBjgIhY0D`i;5yM;@tzXG& z#f9l~f}1g}HB(MHvvxP1#hZt8vsm6%IW&}n<{WB8Wb5t=)%*Vxq9%C zx<~!wW6y7^9(;7(t}6+0zom1u1z;lrt^i}4!$c;frFGJbJ0i#?C_Jc72C{jsK`A)o zLy-&Wj#hYFX%fu{Yw~8o1xUR)NWHmli8x_9qi&Znjs|vT-*Mx1+(cQX>>tIz=|@se zetW=M2+~fhs&YZEPBsi!5k>^P9*8lyh_;%7Za8_ksr0bLms3jXzSq9GX}lGKY|o>0 z!_XBm69h^5mIi|XnJwjv0)HhIwA0`}#?0AV+f?2r)#q!lm~eL(Xm~DiV9m8+Xv2Xa zI}zgl9`GB2TLVIyM47qPK|oTanF~FP$Au-D0$^rRh!M!IJJJ3Zi6GtpxQf6f(v_rO z&^pApse0R)Cp43T%AvYL9u;3A)FZzRw)vRdzkI{JrBwWviu&5 zt6H<6*{x?<#K@3@W7x8rY5zV9KyJ0yaEWoD{ewO_B9oLNu7hEzv|2v0Fu!+kvtU{e zr?90&k2`Kic&n3y^Id;@@@y* zL}2Wi$r+i`soA zO&WX2Eu}EPdxGKmdwDnZk_&+S8h`%!yPmTY0QR8AkBV-|6B+cRj%I%}1p(QIlL+tvAu!!Cy#ax%P6YD}nVII!V5&8K7Q$HD+IYutZ%H`uPr!== z-}f9!DiDhe)(5zu84KOBuN?U&M(d_F(`W(0@~4dy{p7F)oydpjguA|TtVPO-f#qIr z&`Bn*%B`tI#W`}f^yV^-t*ftEYgn<8B$JYeG!T(H2JMRE7xLRK95rC2no>R0(5524 zrAHsJcURI$ZXGb!(kcXd4Gq=`J=Kx1`NNBApeG{XuQ3MUu;rmnv5e~r%Ow$Gl-!+N z^5Hj{qrsFt!WTMN*nG>l^czf zjhbd)GD=%OlH`iRMU>kz2zErLfnbY`p-P=xD&%SW`Sk7Xa#U2{5p7|+B`G^WNf*iB zf1=yt3X4pm3l9zjVhBB3m!%L7HlE(rmsgg8qAZH+a>lN~n3`#Xq5uIO6k*cBuxuuV zM$(XY3T2#<$amG(F<^1AUbex~X5z<1cH1CG?(sh^NCuVo3^^uDID=Z%%+JIsLbFdL zfawI;?~5w&-Vky}$M4MEw;BER#p@-7FT_v6ZENzJ zb~RL_B$6)i1~2l@%ft+*va7cWfDlt}*pa}}cRN})@;S4O#6VAs$vREkj`djZk(h`> zJ(7}B0uY>w^jQCfJgoT9wD&40+9^IkvyBnw`5%^PC@DI3BH$AQhFBSW0A!RXn)5GR zpfTvG(P^|dJNHF87an^52Z1O;WYDpI;0YsEj|vzI(j6&sp^I-tY}9F>c~NCMQ$H$9 z%UGXC&ZUNePkL;Q&h$kZF*=w?E1@*98yu~-{z_!FveL;)a)}&w|F*nP>_t0KrG9D)5-5h^t*y}^ug>T!S z?G?8*OH4D)SbT5}-kY4pxB6g#8yKy?&AxE7QnJa>G0fP;NO<6w^&ljRI{s|o0wKc# zMkie|WJ5v?e;upl%;V#CB7%H*@9TaXTC&HRiS(r0zX@8S11|^VY7f!%o__0x$g#XG zP-ylUGChu!AP1zNf@m6L$0qNAUbOtR%R5~Bl}^| z%!$rRtZiwK@#u<;zI4-S>>;=WeiOC>q2$tya8>8V!j2b%?}h6AwbQuBuBru~-Lnat z1s|FX_?D$aM(UXmibAfFY(m|H69za5Vad`ngCY1%k09gQP6M@);WRZh2x<{il3^{h zBv{KsXp4^nAnq~u;dUq`=%=YRU8-h6uh8!Vk~vjLUY9F?aCk}srL|BjGOS-D(mV_b z^BT8$kyMg5w>N;S%~NdTVYD-T`=N(CN?Ye2C$K|7>R^)d8MIB%Y2ApFXcKa@Yqb`< z-VTz3#a_?P#?>Z9Dy0@N4_}IQ=7U69apt9w#EJ}Q+1XmmTtE{kXwEWv-a5s~m8faj zt4+2qmQd#JQfc!bX~|KJClUi8hVZ|`$?xkX6_pObQ-k}S1UV44;B zp`@kBF9Mz;aI-Mww&r0=#XpknFQiL^g!x|Fie}roYsT1caj4ucY;0OLtz}pm27<^D z8$sV;7f`(QPZ{5YKOy}~($B;Zb+*BBRz9wAfvHjyaZBGxHNCDWhEXDN5xIM$ z9H%3c^lBwKj2MBN>&{)EoJE0aXZpZUd6@04^*U_rQB9hH;=>V{>D2?fW}?j7Sl6Pl zky83D8)Z4#A#oX@SiJfXzBn>V;U1mSX^o5{$4fbHPG1tf>BXSJ>(h)%0b;2C3&PwC zgI6S~80T%t(l8qdkq@-<*8tlFRgAE7RI>Gt73C)usc}> zZHD(Sw5qDU7SDmlE+Zge!mL(e>MOP$s>zzPfit!z0t{uNWEXC@@6fzsyeVPlZ~Ca1 z3^t)ha#W@fsuzhbAnv8`Sme%xV^bq-!;w9o5kb!m#WkS7^K^nMc?q{{nsT(iJN;xz z(%d~-uAnez`XJ;B>Fh^Q3O_=D=~UCO#X(M@Q$jWn>^6L&;`f9_pWNiXL-xs$c=s*> zgH(i#_f2`WqKn|av#Bq2^@S!do6ewFm1?m;A~hs<;Q*p8@|r*#-(J(Gngn9*6+R8) zs#LoA!rKHu0y6Dsjnl)u4(dvB!e`T^h` zf)q^}ew$#gL}f%t9wYDst)&9ihG;wE&>3Hg@c&>gIljg8X#7u|AWW%Z>8*_0=SVhj zA*-BaB)Mun!t`$vjD1$@x;x65iB0L#npQ1c<5%U@xA9Wen^^iB(SQH{>h`% zM~GSeflixpxjEW#S<#eb?%fX$yB!UefN?s3_0H;Li^q#xZUODFI9{9qmyZwOhd_xc z3x;rI9EKjfBs{hwJ<>njR~!GeUi#d^(c$4DO3k>QP(gbry8o91vDN9+Ss+%ywjX}- z3Q3c+;#im;{eDN-pyEgzeP47o1Vi!*Gr#J15yz3-k9E3(pmq73mOLB%_FU9c$uATi z;9yQ!S~mAXYlqlz`Wv6DOKo*?}tB$FCI{UMc%gtelOA`v9TuE?F(|fr``Q+Z4kLuR0B{C@VLA*S2OzgN4NO@| zHCjaaiR^bNnup&bl3^aBG>W8N&~t?@rLiJ>Dt8UR)pjyGgcI%RL@UIk8C~hryXN_7 z(u12-;M*{V!29EJ%cZXZi$7Ei*D!{qd4ruWEailZLnT-8{&-sf$WE|HJjFl4zbld% z19mKP$Y&?JFCvk5?r5b^7IJ4?4e`ZUC-Q)SizbXeu4wwZ9^yF zP5@=Q-P)S_2|Z+$&4kBKE}fN1uHO=)1hX}?=Tr-I1%cbqqv3b7sIj<`63q+F4r;QV zNs*|I@yL`9D{7Nk{>6g0WX<>(B|L(gHTNVz24A!+7dp;l2%~G4dpY+57u^1X>V<}CsHp}Cq#(;k5cLyfoZ3B2CK?YW6W*K$3<6v6JzleVq>=$2N zn`K!gdWZ-|dE?`ao8Fumbsfva={ zE{doZOm8CGigbU3U&JWg`ywulW6`0h_gON(QmS)HmbS(`lLn)^tPMRga%H5W%GtBk zx^>1NRFQ*Anr3Srul!GloRRWzGJ)}-up+?%871DJE&uXqiiDZ36Bg18YTx8gQ}W5V z7^8Op;5`Ic$X(u@PRB(vqq&;1JUQv!qh zhYv601tZf9ujKMZY>n~GywOTUzB0EuTy9ir@wU#s(Pe%c>eL`;MyFD13`<^;5JVW~ zXrRBLnNn8ewFF_$ezOl#20!@nma#OEBv!pZwe0W>a}trS7?X%>Av;BX^rIVZDUCSy zcLJw)P2c*UqXw-A?C5SexIog(=RrVlrThbzWt8<(Ob!;sTGaB0H9seMM%e2idkjX5qK9p>=A zg5a{!8W5wHyYNhFpT7(+|0x~JPXLZ4h(+$+;fSaoZPI2GLeN?pPt&@f4G6Xo@$+e- zIEw-E2{QOuu@S1Kc}Lh9+1{Gw?z9Xm{Ib?6e?Qi@V;*1@0aMmQ%}_D~Dg;q4<9^lQ zewL*-Hu!KPFVW)NlLIR40u~J(9r?k8;6p=Ahd%?4GJ3GD$}st@W1*6#hAm`lY+Mp>>TkeSbxS%|T;Z|gwln1G1=Pop` z_$CJ|#txECqX|{AMhV185*i|Ff}C4zeCz=I7>oA=2Jb@fK%1~wE1TZIn_y_t?Y$r+ zlkDN<6v5eyD+&K@ph|un0Mx_0XD}qzpUZy8Oo8-V)V(WEvdbzeolC1ffh%N4W@jke zvONNH_(e)k@_iZsb7p?ns1^HHmTHB*Qf*bazqCmFHQaM(DB+%s@iRw{54?{u6Z=D0 zSQ>xKnQR zP^EyIF)^Wfp>O(OxJ(KE>mw>Vskz5ycF1eAy1@pNrUq)V%S$yW4gv`_AmTx8!JiY{ z;y^sw9c0u3`8YQicEAV2Jn(7Ewc|{{mkHdYh4q~z=X7RaaZtC_W~Ny&Otc*1exclH^jcWrE_f0=+J z@R5k9w$u;8P1o;ig?!K-{5sCVA@$lSsP6XvgPau1`qdUvs2?w?Vr_t(lJ zvM^|eL0F>Sqs@m@K+L_T*eF)2gKjU)E)EY=O0}>v&p6^FcW7TCqzJzu?f7(7=mlNy z2oEZ*wYCNp%cg&WC;}s_Ur+Tq{N)OQSlco9kxai^1dP<86*U1ljtQdY{N(|ci)*IJ zoNHY+S?`)nci*P-)>e_4&fEWABDIIBAH1Cj!l)OA+8XK+9(mz6Esz#3cE-m}8o~J% z_}xqv;_Gl3Jug{m(Ra+**@wi>eF1cN#vbXcLd1Nat?}z799|Ci0D;Rnp>8@_P?_CM zd!n-iBblfj+qfg{SLk^;!wFZ?a=#U@IRPiu8ya)G@7Z@R>IHh;72@z4zMouHtO-@# zb&7??K8VY#E$5{C>5FT{5pkm}VHJAmBIG8!`%(hKz?#Tk*Hs7sd4Vi|uF zwKVYW-edWT-h@Aops!J|;MD}Nt~;F#sZc%NeQkk$=sP}WKC*Akd#14>G;QWYx6lOC zWzHEAS!n~%MHXju*zD7UQv!483qd6$mxz{FEXna@&L6@)mI;iaCy7`>Qdn2-@G2x= z4G3nkOr&afmK*^qH6cv7lerE)Va*kI2PM|>R6>0(LZK92)KgQ)#0bLzVjSP4Wg{fP zVy_~Ey9V%ef;JV2LRb7VLtY|vDb3ZEZj6wcso(vL7`wMS;GG0kY)GAU>LTw-AX+sI zP55dczAnP)4+7LIs7{)J=XmV)lBKqk#@ic<*NNMMI$O6&JwB0kjI@b?M2uCudAqW-k z%kUP`EZXInYezq%$hFzWlDQa6%Ta6@5SF-ocImbqE7zn-6WsyDx(Vbf@ZvZbruqG_ zSY|Wv*JPm4E!mQf`Nqt!%~_2l_|~j)1)0OW zLn9T8eUdp&ypPru(G9WMc9xVxs!UEM+D{+@ zd2uEp7HlG7!6qKBn+pG=X>mqrc@Y_+ zn!zT#TA`N?!A)cqefz>M38lVqG+x(>FC`(anT`KYyF%@Em1_22JSeufoMZrv258 z@GGHZ(FZ|>`S7sAugobPHP*+Gb=C^4!K-++<=|-m%gckKB8XsSg)a>ZpB&jdYVqXB zvEL^m8h(sL_@%f{X`729u*v@4TmAj{L)Q=7_`Z*S<8N;_DaFg5m79FzZw5hwVh4T8G`)I4Z`NP73jaz~JsU*`O zRXKkNfrUzp!Q>`o4Ow(CktZ6ht-{XTtP?F*<6E^+$gG4|Q-x-S2r>bBhZ`~vz$PG5 zx7z<=|FZ6x+ZHHZa4oKC3Ya=`ULf}T*H4?Y6rM4Ar z7GfTx!^f-R@oIzAZT%paG`&1L5-Gg*=;jnB+lvwK8B$dmweqr2a2O-*)NBK! zwUQvRNICSS?2=A}F&Bz{OM-|682vUxSYU^u=)Cp2<6G!lN8O26ecP1=r+?KpQJ=&1jUhg zdcz-Lm^UPSX35eeOXFE&Z(nh_Du`~ndkkU~H36SgclGv_DkVCv}{qO#R9u8YHh9r*EQK_Z>h=g>SmPvN-;m@av9e~E$0dD-=7S~K3hNWZ*2doKYLIqFA6kxwC0)&5 zVWsB#eQWf*$&{kZC_MgLj$&(rBAiaKP?A<7q{+8GMHFahj+XUb60x!@Qd^Se8UCBB zKN;`%pBRFHv|hkq%o|1BY+K9(;7l!7^1VclPp;6*SJU@imhEjmw2_=%y5~T(R$t48RxJw{(5J7<;paOyv5imgz z6j3^Yih_coAfTv7lOk0G>HOb&vpc(ccYC+Hci`9GpZ$CWl9$=p+1c0Uy*KzUm6`5# zc&z#XJ@J|iGYi@dZ38w_^n$}YtW7i$p-KCx%-V#QUlm7J=~b#7Y-4j037mIzz>${10am8avtVkHC z#3<2>a79CxM~N#fdAwW~&E+xf0_1^)3+j+!5psls>-%U;P2peC_K&G(zIUwaTwGp5 zfnxgSg47xnml;3MW;c3M8t9mAZqk~U;;mg@Mr)~Xdal%^^$5m#kpBYn{=zTPSlp-h zKQE1i!5}H)u^Cd1aHRtbs%k#@mpleaz+|N30`#bYZcTZmQ%Q&Fr?I`S2rr<}0yz-_ zR}7Xp1F;j!L_t=WP<9U$*-?pSPZS|WF$RZcrKS!S$zDNT>=9riXv<6$cQHozn)&6P zsM7TjTD@J~L#Sa^S!B-Dd#o(_uJDUq;Q#Y1MlSjLfiC-tr&5VpzaEkX)VJzmM|^bm zM2=RbvwcS;e>u&Xv+u&9?xTH2a#q{E>lhXmrMAudX5bOcVrAq@*l4LF?&j74!$^NT z@;q4lftKFk5dG}>Nm%yW$c`xSkZnW_)%K^6iRhUDbECmy@VX65%NhwS9Gffq)4|?x z7=vyeud&c7Tglk0L=D{UqAK4#(t%yA5-pK~YNK{!u-07)L1n_|G^PS0DgYjJMWq1> zIZ!E#rwsBr8o|d66EloE$gP^C+%eI^*k4KkhTJ<=saN3;vRE}8&&yu!y{skBrh>@zrgcv@U)a(p{`Tv958S~w6H16AQ08p93A0^c0oqK5-B z8KTeM=Y2e>Y!^<|wBYdW+myF-yiZBW>+@d2h1K-MWri>J8S)LtS`%R11&6Cg#FH?R z_HSAIu&c<>Vvo$RKt2MPf(KJXwYls%zK*%=RpF&u2c8>OQm_)HK2dYGxd9ap7&e~b zz)fKsegmJm&V95M{#~wP1s}W>eDKx{dZYtld43;dn@?^DgRx_Wm!!PA`LxMO z#3by5dt_!qI-tdp1MNj@ij!K@(d#V#*ELH(lLe@5ST1{OGNdC(7^#ZKE=WL_170)n zQ-kR%faxoQvl|05h9^!e#uy*>PnX{t){#s3V+l zzx`q&h#ry$Dh}!ZqKYGwf**=t+a}1$yeAt$imN4y+&RBT(5Lsn(~V>SDGYvfs;iXZ zvrwM8lfjP@)U1D@vSskJV+Zk1(+X7;O9?N zA+N^PmD`909Ib-NI?=eBZ+xkADC*2Vw8G~>e1ZNd2R;l;Pao`X@@7DcMF#+jS@W)$ zIf$luvX>0hhx8%(!$9_uiUGM@Q>1TtHSts(ii>tyGFID?2*v3ys^XW@KHL(Xp(U@n z)0vq*rZAbwlqQYO^Yl4(ktfxuuLry#yWYLKO7zxI1yS$0ZL&*DUO6#P$E!=sJ67;d z?Z+)^l}m$GjMJeq;m-B=EARPc!ICwk($(o1&h#kn7SG|h$DN9p$3lXRZk6f-;-4|L zDulieb7yA9+vrdte|cwJsgEy?{00$FX2G5om+~BBhdT6bVY{*@9qUQulz`I~R?8;0 zE2^j+D}^bru72}{0z@QAW#Qt)SB`u{z=-?Nod>=O>|2s@M0P?T`AP*}b-n*z2l>*ut zFMJPdN>|I%SE;fg zwgUG>f%T}Bx~`iu7SI|SR5qEO=zVNt8->YlxL*7GEEheawEtLILu%XnH52=A@f+3`xC@I*z(>-m0rT(fouE0 z3#-?agct%i6^mT2=!U%K)tdNIMY)<0FWEXpKYI0`sP+qD~ zA8S?wQmeN^*(97MuopRVG_;P`$Y-YVD(G;Nz`1BF-O^|xGQ|Ozc$%4tMX=b`&nb*r z=L114NeNLnTp+%CXfninQ4pJI4AD)a=*vE>&;#)WVp%OuV^d+hdxwWqvWDHy{uMs7 z9s3i0jKIPEfOZ_)8X0RmiFlr?%svp@X$jDWMSFDa_sdUEAUXk+oBx`}S;~X~+DI@T z3?~W~7Cy5~fCec@mXSX3J{Z6v7-qM4mw4g9DVAH%{>Ek&b#XAO8T|E$GX0jFE#M+_ zg%*KLwZ-Hfqa{%d$}dLcvHU%_moBSyOQWUx8xQXfzdes5pMdr=HveKDj7XRNd96vj zK7%idcytb%Dc>|OUC}pfy$?AJFin5qkmWkOyfqFQoJ(TuX^JEZ8Pe8B6Liu_+@FuA zV$p8ZF*M>xPx9WC>o7(XLRS^dS-;~m5I3WJ;)(|AacZkvvSV1*{G9f)0fz$gE9D*( zKks|Q@F=*fiAZJ(pv}T&+OU9;becPc?Rc1%mVVY-Tu0fPdMgaoxgzH$bO< z!MqDYi1Z6{6@ASAMdoS=1FVA03QG$e_^62YMPyW7=&ZNgg!UIU0}M|ZBuGEGd#7n_ z-s62{oM*Zd1u6rTGi~+`f(6#Vx*QrNWiHmII^(ScjO`QYB_NMGK{^L%=$qkcltC#@ zYa{y>z6H|+O_F%Qmj=MjQtw#BE|r|-%ghNW(N}l=q2~Z$Mf$QLjgdWyXZ`B5x)rll zjHTLJQ+#7I?G$Dem`EBMZ-8-9=I|=Nus_k&`k!QfYhX3r#imlG+}kHk30H6zlqHU)oCJA9%C!YP92Ye5H!e2$w!7&tK+x`Fd81#{CLm(9rX3eE`5|FWFN zM#m(m9AWx=h5i1ccIyp%`}d$N!=|D*4JN_!MBxTs*orZJ@>2Z3IJ~acQ@6;_91d@_L^J zzXKND>YYH@+j{TE76-p3EGBuZ&caW}ux-|I$g1d*ggJ*OUGewe2tb9ls@@2o2}ln& z!T>J%hXMRYZ7X5`5M^VD$7Whfun5|bi=hq(>d1uQrHi5rPQ!1%Vbd&B#8C=`fQ)32 zv!?XIOM@Cou2U$iitQ=BHHE`_4Jb2$V(0yXV*gS76;Ui;E;KmeB4DNwhGa|y)TdsW zmlg&%w09qY6nx`dA@wNPxM*_cs|-y@O-}1#v!^CI9B?+X>zljTDG$v|hsuP^g5Yw} zxHR+0f$RD>HxrFercVG9D4^2<@Q!~>aQaDyH@p?#9d)E{uI)TBsFepSM16|aD59+! z3G3WzfpTaxBv>RT4wo`^kQoP%7D+mf6wJrssWC1K0wtm|m67T)-l{vxPjKi60YcRX z!qF7zx-bzdoe!sa5h-dLCj^D4prD2_%v=2~sz^>+26uNyv~|h;$3;N>6q!Emh2aL^ ziS3$O&l+ORWxE+hq07&LPL~{0R+r-kPO3C6adMXtlYFb|*#3X2C^*bU9RuO7Eki2g zFVutOs)0>M)ftV0S#)pYxbF9;*eZr|VsZ+6$pB&?ZYf8VIpOZ?9*IcerNjt#({?3k zm)k^=R%ACb6ce6Ab>d5CpJ4OE&ZCDzx>+hq0mGXgQjs)qDAfwESh2Q{4Vspo-OUCI zVu#)R$n^NZs-OV6(Rp?0fX68sZgNnCMGT@n<48K9Gw|w&lH2BUGr+4yW@J& z?NmXLexd;)Z9{D-o>ozQTBgmNm#G~dW;ra~K3Eb0D$CyOi^J5@GsKyD*Q$c0x(zA> zR)0Qa&Z+kiB?;=FsnST2^g)N6R(hzbUZT0kqERnPH`zVrx`Uk0yON;#*u7)fNs8Y0 zm(+)Ox&0O#FT^R!=s|eseKGj}s!{@OpQZfnk~1e@H_FLP&_2Ybxf7!nlTt+%R)<-a z41>|Fnj2VdM^~7MPVPqTX@o)X+U6IrC%O=fMjV=nyduO``8m~jnfF%gS+ZfxGO(#g z+P$tR$|QF+UG)hKLEOQ>4+Ym~{8sRAVIVejWi%(O9gvlr0vfk_LNeD1bm-ACqlV%j<$O&%ATvCLe=q5<9F(vobl1>^E} zDk|V~E9c|5;QAPso5Lh2!cn)xsMiMI0c&C~xr5v!vLwBrg%Vg`{0r z2h2yxQ1p+hNC&gg*eCUxphyevvr;a4pZ-7KPUGO?B8SS>;SPnfFi`-4uE;c1IJp$= zq)YIw8NT*gp-_#YtI>=+0;*u7&FCH-UQh2`vV zy*?F+{j-L`sx-sqqtbxOTiDgyb0@ZY$NE({QmJ~RdvH8cT5tN*C-Q$vP6`^3-l9`v zv^UMjb*I4H`>UKF>IqZ#nDoK6G~7mZwbl8X$(k3W!GPy1A~hq$gI=an?ecCfN*1oD ztm0P(QslJ6CZj4`|AYq__hjvQO>}HEk zPeOc3;0$%PlG7p+rUKpMgi+rcot2RR{6=xBpQOa0^ImC<2&g9vS;B^qc;$-s$=dBUPl zT%=rEs3H{-Y0FNIk4q8%{D$(+ta>?BeWE&J(#WBinfBxXS(!G6Dn7+p0WoAhwB6Wr z2@J%F{Jz9nc(hiG8CyQuO**5xe3#fJG*apG9(`dX3Y$z3CxC&iTzS!>G3X6jlaz+} z>aZI*^Z^1PJSY^3*(#KHRT!>@1*uR)+D-=lbjZ3A0C~YlopqnWw)uUUC9%oQt?!ysJ4x?6*rZKod)2V zRJ^#KBwE{1HisiF$>z`wJA&Pf%q)lYl){wT(12D!uDMjsYak_l@|Ra_b*Nq#s>$2p zvohlbq}bYKgL?o2FjNYqs<&!+ddI31N>xXkfkN)4&|#3?{S4}fQ#~D|I*?8QNX;0W zh5LRfda0Rhk%7mM&aYGwDvaWtnuQJ>?yiG=!|~yhppC(%;K_2-E}ZRUM;7K946G0{ z3U(*;=WYuHgVr1so{ra4n2sORc?du3&dc;Z&QGpdb>D?uld9DSK04s5-;Nbu_d>a9yGm63J^Yh8tzL{c z*Chd_x)$gCJG5W1xjh6?q6>+RVw3de+=G~1JtU}5lI6HwX^zVI!4&_%*S!qw z3^oc^Qqh18mm=&Rwzon3a=E$|vJY;kt@%z6ctY#hPOl?crW{Z*9q_l1ADhPLjxyaKY#+8rou6iu1%@VzH^* z=%nMxZV?y+Hr#DcNGvrqE-fJfqxv8^3;q>{vIyF7Zeo`~__UMIe!;dytvwHfU7HXU zwo^ELC&FZO`J{ehO_PHi|OQiCNMyka+9| zV87_b5zJz>kAw%a{}Nt>j=)51zNK+Y6SQ$S%t^Zo)GbU@*s4;#+#$Ran_`Ld2!WZ1(Ccvx8v)pGCyz0IfAP)!3ei4s<1|0tC0I zt|%Pv6tpAQ+*lKg$~xyS$`Vb>f0?o@*Wj~V!lw4)d&Oz-kQn7r zyYQVMqJSS^t7B_ZDHX&4VJcQ*M6N<&)x13s2t3Df8^0wc%)X6HWmjqv14*K2Ff74V zgS+Sopdc%!TcU0Dp~>+!(K)FtpNKuVzgIkCjNGTsE!tax$H`+2r=vZLP;&&&ArFcTi7l4HVWV8ve zeJ;cs#^V5=^hbkK>(OZsicCp0Um657yLfW=v^zhVF8|+!dho&T@!^#g#m2^Mv3j;(4o=2?s%p8#5 z*_3W(Yb_+fQd=uQD}znHMyy~VIFbj;G)$@0`7H#1C8z5XG_?+FEQM=rY)OT$w>#M;}M#qr2yts!cSQGhW+~vA}*58L(|l8N;31 zN%aozM`#;uqN^B%ROB@)5wqbE6p2oh!{@GVYI*`}=fT7konbNjmKB9(&W;DdQp`yAH zn`@r7i(|xH!ZYG8URG^I+u5nXgG@|`Irccq2Bb-dt`LAV2t(CogOg*@n_(^~8@PKU z$qjm?f0Zn8P5<|mDP)aS@UB_GyJp>>N7~}b=GPYyTZt%4FL#&c%eHZ)0UQ$oCap5v|){Rv?Z7shZ;OepujfO zqqLo5JOBe9%Yr~~x^Q8Ye*tt60fOa(l&}4w;Q%-NpU`jag>3MvcB3;`5D8G)ji%}V z_~ESDgr*``P0p+s6~}`Mg9R=BK)Z;|R4xtTmsB_OKSv9gvJS zs|rJMHBDS1gP&u?YxH{?Ty;5@G2Q8MuD9t@0lhDgv}LaFRse3nB_t!Vc@OYYU}-Q3 zGYO#7*X}`ppQe1m=S$BvKwB8#Cp-bI8n%0*-qE`Hpt{2SR^NSr{xts@`iCQl-j)BJ zbViP3Edn@|g?}-X- zq=XNA(^?Ek!h2+>#3ph7ne$Ch%>Jh%Llu)oUIrIMhWf6Ohz_9tCIb-0g2)(#ZNG{E zn00p0#-Q4d9pHo1Q1cCglOkuRfBca2T9RZ2)bXpP{vuKxkG)e**bJ)-=9-|Ypb*Sj zy_{yoM!JEEV(+|%x+-W+W)!rR|1nm9p{|7>K&nu0Y$mO0OC6#Foo2OU%m;_H2?G{m z?$(%YU@#der^25KXA7EpWScP1h`fi#IHb@T?zIS(;)YBahcI6}RKkb&ewg-W!~>0f zAP5eE%>1}i$PqC6p`d;oJl==Nn|&}lLekWihB?DincnEbl9_sT7)65k{JCJwO(PrJ zYijBc3j)h#>an5&#O!0u&Nz%dw5b`3;`Q8+e`%PlY8j#o{Fa<1j^o$TiGT1JbW4++v}6 zrsj*!G)qbNuCU6cpKF#1!T1H~Z)&B0R{=^fwHp5|G!S%6e~0ur+b<77`rO6ROI!Br zV^Bz+^?PuReTB_Gwo^gF^{?)MJ*e$V^HX^cgJrN(>1Je=x@;_n-bSg6iDuy}4@a^| zyAIv5AbBFy7MY#|-#JLjWBGr_u@_js-k~pcVz^b3v=$9BIbk3D&e0E~$j=FSO2pe18tw5ihwY2P_IreV_t zPc{jbTOAW+k;cVyV&L->7U>|x4%G=M2SR`q159D;p#MrOL0`sk4I7www;rA>VP z7`B5??p)RQ+B@<5R#+f`ZBXmHlkeffl8A{eXwl+J!s4)M4z%tN6@@GBJzvb-=fx4U z^Tkwm;4j#myvpWccT^)Q(fHrW7gJ0~BgRCIB*AZq`C@XQw@t7D_r&K*T9CP* z`g^l=>EF;=zXyJ(1-wBYx1_SDlQ#S_q)KV@bM%fM_JW!9X%5lYa!EO`0eyhJtPuTT zt%c1<@DpdbT$nhJ%N1PeQfZ23CGtuqX2cB@LRB$!K5pmuOj~9&WGkj6Ezy2@v~5Th z9^~~lt0F22D-v)KLsgQ^)taG4u{$#C=^-yg1Cj{kpgoMu2O*E+`GNiWOA8YGCr5-zxJKTy-n5BPJL}E;J;4n$L%~%y;4j$R z?Y#ymrdWu+FS*A!K0#yS_MPfKi_1B@-EjRb(QYHZBeA`f)y_crsfr zp*pOTbq=)Y*z}+Z-k4uA?ZPe6D`O1|xg$JUo08kRn1NTLTT0)UkG$b!XydS%U@jJ` zF8-xm6APYeExEMxr>PIUT?c-ihO9+^AFg9Fsj6|s9k)wh9E;UeRTB*Z$t$J0#YfMS z5&Mes4xFkoxkSi^pC$*|i`W!3<5M9uX&|p+8J?a6l~<4jV6>u~;jmn;q5-x{ye$EW zbTiq;?%)nbP2y3F40FJ1CQfPsw2|0U$%`IkiF6jI18%bjJ}Or@23#-WTzHWom1A5I zjNHwR@|2$lAyy0_6;YCep6`GM3G!K|^v&Qb*!aOVdx+=&jbXpyyx_tjL*}xgWC00V z&^VOUsDS*pWgcZkSuViTF+t(?tuh{ZLR<>7l`&4zzi`xuOm*Dmg6oF#}8YL&%CsVn4M9IM_-{80kwa-Wf`@c=7LJVT;IcO)a zxj%me6$+UwQN$=H)k*1tQRwpXiS!CZNKLG!$P`bcx4Z-m0>dq1jYti=(IOZmQ;&)d z4w!?(-h%cwHho4v(Ucnk3+|d_%d$Zd9*B+mPN}Rqr!L;$Y*`8dF2YS{e_=BcLnO<~ z_UVpH{rVoi4{!OO(Dy932A7~=nbFgq35MmSJKqNk1w3zsJeDGP9d$b_#im1;EUsj{{x$m&?f#7#R}$dzoGj5ra7>o{dlh81G{wEY_?p3cMsSL zZ6`Kkyv0&PWv@92)Rgq35IB$})ix~MJ{V#_=v`IR38%JU)#4Ca+R$WsdRi*f+ze?e z{~VE)m~MzY8tL57NaqG5v!%Ja*VHpIxZr zWQeB`I8+*pYG6l3a)>k}y5Hy=xOBVf2DdX8hmM2-2ch;P=C`I#DSaL|Fl#WJY!sJ} znw$oQ?a?ox_>1Z-RktMA24p3{`F8McXDV{$0KzD!!T`5(X&axCoB?}4_`+$KaWEx2 z?X)?eR-3G}gcKV$r&OnBsuqP3n8lT#)Ib`@gZUJe<;YA=#WOT@SzFq|bulW5Zl^8! zMrr@jse@?Bb+cjhLqH?d$8+lIOkPr%TA@H-_#vR>ACReWvF?*FCa&fe#lX`G@p3;( zgP`s4v1Y+LC;d_xz+w?}+hBUCm}~kK-A@5m9C!A~^hbE(@35(=$GK%1p=raJc?WDGGA=7E9uCQY zJ4He4nQKFB@S(Wr;t4S|DNPks>2_)|KVzqO;Gh=zH9$1MtYse2sZrr}7}$CT8& zej{=DAr4-skIkHo1NJwsJkE;Ns#uBBRy+4;`zL+{R@>^Gw-85>qb$XvWC({;42*lnAv(Y%$@WzCTVdTxG=D+7$j!- z9NK1VAIdhPN58Feu#Y~{fG22&0yqg{{shI&nqo_X_2%0dFfv}d;AH{^L4#8N0Rzm+ zQcF>D(jIo9&D{u2e>}O#%pd!NzBnGteQeOV zTt7CwvpwD6$b{qX;_R6r-Q=HL__)dURt5T*Ll~tbViXsU4kTv<=cBa`HbZtbj!=kH zV<%1?kv23gB{?B_IGCf^{8)LiIGuVr8*ja1i4#&U$&?1^DFxJofVL|AEY;Uax06uO zyd@e`+k~tXTY}&o`Cm$zZ6t{(fAYN%-~V-omM zARvkzeHEZG1DtLF$*pl@qgN~3ldy6c78tzZP&zABK${O}^Ex&bHYhE&)BN}*u-%rD zj0Z3$Cc^=f-NawuW7&ek;^5Pw!wV4+FM+7S^nh#-%VMAi0e1I<+St77Kyu9pWRQ)X zY|yY@!}<-L!U`EUVt`RL!$%;zR;gd=O)TixNF6!lHDE$DL*_uob@Nx?R1;jf523BV zMlUXX4Y#xeB&l!!2E(s0kON1CXhD_Y=JxKk%<*-v2;8Xul9-D0x`fT7Rdt)(`)i^H4lfe`eXmYoC+H> zIe|iIddJR}Rp1z=Wy*!0bm^k{bYUI)DQsnh=U`ziyP!eoXv=orS(G~JT7_`((OO2> z=OpMXC7oCbOs%k~bg^GQt#`Tep5A2~Ejq5N81h~7AC|UR6gem0i@y);hL`vTQ3b+a zh3B#Pz#(J0!DyC1(;U*s#=S0X8q-Y?7VvL#(|B0s04Sgt00lGysu^WRxUz-yYiFt= zfW*DPsc(lZjMTU^_!mN^*stOSwl=dfz|TA@ZVG*k>yZ9X+}ymWxTlr?$G)eev)JvB zNbv_HWu+ z*UU2~DU#1LbNaX0M-UWHtX~8cqr$Q~|5V?W9tK`GxW=ZpyenSsSUOd)?hb)772%4l zx`e~6v7@a$i#8{Ckv-4K@UOd^?e=gM!4saD#Nk1eE`9!Vff)qP7&wl@^R;|AUK2q5Q%kPm@G_5%zSy$zCW3dl6wBd{x2>PO<2FVtSS$lxEXLuLo<4oP+8Xqr zSuBxhH8{LRgJ0&>ox6zO<%`Vc@F%9NxLR~&F@mRc+b6?!4qw)w8D?!*EHzik^Q^ac z-@=d!YX}}yV?6KwRK-)_CDsKIJoT^r9Nx0hu2MznvH27#U4p}(nLGZ~As<210bB)c z*XHn6#~OEfe))caKQSbS!`u8h?Cc-U<|BB~sU0{xBK76G;%`AN2was1U6SEL*R6f! z+A@Ntyt0?WpM9rs<4MWC5WLwG`MX4}TlL9-j*AK2IO0>@zw0l{o;?s9%lhy6h{L;m zvF?>)zo0Gz*Qt3N9=(6breFRUO5lOZ9_8@o7G%`w5m1=mDet|@;k_R{-~D!e8^Kfe zt>f@MjRu94o&6@k6QB7}hTpkyV&K6t1kW57&Efs~U72$52iRGGD^|{rpD6Ya!GmU8mf@Ly>_2dg;eYFzG98U< zn)JiA>WqFX)s5o)M}8W7amyiwS4I0@s4%;jfK9lNiw9 zB*FX5n9Jd>*IDp-$taczRb^#Y4xe`>=&d`0+EV|R&)(wj1x087U7&qef~QrJ=f5C# zMvWeIw-9{Ln8LjOlH$=*Cw99{@CmP`$?#|YUedS0I|T2S6vW~0j11p%ZRZh!hsVnN zZF$MD2_HSp_(Sl+TX_HX_B`J9$T-yZK?mC}kMlvfW1r8Qiz>9ml2NE8@BhK{(Y31V z{+Zy88Fmg|6Wa32OUDiq+kNq?G#G}-|`?;GOzG38d zX$kF*56JO`>Gv!|WeqKH%AFFrY!{O(1F6DI^%br_0xgUrBS)_Z}9`#?OacaLW%Z0yo zy*fAh;kO80<@`zB|LW7Z=WgzuPw-MxWqxw~_jgh^)rcYZh+ALs{@1U*AAe$AO@jBF zw1~rRb}n?cLEd9=_{&f(twHIK1M*?&B{8Ej$B_1+EeLhuR?Pv_(GnmOqGniWS7ywW3F4(9ecbvnNNmOz5% zU-<~{-)~O&;Ngz71TXs{$Mf6)GakNm;frbn@3*l4@1Ha}yhl(;h7ZA~H*t8{lTU50 z)$b$fA6O(thTHA6*0p2&ZRppWf9Bd}eO9XQJ_q$5Y~}JLcW8L>OSc|p$QR}@c{Kj$ zAr2oO+Anr)nQy6o^EA%4b6;4#IBjVm#%IRwYtjAk2CQ|)hj!0 z@1$`Gyu|rQ?n~qLPl|oGF2UOc2l4(>axaXYyn*rIAbTQ*PrdQtwxTz&;us_xH|P3u z?zAP8fzi}3!_>z+^E(FzLB!8LMYBMzUjve(xygw`Q=|6b`FKC|ef0c-j) zJ-lVkY7T#`+205Mczhl8A5l%F_t!c$ni=2j5WxrZ=6Yl9yuVW8>R%W`@a!mgo!=T1 zHvY!z9}_(2#fSO$OHSAM{hKLK1Rr$g28ZW<7_qW_S4NMSE4bXr&D|C9MC{rw)W1WN z{Joa{{cciB-c5o(a)|3=xhwmvIrDIXX9?b=k%f={@$foT`gUggt@|LZx96@O@#o3L zeVbALvb`qq{u@^OYW+Bm$-8Gd$oyohqwl^$?PICGCG7(5zumHQP~Jeco=q0Uarn-E zhPFv9&*V$_icfI(?p+ga=9r;xHQYh{ zdssi@@V^sZTmHh%-UM$vPnJ_Rf_~0_r5fW)mL-4l{I#SFYcPLYe>=nH4xRb>%#N}pQ@tyg9+S`N4uPz1l z@^MP76Y2&J|AP8AI#ZFuANhQ}-4=73;Kj~zy32dyyrq3s;kO7Ld5F_dUg?R|-uPiI z(|_u(tH;NAtlcBuc3aKxp}@N*Wq9tw^;3E>x~qA$7>8FWZ++#re(bw+>&W>)UX^7f z7S%t_=qr9JU;n&n#~0dx96fwory2F85P|(ytTz*8mpt;p>5~MHd%qQjcm1=OZ0em*aW1->U_N9%OQ--(7h=gU?oZyHUO0sDFhR8Q(H4FE82k zGUGqpt8qHY%N+8gaCpRU>fa|{AO76z@9U>`_~{(M^Iw6-$+A~|%XaCLQX}6W~I#2uQ$%||L2&Qooe~`N0&6{50;@pX$%uZ?lx4b^H zdOx>!tWcQx7aCJbx*_lF%0e^SkUj(t+s64`Uf#TVAEbsc`#PMMumX+aa=lyo3=OYA9og;Ag#+zMN^_p^=;1Pdty&`W@)V{CE zSC~WaD$8X$-CVeI-#_-hK=6vcbNwW5^SH$KPR)uWc-@Mx^6|HJ$=!Y+{u_dKu0E2( zKP@n$al=f;2in~DmBV*B#_d0o%I1^!G?&YHyQ-vaSWvb;jnn0PY2JU=CtK^TE;EJT zg}J!CoA=eE*UH3iEJ^SQ(N}r@?>ip8`D*b`2|oPsPBMJZ*`w9#uyyY9>hm1_!;0ja zO~x@ij9V(>=MU%mS3B2eKaDe>+HBtcKv>_g1^;69c)MOdarm#tv%)(kRi*ynL%-qh zBNt1KU${7v;05j^aQJUK|5?52d>p|;H*h^U??k7JE?*s*N$|8c<#A5Nli+rN1if}@U%I+#fPqjI|N{{PG>li9KRN`en=e2c?x{PFBx zbw;!GXds!n=q;ZxPJTh&@_pO-TSoxvu z9A0!@(EFY4GP|kq^ITpmFaF{Cp9Fr-p?(OI3RK+aF>W|7^S9HQv8Mkp+GKi2jiJKVIo64zFbWZAVl_G{G}lbGg5~ zW~qO=FE7l-3Ceks_piIC>&%5!dS*`^)gdO~Q`|?77*AIUF8ZeNE>H1)rq;?GEhX@HW#v-CleMlgooM3UYY(+OZ9S zm$C2F=t?UNkEjy1{k1_2X`EtNV>vuhXuRW#koX_=wb+GQ3-d zL+?*v@-h7S3mo2O?$(x%zw<5iuXTbmj^+K1uD#jx64P@Wy=LRllwbzxvm)B~LKEF?il#4!2e8F*bhPE7ZSbtUMpvv@Z(X-Ss}f zAFjpqvE{bSdC@7>j|e`bJJ%bRC%)2XbgA|XPb%+~@geEwCA0V0T2udgx1#uS?cM8s zI_cKi1h4fl*8`W^UrgSgdzRsO>&S9)|F?(d3$4TEUw_vg4$nR{GU}Jj==!M_VVpr<)7n0Xi@@yq4o+M?!O8Q>BKvO@MZ)LI^j}C8%l! zvRppzRU^fl$H5!~i147AJ>89#nc%tWa_MGWd6%kk%%(H0jHHA9+u2zO_^mO5WIQ$n zeW>g9v`a~k%XB>_K*4>S=#p-5N1WQ@ieLT}{PO*wLA;>Q!?nhVbL}Usx(8TXyD5$t z_~6sS*=&l0Vz$tN4Hnwk9U5$;TRT$)8;K>kCG&7wVq8{ArXn9!DguQA7SLa^L_29$ zSCXroIVzPgh?C2)C`+@jVkWBUBW_>JT@gY9>BC-AQ&k+)slJF-IfOvfv{lR#j%rTB zN+ilxg=3ouCa;aItXe(!tVBH?5u+`y{Hm;!Xr+>1X8|=ZK;+nFxgLTx3t;u(IkS=K zN+W*VgM%CtYNxt3JWW7)xI(eeo;c1Bu8YV`F}@LFWfpwpo0#vMm3eRF{JS{YThRW- zW~lgzs(_2KfVOF&Nd)Jv$_zW##;N?ZV5njk(E`@3avB9*n^lkh0DfAIZHMZUx#boz zwqxcw)j1Ak#hc;GYo_18NEX2>Tfj~#6-n>oaCo>r#?N;e+Hcr256$A#6eXR%KoD38 zl;;wb!w_`&x!k+g;}?uj*Li&5H=xbH=32p8E<57PRq55>AM4w^1diO9m#(2YIA)l& zV12jmJQ#ifOpuPXD*^wPFrV`;*3&g#vWZ^P9WkY1q2MqW->ly0y@sc(k8!dS-v<_@ z0)E1C&`w~}Hs&>umdgCx2ej3NmCDoH_)!Kb(E;y>7o8e14Stx2%?yI!D4xp(J7YYR z6sKxBLE~;;i+?7g_nPmQ7OPaF)5yk_Y9%q`^i@PwjP1LF?NefWDwNTyXais2b!7$9 z{2wOquNH_c49k)405k~m%lD0GzFgWr5`?PjNlKThEPhzJ-Nx(C&}vKF+=`DV5Ku~u zU97RKUs+d`sZq@Y3-l)@CuOlhe{EB2cnE~7fa+4tmn$71>e2aO3tiHoFqBFicKfF8 zw0L)QdRWz%jmihR9S@Axgsk{XK8-eZsHq9Zhx=kE=`5P4zg&`PS-e^aQiXMG159$Iy;hF`!#Qn`q>^aE{nGIB&*9LB1j&TbWrM1ixZ8Dda*C;L&}jn} zRefEzPmz^TxelrK4-p~ZvZ|{m^6MQd6SgkP(yR8n$c-k(NR!ksm3F5wGwH|_RY@{+ zU#Sa?DY+}Cx~$VTfFiN+1K}W>^ehLPh16M(iR|GJ6HX?*V`(G_A=T65y-XR~1ukxj znmoHpvBeWwl@gYrXc@9Q(h)rV>5 zQi@QFuQD{c4&Ocuiq|&OSo%VH9-Ddfy0dtipB}#;^i_DyOlvp)C6_SP`?DlNi^Ha3 z5l%!yoFLS0j~kA*WdrC=m!OjBp6(HENP{O@cR|~Z%^cUmp$d@NMh}#<4=4njkYTf@ zvJ;RPX-6j~!Qn)py(A=KiDH_qhnsju)l#@+$NX3$LM_#p8a_%cu2f9S{otx9wK5ZP z|Ehe}SeaPGO{KwMMyg}t;f_pOcBUy76l6+amSu|c4jQY({EFJzoC$?Orz!?mRpi@Q z$Cg}u?x*7`Z%2pZYd`(PQip?AE{{C0;+;c}Eg3R&%-0{ie)^Zj?|(FY+KWB^Uj5e* z*tf7!Y0?Z}Qvdu4+K8jx~& zbYriEfU9LB2?M^-6`cuZS!88IrKcrlrrY6F1GN1k5z%ppHp!OLch-X`i3hU~aK$a# zpsmNYMxWZtOO>B=GSS(L0LGd2&$ljd>UsuO0Xzm!X}(whm1*y?ie| zH9Er<{~T0(hg&UH@~h~)m(<6wlsJb2ZzqFLbtnBj0+bS{`|QBM3Exy*=)jZE=uQpz zA+vcdlV=CPq{0DtVNu-T$MNvGif@jU5wOa|91}#tveV&aHajP3jbBF~TPsnw(=*w!!fsbYn!}dn03COzEj$@c%S%s-vy-MCrv4+Cc`&F&Al7Gg zP#i(L@?frX+e;tbk#lL0U)-tBsk_32utiJ zpX6a~dzQttu?=6GEnIlUG3`&|rqMZn;XRUsbm*$*)6TsTlfS0K=u{*{d~>+2!^>Ou zL)(o_ub{BxH)e165}Dzn*`YJu%%gQ;l)w0eQ506#D^8)Y#5T}=^1w?Jv98EVC=izJ z13!wss1&`CcZzu`lmJ!atb%9B5xg`T$pX}{y!5a#F%(w8(WH>r9|5@op_XDG)CUS2 zYECeg(DtcHYM{+-LZ~+|aZkg0wx_23lJbe<-nDk_^w+<;q`gn1PqFqsDef@yY9^R) z@tE>S5h5D$+^Gy0x0aUIy&&%vPXTjYQPo|lx8lZCs2n^gnN73>CMkl_8#%iR4La|P zxFEG1eR?cT{hmD#v4Im%!QiG3?SHCN9q;OqGW?A&UUk2yD!E3n5sOiE_5LWBs^22t znCWv7hJ-vE%c-w@Gbu=$QU;S*eX=I}rB$gEJ$OyL{>CqU6WU+c4EcK`bsEI99P(oF zL;kDLE|`C1nE(ybJVt72mSB9NCIhc4dz!2Y1;t6FfbQJ0pin$e#Tf|0Fg-^e6CRD% z%Q%4*d4w{viPcnD`>}hc+AqvNpy94)vW9-RE;4WyN6=zR?;Vgp84J0OO8wznM zAu;J0$?L=|m={abhuKNG0>ZH>AR za7J*Q#ka+}zkgygNeBjyrj%$9OD*HRWX)kEquz8n?+?@v9=@PWP7GjTn_y}%r8`&w9C&&sc+uyRZNtPZa($fBs_5oqm~yLhrA!&x`nmXUm@Hl! z;j0OcKr4#PbjAe^W%aB~C^$F|3)HW3;rOOJp5}an_&%^8Wf7-yq2V6-qW!)xi09H$ z(-V>tlQFwl-m!*({kJ#066cE*;?d=InQ}Rd37%lUPucfljs zlpq3(k*~*{JKuCTUqTXfa0*2iEl#1aEhblgLBt)52-g!@S8RsJ8E$|9v^Qbs?-om6 z{GizCU^9o2mOx)f!L0JD8lwBNp(VUgJ-9 zpI`JgGC`$HAzGYd$tjy^b2#FXAP^+Vk#tW)fHn>IeWSpCE?dE0b8`v}v3`Io1w#(s z$EF$opwy>$P@pl5N*A-|V=Dp)6#5rTgR5UKU%a;93tWKqJ2oO@39;O|)Zl)%shDuL zMI9{b_IAF>4BZ0^X!f+jDNRhBum!miE~&4Cq)uFeC7j?q;ra_-dndGQ*o?TJJA`2n z7x+fVE8>9LEdp&j>(pK7e!R)QE}1>}LeD^JjLmC|bGzgeTbH;@NQqEiVK9vFB(%EN zjNu%Pq#YTnK?1(o>_Ky7Ga?3_AqNTi!SbGzoCcwPdTB{$hTi~>zWEfJ5Ba-ryZL$~ z%p8?y#Vr+bgV`&ce2cHd3kQ*TVg%1+zmj1R(M;2mA{~j4?txE<3I}}&ul)%&My13` zB#$&09VyB2aTvs_tosz2keZw(?_vhC)VA(+=x)P6d5b{0nTetBUeYD?+$$#^<1^vf zjh_(1Rnbp&+=zb2Se-dXhvDxHlk=aO;}X6z1hZMtL6fF(6gWu*(j`0C;u0XPJ(%(* z+oolu+E^h4xY;656uU%D9`44@;x!T;Z(R)ytZ{3u4)X=?%dcze-zR=)#KJVj`#l<$ zW_MzJGfE3W5FA621Xse(E61!piBqb$ypnvvofqcKkwb7%uo zm?}&MJRqJ;UtPjWiUVB>=l#|%0ytl5@^96@K4I@tf)Kh|1Ad<1DJ13ftpr6a3lqV;p`n zc~*_;@1RBv{YzDr;e#RuZ3~w1cs>)p~ZDg^G zEt)RFSLAd_OKL*!)~)$@ol}I=6%9X0Xh!g1*GuvK`9ECJx>VgLf;WAPp9eanP~_OM z?&;OVV+|02TbAu)~e5xhmghh%u*i%Yj>lqdM$O8nftDMh=ldE#y;#m870e_WXN zFPc+fbI9@$)W2?-0~}uRWX{r`>Z8{TKGjivF5Z-qH=npzr8Qg6wmnbr{-vyEzP$1M zVAjlh!^Dnkrn?ejdi*Evs4HNxH$lOM?NK9Nzka zi$9*Z0Jsg8En9xCu(4S!KZpt-cxI_@dH;5`s@8tDPBntpdY7L|KBe9G$(0Pee{(|7OdsX25yV-L~^t#E;k!<()1`dyjul?Kc zljy;<$DI*J3|GNDUaIe8t_zQkM?36L*3lw^-J$tW` zH|z8HOxzKWcWdNS>Yuf~8HZ0wU9s?`<5q${^2etfK6(D4fkOQT1h>zT@$HpjNzX3W zgKDA0Qnf}&-v8Bn>qeKnQ;Fb-D`b8$JAQm%izcrUywei7|D3Ufnjail^Z+{l{__jHP30{9`ZQg&`BL`X)nlP8( z1CnHZn0w{T1D$6wcuKjJy#MlFEcs`(2A3OL)&J(_icWbqcJh}aAI2O+i>21E(Y*i4 z@jw1H<)ys@ulj2Yhksc5{b5_ye@yWBC5<`!XLfw*d4b^h zAC~$5zHz5B+O7MM;EAoDR;iY@HfHx#uwr61G_)2{X-P9=SSs!$>E3kEa_A? zg7LkAFR$b9U!vM?8~HNh|Brnowb?W8EMRmIwo#^w z%Ri>9YS7b0&mA>u74Lt&_lKJz>QpCq&2bfF_^y?UyL?iM^)EA(!*3)y$_<+}k>ITZ zWqENopz^K}r`Wo6NR{#DZoao_ovHgB^>2Tvk~Gd#%lS6Lw!MFd;F+CX=Wy%x=8HRb z#7%39rBX{SzozC7+Wz{sjrj>a=I7hIe}TFk{|=94&mBB!J%>MZdg;%Bfg7oRS^G&2 zFWz`m%_55!o)@mp`TW#JTlM;Cd!2*SfA~Dkho_cZm#^aVxt9qZT1uXO)%m|Hiaf%; zOXFQ!pP5>%S>eMsH!->nS;X;eYTf$pPjr;VaA1oib|F8Hero+w0dp4}Zcp$ID@*Ws zHfZop`B^g_A$akpU*YgZ&9034;VXu>!g_v=`P4=eW*(jKUSH~8@ybr#zsbdmV_%rf z*5|3XiX7hj&99cN8qM^9;C37zranC;p~;mbHh!B~kMaIb|G4F3|C0;C*1hqwG^ zSpUh{On&vNvYf-)o-X~yXNwqJ#3%4`&!=|!r9$!JCpOSL2R`}(@85Y=r#e@kVS4ZA zvHZOCsokQtFJJQ((`Ra2yu$nUU0UN^p96gW26ZX`e zc_e!*^`Efr5e~QYygqfx6{cqnkKuSbHD&B?vuADUO8qO(P2~MkD;7Vz>d;PtH>l6` zx2fqL9gN>sHHqM5e?H6mr(dahr$yP)1dluz#NiozqK}Q*ag5;kAN`fXhy2rc_RJSP zBKU+QGTvsDn^~^bsxbtw*;ML&cWTz_m2;XjXLK=o)>Y{bQ-{7Y`S~hc*t!k78qVP( zh3pqo4+YUU!+xs8;iKxWX%zkY>jckuX9tIm9yY2-!^2GOIBIaYHg#-ve8r|BzbZce zVcvgS+qG-s3N@s0#&sJk!=vvcbv=j?LtT(9-81d98U0zl}9=Jjm>+O zz0#A7Uumq&XXe(sUcK^khMyB&f0Os0SNd$?i+7p+@MOq14u7-j$P+%4+cC%aLYUy{>g}a7e6TyLGZr2WIFnE_O&yMreTT*RR0-Vjz9O? z7hWj5qTfD(cWEoX*WTCPxPIYx_P(9!C-eR%!eW0Ycb@5!_UZhb_o=7*-^#2%oZ(OT zeDb=T89i%qm-HMOzw?k?e4KNIo*g^ky)FcgI4twebES%Zc4u`S!8^3$`sdU?KYZ=% z-5V(cPw&F@*r|VQ_`S^PBh0R>(1Gh|Q?J&Zf92ar%#I7J$@QzLH$HFp#H%MJ(KunT zTrZt^b9!p|*)dE%dFZJNe4e*oS=9Z;(RtLrmUTOa-wCSl&X21`5xns6b`m_t(zQ$2 z)4P5mce6f1xyd=Q-RYK|Gpn!^hPe)L4pTE=G{p7A1w7yZ6W6IOXLBYYs0t=#BF8Yc3{u z#QZ;H_+J-(-&%>`&*=BKJk5FZjm3?BAJd!q#~tQ;HK$C}$QheI!>~b%rSn6F_&8;* zJX`RaRn-XI_%7#%IgeS!d{cZ#CxQzl^YQ*=yPOHwaI^=(JI?2NPENTpY0IW3A18S8 zxtDnV@)iH6T&jEtg4b%jfWs@~6+2Zvl-b?+%G)@+;-$$~qHIjxX#H*h4zFJK+(RW_ zFV4oF&`O5)+)}1&vCj$Kckn3=ud{YR!b6>R6MV>Y`McD=`RA9V9hC{5=8*BBam^oZ z5B$0k!JiCY%ExJL{q<74eIp27f9y66Z?%7Stuk!|f){(c8;6H&xfZZ+JJUDDwJy%# z?Gk5wzHr6_>YsjaFNe1uTXWW?(cKANcv=$<@6c#>5&ZEBy*WH)^X_x|dtM@VGq!1KD>U(u>n?&fw)&Uq89&Dvi^r6PNor zgLhan|LXV+!DH;4Z{(y->}I>(@+85-TMy&U9TpzaXZ4Mt<=yb^2y>1cw z@vu%Z{K+3$&)YeO;7udjaQLVzFJ1lVQO18#t|xN%=rI?^_dm__hrzoGarl@C3syI2 z*@(vJTb0YHoJpT1{9RhKPg9b zGU>~uXUEa_;|FrNkTc`a!h0TynMm;XNG{)VW^bSM-SacvCwR<;bNspU`@IoaKe!md zhmVl)XHnsl_ZJ^%L+}z42lD=lPS^$6s|nWslEJ0f5L*GqGjod3CW z|97TR|8Y0D-k7uOiKtWiR*2)b=W-_}ujt3mrJQ8z&?&~spZlKe*~zQdFul5Li?29* z^~UTbIXgmW{ALfy^Z)pG?xDgjWe~jeiUz#@mieP^R$0UFB)EqBy|(UY_;$5FnSK(` zV>s`>?enB9$HVKsf*ayzm!?fA;Z`Q=48~M(}aBBL47Wl>`d_D`I7iJUp1T*c=++=1h3OfUY~t!hJRT8D8s{;;U{?i zA1Zx&Cu~ z1Q&X9eLLsUsHG`K%2g$JmR+XnOJ{xU? z$yT2~xx3mdf=A`-=lx4HZg^x~<5vhC^9q+!(;iz_HZS-|_T8VU!S#V@k6oWpZ`wNc z9c@jP@o~!TT~_F=^)WQguva;rPpi-+dg*{S7@my&ss`_0an-y+J#Mn+wy(kM;%QZX z3IFx66<^ahb&9;l`&YfOV8-?uZ2r-4T<%P(z4nbZRhBXREq~+Fynnr4<{Wza1;%GW zP9Ns*2FGjlJKCGAbH6Xfad^X4pFT9B-qZBl@maSy{K@!1AGEu~@L}Lv+-{oIZ1tdm zC7aZz{(-0Db!btsP~qy0_7XfIUVh(aj@DT>>dq2^XKm*4cUoA)pzSAnGJUW4H<$Ty z+YY=i_e5bf|K7F7aCrM~2OQ}=@zbZDV@GJ1Ou7n48QZITLcrHoo@p!$ zhc%;J(<^{NxEpbvQfv+7(5b3in8~a9S8H6{z&&G(TfrExF^ZfRbt#9)^t2?``lgDa z^iEke*q`SzD-wD%M}?>3H5IWLf4GLtNN!h<&a8Vva#g+<<(PGfj8>gZNttBym#Db3 zZk632^XdW?VL}w_~(&p%1LdYOsQ~=ht>ui4d0jp_e<9TC=^pi+aB$CxGkspz@K5h^t8eV@^T){HZ(Uz?c1}=Oc8@oId2~d+$EQ11zz2F4zZOIz z2$iv!VFH#wv#FmxWXGFJ81{`t5_(&N5ac_*L;DrmMs@m}Tmo6icPOb&0w_xq-h*4!DD9PPWV847H*Yq!)6RU8a~z7r{W24KRona6i>hy8jSP(MKi@# zLJbheta2~{AU*njp`xV$RG~`I*WpbsV>8J4;1)Br(|q8~Cbh79$Zdany~2tO@8-Kz z122Gew=DPr#v?VS<6Bh%TNb<|py3nS5=7|?H>j@mI248#9m8gf z-ytpV!kaqk9YB9p@4y)U7fHr%=Ri?`1dKewD4-*n#}2ur7Qd9;R3=OFQrb$ssYuRN zoCw6vr9*l(KriR;6JsRHJZzp>tA^-@8-Zz=Q?d#nB7a!_j|1E5BtMpOw!r-8hR^p2 zeW+SQ{cp;(N!w|;HE48&dNsFPJ^_!&#i{-Q?Kn1L0w1yQe$;yK2_4x4u{;AEJ_&DW zp;`~?;fMFJt=1*zVHibCOP#o2eb30)3LJDYUAWnTvxkdHFtvssz{s{VRTV{Y(vyiB zbsjLt7N6NAJ)I>Lz&+B{7QenpLleKg4~8cDsQO0xfEhCUaV9@zmY#-?2XS}AISg%eG ze!=KgeOS*&caM@N)t&j}c0{^hXpdtvQYkH_Mo_-aoHhaCkLFk8xk>;m&nHxcwI--K28d!1gj+$C{#^D`zDeDs5!cp z=!dsbN=Kmzo0>=*}UZ?^JkWVK-4vbLD2$NJ%hXaQTAdjUADd_}fIH(Db z9xxZqhX>5RClq0QX~6JITkqJNRL5F12UCPWF9b{SIINEq;s%c{J&E+r{5?a2eO;0A4Pu&O|~`q6gAYlepq zV{bboD>*Ga`#IQ@aL~C>W+tcFLf|m>%q)kh5VFQZ z*zqhX54h@;!_w_G?n_dkuG4_xli_$noIzxI5-eq)s$8XN+z9pRds;JbWT!jYW@oC% zRXw`9+M#-m_(TK%^yvV&WWm~gn0GWt<*)WGl37jz+$gBl%iE1`175=rjkiPFfK3k{ z#JlqA+kf#%74}hHc+{lLyKxQK1IEQra>NT zPAqHBMn0UmOF9U6oh&{`<%`i+3L3C?EGb$lARCyvPDiRqpWlO`!ar#5Sj4v{w|)OHV44HPS`IW!TYFJ)yg9NgdFzZh zqL3p2_mWLh>vGww%&@1&+Y-QnWt>iQT}ePqVWb)v=785sWD}^<=Er8lwaM5-yEaXu z;=nZotik~G6W+SzDsl0^RNA#s5G@REhFKVS6>j*6uL4U^3O|-v9i#!S2VSOi5CPH% zg`?Qkxu}^k1xWfV+N>Psm`;gLXMRH!^+>2Mh6YH8%`k&&ng-blJSso=?^Ta-ou>L} zt^~>_=T3j@9qWPM;0DPu&@+(;_P!$F>sQoO8l@9Yk-i204m!CZV#x(FoS`9pV!ZAl zXOPeNHLO6i4a1#4i}opA|5G{vo%3t`4d#0Y8+pIHV6%$oNLN}9=e>{`0k==0z%K=@2)1p4tW|hYL!_NOvaC=ykz#3ZOhLECVdOwkg&n01<&hq} zP@cMzNrw~EEVQoDf^gFVw=D5B;6)xoMvNK!AbKrK^s2NJZ5J77Lu>~HZuP+Sn5D#e zGMBO$?Z#Zxf%2(1OSnk%nALN*2r{kb$mfQsPNve3t!=Ur6K!@|LbtfIg!I&iw2Z9G z=uEpU4mW-15=8H&_$!?o26n6fPD!DKag4Bf^qTmCc6`~9)ZvTJ@D}K!SM@1x=#&!* zLkqxWSRIgz1TUJu%AElB7_ceKkdco@LUCjlW{C&yrOPz&2wUM(fMqFs?7^_NONwb& zdg_4WG>EtwYD>!ux20sp;nM^CqHDP7`dsWNG$Y+&Ql~gG;z-aVdDUhCJ3&Ived>4B zC$Ys({~1yh-*hEclo5dg9s+(+C)*2C-7W7bMZwk*6MPW~@cH2cQaG5!1jYQDp(wQJ zYMBEoHyztrS^Rs_TwsaX#KjM`CCFkP#Is)Si#|@tKBi^9FYJKT9)yuhvjgi!c(FCu zT#W%&0(ED7;CmGG;1A`zM6I!lcC>Fc4;^>z-hgSF4dEJ@cw{c8H0}Mrd$Eeyj5nn$k-(A|Y?Vg-DFuFr%Xj%e7aMb^k`xn)b&wLH- zGi+P+@j8qA^Z5+P!N!NCM&x<1QY6{z|L(}DXrQ*7TTr(HV+|Mc3UPq zS(b?KHkL#9Zht@nTDBZtBl9y)>LCx5ly}+!_ULqq$@eOlD*=@rGR@PAWo8UIYA_$n z5Zk0EeX|xQrhL(5nr+g7>{UTtSJmUbaYv?6St*&xI0?Zt*Myq`_4uX3lkE`U4{L3T z_c2|?EQ!)GL!LjNsC6o|3D`^!jHM9m2kImkg;Uau!^X5ZN@}E$Ir4L#eF;1EgUaYP zhG@jGL|+N^ym2Gl@MnSm9K-jBTXPI2tuv5qVwMwDhyK~WypKHsV*_Mv>`lA8r~L8^ zysR(+8t_cPP6Vj3IbDqwZXH2<4!%yHX+Gu3JM^h)+FDnr0}fBl)K-i%tW$Uk7M}0r z)j`7Y1Wg}!COppSNGW(PPXLwRg(}!S!JR9etfEu8ZLkdzHY9FgHr0UC zY-7*#9*YfcdC#&9>fw^Lht>+4Q38RPSpxJry!=c5rj#(N8PA>(tx1SPmSfW?WjP!)NzU zL7na%#df3|_snb@De~F#j=f?4rvOKY>16SaiWqH07xoa|NwKPE`6+BO(EW8sQEF_R z%A2B6p!F)iSUD9;k0HYSph$LB)B1#~AHr38i9xSOcqaWRRzv=j=;5iUHb{Mnmpv+?qVC-v6rYZPJRzVWz<*hGv=k*RpM5N$C}M$0 zqpYFtiTDC!5D8FAP-t$5VUPliZ}7mh##Io=Pq+zw`VgC@k4jC-z_t{n+;q_yjBZuP z6(@s?+hUr2Ew>YZLGjv#q*)vql4k)kq}e4sWq5-|^(j=yjG0c35V!gf>Mzph_g#m1 z1WA;CT-PloR~wKER<)r?%WU-}@l6kry47Oo<7U8z9f-|1egycaKp7%2u^HOBmxQfE zbG~UPN$b@!E=S zuniiP3|+6e@2BSRJm!h{{RCae593=Eg?SWWh6d+yMkiJCIl#Dh?SL1t)`V6Gn+Zb~ z2PxoP`*KK{TZn|u(zdq4jChkYPgivI>NX2TAAlby(9E^z@($mH+v30G~mb+ zi1|D##hAmdA$KEKm!W@zm?t?KGVPeOVh<6$bTRB#Gn^K)QUus07GRrL_}mb0k=(_M zJOlOIE8PM<__QP&<(j!Vrg_|py0=tWK9S{B{6yY^b~Gd+KHq9wjQYh> z6QoDH>XOwjJ8*NacdVj5TMWIhTrE_ucZPy?%Eyr0k4=Gpgtd2Zk5dA=EO;1z2(N7)iGQ!T-8 zg6$c7={X?BYL1eXmkSC!83eTk2>7k=T4Q2K6)qzYmj%4Q^Av&82>hcFZZV8+kQ<92 zuDa&~)Mq)E@B+?O(dEt&dBOM|cwh|1yTbX8+$ZK z@RD29pzG)sdT}fDdNcIebQBWsai+tXP%oAY(r9$y%Pp@*Wr$uG%tu9zKGl(5Xk|$) zv~rnvi>}<{!3NcKQ>{VcqspSX(&M%;sHDkiB#IWe7DJ*96Bgj__~7&wq|jH2N|8PmwdSh!akXHcFtEPz zuBGa5r71>ZnT`xw8t!K}J}Qebm5+%^Da6be3z&$iwyB$XsW5Ch2*9#`0kT5?O_?L9*dyH zakCrc`6v5nU3X(tT#bUUGeMA@t<88*ANGV~l2e`I9|l9>rC=F7;BB<-u1SYgEpX@In3hj%N|*y|PWIuZR>3fiW> zOVSEDqf6c;dBxcspnOo=2Y6Gvsmn~QFbp?4OXb|=p*P|prdrY<{$WfkY2IAVC_{(t zPd=U;Ml)=7J+FE=voG?D;RHl>&9=s+rNr~~lxNZX(A4v$>XT-_9_Q08cPLVBTzK(< zM0wY9rfS|};3YmfZ859&Yf%QdqwHNRj(B?tUFCpm0AGn5V400QAa%y%jR+GeYGMMM z-Qh^P5fi@)7E%avcN@eDCv0|y5gJg+YH6FSXLG}Xg&?bD4ftrkV;|F zE5rnNFRp1(45<{N9zDN<68iyK?NaHtDNwzK<P5w($E!r$ zV}cO{4}xd=ygFDEj!hV*bT8R2&fyquvnK#5%K~=GVkZ(LX4NKayNeWM~Aj&9?)$sLr?sERV`P}X9t z@GZiQd8xkRnpm&(9Y&w@t)c&dz7-M1zpif$+yHi0uVK<6{c-L<5?OKC%X-bBY7rxN zi~p!prj55;<}8+g1k5B8_u{YeCYyWpffnYP&rD2gVVVOiN+`gp%*#lndeNnE&?%&8 z*={nEE5GQvL@kf1l?|{BORZM_G1-y|BDurd)sh$o0Sws_Ja+v%RT9FS8F6Q~4bEYM z>dKwqtVz@PvU(u$hT?jaLggZfF;xr8awT@z+C|+0*RMIWC^-49lhRkJ;@0NUT%CTELvIo!TSMljKZ*?eDxx?%i zpV~X;5$j`hO(nnhwqcvcet3RijnJfR4|KWJbXj1d3*W@-eC3IO=lj9a=Yd<0&U_Au zLZoWo4pA2(l0c6(5m2)_9A05pm0CDmtt=@Ek(vuVIDko4KoEr`WgO#ph_&6eOXNVP z$iS}0HS#{ZA}r_^t{5sh<^yx!TNqTj+glA?Sc*w|uwTecpGgaul1~F;3bm9F^Sn(Spbha&}pDFYZx84l|bd-?uk zrjVhy(YyDJ9@wH~NC;H+AK2_?Le_>aHgNXT|p>!ko@1Nr@aor$5u3-iy z4aipz&7ll^YX2a2TRTKE(xd>X3!q}`*WCA!APGt^XIhOEf!?d=n+W<$xT?n&39K2c zbFl5bW)%2?3C6KK2V+>J#W-JH3PrvJG9LJ%&kx2+V!RBtJGy zTPr{hLRIB;x1o6_Rw#H~WeBKPFTkMiJA+$?o85U$Q@~N}De&cj_} zM2zGeh{S9XCM{Qo{O$!LKCtnC5S}=7@>j;Rv&EW$drJvTafGZZZ9K?ft;AsQH4@P{EUUBK*e`0pHMK)PII^ zAg0L6Gr_~Id95Babc3nwh)Ihq4{S9zYJxJt*Ao`Wln7}gCQX#YP)x&tP^oFPGyWPF zFhTm&gAg>-EiiXlaEDfdJPrNic7m`vMRjPaRp?8xfM=vhHi1`Vad$DLa`A9d5O7_? z0)@~cQ!o&wOYKdNmYyny*(8O%zyZk7YscOVobX>^|( z1H9pxtS+48!b${(w$PbBRA>GWo%x&V%->4T3)6VxJ^4rKtiGjl^&S==ID|B=1!lc~ z`=!1fgoNtrK}((0hv=)mmCov$>#JVpV0CWZkkUHkL);gJ~9=&WAvX!TA$Y6gmG3P>RsCl!t{wD>-|_m!bbuL206U=&-rzbKGL2!)G?9Y%K_ z(!Dn!q3U+EF#m3>&4_7}>>i;EeJ0HXC2M0XVz!z)Bx%<8W2@jaXm2C-`DsWqF}dV* zy4o@!vP75c3=8%Y7y^}ll!`Y%b|D!um z1MGy!d9xQlNzCsMVQeW5pFhJ-^4_RC4&qdg___$k#}L@ zTZM#TGylE{jwb#Jbmbf-mv2}oTTTp9KezF%=o(KCHHCTE6~tD55z9Om$@(Goi(dy7FKLx7-;BTVSJ zR76UuMRN8OuoxAQY=+IFGf{7s2wBa}ZLP!J`c=dBpV@zO4-pB&3&W&M3n_X#Ksn*- zGu~imj%JeeHXq+T{rc!LXkTS8Jbq%<-_p1F>o5MS*I?&lg4cZdJcobt{LBw8hJe-$ zz6LKIIfEhiwU0Uc zoHaN*d$)z)#_>Yf;pBc60JAyYmIFZAzKC;^W!jxwSK6UL|9RBO2MVEW6Vb`g> zA1uz{e{?!M35Va9*=y#VUp^xEw_g4{ z`<3Hg6Wq4Amk?I$OcBlxr>on`ozqOE@&f3+Ok^~2Zl z_7faleChD2*UX@IfiL)}pA`7Aiv7aUHxsM!$W?CIyzt`huVtIdiX)4eM?r_>|nf9A0Uk zsYKn^U0x-o+xu~j1uuRh{ibMd~o z!wrUJjV&BrtN$}!PZ(O4;1NT2b9n8t*2k(Af0*Faru9_d3;Ms9lELP`;#c!Hyl(1q zYjW$OX3StnpLHLHKQKJ&#iQ@C{aokm-#I+^d|XgcIHEp-p?2yF4sVzjw!K=VuLwRW ze*uR#Dmk^njz(t*-evcz3fx}2bx_EC1h2a;k;9uDt5tkW8+I;cJa>b`o28XGwfO$g zl)voda1J*cUtdyw?=pfnEqR;6TfRKm_U%zP&+t7q^lc7rRb|H;zu2Y_Jg${8|E-?> z%=E?8ss!(r*oWtDKVt5(BO`_qyy1~=IQ-%Lp;JRkp*?}Y&~N-e4(~8E`=^k4;RLT# zbTNl_iaPpj58Gvemu^y#!ykFP!}5eND+pd^(QF02 z!3SO)#o;|O7L;oL(1Qeb>^#BYy^p^4_|>NDyksnxz~Oy1<@C8w^*zd8s^xeN@7w!) zmE?tZsRsM4u2N5b^SY0}ZZnJE#V>^N{QYCfJa)7;GU*0Gw-0~h@WGE;o9?**Ivx1x z++UT$hqm~0!@Kj4zk)l_T2>B^srFJ@>nGSc*1T0(fp{~yP%}>TcWnWo#jrwS39>ZfzPet?miSNCabaH!Vs>gVX${3&<(4Jn_-@^|0el*7k;i;)-FI1RPhTx{u zBn}_<*EjFfo%amE2mP$fPsZQ1``9}$Jl~;049}lgs>Yb+J5N#mT8YX&nXvzK!`aV2 z&*~YulIPFvQ?2?#3)T}nO|>qQ9{J@*bM{4ox0$P)-^oLV>}}Hlg%()Hamsn0`fKXt zgvz%FK6HnIho?1I7QgEAAcB`4w~x0wqx~mw{o0NtxMi=hzO%c=SFAsC9>K>Yx99nv zdTssBKi1hw@QAI-ygl{9Yq_RihX0#xuE6upeP&UE-$Q?+{L`mx;P7XTB-tLZp`d6m zSocij@Ogi&slB4c{RFRBt~rM<>yrKF@i!P=YO!b%hrev7-r~(MY`qdTwBYbH_kXu) z^nOMcy8o%*+gEct)-Ul5>*t6%oFCZoX2^s!1HN2L?WQ$r#_QQ|ynOS#6AUl4E~VhN zx7RKWzO?0g%KupQGd%y6_a-ix@xd8_H|^Vo!{6z=;Nx>y9T+_P0}g+`Z}#6CLgENM za;tJ44_bF!m_2C+!5a)x=IyYxUb$8kVhBFI+9qDlrzKLiB}Dwl;5FCvU>Ss%HQSnR1P=Ss1n^Ta38@Rd3LD+fB4lHi8qV4lCt z^%7@qjro?~vCnflwY5Whv$<1#3L$vPk{UdJ#}|4pIF`fK>(O!?4{Yre7Ct?s-66_f z#Hh@3m&8XMPrjH=@E$AY@OpZ5U$k^?48!MTZ-2z${SsHtTQ`RB6+`AmaCrYcwneWm zdx7dPJbj77qwULzCjQCJMT_4#zqfU0F;kake>+e4lh;?``G+Lm+x?wdY#{i6-cR!UvqsuNZr^#6;1la{Jht`8 zZq`GabJ={3Tf+Izt@ApqpZ5G0A5;EbwUu?5m$k$3VqR^6Hy-mDuYY0n#fx75gq`2G z-yIyjB>Cs7@7~YyhwmH2;mbnLj_md5Fsi3Z)Y}~XO5nBAkuw;)zJ>F*TUYfsxxHZ( zR!_&d>v;Y(d!~2k{H>kpsW3^I=e0}!XtcSO)X%p#pRo1y1&bd}yLpuI_xtV-Ue8-W ztNZnA%EsIM(gO;--i^IYt5_+2|6=7ie1q+3{kF;73EuHN&fjj`uyOU-3ZI-Hc*+4T zUvJ&m>zy%LIeJv;Sl;f}1030vzidbOi+`e=>u-;&eCtjc!-o$J+rjgndT!g-FGtj* z{7p7p=J3<+-`IcsDqFAatvMav`a|0X>gK%*XBfV)#>zTgSX}C%x$7ztyw>p%yq=#* z)|^y+5?hz3JO%$>*|_lhZwD?>{sHS=DE}uAGF~5+ow{) z3EnoN8P6Z|%@ZvLf6LmP{0(2noDy5Bo~#{Ji}IH!$LVQK$(=RLJr6Bp{fw!`>nTN6WQYIK|6mS4HtkyE3%as7%ej2`uR_IA{asGjkg4KigtuP$R0pO=<|w-{@fO*hgZT5j<(_K@M*+sKS~d(d;~SS$2oR zn`USHc*Vx}gd*E!a`=OtiXLsXsSeficrxd!bId(2)rlz({R!yMl7aLw2H?CDGJ2n)wcIjwHba{L)lhv2OykL3B=JlO8x zKc8gu?tx_;IK2H2XBXc2Z2{$Pw_VwX57(UEJf|n)qr%2={Fc+9k>Tg>mi$Qhvp=iI z>j`^kSI+Z;IuqPpz9ff7gdJEux+puRWomuL;k~LZ`m6rXHk3c;AeR?%dN+U7`bYJ8 z1TSXE=J|Wa|Jmo!1q}(F(k_6*`@C8$=tR941b^f)8T@xnzY8_v^ENO!Vo3XG@*i>r zne5S{?tDV|yHYVzP~HS3n3{5_&L|DW^dveJh`s{KIlYO!&=-NcOi7u)Q(L+}Z&e9Pe}TdH(g z*JK>QQ`g?+@YMT{jSF4K_DS=J*A@8ZMRLpheU9??YBGz%t?N(MeLRuL9p-8$INZKs z@_-%dE>iy9Q#pOlaeUGy`Nh1)2|mtHgXhm^xP0uhWtcqD?ana{&%QLRRh`!sQ~nAG zwK@E;=0BcmaBV!nYj${@!>7zznmT?cTgPdmIG>O+HEqI^Q}Wop8j-EEJ9E}+3!baU z__4H`3VwU?R#^M~ZP`3G$x_bm+!LRc9u?V&+6~H5_RlkqK5%i%$QuN&a_0c=&vRji zZ57%yC3yYb4LN-N(ksn3m+C|CB6q5D_<~@l|0|7W)cKV1Pxy2`hp+mgg}wfc=LkM(+7BH5`pV^p|9-dNy|&Y+2GGo#1V9m3iAd zEjV*e{*weB+Hf4t|6atf<*mPGc(p;#5ej_7fr#Ci+_+yS69KN^nv90A|vk6}L#Bv3`dh@0M&FT=m z{ug!*|M->pN9txWJRGq_p_}fbF!J?&xiKC#Opa)W$@(1 z$EQ>NdIvZklJj-vBHJ6)W_*kF{?B>-Q**|=J)*~H%3r48_ZFU z!!NWNv-9*%#|S=hTss*q{{(})F#6lQf9}n|y&1SS1NUa&-VEHEfqOG>ZwBtoz`Yr` zHv{)(;NA?}n}K^XaBl|g&A`1GxHkj;12fP9`gjErUQV2I{UDu3KNs*7L+6wNZX||4 zmBYG!{8%*jFN_*{(CC;OKb=pVYd7~$UC*aVXvhZS5>ljOCc*F7fi^>|yFIc0R3 z*_M%Fb|lByEeYmm`VpQA!G8x0=-q?jI_h;XOTdeUG^akt^XHNhClrP7?a_{0rdtUK$G-M z!%pmm^e(1N%E9p9X&gKds29D&MkX;vZ4Q-Czv*p#^}7zH!su#2cjkRKkX%RyF!>xI zbl@!`_a=}F&LShQwg`E`ZCKugdeF#g%cW|>IN;N!jpTJ{0zvQ9- zK%Sbjyz@tL=mJabw2!U;0(o2V8_Z*Zm>%r2?@PNs; z>*yx$9x)=qYjiFL7-dVyOtny{-ZW(QeRH`oJG|+e6bIZJDj*eQH=7kaSG;{YT7FSJq2*%-$h|I7v zh$J|-$)2l$sBq?Rdvok^$pfdR zgcc0Tu))KJz2hckN5Vs~DRHSO6J>oD)FFKXpuFrKJe8 z6QJdpPO9Ji!>LNB=;SzSl7+?~2*=bH{-`H^Tu16Q4i{z(Rmw)NtTuwDnz5bmq^~GX zC?_^NEf#SteFBIKgq%{jr zL_&17H6v~U7iyiwG_FTfin2;kTL=9#(Mw2Fx!vNRmxn=j4f;kqy%FoIHBdS)35oJ7 zFjIVkF#^xiUyy#oq?c=DI104%>F{EN18UH(HKHn@;J^Crn+f+52zJKKm~@|c9Jt8~ zT;!+ggd*C|nWX3_^a?-&275`tyM)>lh6Ser=8zaWaQiZXi;=OKH^|1I>6IZ7KM0yI zH;4p!ryY+87X)swr1)%+eq7cNPas~i?82m1sURO8gULt!!uO*O-N)}Ro~2=s`ePE7 zUJGu2?C6mPGZuAS+HD?ZxJs&ie>)5lUifX`Yr6{UCgD}JBapXOU8w`V;VX@j-xBxmg}Q4|N0&}XE5}c@PzCHd!%ox3W0T+0!skj#P7><_<-2S&s~1x6M}~iYOBB# zN0yKModxBv-l)RiL+=~jt!5>W8eD!BF8%rJhIYR_fMge;I zXU}sih)4O;Pjk2>Hu;M&FRY;a2~B%*c*?9MvuDgQN^p4Uq3AM`N3fuRl`chb z__&aFdvD*`jp{Kq@4?~rI;AHsid;(Yaf5i!ts_%=HUD8r<&6Z-3>?ezPv5(4!>3=A zCwPBL3l5(Vd0_O6ZqWq4uS^by&uP^;bbIIO1b;A`J6Ru@ySwhQ<;F9!t`?oRbN!J8 ztIxLU82J+AZ&D+g*Ym=(Eq^WjYB<5O$|>;W+qRZ5r<@{q?cp7G{#8#b@42l00D?FF zv@(aUnG`we!D4_rEC(xTO8%V5RSZl?)mPo-Vdq)_-tk#gyhJU z@`t}3`_XQK$J)>G`gh$LbZVKkD8aiPD$U`$t93Y3Il3Rgt-YV+@V)C=>^Nn-M(}ET zxwH9^&+;GMFns7Df)AOf)PLlmWk+6HFofVuTNrpfxyJ`T)2zjAfiQn$rf25+*R2jR&zZrC{IcE+z%&y?HzeC3)BxBe!lqnY6My~Kk&EN)xR)9JKzKKQ4a(MOer!GI3 z{UpKrzQlu^5waQU1&W%KU`(*s`+EcqzC< zt-pBw)&Z}V`zRAM3h>2;@con9_U0eu>d$u&yl2(vJb$~7Uwi3D-lGI>d}IoTw;$E; z<{wY9eg624Rth}pr<$XoAttEJ9Q%|+w@VL>(mVC2@?VsLbVmLfunl*A* zHlwqN_kYFVmizMU`MGT0hT9eRn0kvGOP+dz>VIfnO`hL+Dt&I{Lu|Y~Zz}u5c3)J> z_g-C2`KO&)&-2^v`!#00^+SSpt;*?LZu<2Bjvg1r5xm!}B|N_)>G0`xhb|Dj`o&2c zp7D3t^7+BT30~%hmK>gW{m!~NC(9E&`{o=D&%W9$cwqD|1fR5>2T{qL`1PO9n_6cR zJTa9A!^xd^{>H{?-*q8))lWIy$$h%V-yg@#W_(WaHs!p`>r;Pfk;#mX^!%O&naq7| z-OGPj=RZRARNwbG@6Yo`7q+O~f$j5w3wZFu-1*hlTZ5j6q5RXzjp6xU*l{K}b_eVK zprsc$e95B+_uSuP8RZ|4bce%V+S)mBbd$GPJ+EBl@TKpqto>pz8*ksQ4srOJj(IOX zH_}G=AJ6%T!`C`~U%l`&Td$GzLO49<)eAM+$Je3!o!{boLT=8k{?mSFmP_z@kqTaY zcg#B(xl^_fy!OF|cs<)^rG;HPnnv)tH}-S*2cO(YUbArq!KY-8SKyyLdi1G*4G3Ox zGv^a>ca@k{dD3ylU)608%kzJD|Gr^=WKE|0lj@D)@Q=3KE;{kxT!LpuDgD{o{q>4* z%NhQ!dnKIb-<$E&+}rQ%qx_BXIlar>7qV~u&1Lry+}d;#&;Rk%eVr$*8%FS^)fN16 zpx@@aD+gK;yx}?Jd>y*_%)Gp2jGr7f@e^LpXD@UabT;=4p(9_PX_VJzA3HDRU>-az_xn$dZl53j5akb!TE^=+``XC2 zPal{=@RZ?M3jBliL96PQAb6iImHD~Y;=|g9i!pp+pVW=#ztZ&W4UMxOqx^C_)|^fpUbMlLcOKf$_!*m>^BZ|VJ-%Dj z_!Gu&cQ423bzab*wNI~Vc9GhB_{3UXPnl-l-ML)h1i{k7#YQ2`+?9)Vo_w2%h zFXdIK^24Kx^B8_;oI0Q9uVUVKsLaMul>d>B7jgLg^?v$neWT_CuV%~U@M_Z*Z2EKA z=LC=5&(|xjMo{#JuXkWUtER3E;Q4DDT72+<=HF2Mc18F(%B#8d(T@h64<)$aZ_bb9 z)#-F0Y2A8MIvNa>t10vIz=FRTe>r_5!Od@QIWDh3!fV}*G#Eh9#ow-08%z ztjw1Q-mn(uEApBi-dbwH@plLwVV}wCX|eya+E=SHIjh&MXB7C2-Jz4ewNU0!$LY$H7D>EC{Sh2WFgl;!z5kDvX}?L5}cahsL=o%hxo zQ|}f#cTvkY{mSdQ>cSfz%w+hy#Kcy-o{07DeqN$Eqt^*Tl>N{nZNbmhnboM>tTASu zKk~k*0}o^{yq%^zhLYE}%-Ryae#wH_rWc*d^Y>j9G^PHaYgEtl7aMSRzoa{tC#+)l zq+DLh$+MK519OP^Wt+DAKq-7(w`ysy;p1N?hML5`Q1dGf9TQD zD|R+_~hYubUphIY#p zypfYXEd26@*Xa*U?_A>byz^y~1x2c!B6yE^=^XyM-?bj7dQzp;SemA+Ew=?5K0T-ct&_=o1tKFjO>@O*`ybH3R~`Qy*?;GB8; z@6>M5bKW_Emzl|fWab_EGOCSjE^Bvs5SI(`4&55`R&-ntp0}=cWWD-q-%g)?k;A{NxT#_1>x|Bp{b>M)f3^98b?>e}PW3!GS;0Ria$mQ7 zaf{K@$xm>(DewEY$F;pY?H22Q=T5wyACCRGXGuGThiiPe z@=Nu4|ICN8ClY*=h0lL}nQc!GFW#8d-!e9u*HgaShfjPEn@9OOt>*hAze@dGJ@*C| zCwSGsIy`^PmZQFDxb|CuN1cdJ;O|`g?!zzG{u%rkKacsfU&~pZv4qjzGQH>V{0}TV zcmFR5BdMM${a@wqrp^97SO3ep1b?_zK8H7NHROrRKN!E%Xx}d!9$NmPZ%dT!%K8&> zp2J(LT+n^et^)+`;IMLd+gf{H4VCn(!Jl(JFu&W0+}lGZ*Q5Nly?npr_Y590e_zjF zf+xMt_kVuR1#jG0@Vk-0E4;+(kD6HQ&;xtfK1_JwB!~AMI`G#M2jmGEkdTh__UQ_e>WXeD8z%33>Z#RF~qLF_Qy!!{7KhL)> zZ~fc8@Jj@5wwmkV^D`Y^O@2mtv@3MrMqW?mnVlp1j%4^Gc*qrQ#}=) zna%T0=u&0f8}kDQUam6NU*%6)I3%WbL>B_T_R@{?rGXUl`W$3gtI^sqDiUVdK79 z*x)6CPaPM|>!0ZuKdF9I*6#gdxg4E8YtzkRJ%;>5`GcalJexoJuOEj^dymaS$mBA- zo+n>^`nBR0*?tS!FqOmS+}N<7&CX_2Pqm979R6%V)r2}1ew37t0=7 zNAL+7IiHz7fAF!_%YA!>;I_V8j>un9dhq8DHfHd&Eidr;mkhnsd20Q^ls~=m01kg? zPjG7ce$NuTOfyb*@|RWJvZr;i(gd%f$ea1Eg^u{JoD{S?aljc~&uf3ZIW}ldI_2-v z;3p1WTi5nl|I0B14?Me_!{1y}X~oeAOfIN5;C>k{|Ab($jj7DNf9}n|y&1SS1NUa& z-VEHEfqOG>ZwBtoz`Yr`Hv{)(;NA?}n}K^XaBl|g&A`1GxHkj;!!ytV`u-iHFEKg0 zxD@Ud6C4#6kK;FygPtq@n6x;IHXwP%c;k5kwHx(xjXTgtU4!yJ;5d^Yjlv|v!YafQ zFUsO@#3flAP>wz$`3MT0fYe@}-qG-PW7kiQ;5~dQws#oPUQ9ka%6R9W<2Uyp7z2KJ zI4Hc$z?5Qlx@4Y+%|Ek};0p|b>{Lu*ZXD!~=vL`Ex z9|fiKIb^Y7QtUb?9H1rC4LHm}D8f_lJccbJt#=e7R83!Cn zfaY%tTi=uGscQeI_dayZ*Vw`uPK&mEt*)r>VA_V8F#fBUyxh2k06oZCCKO0ld~oyh z`Iy3h@w)>HZ|n!D2PQo(g=_~)u?bma218LT+c?~2&9JA82C`Bhu&};uti^c}no3Mb z%7lRG(3W&^w482!a{AdI6p9cny|7NQsW1-06EzzWnln5uoL0Bd2MRc{VogS$X)D$O z-_ybg_vFa#=7jqtez^K*LL?b;GQ}+yD5A<~TZs(r6LB+kgLwoiJ7Y&Z2W~*P67)*) zt7b@AAdZrcGz%vvhuN0UZJd48n7FLC31%siBi#~jj?AKXR2D!?(eQr?y(84u@ zU?EMpUO8Kbr6$?zDH+LWym=`mtj+Es<`y)?^I3mJ?(VH24GVJ5*=$#`1`j^XB5 z$dpIG7Ezh087Ww0fUdJh#f0lRr(1YQ;vcPp%Wl;(!B$TEYs$tQ6 zLOAkV?mF6KnB5+i?eIG$@)UXxut#{8aE?H<;TQR75?zsRxhU+6-W+T#j5BZ|@$ELEHafkhl88cL ziHQ&_n7YZZx~x`olYd}xianvXCCifPYW~=2!HKD$Wrv8-@PtTgZdzyc$HaQYusKg7 z520z7A9vzh9toAKImYM_QY&O~Sbi--7u(TNLR@1lQCxW&tXo>n5I^F2#eR8Vv}|(T zFV!5!#A=xXLMcdRArz~tu(a~AaHOX|s8cEat*ptg*|p4ox(PixdUo_;VqaIkk3qXw z?o=e7T$?>6mc-mbx053|0})8y#AwjQSd+r62@n_^j#tpr2Upf_|6JnvN`nqBaHLh5 zU2#?4#_4~)y~xnx3-F~Wx*q72rpU)CMkIJ3k4s#5_HF`0SeT>{-TtoxX1VTfJ z8quY#KMt!$jNp7&g|i*eMI|e-t8QNpYk54Ze?q#3Neh{jDLs&ytQ1%h)qO{R9uh8J zvln*C*Sf_5;WoR4bKlT?qqB%0a|6ht@c8y}&!Gr@f8!LO3)=}ydZqAg;a#AZ!F1Q8 zaH!m0g07YUS0A&P)eUiIAkxn^ne95DFHUFnM_*8A69l_^pCoYKn8L zLZVnM$U}HvRaUMM_066^H%aiQ!SY?B<{^r*dhj8BqA(@hQyA4i)0FVQ*a7oHc+Mql3S$c6$2VDdSj$fNWd4tJW4KC3zrYBVAcP4ipsUy_xx46oNYdGqjkPv-$ z(W2pyQQ<&fEFBqfX|lBtlxJUGta3i2r!cKk9%8^#!0vTf7;yG4O4e{7RAGQU9ATk| z$~;OX|EcTdavk0~5@pvUzMrS6OyW+n%%Odw7W+h!Wl2B%;B$pBSB`V^u*t1gN zEoN2aebdoY!_gaF%fq@CZ3-CNmlbpO*f6NFkryfRke!ZT1Ct&PT6H@mb zT(Y{&SJ%(%pR(rZ8&S``7kD3pFfp2O-*Z#3Jw~k?Uy2*AY;DsnSzp1!eVLaY$UZd(%`c>Q@<~sqZm- zvL^5(k;`N63NIqXX8=kmjPdvF#$QWUxN6ipC509RC)Yy45!SLZR2Kx^u-U?!E`mPP zjgnT2#D|2+wPLi0{*5accxoZIe0k)3s%65}8f7hexl3kZqQ!1W7yvh4wzNnqJe&a9 zUrSt?p!;-lLBe}Tx^+0orT%CT*kI1ZS+}~Mde?g3(aB|stbKZeW6X+r^J*L%va99E zRhdODe%3Z-zp-VB{H@ik=WYPTco@;=-;fZ6{-Nu&P`KF*hWGr2fE80z*H9R`N*Mnq z2(?jHZ;1**ccU%wc1woXTOcEWI1keyO~fSZevz6o+Sn~VH6`6)AzC`n4iCnu7%Ay} z6=4ZA)d4NzHygWh9TG+sy0p(biUtG3lOq!qsENKn75AnhY?zfBuE=FH&_J!UN?ny_ z6JUIE(^wNyWlXvr{}uLQE4V)a01i6fu4zXI%?sS9tTDUGHVXA{i~J4=-6O8-_il^) zQx>HD-z2wS_<{M5KEb4gvJuZS1Pm^j7PrdXH&Gx`AelJ-E9{V#Mnw|BE_UxOXCz=n zO@z%m_DD-RGG%8%qZazEW~j6%F!}tlsde6|Tn7m?J6Xm%XLn}iePr3ROcU*7q!4ry zuVtFlCH_gKP>`1e1~ihdL`IBVTpC~A%0*D zTfuhtpJxp}h8g_;lZWSA6q)&|0`Ri@QisUWVL2kpM=HZ*B}p=SIJA%}$q7F96m zdMZxEVMX@{3;BP|Vm$!U6wnb8D47CUX|Z)0=+dAMr@Xju2Hj9SksA5Npm;%>oY@6V zn>-pGI+t@MQXKiJtib$cfvBYeuBfY)H4!_mOREFR?uC&vFOW4MF zxFj1Oy@pBHX_~nMQS~MkQw-`PuN>j<342K_=vK4hMVV0HtWrBlzu1L{B|g(`35&<; z4S~~h)u{-3T$*LP%|2F9_;dqLBMg;p66BM@3riO&!WpDeE-q3?vxH{=R%#0_8~z4b zJHw5AdYldmknR6*cB}|aL?Wb-nEXaYaB9U{G*N&McCjSaLyNLt$fw5LJ2rYRsT`a)=@>cY4z(;Tg6@!H1 zGkog(Q33`yB(!aplmhDH|2gG%X_ydGJ4hjzyhCU(mxe&XY6Y-uBx4_=v%#=(0=Jk` zth5OmgV$#KSTMSjT(%MM!GHA=Cl4jSTa3aEpkXKd(!-Jpj!@9;AP@Lop&G8J8EI%} zydFjop6ST2rKL=?*qsTP3#9MEjeDVH#@eZlEAw_~ak%pp9-sM}W^RN{(+PG^z$8cx zOu{O-VHj!Fko;!FW!P{PJYGb{CB&tJ?$#W}eoAbzY?Ywps*T!{Wh~hUvu||wNHWrQ zX&5NymXsG8+}eVwuQ%cTE-u58l&#TnRLd2p+z+|eQh$VV>SmTzMPaX_)1RPJq)Fj> zFfJp`>5#A+7-4#x&~*G4cm5$Q1(&Ez3!xzts6bP#%sXx^#V z8!DmYV9?rATMGK%hli$z5D@Hn(`vV#0sL$fdaCj8z_FW(WNkR40hqK)O`L{eEheuh zydQ6%iuhHi(!>^Mmz_r86h8o|I;M~Pz&ZT?y`yXdb7hzb=`lG6+hS)e$KnlJu&Y)G^t-&WR|~&}m{+lrY;GpKP~TZJ7>nBe{3BT;`Ta#>Bqj_HW&?ARG+tPT1p@ z5gRRp^fV^n5|g^e@rlyUu+)?|2U;I9n*kPaROW=lLJSF!a!6n&#ay&E2HM72tSAgX zKjd!-p2lw=9mS+WQZ@u>H}v)wjs6F8t6uOfx>d{mu@o-;il`6~tcqdpXtw%Q@gR!l z2UB*)z8{(xBj2>hD(kSqZ2MKQA615AtjCIy26njYYH}J$F!uuRL4gTc7b3y`e_1E= z0x(%2ftu5l=(7lhXhzc&B%v!VcW6QQR6>&cNId#y=x$*=g)WLK#w{*DpJmF%208(p zATWFYQI@VLj`X;UcnCk#(>A(LAx(?i2)KsZdv10T-f(R9jpIS_Gk;1LzFdXHt3Bc`BhI zSx!iXY6d+=yd?o{XQYZ3V!zNo>?9`IVS>@6N58G$A$As8*+iNT?FC8QBV?D1J5`ab zux=LJ3VLSTg`9{`!hO$(7w8h_uwWHDh!xag_z6cl0}`my43h-yy~s`|oQe=iAQA$3 zDvM$iv_zUKfTr<#68d7yg>(RuR|o;C5yQ|@CuF6Q9eCN)EYR%r14cH{W={)CNK0Yi zIpjm&IzKw?TJ&@5!We{_E!M0Q;7ZegXEb+Hevh;!+T1gy+Hte2rV6*ErNvnjWL+N2 z4m6G)rcmB! z;27*>m<``;;{2o;^u-<8uR1QGLORv}_yY3T^?uV7@Fzl)1DFbpAn09$i}3T}ZV!GB z0*fL^WgI4ZxL}=k;Z+Eg0FMp_sGu>cyC65Okzc}I!gm8{F_)k8or+c*{r*=%XMu$*IZjx8(10DyW?ellPjrTv)LVU)QEFZp}Pioq|k0uJ5%W#SmyXoop68sv(E z%v1;!HXt)qW`vL87AOu0EEkL{_>Md*Vjo;6v7A}MP-xy@bQPK`*=8H-Fpti}D4gbq z6l+2c06=CITFiAz5+7%mYE8d=MP4DUEkeSAzATxonQ;sPd5(M9;-N0~)^8i82< z1DztR1kH@SOW%%-|sl`y^wZb(#MS{=)eJmC9@~Z=$($PE(%9SH!{ol;8OF@ zgM%;_;}}SzG5PC|83Od3GWWS%UGV!4tppS*^RH6he+fzf!WN)^5G*@{9FZVuB!QUa zh_YEzfE3}1!z|ly{{Z)Ico~zIVkXu>pO$-U@9=@tz?<0AHAp{U@}z@yd(i(We@Bf+ zeU+j)R*pJ#zQ9TU0}n?*Qil}Yls%;>q{lx0Phd~2@BlGCpWd%-G9(BY}>VI?!lLiO@6*@3j* zv~Of9DW{z%(j!r>7D69q3l z2f%MJ=_LT53}YBWrvm)n!s&*KhzoofZfip5CM`6nbxUs^ryvekmxhrGuc{cTFiQMz zxW*?SO~#}bF<}h>{*Zh0<6Qr^M`=XbzTInU7ORX;!DV88@#K}*%d6cQ%J3^+4_120 z)r2cUc*5@mt}vomG&#B}EyPGivo>Nm9|K+-p%Ii>35za>Q4Ebs(;3Zv3IZNw;1dWp znh;J{TASYVpY3X)OU&&w-E62bX>>o++#JhWflE6r_p*hSM6!fkM#u{u9QLxt5HHJx zlGIyZQ$@(0c(knqxtMas^Z4CSHqf70h*k@uDVPJbRTS~t!+JYyermm6=IGQE2i*Vb zIhgWJ!MI=6cnjXv3a$d;MuT9V^c=J~%8?|9_$~)4KPTXfSNJ|xM#6YQY+rcC!ezxn z=+OcoHRYTw9(mO&=F9n(mFH4Apx_ZU|5Pn`v(;#wD%>%(^Yt>Wax^ ztLv())NjdF)>YZU8C1VtNC#yg7qkr$dM0o1$F({<%BG%el4iIm4IX-W^VTMYG!=6> znX?MUokCt2^-I$#oIoL?OTSL{^(ujDD0YItRfzTS&cZQu;gqawG(do0a{+{tSt3N@ z3o7Xl6VGB7!bTK0i3Lij>=&RtA6#Dc86pcv9r z5c(;9?;*P6&xz<&33yT>3YtFQkwx9_`RLXl=)oKOY_g|FU}B8)oCv=R)KeKEA=zdD zrFwF~ zqOlgCKA7U@ZI2MQ-oeS-mEP+n*^thmx0iI~sJAtKx#ivP81KP$oym^W(MwaQ*8e$E zDG2U=cTJ^C5K_qW3nq=27N(gH&+VF|=L-}ejJAo;X;xOrEf7G!&5NVVb z=9hRGK4`maLP)X@zmjmTjwZ4suu;x+$$SxiHc9aOb<+W^ZG>H=r4g=qky|V5wp&p6 z3LIUy`c=U~)sn*Xl-t3ucr3t)N)cdu^Y$n5EX+Drs(FkP>OApsIpiHBUEDwJz^`a+ zNuG2ahDz82v^yQrLrEAeCpBfF5?3nKB6Ivgp#p2;){h^KNRT$IrGN^AE#%5pQI80* zdQ4na+ywK4v{Z9?oE=8$Fh_?C?MJ^#>*GFZow{+=x+-pm?)A-x9{|Z%0poaU*Q)St z4y;S36i0L57T*^dG$*&^g>9S5wl?%3`pyzuQ z$z54U5Ddi_q|dRcH5wD*#NJI)!q#-nB?yU5ewVEkpG!YkVHhjnwnN*}GnjUWoQCU} zm#xU9wNP7a-UX);O`AdOlwZK}1bV6NA&l~8+zJmv!k;a4Z-t01P=_I~Fso9*SkSFW zj{Fdk$~;D&vfy9ZHl1QqarXFMVQ)1o>h06@~#8>cF9bUpXn}3JB{)x zN~-a6i)~KGut|0vaII~Da&-SqdAU&u<{4lamkAlrAs9G9$fw+T3i%WR6v(6420FFN zu2q%X#Jy?gBKQD7#ld~xO(FQH_{X^EM8Uo){g7^cIeV)xKSEWiaSQD!6-g7x2E=Rw zwA-b4SQ%EKs(n|piAz&(B+$>Lc-dQEHU|Uq0(Mi+^FLu($g2$8{h06=mRD9>$%u7C z$QS!i8F69-8g{kQ*fNp;R3JCJ=W5SLh5P?hrDAYzw`cT5m@6p&`@kj(I-t#Ng81(O z4ZH7VOsuPBr5(&}!CbAlurXw76c%!_K+~!*vs#q_YwD?7IgFpU(E`=0M#k4_2pxYY z;OgM1`lC#)(kCcIgswm{nAOEzjEN<=yFlgwP4IpRt+?lpUF{szFy*t8m4aIy`WqAL z%Bs%g3NboUgw&>w05i}A6A3T^ALi*2zjZJu-r1FCfL>MtO5ROkZ_?$3%()=p#ot#B(_w=vaoqHc14B?tPPA0V%l$XGDFeM6m+#X;_WH)1~01|m~Wpd_IsiFUK}6X8#>MV zTYG!H{pGtwkDwd-!4Uyp8DkGk1{i|X9>X?)f+mDeEyWVMZkUGYC)6PDnYJJY09E4-m)+s@JMC?QW>uq{`@|e&D)? z4azZaugKuuTu?23dk~8@hEx|5Z4UwcdZtF*A&d&vQkZ<&Jv>Ti%(0ev~6uv!POTu`H^2<5Zv2uT6JiR*P+pV2uN!|E3F2Qz4n=y%YyP9xT zu!OJcuP^$8Tm;1;cZd86b4Iig@o-oyyB*HJ26@ zEXybeciwRWW%cMLbUNCr0+11a3r8W&xn>;mq1B_ ziJBIQO4yTe(kv%4qSeXoL+wVtS?*rK@nY127cdDkEL^0h?k}W!k7&GBC;gn!8?q{5k!p<&uC;bi`_t5=QJ&Co=E`)%#ATQRZP zwzPoJ#nJN1a~vYf48FT*1n*ztx0sFzGO8v77#yAL$grd_lr2*i29pQ_MJz4qEH^k) zkPKV8Ix3=i&CM8ip3fT4Jr1@nviZ`ssZ-& zrdBk|bWUDh=Jk~>^Zpa}bA{X}LSI!98*Wd3-2u~O9?YQuDQ^pHm<@6YAJ$<6#=`h4 zrn`c^D4I{;{{%w%&!L;8uso)GNS|QRbWm}5gY+V%yD2DYG$YX`4*QN0eYBYa3jW;~(Q-bU3|hb2Sq63Cd`M*_2} zN|g{{D!U#%{db`XD~>3938d#S39Md0_7mO#&cHw!0wZeF&NF-QXe{)}@G|r;0Ek4u zEKGNc!zy`KC{Tz%8$~u!6$Rj~v>hs#uTt9u`F73^(`%77dobhs$**3MLA1n zj$qFz4*8#D$P2%92!wZ0^-(x|Lx83lMQ22EC4n z_L_jR3d;QsS!ZBIb%l%?RZ1~uL?+?VB#V{l!W?F?*uSnJGonSHVH_l|{5PZsJHJru zDXGe!pg{)`#q9WHVaxbL7d{*~Q$=eFYQcNktVzxX?PeZcQ| z=oDR2c7~sweMZ%4{X`E7h8=QXD*^v3YVwXX_wnrGIAIPkpq*(Mq=lGt@)1}=Nt!Di z2b23UIv+=ECt9DAr(%c>aV_-T=Yx^8-XdT@%O5;Z?1mzE;Gmp z^k4yQF7}yLA}YE92}2Q{`@sDbwi*>ll7|dZTU_4-n{bsRsF;^983KDCx2_EClJD`R0U9w0s&28Yz)(w% zqiVfEfU5EP6xJ~iZczf^7A3HXAIMQ@ZL$nK#iCaqFUcQX6Lzhv@^-b=Mj^5ZNkKev z-Q8ejR=O1zeIjET+fQw^N2gUPw0FtbymOPwUqj>qsT(T{|fzTDY zw8HFeTG$?i6$$2b(28i2y@Kcj(`+b0XKGv~JgBRfjw>DlN*<@_jfoZ5dU1l4a*8C( z#_KAe9Iu-OayRavbc=C;bc+}bRHPRsIv-lOMVX2z_RP)?P0%Nk&$L#0nEr;Oj^PgcD1BtK=1(enY5J973lEV?A2N4Vmm_s z2g73AmscTOz@$rHlTVaNZ{y7x=`etTF8a@+3Eu)L0h;a-;A&iAjx+g6k)05o5Ieu) zH#8S4QivWnTivP5l9ocR7u-2BwL!8Sen}cY>XRU zD#47|UESPFCnnZ|NZ?>m8@MNKLC-CWg-lxK0zGr-Gvy!zBP=>U01#*+jlBgSbC+<* zWKYS+j*7EF1b90gwE~T(yu;X`RNTTm^og$-900I&CDRF^PmYu%t0e)K1K+icrvD-5 z3IEfsU?*HCRLh6z2BQRrIM?o?D|U>6FG!^{EAr`K6M=c0F#zv@>cYtxg?ZeEp2REJ zh8S;BoQG1d+OF_S$Y^-XS+DD&bBE=jkEU1n5>p^fFPjAj=xp)ManXZx==Magm@$N~ z-S1NYX(-zj(1$A#L^wrkyLvdQ?)H^hdG3sM_@;1eR7aH2{do9cQpVy+mc?PSHGz?O z&}8EhJ2Y^H%1Ip$rD{NlyB%2ptL2{Q!5SIM9c+@Z-rE2Ue=2^Mu$f={9=? zgk6AG*PtD=S;3!Q{&fKT%~coJx^fSBuViFq;PH}MElA-KGGV&{lV6Zn#l(8>crToH z!M#Bm3|Bjx%>r#7Z=dmmMS-ux3&@l2hV(9`O^VFs;d+icf=M>)nx!<;+xqI)WP=0! z#%~`C#CRVhjGa?fvlxR#ebJ@{3OFtvqJx>`uvtDCWDE3Etd`rs#Ka1e*-b7SA&jvG zF7z!(zhWxfUS4%?E(>4kI~Z?o4gSq2%to{uCExjn;O9f$2#_#$hCtu$TzrsweOfhN z6e2imn6eHye^Vhr)MDcVorf7~2+)mSJbL8$<(8Tp#Wl%`Qsi1tPY=1?#0~@)eslyn}%M zkv`Ue%NFRhipDEW$%Cc}BP$Zu)?50ehb0xnYG(mgVJ_(oI2t8w3q}vMS#d<{Goov> z@pnjYp>MpR2hl}`4;a>OU~m_Z?)r7<)ir{w?}JDr6mArpt-7Ma?b+!WG^0XJ_Xa1- zkTtwtmu{elqyyoqpd;N9Z;qz+AX_y2j}C;8HO^rTF#{hRZ;pb0*uzMX2_W>RB&LA9 z5ly^Mz?S~cq$vVZ_&smayKL0jHn9Lsw~X# zc7ofMX(d&>6Kp7k{kW4GL8^mE54D$evYO3em-WKj`+esaV2ulB4rpQTir?jfxb{HI z3_#2b^8_i_HST7#gD^Ohpik4i1>JOLA!C$Leqq8u$Q(nUbjIY>wlMkQ63)9*QKZm& zIBopT>{K`$F|jWxM{^(^7lrrHaHQB;k#(W+GLtU1ap{OK?xX-kE{a<+)+jJdwAt7UX%l5{yC@QTDt(G-EoE+x_8$dIg-^m8u$}fd9x0xFEF9Xyk@eQzR`poQ$aAY35fJ-R$xOO-x|Y@c2` z?5SVgZL@sBs^sjEEf-80_(ScFey;rVgXhj1U)r)p!zOc%*xD2?`%`j<69+y|Z*+EO z%+X>+78>IwwS2q$mU5ftWOm!%VeOiI#V0)Ue%V=VXEk|Y$%d9Kwj7x{`kC)neEvxn z%NIB70~gG@xqhSVogUi?7&m^1gco)UjD%zWV5 z>W3;WzId{7^Eb;yj$QuCp;FQBClt%HUMe%HO`jDXcKr2?*~YbWY(IDT-y;@bzqBuPYgZa=7$~V1|W_KE2nLF9j^(RC+(;#JI zdPj%xD{6b_)`LlOP~2ejiu1ve@Xf-WfVaQlSxf@Ob&dW6y%3b4j|EPWITf)WR}e|M zFM&OAla-4W=%Bq?bs^y?jQCE~5yMJ6E{*R7+A^ ze70FJUqFi{Z@6aE^H4p0{h!CpBwosaI)k$_au8sv*R^WTZ#c?e{}=I?*Pj zP(uRez87w^q8Jj%;+sPWmapt{YFjuRvK^`wNOI-vDGkDnKfMiI!gv+4AbK zA-&Yi`IbfEX=LAyXyAmHUk41#Z+7(e;ndWDbU&uOMum0o%x%Dh2SsU?gaBkhWG_$X zp24Vtu?ST0D=NtVtK?1+a^0%XIjXFTwZQ@&!XpX%Ot92{l`>ax-eA?qP2zB1K=qOJ z0qrLR1$bJQ?K5ZggV_5c~aiqlU8dTuGSz(fbfk`dXFwv0xoBMKv*ih1|bzh zB(m1R0j(6(ip;pe736EC`nIe1gvUDEuI zyFvEAg$9IYScGYt)&l`LgD$`hS`v_sLrMBfTDQ7xwZtks?8P8KJ4V9+(wzuMO*SV@ z$hO9%rNk$bnT^BDvF1QK_SPQUBhH$TYOxQo(`Av=Z$p4ckp(g6QO_J>Hx&0@h_?X`GPqkcwmSoeeOFGoYK52oCkNf)HFaI#_J2 z7(k_MFUUHxjuhy`aoq3CAfX;OST~P)x870FyWamSLmL8<7BCJ{3MQXWPBHiFu!0fE zBFJyZ*?o&Lzbf&mg}qZQ=+*>WE2~QICt(T!gFAEZa>G#;hXd3x4nZeHH7jN0*Rk18 zh>0$^8oSACNwnB4)_8L3hajtPkc$f%9HIAaDU(DhM2xJhs6f$cQn<2N zBiO^mgQ91G$Fx$Q>uHwpHv3q-cW?*@goYX~UtJe`-l*`bJWhddyj@Npn+7(09=h)7 z&cu&8Z6E!EJ*+?2yGb7UUrkTP+CgdyV^$q2FV`R9sAfg*|3E1SXP<%$Pe zMr9~$@s#^B2Vj&6f*#7{PC^@7dNdYC<(%CaWvHTnP`{{FWdJx+4(50Z_Y%zQ7Jk9n zCBDNM4HVqne9C0qtty1Gr$ed^<0U8u3z==+p7iX7lTAs%4tnYY>nl4%$_17(LHwx8 zT$J?Mvdl10U*&0+?s%N@61xTkc5&aczc|6|=;RcjUwe&p2r&kh(uK6!=)fE`Aau=b0f}t~p z0B@uO|L-VWs#(nnUtjdfM!Jhw2UD~PlOAzGH0@A?D)I0aLR7^{UU6aY!#Ebohbsx+ z+js=H64HBALzTfl|Ga`)Ba#dFGN$~W0e@u;$-B?g6grAZNQ|y$g#Q?ul7yw_?1LQ3 z16aHB>KmKlh%@(!j1H3&g^E9@7dYU*^t57IoVOsDM7)dtTld__&o4k>gT}XS^iCKF z3Br1MG&Aw>KE4#phv@*M-I%m$HE{UFJYLFrhm8E7P}h4&t)Gx+#@?ZtbB3tQ>gj?T zm|?J9vt~G8qKg-1Qlq*$D9oDp6;VqjTuT66P#N1OE&>b%$k*-s2HkZa36_~#FRR8S zK5eD>Zo+jl%m9ct1G6Ms{A1K_BiwUQ(1XT45Hh+?H#3Cs2SSDl$q|2X#(v?IhS|C#31n4<@#?~-%1~lJK#6)OI7Bd9~yddk& zE?c1teMZfyUa5cso4o@GVlEhdCq0gU{R-h^WsI!iXq{1_gh7*JJAT*i=;+1N&|kl? zx5faRhVzh4VbXp1hL`P75MF0S-bu#8RZcL#g^5~TT<1l_KH2*^6ED>DY+CKR%+ z6N=Jja(^?3Vaeo(I)bi7XhofiyDPl{T~xdn_3nA>SSj5{EF5ew^=y5zgA&n`Zc7O; zY}Q={?5A{(4e#!~R3gv`5fDfr7+Zc|2^0{tRlO%l?AB^g*x#l%Q-1RG@ zi>p=Jipo8#wk|klw-cf9!n+oK)5I@Ov}6 zAfRG2cB4jDV_jK_Vi$H7T&c1PqKG)`K9+%P&ddU9>=ZR7c4My?d%+fs4SR_t7)$KE zo7khq62EiK?eqGZ0nPv8{eG9-z1&_-Kj)T!xduah`ciH!mm-55;S570a9tK7*Md=C zu4Mf40L}xcnVFajHIsoEJguW?-0+WWNcD|+N`hR3th%w|2O!;vDb{t@?pYoxTkNUV zsGw~Ou6UWBv3e9I(*~&plc5wcRzo)g*AOyPqR)LFjO*ABUVLy^&_#Utp(_d6 zB|FKYZW?>wxi1Kn)Y+Y9=SY|l80es=k{lc1bsm5ofI}ZI*3)b@A`k06|LWMw-o;SK z#g-`O=+`vr3uNbbFz0MW0g^m5R#uct@fyIP{X*aNXf3140xEvhdD5;+rW6`7kDYt^ z*0+2ECVrLs0cf@NgtQZ;SR4i5m!KEQ0;&J#2qw;BuZ?U-aHv+eFHRle>CYj3i0Q#3 z41%9Y=1)YUT%u(9ikUFj2$(5;U&GW>zkme(EU7+*g`Y1)C|m=veyLt6xB&)y>bN9PVW#T@w8RjNg{ak?JaGXG zL}e6hfCvMH?z};>m<2T2Iu2{Hm_^2!*WOkQQE>s=<*OTqO@`1o@GG~GGl03#sSj;m z?B|(U2QLK#1+yS1nDt5|*vF*)2=uDhV4x-!Vv4mSydpPMe~QyftJ1&%1^~(`Wai13 z8UE)7x?@b1cXtX(tC8Xm;iI5XXf%#9ekU2+vQja{C`lo9*<6=CM+CApq+er-%b+B4 z?uofZ!92=H;4`A5BiPzfxfzTEZru;*4om@xVw0Bz29^RZkgCFt$Y??jsQ}frXAedfl6<2^b0?inyHLU~;P~11Yj9A<4!D5{Q|8PS!Y;xDX2= z9gZpP`Nstaa^3N~G*va_kV*yGzQC}0Ni&H=fd(Q1jYt3>vIxum9l{8-0KOE{{e}a0 z1R&8UIB)J>2j>*pNdz*;Fs_I#Ep8s$hVKSELKW}}%HF<@dzXZU23v|Ndm~!UfKyyC z(vG23M9V7_WA(uultM`IoiGL%3|PdFlLJ)u^7ADLvAlp$mkqkw^zg6@ff!)%Yr+TR ze-|5ZYk^ZWQv_;W8X-g`ALKajOu|RD`NzR8M`22ED+|M#o57bh3vy5O*hxat8HQl} z0S;LTq!1~1yDGIqOq7ca^odJ+qI5hNRp365!B;@w)&xvJ32NE6>w(00X_q^(ZY%DB z3YdcX&b}1B-9_;e9)O<@#0sjNY0GB@4v-q{Jho`Z+AG!qRx59y(x+fj_P&rBFeSU} z@V<=_<+KM`LFxK3mozFN#H)+~#g5CPG1io+5ebxY)qI)=94f_2RH>Cc30HOiq^&Ro zNR7I3!m~eLJ#2a&V}KSKn>)LRaY-499uksB$%I~UylR9K9E&CU0uq-w*=DC2%L9T} zCE+-wN%Sj35rz<^VLZI!>h4~+`Rlzm)HkNq6p)%p)`>DJj1?hYDjz{W>15gs%R=;zNL>i& zOiYBJ#Kwe^u{htph8WMRqp2S63!sqsS&@=VNxhPEl+12Xc4maMD4IO!> zBM(lObDX*?Jy({=p_VAR6s;UoLn4_$f{y8qO%PWZrkP9}86b6tqcSeyX>iZ*LU<{T zn4B>>>yo+@FX$(bQ1tQM?FeU#3ll)9@C&L@>ItssPbL2N66T#g0@55zWM3xkr$1mu z(sfRz(3yj^vQ{&6tNxWVIEsN2CKj@7`7m{W`MDVVShXVw6MNhO;=gi1- zw-vPd5i4pnc#ld6NdN}XBm`}%=KssX+9=Q>Cf`+z^mv6>;dvrrZya=9=zJb9psfF1 z;|9BD%hlKBlS=-Ls0R4-ggT48De0x(HVX=eii*XOY)}$arZ1K!nJ^Op{eYdQ?FRS$ zc67EU%kFf`B+L65!4PUDRKnUxC-UKMokF+HCRaDD)s|h040Wh!hka-(WkDkJN{0UxPw|~6y~O48?F=4 zTZAEc5*Vzb$I3WP=m|a>#qdQgFEI%bI5X0xI3Yv+Q@;F3E-%WZIsq+(>sUcHa0yo~ zDSwunY%E#wf^&w`gD%z9@sN(jq70Q1$z?CvNn-|b_k!*Hd)(O3i(CqSBy zsjQ%4AdJyU#j{gP4p?OXklxdC9^D?gMi>_y%wLjm%&8 z%qM$avp1=;tgeG!l=;82R~c>h+J(vwdTb4uf5LvdeR|7;Zz+HGiTz~$A8tB(#&>6d z+#J67v&YE%Q*OQBf;nd$N%_@hb;sOsh`TJaOzRbUD?nQ4`{F%Bzzl{=_@ zpFZZ>_kP_U)s>dD_Xdk)`Dgyx@2XG#L9#1r-Swwx`AhzJ`QPZ7UTf1!mdX5Qd#?QB znWuvI7QR8R4U+jUc3-{hy>l8Vzo+)UGXJFwH$K6+d2`C&^r<&h{*PLl1`c)1%iRJHCF;V7!)PI+2&dD*Lw)whhoj<*}X~z#I&Z2fEKK#8b z|8>o!JHLE4$_oLTopp)K|8}`Wf6!Ypzv|e&myQ1yzCLeRI}F)H z=5N_@Z^KS|j->n%gV&V#Tm5|GsguRZIEVGxn1CTUVXicaJTz zl)v`UNiu(%LpHm;ekuC>L%)NLlKI=-ymb62%NQK!wbm6ff4jwR9`)WsL_1r9Hu#my zuikD+*VZG}rFPbNZHmf&p!&x*zZpmQx%qd>`~eRwJpZ$EccuK=C+?E@HTQp?`u;*T z{)10`T;>nleT!!wdkgR|d}F`(T;}h5-mlwRendxd%UXBvWSPJFj`nk(tdAj$ENkmc z)Oj2J$ZmiA#f$KG8+-?zeS|Dud*9VpHT~x(%0Kj(5i-ASXzh}UA-|@4=V5iO>PKEX zs_&oPq5REu$;$Helc(JK>egs(1rBU$94zxkjCk(TGpi4#{56-V^EP7X`%B*$`WWSR zEKv8T;m$LDx%Ty&Q2wsDPh~q}+yA!VExWRN)VS>nGJjmpT2~xb&EWh|N67oWV86=! zhrIUtwW*!v_0{>`|CY%cfB4RP%HQ{eV`Mv1u6cRxp69TA-|8TBe-Aw4#>&4Pc_Nh` z@zr;-{J|$YyyTVKgOoqvDhaO^w7mPxopWDhQZvi?&hE@1bi z?`ab6Ea-Ur*RQ3za|lR~N4`sEP7>KA9);kJ@sZ0~Q|7;PCiOpOX1UUwHcHa~fW!^4skDs?4A7 zT>rsW4GbRksrypqFIwe;SFT$9&s2VLgT&Vhj(zryYu3K&WXjKN{D3Tf;*qc4^Vi<@ zQ~tJ-$IATE|MB83m%K8B@(&oQ*7=X09k|*@8HRVdAG$-9Kl7bic6slTe^dD*|NXVh zKYO<``j6hdKjm+_u{ww6zP;sUy@n5`{LWnviy>ltf7a` zVD#sa*7h?0hA+0WH~QshDnIQ!b>40owqW-?U+zQs^CoR1%ilEly?OV}+K%$;pHlbe z_M6wKIsaD-eoi0zcUk`4Yc_iQ=F^^`@>S2O^Z($bYaDaW851af_uKo(@(*2m+SqrN ztV;Qtyg6FtKQes(Io~!NO8H&)tSa-LSU6zj>^g=|*Z9@-GXL3MKisSK!5o!8G?S9~ zuMa!ug^jjgGO;ZtX)&Wv4v|r`^Wa9E}ls3Y`w;Fvi!RD9P#eUH5X9+fUQ+K z8ys|M*A36Hb2av$;j;XOtM9q)dFL*s@{^vH@NMBns|~+l^tGQ*{&x9lS$^YXf1UV2 z*Y=cu#Nm=JSh&gC&VCCXX7{xD4oMd+-0b2{Uc2XEHm|B{|0&z4>i6E6Rj*Z2JND#^ z%I`epfa9NM>o#+%=Oo6&C_H^}q0aL5zaeDdv$ zpHcbA^Bz_GuV;>UC6p~DUU3;?W^mlor(i?mHBmVeD-bAw=YxvQAa+i@;{ok^SP&; zL-|eZ52walN?|Lwj1`zfOzHs4mAt4ZfQwPVfpt5NyQ5BZxcf6z|3%f8x! zo!foB{Ey6^cJUKSr_BSE9ell}oG$Y-cg>o1$|?-cj=W#;I}4|8@%*LlUd6^U=w6BU z7q;9{x5uIb)6~vpS4(<$Ve49p?z=6|_I>&e>O9ZvH|@(&GZ>vPWtaD5zccsWc+0DP z!PdWW(+M&^o4sI-$M3t6+Rr?2mCT=g*!kbC_tLGDzuP)$A3K*FzW9;D*m~C8x@IG^&zH-9VJIqXoYf9K<97X@;w4>pncM;y0K_4kW@MfvmgQSj&J zo?}`o>;SaV$9ji0yhrV9 zyRSM|#~*(8Z0DvwQ2xlaS#mtT|ILu`PtRp|^OrYnCG-FA$Iq`ga+~Q?{+IvWN#>u} zyKDY^4=<(s-!`fHa>_;TZSmSr*8Z%s&y(d(efhD8=f1oZl|SIL^=1B9Q;%5VuFEPY z|DbV_?p=6Rw)vY+H{Of#_iGuc%71a~YFEwr7v)#}_a&KsUd=~S^Xsfb`Kh{L0J*xa=M?Zdb)fWt&Z2gcr4>w%2*F(K3o~L%EeZ0DC|E7&Tzx$2-9LjIl zRPuuh?>Vh?VXrxi4(zkOq#qXE_xO?pGtXssdD{24%61;O{q~pUjb{Ad$aY)iKeBqm zp6~3i8MS}Vl3JPn#Inyv)DL9*>Au$~IQ;a|)22SYQyZ24%~=ZmJTqwfMcu2i`?ddp zYW&Z)t$y*ITQYvIYMu3D`!9ALwf!$oV)Xg1E|B!(!WYk}|90Ztzo7Q(7yUz)f9d3l z(v=U^P=4($JInl+H@xTHTfe~I(%cL0kom8zwfPo*T5uMXpY^r6*Kge4v-9KY?m_v7 zpK`t||K@XF?{&dYc7OZte7MYiXVrecTJN{dQu)k<3SPbc_QQ+Le1gHBQERGu_pc+q zJ^Q?K*gZPrgwe8{&kuWl%7il+{kDJ4(K7#wjlSITl=j1@{h{L(-1~Ccl^b6E9^0>j zk5T99%S*m|x@FlTR6f6_f=geuzI^JUUp__oTkW{7Z2#-$?n{04Cg+fP0}m+^^v z_OFoT`}S<#(tEwTsl1(*^wpw%CmsL8z<$Fizweb2PA*!#*W=ln&Ynm4g>4U!?et&g z%bQ-$en|P_c9ZyY(FWIj-Lu!9FQ@!npOp0HqAjj}aH|1T8&dw72TC}cFFsvQvQz1X3P9-w>`RHmHyjMe)_vg zmEW+(DYst3=DW`JlFwSS?c*~Zz4Ve7sC@qxOP1g6uK8at{9t{`-+X?z%-{aiEw9@B z_Khfi-1~3I{2flO{KL9CGkSQ?lDlO7fD?D$;QNjXsr-ibE|vL%*6Z`@Kb+3^j=6vS zK;{qW{qAGGXq`;uw`jXx&N!CJZ#C&LS$?;-u6<>%e_u@b-Cav%{+=h^QGfjscHf8X zqV{F@njaSm6>n4d0Ta}E*1vMW)Mqc=i}Gjxw@tP)a{u!tJ>PmY<+s1Gm&|X-ti9*F zuNPB(<8{B0`J+!5^5_$buc7>jZ>sei^G4_9>4q&R|KJYE|1KKW`p5aNrFWtHK3gx4 z?MyzR*}CaThIh6)G%xe_-)FB4|9bE0RDS;tBph2b<*QTXzuEL4b-?*--}_&n#?$f0Zd?6o=E+ok z;P^*m`L15W-x{>>JCvV2{_iUP_>c2PoqRCm*WB45^Ya(>TX)dKM^S!$!*-Sbbo#>X zqqd;@O*dRB^AB72^cFim&+tq4A(9_lbi}|3-!0g!mdYRUz-6Mm_-R?|v%5zHR{pbc z1y-)W$`x3-0xMTw4Qek?f1C!`Hj+@gbFl8H*uKFStiFb&TsbbJhZINDtms-35!-_WtTx^)q?)QHf;+=5fIyEMC2@9@E*<&0eO+ zVrW!+A2M1P8h5}7dGFK=)LLn=@r`vV9*MupA3NQt7ZLn`?H@&@-!l7{fITn07C4bbFskB&;)&DevU|sTTnzC zh>qhB1|Q=|YKP=tGSGxSVF1Cy)ay1X4oV)Un=T>VjvM9)WZjY}WPpC8kSW!p`7gmV z2970!NHI_cO?L%h`y8x#3I=F@gXyWHVH#@T(SZq0zO!wPlS3rHgZwj>`7{N?D#A`P zp;W#)$Lqig46e#5oR7i?-tqR6Be#mbm3hX=QF)|@VIph?J;97|y;%G?11CyE>PtKD z@Bvs~1Pe%+;WQEgSG;zNa!rB+l7Z%Op)&S@>_;$zw=mu78P-y=K0J1V26J5@EpajM zD>Kx+Sm6Q%bummu5}^AjqM1)1p&5O=Xl@*RYth_dgl0>))ybkQvLVWl_%Kroqq)(8 ziD-s>vu8{u_f|tY+8YT`aa-y-wP8WXo44*AFNp>t!;0Vx;JX(lK`$%q06%w#6~~2d z9xw(n0#3YmnXCaqlg3rgIVmeX8dFNDp=!s7`r=ATm_e~jsCcSAy| zqdnd>;rgfJo|_WMxWG_gFrHp|v?@9=Dst^v>Ja9g0uMsd=oHFC!$mo@$IZZiIs)O? zhr;To!OA>+1E$x@jEAd=DH7bUKGAqngZ2zz$2~+8$q>2mmN<1<%-dGsYfVl>P6%zssjR^7Q+DX1qL^;mQ!i$)#)r=IH;LIV(1MF^Z!aqTUYcpM$>Djhy zp~oGYOO{5?s$OK@rL#v6Pfq$W&m7Df`Hy2R33h`UA!yc(Szg90YW7rfTCScbC{ z+#8O>h=Ls!SoN>Qy&=xbb6U>4=9&23P;~=f>6Y$hJ?be)IxqzH#d0)i8w`40J%(ux zcQ^z)g%jThabz9&#u!CJ6|<&s362p$`Z~mzcIHC3&S17R;)ZHmH=k&vV6AZ@=mrEt z6BD1%-BHN4!`xeq8|A-gICL4Z)gK7KS^vqz@#zc_DJ2Ok$0ZV2CZN#c$RI8nmW&`Pk*2{lgPmE7+jKOf9!wFjT)j&-$IqP`Bn#N5qgW56APl9#RCXCC zBcyg!!&uOr*AjvgM3Dajqz#Rk84keW4t%uyQ8)gKIOHnTC%r@Lp1UU^cCQ_6gk>+n zomd0XDwvXR%lfl0F^v+UJ-d|v=HeNP6NQyXBQ!>UcPaV8tc?p(34i>6iMD|T!V5+hU~t$8en%~?}{ld{Kh3sl`c9=gqA9K^w;tT2qR#kbCgV> z2~m`iHsCVA^6d?4SpoQ|;zUg4Mj+Tl|MF`r{MiWu0uk>eA&{czmCjlzrk1;KBb;R; z-dL~;H1=Zg0;tlMmffJVi&#toAB|3PcaA^HmJGL+uC*u;J0~PQmM@uQpj7jG>F-eA zt{XI&#W>%nENFzVg;|R%_T@k&TM2inGMbc(cE0F%1V|OQMv$0b;~c_E5xER7&dA=v z&qRhHF$qG18~~BdMNkj%6zDP6g~@5Nf!LaDK!-Tg6%NIOjd5yMDgK)gXhbX-N6Bc; zpw8T5mJm%R3Eec+)5*y?5Ri!Y)A!F8fqHW);d0u%e3dAg_!RZvL>)vdEYDi zJ01-PJY+)<5&O}EFdV0oHt(AWL=`UgcsHZg+t7hdjVCai-rdpC=2RnXBu(VXY*bl6 z;LiZ6Zse|Y|8s)exErvU&%w^7o`&=orl{f-t9OYSwNfmu{8 zyx8+RLaluvHDDs@Eha*1QZ|xt@B+t!RaiX%8VbdPO&tzU33>S#<_b5Gq*qp@NGIrJ zO9j(8nc0{DOEu7_63t0}G-dL$5f-Iy@TafaI$Ntbg9lm$uI|W((zF3BdJhaiVj@Bq zCjfO(q|@sZNXKJJOyyx)zcAPhA|*X(L=^g==Bc5htGmG7H;qV9D|#?5-#esN;RHrA z=vN_JbaDopVw4dwO8jXssQ$yB(AlZ0>|&|nBFU%kClA+abptj8R4t&hL%sUQ{(H{XbMR|7(L<2ctV_SoG2)~p+W1y7}pj5F`u_Be;UBl?2Utmf~ zU(xWA({>5SGw88grq4DxAb$!izK@A+a9k2qQ~mr8*#YCL>rotVwd2K2zD16(x`uXE ztOG6%Ky)7IUf>AfLkC>zYy1V1fqwktAUc^0m5Quk{Azh=LdrvbnnaSnKk^^Uj@_x@*v-!>4U?HvDe~^w_Hv(lks43iHF~jXn8-)6OiGhcy?nb27k2 zU`Lx8w!Bn55C4TqT~->ck=wF|lFuwU9U77wv%3~&dUtDe9sX-zN3)cYnt2f!H|rdq zSy6iKN+}-m%rDtJxwfHheMJpv^jH} zHqf`jucPr-_d<)}xLji6JoeJ9cM=sny`)3sq{@Lqw9^Hq?{JRTa*k(z&;p(#MH*`E zY|;h;ZETKvX_a84xD{y-q1I3pX*A3#=ve!2Xm_p+P6bGtar3JuP8bcR0{$vExd7VR zThQ!rNclY*0g75@Zf9-IW~5> zNm~stujtHW3p3m05MW}ukFvc35(QEG(Y@)Q zpVS{csc?e)(UV2OD>^1b3E2s^w7h03PvJ)10_j>zQK>skeqSY`I6-~-QU>ZEp|-ry zx|ALCaLKg>ysz7F^mjrEag{etArRq_T;;V&&_gPUhTY%pLTjw5iI0F!f?Vadg3G!o zrjpQu1z*~WDlq&~_ai6O#SG@mYj3OW0#pMuKy~A=$%u8F90#{ox{K6xHg_YrIlMdD z)*=gHw}cvtpsk6#{OKaEA@jNdMk2Y1(}OkI9(LVM7QK;Q#OTo*Sp{ZBkl@0ScGC+H zw0i`6#JR=dRVBbS{n4-;ir$Ft?;VCI$-S;`?2_m@=P{N5PYn-l+6uSd zq9AvlLC+}c`+z{dfLZ=DO)=~YHj29lAg%Nz`c_2;3G0V6&Un8Pk z3JG8KzSZB;&j6*;K|Is}U8@G|r~EB`wSrYmvVCs@Su9&@H-Qf5)_)-31^z5K)Uo0P zo?;M-M3x54=kFfD0cw?i!R4a=C}3O^S5fbkhE)r66*X!}RO;gD6CI#R-N+d`Qm&ht zm9+{lhecx98bmlo$2LQw@>Za$D8--zD-`?F+jUWQ09YoaM>E7mFtqZ$3};8Px=_v6 zK^V_rIVWQX`^=&`BdzryZBzqbzvyL*Q^;UXqZ|hWficD9!O>X^nO^X~Wr!0vaX;HY zq(2}yxed}1OplXH&A>F05ejEuMmoSdquULtsRT>Aym^+pa01CfDRL?d$Yd_uOf4@H zD%KMW)Gn99JcUwJyc*&Cn1ESm=3!Vd9nIu)eokQpkyo=IVvmJSX76ceQvC1fXb7j) z-8C);@*b#Vd>CRoif@#LFtC2_xTxRXhe&IA`ErH;^v- zx3&LOs)pvQNvsg7B3V*@)Mc~{!@%!!99J?*E!%~|tkNj8Sm&2jk3rnQK+8+1k(UE1 zl|Q=2R?8c>Aq?B9g%rpO8d)9|?;28345+s0qWgGz{tfQ=tB{_<6ia--_Z$TI10f^@ z&|(R;oDhp~m$@B6d!`w5f~*T@yF@*K^%lZbv<9!n^rFE<`4gYW(rO$o*9wv@2>*-B z_lg`OaUs$km;pHPe6?r5QZwdHlED}PP5%a%vm|a5_W)Zgg>n*s(J-|s<8)xfc7^4u z+#S*oOr;=tY;JAh;0bf0EmU_7q?j79QJRj9JSvNb1FoK%fPrYE33SUYc{U_BG(3O4 zU0ERFQS+j`MhLSuVFOuKxqvb^^r7|?ePu|LXj;VrW+C{_mz#)@X!y&hZP z1f<*qMnlGtwMW+%7;Lh6Zq!OQfJIpjjAL{GRuN;oJR(ccO zpM=hEYm5<~misA{h$KX~PMHR0S>#PvDv>dGD7N;qCo=GruBn(x$Llm-kL&DDODtc) zCT$qR6QLml`npcQBcebAN<#r!d0&f(kw&KRWQWS0g||uS*ztDXVP-fh3g8_gWumVH3z!M4AnaLL{P7gjoPuR!wmGaVB?* zM8?5jDwN1dTm)?>Y6SjBE1cemf!5e^+p}T0Q{V=gnv3aylK3ZONN@Fu02tinFP=b$ z0zV)&2HW~rFtcq$mbXeEaKLsdN^0Q(y69-^pK z*i(Vd14aJ)p{MJLCc zIgGxfOhTvULI%$khC-`ZPr@G$VImn$)LSw;+cgVVKk3Po$0ltu)+?`%%F}q* zq$y@NwU_T{Z+F1Eq`A6LObb*UIH6RM2@%t4ECQF0IvuUq4hKY}ycZd4uxwUbWQutd zEa*H;{z`N2`;0SAmxINP52^x9v|(65Hr9U1<%p0koFk3`=Y(1q*AUizA%dJWA@#*% z(q5)S$N+c@eqrdr{c`Y}rSz9U_($y;u>_eQrl5PLqbD~MWUtByFyT|KiaY56Y2#td z#haZ@wnsByMBIZD2j}+O6h88v#ra%t0_M+R<;!h;|Y z9q3t|hm$h|@5XE!kW$QLr+33SF{G$wDY@>PZ0s=<1x8tY#A+qRbhcz?^a%3UIHyK! z9FKaWqP~qD3pCCt75Cf+BJ5Svy0Q@nQO@J|P8d>vGDuJe6J$(Ff3n_xAM~|tpy~Rb zV|7=kCviLoh>%j%Q3-lLj1gd4$Qnx0l;e zR%}s&IOAY;1WGG$W+To+9r-+`H{BIQPsVn-7l35?#sY|nMMESm&421*2KY1LRr1iR z0+gpPZIU1(Gi8H53gE^BL8e(LkR-&Y&*`h$Y}ZT&9kitPIUNO~Xn0qMqsnGbiUgVU zFeG%6SbB3*D+TGo5TA+DJkB&j6Gre!8 zMex=GS=3|DDdFTd$)~($0?&-YxT~9S4qchT%xanq{ze@cf>v`4cugRny4xIW4Ggqm zR#Ac!6+=f6RR&ryEAqY=`@)twK*r-gCoX1ARF~F6_~4{|gGc26NE0xX;2DEZua6ha z1&k1A@Rc}LEnY*%9FW$uH1>dp;yf9ANhuQuZlH{3HtZ}%_D$^17#eWnO!|{KQW%zm zEHWrcc8<9RqdWdos8HEBc>V)+(=)IGUJR`m3HT(*P-tl0g|hlGuwY($&JH*p2{={L z5Z24E60zjdf~o<$1`!}hNuFK-2+kKDlI0$Z#6-C;$r5e&SXc=ekUCs}>LH2)nRXWh ze#zsSClxUMlqz2eNSy+ucM2%r)MpVfC(gF_3YEo4QZG;z7uoVTuJExuL{B*kf%|C$ ziE=q%6p(N_kwj8d3*YGW-+toE3ryxgw`7JZ5=5+NR9F^_6TQvVwL<=ULrh7i@QnE{ zKuT*Cr0JLpWNgwAhA?!5FqoVOwrWi20@dlW!+^8ZiTHn4NceM*(WO7?ar5Ae|LPS> zIc?Bn{+;Qu9}EJ}zlyZ41JQ+(b2^%xd@{Z~2`x|(`i@xHy#eluLY5IC1TknxT2jx7 zsz>cT33kX*d%@YUuZFZ3Qxg1)4fQGs>&4+mgvHIH;o`^KFWw| zG#NuQ=Px#GsvlNl1mNZ}0&C-P$GWF<#Tw?QONKAIV%*a_G=(2VT(drg^e(2mO}a_* z)iZ7iqo-t+Zn|h|1ffPijn8G8n*wS~0wevZ!cQ;{ue?q`HivSggDF z1x_23s@98`;@DZ?9tw+xn7c>v596p589PAR<+pQq52k9L3+XgW$uB#un3alk*&|+b zPbtPv03{3|sXt}eSoE4(89>TKu(;`4AVH+q^tA@X89?+SYS1Bj-=sLj*eA2Ye73d2 zX#tE2;l&H!u!w&#$qx2zknd(iL}K}BzO|z>hxU+ZZ-U_G0j9{!E&1x&y2fG@>6XMP zc_Ri`m&_6b4L3A;Gy?*eAY9GPaPkGN91q!%JUm=5M~aO>0D~hk_!M((<~o@B`j4L^xo|Oi8K=?I&i z6rJ9;0|s^w_QR&ZUjV>!17`8WHNt9GOsm2$Vxp#m z9U?>L@?9H;83|R#>duX%kz~k#32%R?6@fP^Gm`icfhOp*>@P66AwxuvQU$^apm7Xx(;sN^=#ZuPAgS}27lCMt{WZg^ z@(ikxhU+_BX6d7!;0c)b(tR?Ufbyr3=j;b4B(gK8}V%3MKvtolA_lK8C z#O>0k*#ltBQuUA^E>UWC1DCi-GfxQwE>>j}NDu&Q{O!+3^59RNP4{w!Aql8K&G`{n zqy;ic$}MvZ3FJAg_->9g_rrPnk4(|K8e}stqq)Apf(&D)&5Evp$^mlQy@c`%I{(Jn zs3DT{3gih+3m0ACA%Fw458l8XApHhYEWF4dY18P&8gNX8+jNopK{a>|FXt4XTYOF} zKA3es>BfZz^jaJA3@wkzfYt&$JFy3x5c52V1mbmciOk+B7COB1Cs=;M~Tsu)~ z|NlU)lFwQVF4+HvXYIFe=<=9iVq;pa(q)gaX^cP%I2cqCZ`5)zp;0K5B4^a2@V@^6 z(n3rL;UwwBdvSaC^HI=Yz$s?;kjrIy@;^N+y})~T>;*wMh*o-eL)!CPBj9RLuynyw z4I6PP?#lI$F2|Ideq`3ep{|^U9LS*F#m0L8)CSXm>gQLZo&;64XF-O?4yHCq{^YcNp>wN&sDdHzlPG;*5=T2M?WFe zyl+`=$)KU6Bad)PqMUhXjh*@UR|@vJ9Jj;<7hDQ(vu4a&LRT#nh5Ru{TDliPP0Cfn zFqOE%{sc5q>+wcjTCz7BsYVkbeuuOWx?fOJ0`EXQ$)C5?+RgLC{cW`t0tykH!fm-ZYUcO z#dyei3>}{TEx|)C?Li`<1fX$M@CohKxEIIso;8-&qs#-6+Yz=kZs*i&PV@26(L?MhXlx0i+iNw4LQ&@*& zoHr7&rDzJEIx*9)Kts=BipeIxszMXSRX15{&}k3QzqZVXunSKduY|FoH-VU*^c2)5vUF(Nb}pyq){+bj1tvLmo2dr@I9SXegzd%KL%rDBG3w zb(5ky#;6;9xdKfNN}UtvFlbv1BFY~EaLs{m%1KBk4Mq?|O? zk*k5a&`m#I4Q6j-$BqvB;dUB&{6(YDU}L&)^NaM}2&ET6Is%hF9o5iLa0k=SaCkA| zgYpvhY51|oxLLIdz2kQR4hM%a2a^F~Jc(CB^Hi)7vJ>Nv`8bS5NTV>hIX+Lgj>2Bx zBb|nhuI>WJ!<0xS2V}nE`5d6>4Hy z%>edTicQ>G+=gH%WsW*QXdfd^yo%{|rPK1=dhRaE&w}m*wHzW&Xz{&@B2Ga6qVE_7 z_9NU)22peoXMH z#WgjEPqP%4AT;*m3r@QZijAf7ti#?;&R37^ZfoNYnl{pN$_8;5Sk)R<`k=zf*of_;;sA>ON188%9}Ho)q#{oT)G;Jk=-Vvx zP~oO-;k$>1BIL4c;Bs@B)I|BXO+&Zv1=eo>J6*AC)MB#8gWT7b*adOyxRXfCRtHA6 zeT&)h;F#rW!mZrIg=V(21U~qE2Ke1K90=(fR;5#qZevVwNm-R5-$}O(q}NUq>B7y! z=O>JHH?5!zvtwmuR{>CiH!T*+0Gk2O)^#1=4k<-cz-{oV$S$Az#1>Bm-XnLyr_5e0 zhdoY>*>&@?2mZBw7eJ{8mX{LaDu|yaCAKscCAOjh3|yo}rD*HqWVO8(Fem*m5z38C zRo9LgRx8;fW@sC?4FXw4rQ)z|f+J(W-GW6Dwan`wmO@ENS(V4cdU(+P0_g@!{+a~N zP=R=+*l#!@Nu0V?ZD;`Z288~ktTR_@v{)D*B>^yC{O*PssAu8GD92dj0Fjee?<(3| zVRV~__x)LJEIvDHu`EA!6bOcz60ixjv^g}a=l{80o?p;7Q%StIx=n5nn2aCi1!?|%Rx0U zn;uWh94>Kbc0a(z1D@cz!pfeHmuF{45ahwGiN>5r5Qr_LO5|;mK;6o-6{FJxFi}15 z7sk>qf(@QBH44m*3V`iB5CDGz=~GNZE5>Gy5CC)D=zkCX{!kA1i;Ec3e8-@ySF%7R zPl?M3HyT->avV-h`~7boPDLKYdLXw+$}T`+0&nvw63N&8$NiLVB5DeEF4j<`)QOGM z$z_1u#sdH!y<&xy4GyMoq5cRS!i&kNu?76>a4D}*A%_R=14!UaXuXk8F2bw|OT6dM ze`*Ct8?29E#;JQC-G(U&ih+??y<>60CF0s>=0Y)vfI!~5B(A+AW0ZcrG(toxC_iIm zjl@v)#Xy7zd4fhb6dN-`DU>`gA|#S!i)N6G+$A%ohGxcOy0jCfafoE-EO|sB3ed)+ zm4$X>NjQqa&iO$DXWSFV#@Gci1yS=q1u>DJQAo421rUhye{TWcIR$zm>uBx16iGNn zcf$J`aG>EdGHD1@u~OQ>_AjqFL1-tEPA|5qpG$1?MBI`SA))ExB4+n)h_ADPapSUF z7fV(J?t>5mowUXioIJQ|Lra#OfVsnZ{5uU{J{TaSzyK*VI=QfVl~{J`39)I7!9^Pc zv+{e7h$#~eVQ|8F0}Y1SUn^1Xa!F0tAs)9>iG+uH%w8%Q4<~$fxKe0(7bKm6wOYxho&d>9+k?^&31Ct>kFjM7Qmr0~ zqi|tzv|BEV@pH086e8;6@|DEiz1Bc3`9UT~Z$)}$aatt)3>HW+P;SYSb z@69`vG|nI4bE|PdG6>UcY;ZZ4jcc5aGHsF6h3GsIrGg`b?-PJS_P&rBFg;0BaZCyX zWC+NaXFEH9yeY6qQFWc|VCRS(qz&}UH0i*_n-2gaAXlOr2;v}OO3)We|9hnYW@_{a z!j0bFW))`*i#ZAL99nQg7%;2OP2k(0V$O;&@Q-w-G=8+`dWx%wiw++ORctW8w?|?k ziYneF-~*wIH%ZgoiC3ErW4tQZA!%`pYQ<(~?1ab{MpLmcE0gxMbvDmt@#p?I-E8|n~Xf8q>8cq1v&X=8J?KE*jpO?kqt z#kN?G24kTEEa2EymvVH=swubbgc;n7X^C3@AhgZR1-ZFH)CEsn7pwIs!Yo{R`0hoJ zFa*-}n25iNw-r?*!O#?2V(NaQvWWfJ*#hBhN7jzfZcYO55o}&M5==y6LyA(3QSrrW zyBiW{1nl;Bn}lnYj(chX#lxkeuq38fk`-N@C~_ zV1VV*9^Ma^hGLQ6-fApMHeUL zX*LAQ3C=TgoQlO9H}Pu*D_eWEd|ZGf{cq zK#QwX$qaHs4mX!!PLck&R65JR`Ke4|IqOdjFbQ3eQ*3w_?lYg5gosBU;1z; zOe}zsIPddYlqir{C#{@JeF2Qn&@d=vh}im152eM48@C5=2|Nd*JyG5lFF^) z%Ohd8f&vR33{%A8Hu$dEj$s&iEWWauC~xMG;H_&#<|QD7ZQ% zY>keq%1wGyB#;Wk1I});Mbe^*5>RX;!?RJ*BkYHL>tTCs0zWXeQR-<(k70@gC~-S` z$Hf!zWMZZ0J_AK#5v{IDl%SObyY)LyAtaO}E0q&)3DGpM9R2y(Tx#f3*<2#(6GoR& z&B-(bS!|q%&7m<{N!T@}Oi-9yK97)V4M@n7t&)TvgD^ooHG>9#Ts#@7B-xZFs?0R! zF$fX09v?@>k2qS#?gA(}6F8vLITx0xU$mI6|Jxpca+QEwL@;9ODMS38zZf&>Mzh^e;B< zc=#A+35!$>=O@(#3HP&J!eD4PV} z3ISMYoJ|?-b=mlZBUK09>yZwliL#0RM4e@*q5CqO0X{cF(8YjF%oCyg0jTZNI+ zX?*T5H2zltYx+v=oep@v7}U&INLqp<1eq*+Ei(tfQNs66L?Fm~uZihCTj8ld%qGKt*XHl}(!}9(fNe1Rb6$?f-3Rm6Y zRA4gr+?}$giUW4&NN9MqY=^?_L5Ks5Wx6ZLs3L5PQ$~9#>lR4YVk*(V9h$IGu~Zud z_Vefci-QYcNBG^2M|xvO>tHe(3!nl1iQz{0 z#f}J`VzOy4T$>C^Wf*YUNP}GpMgmowrAfsF6r@%$IuasGcGP{#<)TL5Ja$mG$=y^<~y4P{hchBg1z?3 zyIu}I=sl<}AOp=MKZ;|=M@T}@iBQ?H zGHy`->eTTNYe@Y&78m|3NGD?=Mp3ZUzIP0Cq$(t>1Q=<<9L)bxYuYCH;ID@u-pS3$ zHapcVnL-Bap2^>$dNlv#0$;lde7_JT_kRI!ol(Q*OUK}8G?8=` zf=XdT4nr;|+Kvbp`3RncbxO~GbP%Qh-HRazW5h2HB9AStngjwEcRT=Uut4xm&S_!& z8u-_PQim0q#2r=xjhuCt@FJI{7bSQ?S}5S=wun3cela^@9?K=mv@_B-sl zrDwx+v-?6yVKTPC7s+vgSfV#<>i+^-sb9CH2Uej!Lh8>Tp(EM{gt`sH5KKD}TG0e2 zzS1$bAcPKN%&uUF36YA2@Z>9;`FD`Mz!XQsjhq0@+~5WhPUxrP2y6@2;8RHNW4b9K zM<5M$RhW?U-=ZRARar;Rl&gy;{R0Uqd=ATBC7X+fc>fI(w+BGl3R6;42#aQ=;{;}o zZaEUeq#_j$MkhpcI9FJ!A$Vfs17lCP&3__t{#6ZQ!7B@VK*0V?KzZsQny|t{mVl#s zH2HYca5Riz(F0@OLermPN_fQ~+%+;PF@YTjnHXOhS4csi2^AbALUY^>_yGof8m6WgoHwzxkhv&Pb!{iu625l`+v~>3E@D*sCST*!zkn2*hZpxC1`jW)#OL8fO&DlGa?6K@x5q+@ z;4o>Ah<(;!EMPPopFk=1#f~G;OeGSr#v)|wMm$o9=y$Qpx+~jqqTfYV$q$qt{eA~D zc@w7cVt%_MDr7NYdjgD7BZ=>;R4dSshauxf;r^vRUQ)nnCkEyW7e|2QMWW+$`rj9Q z)xGhU%hG>2`D>U5`r{?zrNq&Y)DA97QWD`O=cQ7A0Ts^;m}1=GRRWc(B}+RK0imd1 zZeY}c0m0}^h7N8zDw?!-uViila-Mu4(^1GL!5n>}N^doTVr7}k#wTo(LyTMeY@Var zL20(|nh7c!gtR`rz{G?)D-CQzOoh0xTfQ4_@x74X6kC5;9yHL3f~ya~OzfeMki{R6 zkm0Z@;;?NlKvo*36o+?{T{A2hhhLOcg+UzbJbd=E-6hhxmn7s2X2aUk3_B zY}7XVz+*Lo)%kZOt`{=McVmiUyE?h4epnHM97pYq)uGEWGslnNbUucJlAd?(Hi3=b z_A?+PPlV8jK?}I|bHgsns!+LIYYL5cO3~cL6mB`m~N_ zFcCbuJyj!9!;iz0>Meye6}Fo zUPx_-$73F(E=;Atjb3E{Ur}5ejYDigH>FBb{(Q=w<6`~zGG+!=0^?Wmm(rulvd@+L zkm_<0Na7&!0l0wGbf1lBsKp`SB_MOBg+C*XFci+*;Ru%Bf%FQdSY!=i8Hi;F^{iM{i-=!*r2@iS z1Pd`S6Et78_;w%SY-N1RI7U;1QyDQt6ZV~eTP>Lc_mSHtcwb|IG&_H3httxmTj5fuOTOEZaatF`L5%_=n*$63UVh7Qn$# zq2v=B`kzwN!VFnu_^$i?RnLC+#HDT)tGXg?N^<&?!gmG4R`%4rDr%BFNi3!+exfP7 zy*Z=}F(o((Rz(s_ln|aLXRTtf#l=^IEtb6%UOJ3HjbT^sjML%)-OWW@p4$l1-_{0d zLx*K%@*c&>Na3@;T+O^hfMQTS$8~{`0e!%Wxt{Gu5n;jb@k8NrFQ5~8y@9Dz@Vapn zs@m;IENu|Ar$!Ug-tOj$4Fu6q*}#-0BAM%C=D;)U)%&rZdv|uu1_3H3?mKgl3?hkW zG6>Y-LCEM{F^S_))*_xkO9TSnWsxfIGCruv-VeIc#qSi+?$KUS-Mp)3AiJ!;|TteB%SLn@UMtrqPDzw`~Xns zIuCOEBpooEX3ewUs_9yRDN_>|!zV&eG}b9o8N%yDe!sWEAJ=0t8uaIw6dhP3*|KAa z7NN(I8LT^z@{kYC#3iE`V_!26^gAHTh{4+@pt#D$+T(*Wscj%Z5WUo9CEYum_9{`R zl;pP}2JR0<=F#PZ@lj;y5HJ!cgy+nk#$hGe##~62) z64!z1YhD*3fQYsu?l|}?SBcYSog!U(GKnofAdHaL`a{B z*i3v>m?3-czH&4iX#)U5$L|rmYWT}HnBs)0LfMKT&y0`ge@@ZMEAbqk4e1n2}X`d{W4reB2vu_~4 z=m#l{DdPDfE8Ax0|D3z?a<(%;+|3h#mKR!tG)5q49` zUMUqW;}X3!f~u;`G5U(90m6~NM+QSBLUn=4VuI^XBmnI)$Xse@H-zdI20i@;CK59l z$R|*VjD#-?0|ql~&_Jlq#ahuDSaI`w8|Nu`j3R#rW`c}h0B($qcZdY{*qHuJM9d89Z-YSC-X>gBC@#vF z?zTeKxF^`^3chKn=wQU-Vo#YGpg-jr7cpH9ci4p4`q?{`>GR(cLeAP79H6cJ$mF2 z9CFE;Npdlgemn-q_f+BtP&Kx@t<3{m!QK5Sp{0d>JT}C8usbouIr5C3tc7==;NauZ zrrnl-Tu|19p*6s}Sw`5vcfJ}XxnUMB4{fTlBgL~5BtBUtf=g-Q_ z$;_+fW%FH5b2S@tBm8=y@tq(C9!G#-3yaQ-3Dn1rV{9# zegURboK|wb;uvm36|UWvrf6=JytL(V8Gtc8cu8!Zq3|StD|~yn(@{LWkd}g)QG?|g zS^lbCbmIhCG&Uq2lD10^GtYrP1#XXF7?my&JsA2@6GN#f7aQo2y!ikoKjydp{ zSqq~inn3R(O+mYMOVjaQAKQF2E}FSomHf{7l3l7ITQ=q~Y;+N_R2c9;>$J+fYh+?)G|5M; zRr4KSF-m^;}orCG6lJD8@?iuJp-{Rgi9DS0zR@NKis|aQ1wzjEJJ45bJ zAN-tku{(>bRZEN0BIc}BE%|2RV!6Gyiu>1kW^79X%@Z|)>+%%rZyDPoMY@+1pL9q>(6Y#&Mkf(xUj>{F ztOePt<#Fp^&woI`c`qaigA_=hApkW%r>*JvNOg%Ngn|w`&;x>osVIUe&It4%g+T(* zon4D*d0bYQk(Dkh=qv|FOLOqF9KeG;9#6-kknn`ut7&fCK=kA5W*QOD3qozgcptgnT~)nx7tpScED7QJ8$iooLh=3 z+72P_>W59%D5j9YCM`%3D}(3YY|QvkwT(3c0iw96HC}>b-y_F0HVqtFGk7N{kw!VV zuP7e)JbJXWuCZz2PCE`9%q;VKDKHP-(3h)~#A`$2xS9bq19xm0$Z5yL25(Bko=`i) z7;xB{jTo*iuzN)${pz8Zn2-S%(DvA>5YQM@Av_9UWk=OEP0)r$l0aiSNyE?#>XMPQ zW8{?cF*Fgrvt_KsICvv_{K)aO#tL0xtT-7BF=AS>_>uWo-}#U0E_8JliX;c_gQp)> z`oKF-+7ez7Vt?~fyfkE$C{1GDqpOSY^o_~0&IjCD|@ zt5z&zp=yWg3*}o_F4W|m2M*#ZMKqy%G3x3kjB7491&AvTLQMbRiUlx-Yl1&QI1O{; zZ193!Y8=n8osHeiFkMq(x;)q?_uflrL!E>DxRdJ~-cxY+XnYrwL;qSGF$Nq_LX2=y zy1-z(^AWdO+L>wLo3)7d`@e z7brr9E1~>rY-#~+J{e9dPeEq@rs8J@D6gG{*6i3aIPCDqEm4b@_uW6Xf+p4ku3#0; zb3YItNQ2a9HkX&@I_G2|V2Up}!a7IX!YYvZ)PNWKV1jIgTB^?Xw8OhExomSa!CVyk zD~#ZKLp)@SZo(_1D>wpC1P~!-->n>h#a?YUGCXAC(or~e5dDE5Z`wX! zWz*0ZAe<|b{8f#CdaQ25!HHhRX2Dj;vfYY#DbXwH3QAWrkJ$OkRZe!Ezjc%9r>1Yw zs|p&}7*>dMyyzZ#f1vt9daH7O*bx3T9Y>ZEs9=^IU!)oLw0E^}(>i6?15?0n8SeUy zkg742CpLw@U6&8x=f=JqX8}6lhBgq`RYK$ZMFwsq>}wzjm{;1g;!+KD<{G=QZsv%0 z$UuNz+K0@f#k1^P@kqP}3C-tUi?%aZH61LFi+Z*qY;t)8d;i4wq8B0BShOX&yik$8 zc=r*j^g!q7`ykzpDUOw{gwx!WZO!C@otXTm@6qN6QXT3L6GvXYaki7yZUPxL7|2Re zdqj^F6|WlJooxeT=pL0$e3_My_VFN(Vlt%u9EOlWdGt|Cg1H;vvu#Je$h~266O&cp z1idd(q*ieA9&+SJMrH2rONx#AiS_nrNh0d;B?mM23UpF1W0+Fi-_k- z4*#8me4(pvr5{GLvnHgzm{>pp;~0k!LP&E-kk1Y8uxUF2YN#-Y^WtV;(ms2TWWH`p z<7*Jimd0KemL}C3rt%}E5W>M)B~a9EC=&y*le85ML_PJ&sw0Y;Dj3Oyn-mAm%}^r* z&P~!pu)>uw{JFHa)yhATQBXqv8tG-7(-bL&8oeeMc?85Q94=QiP;M+D*0M{&(6C&H za;>)@y@bi=oIEO;JKNhq`V9tG(;-4-rWqb?>1b&qH9b@S&|+92m{oXDdWwR$8lku| zi#70a1L-OSml4hz1gpJ^;)pvts;O5VQJY2zFL%OR(+eSik5u~bWTY?%H=Im6qav}{ zHQboiM9|}fh#}ALzq>q#gi>2$3Zgu)W-(@VW6k0wJsQ#R2~q&=aq)T7ddqTsQILni zCpNAWvXF439YqS~IeSxi6nlgr*gOVS@Lfm`TyCz1mr@3=B**q8$~oL(Rem7!E06?Z zvfG&c9YUV@kRV*0^;-?jA_$!cCNR}a4IKrPV zv5v#BJOSxJOwYs@M;Q{Ls`^|epPAm~F#Q%=FYGB5DAX@;zo31a?>zPe-`{aoZ$f$z z(`_b_@?2qk#f4)K)LkBLF=^z5^i2}oi>{+@;Cnb#^#8dA)ACmOKp&P}`gUP6`27V3 z4~8`4_4UFXG4=`Qe7qcDy|6L-%KRdMPRqb+*qK6Sj_#)DHu^Tbi!+6nkgS=QV#^Yt z5`FO{3*Fc;K1>ENT&!2!ac%s_9K^*KHqoJe;hzc;Gka4W6kt)lOdmweFd9=f9-ZvE zNH;At$tZo87{j9yU~477*2>?O;iPU52)TS|2advuX`nD3j@HAATO={hKANwcTgk+c zl)r<7i9<=Ym_V}^fu?ZdMm{#rRVmTN#JyyiMmU$914kHu1qPgrLvJh>OlWR^7ZKwt z`J>&E_DZOekw*(@*od|u0a`E*Bew)?!!8(*{POVr{SI59nC$pnLNav z2O5S{Q31+ckD*Q+HO3TucsTLIrgQ}@?mjo1%V4tCTK!tOWvFx-=M5RKbG3A}Ri4r- z0ACBD*p&P*J`Myz1Xm4+!|y7du`Va)zRP^_a`%dKhQJ>%lu=2vQOzM66UL#}txl=O9yT*!6mJo~YqRZW1D zwWpDyQPR3&KxoUF5Efunv(wU@bBKBe6vO`FgC{N|1Apv~$?cD>>C#)Phvizk+ab_J zo>%6eh;E7U9pVOn6U5WCyzmS>PD>%-a}>8O_9tm;fof^(%%Rn}Wg8h!O*s0WL}$n`w7in2?eY?l>O!@DV8+oHFeRn3zLRoI}(wN8&cq6IgQZAu$wQg_{_Sb7#A(ozq`$@# zn|2XWI^3=PVH&o&`bM=4ZUG)A2neFpW#PS_0#{4L<$m0xI&Zp#T7`Fn>ISk7D8P}i z#k^#zh=9Y)J%=>bsF8Dfiq4#y2;;SN`EgzrkKUQ0YE|td1XAciG>#d>7UC{HC1ue< z)OZcecYnlsPiPolKc=o`#{sM}55<6c+0kacv2nEbQu?mE=n+|%L4#{*Sch)Pn)lbm z%pP@Zu5Ve}`{oF$-?XwJ5CL%2j~<)MsXM~s3{HB6E=y6ouHEo5gP#hv;lwG`)l@I zp(q-Mn2tv+lprJw^ET~uwxU~5Agki2hsgoigKU3P)$>k)NR39P5P`CZN~zdLKiKy| z`U@uWrFoN1Z|iKWX5P9KWJjRURkF=? z^#MZ}?aXn|wksXT6?rZjQ6)vgDJJpM(y1ZKGW5!!TxQrjbT+o0gY+b(Bsc`>@d$nf zo(v)10ZNfA4%UWm?NOK2?)mbT2d;C(8bE6jxX)i6^;GWYcRu^m>)Vg}>H_PJ z+r4I8zs1AQ?n^kmXCOU}DL@5Y%e3rD!&MO^J?5pwX*T#&B8){S|AxlQ3}-@jM+YjS zNJ}hEYZ3j-x_38(z>&27yh}k~!*r|{@D~0F()pO;%QavRBs$OxeA3GYRmE;qJ0cb3 zF<tmr|MXc-b3w`0aI0X0uEL`T@Y1>g(-H-v{jrm@s^M&V1P~5wr?g@k z!%6-qg5!*Y>ty%PD1LY2dAl6ag_z<)FKi=C{0xCGqT|t`1&qk6IfQCrf0h@c_ychm zP$iLyVFRk|1~2z^aA(XVMLD7PqWrM^8a#2ogLDigUy;5PpwfmYhL{V$p)P&4n*}I_ z@y!&LgX4QZ=K%9S#zA6q-pENXqzZuW72v~OaY#5o#A<687FH(QMDPfvMq@h*bo35X~GW42$g2e2VPfmnqeP0 zJH!Z3MOi!3X`an|dyEdGKuBT<+QNz8@f19F%g znN`&gXK2hxmXVXAIU!&GC&D14T%^(^VS{(ma*+d0iyTK1<2X3AeS?O|=P&j+K%=dO zItPS(i^C;#0hdMNtcuo(fU@^mHOONd(79NnFy(l_p14nbz!6r1nld$j6_rEB`^O+q z1;((jcY!nz(|zHFMs)m!N#&9+e5^yj3X@ zt7v2mjOlzh2gD9s2|uqa{VGE%^rhSaSK>}c``_42{K@$4>229&4h-CKU@Fg|85p)J zyoW#I34R^Y^Oy`QPCFlbLa>o^$O$#jr+$FlLY+hxsCUSq;ox(ggqyI(xiVf?fVajk zvH$Ijc{%7<7u_}waZl1a^bQ`;4oEXFMMQC6^g=N=BzXmO>9a$PV|c+lp05uff$^;U zrtzYKNig%P%lD{Cl1qZL!uC?p==@m32{hX~GT9bT&>VjN@z(6i=>&{hE{EKSguF*E zLAkj!Jx@&0ALzNf9Ev z$8N!c`#B_lSE&!(fYt{Wav+_@3ps zs2f}5`9lkyfnt>uOcX-`4sfl2*JZT*H1$R-xqS9&z`$w%*-5ZLzy$|1e!X6*@o; zSUt9(vB@^f7m{e!+@C-;|76mY$g@+>8G$iOT;I~;p$+iNBE|Y8|#x;PyRZY?xSL+1K ztbw;I;Bml?D&i7FlLjI%XQZu`)569Pk1C~U{S4(DO)Sk_2cDhi{5U>!jM6!HeX}tnAL7oMixxu)bhd`V| zzL;W-!bL0LT8Al915`D}_@+!X@NMx3xoxZ%Tfm(bM{mm1fIID>Z~-XU>$(xm&+gSV zxc{mHvRCeO(MhZB_n(Ka@3qH65KyWTLkFZlhL{?Q$+&@p?|mpwCRIZa+&if@lfVL_ zJ2|A^1Cs}U{T40Y5D{51xmGw0y8>qyzq(7;RM*~jO6gXZsMrGRw zQ$*@cT9ix#EhIKmLCa>)KSbSi6o8^?auZZO6j&KaHj+FV1EP}%M34hEX?Ym49iJ%M z8WtrmD6KR5T#s#xA>PzEzrP(QTA?AnQRmQ3LRgZGayW z*qhaO4SbZ&Zh|x#QyAxrL=s)tVJ(?1?jDpPoI!w$j-aKC$WkFN{*hixNJoK3IIC^z^%OcnT(FO(> zDQ;U9#}@H>3MUmBXTS?cfT9L(wz#a+8vOG!i8G*$n2!wO4A=)lnv5ynW+{pkk1^J+ z3@5ie?0v{5PKZ>@%PY4*^UpIJ?QYjkzFAjTrF*pjm)Ib0%$jOqg4B*m7Q-6Y26Ux~eH{Wl;2DjH2#yw zn(jkc|LksAR zctFytVkf@94BLyVuQL=$xD$WgAR-!H=ZfPB^QYcAWyJ5Noc!vLt@ir(*iS~^_xHcI ztXsK7%Wo?7{^MCYzqreJuiVwT6wM-q;L*mD=I`Bj@zAt^>Aa)^#vqdpIOCJln;WlOke92G?+nx*`xB zxgVq?c*Fn&$a<@5DU2M*cwLioFChmn;-w)uCic{jJDd%5mFvvs3*fAf$rY+6sNY@P z!GZ|D7JFIkk+}IcL%If&pQhD-Xh1tf@bK2E-~j!!vRX0eJ03}02#vBhQ>Vi(zsD3H zvDIyKu_At{aJooPE5ow|@c1IeV6i`KBczI~dFyOk*^eN-g~_cw^5X_boY4RQ(0Myn zWiT0G5Q93P(ky$Z&C-C7?;wQ#6%O}PyqF^(?SaYHyv4kjuBbQI(#p#TD>w>|P!Q$kt#?OkzC=K#4{JV$~4K##-k(BDp8bK^of(-`@kU6t% z4!>-ODVSH_ZsP-7xH(+{`gIE_iZFM5t>~9b_-ng!bDVtXNH~F%b1S@Vp-ybZv5{V6 z{B}jyQ0T+Qi49wpTIxv1Uv>|T;)hObiW7~Y38mWbj~#%v1#cik8Bm-!(d*!s%P^G+ zpulN?eW}ubR4Dkl3707kX*MP|fvD5iqncFM4rJK*MhA2G#g*8!=-+wJcesCn_aVau zQht_wMimauTzsydbAnM>o+_GarDiVIgyob|KpgfKh;$YYsG1s)=RCrVIkp*kCFMTM zpZOOcA36b(8@vQ=9)G_A7c!WpAqLxEya;T~+qru3&Muli?g{c?(EROiV7TG|>Ho*x zd%($cm1pB~XI7F6rY3xZkN`pXAZ@UOZS2GpX|=M~R zpZC1|yr&xCh5idQjYy_Et_xO`X>n?607O64mJ6%~5l1#^$(M}etGJ52|0CdAgmH-q z8cH&jt* z$0DGy@MC8{#>(g#7-O-`ZoLyGsaBRHPIoE0ef=xtDx6oGDU@-?I<@JJ)y`r>^EvDw z#xb0++0bgPqaRvbE*LQ7En`U8ZlrYWBS6Mm2n7b(F!G2f%&*~D4}8an^|(;}Drnvo z)UKHVDhyv!_GYshO6?OQMxO)xIYDKg8(sH=YB=BOQ{1X0)hmv8-5Uts7e6 zyN@}LFLH(@-8MTfxh&9%l0u6m+Rk&^?8e_;KqywlRQ|6E5$lkqR@S~ERL!9B1Dcj9v1I&j|WaSj|#x~gF0v={;N+Qk6)J)0w9BG|tqj2NMcs`534 zTLyDHrUeHiJb%RpBzplU9oJVd$;Mv+@UTPUQ)44_?X(e$lAd}UWmKj;Sw)eM~s&= zy^k+o+h{{Oxpd(A^>_x!VC9n+ee6`QsmA9$q8hrWT`f}+Yklch)9PY*T(;QLFa?e5 z-HHtR5Tg2R4Dl<3(6{7{Xb)c<-wb1>8A{ljD1ykex@&D|DWZ_Z!xAwBo$|aeg=0k> zz|-_=f6qO@y)%hC{OZl67#l@N%aYuPq7x8#=!lpdGTb^P$}gfUJ%8{;=6$eG8VVl-noc^r>h4<)W@ z;K>GVCa;zw8%FKn#R6aMgY~K%>{ohmHIm{jEp~+6m6T`acG^_7nnsKy&wdkqeu?nD zipMkKX-VgBvSa?LoXziXeIEvxCkRv0Sm_@j?Rqx$?4;yDM!PL^lKdjz&V)}Su7kUf zYx;b6W6HXr^&sk7B6HFBkoO#Q{*?4~!+fiEs6Bv0gNhByL0zRPh}S>iS1vdU%;R3% z3#yY0xn3w{hI10{;V{FYh_26@&yH5vC*0{ZxYKJ7ETFl1|F;ZqPx8Rppxs9W^Cids z>Bbl1H*qI_A3uDZ@PVY_`3X$>x`PQv&6YYLj@8C8LdAwP7fgru11{o~fE7ZqTot|} zojPBNEs7hT8$Ha@I-)= z`M3mtR+YBO_=`~_59RJcCzi(!KUExY5^j@zT^#lEE*6V;4CzYlv5bT{`dp8QKcW-d zgu&fNh`G|N^a;{wqNq~LEp?hW{g}x%zxC2FTJPfq85yCvbXVvg&WY=ygSc^5z#R#r zA}Pk4$#dhHDS(4}+P&pYpJDG4=9srF(36)`atE8~+b~RTUEQIE^rR$T9gjeGyh_fn zRfCn%>D*J43uKu>>GeZep7U$~>YueDFl5QXHK2~4*Q`%+Crhj2hKe%Q2D@u^A=A;i z_JlGtvvGHFBpeU*l>I2AsW_B>R4OcZ5ZWg+0p^iR)sm5D@hNwC!zH(Q;uC-FjO(88 zzrX(PQ-65fv+ntp)@T3v@q_QZ`_8ZW{0rtDj}_rl_O+`3Jwox)%biI^W3{%f8X0DFGsJx!`*?PnLyA?7OGKYRIfFvvWYSEs1p~l zR*H2Mz0pvXNhKm^@4(_A9=^8CGf!s}Ehp)#yiYp2*yp0_ul|D{Z+Y0OKJ|#3@fVk1 zBkM;2u=3TrBhe@}>)+ohE8ltcmRKc{K{-lVs|*WnU+FEk20(EoMzV%9EhSyK%vH=% zVbk8mbPHx$#0*c7gRjTnaxc|s1?F}wwbx*5s+mz`fs@Y$+~rbZ$BOpxK3T5}t02+< z;~qm&#&8;@>WwE8>LbFec`14XEklZ(%H%9#GnQmJuR)JUYG1p)IHKf=%neY~sGXFn zBq^pVZP_aaw@SOu7*b=%2Y%9(M-J=8QZk)H0-!aRcYfV zMZ^5$>5)g`2V4=YUE!UX3=LD!WahDE6qhd!` zEpxjznY08$%FT2aRu=hq02{>j2OQfafLTK5h)LZ#YHZ!^3SSFfv~dBbB%gEeljH|a z{3QPJGPImr445XAltT=%v(@_eR;iKB@VcihO0>eh{ny&FJg*L#jXrgbV?5HqDHK1m zrOj8#9`2UOx?GSH$7Vs|LMEPX-zNYD&t&QQ?$t{b!>(DeU(I%)>aiPq%(|R3@WX!) zRMutPKzQuH&gN921D#`b=gPv7x#Rsods!)UY%>wbyFx3dGZj~`B+rwKB}aKWh=7Ie z0wnR57}>#=x(o?SpyONri~T1xTE`HFVV}ayVr2StgfOFld$hKC4@{$cx@VpOH1s`f zR*Pywa)iMrwXPzFG4XTz=I&IwWUF}mE@I=Y8`DIYo<3Gcdg8= zEgas{T3m!I;Ud%4L%t&Ps#?ENc5ku8UM?KU4|eVO+!a4s%Oo~@njg~Kg`FE2mG z`}du#g)sTHyXx-vpYK&w5A|K+{T&8ko|9BdmYm5g?gOBr)sA?c!q{)?y@o9mdW&0)XnDatKYF8nNbvaU9ttqq_>Vz%ez<@p(cuEqVmTb$U6+ zeA&=9hY4|OZHNI3ybkNI!KjK;>2TCi%uFfH4ic5)R!{(&hY^nJ42sdY69{Lev3u%$ zfOio_-~hEdc*oIIBpnl=mu*Kx-aLIVWl}d7o)GF}Dd`&S`xo&qpP5D23Ds=Nv@%_L z6NodtGOA)pt72(EeLSP_s0#Y{GRF{Pvnip{WK&ii$n4En7U?0X6hsYVE*8(a?gqsD zbWhWZ;CzbBcDvnSyOtYiJ6kk!7Sfn4|&mWW*M_9eAIJN$yiBqEpNwxpt z5-y}~Z3^7X>%N^h3HJ&=QR4-69Jh?D)ghZZ)=xj24qOD=(VTbdj zxK8FWDyc1PEIC<5Q?)V43%D`w2E2tJqs-`0lHN`hP^kcyY7@(PVU%9!(8LmnDvhO7 zmmtKjNu?wK&kB;qgj$%4CLS0Y>1)tlY7csNXR|qvpXTvX>D-`&w?gX$%VjK0a^l1J z(`uEy%9?KAdwI|w4nY3h+GU==k)askcG2`&)yAHev|Y*@R^LFaFA{FDww@?~kh^t; zz__tRCm_7nk;ZLQlO{&G?=oa9U6=3jSiAyo4Z&MgAuS!mw)DEKCFdzKQU}(qk4hqJ z2-`5f&Jg;UPq`*;)-5AJyW)}|>!lqs#X^PJs^m4;s`@%?(@zLd&$Cdlo$Y?Vb*QZ# zJTQbzJpd4%xY#P8bZX_9KGF|9vUX3A4%ZRwo5D)3l;F7j)5OqevCabTmw&EO4;tG2qeHMHQl| z+Qta*C3UWXp+A#3{I&Wd=~%U!t}?5X{`@-Tw~-La7yfC=cS`*~M}js17n0Kf@SrA* zJfhuh=H)A!*AD$gxX`IDZnXuQT_3fx$&ABr1QGqLcAD2=&NE>~P0mV5MDo0>tZ9Dv znQ5DM&G2U(KZ&Zh=lOsWp!R0Mo2{Txprk?Qagvgj6h7*2tkSka34K#h)=G3U$G-+( z^wqL=mNHasWe~aQKSt){tB6s?AMf>EMi{9jlO!ZqfclsO&ZG7I46GSmf#g%uTI{&qbkwHhrgO`45*T7>HjE^)Xm8K4H*EW1i_*O^Bbpp9v)zL$ z6>N1Od$NeQMMtsOmnH4NX#8vilBgsm{|vIJ(UZxOB#L2i7yjHOUa)+3?6NYf^qV{T zq#E)iVj%L$ixFnmj=8jiJnVE31BCrDd3YtB!WJ5_^kDgde@4Bp$Q}#hG%%QP^UIdu zyko=)V1&sLGB_rey%Rxp(>rI1I9n0Jh)PotR0ol8MG`4rbk1BF8fh}m(j8KSR8T_z zwt68ba6_!He|KTQ6_)klY+>lpg3T)iI zDvnsMtDwy0<#FEdaKcVG>aPPCYVQTSgYec;@|=k{O|M9n!CACkFL%^T>rS&^GCCEh z9BS|v&#(AF&f*WpqSH#z4R+Apjz#Tj_jHYvBm|6&6_w zB3&$!ile(TI4&_MaWBn#-5vJz1KXDEnj(*l=vM2OoWqsd0yvLQ@tm`bdS%KpzO`@N zODwgU7qVjK<>;zoSnbMCu%{km@P)~hyq);`D!@w#RgWv`U@b-J&OdqSLDEOpJy3Gw ztB@;n^?HnU>i&TH5<)$Tr*F^2({r27@0|~u@_-h?f!s+y<^A}MJDzxXcUwg z<}w$7eec|sIXt^FH@7M#of`sWisQTj8J3|kb{9IUt)*}(R#Kl^JMbuIxqEc-FrJ9e zg6*gaSb(gBr!O&L9;GtVo>d7G!cj^ISLKrs$5uW;5sSSLZ)@0Sns@AE zX>^f(%0y*^VxQfMJTxrWzqnhng4`M|sOUd7ZQO?RR(52^c@*Y&VsOhMY|EexUf6k! z3cl|%!U=@G*;<4A2{Xr;MD8<(A-5cryakFJKe3AeoejsWaL(P#qpUJZLP9eoV=rbdcof1@c3wKqRL=caXOfL<~VR zf-8U6SOZ;vZcBCjz$s@hGe{%)E`x(6Q7uZ#Afp-<$_Ih!)Y~5=D&Gfi4}!P~J(gnx zhs|2OzHNjGd4fV{%y39QX+w8FY9ArALI80CYFlg23T@A}r9B6a1-GVd@a{dyrSLsl zXN;~v(_^UGOOs%%yJ0g=t+>T;$psAGZ6lCxbVtk_TA2Ma(t(h16)wf~tHAuK^97yX z!^XjZh}D0Cbl7;l!wnRK(bAj7nW-^wMy5Q!b&d>?(UOs-q}UZH6AUfnvhZ$GN(OF& z`L8Vu5QmIesa%5r`m<5PvQdmB#q<4m{B(@q9Bq#SfJ~4=fQ%@c2Fljz4n=b40E*&2 zV@`3%Nu))#h40DS4g^Nl5Exmz=Fi7w+*ZHbvXJKWMZ*)};tUM5DQRSj@^vF~SjCRv zUF%h2@wDy*m=c=Cc#`T>)5=QYxxY}CDQV>4aHci6ITZc1`awq;0~6U@QiO0$!J>F# z;{gjzlY*Gm%8Cw8{hQDC*8SZxw*2E|55LX3pYZSRxbyYz`s#OntM!fDfAiHhee?gk z?mj=d`&ficwq*|wPsZqyn%P2yX-GYEroYE=1Pnm_Ea9D2 zi;v)}g!ZL}LI>TjtrHM{Jp2INV25ih3+foUW5e*ihH2WE{4vGZb(24%q9g006cezu zn7()A%JA+39FmLH#suMgvBSeJ=Isg%Z`{^i=#UsUFALD5j&hSM_Ws4f^pNWg~M%3IBly|^zgSmv4IaIt^O1a+{Iy2Gy&J1Llj)%k__Z9n`B&K0xB+m{4ONkERyw7A^q znlKF>ITh6^bYI`SBH30Mca;O&R;Nn8Z~s_+z=9Y>%P#yLt+UMtObHj^&j24I+z^;C zw2I)V#r3e9QEs%^JYv?M{xjP(juNh0YKo65U&@wFlXtufV$@QL0Gi~-*RyMn1<*7- z2z?uzSX&buzN|yVX%C`DQn4wkP}Y*X+(?-=vX!2|LA(|4Izr4U>@q9}1Wr(JDTYyZ zq@$>OmA30N=$j;rJpu#e_fC$SCXZD@L0|!HXd{(uDn)1KKSluDZ*u_jQ9O+>7P4ED zOfuGq!$A1GkRy8>0Etp-N2SF;vd+aU(Adsm3jq<~GL3*+PvkJ333w7=*wqh|k+0}g zn_2Ikask;UtzGFh#eJPRgVN@ogFz(_ToMQ_$$SOGWc|j-ibA1Jr0TI7J)Y1xU6F%0 zk<`CrTnR&+E+veO(or+YY3*Qoj1ZBnbstj=vnyn z$pp`W=nJwb4b__!gazpqOI#e(ZTK5r|H%LPx3~Svr@s2nXz96_UxI+40-GM;9>?#0$#Lf$0feW_~(~`4@7kq?=q4kIILmfR6#5ITzn%+qZVUrm^t8U&V-Cg5lYe`VNhYNC>D>+fYGp8e8-+ z^mjC`P8pBr$a39ygyhsRgv7>hfYj&+4yPiwDK#VRY^^H#QOdFF5-TsBBqf^pksl>| zRSpitsh5uWkd*ol22Pzz5K~Yf#dK%^JJ?!i_nTXJvrr7ZDDHhTJZ8utCL+<}i{9_G z)(4NG2urDYE1Y=~)~Q{kD*VYx_fU0~LH{W^(sYS5HDSH;YRQiE~wkAtY%P z33|T(zdVTG(bHTKF`e(0)&r>R;OMsj&L@N+8^P%1;)}?YZIi`8w>Hbho(Omh!NE?C z#_U+>9twjLoY*TLn^=60zVzXsWvtC~FpQY19R@s-Aa=SUgu`l^t9_^-Us7o^m)Rko zZg>%)=;7@m#H96z7NAss=Qu_~PaRA1^aCp^OYK%y>l3wCa-8M><;$2JzM5!f4u)U7 z+`5F32lhUbV3BIACI_g4Us{Cf>b}}0t;oqK=&f}Jo#l2@=Q`t`X>a_a%O&_K;PZrc zTQM(&Q{uqUcA1uJ7Ulr*+nDJmm-bV}VN)3S~DfG%ByUAHaF zP6n?XK#^!06A&wf?eIl+vrANI9EkRr>$XDx*eXiPsp8|1_O*=itXpd%xm6Pa=w8Uz1$ii@H>*Q)U#k=1l$h-?>%9K3@f@S?x zUdXt|B&`@)ompQ?ZuM%wb%fy-T9>Ul{u4h9U#?o=)BFaffwQQwZ!U}a}Bm4 zIR(JYtd-(en(=_(oA^i6mQT5Iv}`6PPDaXnxg-uPMlCd*7D@+*%GAmn;eGo@qY-KX z$r;2=`kbjk9v-SCU9fv@{(fg|I@5}{wIp9~c6Llx68X8WIzI2IJsCG` z!~7u%`P=d99};3uxp*fGGjQB1En_f`aZ3qh&rksQb{ckk+w8D8ktj8;A7S0>#@)xHV%62V)%T$UTqcNp1MkzN9t3K}>W zxqL?CK^z^v?{U8G0Wc!)t+6NDJgLAq=h8b|CFmR4u9u?ZrfsKD#|6M~82djO<#!8b zK##>)gz)Nb#%nPZmYcCxzrT|mTypENm>Q0)w{oq8;Xf_J26y953nsL~_QgLOky>8C8At9|>O z6CTqOuCc1bJjZ8kvrgq=@{l}$2tgYN!!cecmaRYoaF9#V6m8zxI<#egbgBo|2JPuq zuh+5u&7zC8;tHjIAym3eEP6Ht5JtuC1`M-~J(g?;_o*bMXyavV-5A!(QdJ!#-KhEd z_K$eS?8M7eSk}tMhe|6CbH~2@m1>AYIhs_(+3bJR<+s20J=%Y>@C#FS_~lj?u{`y& zNg&Px;BsWLNf0k)Baoyx{pPgIj&l-H4SMV_OGNz<>5!+o7d{!OGn-CByLCqvgOUgG z=)DE-T7pAaVq}Tub;DS6wNyC7iBe{(F_9`7`xxGH_vK%QqNj|>$b2d9aCnT3l_H1G z!BR@0F5^CTcntTOVO4BsXKU5@m+IWd8KGk@P8+ASIzQB^ltE0#QN4pl|6c+BNDw*{ zu(ob{&|he+wwt@s9~e;LB;H$pLvX!HSQXOI%x*bbB`1?3?6oXK)UJYq^Z7qY@k8G4BNVplbOyT15#mzPQ?vOFxKJC77`GxUYwFJ_)f9tbU( zQb3kCnl~-^2@pVT;=clazG4JQOG<_uVs5^*EV-3iH9DHx(RPJcS7bNn?9Ig4dB6@r zB`c2O)s|s<^DW_5sMML`x<+S>F?_F;QgaGPTRdJnXPmsF%9w8$<>4} z73C)40GK!g9w{9q(bvfnw;*}qN>AS<>>fh+$4360;QzKxf3-D0&IA+wIOWMMf|WLw zqRq?g%ZGaEmYS_x^vbKOPN~6ZN$BH~nJULx^oB|Kfz8OO0RiwO&l>?pH>7qYJsqM((BW1Y*NK%@uE1)% zBRFJedQ1gNV5XC59I|9$)G4QE>1f;JOW5N2A^?|B>kpgs*;?;SyCmiD@GMqGuaUfx zXcLnQMht)vM-UK)E7wOm3wR(|ew{2q^KN>_1}VFe;>t-N_P*vUgX(ty}V+cP{c@eAavG)dl*`l=yRNkT9xFEOZm0rj7r>K|WT#+&Dz1x53xms47U z(`{(y%M0zLP8$q+=faHqFg?9xv)9lEMLHVVP!Dmw2Uf0Z?p1$!O^71lwUAu{A&o|F z+mi~oA1>E*fAuiZ&-a^i>d(z*pX2o&KJZnziaY1M+Tzjl#-3NZ+rIMf3XKMg)3=*2 zl5CWNHbW&U9GZijL+P7j6?NmVIA*XIErj-g;VBmqJKuCqA~T(iU=^?###$Po{=U*qil!iaP<()u$h}N zV&WO^T{Ns>a`9?^3gqouq|+usa)Rs=&B~W}0^BhEjVg86+;4yLj)&fipCv-l*xV~I zF?L?haw;+?ZMp1^&8p*(N~Ku%Fg81pSS8xrZT47Ca*gm&txITOlnco(sVcdvYBgq$ ztzQnpG>d)48s0FOQfZ=%&){KgkvR4uE%#zp4(fN7a4dco@#iUASe_tsQCpfm5CZ zY#|iz>kjOOy&PjBs;Mt|`zafqfgg9V#mo2uq42JtW7~(IjH~o8RymjIrw>EHLnGeD zmuPF>05H4!7h`YISquXK+-M>ftu?q&3VULit|HBUBC*(8V9K$>v4QJX0*wTkfX&{rzHy4MghSB1B$tvnq&<)ORS!}Hi7-jbIz;A2HD4Obd zJbk&^nbGW}-NhBQXQosjk7w&aE2OPI69!e>S6W9HT>caxx*qD`5$T;P-42XLTw?5y z+!1^PeuCIuyIiqbU0*afLqCL-rB1WFQ$OEZ>km@T-XI7DUOYkP;eP)e&O`0XSlquR zoB&EQdEQ%*dSYJuzRrUWPmH7meVCU!GK#u*L$`$&WX&PD5IP*}nrRUH2wZK-=UdT^ zao~@(@aW%Sa83&(VCS4>M=YL_Fi*Cn9j$}yy=&brNkYK|2&ae0(x|mg=!vNPJ%Akb z8%k!Z$X<3YEv7OuIaZuN)hpE>Po0o10R{~=KhMx$1jrE&|}kuOm;?9mz%fk(R} zYcJMP3yvjn?qGwH3=%r z37OFx)0QV8Lj8~kbO7*B!g!Qa!aR!Xd4|7>E!+kpOx?-}VYy|Q%@S(g)R`P2iroTu zC!wtACr|v*1SR$CpgH;KlOR%sw>;U+hcJ!$HGt<5N~uV!c1k5Pdqqk%j#;75m|v1Q zmMgY-1oGr$jTBo4Wbgi<)gAP)q^I6sRY@C0t@KXqj=0tqp|)w2N$9-J-a+7ofP#k% zoAatZBzW}~+2!%P^2(P`&VEuh@^Auy)z*F(`*4@G1B<#}fBA!a=y>@P;W0jYK0 zSdIHM{>@$%RebZzcrOd>(72t`YY(7f&y0`gn09Cf>=6h9)gh=kj)B>uW{bHcezulfD|2fLhxfD=7u}rfIq%2r zoj%)ZX4uYd-|FmaSUAVL2+?|D8J`PK%Zwy^fn0cU`kHzA0=eF-rKR?v){+csu5(q} ztl8u&=HWckzE_ne&0WNP&LU$8%+$D7(VgGAcJN@k*Isnicp?}FV?H&S$(=;DmNU`4 z)0@4CMi)*Io!uTbz1$-@TU(1+^o^3d>E7|x!Ajr&9qt}9@eV2&Y3nq03NsUd&r>4J ze#?RCH#szHQ@CBx85>lwD?~1--vW|!WL}r~M=5*{C>@%EGUN|nEi^PGcLm&$;7N(T zJqsp8Mpq&_ePONF860n72_z%37_y8U54p-U2}&DsEO+gg69;L&%2*J%xD!S=WL%SV zkj*OJf(lB!aAoC)mu*vpT4d+r%)@)|Ik`KQsCG5raRf(F@ND16Fxbm^?AQ^j903KM z87Xf>6z7^)v{m%Z?->}*6s*NlxJ^9u!m+I*r~fofKyefETxtPo_o|w;hS|YA9FJPO zBKD+>o8rwYgZFsNZx+&^G29F@Q zB^Ee6zF*cQP}1UWI?{t0>Pjf*9I>-at)p_m&s$MFSFPOg&yu4K?4Jb}*W4`#>h0TK za`TwXWu*_Nu34~xkl$>Vshgu5P6jKd*Qb(~B>C$H-11UTCT0^zE&;&nn#{`H4dYxF zZ`;0k>v6>HUeHE@Ta&*gYD?O^Ho%K{86h|-HsuJ+!}u@;WF!^xpQ-SYXUbT&!9IFa z+;duMO)q#xyRbEE7uN?DVRiEzFhJyn;g?*7m976f;0J`TgM67l#B0_+BPt=K(uW<7 zQVPSkrgT(?^fp1%xp;c+?72<0s@cLY7B;Qz%DZ;Q%Xj98NT#zKY18e7Vs*MNVW@2W zq&DSsQ&tX(uJoepXTQ03cF)YtZJW+HbDR7{6nE2|fyiZ6I2xOy+eRplYBh?qx+DWQ zRMAkT^^l1^5NverngFxvBg@i~h{Gcf>24_P+Dw{McDL@Or$ty|aV}pY~#^2x=b3H95l*6@2w)v3+3eP;(pqU!}LS z7aeZPxb<1QdL#3d4(!d`)SfhV90}f!8T*7MCHO)f_Kelctw>|UKSuT zt}RPTnY9vzoGEn}N><-oUDm5g)yoq;{DEZm#;g|Y8xTLaR28ZtBR+$x^wx@#*^|#o z_Aa5($Az(GW_c+VI2V0{%V{Cg@5XMELOo7O*~tSTRW_wex%f(N)XUCW8KS3T zs-|7Y!W3ixvLp6x^>N@r1Tw99g>Ik-lPQpPt4GJ9hEw}K(r}|zmu0D}s%V$TE<84+ zf=9vljm(2e8*aDn%K!ZK@?9VEoOk`&U4LWu5B}yicK^$DQxE&|%}am!A?8V=T7Am- zfU^jBoXjz}Pa~d+k0K+SO+8&p+a;nl#Y$1TSD0kLUWCDwdzIA-q(GjXVM2@4SZQo4 zE!^&JBJ+lN;u#^K-G$C-Ye^)3Z{D_D6G{Xj!QL$jB@kO9?@Eqbt&Q}6$DrF?Ml?l| zp{O^k2kk@coLdEH%>AB=XRnyvyF&~|b5JjNFE7$3o15vbEmIR{FGdO>!^!T20n#I5 zO}mG}La9Y~rDrX^pebimc~{ot&O+W|Y)s$T4o!G^o$e5Y zYwz~y`)xk=OpV6|eM3Pk>~?N&Jbk_<7g5e^_F15bF3vi8(|J-lR8n-a=Qa1NEOi#- zA{i2~lR<{7>MlJ_o?uVdq(=kHnc>v>;eqrDhgm-&%dc>9VP%nlNnxH(nH0+?%@j!4 zZY@Vn3out_?+N!x8bUsh{_)HSN*v3kCPKAa9-YDbt7*Dn49_w)P>p zPre)KW~7l&nUnNDSKyT}o2(E!ls*?0>L_M~l*)z&(%Xykcp59RmeP7!lyoxW5*Ck~ zVmbRQE#-}Iw%=cC_d?CfLl907WJ~##!7R=wzz-9^FRakpA2WNs^TUuB)KVRfUARUO zF21whLY(1ku&Pqnwq2`$2^B3YCeHH0til~l#~_sFqJ`E)3+)TrO9)I(_3V(KcneDc zr0k}7Ejt`HrIkF*;X2rfnG4VMoP_GH*#@-g&75v!wX{A|EfvJ_#-;7Qvv9wJG2XSm z0Mlnrve^NC~L(^57gfF>XIaWGHwtwB41ICY?tuR1>>JidFhkqRLn8 z!2FgRW32Gk{8Gzl;7D_4|4;#$GRh4*oq%muQVivfD7yl|#0!Lt0;62I6IXL54gwxd zs6=vP!Lwnq6c@EOvtN-qzPA!{4@KX20+C??Y>;+28c#DulrGjQIfCUL_GAR;x5_ID z^$cp1i)w1q(*N_xhz5j&#%~hx)DVY~lq(P6{UNf($VOzP|5j5}1v9c(eUM@K`B&)r4O(WQV2iaS;}S)2RM zKgH>h*Gh1V66ll3=8`&3z?o55ee24w=8`Nl=w+zx`qN?Q4ii5+cAs{8 zn})#8?_Dewq)bsaQsBpou+vn4z}V##ulM4IcMxLt|9l}_6wMJtd`A@kq0%=|q-_W~ z>i2R?)QkXw=J!EtM;&&SI_xaKNn<{+Cx~NCKIlM zCe%4hr2;9r_3#V*MnF{`-sqZ}MjO)X;Vfcg&Fj?OKJxx{rNTd1gA3KCORUAdAUV(de$VrKK=hEVB^Pa^(WU4Wzv4$9`s7 zlCp&(63;_==_j(4@T+4}EcT%E+QI-=1!HaxN~TWMwZ1U;j5JnErDmo{q#~PgENy=U z@?3bo%%kU9bCSJ>)Qna7IJB6hMLC}0N>p;vqIc2ip5w$-RwTJN`lm;uYq=7Rlke*849+-aoupQ7AZzXdD~*W~N(98rkpk~DIx&l&*#*60=YcpCH_-SuFFWUT97xa z7y%}h#f6M9Q$4Taekc|p?(J|>q_^#z_R`|aQhOOMA4P;mSE3(JWe7cnGJJI4L@$QX zcv48B+-&6Ktw^;9wj6>g$#oZ6YYGCw?o_hl;joJpJXARDa1Q zSHAw@C>BMCCE5QOu_agf>3BJN|$1o)(x)g=XLSJ zNmc6u_C3cVyN#3T@_-#4rpNDlm~Z`q09?na-&96yVyz8hiiVZk+l8L(v0T;VvO!c7 zoyWS*czVf<6RzxPV?{yfjXT8IN?0}XJsPEMI%;WKx#kOGZf8t38JLVm$00bCDV3W` zort6z!=0~RGyW)#?gfAc5vt#_M=kH$f%Y0N2fUat#L`ET&(a00<<^oljhd#+(Q_1l5{%}W9 zC?p7KVnLUh=ZeU*K@QnkRoUOk0eP{~egNjSSD_Vtj(0**F*m z2J-4S^Bu-uO(U7&`CLdBf=fv86RbKvMuyiv26#UqADzL2R4kQ4D79F~HrD^Qq?0Fs zuALh85g`wHISaLuKFERL4!QP(>(p!Lp!d{E zafc(>p2&pWzZl1nRU`8fM~J|YuWp+7)dDkcUgIjcM1k2ms3a*0#OT_`6ICUHyvNhE z$Ev-#U~-W#weo1U3wnrA7<@DL1(=KB2nZs^r~myN;K2R+c1J z$2PnR%N#CTP%NpuN_+%AAfzW*$hFbNL@3s8R5#QH&FQ}Yu2BNi*XgT^itAr)g9EI0 zpUvwwUt|mP+k@sj|81^4D5D-fWeH{X?Z3vhAhm7yL1~FHS>=hq2B=%0UOwPb{sv{b z>+`M*_n=-<*s3n@Ku?fs0qA6E0-{WTRFY0o_(2vmU!KF83BXi!}ncI7k9^0j-Kk~ zCYY~~%Sk6TEGrva6SYcVBuOZuSo4qYhv`1{|j3=uEmg9~|`P{>p-Jt1sh;$%CVLxf+4fsf(p>E*UmcLc7D ztrnX>Z7+UeCY_7IuCp9lX|a+d(DaR(@+IEW9<|GPJl+g=4WXQ#ri4o;#9kW4|LP)# zX_IR-2Fa;eT~kZ@dOOGcb->>eawAw=qDA+e=oh3S8O11Vu~HtTp_)+%!dQWbeTTFC zC&0G}UZhtk4abP>TF2p>C!vA}oy(ZYRW{r*O2oCKlDW0b+o=D-nfC$EscT2V^W&lZ zPCO0Vv03U=?x-Z6Hu`1FF=1EwJBGfKKLWgs5C#BveGkbDZ=}I+3O?bmBT;V;M9b^k z^|!VR`dGb2C@iOwbl)PdPaa$!n6A^}Dkpzv=}Z4PCpUiMwP(<5xlKZQVQF ztO2joO(FZi)EfyCu)3iC+HK3ZtGt!*3H8!SYq8yH_E*+mjpajW3rFz8*PQ%1l8dT< z-j3(AtS&O!0NG)=^9oF8Rw7Paw7x^M`lzfRFB)xz?ciVYQgM|u1yn_Hn_o^w`MN>nzL z;0iBGsr=pOI*Hs{VM(3J8O8X$8AERTCE$~UJioBxQDstN=A@?3#^(gm-0x}H&pX}{ z2nJ3%Vx90gtz!izo#;DHQ8H=gqqR%EL=d?;CT2}(o9_gKw^8KZuV6B5$@}aiQx0XO zoVnUb4p~^eppaoQ?=yr~qwJWOJ{vm{tY~N}2Oo* zm%2TjgXu6_Ub7W>NzsJ@cxF{QiO}01P31MCa;t|GymK2S->+bE&C_lSk_QWk^QmsI zdQ;0^3GaytIoh?x=SYuk2E3h+dpkK0r%g5|6+oMm)O+jY9G0eaN8?7ohQ6#pF&ezx zi?#g#C-D&g5){;K@z`3_W?}5X>9r}#Q8VVeXbX||G%u$xIr<%b~%wuVI?W0{~|eDpE<#wO*NSk8d~85m*zkb(A3WZd?g@fQ>8R3Si;3 z5?PJ{x&%+cj&#BmhkP+0 zm(gUU`w^K(sQ;$iNu!0(-@L}NoFqjd!vG%t9FlK~A~}I&mGymf;A@S)$BD1=X5M=UC6(~nhH^J!a}zcMmH_uJbSTf5 zqGe&cbfxg?ih}gGAqP5vXKwxoy-<3QB5~Gf40SdogszRChmx0&owO597?*B`VPKBj zZWB{bu-17g@?~;1VazZ2MLY{lq1djIRD1-OTzdxKiG(o>9-DbKlF_AER!_g*CqLZ< zKzg^vcJJz8RGpabbq*n^RD03r6@9kW71&KxA4;RQhU)T z?HI&u#GmMOqU+6?2YGUGbLQTWjlOs{G^ny{59tlu@Qo~yDZOdrjnFJbYTXlGqwu_; zRRgPBxoTSukYy|kOwXgb!^@%C?DWd=>I$L>+or>kak<#-qr{KJz!AT>dhnKrL*9}a zqym))Um|SG;aDXf2Ozyt^1;#hv7D<&5F^Al`=aoN^3=ABupi<1=J*Ij^27$q(TCN= zK-b+6XpU0f^|gsc9O=S&1~!zC>`2mLxGaE2dfWT$K``a|s>-xP&l?law}W z{&+Zh*b2b&Hnrazrd?1Ilc%-$cCcw9{eiFKl*pst;FZaBFwBqT)IlHdJPJ-Z({{d$ zg>1?RU^F`JpcTQOyqi@@*CA>y_V6UNewgdecx0MEyJ8$1y5$R zvb2Qz(}J>y~3d}y@JKMnh83hs*+C3w_yKTR8hhO z(+?mu- zwS{vI;`=mWjpa>>?3j$-F)kD>hf^$)0p0VWq=7hM4h*dtV)y{B5NZ3A2%=zgR%9G@ zR6NZvq&MDCQES{9tPPvU-gc`GPteX*|41lQJCrFTI^l3NhUT!z(T!jsrl+G4?sAb6 z@&*3hxbp0;9)Irl-*NME&bck@FQ=Rh!J&2-@JND;*wcxx9rCK6f$*X0g zbl4}CTir#L+O+rfufw0q?C=`^Ms$5K>R|GuSuH2Kd2dh~;p;ZdjN{-iath0%Se1L~ zWrW?RZ-;}{z8#JaAMdFruLSVc+O=Z{wdb(4hNRjqROdyg)!F|k+@8!3qLXewn5-22 zI&9WDWcy!tBOy=3a7@Or@Kf&7&xd@v;OLJpA(vFkL&?gHO2`*4H-zNG7NYsU6zq>I zK2{=(VK9%3humYfYc8{dQ*%hOj=0R*(Go&qxFW(cDFISuBqy0Z++H}+?&Wn5pv;-9 zK<$D=R3er`Z1GstNtEge#S+cog5aZ2`;rABwgjR~xR~Bt9d27Bh`4fD5jM@YdWYHr zN7^o&U@+KQqufzT&(j4;NGxSU zkaTR4K;lpF3$ML=WDM!z{%M1F@J2kPTACA4!^nVHOa5GVKa!5C(Y*-iDE@+*co6V# zLLSPvMAgdYY4uuCr0OUNvwf*`sGpWUg6{0)`q1-k=6_&iWzgJ%1d&wUFWtL?w=H2< z>MBboTWiRn)2k;TBBr+XiBl$C>F#Xz`?wn358ZO6LbkgLAxST_d)Ls6q`Qy}lCy)< z*cgESkfA?-YwmlXkvBc&>!*JcZSZovO=cU?5szY%%4;@=2ua`w7vl8D7G&)M zVdLhMU$!~#oR=^LhS`3M#DFZ8VUO~!>QRool*yq0;>|z3o-6z4DY-Hc*&217W>poq(Pb4T<1`?y|}G4XjP}H%83}xjXQ6r*6yYEwtzcK zW?LdXM=li>vs+fvBT7}F!zIXUE~$1kxC(Sw(sRH)p3D-)pu_Z0{{Oc=Xcpx{U@9Mi-9hiTq84o9cA>H)lt%~_iYpEo zF~|u)BlX#~w!B)@kkJ!|J1s(y){ci$Fil1J<8WrWYs(b4+KUk~$U+WXjg*o#F#Yu- zrG)z0M`9zqPTF!zrbWflTLU!Q6zM%qYdP=G8~%~y3}Pnn2)JF~`Ob1XsrR z*jG7UyJ_8FIxvIltLkhs8=WRs)qjXCzDF2?Uz~^fCzoH0A6NZvBUH;{i ztIOGOdOj*sQKGg-xz~D2O&tOZ{Xhvvso0(>OBnq64?ktc)2@5yspsEv_RFr>x8cek zzw$9JzWlDw_ywAXe~ybY{1&i-s2k@E0&->YpQd*$=q70*8wsSX=q2L(E+uGgog4na za`sy8P${d#p(%4*z4VuI3wY{ZLAL&p5Spj*n55;8cZ*OtQhlTG=XpyVtrRSTgiEI| z3AGjufxHb3b{9IUt))n(CxYLGS3WK2jk)i`8Au(tG`Dt`Pza2ofLS_>H*83zXi^wm z*gjU!kn@0hWWju16og#ZnK~?YM7wPT-7MsG0S;0{gFmv@z7%%h@i=zaTkfjRz{;g#McC$Cbd zB59YWXTJ05EUhdcYt~f~bkkJP_B))vk{C5_3dRtp=i-?DU^_e5Ib3{~| zCRXxR#*m1#r(Rnq%5lAY`i>L%#(jiZdDZ)a70?mHcCOKPK}T%P;s<3mDlW{$uaa={ zFr?5UlvS+$Vd=7^pOGl=>T?G|$-__H$&mdst7d!6dy;g7aGnB&VCdpld51jG?N4S1 z3T!-UjJju!QTLo`xsJx@>HZ$k^;aj@YK8M-^tS1vRh+Q~`$ea>M*#Z%7-QHxM&0|3 zQTN<2>Yf+wlHHv4Q3y55hk8vdFmn>_Vnw+FY7jOfbzGS9TZnwvTq$D;V}^qI-L#%`6;= zq6+4vqe;aAk)Ie7Qk^9!dz?Jq=vioG_GXlJRV{y2I5sRaR3gFhr`}hm#)vu$qb2UP zj|~cH*`atc8)xq)W$>Tw$P;1Hjx=omIwZRv^za`8D{c>& zutZKF$0AJWZ$mWak5f=R*TcUEEYH!jK3?_oW@EVo0~5GODZ`}iX!KC^u`YvRVNZ{n z*NZa<#q`0*S3EW=L+@>~py74+bDIEjd@V-6M2?7mJRLJ*`g9QqeMr zk7N_QhUJus>SIF;-RQ}JbM5$AIFbmh7>!P`K`c#WvXU@+NbQAyXA>$3ghsKqI=$WZ zq>5yi(-KC*?q;&sD>HZ^-w@DmM7&H8_EDVv%l@oN_Fz8l9zy z66+n5+?`49bttx3-Y;1ht?OqItse=vf>44j_}&dvk}rvyJ<<|wc61BiorGwVibw2B z`lU3rQ#lfe_T!OX`R$hwVbLnT4|!x@0%tdw94W!@gbdsP3vepIv*_frG)9zf>9t#& z+i8`zKgSo4I&X3vF>xdb9V1p7&-!0P6wehXcqz|oDSyt!>k}7E)Jp=MjY!(kqRX`V zXp+~Z7za|(GA9yvsEY{uP`}>w;&}bea*BCIEoHJm<#m7l{ky#R6K{Rj>5qBzEgKH~ zVE*>kz4FyWh&uyu*S`tyYQiXFh$wO|5qCZMWvIIet-4`2lL!S7X$JPRh32mIpuf;s zZNtu$I`H883)>{!q!v&q04vmwq+bzMvUz4sM!J`9S~4CtDk~B=gCb5WRXJ`J%3OB# ze%kYJTq4Sym>{o+ZjBl4T3cEwLY1Asm#k{pA2Ap#3<%VVb7oWJx516^v(DaxD>F!T zQ#2}E5P*U9PwJgqv@Nj!I z+Rbh`TLl9a9Q0uUgL0b8#QWkT^+xK=eCx_ucj5SSt3O!clVGAz6-hi!fLG)+dsKwV z1QP;%T3m6NVaUx@=uzrHE9c=4SuFKl`_|SWdylQv>vh^anuLXrd(FubiX<%2l;J%s zjZfz_a}vl$)?3yRHq%Ra*$@PHLmGJ|+N#$*7gfya2V3%VEv~|C+MF}^NJkvFNvu;c zuI=fF8(C_%y8HH5F#Qzmt)uyo+kjKOjq=ue0eCC8_KwfXCTiY4#13ziCAmI>n}Zp@ z>PGopU+hKmwd9kNY@aQr-v=>^OsJ7Z+J7<(6KOqm+GNIQhELjNNLbzG~6_08i zZ5?ZNTZrO3)LiWJB!Ad(mm)#c9DFfwPXkX@<>6$zGCw?1^U-}O{DWrZ{|UWd8PNy*}3g)_t%yN zmFPRSyS|C2|M!4z5N@eV=(3lMPe58J$ARVNg;3O2Gm&xx53}U=&zN@dyMU_*B7SPl zmQPz4L@>9uy1LSnF!A-b1Ztvjt7~$kLoT5~Wy3*Fo*G>#V7d(597{o-I&)^j+iV z3pS!26Y+#dBg0lv<|D$NIP><-ZJC?fvS)5?l~g$AF)8UWp1dI3FpLJ=h~>$Kx+>!A=RwgOv9Du?z} zIUa00Q_@POXuT00QDwFPy;vBm^g;ukX;!+mjfEB-zog0alH8RzihH)TZxKFJUC$K8 zmzBZLR;8oqcwjoPuB7^{;X-V_+{tqrg3PZnc==Kq$A<4mM2p)4P9ezQ^mv13rQ*)X z663C--9a|S>;D53jIOQP9|M?HEbA>B{V0brlzOm;RvD9rR_9)BjENUV6?QANa^${La<0-}$@e_a4HO){NpxAPXmp zgtA}-Zp2#C~Yd#GJxXOC~7ZS?)Z49^JUezZd$B)KI*OgdfqFGn9#HXCNNNYe)at2Y_-fdI<%0NW*IxA32W!XQ^7_+fUc2?$ z@4oWmmppp*17C0d$8B04`Oj}${lYuk@t)TndGcF+^t+5eW>i~(NAr?L5JL8nuL@}| z3k45ZnG?$NLTY1}o|b+*>Tzp6;Y&oDM+4~Z>XcBAm|=sVdKb6bsWTE4(>KzJ1t2%T z4^@t`=ZgW;gfM>3cn}!C(q1$Oi%iMqoP{d#B`L0@zwSYsb>tnce~D1;__OMUNf4>= zEs2GG?ux$pvQhuzIk`q*38$BIVL8d#97BwaDxf9Cp}6+mn4;bK=9nSx#oqlQ;{Q6! z7#yw1j>KqA&IU3xV%`>k6Q(K)$#i8p0lw->X_77YJ^1~tgna28&8VOv3N}KQG_@2; zxjqbC@~D|d$xfskbV8_Vftiw|It^}5uVVZ(^o?6cv7QKc455S|p#7+B>YCaHVKE;0 z)qdBVaD;bM5V04`>t;7u`__$wZF?Q!r-&<|H^yOTahJB5?~bNv%O2=sd@Ir0KvA0c$WQTFPu zwilW+(}?Jr!%rwDU(Rh0r?Bw_I8_d_ucrZ?KyWyMA5yk`X{9wFp{Em@@}Ycnhq+~_ zq*O4Z(jmF=cGE_mjS(fU0=$$^lrzMWN49nF^a654I~P^i;FOouOYN#xFU>=i%Fo8^ zAv>$FMyiQz1W7w?abqmxUm_BcCz$KUA%qZm?fPPsRO&IS5(d96m8yg!`<0+YGYQiH zNy2mxmm$-9OoB_^5ma-ImB$%rKkdNrL3`i+efzy=ww$%HgA;uMBTQb;-J)UaVFYh& z@R{W%9 zZ()@^-gQSz%+L!%D&ACS0BQ=g_j3*(2Y`ImKKSmkCzRpb_lG*v#scAj4ja=-^ZUxS z;hl2qno+-#kn$Kz^Uu5tLl!`5{}{-pIVHL;-cAsKB=AKBd!4({I@7!GQm+j>S9=(_ z;lM`(Q;G`6d#RxmH-x)LR`kzf0-qsx3*w`{mXdtxpb{*iYONj@tVqEmuir{<;+sz7(2x=njAr> z{Ao#vafOmg;~|I7K#S$ar#+}k)V`bt?>m665^gRhY0-9OxQ7?!=SXvoVbF`vLO)gB zYIZEepl{A&i!uP+c_|iyp85R)r_2N$R}%`k1O|>5p4u6eIwt_u;Vfz4$~5eG9M-o0 zUnY#twb4qo=sG9Sm%q|_kxOiDm3{a=PxZ$D?F@yFf)@SXiFEgmRn21Oa?o!_w|ne;ODO2;rEqBT)1;1bxE@Uri-us3G$}h034Cz0&lJJIfY}T$ljr2gVk-A z)j3EU{ci;POp z(<0t&!npZ;m=jqB@GsipSj%YK+99LpXNJ`!LL>@nj3$hA7qj>I`1AbH78EtrH_OHj0TA3& zdqfF&52`^I7t-;p2`wk85p0f#Fq*LXVx00$rX?k~2kxxe3kacuJGR->?i zDvgmT+6~++IsMtBJ;t*yQb2AIA^XSVRv{+x8P4jnfIlTn6sgc4D8f$_vua=9^cY2S zoFGC~zQ}vQ?z#ER=WaUd{&_;LaVF$>yd^oCIK2zoxEdp=|0Up)gt7`mZ9`QuJU%@w z^yQWe#;WFW9>?fEzM1;;vH@cSOvVWiW`v5h&B0Pv?3&IuX?y;Sat;WmAxCv&Lq>CS zSfLGw7Ivw9^%c3C4mJK9kXur>pNT)u9Gy09#wks+duT?Ygq+lTrO0UU^L_`i(Pybq zr4g6rY_rabfFo1qN@5@C`g;aQN1qGzprCc52DUESa@y&*7jDeq2NNaqTft zk~Q1S3Bq)6HiL~QZV=MJSwFDLwu!F!G5plJY6`Sf65;!uwdu@&j!%gz+N1uGSH`B* z(N!ff!_@Cb(&X5B@pL?)YtN*z$)?m9+KV2Y3=FcN9UzvcAqrfX$?egy6T&HM6ZtZi zh%_osr`LO5TxDKw##&$s>V8Zo7_;?xh^r=fFgEpEf=YYpoq6e;ISYr#Q%q1anCapT z+4eMkLJ-VVDr!zyLWamdQzIX9Su$x|{9yUd&Ds%piPIEOOQX5^?S(bGGkd)0%tYKw znW3lg;6{e#vB28R@RV)`JdiL%#F3Mc>rzH#`7UO2e+GbGwDz%)C=oLAg6m|)3A#Q~ zW7HHTp=8wliW7SW;EjZ+fMO|6HlVZ|u__Zz`iC*Ab57?NEWevL`bz-37dkus`9mw| zcNtrr0X%?EhO+9DZBKLB6#lpft(}Us{ z>Zy8YQV11aQ_r54cA|;pT1+%FTZg7PL-&II)T}@5sp>)_OqD!RIj3YNTEaFuKj(L@ z7uXS^9@<$|9aD}fvJ+;>866JjTQbO{1Uj5;PKU@8YC9Z5maIl`NAGCUcm`XE>x_|l zc?4Ttw=7!uxa|}us$#!Ae}a!Ry!n%2H0~#*T&6G9!_2VKYbm%hHE10xaVzB`1*m!$ z_-J0fbnr6G4(Fn3j&(VUYYyw&x8I9M^XD3zDOy8X5FL622S4vrSqvS`Ma;wGT@#aW zF6hyuZ{1dG+gV2Ob!4^=eIjh5pv@tBBH`}RW`V>b5xgGJmcq!n)j5c}P-!4>Xq(PX zT|XZimdx1>eK+ZLUJRGN_1@%+os48LMY)RlVL?~^2p!zi_X|rH@Wj;Qt)rpx-b^@w z^cCFWqxlpdl{g&N){<_}j03_Wk#~ z{u^)H@>9V8j4os9Z{#cw?KZh!ElKX~M8 z-}JZ_od;KaA`5>IKRldJRkUwZQ$+r#jOIX_A2bQbUmU%Toh>x$VqW9ku_>V*P2z^l z5vnUDOrjthb9N>Z@uF`8gcoUOyb$VoP~Ie&otZ;bbi+@=BwmRh=%2cFOeu^F>hEX1 z|Jo0{srjm{4}ai}2Y+YX+yDN?SH15OdmnnQn;-j@Bi++}=9~X|yKnvAaXWtXtgC+W zYp*@y-DiB^$$$5*^Upc$b~AUp_T$@re6I)m^>;t@bLU?F^j(kr*ge1gUzflB5l{cy zjcE9FT%1L~!w8}E$yjMHMQfKy?`kK7*N@O(CZ9@&oiS*icj-R=?h2Ucq9y9qPCzDn z$B>-~CGQUOi70`w938%IVycnHdSkxQ{>oZ!0lH7C+h1aKS2i>gv7-UBh+KG>aoO(45>I1CxZfa;%sKX)MrO$B)so-h0m5@TwJt##$hWEPyyUV- z^i>)k96kz`A!%Ldo2!qkrk;?~xxV@dt0d>Ap9pJ!9yE}P}IbeIF7FYzCd_y1+IOvu9>{dj>)oa z$g|bi_P03Ke*%1);Ne0(tK6%y@WKp+3bn+;RjHu^nXtmj>^t4UThiHA-$hB*y1Q2| zO%N0|EF{Ezp-YGJV=R}$JJeS1i|03rGTO4hapU_J%)I`;0JkHIc=maKe9kQAk$=rT z*5}yeAn3$1z>LVrE9&Z^e(QCz)~b`6B2;yO5jbc@{8>QYloWK`2VyYO`UQuHChLK z@cSZWSidje-h|O50k%~yZL`fu+;u{T=!WV7R8^{*vrj{mpndy2RvA-f^v#2jMbaE> z2uC(zFnj$h;7xKC;MWP&&cEPFRdO`0D7EgzR_>Vxt+5g86A*}0GLEuzEjf>5#Y7ui z&v0XpJV{a(NT|zgO+rH3kyD22nSK&&zzB?25k?_ArJ~w=awTNWm*z?mtaQ{jay`sl zyYc+JX_KjWC09^Mi}0>p?FzsiLL@a#x(hq^?p_vWb1eH_&QT4Kz zeOHwJoN$POnx0qMsgk-}L#4F?7j!QYm}=s>N>}r9D%=pg*<-f4lI3YCt~}dib%Ndt z)+xuFttG(9mbM861}Vg>zW|7ttj90^Nf;`LG{O=R=CGyLYaQwbb$gvrZ_9!H0NUVS zW_kz03f5NVNqSIKzIx~-)%CpcV(RkN!xoc-Ica-xm*8srLUH494qx!&{z;6ruD>a* z3Yox4#tv0xS&w)-j4Ik{+U7I3M#hUAPj0U0Eh{C}iE`Q(|DYE+ftx2`puoY3r_3Qr zY%3{4Dp78NXMYHdoX~NeFiXKo^|{S7jr<8A^pa^@wMRiR;;$}s(!{$(=q>3bBd1gH z*Ln#n>qSk;NhxZ|9~LI_S=i;SLI4lF=35u zxF7F{TR(7V$-#P*wMCwds%-muJTcpi4wz&O`hgp`Bilg8OXGME7J3L>yImaX(%j7( z^|{)(`0 zGPj7D$}}glywY1e-03fitejhTX4=hbyl;OT@BET+iYMJ)u;Vhf|46GrzGNOl96sI= zul*)~_h2`dLN*liz6YU+1Tmrsa^@rpl?Wi)X;dV~g~p4h&BY__T8smU&%}j|8C6+R$P`X$$#zUOCoDxKho z>0BH42f%yMxNm9KM^3mprd2zmjMQ0C+Z>VAO-S7I3^u|j7c$o`Jds~YnC-D4^6AwX zrA|*!gdJT;D5yC^kT0k?MEwt~64}Mn7dozqnmEEXayr$L%V?2M44@Y-B)e%hQSF|@ zAL`U7jq`b|>6u1&eeJbHtVx)gP3)r8|B9-25qB)dJ~2*y?;sCAX14^H-I5nnlG0dx zy?6{ua7|adi^xsj-1FVm!LocXzR2VfVxTF-6(iDNz<2wY?$r3}9+{qqEv}fM?9^Oi zYz#BoS?lplrBoHoD>IDpLRSY#-8`1AvDT3hql`f=wYwbYFBAm)gD5Cav|oQ$6{?XHZMIw>mxH#IFEf zZXdB*{pQa8A)(QFic(ChoQR<+aQ1V!sY1{`h8Pon=(6LsDOw(nw0q6;x+(p&__cuH zhKm80%(3G_-Mo=nqAp{0FRzIRBV(|IvRM@hSRjXh7s7D0sNGu5-I1KIFN00ll3D-mVoYYb%%aR!^CkrtU(JZ+ktzmp^XI^b^!~G!?6DDT7U8~IwuBfKk@r$N8K%8%g3_;;e$rR~ zB|{ZTfqY<)(^ZR~@cu;|I92}@Lg||8s;q3uEiLL?Cdpx!Sp5Rq;(Tij22hWboD!!{ z8sQA#-@H5&!?!mv9$fb*uOvt~7`6eL42?9lur;bK68xy16 zl_bQmq(9|w9VX-2lwhSqVmWOYnbosalo4tbE+)c;F2trhm>?Ak#lh_&1}1T86M6al`$2qni~K1 z)oSjG&@Uw_l@sg|M-4i;c5L2j8Br0rSHs&>#2(Wb6gd*%e6igX5qj}bI(hO;)7 z=ZuKb0)-)U8&0>DmJUFDEy?!c`=6sOl*RI*a%$z2R->e+)I(W>uX4@tTJ`ufFSxo2M?Vzvs^1nA-fXpDeuX759JbQ|niK z;kFxaBeU^A^5;H)xmAt~XY~!@LY2y*~#wxv|*zUQ7$#6=TL=Iy+m#%3L2qTv_H}L4J*D4u zs6CABn^?w?Euv^dzGMv4Vgrn2OdbF@n^5tPvw`}UD#<8RYu!+tB-QuJ5VuJ<@wakQ z{{cWn?VCk%muo4}W`>+AHzG)=m}0azHOj#(d*BpTk8^7(k}?tuq%rl(oBwU=c2h{^pCHB(y% zT|&n6=uiwWL3zrY4e(P`YAB&GR79dim|49~7{WAjc%St*53@_=ROW#3Jsz81e-YsK z2xX2MYi+0$Ry4Y2vs{$;i3>rhNJ__~qFC5dOF3O5cdb%->D=*jZ1SW4+P+jWn%*JM z_Rgg?DWzB8bymB~D0He=R;`meJIo|F zPbiS1!~8SlpP_7F=Jj6!+?7yW1>^#pItur!tUJmv(}zVYvVCAM)7_*ObS^~*wb)dO z3QZ8XhX*i997nG4xL~1!umdIZ$jmZrZSS>~+gGmi^b4dXRMV~Bn}@{5$B6mbGXW7p zQhbaQcTXbmvGPe|ytaHN@+6**9?l{R2|!XKQU9<1-B0d!*S|XB>L=pYEu7h30zOHI zYYVCOEj2F1&6O||brwNtVdz^(FI%ADMrnKLQ1fG)uQ|3wbjeR%pt_6Y@cGk-!G02FD5yU_nR~v@TJ$ceJyh zuVcTF1O6+(rwBzlhp;jmm~HHuw_?1neV(&>A%J&ip6xwiP^dgy-WeR;y0o%z1i_}L zDW3`()B>1aT|IwZ`CPq(M+wI=!Ldw!s~S3TO!cu(U!jQuJ*+QxG98V+lN--hY*`pr zsmDMQlBLFd0QVpaIeFPrmtjk{8Nv;-)uG-TQ%}HZ^pI0%oKyJ`(_trC>L=$sAdgK# zp_Odk%`_-j#BQ$>F$NchPX}VR^4O-&ONH7>IE;38&^xZj5WkAWarfE>+r2hYm+Io4 zcJHr?8yGIk(VLkbMydk|AC~$u<@_-3F~qZy(JmuMa3cw1Ld?DOu-hmL;D(>e;>p_B zLQ1!icvHD})Yx*(%Jcr~ieJ6g^J>2cQMU0LBtAGS>J9NCDMwNMH0&`cDv93Iqfj-3 zX$}>4iV8@dlb45zB)<%UGf|%MhPY9YJao=*f!0CKu!Ti1pQuQ%hu2^aul?TJtt?R_ zG{N4vmA4lbnV~>8RZL>T&p+Vey zg1GtQZ$k=hNPeF3BW!{VHHNUK0>Q8nSs2nymW}ybaJ|s^VFcI499EJ(OA+$|x|z4U zN(dfG3QN*?Y*Qll2265BX<1X`%*h|L25WtVBdB*nJZwivisGtU_xPXu>%s$9_ucrJ zSKjU(_uloGb85eQ$J?U~CTFbQ32-`LD3N5Zr^e}8jxD9iNh(7Liim*W9kM17JzW*r zR4(+YsFV%AD;ksGQt?&Gw>IeOw?%t$LKXS?U4R?4PXIndxTPE$5uMxWw65ljR%(q3 z7kA331CAfiR|nJ}G6VQC&WXu}UO^b?(4(S!IjN(EQ{*ZtcG}OIIpm{&F2NHzJ;I=~ zQ}fS_?l0~VBysaA7w;(t|0b&7w|R0 zjpYup37)jk8I5wM@lz#DbhZbFV8~y(_PS{DYD-{%ZyQZxm?FP_KL@Fr~TLjZ8pir`x$e(|M%{TIhv0{GZNW0s)%7(UU zERh>*x8S#T5@Z0mM_Gud5}sK#DUn!Hovhr}(#LX2$m#KZ>|ijS4-v;M03dN+@}N-= zwNX}Kug)(fe!feZAV#-xBurdrb9$6LU4j{v4tSySVuFXJI&(-`$9@Ykg5>n5eHb&t zWw6?N3oH&-wp&Nxu4ryM-fb;+7G{^3RfHUnt5TPfm9Y@+fo%yvCVSewA49?IbooBceZ4o}?u0mT^)6hoW9v68 z6F!-^){MwrE8JraEbCiX>20()VC~SgqL=}LJoyb`Jo}hDKt+_7P; z5MY0n*ytOOVZ)T)i13&$LFU`yNq9r*2)7W}?lH5|vgUNW9@0j^$&j|@1o5p(Dk&)a z3s@1$b7urw4FUd{qdQ}>O^J-#P0LkgzLqwQYddS=IaRibY?c87gL^?RU?h`h1YrW) zz&x)N``s4xK<}w@B)bgH&nRP)Ct-p5w^qtNlsH~r0*KhjIEAcwpIN{f7|2nF;!JBi z*HlIbftUeYp~8#TLF1f{a>)2|EnTBdzWJ_Fluc%&f!;p9}xUijggq=9Fiwg zRaDw-k}>z85c3EvCR;#rh`$PECi-E5AB-T}q7`I_Af+pktXu@kU?nFFp!DAKl5s|M zn$kgLa7$&&+|5k;Vx;XKKy6$!!_Eq1s3m>}WtL$Jkh8N4ClfG4{aj*dPM$EspjdL! zrSKCPPH!VA$dmTKF`iswx+RfmuZ-6NW42>#pdW)!2zu`r^S$-}Za03Uh&F~NnQ>ot zWmlVtv~ebG9t5>trUh@ZU&>;mht|DbP!AtEQuHkRunNK765`CDf^7p=i;C9ghF0jyIt7$*MtMK^($r(8AbYOXUldn?f$vd!p zk)Yv_ZigCxsfT5KkCfW`LkWON969tOFv@&$?&lRGD$Ao`-E>Uypl=9Jf?)gTw%s?n zxvepo8VeV5f!H~`9)$HIWRpQLM)PRp+URi0MN2w0(#VZ_rOU`dc5?{q^tV8>TVVYE z&Meedd8C~%292{NUhGM~3?n(t2kLEtR8NkyxaEsbhQG#1%N;Pgn-SDW3ocBcQ7fFZ z*cpSJ^SZ?j!JfJVUtR|=9zohw1eNIt2)n%#aHOQlNc_Q~m(pO$3`hX(t7C)9biQytS240vT1M$R>B$ zIvx&I7}2OJ9!v<`xi-x_uv?fNKA1^e=9U;YZcual2XBed?g3bY;2&UBWrm46p@ZeVi>RXa2%TGmUCDSQtDG^O2Uc+DpGd@zAx0;4y+9!=8 z3#d5T?7UQoO9HqK+^U8{tujn(>O81Iy-BZtk(oTlROgtjG)_)*3_kA)^#^+iGJ_L~gOGkJb;MxhJ z0oe+za6{i6!R@#KHUfVWA-yG_Wr#Qu$(W&LY!3LE&cWff0P3V{XDC^TjOZhPw-NGG zcc2S;3VQrhLI6^cRX)cF9|=%{K*;MU)*spir|Usc0ZU*@0%s*7qF_CI=pZp#Zf-*G zH#Jt*#hVj{jY>4ebBV)=8-wo&JHRL0Ku8?a(=22JWye(DNRAw0Iu@MVjHP_I#vkm$lX{&_i)}U-Yw)Z-TBJPNIGL^_ka4DDx zy8@kNV9^|7!b8nO8(!p&|IxH`8aGNhy5iNyPDwn%QG;7kjKhKBCj_XaqzgMbV6>e? zUeCW6G=hC>9Yg-CkaB-aVQ9Km;3tKYe+I+Gu*`q0@QvB^QLkKax@;xXPRvVCBrypX zKj|A;zxo=!lXaZRCO6ykm1^T;9n-1Svx((Yk;_!38P#rG300MBqMYs3Lg1lIV6s*6 zciBg`>yVsaQUUKt@~ft7G5<=;%}ZSl=LkS zEzdUEVHkjUUeV`}S{Fm7zaTs)wxfNQNnpq+WB|yfo55s|PL);hAFJqZrKFpb*0i^h zdFeYO`2MT@EL$%2RlB{F;UjBFEp zOAym6Gj9#e#k$70prQapd{dMwsxU|TyDqEISe$^1A_gbwk}YuxEDkVZ+oMl#+3`st zRlfs(O#c4aGug|8n}x73K1Kejj}^@;w4+@Zq|neV460xvo`xoWeH(yH5!@`>lz^(+ zYK>HwrB&&44uj=rJ{JswX z+>4MG#n5!y)FlZWyjCv&frM@zgQ>)x2Y3oWmLF@KC8I&}apQEPgE@anrz&kId)U{P zp`*be%~xC06+>$&2$`rX*f%67un_eg;P8@-^A)r|L4>nKGYeG&pB)bpKp&sL6|5j| znv)rOfP3S*xB6k+KIK;Y2mJmxg3ozexCH`ldWL4fmZN-+>)2UE7sCoH&x!nP)4rxE0^!^CAXKx5Q{5pPuzqD)5n(rTeDRdV!KvG$(>~0k;{tV6|Hv%!I*tEN{ zM_qT@-@C!Ld;tkChMS^qy3YT_AnSW%`h+%!BPgkPE|J~;sJCo??gr3+(%$pSGnPe> z^Gq`r4FJawk@jQzvmj$nPZ*cJ)ts-EKKIb3^#iHbar#xi8PA-rKY4gs=b@Mt2o46k z`4un!Zv3iMub&A?;ouondnhmee&<^+y{N|)RG$9FxxD;`Q5Q_=w{i}Zk9+V^Ewg;CrcM0*r%CTo`Em1m@bV32&$(rznFmvOpSMQv@(t^zZg%qwHlDuIU*hGP zJ^RaRMT73A`u!hY#LKtp^X$)=%ycS0N&AqOZ__sXD{T)rLI%&l`XpYy?XnF&Ts03< zYHQlz!{6oQ+r2$y)1P}BNab}u{>007*s8wY!UHgd3mqtJ59L#en>3@Pp`*|gz^RVe>#;!U9ENE0ld8LiBE6d_%)^vheYDt z59a0lzN#$m_x2O4{N^+--|ym^Hn`^|oywbTnrM|TyX>X=&O3|BM>n0o%Lnds>3SQj zWbaK6Jl`r`c+HOeF2iU%O>6k}HeNntZe{o3WnWYI@jJZF%ZHtG>6fkVZ%O49>mR_& zhhJX$>sOaDzd-$e9^mB%zua`kz9ZSXb$|FsUS4^}bNBVwvX=VUX}jHcdG&(LdO!8V zomBp(-K_c6?6_#NpN~QNho-fR-}d3De7g-3w$22aTcV|n?wrJJ<(d=o;y;Hi4v z!o&K8+9xmEX>TguayPzz=hmOF>xo@AYNGOEXN>0kG@Lv7>W`jBlLh2F*rJ%1H$JiN z!Hd5`4H~kBZ1WT^Z|ZmW!@Dk zhr_J;uVp^ja(g!44J#}>Pxh)k<%=y*vC_0n$6U_qr`pfmXN%<{seJI`SMc)IJtsc$ z+)Rf52X(R5t@Vl*?&;Z!eczoMHsJM-+2oZeKXq%NevUXkXO*9j`1F_>JR}acC3Uja zGu!E!tBXcnK;^?ewD5M?$;W@aa;x8{{J`D5<^7!S?iW>;Y;`S_mtWk+D*y4Sza0Jr z@EdrJIpc0#e&Q29zcu8k+o`E7Hk&e-jv|6F@Cm5+UI z7Vqc$8SkwB<-CPdUbh9Ow{y=wyXy2?xBWjV-)7!(y#5uLu8;LAK7q>jf9D6Q{H71H z-5;-{^4%Ui+A9C%_)X6`fQ_^6u`_u2?7II9ne+*%Yg%gJue^NjMaAt~eaG-TJ?dhx0EseF3zhP-@H<*hr_|C4>Mo)`Xw zmoJ|9&rYB2ygt>RvHdQ*{I0|2Ev=ct)_LbE*5l>(JkZcOaoo97zi;=Oc=^%~mOOg< zw~Rmj-{t%8^7~%wKJB&GOsZeG-%?(_?2`#gNB-+@Dz7LzikCld&9sXS|CZ6WO&;FM zDqp$HcK2>@BGvD<@#egI<>XtI-?Khj&-Me)Zd8ghi*>wV}ozx<>xI1h zpJ(j<`qP*X z^)0WY@pySj*DhRq@YM`I$34aQ!n_{0|9aPDcQg6+fTwTe{gjoC82;Nq?7OUY z*{N1}zw8OOem;`=->wIjGv}4P_3|NSjaWtHdmr1z>+d;vqpRN9lkuajd-MG`uTO1l z-^|C?QT>e{;BwKt{x4m=W9yTs!hoF6o9~Nx`#)3O@ZU!neJK0a&Ak5u7SDX-`g=Q5 z{mEZ(`ZI6PxuN(CSN(K$kKt54?SoOgeCTF3^*G}vu8BdsJ!e63$KQ+npr*?0~_Eua3bH=^A4^reQCsuZ>hY`0SkFQm8b4_>OsHE zVdXD#dNpt430F^Cd?5Q?C)e?PG4Igbd!3oMa~aj&YL_E;KZh<@aPq$?<+-Nq_TyW; zeB5V=$z8uVjq3096X)0Sj-0b3K5G`LXqwjeh=unRyPd#%98@{&QMpyFk#L72LJm&_6|C`o*ZIyp{Y55VW?xTL%Z@ZY6 zH{SWy)I0RAsJwQI8?5rXp8sK6jmhDYd;Y@9o04OfpK#zER6p~OW|g1&;qLv$6j6C) zv$dY-BOkeckIIdxeAk4v4y~tryxk#JY)9qAz2D~j9MiP{ddBrOKq5nZ= z6)`#CPmgo?bKY_HE{~s9cMH`YQ@o1TKVkcC-a5Bv2$jdbud~V@Zg}I9gIlP4=qrI9Zbjc}Do%o1!}AlnTl@Vg z?c9Ig_6XxITW)(luRr@Rz3q|CXH!2ref>Hwza}~Jum5PDN99}ezJr&~uW!0*#)nLf zopH^*y!_e;L*G1cbH=AO+PTUqKjGPpdgFVje5ZT5@bV9CShn9$pD?*)n~%AEG4I0@epoQ+ zKTNLMeuA|xK3wwP$mR7nQ$GV1-NyU*cxQ*K{!I1vS!mI> zPdd+E{Mp41QF(R$nY{itvFo4J47q5pT$-1E``O=<$NkFo?{352lLL+0XonGZ&e7jD3|IRO&n%#T&!cD0Bl&iMk^}CLF^Ujw? zC#ihBZb$I)Zhf8^)pUCmm6!Yy}l{s z>sDqF?q7<4qVQhzvTwA8$LOg$vJ<$^54Av)}43W&1Cyf? z7h3B!XxWHY&))Mvs^5LZJYIj$_mg&8_TtG@Uf!L{f%Au4Ic2Zxkd;)v`;;NP{z2!r zysFK-o60vi!5ZhV6I!?E{q}`au37fC`NQ`acE-=w>_O#+bvupsQ#s+AeRkVvE|nj+ z(Nnzqkgv{rX3R53Q2F@3KElhZQy0A)zjaG0|LaA|dHI;L7a#dn-vw0O{^19_eC(gD z+;_n<1E~DOeK>uafA|Bdp84%3CJ%Hi;`C?!gzn#tIK7eC**3f5E#A*jk8FJRzb=|h z{nW15nwQ6K`s|(;zMVqlLwETrFR!1l%jTOOvjLUwo2jtMGk<=6<)@7A?|tWHyu9I{ zDa}WZVc+Y|?~dl>Ee-Ey_gRnO)u@SE^77Q6?t3@ZKf&hJo72_#t=XTa{bm2IRNnJY zYyW2V*zxVBr!xHCVY35xKe>GmESfz%M)jw^J(rhHd2jtEIvvF5|1R%s%FEl&{_)_q zE@1E7wBik3eq!ao3l9FGf%@5Q8w;;adS}ABFVrylP;vfOy#C4CjQ;nvBN#m&_it-I zo?3hBYa3V3qJA=ePw@Ju4;(b*%Zr|;@*^I)fR~@uGVsmC0~xRQuFoNmv*;H)eEwc9C!=nq{kpUUfBbk4j!SHAuwmG@b0?XOFIo4Eel{n&c;+bPHE z&pzmaUJLf!g6bdng+hjy4 zrt%s0_2T8%Z#UwXrk5U|^5Jjx=jDIBF?Wug*4>1Ox-*DN>x*R-wK9$*dE{kv`j)~&$0 z6sDah3and!bt|xL1=g*=x)oTr0_#>_-3qK*fpsgeZUxq@z`7M!w*qTm1$x0d z&jvUZK{%O%$A4G`Ja(bM!1i1MkJG?GAa)cR#~Sm#-N0(Wk6H^Sg93WSKH<3l2Bp6V z@FIfbsXeWe?QDeYRG$BlK#9x^HJNxFWPCcL6;BXn{m(agTzTSuhMJ{8aChc9Lv7_Z za91`@JbIt3Tr0Bpb?W=pZ?jH2W%oW8ZFu{=pImbG`Nb2inLc;U7>F6r-^0(mH2^p^ z^iBK^y<*Dm%8Dv`V!rU}a>7%1`lqMFR|d9_4jfHD;yN!DIMsnYsiW!p9#dM;D!6HIi(xlloKO(hKXHK2L5( zltI%sf)!CFSj_W^pQ+;rmUaX5k1>FAq|pj0(-WS5O5!xO?CCUo<1M&|7$&wa0-dZg z6T8^HM}0gOZ-yielsf^lIT#mOKr8DRj-6pF!c_?FEHMI=a-8Qj`-s_6*4ZexqlJ;k zRO$S6Z1TC^yz=^mbwHM%a244kwlNdC zDsa=7=Os|?p#b+C2$!TK>Ty6yJoN{h`Evjm&F}>ARL`S~=KTtc$xB?spn~l&|H=ln z9TabFu7w$@VDn2bH64OvbO^}PyGcxq$U!*84rd^+l=9bM`p@0LZTx3oC7V-NAAMW= z^l5-b1ltC+@AgD(8(i0i{~E#$)Tc+cZ8*P1C@3YMzW(l4x9tf3=kUFk0i1^r1;e2o zJ>K^_y0(YHhQn^J#_?qV@W8=j|GYF~s)l3s8mOe{p?ASZUh^^)-mRYoZ~}t=7w6j% z$EuZtqof3~5|7W!v< zUIOu$`klDB4glC2L5WR61M3-#-@iM+Ul3mQ%=YQxx86j^xB-*XCs8EE7fLeoxfbCO zQoFD*V3*KS(LA9JPyUH7HbrpZjuxR4Y@Rn=)Az(Bs|J8LSA7IoXS^k9$e#k{1j~HE z$aFDril7#P0U{JzgHzQ6*jAi_!)5iSLQ$l2|CRAb+=2)K%Xt{C?JEG!BB%{t>#DM{ z66AoyiJ)0f1u<7m@Yj$PtNdR%&iU0!%l*Zjs0nxAJA~^<$`|A5SFHTc@$gaKgfFZu z2UvpOZ-PjqrX(}zR0{|QWu8L8_6L1YG4H6FhNTZ}KYGQaMMJ8)pLO#1+J5D4eRKS( zEgKHL^uv!H*=4}6RPML0PaeMe?nkx1*89C1URheR{)^c?4*$Aw=2nYa8?LUtqiNR4 zo31~-ExY{Yk2is_V>VFz0ssix)@S8OR*E`|@`jPqe8tWZb0dY3WI5?nLNXO-I|;*< z91LFt9{o~8vG)M*AjoSfL;>m>7g2fAXM=7*r6T`rCs1$yjqE`I)$?58Xg|Waa$TG5 zneZI?5!K1YRHA-xvN4%++0?P44%qV8E$P~L0AnD6J5Rl70T#FW5Nqq3$s(~U^Em{k z{1m_=2%guDdq^zyB2!K<`z%ti?+F82tWzSaPg(g1ANhW@5*{FD~ zqIVzoipBnH%}hc$WROaJV*ma;$IBIG7>oW_q)`&g$VOm@w4hyVN)m4Wg$`^FF(a8c zia|~B4CZg{1VM4du#b|C#0q6R^=BqRrc}4t zhFtZDR9zZATefUiVk%6mix191YF8sSYET8T5BVodwIQ;5Jm$VKWIy?ws{WZ@?YURS zPw3;LW< z;PCRZ{_)?V@fE833fTrd9k{PF%u;eXg5m-a<;2nXN!k|O^f4nC6`%`UBx~A5xK?~v zgrD)&cwJMXtd6es&BFinfZ+p^sd%Ox($(XRz>zTbo@ZU7miT>QrlyCVJE#$M4G#_L zV)y|+mK%{7aGZ~z%`Qz2oT6{X$J%Zh~1aNkb(jN#Ja#nqyhqjHn@)P zU_gKlsUq}#2zd~C?5udUOMD=*J0O#Zw`YB5sfFlKwot(47@4kzF%|i1Pj-4~S?;9o za1-~PK2&Mn4Pl%JS1n-Q8MV~*ozOM(PWx^J{IC>(?mhJk@}cWdFz9MvJewGt$kt_& z6zT}A=qV!et3!XX-8(r5s6cJ9Ihkv>qP;9tYb>Mr{$5pU0CYd4dkBx>0(0X=fN~^Y zd8ut@7*o+=0g8v%xI91!6zUn>qH#lq&@Uavs9&at%$%Wy^8>}6O-|Faa0K8n<2#WOZs6-E{Ev z2VKA3B`3bnee10fKfJu)ycE)T8uZCwx8 zVAO&SCLFl=vI}SLRsQjcO~0ABV9JTL7q`Cp;K}nA-#F@k)Bmyw`c>!R7-fPp1hPO&0FhuGP9 zNDQ=bSt0Bn(p2trhG*A+r+;=UxsM7G3R=Ck@Gz7cG8xxKf zN=$QDI-9e#^4F~R?7$qCoRSy>dY`SO`$l@#V2yPVWV7)T+@}g$&4x@B=4fk7tUh>2 z@r+Eub~~6Y7?012UBzqbeTlCr!qLjM4&x_KMci0T}VY;jY*Q$Kjj4+4*jzeKHmPJR2z?uTBga{U(9l|Dn zMX;Mr&{9h7ro-U>!-$4^5~;{W6X=$n1it7bfMXG)k=ur*)Diq6Bl;N17e!8F;D&CT zIzFc&;$8p{7PTPrRRg0I!a4{<{D7#0(0(yoXd%E4%O8s9n+RVRP+C7MvNVPLl>}OM)VHvY zjAY4+0lOD$J8qM@mx+J1nSW?Yqf?<3fxIlid~I+tii$M)Cd)dY3@Y}$10@9SH z0Kx(xY+HsoGtD9ssj)wNlma2-&^*9Li=%Li00SZP+W>AtP{J{8Q7KkxM%*P7H6w4N z0GwtV$xn^yATv$jZ7mFQ^t%xqCjx}6?J0nQLt#@NV~||FeU3%2$2;e?V;pphA?FFFfjy#ga}hI zy(v-5x&bjS;u{3fT9m4NV_sm9yZQ?TQn4Wt!hs-QSm7f$Y;*0yr@v8~Qj2Xr?INb&k5pGUEH6bo0fP~qa+-!B-nn~9s>f162 zd*56phmqiO8B*T~0C3AmY)piYik*~1!uk$G_(Iw~eRh|EII=cdGS$8~iIhQ3FlMwi zL)nHBqXxvP#Z5XB09F2z{6jLTa~bfPM7A!lfZrfB5nhka**KmD0q#MNxBGe8A7T>1 zkIVib|4y4h4~84tqtEm%yDa$v-Pw=eJW%Yr9zpF}ax0SG0Z>a1_1OYO1z<3tLcQJ0 zbO#PwogP*|D|&+5*9D-5@|YS~b`QW*p--4BVya#X0P$t|5z$E|u3Je21PL^G-o5uBk0t9dX9*w zQ}^jvRiU6$_vs0vT!T6_pQu}>egZ}YX$7^1B%HsNBV1rA(3YMebu-|V=x=uTjfWMe&ob?c`cs5G3da(a2h3q)Ai{o=gaCM&z^CF>jIIcB!qxe#12yzUj{$j zg+SO6Z0fg&MB&t5rPm6yiPMFLkS^d2dMgq9xp^%e@}QXRUZg+jWWMl}E{wWN$iP%* zS?HUEeFxP?SI8&~CaN<|gbwJ3#%gj`~(8IJHA%t{Aytq$x(@A+oF)Xp&Y3#3rA z`@`e{1Ho;YbeItyS1M0ZDYzOO(Kdn?!HPj(!?U|f_5E-GBWMAfT;QS z#+st;h9#O?6B*eUJqhOn^~ypHhQ{kab!n$lCBX!^3Ni*aPf27XqB4AJuZrQR*0vlF!bBWX0YWM?-$QOr0&5nu`CbFBm5|u0bIgP?-O~XZ-Sh0 zA;5JAQc`=bibL9R`Lagx{mHRL=i6YQx8tbK0XPjo4JWwIFP6X5X?N*eh@*M|;Aw=1 z~ zL^AnC#P7|gomju#2kULV`*$~9F?&JJvv%mZaMrXN>yLcmoxQ$Gf7buM?^M4!sAiij z`rm!>g46f8WdG}*%zZO>=kW*cc38u%zg;=(<6r(gBfV$kJtvOZGp%Z>*{KhL0q{PBLdqGw3$%KiJYg+G);AM46jX2TZDDepUHDIfP6V-=3sjiHFDqB|&kGT$?#Sf8@Lg%oC$__?V2{hRESw3qT5n^Xr{&4V1Wznf@Ss;B__e9%f7abVa*Zsd8;2aectA` zmQu}?lz#JThJFr7AD&M?3apT%PR~ero9)a!p4E_YP7QO2aR+hspm^Hz0Oc^IcBVk& zo#9?Xo73@}JDyxPG7;25;ApOJa_X7WVTS$M#en@q-vNAvAZs(g#*&u%P1G#+5>W@D z#XL%e0}1`i75qz<4u_Yb2^dJ$aq}P8{E@F1o`Oj31ql{r`F90JYrw$<1@n$8{B zz!gEvS!3oj#(0r>b&NSpnZR2C@*PRwqlBY7Lyd6J6vEMY^T2TQ-=Cqxx~Wo$u;J?B zQzSwCP5Nt7U}QPBgeBB8z5~7G!8>?UrIrPlj6fojoH<+!m(ht2$+d&mm=E4KsC^Ic zIl>~l+AE&Lvx!b(puDuWrD$l5Np9M^B*zSDyA@4uO#dgCeMIY91$QW^S>J5xiJEv! z?uvk2{YSLEZ35h8Jp?sL*!cch7YXUbKX_e2*mWI>k$B;n5|>?O$il-FDj^ z|Git=@u6w`DjzAG{{r|Y^*AnagutnO6;TgPU`vI-seUM<7Tjtl&sO+EU4c{D>oBtC z5dxeJHld(~e)B$JAipUw5q~3bng?4PQy{a!+A3STm!VCKm&y+=xJoQBFp8`a2@fPk3WYfw36$ z99rRX7n06$fZY*Z3y5F|-<4)EKZ`)P0`DaWgoN*^$UksCFVZsKA}v5=TvU z{P$*&GvG>yY%T#<>8y)QK$Nh<86qql_lzcmc9dC}ExT<#<0nWMBvj4O5;lHuk)-nV z`fEUW+NUKJ+nt{%qMcg4ne8LxrLV~vj`A>rOKd@x)}*ur1uuwcu_}HGNL-YlOD@h3 z9m~s2KE24oQ(LTrQGP%Fbv& z*Stw!bj)~QUBDG;nP8R%I&_L3g-J-Ba<()1g}iwL`c*V}NZK!~9Ev#hA8gX21cP)- zir5Xa5IICYZy~X;5~`fYx#>EQ)4EAQLJC|bJ$hV+A+b5uNsn|?w#?6^u*RgvC|);| zNGz|Ln$d`CveE5s0U}Pg*NsHg-&4%H_AGFiRS3(a?Lx*WZ!-YTZZiRXrQ#iyluU$x ze9K}ZjKeX87f}e0&s6-o==4}k|ZJ1;1ae(Cr zlIV-$EDxBg@c$hY|?n+Zh{V^$P>Q=Ug1o zIRK|2sBHowbg`}{Ucf}P5~r84j~{ipe>ccTlmTbw6-=I7yVYo z+fsE+i45)$eDnZ&t=W7uWa4f~K%(E|v_yTCQOcTYXCM{X51==KKg+I9HYT#UvVkmN zh|yTn2Tq;^nxi%ld%>Xn_YoG_wGlCJ-(p1Oom$X93yQ86T9m7pWw2W*j(CUEXhDr~ z1?+zVvyNb+si@d1Vn8Rg6g7=tq6XDr6^ffTy`CCOfimGmP|vKd5-uRNG%MGAdR##Vh1$j!7k_Qq3qr=?A##C^esr z5S_G2vjiy;4`adS3LKoe(qqvA>?9USbAtsP=)xT+6hUgXMpgK58>{bpCcAb@%~Ba; zWF#j<26`xi%;oUo`3U~nqOlVPlO)Bx4Ke=)hPEiEm;UmZQJ0xi9Gc>6#CymJrJ<iPtqp!@K_Iz5NZuIM60aN3+?dWJb4@K-)(5OR zeLeYhW@Mc<4L({lRY3IAgnlwNMge{KWBZZE6Jv}JQcQjN(Jx$*V;U8iP}a5G3I6>l!fCL2?U`Z~NRB$X2zRwlDh zWEpB;ET02x-8oY`ODy1?@S^GsUq+^MF)sn zMTT+y0^6%c#_OVy)Sq$skyI6f6hZTjQB}0z(DMKUe@9_krWtm`ltd<*OsC4mR8_)F zI`A9d2@XqqM&XtKAC!IqLS9Hy)G-@MMD&){X4{qExbgB6r%Qy058OUhz`ODu_S%I^ zI*^s8^)nIc_|?nO#s~bMMgFRZq4$94INYM(zcW3xCqdDPeRaquWj%L%_beC;UcIbO z2LS)FJ~c0aP3xq_^+-Jk%!CvwtpwW-0{*)8Dcq+aLRA6`M({ZFX5*g5i2%BGE0yEt zMxm+gITXL{od9aSFOuz|X?;>IMCd;{rUiV}-=Wrrc8KK&_sf|Gc&vj{(m}jX3f8^e zdZ9B4R}fyLXfM7S9t<|qP)vk?GmV|04N`;a2edjMG4mxhy zzYqNJ?ujiAX&2pd^}aiAQ}GS_Z4$oiR{#`^e(*>NbBJF28&NY)$r_J|Bi|poG^`?x9+!0!7dUV;AUA`m5{kYu}Z>A#&Y6<+mB-A>>oxeEL zHLt0~Py2S+#SaceBf?6YNCZ0v=PWp*FqdraKB3}uVO+9&RMIY4AO3BmGXUnMMutg3 z37G8Kry=5%Lli7BW`=x-KCHTiaoKLEP38VPp}2|7z*Sopl74o z3vf{A%{>D_N%}SN!5bZEF(ncGN{`587He-wLUhaCWe+8aSt|ARKh zGZ-;5k|L<&_3hn9-n7%ZkKG#xBUM!deem6>)v53X!Cwk1hBx78R{>mvKx&z%(V{t? zYHR~@MVT4)IVcWx{MM$l;TZF$K+f|x@ScF{16YWQ(FUsGGZ)ABHNeLRw_1cgfPUM8 zidCY86&O$KPPw4~qp~7~mDmqvU5Tcq3t!nUOvDl`RJ3uvTcYoSb!xh7fUMfSCI%bP zD^8y1O<`+pO7FBQA>h)*tt+e|8*zf;k6p@{KB#6%;d5maH=tto(k$$L$a|A+|J-&Bx-5vK5GoUn*9&s z)IAQ9x#vd-TBuK)8?@R1Y0wIQr3fU;1=C48eT-48fozM4j-;lK;!G|Bz>7=Hi$cPn z9X&BQTBblzvD>S0e32AE1&4PeMNq>-s;vl0Uz6)7dSvzr?>qsPB}#CxhY+H0rwa(+ z#;WGy$qZcWwNw**5!U?g2mxsvL`}2?fANl!mD?upu2?__LD;*53q1w>*QWWx8}NAz zFsb-W0GML&ixJ4-rgCK5LzXuPEvQw=DGAJrH#C{5Ph=t!{0O|te^k}&5U16`nB350 zbHXDK)fhiSwUpJirRtj#5bBj_FB=xepEIHC$8AxpgK)7p1eayXU>meG!KZ z;J5+!Tfh-&x52~W-t=oWw+2FZb4Q z4x%bCC5bU%1KX0#Kmpvl(yswU4%wE>S(8z@;`dOFh{mzG%_Dz~9U(deS*~R(Q&R!R z?CWDRu=Ks?s#}0X`S)il)4PMn^%sPf10r<87_)iH0GAJ(p(~PNbeIo6`_9JsPb@xnv#O8%MtnY-?z+0z?Cn zXmF#H(a`M3p1KyVyN%TYz_muPBW2W7oKRO%q-}(TQ$ma408^S=oye)OX*Y-9eG7W9 zn~L&Uuui51T$ygHPGqJe>k?Ua0|#5IY04zx^{ByDC0f&&-0Bp(l*9qKbiGCXywT#H zrIs%5U)__HhRSn*CPjNa_pcsXFB$#LR)cCE0{lt>vgthlFuH#yX~SBtzK+93(j=N% zit$LHB)Z@>XlWK@&C(W()Dt)85dc*P5qiV@Dj$sGTCqr9DR`OJnK%n>;-t?O)x>!; z@}?I6o<>+1oj1|_M|K8PlsBvM&rT}G;a)|ea{&Nk7Sm_t!Q)|Zw4x3ZcETi>d@U^{ zq2kZXW{`!(PmnXn2m%iocdQc`(zX`;Qv5PWfH;D`n84VTsN%xqHqH1sN@N5Uf5zs? z2Meif1(*yh;lnW2v%$cmVs61B%Ve0cWFVZVizz_! zus9;998CUkAR>#?F2qqi1@H*M1D2Q`N#JMK%dc%z744+@(E#HRq6=iWTJpE3TZkBFaSz77fWNMN=Jt9- zqelTAK=25kGz@`5P2b;;sc@bajYnYN%f*|)^2*}CbUCddM)ICbvoo!30k4p?J84fM z+Oz<`Q4l?$&e~xSv=XAwo_om|PLa3pQJ{TW7@5k_+|^=4^bD@Ly0Og?DskE61JkTs zYFKmCv=#|7oeYohi|nBAAWER+V+yq5hl0WdNZ2kl1Ad0K7XBClE;@X-rSS1$_W&$H zkmo^N@(^`pz0!e41SC7DP>WfL;*-x$q!7*oxDN~%LbG)EpRi&m-3U?)IA5f~{slSS zIy-=3ig|cIQkn@iK$8Wgz-9fXS=_~ zQcI3i!Lf;6Ejod2W7(E+LC&=SnM@p=d;a=?|4Q)l#pK^}C>OR|>aY+ng@7a=HU}bK zVZntMQM}31uj@uhZb`P*(Tb>IF6lcZU4b~eD#K|?QnKwk`M-!9j-%UZo0C~cV=L)f zbz9|~$ZBDwyqfF25Y^c$`|_|!i`=TK{}cy_(P`llBynp8{xRhiI?5%cQlK4>m}V4q z)Q!x&E6REFCej=ED}ktGhZ>os$Y7;oK)0|M<1YREZ zVHtsc2DJ#fdxd)DhiYh4nntcRbxXeWO|c(&OTG&&r7ii^8%xUrlx6T~7t)fihU6rE z2O+tfginOkC&_LlknXnD8cZ!t?9rzhjb!|U!pr|b+6T=}&^{Q7#mJIB6Mi`f;bGmy zq)c7j47U-jhoy{~Rv8kEWjNH;;*Z!^=-;z(E2`TYE!4$cLe4GrE)TlQm<3*V*c-V` zg|0)7LUIOX;*et=N650vN9Y6F=0|Oz2ehfE(>or<6O>h6q>z#59o;yHk>M*=C?eyK zmeyQ5;bL9FLPh9FixmQ|Bcb%)VWlG&JuP&$qT32}bBEP;Fr^Oo>so5`{2o5_=Li9p z-HG@a`B0OJgdn?F0+};MH#|S#em)c6WQ4pWqI`%G41k{V5b-YpfV5%y zSrIrj_EJQY&XbEeE_}0)TGfDPwG2S`-&Zi+<%llN0<1z}qp~p2yZePTi zT?ud@LOxq6Fi*a?AysGr3`(1WL%a>(CIkvGlR)sA^73A!FhV1($VZ6Ah}7YD0IWFy zr%8Q8T_bF@yrOR?zUzjm65k2W-8Qrdy3bQwA2VK)mlewI8l-6nhGeIEmd4>21EP&y z15k;Ohc>De=S6&@3wH7juKa~pMOV_{u(&bE`4EGg53w`UrKt5~%(#UR@aWUojBS=N zkBp*0ryy>2DNat4ml>j;&0nsSGcgyAu*+Ni!i{pWw!!dva6%%ULlaK4GpI4l`Js;h z7=%E(UWF11l6moL{Q9=WmK8l4q?LF9Wi22m zE__Jv5`5mlN%AZrLc3=>jcXJ1nyD1pI`c{S}`-kV%I(<@f*v?JWxFWq$2ya1cVi0XI50XJv9Iw^NOO z2%AH0P;)$+txU(^z!^HN+>_(YEJh06M-Wgk8Z(^0b0<**0w2?kY{@3$k6CDc8WllrcK<}D{$4|u)V%J!fOFXw!#UgO$i`6?>e<5 zN$1025P*^u}ws1R*bSg3Ddhk;F4k8C!y$mdMD}lH~i0Y!i6U$4|J* z(hQjJZ=D8_CbRSLEAbR{5qFX0y z6m<*WCrnd!m4v-&WE=uFsz7B(HNt(_nKb085)#Vk@|zalPQ=)A<9em4yAg@p;Q)ss z5PJy{aalMCRMqrQaTsgCa}>NG2G=IUmLo`FF*fX?=wuSYI7zNRiNcJ(%;s%O&5K4! zo3LdoRz$MA2S&}x&>&f>uT;>iyz|6j?&FB{ffX}%&B6MS+U-wLZd4~tsaqAM)*E*CcUxq_F z4j_vVPL-{|kx;4}Za;=s;xiq_5K+gnKD?TaWp0lS+Zj@#$T}UXIne^CmE?saHLBp! zu`s~(PK3pF`rZT#yo?F2B2}n?s}RQ~6UQ2%t+HEQ%6RR0?!`$zO3e}AHi2ga?$(t6 z%MkqUp5ugMRC_j=#I3Cr$;)?-)pqmW_HaO?v`n6H(}|;GgynD)d7r zj&=${ILStwF&q&#fty=&@mx73nk&O_5d2|Sq8W19VXIIgkA1^)K7LBLA(>8hwy5KF zk?MvF6u~|9X!qXYC9utrVGE|ePBJp8DJ%wvgO^)$25t>7NDO2}62w3s`=czefyLMH zhG;7Yi2RPh+qWvw0GSo*ja`f%FxFw@0Xvt}6a`9>>~Z}tXh}gp5h84Qv3tmHW^xfW z!2vWrhD$U4rXNa0UJ*8*K>51}o;NXZ{4=FcI|mZbQPYLI8iFZ%bSBwCSsbwkoa@aN zz6sUvue_?+t#Fpqfr7{a%~}d*sC|iO_yhoCd(s~AM<^#3f!b>w{%!o+0~mYu3{L5I z0QBhQ!fEYZPz^p7h7dUXnkp6fCdODbKoCV%Z z!nt~j8%AY>Um?13Zw4VxIkOkeC-bcxouTI@u3nl>4r4ne|d4OFZW?!q#xWfJng(SU}<{%N&Q&WK<6 zk7*L3(C2-CjP4T!qhk4U=16;~WM(aFhVc_Z`LD!I62iS|aEn=S2nt%PJ`Bp*Nt{wq@>g0TqLrieO4_n~b<3Zd~%!)z&HHU0!fO9`#ez-ekKCj*)iqk)|J z09wcX3GgI>^uFz!Kl$oNi?S+3&c|FR>F`#z(XVe%YUh>WTzP}Q2pOxnoZV5@4R6}u z1^!{hRUi{E!zu*+Ay`KF;L$|tXRH^R`U!FVtOxMg4Ci)NP zLkY@^WWkTLTEl2?Nao9>cCUd(7)G-J@aqk_Bgp7#+Fk*9m#y>K&Md~pMY?iF$yTP6Vq$6u1(!0dI09vkr9{%k{Wey{;_%+~_RxZjn{(>nxTGt}F}%mU6f(ht z_tuNj_1H9O>(qWNyX-Yvc1ZO>Ni#pEaRaQ87d-q8eZs5smimr^lNswfUg;anL;=V_ zpU=!fK;v>$WG~?IFu84Qi(^XA0)CB3z&+IUw$Zs$HyG_&;wdm&!tK%Ye?7ZM2M(qs z;w_}kd%nw%)-kS`Ot+3Pdnc!$1+sNVN2TG?=mOmt?4Bc!-L)lg5Yvr^qe4Y^m2#p! zjzwS}ZV*em?Xl;W!c&IX?K26utrU)oC(L`mDJzz3sk~=md_wjGhM;Qa9k#<3rXGdbu;G01yu>27skyO_zZ*`E&;g7DXzhI%<%H8 zKMgXzyGvURz2pEH&S*%4F7_IoPB*(p!RNutqhY zIT_D_?HoQm$*eYFMaz--cMWh)vQhblCQ$7gwo7qW}w{_;+TjqW-co(w} zC+pBkP1eA`#%u$->zT{oN`SDjds~`y**f8S1uHel)wUt<#qhp2*tdU^y%-qFxJ)K; zo+9@(6y`iQb#veCI*=7K*5%HeM>S`R-LG8%fRg=1Ms)2JOqHTkOKrx ziiDr>bEl%RhDIBbUX{QLLDDJr?scLUvK>J8L?)baV~&j4cs6mjixQhlE9|O~Rb#A; zRhi5(XQvHQJX%>z+=%5IxnpCvKZCOYpQ<6JgL=@ps$cT!UAvt(;t74}v*kB@^~UH2 zE_-t9X8U*jaODN4E$j`dgFYGn&Q9pV2zTYJOsIYosp`HJstwBXwFcy)*(}ECfkURRW{R?LR}mco#9{5V-g9@(`trATH-2zMz@h20lh2yh)j1T@E&cajebw(mV+N}hXUTur=fRJ_5s!z-D{ z$j1=#9k_a9h`R=5nOT>w%gChawy}<2F~qb@JyBuEAPWl++W=8-2dtGk`QT0d3UczH zPy|p2ud$9thz3rYvZmq52Mu_-fX7z6866XD+O46gNE*8Xo`t2X)g+ zg!|j}Adj_Ibw3NDgb*o)eeX0~32{Vabi*K5^iC%eYMrpY@j5J7hVxCL`ET7bDH*#OQ6 z!)Ghu-%#W#$_&NVP*vt)Kxiv97MAqdL4cAW2S@yAQ_#T?TPq&<;1X>7502P6uv6s{ zG2|BO$(;5O`U{n4Bxt#nuL72n4vy%!y?Y?YT>1_%I1b?lsYVtuGd3q#CKmim0hxQm zvm{Z8bYya-7m5qPa`lCEixMR9gMj|!;vngWja{uEmVl^Y#Fw9sC^NAo|ukX)F{12<(NX+OSnXo(0 zV>8$Zxc($qjliy~^DWriJl|r5^~pwm3-1)Ho}5YJlKP#8vDlt?vL!YK@Ovae6jcFH zo!xRGr2rI$yB30h$+1rdn=fA-no)5cA&_!3r)C9!=J3%`o=vD58i~X!2vN14v1+rbU{t{ zo;TuCz=e^`#Z$Q~H04k6l%=b_dHL2^vmV{xsmG5Rvd1g%7djyHZ}{O$gb2!!PE^d3 z)no7tQ>u8_%&>T>zL{()MXGW|fnDgvs{Dd`W)Fa!5tIa6^Hd!6q;PoKE>ed|$I$s& zVP~+;9Ku3T#w5&McQ1m!UTQ;YepJM;7Rv7ispBgC0*&`5VC48bhP#ZXF_1eYPBtq# zZ6=w&02{z-bfU@On;1=ERS=~Gw??IKjPPI@gNTZs_2pKN;%DxQP}E+h_^B#>tK+oj zQ-E!cAdtl7N!UFtWky&gA}c=1^j(qngtG%S4((Z_@Y4aNB1EAQMGxz~>5m+=Md135 zunct~8G6)7Mx8R%9Z6!_k%yg5LrOab;4%bqu*;Fc@}AHjC~>0Gyoa@;liF($VWNrA zfB1CU-@?*=ir{^_i?BURIht7~tZii43ZRpYIEEys{g#7X7?$~Z$^C+(gy%nq+IIn< zOMhV=;mOdPo|qyv%!^jvi=&?ha0P;b2tGIMN8` zZ2PI6vkjJADth+`K8OpW^f+g$eFfzoAryk4KtJ>pIKihR;!8*ReUG0kihPajRv*!) zG-21m8?Q!qMwf|&9@L!9CgO0(@jwb)L3d#(`;qSU6%Lu;RPbSHVwgr1YcQ|}>%d*1at+}fF=>kee}@p|EQDP$mcX49Y(CmkD1Sxa3B9p{wcajj`+N#_ z;_-H2=Mg~Sk+N?_-2@a$XA`F=;0_Lv|32;=mv>*{C+YZr7&UxBLH zaxdVHD3)Zd{!Cx#gs8t)P8cL=ER2bf!UCgQP2rRyk;On9gbr~K`bc#`h6@@ijEo+U zQkTrCPq%^UH-3T;uwqEpR)nP_HJ75x(&D_1aR8A>H|4%xt)x4Oot5u*#DYI&xI*kl z!2hoiBryz^s&gT%PI=pP)i=AU%O=ooQW&D)c`3MHMK+Dw=p$ZV#!Vw^ZYyk!31(*C z8YeiiChQ=>WV(gqV^{ow+@xriP{|oY$0msj=DbT>SWgJJp}qcAKQL3rent9*miFrq zq!cb-$2{kj$?Kpobf&6#NpXMvF6#&ZJ3JRfpr#uMRxeeKru~_Ye_Geyz4m8?RR9;F zfS9vk;-?}AJG3Rh$;tA zLiN>(ag^%)X;_Me)8nudX~Gx?sTEJ32SOVjvmUxkklC2$9%91FwL6jXB` zhHk-i3Tktrti?FYZcE_d)~>B;q-(0AdB;!L@d_##p5WB0cF%26)WjK%Cr5*zf2nA^ zMQUTfodOSC))j?E_QTezm10HIT>j`0B05Mj`kn|uBcnu_N=-)wu}w#r3iXcJ2qdh?1+f{yEJp0J zn#+{%UFkJ2IDGzwqg9WWspz$K#LIjEqyGTm0ZDFR$-*dOi(c-I&1fAU+0J;a-_26pviL49TDeO_%bLdvt+~;W-<|qYnYt4%5%M8QdR|0P z+1wW?ghKliH@dnJ4fd)%4Q8kYp9c+*PlIUTQG)cWket#&KAd8w&>hhc zStzYBl$ICPW(GYEO(vS_#r#ON{pA(Z@xPm#QaY%ER=k63X6nf){|1;hAA!bivj}*E zesJf{8geu(LUQsjzM2t0u*Wz<3jHBoxfU^*k zj9A)+3J1&js>>$|z3;71x1U1Yy%g&9QmETUp>A)5x)n-ia7p$LH9}&l8@knAVI1Y^ za-|{imgJGTCjv83A1BJca=CoWWbSgc(FA5>{?WfXXYuK<9WO_I6-nphsrqn>7cgw! zA>2aeYdmZphGfhZ=L!o(fg4%)X)=QH;$t7O>H5uYW>R&H()EK;BnC#2*qd^k2jACO znXAeMq$v870)0FAo8t1b`WHfofW;QW_XM+@-O~^t4|sEXYR-jSVI9$vz>dU|%m9IJ zk`4sZ`6V4Bt65N_e*Cp!PG6{o9Lw!#31iI*O2wT0v+wnOIg|$e=g+F|%#@OXR zjL%1iM$fy*oc)$OtflB3@;}=Z!LTT01#rc^D}}vAJTFCZ$d#5d1zZ2ZioiwGaQ+RV{9~(aIz1xTubPA0)@$? z02tkLo4?*-QC?@ft0c9SigsP-Yh?F$KMWY32XF>aVzc^@#|XP9@^MDtEhX^cM5Z|r zpOOfbJEP<>($4?{pN`;9x-kDM+qhLmT3Rdpt5zaOV%?FOrpv|ZeoR#*aU_CL%?OWN(=il_Jvw zP!C7ouVAAfGYAG)ng)R^Os11SPn|-tl7ws;GDMpSjmh${NSH1hv6l8QOT7&jK1v`S zqrDLW@mS;Ebs!#|KLJ9dEm9`i&`66(@&tbp51m9ksC7T!g!UZ36A1n^&P%}z2yu;0 zJXI(o&fCfnS2X*;`1^-fJX?9e#gD;-RoY89H6DF;uM!zp4T01Gi@tLbjC+NMN6xHbvB3wNF-*MdN5v$glC)m7uYaM z%~>`wT@SG<{z*NPXtzqmo6DNh>}t=lO5=xNiRM-kG}y@nTmNpGki+EUFVDDUKw-Ou zHr)Ub)?Y#1hC#V^AovGyh`7vyW?2BAF2jAG_n4e%fcGviEJ1mPfpFCwI>l!>%psEF z$|O11$saT-7A{NDZ%6QuSaa!2yfJ|itN)c*ng`+w+a(T{l^fe@P;)$+txRLd{jM{l z&L(wO8IG?vl~FVN$v6ZrzmJJa*mk6I$B#>*vll+T$0YtIcJG6@doj-hCiNv+G@)h(k(5?=CVntWZA)~BwKcaFla_&WqIn#O##&;9K7QpP=jNI2s#;azB^6lw@lhClKN11g%)h%1p8CjsIJ z@(QRyN(2``NuWhP*!v2Ugv`7)ozv36#Iu2=Ln~THA@Hp0xI?4D7-lG$T8$_5Q%J?Y z*rtK8O`9R$p2O%{nNBt0=LGa&LN8Q@6QdRz@~FU z@D{-~jArttI9&0y<(#wL1Blj62>FYPvf(}cuAQ4)BCC~sjj#nRO>jwWlRFGF8Dc{! z45in5B9U(cXhBdX7DfJ2v5mfP{^bbCP$iIof-q38PEy2EkolcFmh)Fr>=PtIcBsYD z9{prNL5Q;qrOcvh_f1phv|wDuvGy z?h@G@u6=>%9!ZE+InnyRFGPEsXytJn0jDrcGKhK>qs~}T5T}_Gs?4)Uwnh3xswaU< z1{z}=ht>{o3&_ zlnM!yWf-UrLwXIqxET22Vl0QOJjcL3I>`8sJRNpL&>no zNNmlm$y-`<_#o9)Yq!gozeNn_n4HKwk>C0`#Pe7bu|Ap@&oC$!(HFT_PZq(3y%gg7 z)?Rz{4K?z6+(jSzC*b{)2vS=UN84G_WS@^JocCVd4 z%_g!jyz*;|RE@A>3w${vS(W0rdrt z({$^-jG~3QThH8;(r&#D@!FZA2$tw&cKqsg>rI4D07ss+!^oaHDVuI z-xTdu2{}`vmsYp6wl*hPAQW?OqPDHkZMn8ruSri%q>|GT8Pc6RPn+^o958R)9bDx# zRWq%WUJC1^4F%XA!FyrRX%=sWzx#g@{3AXiu)FgBW+Djbg&c0!Lux0%0bIA^)}L$G zS_Irg$m(%Q0K>rNVjR~9fI$c}O`8NqYc#5|+E9D^zb-U4pV5e7>J}&1xAv1m(#o{C z;|+8T-S{xjHSV^xX3Lh1xovTm9*N+MaMn)trvW6#IEjNn15E7Jl9AA{f(;eqosLAu z2yS2dVs?s(IMOa&>wRIzGJwq}_?V?^OmeoO|K0S~g+D7H?MSBYO4cX!;}sZfaSH+k zGPyQjRpOX7;HbEReD`j#Ki~JJ2aEw-ZgKrqOe~ct8%_VsnG~NApIU~;?y}kDvg+!} z>U7=YL~dxj4qPN?=*4HLEC-<7ugi0Qtzo8{AUvd7riMUvX9l4#vD9^DR+8wzoKze# z{^5c)&RS{=F5K@j$C|BEv%o3QqJs#A%g&=wy@@uQzG#I*Rl!1^=}q&;ohvN-NWt05 zY}w#+T^q_-Y$z0s8o`igZ5Hh34|*D*Gfe$A1V5QvV>`x04-8?xv-iekj6N7Ed_Svq zmyA{f5~sWfiM|1feU$)|vs`goAqvF`KqvwY7w`_L1RJKJE=h1YGCqTHmY)R!KLx>^ zcZ|#DBNN#yINq}$;KTW@Tr!b`23pLYTq~+$*qia3j~_ace9ygY*i$U3n6^gbdlebN zn5JPDVynjFdnEcj5QMEgESGDo&c$4@qN44Rcd%$61f~4 z=F1A>ve)wzDTKk=gnhO``gXWNy8-Ng;7|QEcsh~!)n@Lo+*-})#f>3NyeL#)8aWud*Vx(_rd1>0C*f>xvZwcG#pF8aD*soMK@bCUQi-Xf8bXgnr#F( zg%trr&JNbUSx=3gzkrCO9wkZioTwM9#~)NF5Kbss)L~2tF1AKyJp2$}WTF#_;7(_U zW8E1DXbaUOrm~}0*=#z4i!46mP6f2qK0@%ny~n~l5E4pxWQlcBsOTA4RJIz6NKK`p z2Je4R-)Agp==weG!+invLLgrS+s0#3S@0{QA-huj$Ycv$_u;$#1F)0Z0B%B%J|@Z7AzXlHM;?*-T)J#<%^^@|dwSqR4*=L3 zfuarAY8iYE5|pPJ6Qk0(WJ5c!r~#QwyxqJXQS4|i_JgSQHbS9M2KuB&g&0a=jWRYG zL-`yg93kbQi6MeNtymeo0uM;4cv6GqUcf$>>}qs7*_t)RbvR=YLXMbZjcq4!rb_8{x~$wN!kt8rP?Eex>D>>k8W zOqVu6xOeax_aIucWyr`Z3|GJ}7a$O(JKW*}>f^0BD^D|H_c6-STM7WeP3$&F9!VcT(Tpog%PM3mmMhcL zKnrjrqLjB*C#07kWscA^p2}rmiMz_GZ!#wag$OV!1dYkpW)RvnmSTyG7snRj08@%lF(c9*01Vc~0iY~<2vIB><*-|3jA#`J0}k{?&yl!8 z76PcEP_vu>mQ8gCsIXkKD|NR$ADN%xUGU zlx&8R%YlMO?562wUZVf}%8jrXTflzS{{nzf2wS_kyn|ktp_QGCqp1SNHiUmuVDL1` zh7lUUBWrYL-Nzt!g18(rDxGOT+ao2hDiT^-#%Cj;0mp*aP);pojEjV5XdDkG5l@?bbe9%BsP=fS1 z`~Dr9P$s7b;fH$={N-HRzH=n%k=uOGzf`6ke_`Kq4A3n;bPh3+vd%rR*iFcl$$7{@ z(D~Y+tP6f_z!$nQIYe1+Nv2klvTl15ehqj?S-%K|3gIXES%MDiy@Q1S$4>4oY+Bje ze=!-W@D~Rsi^OuJ*k7k0)+!}5cz4j@u~u|V`El@FvIr6OZBd|_9B_clP6_BY`Uj>g z=kBq0fGY*jDI`xw#b(J-JX1yO$k43mz%e33ynu)zP=aC~es6esfa*y}4$|>2*4sf{bJztj!Sop}5sLDH$U?W+<3it)AciK|Y z=!5JYX2h^z*$vZ6=!}(2fAI3y74C3yh&cq`izCi_SUQ_aLEs3uVUi6=o`?5Q*e?2h z0KE~sbyXJ|D)tt{Z1pS+lpL83z0q5-rA_6i>A1wuFw8hA6-rm#aADc0``)|xpZ?E8<;-+%tkpWXEl>akBQ`0>cQ_PTT6J44p{Q}lM^9Kb3Q1M_=K zk3g(&uAP*9#A+|1TjfI;P*e&Q9K#^R)?f{OFA8yNBismhlw$&d5?zA^ehQ|I5@J2$ znS^iq9N>L~{N*{LTcwjV5<69H>xG}WF^2aI&bk5MC^@DHx}MqQwLS)zE-VrPeJO!6b4Jr+1ZIWD?n&tzjfI6-!(1rQbK)?D10L2Kj&m4@N2bg)wzUY$wlZ~}stv5;-G0d=|LlsIIwFxqKK z>V?b}#*WWK)Hxae0?_nv^4mi5v+i5oe6=0vzs)!&WE8=lTM75{!psWHBq@EQKgFo7 zi$i2*{%)X64&eTtM3W0D}o?<8H~hq6~bR_&tBLLm2$NF zHH9qcL6u`Y^?oI3z<7Ndyf}6*!0iZf+Yg&|R`l4(2Ib^uUJY~!Dih2?5Wa%gt-8vP zPD$&o1nm^wCfKJ*)Z_A=U*xRt1u&LMuoQveNFd5qa4&Uf#`dZNS($;gcp;}g5THK- zQCgcrXk4#BgVQag@ZZ3;WHSg)h`(KgW6#VEF(8-ABx~DpiR{HFtsmQ~t_*BzW}LgQ zl^xYxY6%{190mSIL6KlhjF5Su+@K0af)Ysr0YqvD zO$a3cREjRiCRy3+hTRPiD;=as5f!l@2qH+ZfQ7Eu6|w8Hcd>V|J^AOHxp(f|y?qmS z@qO<9=SgPg&Yg13nbYQsP|oUuK7cuH3?D$F4SoQIks_!vN?<W^Myy5r zjSAJ#>GSBwy^tGp1L%O@YIE_qcUf6)f}#w3m^-=F^vDM@*s);mnAztNOmDQwBuK#A zKc?FK%)Z3-ZncJ)><_t}VQ=sv&ztp^eTR$lW?fN+q@=_$>k4axM4N=MvR{UeB*{DB zw?tKfga)fRrC=lF2R;BVeLZzVY321MvDT=%xV;>b(I)r9S>IJp1U31 zcj>wj@|u$&iva>tc5hhOf4$a!FYu>iku!X-r ze?{IkErwU;*KgXOW#vk!e~qpSNm2)3bCM!E^ni6iJ9BSIT6n6~mb9eN(AvcaUd-;; z1(Q>{DzV_NN;E&#gr^jzjH?OO8wSUBdQ17A!}l&~x9;b*ZI8I|>gV3L`uiPuBM$p5 zxVrVb&Az#4-1+O<4{rS4#gETU?YXS$mj3gH+;{IOo#r5E3&;nV%bgirRx2q-4DD0{@%sZb#{E*io#*qiCz(dxXoK z2f9~xx03FLt)wf?J-R$EM=+Bn7}cwS4b-B?lTE@MGns*1fnX{Lf~lmof_j*+tMv>; z{JM*qsYB}jP%se=hS-=p9%7glz^5AW5czOuqaK2_o`79W6Mjyx2#~PN_DqnxO!D?v zvVOx4kVGhm>GMb|VofsfU){$NT&?Ns%oOy`XQLGfUMbtwaGWp`jd6V;zE_GNmAty?W-=TOPO)!_S}`<69+Q8N_n3 z1>;5nj`h)B4Gu4850OkM{0-JK=@LQRVw0e0jm(IRFWSwbfB*>%;G6J-u+Mz}Kn;_+ z)c`Nyb@t?Ai+lv$Cz!>PIIM~KG59Zyz{RGjyVgN?pZ-aSY_`HbHzE+X7cp6wcGQMr zfq1&|Uona;>4oqKa$>?V#ncbEL50U~>O%m<2-a#!w4|tAyEg4JF3f7%HnT%|&u9=- z0(eEq`ERP)=-Ba ze-7jQ9S7eYpf!RJWtYI10aJ6c#9ddPvR^P?&(xJTyEdepRcE!be&|~#M zbxDROP8p&&(zTWtf{}vofTrss*YQ7tQRp3#Ro_!~op7KS6MhK=zxrC)A}#Oh>FGe#`i)wM|3Y z>lvOWY}@N*E}PN<#`yyddNsf@1cB`^Jj@jwQ<6_GahiqA8njkbIfbT;8KYF6ng<2} z?XaUeF6h+RzBdLa-w?sON<~p(S~E>$o5OyAapn7J%y!1cSb^7R+}Dze%#) zR5LTP$c*#BN9cB%4K4Qz_)D+>{4P9qU?&|^5uAHBWZ}0cDb&$D=iwX<0zjic9}h&Ywqhn^k#aN?TXrzP;p(_B z!STiMZgY}+Nn@M9GGwy-iFmC3Xm0G{_lVKr1YshOsQk9mE2=|EsHki8NnH&1FJ{f~ zfxo~9{sP~{B-t6!Ar@D%tI>)Q3C$}YF=iYy(y{esKZ7hHB$ z!|!&Em{(Fc?A2bE6kZ@lAFK9F{i$eo+p=)GcA;n99kzBx})pgo~*MM{QAK;hYo7~OV?Aje!g{Z-iP-;{=-KfoPN_+b02x~ zuTxe}p8nnEr~R~j;k=ysi`PDM?11c_`|ay8`|#gStNQm3-=BN>j>4l~J8^o`&ZBn^ zUbAP~R zn)mS|UCM*IUToQ7^A*kJ9&`57*Y!H%`M>u~9`R`P8BOX9ZCSo^^X6?Mj#+ii_(M~x z7dDUm{Z{|Y<1Wvcf0VCv)ph3wzI}hrgW-$!%=+_|FAw!qU)}1PE^T+7)8N~cU8?_j zYe#DDb}xT*#D+FoPMp@U^O4v3FPJ^<(yAu2IvkhMZ{Cwd8y>w(9`Q-Z^uHQ^J7aW@ zh2PGfd;Y?I{k^8ex=U`IRQmFIU-K_sc(i`Aiys_NUA^<`;&-NW{$g!<$*djMPfXwS z_7T_Yxp~!~^9PR|zpeQ@pT4x{w(9CPZrpTnWpQ5Q+rzG$GP>^#R~Mh&>F;N&9=me% z2j7jll4U@M z-x1u>8KRs`4jTg_RVmHzgUDfp!wPJNQh!X(jX>x-uo*Dok(pQ|VqPgPR^+b;^oOk_ z2@V63P!D;XgDDt0;b;oRaL!5u5>lBe@1(Jc611jD?=Suk?5_$C=sb69Yk%cBf)LFuejQ*cFDAQ;{NlP-QSW zCWb4AFWL$tGRe{6`kS=EIrmlA0T;rZvz_@_Xy`EnYje9MAu|&##gcR@f?LSoJ;~>K zQC&#*^a0gOB75ACpfkI1UM2xlA($D3xMJkNyWi-xM~^PQZt00D-=6mR+b`dFM3d}g zUz9YNHc~qIf#yGghkxh^_unw|Kj~e{f4Hh!_WZu`qww+R&=Ywf0Gx=CXBpUoy0}nN zY9MG62}TUVd#W-ZXc#Q!frWm6>6dOL5n4>hS?iI7*u{GYePC=&pZ->ez*D+d=toyf zsvCL{US@5hWbKxT8#DqTb33fYjff;JBy%@Tg6E(qJS((wqvbItbMh%E35JO))G7LT z5vOJ*z(fRBA%akm9!FjaQAzx0uxrYki)6$-%m!1SN=6t$hrKYlKuC=!F_4n_ZY@#- z^kDy~Q@$xX^KS`ldU6EJ2zi(toCvt3TbhT-iSRV^cLxF~_OAAG;{ACOn1iV#p#MG!+@wN&lh;2j-e(I2yM?HSvo}*+OZ24#PcxX#}OX%#vtM3SrMEG zg*WS#gz*wCCG6{zL1C8VQf6VtjRK##l<;HiuNv)Z7eUi#F&X4c0<4c-@OTss-eKot z_AFcLKe^Yr_-wHLE4y_%ZuuCE1>dBHh1)X`S&@@~$C+MrG6S>&7yT#Eio?kIYb2zf{FJPO_P?hj0Q@?^#zon#|Wj zdWr5OWvoC}h0N z!D63>OcJHhkqB{z*^cj}Q&$-KRF%SU zkirNL;HLKp7Y8QvgN%TMz)>kq&Y~jsbq@op4#?J(0m4?-wINjw+;1E%6>Qdq&KSP| zmzf!crW_FyqErkG(WrXCi3#8?I50tfQ0hXynP?Tn3deL8iHa(9)Z6$}<}L&_7`jDu z0x>~&P^uIJ@P3&{l=z(MDTP39m{37EHhd6s8olXCql?~YcU(N!g*sW{ULEW6Rapg5Q@^i;=_+b z1*@B3Ov*A17#|ioD58dHZ4vCdhDJCp8^n55|0LdMF+BdZN;X1I44(q?3NdVpwp1j5 z@gN=;`=cDKd>93Fi#B+FIQ1*70s?x}qYdbwihWrEp6T@?RUouO2*_QgG$bN~z8&PX z4Fqk9{fey%n8FJAfMWuEv7glSOK`Fo=2eyXZ`9^h`=FAf#C*DiDN+}kX^JtS^Ey=! z238MK70NdO%tvq~IM#QeEO-`gYoJ@3h0B-+)|hpi1=sV~T*6Cp9lu1qA~}Qk4f>Q< zgv?shi}8p)HbD)vY6*G(>k_;Nk9;c%2wec$A(&sN#AFP6?=#)s8HP3>+DiVPs6~Vl-$yH{AI`hxZ(;BW(TbJZco6nG0P*&s<0M7>}b- zANj=J_N{?GdgG*E*z6(%gMD2cYP#l0gnE)s5Qp@`#;6iIRPYJgrv6Rg6T?UH&{q7~ zGVJ3HfQJ$8bzu!cu~=tsv{gr#q6zPi4&ffbTsbAVgbsaw0te#Ccwp;&BjdrX(9~iC z>Td$m7|5hZMAUZhUhfE!Y?y2&Ioro?dNur<{wci|4+{!kL zpk4A8`PBC>1~QSOh(cWf92IK^hZ`x@=RregxXd!Y?9f3s?}8Z64B#XL*M#8V(lwWa z>?oFz)Z#>>S|~EiNU|bHTFX10dq=usE}a~_^_-hBx9to41=DjD%$2VU;8Fzl3{`6A zmATv6{5%U7MoSdgP!!u8nG1CCiqQ~vK_0UddEi>^qM+TF=s5o*>t!+=*Ej*9Db9;Q zN;Si|FyCRf+1WkDB#29y&GUs36jxK9JY@T&V0{ZKmN;;Z`RHVUE4kR-??iI3gM3Dk zwXKr^n4KGQA;9cSAoPIBO3Z+ z;mnK)9UuvMKICC5rkeoho=js^?PDYtsY-Uw3Tvx5hGr&`=~ZE z7@45PoU$WNx{B&-U)Uipcc7U04wl!~4A4ZA25lv3LLqz|U~=R(0OufBZwriu;QGOW zvC;T|ig>VGxjj>IzCgl=^6GjSsKWw5i4;Xt-Vf*p>){cz%K5r_hvJ8kj`QEp@CUTccCJJF+YFjs>$oDt)tN#LCQ3W}>R{?qC-9qF!T<2u88v)iv}C;n$}B%_yL*s}R;X*feOjmm*@_X!%FB+$rKU=3jrebTTf@4UoM{8P%cB77}Tc6F|-=Oe0f$G z8|KAbVoJLto<9MMek+3Mwv07x&L_CT5o6#9q7u^>(%FAlMoTL(Pmod-d4k0i4S{G} z3!Wl0rL%+@9q8B>9%}%@ttTjPMlNI{r?|yR(;g2WX%MMQ48B5txWXkb`e@H>uz=43 zcF7q4XChdbc??)iNS3n2jwX8H4Pe2dfss&EI8qMOt!JSY1_Jh_UOlt4_bhCPtR~(8 z$?OBL1}PiuI;6Fz@5%Ha=IOD}@(d$K)P|YLMxq2ewOz_6B5Ql2Q!X4yYuyOiYjjWV zlEX^--g_aoE=_9v%Rc3~r}vgymwx*ed1IwP$E5M{zLguK{7O8gC`kibOyuPSo0k6g zd?Cbj!E@ToH?{J=cbu~J@;oY!{$9e%hfgcmGp7NZtc9o3k{B;94W3Zh@9gbV-n;B? zUS5_p=iA9MmQndtldtCG!KD+8j;!moxy0xhpi)JFfX67=Bu-Jm*P@LQskRs zdHM9qeK%zt2|Nm(0SjC5@)^6HESfYlMCFa2`kt51>fEhU$1|r;c{53ypIIC4zwpQK zG%BCGxht=KL$@(6UNJpN<=I~z!ONHa`=Tkote(Wm2khnL%hrr7d21dkAG2c;FJIIB z#XZ+F_fh@MPrl5{*A1w*aNV1?Q~9uCPUq$KH{5t<({{V4JoM)cy!_FwyL+u3dk2*t zedTYweCL#QPu};Wp93qWc=~;jNXt z{Qa-GY+TYGC2~nRqw!t5{Npc6Gv+6_4PSdp7+ote^Pnjj!Ss`Z*t!K>fNWY1ilp7#h=&M0q-gxQZ*Ef3dWhx)Pye}_5X2z?de(L%?l}kVI z@vb{&!Z|9VXf$we{!}!dk)}wiO(^cE^ zXI1T?`WLjD$;;C}dtl@3_u*ku=;tcV$JU*3V#CaMBMejlRbcg4UcY6_S6>`B4B4+F zjom5n^2{5j-u6=A;Z#2A5g_df@5J9hUcnfoX@Z8zGwdT8{%uJ{F=`H;q`Oh8QCeX zWdqw(neU;ksc|-t38cc=-iijfgzI`Ee?5`16Cj zykFbQubWK!lFH9WN!7}~dgbUN{ir&FYPww;Z~rHDo$+I5nU#;4!s}mnOhMm<`~INv z?oHI-?p_Y zm7h3kH!m+AGFz_fC6;wR6cFt)CUKGmk&(o4r&&FReMRU$O9% z9_@PmMdbw>G&+rc^vS+u9T}ewf6|uMpD;B1ORvM&epFar8}H?hp8V-4PaQ_>ocqur zy#7^hwti#$iZN6k_)zQrj8n$^XHV{_R6eny6R$t(*kRxQHTG93pYZDIynOZ-!z=DB zet^o4zW5|wKKGfGgRbh>g39~0Tf)od|2_8OLzjcO9-fpHTuxZGc)+E1-LjO;Pw9Oc zKHM<;nVBc-Y(VvU2a&7{2*CeWsOv68QMEcH^l2 z=#k&>@;mxH-TC_UjQ^+He?Bi?@myBk{ZF&~V&GYv&#zl~(zKcP?7M~9$@o#D_mw~G zezW6$*t%c6@LJx^U4gs$tX?;o>K7Mk_;ycK!Gfn}v;C`m3yogx{qyZ5zy7h4>ZiP# z%iFm>=j!j}w|=5>`3ntyHeNJf@qhk4j>-ow(B^;Bzn+}X_nl*@{P;Gv@pd-vePltC zoi9@P)uZ@6zHUqA+vlCxd>fSy2v+m@TP|yoJ7rXm%FkV+@tJMiE|zvZe;<{f@Xa&4 z{`Q}?y>R+;wqG1}sm8~4TpfApu$wQV`jd{=`uX@bAI3X9&W>MQ`c@fl=c(Mie+)YG z1gc-P_d{O(>}wm3h;KWR$}5jJo|o_P?fuu(KYpO{)~nv*CE z310r`S>1x&AHI^xBip$Ax$d*HyI+>yXY%2x@2%(czjz^Q;#*gxQ2k*)aJhZmuiKv( zyz)Gzj~xHUVqX8(zi+D8lQW#^H~Dr3FaJ-Ertid;pG4)^ryQ-8S4%0opJ`cDMCEBY ze1EAPw!@=^01$F*baw;B9CFK=|uuILTl zG5l{AjZHcJw*N{@Rqv)2`teeq)t%+Hub$h%M`P3Z$r&K=Xt53A@RxdU>_ndHj zV=6zSo;Gh?{P|&gZN9fBOBqf4srgB_1i^_4D6af93ECn0y%ck?Vcc1ApID^>CQUOR48x$LkNh ze%6S8l`^{MQ~EeBA2xAitM{ufr~Y*QjqhvK!()Myi%)rt%5%3Y4FzV6(Ny-_M3 zS2mNEUpit~xZyS?pY*=H9WO7x@VY*mzV1Nvv;W|7QFX<6fxNQ4%c%U~JGAe{OYWZ6 zE6VnZwqrOwR*(Clb(5UUjQ?bxelc%bYIS!8 zwcmYfYu^66V_MuY;(fMXH~FAFFQ5O)x0inK<@Hqm@J2`R@f|9-_+7f^ZmYsYHk zA4kSL{nL3=-eeBvZ`DhqQk%>#+5BIArN$qYzA~=z=^*1L(H%eYc9#A;<*+;R22wjM zKjiyS^__C7+fRS@94gP=kizS)Jfk>sb2}!#^*j10t^CG0ZL1@UzD~_~j+d{x^1}OX zJ|{x$l(l?8E1&ZIsHZ-8mdek0^kiOs*U@jS$lShw%In{}m6xwR^sg2#wfLIKPw89A z%kREy?c&4!P|BBaxutsTyT{Huq7&m|%?AzV_3xQ?>N(dRTc6r#S$_a8-%!-@hD~%D zQIe+IuhHYfC;#5;jCoXD3VpB9(bi)d6;EwCnSQvqax!mc>rH3$`L077D$hRrOkTci z^PQ=?IedYJE-rDc4Z_PW}15U%mUAd7p&OWplj{o%Z7ObB~PHV`^KX|w4XYHpBp!)R&Yy9)0hCh6;vh~wc-elex zy#5#4q|Ecb`jg79YNYKiU;gpLl$C9m9CCG9fY<-+u-@Cx*}~}bqQZY^{OmV5pII-xJ0Yvxs3ufic^}8C_431AZu6Bgx+{ot{9m8e z;rmzKo_jRaA8_co>UY;SeDl)d?`U*7mG{|HkCz|WpfdCFt8S+9ZqxX_v;L@KE}l2{ z#6PG!=iYU^{;_)snjQBSlXJ?8!o2*rZ+?F0k<~t`pP9k=$@-I9EgZVyX2!=_o^v9v ze{#qB9;x@xb5uXDm9NYCCSS%MeWm&HR6hD<&L7sFcH+0a>QCFq%8SqA?X)`L%J+sn zIF-sv&gA>!`poF?2Opcu^o3B@>v;XF6CVG(VWYNGf8w*5y!^aJTCJUQ5|d{dk6Omd z&+i}l(Kq=Ls^7hk^TYMsa?fcEe(;3;k5PHo+!nmN*ZEyOz2Vah zRNi0;=VR;p%v;#51!hi!r^OR9c>TT=#VZ^4eVEFdF5vujeZTsr<+WYZg34QU-NEbk zKX=N{C;jV2DwltFk(cL3z70$`jLFq$<2Zj+FE1FH-c;4;g6pXK ziX(64<(GAw_}jL#86KW>QUx!MzkSIgr_X3f^}Cf^&dVPYA(e->_u}Q(^tq(urV*!6d3rm(->siK@Z5fv-?^H~r9F@F`cwD*dVb#xOum)h zd5D)!ThqJg!0k^_{q8;9<>k|-9MUo6`?smQsw?56-~B88|ot2WQ~m z3>=(+gEMe&1`f`^!5KI>0|#f|;0zp`frB$}a0U*}z`+?fI0FY~;NT4Wvt|IDHah^& zN%Jrr_z|;=4U7dUizApHP&mkK%v7eH1A#VDYvK5ba55$gM_*zY%EyKCKgx+2c3%g4 zmgT&<75=dp!RFv_VzMgP^psPu6i$@Dp(VU(whCG_O*^0*eA8OAK9dMd;Ika38~uor z5Zs?jf!dIj&v4>|&cm{srJ;h){`3kz9K#NwV3Y97!ya`6!2f2iDh*d=#Nn(~AVWAa z2Io?36OnXnGk!Uv>!!qNAHgV$E8ZfH-%Hp35U7CF1aSXMZ+|8B*A zQOiwmc7F!ISc$J|a+V3+mt^OY(J3x*A*oYL-p((v`^1+)zcCQ*CQ4RpewbP#B;l54 zc4IueDfuWphlf|qQiT|37F$-HmF{T4Ho*zeLStB?h6uu0KE}!P7ZBlh(`*=~HL(c4 zu!ebh3Of9s^hsBNJXpK=z<}Kz8#EB4m~sK8<9M9k?f~Z@xWrJXN{_5#TfML;JV=8< z5N%gmu`P#87<6D3k0W3x?-sA<1@E}r7m~(#*~3{`%pEA9j~?UH#|dbl?3D@G`=FBJ zHNXOvB`|AvS)Ne@`2Z>BsBdxarIEpNw;vD1Q?MHtvVvhf*C)ka;6-}eZfM?5)6>0~mwgn%UHIpGnoF7~>Uj&C)Iz_@b7%kFX$t?XvtVgk%Z7 z=rR$*?Aj##bBWxkZ#};B9rbqaGozLBVY(;4+^6IN^h7WsJD&e9j0OVTD}y0ORf*_y z1bt4FZdE}-xCK!V9mGS~dC_RZnD0^*Yy=Lj%B7Jpfp9RUOWDu(sd6WP@EyZ>ae?ZT zchozSg3Xx|4w zNd?Hf@m$mh1p6IYJPi-Efhax7g+crniUL^(=Gjs~^{~r|gV|EGd=(z~8oX-9om?|? zXhv@Jz)%e5rF<2G;qSf(g4|@Y)GWJ9JvZFRNOsEg=>m1IRABs> zAr^cAGlapQQ{17n1rZvlD1jc}3-HKv47VHns{;Zpjxj5i{-!2;4EPWU9-l=(Q9K_6u}3?&ao5K^4j zA|pk?)^m%xR(#6k*Rt9OjLEPO8c`#G!CFy+jrJ?9CA64zB30}!cg<6Hqxa@c0Fl-<@i~EXqp3%f#4Ex zGAS@O%`KYRi#x`Rp5d7)K3E~S9qz&e9~jK*h?p@7U?>6^GtK#8f4E`^ZcKw(l1zkS zUJbC1)zTv%%k|B~j!E?o45HQ; z7wz~~-NCbIIH%4w8vCSIlr|F#26SckOiG)afM5kx;i9r=Bpj)XFY+Qe z9CjnbQ|!8>5R7;#Hvu>n!Q~8RqSP&=9vIoeZndBn2ZpaVL!M9xP>w)IV$GOx$Y4<; z#-!JD=>9%z6wm9PMGP-NWEct;fIxa?_*wU~#cp>7K=RGG+f+qD6mf7$<|2~7*<6aK zIKeHF5PLpANaCQ&z~~PQo}7sjJ{jP01k&QoS8A|7T*@_4pP4+TEGbn~Zag(_3ci%u z`_E5v)^r?v&YY_%n_m?eTLEP=uqzJs8C-jNk0RP<;9>f4$@IuxKOp*|}0kn1&6GZo_Hga<`%RIY6?s1B%s&or?rf@cmGfOLsH>HZB}D zd}u3Zy|x2zZCwZ+xW4v+2Snb;;BJ%8bIDk;XlJb(t6O&%2t^*b6i%|TNMWxL12GX! z1_4I&K`^_!2N5jM_v8l8=x!7j(u;$OfutAAWcDY5TTCNszIe%}t&7UZUhlvupkoJS zuW5j!dnv$$2v*#nf?cB9Di|(_Ks|cceb2<{{o!x~;v+!b%z)ebQ0|1A>@)NtXaGNi z5+G7+>lK!grzL;r1P#cZSB<#;|K_T>ln@kuN{tBIT0(FkPug2Q$=`>_HxR*Ik;-Q5 z-oa#^;7T8fi08mG7{jo&-yqYFxc!E1yh@OV$|8|5v5e7`;o?vr14Gk-NC~~66yBuA z(LE_%N@nd>hqinTXU+L5<&V5~;NNJ!k*)xUAvnxnd&ceU4Po|eWRl3K=lK&|PqMA? zfhL&;ySnAf_-!S!hlS4Ba%QM|Kv=6p!LGC5bEy7JHjAj#VGP~pl{B`{ev*KYOgIqr=PI<@XW_Sqt1pVxpr%8me^j; zr#rP=a+S83ObNB;8?X`CvmNNLk*mm{S9sF*h#S-mjiB!6dqJ36KZ2R#L5HNZAnH+; zMF+uvaTz;h--}?-wjH@6lAvBp47eS^EHINzOf(RSgg~y%fa|sBA0iE>nCUm;gHaTK z74q~~_(umr!FZJy_l;J!Bnr1vkB>yhWaye592i>}j0VaBVU_Zq2h8^!2XF*}OX~=+ zZ{x=;+7IP~GmDl!`Xd0dBI~h5n zD?!-SPD3)E2qZJ<9A_0{i!$i$@m~E43g9}sad7SeZqkM?OAX1V zt*cEnyA|YT763cMJ8sE>VO}LKToftxj}8TlXPS94yv|U##5)o-hAQ%!uyqAW15smJ zIDn#PRR!3%O3P!h42;k#^T*1J;o#I(kG#PHisFGdyNl7{gHTBwpz*Hd#1G=c4URGz;OOrwXX9TsYrqCx|^4Qev|_sJS1iuhwYjo9miovPP;JvvskZkl?FpNXTbl zWPkiCp7)Vj+8qEBQf4qV4f!By#s_XkU#3xvL(z%2P5+|2P%uyw$j$ARr5Bg$ z)fyM9n~aVfN7XTB&VRXpxWOO*AA@10g!Q2T0Qy#R3N_9C2$~w-;IA{sS%jg75%#Ccy}8 zA{nTG%c`Nwx7qPM@s)J-k3QgTw)V8C!iZX1`I;x2f;&+}_TgN90)YOucUa!|}=I}SEy z3sHhgoL2IZgS2BOy}&vj5Edb$F~JA?%?H6ezSib8BOQx4D4E2aL%;lv>hfxOhuL0dZ!Y9MC7>yljivIa!6jSGTugoz%Ay(jQYGY|fY zI5*r<=T*C*fw;?df>o7=EOpnz6aa^p=a^en^#uL@X}?eTFYWhiapWb45DtzzA{P6I z4szkFfu@!tc*b=}t{HjBnoHX}UQ`TzV>=rSz+@eudrppD$ayvJ!z3y&5+}c96=4LvVbJyNwJ+wf(jwrL}8<+bna*Vm_ zisFT|vvxApnbrBRIKuAfyF?z=ssJI}p79l!Os} z*F8D#rd$AU0fJHE*OtW}g(Q#oZao)%DjNZXyP^)5FUvWI0Y>FYreZ#L<18iM6`NuC zLR=L$7EjywCNgyNf|k(V)rB;i1fiW-JjVz8<1or^82fMDgrYzN9)V$<(f*eXK4L&o zD+D8V&~OC}nc92oU+2M?NXv$k-oCSJ1oOfEV0d(7yk606upeCjh^b1POO$;(qo2RZ zEFy-l7Dq)EU9-{Dw4Kl<`CFC24T%Rswd5%E#;fYv&=*(eXT{1Q(KtqQSP%d*LM3d- zd?6EtPSZJjYqPsHG(ll~4aTVkyap#h{}-wepO5WzZpIDs5g(?4RdV3F5?Srdo| zu5$?IhWxQu5?aFTNcWhB0ng8yq!J|xQ#0m56(zGF+eCv9#}y6xLmByzC^&F}ms2KY z7D+6+n>AN5wg68QzAC>00OkkzIU_!CPOeg>s4>@Ggo1nD+&_oh(rTOBR1$K#le~!- zg?3`x<1_CxJw!poV|iMUyl?B_?Yj^(q;@6%s85d?$6=NNQx^$7jH1o8Pnc`hq9qF2 zPb;YK`%ir1*R>bDc>0I)k4oS1*n5jne%gRo-4CD#f?%T-C7URAFwHa!!Kim7gbCQ_ zsK&h!uA&eU92(nBaP(uZY(v#8V-bXbGH-x#osZENuVW_09-Hmv@*tel-T++@NJ7=Q ztvRbG7}&c{er^Grlz~VlXv$w6!>LYnApyGQ1J1jXMGYYe6*}cgfO8}`qhdnRf>nSj z&IZh3f22=07BPDwC5zY{(9{wHGOycSe4jnOCQdI&!YC#N#L?7deWr> zxS2|_h5ZA6Q=YzvfVltQ(ZBPJjE%EPM8N)q2T{-t1^ei*!DM%2_d($07&!el%fm7< z>r79^5EX2LtRsElAHYPU?n^bSha(!5fs8^7I2wfi#LD={H*0n1SM6dKRzVtoqxcHo zV+0Zp6F7CqUkOQ4wY)X>qD=c{LPh0Nw4ko1dXb&X#4(;MN8J__6)@q;yc$J0+n(>o z-hYo|@H4>I2sR1^BLltWe<<}+$G5o}4x2@3pqMcacLoBBS|AXJZMl$A4wwz9mdpf3 zNr>zb-GilyA|Hc=QYCdaT8pDVgewp0{W~K341jA8jFPVj<@qf6uGQ<*h;j#k4dFu% z=++R)hNe-&(x>-f+>+jQuFnR15n!T@m3pa_w4`12A%KdLr{h0)m9$NK_2Q9mwc5Iu?)m zi{eZf&R5HEb?_17b7%FK?D_O1Jo;T3h33Tuea}2FP&Yt~dB=X@CM`*FiZ z?e0>x7#6c*Yd14OE9`1ybbg?+6xwVOF0P?V-h@CA?81?7UU*y(vf^V31S9e|5%G_Y zmA1@$<+Kg(y(*YRc`Cq_2#)&3!2M&${ilgWFmd}s@VORI8g5OLkY)C~RZ|QU<$(nR z>P3xPv|5GicZ0A&x5iaKlVu2Q2-a2=B2m{w72*;Vzu~G9k!vUbj7iS7APMM`Br*sc zxx?;ZL)lImU44Os_07^XicZ|mLHe=!SrHMe=9$}sEg6s1n|y+C%3wx^u(U zVgxg#MB9jZM`9)$PqI?Wp^w&YcJZERlh>%Xpf=f_*lox5e= z2QNRoVY?r5Lfnct4;Bb=O?0P|hz3rt1W@z{mIh*R2+rvrh{gP+0m$bOW*02`jAtm6 zcVKS>Z(GJdo@Qehq(*^U`^AxR%5kLomj0b?v8r-N%@L*i1H1v~a+7J&?l1GZLjeweIy^BTBm5)vTiXcUKJ#Kk&c}r@ane!<*N9G7Rf?1PhS~Lqwsj zlqQfHEIpLs(knrG){2s&SRx2CiX$0P>%@Zr+f(PzpGNj#n(@0_gkq=fo#Z$R!P8=v z%ySzsy;!*okZEzo&uX)X#&Bc5l}5lI2-ccF)IoqWwomW#KwnLZ^ljSl%(+ccIz0wR zP!E~o698Kg$cAf_)p;B2a$}Ys*;oyYHx`ozji(p~n6NMwGmKw%8XUBb&$Gz*4hN`* zu+=VTjx#<=_Rwv-KN`?+8P*_Z?MblDv+m;>h@0STNj%mRZfkORpN+dTlt^$pG zE1!iE@{eEnRWOL#5X=w#Dm+`H#a;oBx^cyE{P_5iBREgQ51+x5pI#^vtN-)Y$C5Hp zAQ353Bq#h$BPUa0#VYp1iZwW~Y7!aFDpBSL_(vfE2|NjuSqt>&#|2yofOeZ(jmMUR ztwNE8;2;8J=w#c4Q5aH?xlec;M1&VJ?WquQtc!;{)J?>QoyyzhN|&?-d;1_jHG;E< z(FUqXva^T*wGM>9uo=6*6krj8U{#=9fLY%~Y`eBN0{#+6p(z;X3`TnM@HW;M$1Gu| z(6$m*N5xO*5o9tw;Lgp@4Z{+?s;} zC2*xHWTs`UGUp?tERj&cv(KPvD!M0&c9j3q1KQzA>5=14TN@N%N4Os zl=Kq}z00+CH8i3+Di)c?`%@K;j5A9@5kDOE!C8W5DPkOIn;Q|#4vh&I$K$|^NSCr7 zLebpg=3_XDy8-S%NM1Js;&E^JN=_z#4&qadJ@$arIrvf?W2SSUOW=K$rrw}oCSf(0 zX+@kCcx|E1g1bz6Ps3=aq2e<$)d+ZBp$XbhjpH=V4Ll2QPWhfq%ag#_1YE|e+!&+N zklD>uZnS5kFZNOdTU4Vg+L+^&SvR1&lu`xWqlZPco7qfReWhBtM@*rtqjd~ZEJZvt z#fqq6D#&3a6(web;E&-WMNv?1&J{LW0b8(6BD#=>cL~h$FoZ`;LN^l7#f1I2!I)xP z!21E#AlRD0IL1I|xT1tWxJaV;8@QA)xt$`rS-fbhFUXestA-CfXO1*uIl82o#1s2*w@Q46EswMKG#U>KoZ^^SbK~91Ovm?9AF4W%2tUG#XP3P0kHa zw z>=(Ez{c$jS8GB~7FxpfQ^VRKyruEhMHSI<7{KDdpsFSz}GnZ&h*>9?GX!e{p841Di z8=AwG>F5e-8>dg{lSO@z6y$$*xF3YLl%dENUIKUqK{)Y+5*=Ox!fczp;a|Wr)9JJe z{*l1bq*UQ@zF>JpNO>2l@`MBGJEprm8cNj)w+RBG))v;l_5|_Kw39Fpd|tK}OcPBd=}3-lK&F&8Dl27A7;oBs5fS`GD8xNz!I& z#C@|bY8*iM+5^~a_xhA_AFJcyWJ0S4%s90VKDHOZ4PyJelc*4rN|cE-)DsS$VMuZe zzMJOO^}IE9&4idQ!-RMrt2F1EJOO zVx%DRXoCKz`}p9%IJziT`7+7MpTZySA~?$zxF;z$3`wllx($%_Ejm>j^SsHC;l$V) z81vx1g=j3JcVGhaF;!V^re!;bIsA$sWwc*~`oJKnkJVPW?mOn3P$l z`EDmVDNM;;{W5gJob1#JN|$K2dmsLI13^Rh66DY0UEIbfrBXzXo`i%;8$A%E_I2m8 zOJ2$C6ORa3$F^DWMsPDyGMk=buz>zbS~4Tq?=UJR0jeP~`E2(K)9puSA-z!jL!g;7 zaTCDbJ-G1fu|ILs!Ny@6np01=!~6lm`w_t_)=6n*=NNU{0z1g(1@$SICXwFQ`8^jV zaP4i4#6dsAE8Jm(sasma*5Hvcj8eg%Y$)63k#w+nUE|#op-Z@lO%RMWF|MiPR>tCy za+Q12-UD?dpSim(AsdBYzp-c$+k$5rOiar007oJ?>+!hbYbQDMB5VV1%DHWzP)#&< zTPL*6M&RihMQ3qHy;#se4)H7t!8&=qz)=y5l2P4>?scM->UmHJ_JjCDA#d$}{*F9O}Pe&}d+P$t4XyReC&Sd2*pJEa9GR zZXshjix((gWIY;3AY)mbdmB(!A2PG-a70wLjzBvU}l+wjLL2oGvx zs!0kg3=s*s0KGcepDO*cra+PO;MWlhS%M2lYul7zYCl6y1g^t5l+w9`j(vc<#Dn3# zE{4b8@;rxNBV+R56Gp3iS?rB<+9v31fiq)E{Ht1mI2Rm7=^P~^_OLYV@x8j^2_q97 zF3U~?Pl_=P#OGO6b;nX_WVWX(y0|Ztgky6lPYaJz-5g@56Zy^bA{V|eSjjr2RV81j z2NbA-;U@ACfRyzSoY@wwdvbi%NhM2jVydp<)rC+@+yfMr>YCxI0^HHabkUtop>rCO zF-Y1P8lgz8;f0dP-iSi_Y8X0~auPse1m{f@r3&rLd_!A7!MMLGK@%+cGI?{JF*9_c z?#g3QP@Hl85LK^*_@A2C1&u<9GFuha=?A>(-bpL{o;fXGuJ;rN#wkc#S42O3tZx$L z1d_sag0M2v=ErhUnj$TJ4uDR-_Z=e|u(q2sV^$}8|Ldp9zs3=~4)6lP1~Z|SPCRg# zmj9I?IeHRlg-|7AoMogf^Ok{u-mY~-ka>9xVeilcTKYAiS8wC+mH;e3FbiTIPuC`7 z=vXUg<(L9JhfkIC98H?A1sM}Q@>=AjNgw_y)|0r&>tVaG5*V#;tq zeSnVjGxp3<7r^^cYBFSH z`?@96qBJ9+D|nwHRzoGpmkf1nn#;I153@Ma-P1HQ+z0amF}p`VMPRv|^y6aTav! z!Z-_pw4kvb-BC%8Tfa=aXcjCVWK@$TlhMsdo6|9KIqB_1UcilrxJ77!{dGuB7(Rl> zQA0w^hPG>}8?)w?7f#q3s=4wq!ME_ie5hV{a~+Hc@}&VG{|AAbDmpn(Kp^gkM-3u| zV^8yDbG22CJlQ(j8(f`hB9SXGk@eka59(=!;Uk?nm}X*iuB-NB_(*4U4(nn+K(rY? za`tG5PDeNU@R8gc>%25t*VL1_zC#h2Hv>F?Kq`(kadSJJj=ot4w)I=={3Cxw6(2n_ z5=(Bd!y`dr^}1#OPsdz~l=-@s=qe$)e|QGm%m9@A_u5E;)*A+^A^=mHTB zlbeGp@{ga~=V1_!BbY{!0NYh%b&J4aI19g&s9g4Hw^(@{2suA9P%a!bt1J&h@$x1ua-G{7RS%-l-qjwboIJ??_$l8DqyG-U1=9PxQf?xZ zAyw-R0SYccZ`oQBTh`Gp6UHnP#VF=D=`URHN`P_%XR8nqu!(C7-lj*TWp_L5OY14zm@<`AXR2f#Q6dsJG}>tI&Lv~62*32zO%E)+yLz@i^_t&r zIr^`+cBKAx=)T<2la5`v=JeCi<2a?e@4A4hZfLR^N80P7GOJz8}vYMc&G z<6Tzc5KIH9`vt>e0>wyq1rT(l*}()0wzkRXDhqK@AxP?wp@fFQMo33RF-ix%iq90B z#QOj+E!N#Nas9&klAMf;tKM4RKzxb&?1SE@unl=w{_#`@7h*_J1p9z4Tnv01&lZSu z=)BQhgLD2nzz+y6kd{oRKEV}3=!hEz;-GNMPjH4J!b9_^UX(Itl5i3$#ox8)WSv?E zos#~>8TcCD69ijyFE0v&f`Oty2F&p|cG4~eFM*@X)E8RrkC$bHg5dx}N`y)Sqoe)| zb`2*AoiX#E2a|VTYBBIs+^f~y%{;NKNgKU-W(^G##d%`eA8^p_otbTjRn;wLrpDtQ zFtg9;xMzCLNHou1q(2OUE0^MoX0H4YLNi+UJ`#oQ_zliEPP}_{vkj5kKc2_&V9IA? zQ%X^+9-O}V7v&M5<>q$F0@quuW<;~y5lwqwIAlb@lsw;{Gn18MkHQn8CgmICKEC^$ zaeP=50!$L|P4Wq-X(3w(HSCd>e0-c$Qq-#P`iUUi6G3jy^frj=HL#VC_+b1%x^kZf zwtWEZ8$ec>(gWapgvXLXV9fI`=3bHxbw<5 zy1by=9}4yNGE?O}gMkoQqf;yq#Darb*4M%wYA@N?*c;D21p3$qSwb}cC7H4~zz09m zlWJ>uvKN=VFkEK_?lH+!n>wbM;(-PkbZU7eg23)AHUymgdV<_TB0dPRpu1);Ngw}- z@_rJcmnfE-S%Y2ZAek=eWF@m>rrLS6taKhPT8%KN!dA<4l7y{Wz8`6Yo5U;+?-8lM z|J1T#NG354dwmU^PIYImm$=Ne-IRwr$f^cmQDVVXx_};~4JCwLXg& zzVJtPggbGv^)^ThOwc?HTBsSEZ{(HrL1=WBp9iF^p);=zA?>v=hm#O$BJIHY^vJfc zl?ENjfb#Q@b9q>X8amAC&@$NP*-{ClAn80?LJR3;q@Gqo(oM{!h2MkTIwoI-^;QF` zDU)M=D9A(5&X#glpPsDYwh=d!Js42R*AO5DAqgap2Fu}A%W;7i^h!!~FJY^4z56#* z?ZvfGa9|)>UI}LsAaR$u=h{SV;MP2gV-zN@a2w$8k+q~7){cJWWoG%XVG(^tdSo*- zbQ0GgHuE|R-})33rJUyi0sl+gypaI#Nm3%vwshVya0o%E&_o7Z?t8(fEyxVK4b~@# zPC;D&f8-))*=Tg!LrCD_hIb6~h$l7l?$#YV@j*%--_Z!QMDVysKKJyh^3Khsg0u;X z(u^U4;p7<_MBsz<+<#DIz1vMc=vs15hI7}*;A7rj+X>RFMZ-sWnILX2!lgV7D8u1U z7$;CyLW}8%F|mpCLjIS)kJ4P+t|6%3$bwiq&?yJL;>?&}B2?Lh4u$1IK~IF$T+6WH zJ}!lq0%Sn$;~Gent~<^)ifectMnD0BwX^3#YxH-$qlLeeLgN}Z-A}{uG3;ztFHaMZBlJ(82nI&HYv!->-!PGob6h2 z?O;V&00SqIai)0TnElBYVct127OhG1UcSO4TaWG~Glz{a^MEpg)^~$idIECIT}#Hf zP(Gm;v^0ajuwcB5-M{jvH(!oPhQ}myBZX$ow5{+;%+Y@n#ce8pq#wmkGqyb<( z|)-qzBVA~})|D6rxiJt9SMi0lPwJWxJa?YdMGPY~J| z;CP#w69KtIios~;(l+5y47dpxdCEKhNFJLq-J7MNXXRzVn14)=`Q5PBhk0uN115ke zD5j3u*{f~OqjF;)#WZ=2p7PEi2?5QF=`8=s0pNbMq)WLTI^LN=vzrXtwVaQNXt*?k z%^73RJU+p=-U_EI4weRD@mNMd?{1mwO+ZjJE19_pW5r{Yz#eU**nfPsY{J4hK#7z* z*#n=fVc=CA;*%X=l~B0M7UJ|3DVL>Q)XTX%ofy1=Pgi^w^`XuPE>p!=%efa|bC_5U zkJoPY$e}DE8K5P4Jl~F4LqEsUI2I2$h1K^%Jk)<-??n?CN)nl(!<=bOl+#6zQbPI_ zoPo|b4?KySmR3@yW!J*dK1w2YGtBrxgl(Q|LL>wx1Z_2P&9Zqkkoz}O_14JbG5dqP zo{=mX|97IBYC*^Gs<6~t`7l=@%$9}6bEziG+Tn3tFp1mv>U2yPFoBfYffdLQ7$(aI zjuEA8DX=Ql@nldYMV1*uM=79;6^9|DGL`|X6AmSY<9I5uPHfro;m91(0@w;cI8UK$ z*$`8%XRhpk9aP5WJbZgNKmh`cNFP&C3vBgL{Khr_JU{TDIbm4IeLCG5UZ*F?3nP=| zddgRK;xIgH-uo%Q>A$df+gKaO->vtW?UQ2p%{6 z$Y?mK)2G}oDBy=5RKV%v5|17rredvtyOt>uk2P6psOqqrKpfQSYaq zzW)NFw$ZZ4i>em{R39p_SVhaa9salxfymO1Rab_KLxFygA__y|{Fj|kmLKAtP;)lS z@`)MVh7Zd(^H;ST;jFsS&pSOXFYaFd8%p#WFp%8{HIZaw^IQpTG!yu=N#ZR(Oo&RkLFxDv#+Dx6dM<`;>8jU zJ>|(fBFsR&5Cbapj8v1|uX-#Zsyn8TSl^AUfRa>JnwkE~pB}{S)#g z6a^|!{7ae#-C@E*c;Z7ejl-~0$bxLc;W$t06E2Ck7C_C$EwV595}4u?kcLxW;Zv^N z?#akBFcJ*Mi^>Ay{Go#$pTwi`ZUxSRaw8C7Omnnb&d2{JkI!5n#v5=Ca%9KoUpHaL z7R;8{MrLbd+1y#LT|b@3j-|JuSFa#!hhe^wAMMR`zo5t)>e(^uqA#4(?MUTsBiEh9l?NlwBR z=;_3&cT3>2h+OWYZpmy=$D(dA;&ux{%^g_K3O&9W80@{XH07hu;8MVz%+k%>Wr6bK zIX1y~;n1{*=vsBeb2~@0;C~j;ozl(qfnIe(@T5P$3lI^k3&g{sd~f_LXFmn;9(aBx zLvRS)i=1PO9ujUZ&_|2mjHMX^e~i&aSy^qEIl@ilwwYP(D`&S?S~hmu*bOD<$xSD+ z+UD>GDcQkdj?)0Mm+KLCF#O_w!VV@6gwaDNz1*8jS#DH#e+bV^24gX>Ds)3v6V3%b zX~f;UHZi247;c1eN*MzA8O8;RSq58*MRxNUG&U#)bad6xNyhrmTxHsL*c(o^60Q)4 zQ-QCtd60)7HcbP#3PIqYI$IR@U`+U}wbR)}7E11p7CG%KkGTE66MXkFO#ib8My?_7 z#c*JJS)>B;3YPid|FhV(U>W3M8fD*SsPPL53k!rxAqinjX+4krB4ju7;wg=bj(X^R z!s(Yca6LZ;KxOvr8saK&u{uS1FeKl3hfR2}$!CN9f`9M9u{xR&&~a`;N)~1WUK=GB z<#4^xnjkvkMQTE;t_Q6t2dn>2>=a%GO_4(X6XzUO!|E+VFb@q>h+JhMdC_Pjnj48m zA>F4Ea^a(}Cmpd@g3&yK@YVi=i`uHdnAGIHs=JXheCVRI4sq>D0Q5w}Yp@x^>-0Eg zP84@#<()~`2}f;%Jg6olYg8mOU#mK1VLuf$60J$3Yv_bXwWMvhk2lKspNTh;kA?l? za0KIyX0iw7_wH624FoVM57#rr+`pNC_4&O`4vg7qx+-SFo6+Dn5dXv-FJ{~x&3YOb z-y3#qTxZ2x=*3+MugNDNreYXfHG*UKV@@5jQD9yzo8m`gcU`3sCk0d%hh=WvQ3y?}$WIEfsg>#I@|W<(M+nYXT*C+sA&3`* zRlv23!pN9FI6b$AKkkPf9Ebym-ytI6<(rtj{cM8DMw-|gx*s`v{8Q2x=o;T69rqD#6V&J90c$Ech$nNM!zVn$+m&2z*NIr13 zQHHAyQ@01ZS`75%ltGTz-D-o?~RZTiRQSh-VC-Pp=!dz`GxB z4Fij;rlHV}6n7vv4P7&cXXPG1(2hEboCf$oUN|1Df*SOsYFn}ST`eMuv5s)jQZj0x zdj%}e8xo%cqJeNxz_LUA0^SS7emUCeTU z0M5vm<&2Ek&g+uxJn7laXq4?dqHO2c&32yMZ0Fg{c1G!J=h@A6p4~RiQ`g3M>e@I@ zT^r}_wsD@iHqKMm#(C=6w6WT0K}B~Yu{O>~&<0fu7a0dACR-m%OMKx3Zt%!CI+fDa8NG09!67@V=!Z?BA>iIX8fi$U=#g3DRTpK)YlBq zM7|T?76cRHJvjR`1BH}E_9#Y3Wq}aHNo5T6hk_WOMHs9jF=qJB3l{^iTc}0paLg_m zhueW4y^@Pfv_1n zq$6=t6QP->8M`Rk253M9pBi|OoC^@Y0nfeA=M-SrDZsE(j&)ideB%fMb`}OE#PcC_ zjzGtHv_*0;;HYwAqflPKJa>eIQOdB%a97`0`hd!KMP*z?Vu3ZVdgSuM?g+mmFb!uM z7AS|c3TWCRP!xjQ8zX2IYXqls+6~7L-eQenFYOr^F=Q9Bkj{?P&e!_YHx{X^faPjv z!=r=+Q-`4uvJn>;DXP5FfCdm@PI;3oNMBfJHhN1Y#lEB9hp-YNeyGcD>?NTO=V4Y1 zg)?Jg`|R^tygW=|3T{{uKNcWNY0O^|h*xFgVosYtR7s5>OpX3`XhePJSis%z7aonj zBl#^G+jHg>N-Ro^SVc9?0ho=Ydl6{j&G>Bsr%fSI$E+gWUk$QwBwFPpXo{{WHx4N1 zU+U3Yt9+Nd{=u-PpBXy8{jN?QK-pFt0FQrm;YOD{Z4+A062xv8s46N$2jsl9@+9~# z#y`s$0B0hQHJcH-9%a%AwP3p*8jJ;DvfxcAm4XXQYb!+6KM?mDv2<7&+{1#wX##>W zT2xuM;RlSLKsE(mO%vEfED!?WHv@lB`en-8gy!_4vSJ3tKI01FXZ>@`r09#7{B>}aR`E3tKb#KjC4*X5Osi^lx@%meEs?&s z8?u8R^r7(Io3VEj0mwu~mKuwhmQeI)KYb3V|@~n~L{ZutEmjn8Cmtz^Q0P&uuH`k@h4}zzhM4IE zEup@POEicB7ArArTuryY%c^h~RD6aVs)CARPm)%^A zJ?I92w(<@}WHdoA1#zLi?&*mw6$4t5D6*=Kqj+Ie33YSfDhidaLF2+HMc-?;e>{EfD-BSf zUJqTCVSkW;Daaw4#lsHPcf(xVZtT|B;C@qbLD23{SFk=o+Oa@1><@ub2QliQ;N|2e zN)e_eK|+oRBT4wlK}xMce7PQA4nnoTa;u;u+tBkSR79fjKr!ww{!&$%ky5PXF6wfE zL^c#eb1>X#f?T4o#v|mGVCQ-RbVYE3%y445AOx9?NjHa=AQT=ZlQ&35Azp{#7Z6A; zQuZmPMCV3As7yzq>D`LJf>s&wD{8)Ot4gQ~O(mg^Tdj+*$cjdj2l?kJu_MAFt3NU4 z0+B9s18-;5?u#VGrQsFhs)1F_0bJc*^J0b8^UW5eeQB$h`39zn3rNTaa+L4|n*{kmDiRYNP1MfOsK&Ffkz z2ozO9%y3mM9`pi3BED^O+A43_d=lP!644kgew3Rd7zu(?DRwcymrmk86XE?lbu6OhgN_o zhBJNj-M^lQm5TAb=G3vx^$5(oincO1A3us`*(S=PQHC2-h;=h7wz}_C^3lOCnCSVYncgjo3X7!E3Rq=cN1$azD`0USC>F!3 zDWc42^&Km!HCpQVXSrDNGLEVg0B>Eo#9`l7Ht|+Lo=pb0Brz=_cJmWOip&Mg0Y1_#bOoe-SFlWVq!SH2Sp_K?$>motT8mQx1-N_$ z9eod>rtGZFBj#7QHW;F^6u}LWKt0Ll5`#S;sEK~VkqXP(lnpSgM4%) z{z^!P=nun-W=2+FO}Mzk-gIO2!psq>30D=El(c2|J$N3(o|gll(JmnRy@`)y2#chK z%|bS8}5<06-fj6yeFcN&5)f{fk~ z2-Ppn^;h^u2SZ@tpjmMsasF$7G@m2Vpg_^BA?oxMYtp4<)zu~41`V%X zsaicxpis3MiJ>!YlK~LjJ{W^>GfkWmj^I9H?pjY^3(%s^iXVHWYiR2(SQq&ufW`<$ zXRUsX#|5+)0*PhIv!Xf*c-8+nEEq+mmqs|N|4A`8V=glf^zTI3VmOx#Wm8;{zCX}a zge^Fu7?DtNR+v; z<1GhtIM3m5egyau!5HwAh{a@5kUev>RC~;IO+8L{EAB`R$SLiGq08L?&O@M1uD11 zt2nNC0MikSMo~^*>5AACQ!-WVUzWNEyR`t|S_G0mEtrMctpVf1csK;A@86!$JwyC> zg)vkO5do$g*Cp-`$2snKO$P1T_w1d2e71JL#V{Z`Ug2qx4#-r{BB4ID5Fr`tQ>;BM zaMmj=K#%aDnD#mFkEsZ@cod7}$ICdn_zZH!1$NftJ`k)mA#ZG@pGB@ZSo|ynCo$49!RV3B zKB30tK!@5!Sjkb z3Eeo~c#p7j8^8?+cG4puO)rp*K(r}@q~uWF=>xTgoGTEiP6ap)LF2nR>YhdYlgj>HxBH4xEe4u>A0NebYFyEj1AAb=Ui+DTok*-@BCln)Mc!L6>Blk5^|P*0gq&tB4}u7FO}K*aht4sJET zG6Zj{2yf8ic=FQSayqXFer+9g7?mA7^fAd!59<@7K-=6h$cqeh_nVYD4|_BbfDR(s zask$(0VTNH@PZRZX90N@`dl9r!?mWMH9Uw&x4Pnes2jD|7ac_^I=0HU!J96yZg@{h zA-}GX&FWv&_^e&)O4Ay9*9a9pthA_dWBfQgkKrh|1Iku*i}mxz;(UF5mS?O57o;k~ zYeybxKs@AtY6i=QPN5`Ji_qAUq*a@t;D_?>5l z*W49`I{Iam&%$M$0&oR_J>BB6YMAXHld~)kc0{6Y4n98<`a(X3EckEMCf5#K2rI}7 z7e&y81fkN*WKo~?GMzYU<+jMKuoZpXHyx>Oguv4|XC4voYzzsCe~7Fs3y!&{Q;BoSA_sr6S>;m0^Aj9=t7{5XC=- zA?JArU_FAZUWZ$%eorBN)O@b&ca_?knl0G>>jBU_H^(Es!7KDQ240IYnoI1$hAIAu zuN%>e&3f@g)4HR@S&BQht{b$2lR0qnL*d3HcJRK=O^e@C9x zj{dojM~Ddz1mh$OQIeD9+HNezc=S(8R%b6i;xuaVV@eWwfh8lb*$*6cI80XOI~2f& z;1+#(G&jz$`i$-P%-GjM8@aCq}{@Hz}+><|3zJJNg9i6K>s{we&v|&%0+v(Z4shUDRa5{p;#Kw&0_;exLLAwt{aKrTy}M?R^QD zTt{_o-|o?3);QqskwDmn5VnpbFW6v~nUQ1-+QyoZEGz_W^;~IM>ggVL_h?~vLJYQn zu$#qTLku<{ECGz!P1p&95Fq*3jKL7#K>|FCA%J4?(G>#Kz|%tShuQ9 zoxM(-s(R*q4xjSKPk!`!@BhL@8*YB<&Y7z}KYq%k@4xQa>(2bIM?U%c+5Yn%pYfvCKJxqfuAIK)=Jp#t^rc&_zj@-p5AA&Mq|erW`mXOEyk%GG zZI^%Tfgir|+F_Jt>Z`Ew*SzSDPyf-k-!s~|^`CA# z_lbj#Uvt*8Z@q=yKn~so>666*wj3*yzOYZ9vtJ2`XT<{8SixTJKHH**k4cpi(V(Ri zt&gc9sAR`<6Ukjg>7&?_4OwEE?3k|8$r>7u>SOyT=N`g5ak6G5Z9J@`jfa(MEPfMX zJY&Tk1eb*qz$ynQTYBJiluzkW+ zz>oT@5hcrP6Twyu6`A+p7mCz!+gCO+pth+uTRyU|+XYdSbtQb8qP3B$wxcB%T=wdc z+zY=#_Hl(1U+5b`*J+Wd*XdbMRet`@W3YD{RREu#{gAq&?jx+$vcp3M=339-vYOqInTsKEOVBR z(Xdjv9dtjJ0A*N@O>E6`y};kC$CC=^R^V6J zE{1OI+vamJ8Fy7?XlF)qg_8PRLeLYg+sP*{l>;s6Asro`%E1H;k}DmR2pU!|@xn&M zAx4(zBEoic;u`L6OI_$3RZgj&*#soHQpgX$?UA*Lay+j@VT}tqSPvwWO}Y9jfr#cn zotqP&i97ErzDw^@Mov2?9EaAAE?pB8MH>=)PFAKgqSpbYp&@9Ws07FaS0rS?KBTZMuSl zUyKo5h~b^H_up}$QS$zn>{Q-WY<9WYxaSlV= zkG_&$9_DHmA|?!n`ycU>A>DnvF82YmJ-Y~R`O+|jPxN319rWq@kx(Oj$Nkm2e+9+G z>8BR}+j}<(O=BwGuXS?)F zL%4g-?mgNYA8&<&`4+)f0E`nRW7DHbjlJE&_05f=(c?(b?WL*D6QK>`Rq8Jj^bmcq z@3%)C@1Um=tgGl$qjNW`-Oviz;m+D+{W*G6DmlmJ$^Rm^aKDS0-bio*;G@=vUyQ^t zqvZ-;s?bfLu|1=H*sp3dnTCc|QOS(04EHgbNA+C<{|NX199bTf<7p@lp`2vIeL{aP z_Kh9`Y8E-}5>|{zZ2u;Y9!%;;4;K~(;be!2k-y+2Ma-Vc$#S&UIz(H#Yz-{denS$+ z<9-GBUMS(S37!UcuZJw9$i>u-{-HT_kPbeq%brVt%u@(@fMW7SE!nRcr451d(hI+USP+E+DO5mAi&D82~4f!A);;JwEU{ehqGsK;B1Ymd`YcNM{)OG-6dJ-RlR1 zrOeZKR4<3x$m{=#k{3c5ILR_|n~Auq8ru#*adbvMcKzQb`ojdEQ0M4|{es6n^wZo^#zT;q&f2mx@2~e%Rd~h$i0#u+Fl-KzHmm z>3}^wvmj0^_t8ysG&kij5@E7vHboCnP^|J=#a}X((6%0xBB48x4P=|wsZO~YiXI5Z z!1QBhi{DFs_$Po>&IKYHyY$E<+6JnyYVe*8*~Mi7twJPPc`$s}M{95T((ZTM{GISK zzx?Vm4v)=FeCQYV_;bSILy(CU0lVSUYK+7TI4P+Ozknr0CPq(wrcq#>x*@-V5f2gI zG)TuPg<{0%sg09cC#Kh)aV8b9>}w%KCVzMQ+z(bvo_FBFgIoVI7+tez>_eZr?8pB+ zck&&c{G8h!^oH-=>5qcb&wfg8CG3xk+<%qz>dmZB@ zW^AMALK04@Sg7u@dUq|#%9>@BlkCm(!f;3g@|Rn?=gCY{x1HoeCe1R-31d)bv>i6~ zHD+gf`Mf;t7Z<2lsnU&X)t3M~bu*68R=Zn5XF)vH^5BFhthLjJ=XVGFBGDo%HZj`U zl~%gzA}uE=Pq|#D7Cw5R(#yKwtKvpJc9#bh!OymaiWw_0~D3#etlxDLH}FN{vX>#OX)Kgeu_xxV)rQLVNrTD zVB_sMa!HXV&eV9=?xe&e)gF>SY+>rUK!3ua*g2;|3&3}s!>t7Sx3h?To z>hv{ixYLI`hCc?xuYd;cAwYTL+ntcbtmxzAT%P>sl+V5LNdI5%cHz|SFI>3kiBEX> z>V=W(etU1+U4&adR?w1l#l?VkDi$%J;nBiFW`;M=0}0*UQB38}*o90fEo<~UYwBau zTh~zJINuty4uw|Nd1SudukYG2J-vf=SXljYsyAT4dc-F}<@)*^F!o)%ppjpf_8In# zYdHg5s60BpNSAzuJ$A4qH8V-4$quFZBco*bYFl#<;wxHAJ8Uo4c_EkNS)AN`pN-Sj zxmZg&JK^EE?m}4Kx=}|4i=AbMdGwUow)a5T98AvA>9W?oR@h@VjHN!6;xTpJME2{x zUhbqcZJCi0qT(PshTLtLiRWb9(~{&%wuniu`n!aZ$+q$LB5`Fk?Xn$>Da-ZPc>{$~ z+<`H5hPw4thnhubeBCr1)fC4}NidCm2#qD{Cftg;`;ra?^cy*<_%Wmx4pOQuCYE^InT#+} zb|V)NP||3mb%RY$GZq=0B&_n?ms3d9X=b^7oLhH)?NSAtadzGM?FlP=OjYm%bP+01 zvvNeX$l^ylZG`$chGTqOHeUi0qo&On4hW#8!{|_T%8oCEjg8sJjV;C6za0qlXae*V!@LUP9Fcf^4~AGEno`3Cv=>CI!3vata8bJx+@ z|6U3~H6S6VK9OJsU@s@q3jtr%rKDh`gB18J6#dy=GNtDzHL90cZJg7uObYm01M7A{jENd>{J{=LZX&!X6LC~O4PpKq0UiIYexgXk z5v6?6;+!Ki5`DXKlQKZL8dVB};QI@nwMBAJsRTirE*zwiAjuAGW~wK zw=a@d*T}Wi=tOhv{#J%-O*H)19bK~ZrOkg4cUNw?H*{w|1glY`i_B8TZcDUW9?b^I zmK}w}zJq6gseW$FogfC{yQ8YFjw9J&uRUux(OsiG?Al8J)&(IWrVfEbR`ssA)=k=U zS8t(`V>qFU-?FE0*iv%!V>Mz)AK>e?if4YTLXwv?P}L$9Zp|`H{oJZWxzaZz->NCJ zjHjVfkuuR*4K)k_U1<<}6W|z?z?ZF5H;{O0H1S}{8Ee)?Ma9Nqj>N~}brtn?9X9_C z-9TU8IypU~>@#{Y(gks<$BhtID<7Gunxt1m_tUi;M2HbTWmh}oWQ)dA=MpntBg5*( zDf=AR>nxeTG~)69z$lLqoDFbF`lH>Q^t0r+OJjkXQFqYJre0aHU*pSs>z6gBLNc5zlYa!0PxO*v zQN0_)f?i6g?gr$OG@(rpi`Dstb{Li+e-xoe$FY$vB!a~(J8?$5eB-81MQl)h&%#_o zQb@e!NY*ND6{yS@uM77z7TW``cFWAR)-3CV{$W3`CGB|Jf>og6l+!*yzEULyjyv%m z7BA!kPa>eJM}wVeP?`17QA`C1#!OeJ%E%pVA_`rekd<8voZ8{$nC$BAbHP%^r!=jq zYE*e=(e%ANThN49p}v%gp(+3I-Eo6;UW@lwM;c_GD1os4S&LpS<3X!=OvX<%}LQUAm!rUrA_afwb6vzj;8Uf^o z$h58xXCdOLv$-Qa)+gVvgUhf}Il64K8<2IL=JQwilcDl`f`fp3gPx2*xW4Cy6v;+3 zjQAY^L+(gW0~Gep6;0+Ot4v7@M%Q>_Tug0>2%jyyjn= z{Y0p>kmADxT|oZoARX&-InJM6x|tAT`uEeowUY@>0u)`ap+g5*PGeDMvc;sti=Pp7 zfLnz;Ty&aYVa9@4GVP4WELMGTFzG+dLeQgI!6N|qlNDpe1cJHo3eCJG<}UX+aU5Z3 zKZ(iY4N64h^pED&fp_mCz+JfSD5nw3ohsxPT zY^#?qGr*ia)?MFeFCUQ-uk#~fgDO9g<>ROBu*qLmqLsXmM7TbcI65}PcG9{{CmCi2ZyhG z$qiSYL;vk1P_vH^P{3JzpT6{tcP|~w7CMPUidE*E^iX33d#PsvZH{yslR2Zn5! ziG25sN~oiA*zAr3U3@Z>BlabV!1Hxdc-nk}6p@8VTC10Q_Q_nes-smLHsohoq9NlJ zkVcZ;PeQ}qP4HGgNfuET?B{JBilSe6KcQcv7x!v3h1$DI5WaHPGMbrhLP7qR_`^^> zf12e>FtCJI@e0fGC!h8o`JE@O0LjPMUF*_l2qWec1{8`XOKQ`xHh84U-ioZsf{UN8 zeH2#cSp-J_Zp4l+(_zoWQA74C?&;C|ZwZm$&j{`Y@K-VPVL!9UJZqvjL{z1W=r6m; zh7pt;Q)z7X4LON9cMZejXnOYrv+&B)a{&3NHtuI_^+=eC6s46Oge2OxoKtt{} zI~QeU+C`(Yf3l)XdBcZWIxk9hu>Eea#6Vy6*Wuh!Tgk51xQi}E=UywnbTUH>e_Ox^ zM|;^&==B7T26&H)URJ6}JDr!`9?mW{!&%AqB73p!#B|ezEKWia{K=V*nOFc5#YFs= z7iScf0;Ear#Eo)?hQAf`Xq?pbK*=Uv|XW zBVT7IS(&K`UJ6+TKHdo^H$--ZJ$9upmRk87P3MZdg4BGf3l0~vZ{D^vKP{S`tuR(j znK3u@HrYeBcqwz5vRrg1iuP6FyX**A6@?vk96Q|Tg{kK`)M%8Cq<;l*4}Ztw&mZk2Lx)u#iBkBRP%b-BJJuai&w zblgO<5!vDVrfI(AE!dp6lfSgUpvn4{zFYKWTAU3*txD<%k-T~t%nv;)Q=w;NDi^y2 zhq|Jc$ok}m7L0SM_oczb56>#FEbu7(d$fEl9s2dKJ>^IsQboQZT#|6X8W@#;2=+@r zsosuV{&R7>+ES`RoyK zq)Z24N;IkagGzL0A)rGG!Pkn7j*cA8g9{YmP}V&Va{Cgi$oww_9)z{Xbo#1G0eZU$ zpvgzNwa$u#NWp+X#9mgkzesnlMr!65rd&SZr*=0%oS`EmsEAV{~we)*jYK^TiEttTUgB7nbzbH1M7EdWmpAV#Z~ zK~eL0CK&JbrJqqMBC6$hV-a7X_)4!WzgS<_6qCxlIHaK2aHEjP_(le-`aY80k$V!H z49HLO2=f^|>vOWN=ni}T$5Y+hgd6rRUu4zPYe7C1j_2KG165u6ZJ>Nygi|P<6Dg*B z$MF^q>7WRy)wvxnTP}Z27NT+i!FIqfj1GlL>CKfVV+hnYV`pc!bjXf7MXo26;fx!0&ZU*GbvT&C4b){AqU#l@x-&0zo8P`M9L(*Nt^^GA2CNdH^ zDemlf`v0c+R$oQ%Vt~JOz`Q;0rpz~}!a&4Jsr+3VFhXpzx1`Cgt=uFZ1kZQ;=>%|o&w~AsEt1NsppxSRj|Au`exTVn&QK#Fd z2am}uQ-jp+Ty*sefFixxCjy# z1Bs^+^Z|OwSCNPwuuhOR&`ULM*+A9?^~X_a@*bMO+{9=y6LvjxBl%isHjW{3+B8?KW3>dK;uiL)EpQ z7=@n+O1y{w+a8zd&zW%)7JA)7Epn#y@$O=$d32)DAGAYyZ+43R_b59=-Bbd7@quGM z=z)GOA0lRJ(cw_A5|~xVY*sG;|61(faEU-yvmugg9nG_UbbdY@^w=A}sRw6OCmds}dmKa!-m?R8 zbOnkM?Ln*CQC&D2P4k4hM@0q1kA#j@lRub5`hEcYLOP47N{Q|mWt)52x8}U65p(da_GnIdztz z7vWXs_@#u2rh2?s?=CnlGhSYF1IIKc`E|t5F$vA-hm2Q1Tc!bBBO8QnJm)L0B0T3! zKOQJY1$B7$7v@@>X1_ii{hQu5Nb%8Aa%i^43)|T>s-A4;qyy6&*{U4=yI zcSNH86@~<>ZL;5$1MZ}yuPZ@8{-Z7ZP}>~P!Lxu4o&{gmZ|h{qzkj~pC+3|?%$0S9 z=xe1uv|;Q{ef&DD0f_?kMsGSCSkp;Trdg0pBCvyU>Z&Ud|?FDx3Xq%C5z?Y;BjBo3^ssf@v8E7nBqXP zE()PPp(i5egG66XgP4--)gi8%lYZ~M!UU5pU!b?ynBxiUFJ8m!Zw}k!ms*0 zh&o+VQKb^)>ZpNBS;HpTl@WEJdFXkCs@<_@>GCz|_tMm)q(Tg$XRHxbrWi{u?xGyg zhaZug8lpw3f(TN?`cX`BJ?&$am1uv41m>dv!_5*#PQ*f!wv8k1W=oBg6j_P;UUH_N z#J6VrnXZ>%oz|bo#>rW{49i}V4#X^u6~KoFDMR>q1b8IR!TSLQOk8AIC?$;Gh-%dA zMo^y)VQqvFl%eF3%e9Epd}taOGflQX5!y-jp-d^}V=+SpniKmzMZBzCMQ{b+Q~J=u z$V-70qPNt-34P!B8YL!Y+`+rkB#-m0LF-Ux`9@yxH5_|?m4Xddmgt14!JnHHDjl!J z%uuCRF}JL#5Pf}iJSD~Hp$vE$SrogF)VRZn)b(cBhz$!ZJhp+BTybj}{mWv%hyttB zZP%rC+uVIO6!fAi9!l?o)viJC`9lIazEb`6=gR46>MaS{FM+n+L6uxC`xCvR3xn=- z*gMo}hW+i~{#Jj`YxE3)=&LZF)=$OO4Otr9ZP&&L#H>p_{V^P~qE9c`(2tFUfrMH4 zlTN^(%Nh}e(c#^&qMMANCh|!vP=GTmYhZ{4Y}6oTro<7l82ze0L7Z`afUC1Nufm$jGNaVTfW5<$DwK`aT5r0DML70E{>aVcoEJpw(|2Y(+Mmyx3^= zZ)mJaRSh;c)tOh1Vn4nI;b+RzT2PUk81(NC-l{?p{+_^R|T!@^j{lvU@=Meo4 zZMEr>SI8leSME*ym@|5|wLk0+XxDq=80~mR7Rxix()pxe;FcBmF zV-F=eQ!TtqGh}5@jT&N^Ex)BlQg|XPCsz}iDEF_vjNtize<|pKv#~pOU8{#7TKX*_ zE*Gga4PlX8&-g9{%geD^n{3VE$&Fgi$S|5~*kgNdL)9XKA{td$u3cg*Nd5zT35cne ztN_7~lR&--0pb$~&I9;LlkoA>x%BVow&vSW!q&*y8pz~huMAz7Xr!~VJ1H3G(E8LlcB=l79!<`-I`1A|%I&LROHbuszH46^G&v1HB$XfON$D zzqzFJTDz8BL^$zD_E*bEvNLcK<_Rxl%Sp1+&iaFt)upRY6<=l(VncSu8g{(uM7L#- zvJvvGBjjC2&Kt6=yu;GkMv~g49e{W|tenEqB1&Fji3d32%-@kD(UONZg%dpGLLI}Z zB^!$_dx~cS(PibE1YZXHd%6hKT)b&f!WM2KaeHklF+ACBhx;4t@piX)aJu!BP^O1fhVkAPq7ANi zAsOd)eV1&~p{Lh=qSjDFAzx+;c}{cI_QP)So>5CiuSiM_Bj#pSajS3eP=W^lZgxXM zZY~SbO?BzsjOJWO+W;Evi~kbx?-L67?G7kd&}hMDhBzglPhFl0n$-#Z0&vR^2ao|| zVk!lecE=~#PFr5G`7iJOK(~~}#v(zqqsX0oTwbVn<4(XB)!Sb_W%~w+O4Y8g%x;$ zb#i*fVPxaBGtH}dl`=Xkc!B>0GfZ2;6{MHekn_Hac9c-#MX`R-V(YS zd5wZ&v`Fdo8b|vE@}Ziaj@RmMjY;w%9t+jeym&)3%!vgV8$52tn-HQx_pEDHG0)^I z<0Yn5K2sM5#t4W@{@e?=osaW?{KUe~f}d|9cpX4LJu5#&#U6Sy+@X`?iSBSAC$m)+ z^p%Loo@I4L%(WHzqu{(%f?Z+~F}L`sF?Cx%F5l2iMK4{PfN3U+F?~7qR^nKdE*GrQ z<$~31)}jSjb0wxqNtChuy)c}oBjkLm@ucE3Qi+pLB{AgIjdH{i(q)wmy%kcpOlhIH zMrVJRD*o2DwMx9)nJ;z>O67NgYDpYlpGtB~&vko)@x^`n!k)};k;+v+q9zcs*f-?0 zZFOeg#vA=mGKIt-b$MkKmrDkh63|Oc!Nq>^#V$SN`p4y~W;t&~hAujjRYEe#Fc2n7 z6WwI#7r7)!L{g&VJB>pq26(BedMAPrfMbF()<2dxZT0v8mTr$TX4NnipDWvh{@{*k zDERk;n(kap331RjRct}*Vq=qU#L{q@r=;Ws)&R!LK9UIfRZoUctRZ+XK))u)3NpXl zY<%LPnf23~$6_L&N4v93U5qvzHWz!X0o_wN2={k;N3GWRIE><~n_#J##w3d6#Ci!G zs}qcFfs-w8-boGiVf8tK5`jU~l=NcBLcZ#mkequF+#R5&MV{n{;01y+Vl^Zwa%Kfb z?_IdIGPA1-vX(4f6j8ov3G7i{A&IcgJw-Jc*-DA>zb;#iIyjZ19hbOgaFpcYeux6- z5rkk4pf^sV2nNyl3YNeLKb2Mk;lJrgMqipRZIFo4oT~ z-F+@t%364umg92=YO=t#WT$=u_PqCdhy!m2IPUCmaWQ!MI~G?^RTG5R=smqAno2~s zDXBL2e!V^7qoz90*=F~dW@%-dslod%zs{HR@p{4A{2j^auzv zJ^EEY2+Q#jg3AGZ0xZ2>fi=W2B@fO0L|93@0=$vuAl(93u5-6d71Lxjl^+n$jeM0`{Ioqqs%S|9`kPBUL=bRHg`@IgnsW7Ag2w_%iQ1}yfmIpJRrAnX z^%l%UQ6+6_X|eFqK*e`?wN42o*IyCr`I;itX>w9WmJPyABD5LuL}7OILVzKH%Gxe* zyY%=3zgjtthS2G1b@`aEnxgUM#?i1>Wbw{-u=FtypQ9Lr#R(iqEDBW2SV+9=_g|_@ z4N!>Tq9f@lo+Z7kk3{V5J-hc*De1Q|8A(OY|mLfHPP`D@XQ`7VsRS;B@$0YR|PFboj;ijbo1lw~% zRsCGf!0_OQs40y_P;ZwF0wL%T%Y&XWe2ysz7HuKGLMXv^5}?OJnx0I6J*o3G+Yy*n zmTo=!<@l9VF1rQ=6|l6x7bBa8#FqB~dLv^rZYRLnr8)~a!^_rh065-FqRLrn_m6Ld zXx_c%Iy9kAbClG((h{f!A{<{svO+Jh20I~5puUyPJcuSR4~EGZ29ukqu~jNB{V+@V z5Lu5!HWy^rVly_@?O`$FSgF2)q&9dV!E*tgQ{zsF&`TXFH@s@5M^BSHHgL#fqvH@$ zcmYEP1_YLh#pTYUzl<1D`5D1~0}PiUm`IXZBpjx@fu`pgqSD?elf3ryXbGT?GW3MR zpiz25pLcOVHj>K9FNZ#PUN7%IA188&OK1rF;P{)osCsvq3Vr*##d%S??lO6~&Eqd7 zL*sn)3~~++2b2?}l|wKYM2{lbm?4ZzTUo>CW$o$ZJ=zfPh!jv{Y5axDEl=}E1fbUu zTn%tMdMO@|8lQ-tkjkWLiY%R%y#`kQtRq`c@JF6Vq*xq9XEgh7Pt(T>uNMgJE)%sEd?GXpdw?T&%D<1<8ON~hNiKC+$fy7Y zXA8i6_we5Wft@Fy6FJq;5Y%R)1~Ivmz>2^R;e+O>*+f2tB}9rAZTJb9o~=A~VtB~d zmv1MkBD6#jr>@W9fpo;tPsJvo))lDWp%75PzF0n&Q0nlqT=16!_XRkfr;->`jN2G2 z_CoA3^1%AEC-WGiX3aOtE~Yk4Zk?DWa})*4-en>xZMaN{?I*ex@idvicZ^3Rc8LjA z*e`fE2)2`e9-3en5vORAIWv<|AOgsJ9$92lLxN1lS{7aANxet zPSxzk4Re98CP2@+eC8|T%pt`;%Uj=$+qrA&2+jdGo*LFNOPAdBer7^--rPpTB#MeA zS-9Kk>0L1=GTTK-MabEkLysG2DIN6c3Bidc`4zcm8Jfj0$r3vg)rhFBCwA*KpUH@& zPvVe;;U0WFF{1XmEV7Dpj^(RO!t%-MMGQR6u>gsiVPNz|axVums?3Cb|HSeB9=8)v zd}H3a8z@i0F3=CC=8Dv~QYdJ?)sMd5*V~_Y$}e!W(F!6&<<|ta z0<0^ww3Ly1*ujh7sbxj%-dlFI<@;l*KH1lg?&${4B`^?&91smyK|0c3*Xd6#WNiw2 z-+FukuV-(WiE||AZ}kb0^3q4L+G$416>wWGAKdKAC%=gxV#~De$q|*+G7T1ynnfi@ z!V#fG2F$t{n#4-8SEs*coRcAuJ=1NNp`_w`5qExJwTdN6(Jb0Ci@EKD3N##Fb~)MO++Zhu_Z(le-p?muuQ%Bb2H* zn~f>yno2}_jHy59pvb)7axC&5#@E+^{vC;A&>`3dC}ad6jej_!THo7U>@<%y8~s5$ zjEdlOJCGn2QMwPZUqbKj$sCbjqog@Q$S{)rpWly`0!l+eI)1aICvX+XuZ%%o>&~nlAfPlvj&ZX6jsc_Y?a3luPHdO%-*nm#-}T zu``b?V+o;F3%vP&v+6;4eLTfoHA_%KFC|(i;?>W|#k(6xZOEQmmsCk1)ul((^#k)^ z<|_a^d{JcU@Xy*F*gIN52G0h#9Ve5hZ<#4(@$`hTuppUb@vzCdmF|gP^z@XX;ePSB}^pk_Ya5cz_7?OtNFB{u@{ zCr^(GPxZpNMt=_DRQ=}WrOVWPFa$zG8zS=L#Bij5mn``l{r98PkS5PgP7GTLX!02; zaN(Fl=d`t8J1F|XsM3}HGz<3C)8s~ za#1C_8JeH8E)&v$N0gtyw)Akqm6W3z&V-0L!}1+N?26owUQpZ?4n+=i4TnQ1Ss#`H z5jA3C4U6y~^!{>a;7dUfXE?SnK1dQ`PAxysy z@bz9g;V-mYS^kON29cKqjJ|%xIPr|$tMlT9H=+09=3e#NCANI5fUz=U=ARHIe<_%s z3No1Ls|-Efm_PDda{JE$lyswa8M@mXQutA5U7+9R%Pxn8ymvVa3Z~qTeiqvJEn1k# zH1`r%!{K-q(y=0|h+)VQk#;y_N!f|vkcE~a#TFn|tuM8tP;H;pnN`RJJs%#Kt}?68 zRc4hp*bkeqjX&{H^2Eg0+GsOK?$2Noka{uQi!T2*;fYx>H{%3h4}M1mQBeit^$AM5!|>O%gipE>EX^($_=eJlN!1_rr+U^^gR zBBPB*MX#wb`;B~H)yz5n_Rry!&%5FLd%g7shv{H*<;fU=3co5;_*I!IQ07C;g9K*frnjR*jcLg?3QR0BNuJYRd zl*qpZ2<{{R#kZ;+6Jo3Bo)DxFkQilnQQL~Pd)ysRX%RF4`dSNJ_eTd|s&kPByL>PG z4ek!!z2{Q#$LG+ibiLh>dHgyU5yHO(;5_04^^qD;Oefv@1=M@+ZGx`>oO>r9v86$G z_8cLca^CDT95~ewX>)5pwWf-k_#m}2Y!13Twd}&c^#sesZO;0dX$`i~{GUsa0+{D4 zXp(XsZKlHB{32yGN$#D|izty)jo|y>^*spg3ecNU%|r>~I6wfuYgQ-ZO?-Wss0I;@ z2@p4Y>8p}7eWWI{dryi!_X2%xBKQx0zt}BW{ zi?opjFgjgFDAxX=GBZ;gwv}`G(57zEakRGxYbgM@?}z#>MG*vZvkG! zifPQa`+H*rmx;a35}5WXyZ4llhw7bRIRBpD)qrvu3$ZBR%$+B$S%``VwTv(>vG#HU z6Gh==cokd+UVVw+vw$*FW(r)6*@fIfL3`uXEVk)1%VpBtAu#tV#9Wp<-9Z1|;P3Fk zQvA|O$jUUjMRDCX0M4p*Zg*j!G0~k3N4GS#G^Xg@YUpQY}KmlH^+H zj;csw`?QFb-GwFCdCw#cbC5Hbo^Q0*&|T6CKi+4v?w$sk=BemH3nVMZz71*_~8rwV>KbPXIlAJ zKyIt*YxO8ZkK6Q}5xgVcqe>L@@XdIh>l8IUk+NU5x7%%pjn3{p&y!U^yZ7YRUwjqh zdkg`N^PK7A$mv5OUup}jGJ$ShM(})qVUiQwcAF{~XrF(Yn7|f0^mV0nm7ZeLA-?YR zt~C5L`Y<$QjNaQ8L%a&uQOded&@f!NS4+a=SVKXKFm0{0x8FouJ-!%?9PD4Htpq}w! z@vUgQJ?w{r^+%fF0%V&Sq<-fD4*>1TR~~A&4ylIpf6hWX+HYaPd(Nx%f;-h{9uy5l zc*<==D%Qq+L*)qs=K=oS&{?m$5cUSGus;f_SAy5&eTT33?@1T|{-6tRYFTx_!$7m> zRkc1J8~=J5#?KQ|VOA3D*dLjst))Lc1Yl6c>A7xikQ|aVeFVl`B$x*ngjCwRKz%Ka zi4*%EDMo=o(K0i53Py*V0{OMBozu7R@3H6t))HlTdkicgdWVg9D%k9^S6M58K`r9% z$QUN)BgQ*`(ejilw-?qMQ?4EK$1MPZ#6^O#xz%Sj8SPAz&G?NAfao;ACV;_cM!gGl zahBCx=$ln?)4yM7CMD6ZKN`>2!f8_US5l?q#MmANJ|H)DP|@xI4j}0EUQ1 z&SJdL56^^Us;p3xE9nWZ3)#%2;^ckL;+C){zc)}ng9>kTt=_uJkNIc0Oi#y3!979N z1p-|1H0Om8HDEunG;qX_w_3!&(h{qyk~FEu7x(Q8d*Li6IqyT3Mysa+(#>ajjZVKU z78KN)Sz_g6Ui|yqX2$f$gU1HqAzF6I6b65Q`^*! zVfH=xPd5V$&Pqz~#xSbl_N7PO_gO6SgoW_nO+1yU^538yA`3X^(0v^Gn*EAt5}viJ z^a&7K9?Vl=nw_Ez#r5b2#>NI67N(EMo3T1@+8R|hp*xxSaB(>FJ^KmLrJV*#ecVnT z{0yMp;hnY;J9_Qd`fEyS(_d%R(pL-}6*aG0i8Pm4nrND+K>(s6lR}x&%7Fs?Q8Vf^ zPp~4=#aN&b%M`-1TnI22`Bt|cnRg1Hwk-}87V!!*#jn&PKlhWKYh@mD9V0j!pswi| z3u(aV7DZ=ab~I`ue;ZPgt!9N~PYl;>beL#gyL;GZ3YlcfgLj752Z*um`amNnGH8Y# z?BJbTmZ}d5h*`{p;bbR8d4@qcGr^Xn(m5EkiRM6^=_s2)jX8%&8V2kddzU`Eq23n4 z`TA5iA73+Sr14g;OeT*E`W5%MF>FxWig_k~EO~S-{g_1}CR};JfP^6QhhzB0TA>7^oMCFM!gEh&{HeSP0Xd8oQA5^{T#66T5c^+c**1tI+#K<+T-_ga*bqfh0fRzt-)ij>=v&I^)+a}0k7%q zVy}rP5x<)-!M72>>|CpE_*ifpUDp`k1gOzH>&K@CL%{o8!29V0SV%3Z`*l{l7w6}X zPW8HnTHFSk;tS&hXiWC|YhZB;!B+u(SVU4XF&8!uMhaB(Yrifz3xi41PryyMGA{Fb zDS{W3IB!a4umHh>9};{U;5BP7Y?Z%&7n!LaBU6IlHyku@_nx9=$q&txyuDfr8aBz&+{1Zr?+jyn-XtdhltPC3stAfn1v{kg&#^9nsVex|9*`p@-EqDw~4u7TloiIixRPEfMcUd;D!TriQk171B=DZ&@XH_CaENWE@QW#^@r)h`?z}tcoDeeRo$i#{v z?~|d22vsyE%4{YH&5F>@&BK-<0!ysiNQAfn@Ik#f&JbaJXF&V5Mth3|%ip^=2q#bku&>pm3x_v$+dP{7BQ`PImTnE&Z{SAEsv5iH}OU)E#m*ja@XC9aMs>S}ch#FML+@nSHTt{r2$| zGKLgxs5|Pill7g&d6blevuf}X&pJx3w6`|q=`I`tN;Kefc+q0mX@+V(E$(Wv-(L)S z(_xQpGgH^c@pp+K)fpaWhIL|Br`cL)v_U4@h>4#1s{N3Zh&Ver8+ITzVNdm+F>+(= z{as2f%+1H2lgNuRW-3dW#EYT_bvhCUK|u8r%os8uXMOE~#-YZMdOvI~5++CMjYYaP zjzs5Fe0Hk*%)l)A@a%f57Nk#4Ams`uuM*q_@KCOZq0szQ7G;pi<;Zhah8pGvedhXM z_<~Vj=h_Y3-n`+90s>7$Sdqhh3yq|~7#{m=N==p$HZtZPP7}d&zmVX$05zUtR70yN zx}|V?c&HT~PHfy$8}_TJ6m6|Jt5aX!>venMi=Ekas3OL`*xYS4+O4M~Rwca4ml0ws zE+U{z>57&?JOyGqsgGIgYQr>;NsnqDPSLzLm%VYc(LXvrACl2*LYL02C!7d>0#&6+ zY!-A+$s0m_$!mjcW}~k^G6*}ki%q3gJm@aMQ+}uhgz<-9G&zHHR7J!*B=tMhr7}+g z22i2cJE$K;HjRiJ$`zyHJSf|s)qXqFg*+qj5R*t>Uo7l=z^@Jgsusmw?4D3Qts#zz_ zD^f4{p}H_hX16} zbyJbe2V}!@6pMY83+w~*GO>L#Y={~WNGaJrgzT=B6 ztOVqhoqco`_;8oLujY7oRX7zq(g;wWpTJDMM({;|cMnxH)4;~WoFQ}&Ql8Bp@?>ph zn5I(w?zdY1_W8H=A4q@xCgy0VL0}kf?M^Q?=c4URBi~sK!sDp7vjD0xBzjUxlBq@f zTMv|E^?^GPMGt|hw`}ZPCft$iwCF4$zB^O*+-GF6=jZEp|vl-7QLdOlv``Pmj_?-th`m#W-$3 zMM|wE-Th0UVS_@#{zn5PYnPHXumgmOo5+}3YON{@N*A${R)sZ2PDZz?rm&9^i#>JB zxEqDjs>6ss9&)hEI;OBL5x`o)+(fW!`6|(uN*Jc0OlhJB#zvU(A+c%(waP#>d2DK` zj!QmfvoHo<%h&dOOPoE^*uOuVjrud_Gcjax?2IT!rW*g`6lN0IY`~sTJgpObb=-KB z8%E=*>CspSFIuF9EajqR>sz{=aM0)-B`sSFd7N&TJHsQ9^HLYA>A``947f# z6oUp-pAt}gO0cLpP|0r@!k}4At#@M6h4rOta8$98f1A~5H6PACWvgBgcBP7v>`N{t zErwC%R(9{PxfMA(%W$$Q)jUX))zQQ#kP8wjc9``h`qO^^3iUzje^t@cv3Kt&nmh6)MSM*F=19L= zV9n@3iGUuI2)3$bNMf7yUTAE;K*pdEtVgLf2JuYNB?E%T5 z;UZ`fqNK?XE17dlk~BI|1$l^~>_H9OH}npGA(+^O;DDrjs?qAD)`RE*zq}g~)U}Dk z4gIG2R84W}Tdrw9B^o<=qUJ*SKf3@vL-7ubr)>pk`F9~i@fie%0DgF`RPo}8I+kc3 zpLl$;@%U!AF>KT6c2y^(L?zY^>iQ-XJqf09fPeyLQ5#U*{6hmw`61S&aXVv7DsX8O6PpiSy z-2|F_Wce*PW$+ZtSj2rLb;^o+JUBg(?I$Fv;YvuKn#mP#+^A-ySoBjIs>9OhQv8n0l1$u69zORO3@uyRpCZ@AXInCZ#!V?W}bD|n|vM;)= z!}V>G=PMl=R++R4*}B+nt3`OMv#7d__H64D?0pw1YEwEktx3+V?>bxg*f7q3E_7mv zT{_Fx4v`d^QJNY^*r8>5ee2}3+CZJL&;b(2J~3H5ePvnc$u+2I>)`WuQG7;=!Khx! zF&phC=mr^M8{T^l&@EVTjB5}GrW2afOr#pMdq6eT6FeHA5?QL$&NYdsAj*RcqEmq< z52XOafx>E(%%qf|sH+jlQFPVVNgb1Xk8%(BYY{ci5Tmwp&CK|;j(F;nStHU(Sz>4y zndNk%qCj;PrpQwLGR85DAzyW>9w^y$I&@w-K~;mj1ln`~OYun9QDY7EL23q4rCghE z$hdYX0R>65i*4Gp*0eUft3fKFd|OL))qKorVs(({wkU))V;Gi`zLOm8=)&SN9q8t9`0^Xu%snWKT+b6 zW%PpT;we_jool&|!F6kr&MN+_Mbd`YcJg*n02V8+>{S(Zsl|yrj={nue5*lw8P^k{ zh8Y!>EY+4Iooq5QWSAAhCMJT~pPYNfHmR%Tm|F>6>7sx{AtzWsni9q9x^EkhNaml? z5reAF@$i~>H7^VxZ4=uMs%exYkb&J0eZPU?j4z;0%o~F|G4GOz<|7j_@+brp|BvA3 z0E4;3AUjV>2&7a5^zz5n*z~k?J_|Uwi zGGv7>9QPk1GZ9BJ{$`*?W}r&Np4EE;G!HOjXg?;(BvO@Xl)qeT4i=*ewpSb6NhZ`a zC_yp?vH211ax?BkF|yAtw!c`Di4{*vs*PiO^ek~& ztf^6B+-=IiL{6jn5J*cv0qZXTDpDC?Np%6Tq8nQVR60?WMGUc|a5zoS@DW8~)?z$1 zSR!0=lW0S9Ktzeo_(4`3McPu65>=sjXu2AvvzSR#Tmwyn`#*XrR*a%itJ zd?=T>Y7QKxN}hER^N2QW4Eo5)A~uYYG*rVrrF)FltVDhPPXXl;+QNywr`GTWqcj1zn)U- I)Nk|u2NmCD4FCWD diff --git a/.gradle/6.1.1/javaCompile/javaCompile.lock b/.gradle/6.1.1/javaCompile/javaCompile.lock deleted file mode 100644 index 1ca1568732184a0ec6364f41ad43de53488abd03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZQ}p6ae;AbGHq0SuyS03#g(VgLXD diff --git a/.gradle/6.1.1/javaCompile/taskHistory.bin b/.gradle/6.1.1/javaCompile/taskHistory.bin deleted file mode 100644 index 3b238161c4ecf6b63bcbac687d2409134aeab363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31979 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 aQ&(^L`rm`cUccbsp1%+^wd)K1E&l~bm0~*p diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index 7c8a0ea35cd387697781d854d009b4426e2bb51f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZQR%VMx(D*M*i3=r@D04(wZbpQYW diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index 8a21bcc..0000000 --- a/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Wed Aug 12 12:32:48 KST 2020 -gradle.version=6.5.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index 4172bb8df10b8f30a26e4855a9e708aaad908325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18911 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 diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin deleted file mode 100644 index d28b4f26f96de25b7f12e215cdfbeab75eb85fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32915 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 UhObnE)qLg Date: Wed, 19 Aug 2020 12:45:25 +0900 Subject: [PATCH 05/18] #28 gitignore test --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 024ad1d..e6b19b9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ local.properties .settings/ .loadpath .recommenders -.gradle +.gradle/* # External tool builders .externalToolBuilders/ From 211226bafc64edc51d0db5f7c3dff200495eb670 Mon Sep 17 00:00:00 2001 From: hanjuhui Date: Mon, 24 Aug 2020 14:10:36 +0900 Subject: [PATCH 06/18] #28 fixing patch and fixing Issue Keywords --- src/main/java/edu/handong/csee/isel/Main.java | 24 +++++++++++--- .../bfc/collector/BFCKeywordCollector.java | 3 +- .../csee/isel/data/processor/CSVMaker.java | 6 ++-- .../input/converter/CLIConverter.java | 12 ++++--- .../isel/patch/collector/CPatchCollector.java | 32 +++++++++---------- 5 files changed, 48 insertions(+), 29 deletions(-) diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index 9ec6bfa..f35d402 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -68,8 +68,8 @@ public static void main(String[] args) switch (input.taskType) { case Patch: - bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); - + bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); + PatchCollector patchCollector = new CPatchCollector(input); patchCollector.setBFC(bfcList); csvInfoLst = patchCollector.collectFrom(commitList); @@ -91,7 +91,6 @@ public static void main(String[] args) case Metric: //BIC 파일 읽기 bicList= Read_BICcsv(input); - metricCollector = new CMetricCollector(input,false); metricCollector.setBIC(bicList); File arff = metricCollector.collectFrom(commitList); @@ -136,10 +135,10 @@ public static List Read_BICcsv(Input input){ public static void Print_CSV( Input input, List csvInfoLst) throws IOException { if (csvInfoLst.size() < 1) { - System.out.println("why is it not working?"); +// System.out.println("why is it not working?"); return; } - System.out.println("Really?"); +// System.out.println("Really?"); CSVMaker printer = new CSVMaker(); printer.setDataType(csvInfoLst); printer.setPath(input); @@ -152,6 +151,7 @@ public static List Making_bfcCollector (Input input, List bfcLis switch (input.mode) { //CLIConverter에서 각각 옵션 모드를 설정해 주었다. case Jira: +// System.out.println("Main Jira part!"); bfcCollector = new BFCJiraCollector(); bfcCollector.setJiraURL(input.jiraURL); bfcCollector.setJiraProjectKey(input.jiraProjectKey); @@ -160,11 +160,25 @@ public static List Making_bfcCollector (Input input, List bfcLis break; case KeyWord: +// System.out.println("Main KeyWord part!"); bfcCollector = new BFCKeywordCollector(); + if(input.Issue_keyWord != null) { +// System.out.println("keyworkds Issue Keywords: "+ input.Issue_keyWord); + BFCKeywordCollector.bugKeywords = new String[1]; + BFCKeywordCollector.bugKeywords[0]="("+input.Issue_keyWord+")"; +// System.out.println("Main: How about here?"); + } + else { + BFCKeywordCollector.bugKeywords = new String[2]; + BFCKeywordCollector.bugKeywords[0]="(bug)"; + BFCKeywordCollector.bugKeywords[1]="(fix)"; + } +// System.out.println("here to: How about here?"); bfcList = bfcCollector.collectFrom(commitList); break; case GitHub: +// System.out.println("Main GitHub part!"); bfcCollector = new BFCGitHubCollector(); bfcCollector.setGitHubURL(input.gitURL); bfcCollector.setGitHubLabel(input.label); diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java index 7fa03cb..d33fca2 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java @@ -10,13 +10,14 @@ import edu.handong.csee.isel.bfc.BFCCollector; public class BFCKeywordCollector extends BFCCollector { - static String[] bugKeywords = { "(bug)", "(fix)" }; + public static String[] bugKeywords; public List collectFrom(List commitList) { List bfcList = new ArrayList<>(); final Pattern bugMessagePattern = Pattern.compile(String.join("|", bugKeywords), Pattern.CASE_INSENSITIVE); +// System.out.println("bug Isskey in BFCKEYWORDS: "+ bugMessagePattern); for (RevCommit commit : commitList) { Matcher bugKeyMatcher = bugMessagePattern.matcher(commit.getShortMessage()); diff --git a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java index e99e73c..e12d226 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java @@ -101,16 +101,16 @@ private void print(BICInfo info) throws IOException { public void setDataType(List csvInfoLst) { CSVInfo csvInfoFirst = csvInfoLst.get(0); if (csvInfoFirst instanceof PatchInfo) { - System.out.println("CSVMAER path"); +// System.out.println("CSVMAER path"); this.type = Type.PATCH; } if (csvInfoFirst instanceof BICInfo) { this.type = Type.BIC; - System.out.println("CSVMAER BIC"); +// System.out.println("CSVMAER BIC"); } if (csvInfoFirst instanceof MetricInfo) { this.type = Type.METRIC; - System.out.println("CSVMAER MATRIC"); +// System.out.println("CSVMAER MATRIC"); } } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index dd1a00f..3a5ade5 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -51,12 +51,12 @@ public Input getInputFrom(String[] args) { //각각 옵션이 null아닐때 값을 넣어주고 해당 값에 맞는 input.mode를 정해 주었다! - if(!cmd.hasOption("ij")) { + if(cmd.hasOption("ij")) { input.jiraURL = cmd.getOptionValue("ij"); input.jiraProjectKey = cmd.getOptionValue("jk"); input.mode = Input.Mode.Jira; } - else if(!cmd.hasOption("ik")) { + else if(cmd.hasOption("ik")) { input.Issue_keyWord = cmd.getOptionValue("ik"); input.mode = Input.Mode.KeyWord; } @@ -184,12 +184,16 @@ private boolean isValid(CommandLine cmd, Options options) { // ./BugPatchCollector -i https://github.com/apache/metamodel -o /data/metric -t -c /data/BIC/BIC_metamodel.csv //바뀐 메인 돌리기 BIC -// ./BugPatchCollector -i https://github.com/apache/juddi -ij issues.apache.org -jk JUDDI -t BIC -o /Users/juhui/Desktop/testMain/BIC +// ./BugPatchCollector -i https://github.com/apache/juddi -ik test -t BIC -o /Users/juhui/Desktop/KeyTest +// ./BugPatchCollector -i https://github.com/apache/camel -ij issues.apache.org -jk CAMEL -t patch -o /Users/juhui/Desktop/PatchTest + //바뀐 메인 메트릭..... -// ./BugPatchCollector -i https://github.com/apache/juddi -t metric -bp /Users/juhui/Desktop/testMain/BIC_juddi.csv -o /Users/juhui/Desktop/please +// ./BugPatchCollector -i https://github.com/apache/juddi -t metric -bp /Users/juhui/Desktop/TestMain/BIC/BIC_juddi.csv -o /Users/juhui/Desktop/result // ./BugPatchCollector -i https://github.com/apache/juddi -ik fix -t BIC -o /Users/juhui/Desktop/testMain/keyword + //https://commons.apache.org/proper/commons-cli/properties.html 옵션쓰 + //https://stackoverflow.com/questions/7739214/command-line-parser-and-lack-of-subcommand-and-grouping private Options createOptions() {// desc 다시쓰자! Options options = new Options(); diff --git a/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java b/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java index 8f75dff..7ddf4b6 100644 --- a/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java +++ b/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java @@ -48,7 +48,7 @@ public List collectFrom(List commitList) { for (RevCommit commit : commitList) { - if (isBFC(commit)) { + if (Utils.isBFC(commit, bfcList)) { RevCommit parent = commit.getParent(0); @@ -63,11 +63,11 @@ public List collectFrom(List commitList) { if (patchSize < input.minSize || patchSize > input.maxSize) { continue; } +// System.out.println("CPatchCollector collectFrom if Working"); csvInfoList.addAll(patch); } } - return csvInfoList; } @@ -192,20 +192,20 @@ public String getPatch(DiffEntry diff, Repository repo) { return patch; } - private boolean isBFC(RevCommit commit) { - - for (String bfc : bfcList) { - System.out.println(commit.getShortMessage()); - System.out.println(bfc); - System.out.println(); - if (commit.getShortMessage().contains(bfc)) { - System.out.println(commit.getShortMessage()); - return true; - } - } - - return false; - } +// private boolean isBFC(RevCommit commit) { +// +// for (String bfc : bfcList) { +//// System.out.println(commit.getShortMessage()); +//// System.out.println(bfc); +//// System.out.println(); +// if (commit.getShortMessage().contains(bfc)) { +// System.out.println(commit.getShortMessage()); +// return true; +// } +// } +// +// return false; +// } private Git openGitRepository() { File clonedDirectory = Main.getGitDirectory(input); From 85ad81944c398220cf327cac9d256d278436f699 Mon Sep 17 00:00:00 2001 From: JinwooLeeHGU <21400603@handong.edu> Date: Tue, 25 Aug 2020 15:53:26 +0900 Subject: [PATCH 07/18] #28 AG-SZZ --- src/main/java/edu/handong/csee/isel/Main.java | 21 +- .../java/edu/handong/csee/isel/Utils.java | 30 + .../isel/bfc/collector/BFCJiraCollector.java | 6 +- .../isel/bfc/collector/jira/FileManager.java | 1 + .../collector/jira/JiraBugIssueCrawler.java | 2 + .../handong/csee/isel/bic/BICCollector.java | 3 +- .../isel/bic/collector/CBICCollector.java | 3 +- .../isel/bic/collector/szzBICCollector.java | 115 +++ .../csee/isel/bic/szz/data/BICInfo.java | 160 ++++ .../szz/exception/EmptyHunkTypeException.java | 30 + .../bic/szz/graph/AnnotationGraphBuilder.java | 69 ++ .../graph/AnnotationGraphBuilderThread.java | 353 ++++++++ .../bic/szz/graph/AnnotationGraphModel.java | 13 + .../handong/csee/isel/bic/szz/model/Hunk.java | 46 ++ .../handong/csee/isel/bic/szz/model/Line.java | 123 +++ .../csee/isel/bic/szz/model/LineType.java | 21 + .../csee/isel/bic/szz/model/PathRevision.java | 35 + .../csee/isel/bic/szz/model/RevsWithPath.java | 10 + .../csee/isel/bic/szz/trace/Tracer.java | 265 ++++++ .../csee/isel/bic/szz/util/GitUtils.java | 240 ++++++ .../csee/isel/bic/szz/util/JavaASTParser.java | 770 ++++++++++++++++++ .../handong/csee/isel/bic/szz/util/Utils.java | 96 +++ .../input/converter/CLIConverter.java | 4 +- 23 files changed, 2401 insertions(+), 15 deletions(-) create mode 100644 src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/model/Hunk.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/model/Line.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/model/LineType.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/model/PathRevision.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/model/RevsWithPath.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/util/JavaASTParser.java create mode 100644 src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index 9ec6bfa..ac82075 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -21,6 +21,7 @@ import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; import edu.handong.csee.isel.bic.BICCollector; import edu.handong.csee.isel.bic.collector.CBICCollector; +import edu.handong.csee.isel.bic.collector.szzBICCollector; import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.processor.CSVMaker; @@ -33,6 +34,8 @@ import edu.handong.csee.isel.patch.PatchCollector; import edu.handong.csee.isel.patch.collector.CPatchCollector; +//import edu.handong.csee.isel.bic.collector.szzBICCollector; + public class Main { public static void main(String[] args) @@ -63,8 +66,6 @@ public static void main(String[] args) BFCCollector bfcCollector = null; List csvInfoLst = null; - - switch (input.taskType) { case Patch: @@ -79,13 +80,20 @@ public static void main(String[] args) break; case BIC: + //아 여기서 만들어 준넨엥에엥 bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); - BICCollector bicCollector = new CBICCollector(input); + BICCollector bicCollector = new szzBICCollector(input); // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); - Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. +// Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. + +// 위에걸 해줘야 apacheJUDDIIssueKeys.csv가 나오기 때문에 위에를 일단 실행시킨다. +// BICCollector bicCollector = new szzBICCollector(input); +// 파일 저장해주는 것까지 szzBICCollector에서 처리해주기. +// Phase 3: Utils.storeOutputFile(GIT_URL, BILines); + break; case Metric: @@ -113,10 +121,7 @@ public static void main(String[] args) metricCollector.collectFrom(commitList); break; - } - - - + } } diff --git a/src/main/java/edu/handong/csee/isel/Utils.java b/src/main/java/edu/handong/csee/isel/Utils.java index 5f59486..06e8189 100755 --- a/src/main/java/edu/handong/csee/isel/Utils.java +++ b/src/main/java/edu/handong/csee/isel/Utils.java @@ -3,6 +3,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.text.SimpleDateFormat; @@ -14,6 +15,7 @@ import java.util.regex.Pattern; import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVPrinter; import org.apache.commons.csv.CSVRecord; import org.eclipse.jdt.core.dom.Comment; import org.eclipse.jgit.api.Git; @@ -48,6 +50,7 @@ import edu.handong.csee.isel.bfc.collector.github.CommitParser; import edu.handong.csee.isel.bfc.collector.github.IssueLinkParser; import edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException; +import edu.handong.csee.isel.bic.szz.data.BICInfo; public class Utils { @@ -358,4 +361,31 @@ public static String parseAuthorID(String authorId) { } return authorId; } + + // added part because of ag-szz + public static void storeOutputFile(String outPath, String GIT_URL, List BICLines) throws IOException { + // Set file name + String[] arr = GIT_URL.split("/"); + String projName = arr[arr.length - 1]; + + //System.getProperty("user.dir") : 현재위치 반환 해줌. +// String fName = System.getProperty("user.dir") + File.separator + "results" + File.separator + projName + ".csv"; + String fName = outPath + File.separator + "results" + File.separator + projName + ".csv"; + // + File savedFile = new File(fName); + savedFile.getParentFile().mkdirs(); + + FileWriter writer = new FileWriter(savedFile); + + CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader("BISha1", "BIPath", "FixSha1", + "BIDate", "FixDate", "biLineIdx", "BIContent", "Commiter", "Author")); + + for (BICInfo BICInfo : BICLines) { + csvPrinter.printRecord(BICInfo.getBISha1(), BICInfo.getBiPath(), BICInfo.getFixSha1(), BICInfo.getBIDate(), + BICInfo.getFixDate(), BICInfo.getBiLineIdx(), BICInfo.getBIContent(), BICInfo.getCommiter(), + BICInfo.getAuthor()); + } + + csvPrinter.close(); + } } diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java index 46cff77..e09297e 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java @@ -24,9 +24,11 @@ public BFCJiraCollector() { } public List collectFrom(List commitList) { - + Pattern pattern = Pattern.compile(key + "-\\d+", Pattern.CASE_INSENSITIVE); - + + // JUDDI-1013 을 뜻한다. juddi or JUDDI + List bfcList = new ArrayList<>(); List keywordList = new ArrayList<>(); diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/jira/FileManager.java b/src/main/java/edu/handong/csee/isel/bfc/collector/jira/FileManager.java index 4278c85..0c1dbcb 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/jira/FileManager.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/jira/FileManager.java @@ -65,6 +65,7 @@ public File collectIssueKeys() throws IOException { String teamName = validateTeamName(this.domain); String dir = this.path + File.separator + teamName + this.projectKey + File.separator; String savedFileName = dir + teamName + this.projectKey + "IssueKeys.csv"; + // System.out.println("\n\tCollecting Issue keys into " + savedFileName); File savedFile = new File(savedFileName); savedFile.getParentFile().mkdirs(); diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.java b/src/main/java/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.java index bf3e7a6..75af96a 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.java @@ -43,6 +43,8 @@ public File getJiraBugs() throws IOException, InvalidProjectKeyException { boolean flag1 = requestSucceed(response.statusCode()); //flag1 is an indicator that checks whether a response was succeeded when approached linkUrl with encoded JQL1. + System.out.println("\n checking flag1 for issueKeys if 1 => true ..." + flag1); + while(!flag1) { encodedJql = jqlManager.getEncodedJQL(jqlManager.getJQL2(period.getStart(), period.getEnd())); linkUrl = urlManager.getURL(encodedJql); diff --git a/src/main/java/edu/handong/csee/isel/bic/BICCollector.java b/src/main/java/edu/handong/csee/isel/bic/BICCollector.java index 1d6bde1..4e84039 100644 --- a/src/main/java/edu/handong/csee/isel/bic/BICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/BICCollector.java @@ -1,5 +1,6 @@ package edu.handong.csee.isel.bic; +import java.io.IOException; import java.util.List; import org.eclipse.jgit.revwalk.RevCommit; @@ -10,6 +11,6 @@ public interface BICCollector { void setBFC(List bfcList); - List collectFrom(List commitList); + List collectFrom(List commitList) throws IOException; } diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java index 45bdeb5..49d3354 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java @@ -42,7 +42,6 @@ public CBICCollector(Input input) { @Override public void setBFC(List bfcList) { this.bfcList = bfcList; - } @Override @@ -54,7 +53,7 @@ public List collectFrom(List commitList) { // TODO Auto-generated catch block e.printStackTrace(); } - repo = git.getRepository(); + repo = git.getRepository(); System.out.println("bfcList:"); System.out.println(bfcList); diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java new file mode 100644 index 0000000..c096b4b --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java @@ -0,0 +1,115 @@ +package edu.handong.csee.isel.bic.collector; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.jgit.api.BlameCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.blame.BlameResult; +import org.eclipse.jgit.diff.DiffAlgorithm; +import org.eclipse.jgit.diff.DiffEntry; +import org.eclipse.jgit.diff.DiffFormatter; +import org.eclipse.jgit.diff.Edit; +import org.eclipse.jgit.diff.EditList; +import org.eclipse.jgit.diff.RawTextComparator; +import org.eclipse.jgit.errors.RevisionSyntaxException; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.util.io.DisabledOutputStream; + +import edu.handong.csee.isel.bic.BICCollector; +import edu.handong.csee.isel.data.CSVInfo; +import edu.handong.csee.isel.data.Input; + +import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder; +import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel; +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; +import edu.handong.csee.isel.bic.szz.trace.Tracer; +import edu.handong.csee.isel.bic.szz.util.GitUtils; + +import edu.handong.csee.isel.Utils; +//import edu.handong.csee.isel.bic.szz.util.Utils; + +//import edu.handong.csee.isel.data.csv.BICInfo; +import edu.handong.csee.isel.bic.szz.data.BICInfo; + +public class szzBICCollector implements BICCollector{ + + Input input; + List bfcommitList = null; + + Git git; + Repository repo; + + public szzBICCollector(Input input) { + this.input = input; + } + + // 이건 그냥 bfcList라는 틀을 받아온거임. + @Override + public void setBFC(List bfcList) { + this.bfcommitList = bfcList; + } + + @Override + public List collectFrom(List commitList) throws IOException { + // TODO Auto-generated method stub + try { + git = Git.open(edu.handong.csee.isel.Main.getGitDirectory(input)); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + repo = git.getRepository(); + + // Colleting BFCs + ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); + + // Pre-step for building annotation graph + + // 파일이 고쳐진 새로운 getNewPath가 나온다. filter 가 된거. (.java 파일이고, test가 아닌것) ( + List targetPaths = GitUtils.getTargetPaths(repo, bfcList); + + // bfcList에서 계속 이어지는거임. BFCs는 jiraCrawler를 사용하여 얻은 targetPaths와 일치하는 것을 찾아냄. 이건 모든 이슈커밋리스트에서 + // Wrong(X) -> 여기 안에 configurePathRevisionList(repo, revs) 이건 filter가 안된 부분이다. + RevsWithPath revsWithPath = GitUtils + .collectRevsWithSpecificPath(GitUtils.configurePathRevisionList(repo, commitList), targetPaths); + // 한 path당 커밋 리스트를 부여해줌. + + // Phase 1 : Build the annotation graph + final long startBuildingTime = System.currentTimeMillis(); + + // 수진님한테 물어볼것 + AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); + // set debug mode = false for a while + AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath, false); + + final long endBuildingTime = System.currentTimeMillis(); + System.out.println("\nBuilding Annotation Graph takes " + (endBuildingTime - startBuildingTime) / 1000.0 + "s\n"); + + // Phase 2 : Trace and collect BIC candidates and filter out format changes, comments, etc among candidates + final long startTracingTime = System.currentTimeMillis(); + + // 일단은 analysis, debug option은 false 로 세팅 + Tracer tracer = new Tracer(false, false); + List BILines = tracer.collectBILines(repo, bfcList, agm, revsWithPath); + + final long endTracingTime = System.currentTimeMillis(); + System.out.println("\nCollecting BICs takes " + (endTracingTime - startTracingTime) / 1000.0 + "s\n"); + + // Sort BICs in the order FixSha1, BISha1, BIContent, biLineIdx + Collections.sort(BILines); + + // Phase 3 : store outputs + // GIT_URL : input. + Utils.storeOutputFile(input.outPath, input.gitURL, BILines); + + + return null; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java new file mode 100644 index 0000000..e5bc847 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java @@ -0,0 +1,160 @@ +package edu.handong.csee.isel.bic.szz.data; + +import edu.handong.csee.isel.bic.szz.model.Line; + +public class BICInfo implements Comparable { + + String BISha1; + String biPath; + String FixSha1; + String path; + String BIDate; + String FixDate; + int biLineIdx; // line idx in BI file + String BIContent = ""; + String commiter; + String author; + + public BICInfo(String fixSha1, String path, String fixDate, Line line) { + super(); + this.FixSha1 = fixSha1; + this.path = path; + this.FixDate = fixDate; + this.BISha1 = line.getRev(); + this.biPath = line.getPath(); + this.BIDate = line.getCommitDate(); + this.biLineIdx = line.getIdx(); + this.BIContent = line.getContent(); + this.commiter = line.getCommiter(); + this.author = line.getAuthor(); + } + +// public void setLine(Line line) { +// this.BISha1 = line.getRev(); +// this.biPath = line.getPath(); +// this.BIDate = line.getCommitDate(); +// this.biLineIdx = line.getIdx(); +// this.BIContent = line.getContent(); +// this.commiter = line.getCommiter(); +// this.author = line.getAuthor(); +// } + + public String getBISha1() { + return BISha1; + } + + public String getBiPath() { + return biPath; + } + + public String getFixSha1() { + return FixSha1; + } + + public String getPath() { + return path; + } + + public String getBIDate() { + return BIDate; + } + + public String getFixDate() { + return FixDate; + } + + public int getBiLineIdx() { + return biLineIdx; + } + + public String getBIContent() { + return BIContent; + } + + public String getCommiter() { + return commiter; + } + + public String getAuthor() { + return author; + } + + public boolean equals(BICInfo compareWith) { + if (!BISha1.equals(compareWith.BISha1)) + return false; + if (!biPath.equals(compareWith.biPath)) + return false; + if (!path.equals(compareWith.path)) + return false; + if (!FixSha1.equals(compareWith.FixSha1)) + return false; + if (!BIDate.equals(compareWith.BIDate)) + return false; + if (!FixDate.equals(compareWith.FixDate)) + return false; + if (biLineIdx != compareWith.biLineIdx) + return false; + if (!BIContent.equals(compareWith.BIContent)) + return false; + if (!commiter.equals(compareWith.commiter)) + return false; + if (!author.equals(compareWith.author)) + return false; + + return true; + } + + @Override + public int compareTo(BICInfo o) { + + // order by FixSha1, BISha1, BIContent, biLineIdx + if (FixSha1.compareTo(o.FixSha1) < 0) + return -1; + else if (FixSha1.compareTo(o.FixSha1) > 0) + return 1; + else { + if (BISha1.compareTo(o.BISha1) < 0) + return -1; + else if (BISha1.compareTo(o.BISha1) > 0) + return 1; + else { + if (BIContent.compareTo(o.BIContent) < 0) + return -1; + else if (BIContent.compareTo(o.BIContent) > 0) + return 1; + else { + if (biLineIdx < o.biLineIdx) + return -1; + else if (biLineIdx > o.biLineIdx) + return 1; + } + } + } + + // order by BIDate, path, FixDate, lineNum +// if (BIDate.compareTo(o.BIDate) < 0) +// return -1; +// else if (BIDate.compareTo(o.BIDate) > 0) +// return 1; +// else { +// if (path.compareTo(o.path) < 0) +// return -1; +// else if (path.compareTo(o.path) > 0) +// return 1; +// else { +// if (FixDate.compareTo(o.FixDate) < 0) +// return -1; +// else if (FixDate.compareTo(o.FixDate) > 0) +// return 1; +// else { +// if (biLineIdx < o.biLineIdx) +// return -1; +// else if (biLineIdx > o.biLineIdx) +// return 1; +// } +// } +// } + + return 0; + } +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.java b/src/main/java/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.java new file mode 100644 index 0000000..31c130e --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.java @@ -0,0 +1,30 @@ +package edu.handong.csee.isel.bic.szz.exception; + +public class EmptyHunkTypeException extends Exception { + + public EmptyHunkTypeException() { + this("ERROR - Unknown Hunk Type"); + } + + public EmptyHunkTypeException(String message) { + super(message); + // TODO Auto-generated constructor stub + } + + public EmptyHunkTypeException(Throwable cause) { + super(cause); + // TODO Auto-generated constructor stub + } + + public EmptyHunkTypeException(String message, Throwable cause) { + super(message, cause); + // TODO Auto-generated constructor stub + } + + public EmptyHunkTypeException(String message, Throwable cause, boolean enableSuppression, + boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + // TODO Auto-generated constructor stub + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java new file mode 100644 index 0000000..c250bf7 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java @@ -0,0 +1,69 @@ +package edu.handong.csee.isel.bic.szz.graph; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; + +public class AnnotationGraphBuilder { + + public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath revsWithPath, boolean debug) { + // Phase 1 : split Map (i.e. RevsWithPath) + int mapSize = revsWithPath.size(); // ?? + int arrSize = 10; + + // when map has less than 10 elements. + if (mapSize < arrSize) + arrSize = mapSize; + + // 아마도 그룹을 총 10개로 하려고 한거임. + RevsWithPath[] revsWithPathArr = new RevsWithPath[arrSize]; + for (int i = 0; i < arrSize; i++) { + revsWithPathArr[i] = new RevsWithPath(); + } + + int count = 0; + + + for (Map.Entry> elem : revsWithPath.entrySet()) { + revsWithPathArr[count % arrSize].put(elem.getKey(), elem.getValue()); + count++; + } + + // Phase 2 : Execute thread pool + ArrayList AGRunners = new ArrayList(); + + int numOfCoresInMyCPU = Runtime.getRuntime().availableProcessors(); + + ExecutorService executor = Executors.newFixedThreadPool(numOfCoresInMyCPU); + + for (int i = 0; i < arrSize; i++) { + Runnable worker = new AnnotationGraphBuilderThread(repo, revsWithPathArr[i], debug); + // AnnotationGraphBuilderThread 안에서 run을 실행해준다. + executor.execute(worker); + AGRunners.add((AnnotationGraphBuilderThread) worker); + } + + executor.shutdown(); // no new tasks will be accepted. + + // thread들이 모두 마칠때까지 기다려주는 역할이다. (마치 wait() 처럼... ) + while (!executor.isTerminated()) { + + } + + AnnotationGraphModel annotationGraph = new AnnotationGraphModel(); + + for (AnnotationGraphBuilderThread runner : AGRunners) { + annotationGraph.putAll(runner.partitionedAnnotationGraph); + } + + return annotationGraph; + } + +} \ No newline at end of file diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java new file mode 100644 index 0000000..38cdc3e --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java @@ -0,0 +1,353 @@ +package edu.handong.csee.isel.bic.szz.graph; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.jgit.diff.Edit; +import org.eclipse.jgit.diff.EditList; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; + +import com.google.common.collect.Iterators; + +import edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException; +import edu.handong.csee.isel.bic.szz.model.Hunk; +import edu.handong.csee.isel.bic.szz.model.Line; +import edu.handong.csee.isel.bic.szz.model.LineType; +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; +import edu.handong.csee.isel.bic.szz.util.GitUtils; +import edu.handong.csee.isel.bic.szz.util.Utils; + +public class AnnotationGraphBuilderThread implements Runnable { + private Repository repo; + private RevsWithPath revsWithPath; + private boolean debug; + public AnnotationGraphModel partitionedAnnotationGraph; + + public AnnotationGraphBuilderThread(Repository repo, RevsWithPath revsWithPath, boolean debug) { + super(); + this.repo = repo; + this.revsWithPath = revsWithPath; + this.debug = debug; + } + + @Override + public void run() { + try { + partitionedAnnotationGraph = buildPartitionedAnnotationGraph(repo, revsWithPath, debug); + + } catch (IOException | EmptyHunkTypeException e) { + e.printStackTrace(); + } catch (IndexOutOfBoundsException e) { + // TODO Logging + + } + } + + private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, RevsWithPath revsWithPath, boolean debug) + throws IOException, EmptyHunkTypeException { + // Generate Annotation Graph + AnnotationGraphModel partitionedAnnotationGraph = new AnnotationGraphModel(); + + int childIdx, hunkIdx, offset; + int beginOfChild, endOfChild; + Line childLine; + Hunk hunk; + String hunkType; + + // traverse all paths in the repo + Iterator paths = revsWithPath.keySet().iterator(); + + Iterator pathsForCalculatingSize = revsWithPath.keySet().iterator(); + int numOfPaths = Iterators.size(pathsForCalculatingSize); + + int pathCnt = 1; + while (paths.hasNext()) { + + String path = paths.next(); + + List revs = revsWithPath.get(path); + + // 한 파일에 코드를 쓰고, 추가하고 고치고 수정한 것들을 모아서 한 커밋이 된다. 초기 커밋은 추후에 다른 커밋에 의해 코드가 수정되고 고쳐져서 바뀔수 있다. + // 이때 만약 커밋이 초기커밋 밖에 없다는 뜻은 이게 그냥 코드를 새로 추가해서 올린건데 그다음 커밋이 없으면 이게 결함을 가지고 있는지 없는지 알길이 없다. + // 그래서 커밋리스크 사이즈가 1이면 예외처리를 해준다. + // Skip building AG when the number of paths is 1 as it's not appropriate + if(revs.size() == 1) + continue; + + // Generate subAnnotationGraph + // commitList와 바뀐 Lines 세트가 여러개의 hashMap + HashMap> subAnnotationGraph = new HashMap>(); + + ArrayList parentLineList = new ArrayList<>(); + ArrayList childLineList = new ArrayList<>(); + + // Logging + System.out.println("\n" + Thread.currentThread().getName() + " In progress (" + pathCnt + " / " + numOfPaths + ")"); + System.out.println("\tBuilding Annotation Graph of " + path); + + for (RevCommit childRev : revs) { + // Escape from the loop when there is no parent rev anymore + // childRev가 0인데, revs.size가 1이라면 커밋이 하나밖에 없으니 조상 커밋은 없다. + if (revs.indexOf(childRev) == revs.size() - 1) break; + + RevCommit parentRev = revs.get(revs.indexOf(childRev) + 1); + + String parentContent = Utils.removeComments(GitUtils.fetchBlob(repo, parentRev, path)).trim(); + String childContent = Utils.removeComments(GitUtils.fetchBlob(repo, childRev, path)).trim(); + + if (debug) { + System.out.println("path : " + path); + System.out.println("\tparent rev : " + parentRev.getName()); + System.out.println("\tchild rev : " + childRev.getName()); + } + + + // get the parent line list from content + configureLineList(parentLineList, path, parentRev, parentContent); + + // get the child line list only when initial iteration + if (revs.indexOf(childRev) == 0) + configureLineList(childLineList, path, childRev, childContent); + + if (debug) { + System.out.println("\nParent"); + for (int i = 0; i < parentLineList.size(); i++) { + System.out.println(i + "th idx : " + parentLineList.get(i).getContent()); + } + System.out.println("\nChild"); + for (int i = 0; i < childLineList.size(); i++) { + System.out.println(i + "th idx : " + childLineList.get(i).getContent()); + } + } + + ArrayList hunkList = configureHunkList(GitUtils.getEditListFromDiff(parentContent, childContent)); + + // map child line with its ancestor(s) + childIdx = 0; + hunkIdx = 0; + offset = 0; + + while (childIdx < childLineList.size()) { + boolean isIgnorable = false; + childLine = childLineList.get(childIdx); + + if (debug) { + System.out.println("\nHunk Rate : " + (hunkIdx + 1) + " / " + hunkList.size()); + System.out.println("Child Index Rate : " + childIdx + " / " + (childLineList.size() - 1)); + System.out.println("Offset : " + offset); + } + + // Case 1 - when there is no hunk anymore + if (hunkList.size() <= hunkIdx) { + if (debug) { + System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); + System.out.println("No Hunk anymore\n"); + } + childLine.setLineType(LineType.CONTEXT); + + mapChildLineWithAncestor(childIdx, offset, parentLineList, childLine); + + childIdx++; + continue; + } + + hunk = hunkList.get(hunkIdx); + beginOfChild = hunk.getBeginOfChild(); + endOfChild = hunk.getEndOfChild(); + hunkType = hunk.getHunkType(); + + if (debug) { + System.out.println("Hunk Type : " + hunk.getHunkType()); + System.out.println("bA : " + hunk.getBeginOfParent()); + System.out.println("eA : " + hunk.getEndOfParent()); + System.out.println("bB : " + hunk.getBeginOfChild()); + System.out.println("eB : " + hunk.getEndOfChild()); + } + + // Case 2 - child index is out of hunk range + if (childIdx < beginOfChild) { + if (debug) { + System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); + System.out.println("Out of Hunk range\n"); + + } + childLine.setLineType(LineType.CONTEXT); + mapChildLineWithAncestor(childIdx, offset, parentLineList, childLine); + + } + // Case 3 - child index is in hunk range + else { + switch (hunkType) { + case "INSERT": + if (debug) { + System.out.println("INSERT\n"); + } + + // When childIdx is the last index in hunk, increment hunk index + if (childIdx == endOfChild - 1) + hunkIdx++; + + childLine.setLineType(LineType.INSERT); + childLine.setWithinHunk(true); + + offset--; + + break; + + case "REPLACE": + if (debug) { + System.out.println("REPLACE\n"); + } + + // When childIdx is the last index in hunk, update offset and increment hunk index + if (childIdx == endOfChild - 1) { + offset += (hunk.getRangeOfParent() - hunk.getRangeOfChild()); + + hunkIdx++; + } + + // check whether format change happens + String mergedParentContent = Utils.mergeLineList(parentLineList.subList(hunk.getBeginOfParent(), hunk.getEndOfParent())); + String mergedChildContent = Utils.mergeLineList(childLineList.subList(hunk.getBeginOfChild(), hunk.getEndOfChild())); + + if (mergedParentContent.equals(mergedChildContent)) + childLine.setFormatChange(true); + + childLine.setLineType(LineType.REPLACE); + childLine.setWithinHunk(true); + mapChildLineWithAncestors(hunk, parentLineList, childLine); + + break; + + case "DELETE": + // If the last child line is in DELETE, it maps with nothing + if (childIdx == childLineList.size() - 1) + break; + + // If the begin of child belongs to both DELETE and INSERT or both DELETE and REPALCE + if (belongsToBothDELETEAndINSERT(hunkList, hunkIdx, beginOfChild) || belongsToBothDELETEAndREPLACE(hunkList, hunkIdx, beginOfChild)) { + offset += hunk.getRangeOfParent(); + + hunkIdx++; + + isIgnorable = true; // Iteration can be ignored in this situation. + + break; + } + + offset += hunk.getRangeOfParent(); + + childLine.setLineType(LineType.CONTEXT); + mapChildLineWithAncestor(childIdx, offset, parentLineList, childLine); + + hunkIdx++; + + if (debug) { + System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); + System.out.println("DELETE\n"); + } + + break; + + default: + throw new EmptyHunkTypeException(); + } + } + if(!isIgnorable) { + childIdx++; + } + } + + // put lists of line corresponding to commit into subAG + subAnnotationGraph.put(parentRev, parentLineList); + subAnnotationGraph.put(childRev, childLineList); + + childLineList = parentLineList; + parentLineList = new ArrayList(); + } + // put subAG corresponding to path into AG + partitionedAnnotationGraph.put(path, subAnnotationGraph); + + pathCnt++; + } + + return partitionedAnnotationGraph; + } + + private boolean belongsToBothDELETEAndINSERT(ArrayList hunkList, int currHunkIdx, int currBeginOfChild) { + int nextHunkIdx = currHunkIdx + 1; + + if (nextHunkIdx < hunkList.size()) { + String nextHunkType = hunkList.get(nextHunkIdx).getHunkType(); + int nextBeginOfChild = hunkList.get(nextHunkIdx).getBeginOfChild(); + + if (nextHunkType.equals("INSERT") && currBeginOfChild == nextBeginOfChild) { + return true; + } + } + + return false; + } + + private boolean belongsToBothDELETEAndREPLACE(ArrayList hunkList, int currHunkIdx, int currBeginOfChild) { + int nextHunkIdx = currHunkIdx + 1; + + if (nextHunkIdx < hunkList.size()) { + String nextHunkType = hunkList.get(nextHunkIdx).getHunkType(); + int nextBeginOfChild = hunkList.get(nextHunkIdx).getBeginOfChild(); + + if (nextHunkType.equals("REPLACE") && currBeginOfChild == nextBeginOfChild) { + return true; + } + } + + return false; + } + + private void configureLineList(ArrayList lst, String path, RevCommit rev, String content) { + String[] contentArr = content.split("\r\n|\r|\n"); + + for (int i = 0; i < contentArr.length; i++) { + // make new Line + List ancestors = new ArrayList<>(); + String committer = rev.getCommitterIdent().getName(); + String author = rev.getAuthorIdent().getName(); + String StringDateTime = Utils.getStringDateTimeFromCommitTime(rev); + + Line line = new Line(path, rev.getName(), contentArr[i], i, LineType.CONTEXT, ancestors, false, false, committer, author, StringDateTime); + + lst.add(line); + } + } + + private ArrayList configureHunkList(EditList editList) { + ArrayList hunkList = new ArrayList<>(); + + for (Edit edit : editList) { + Hunk hunk = new Hunk(edit.getType().toString(), edit.getBeginA(), edit.getEndA(), edit.getBeginB(), edit.getEndB()); + + hunkList.add(hunk); + } + + return hunkList; + } + + private void mapChildLineWithAncestor(int childIdx, int offset, List parentLineList, Line childLine) { + Line ancestor = parentLineList.get(childIdx + offset); + List ancestorsOfChild = childLine.getAncestors(); + + ancestorsOfChild.add(ancestor); + childLine.setAncestors(ancestorsOfChild); + } + + private void mapChildLineWithAncestors(Hunk hunk, List parentLineList, Line childLine) { + List ancestorsOfChild = parentLineList.subList(hunk.getBeginOfParent(), hunk.getEndOfParent()); + + childLine.setAncestors(ancestorsOfChild); + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java new file mode 100644 index 0000000..b5b336a --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java @@ -0,0 +1,13 @@ +package edu.handong.csee.isel.bic.szz.graph; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.bic.szz.model.Line; + +// 한 path당 커밋과 고친 라인들 +public class AnnotationGraphModel extends HashMap>> { + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/model/Hunk.java b/src/main/java/edu/handong/csee/isel/bic/szz/model/Hunk.java new file mode 100644 index 0000000..59101fd --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/model/Hunk.java @@ -0,0 +1,46 @@ +package edu.handong.csee.isel.bic.szz.model; + +public class Hunk { + private String hunkType; + private int beginOfParent; + private int endOfParent; + private int beginOfChild; + private int endOfChild; + + public Hunk(String hunkType, int beginA, int endA, int beginB, int endB) { + super(); + this.hunkType = hunkType; + this.beginOfParent = beginA; + this.endOfParent = endA; + this.beginOfChild = beginB; + this.endOfChild = endB; + } + + public String getHunkType() { + return hunkType; + } + + public int getBeginOfParent() { + return beginOfParent; + } + + public int getEndOfParent() { + return endOfParent; + } + + public int getBeginOfChild() { + return beginOfChild; + } + + public int getEndOfChild() { + return endOfChild; + } + + public int getRangeOfParent() { + return Math.abs(this.beginOfParent - this.endOfParent); + } + + public int getRangeOfChild() { + return Math.abs(this.beginOfChild - this.endOfChild); + } +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/model/Line.java b/src/main/java/edu/handong/csee/isel/bic/szz/model/Line.java new file mode 100644 index 0000000..3c1f0fc --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/model/Line.java @@ -0,0 +1,123 @@ +package edu.handong.csee.isel.bic.szz.model; + +import java.util.List; + +public class Line { + private String path; + private String rev; + private String content; + private int idx; + private LineType lineType; + private List ancestors; + private boolean isFormatChange; + private boolean isInitialCommit; + private boolean isWithinHunk; + private String commiter; + private String author; + private String commitDate; + + public Line(String path, String rev, String content, int idx, LineType lineType, List ancestors, + boolean isFormatChange, boolean isWithinHunk, String commiter, String author, String commitDate) { + super(); + this.path = path; + this.rev = rev; + this.content = content; + this.idx = idx; + this.lineType = lineType; + this.ancestors = ancestors; + this.isFormatChange = isFormatChange; + this.isWithinHunk = isWithinHunk; + this.commiter = commiter; + this.author = author; + this.commitDate = commitDate; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getRev() { + return rev; + } + + public void setRev(String rev) { + this.rev = rev; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getIdx() { + return idx; + } + + public void setIdx(int idx) { + this.idx = idx; + } + + public LineType getLineType() { + return lineType; + } + + public void setLineType(LineType lineType) { + this.lineType = lineType; + } + + public List getAncestors() { + return ancestors; + } + + public void setAncestors(List ancestors) { + this.ancestors = ancestors; + } + + public boolean isFormatChange() { + return isFormatChange; + } + + public void setFormatChange(boolean isFormatChange) { + this.isFormatChange = isFormatChange; + } + + public boolean isWithinHunk() { + return isWithinHunk; + } + + public void setWithinHunk(boolean isWithinHunk) { + this.isWithinHunk = isWithinHunk; + } + + public String getCommiter() { + return commiter; + } + + public void setCommiter(String commiter) { + this.commiter = commiter; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getCommitDate() { + return commitDate; + } + + public void setCommitDate(String commitDate) { + this.commitDate = commitDate; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/model/LineType.java b/src/main/java/edu/handong/csee/isel/bic/szz/model/LineType.java new file mode 100644 index 0000000..9287289 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/model/LineType.java @@ -0,0 +1,21 @@ +package edu.handong.csee.isel.bic.szz.model; + +public enum LineType { + INSERT, DELETE, REPLACE, CONTEXT; + + public String toString() { + switch (this) { + case INSERT: + return "INSERT"; + case DELETE: + return "DELETE"; + case REPLACE: + return "REPLACE"; + case CONTEXT: + return "CONTEXT"; + default: + throw new IllegalArgumentException(); + } + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/model/PathRevision.java b/src/main/java/edu/handong/csee/isel/bic/szz/model/PathRevision.java new file mode 100644 index 0000000..b8eceab --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/model/PathRevision.java @@ -0,0 +1,35 @@ +package edu.handong.csee.isel.bic.szz.model; + +import org.eclipse.jgit.revwalk.RevCommit; + +public class PathRevision { + private String path; + private RevCommit commit; + + public PathRevision() { + + } + + public PathRevision(String path, RevCommit commit) { + super(); + this.path = path; + this.commit = commit; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public RevCommit getCommit() { + return commit; + } + + public void setCommit(RevCommit commit) { + this.commit = commit; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/model/RevsWithPath.java b/src/main/java/edu/handong/csee/isel/bic/szz/model/RevsWithPath.java new file mode 100644 index 0000000..0405458 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/model/RevsWithPath.java @@ -0,0 +1,10 @@ +package edu.handong.csee.isel.bic.szz.model; + +import java.util.HashMap; +import java.util.List; + +import org.eclipse.jgit.revwalk.RevCommit; + +public class RevsWithPath extends HashMap> { + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java new file mode 100644 index 0000000..b9c7f62 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java @@ -0,0 +1,265 @@ +package edu.handong.csee.isel.bic.szz.trace; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; + +import org.eclipse.jgit.diff.DiffEntry; +import org.eclipse.jgit.diff.Edit; +import org.eclipse.jgit.diff.EditList; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel; +import edu.handong.csee.isel.bic.szz.model.Line; +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; +import edu.handong.csee.isel.bic.szz.util.GitUtils; +import edu.handong.csee.isel.bic.szz.util.Utils; +import edu.handong.csee.isel.bic.szz.data.BICInfo; + +public class Tracer { + private boolean analysis; + private boolean debug; + private static final int REFACTOIRNG_THRESHOLD = 10; + private HashSet BILines = new HashSet<>(); + private List bicList = new ArrayList<>(); + private static ArrayList formatChangedLineList = new ArrayList(); + + public Tracer(boolean analysis, boolean debug) { + this.analysis = analysis; + this.debug = debug; + } + + public List collectBILines(Repository repo, List BFCList, AnnotationGraphModel annotationGraph, + RevsWithPath revsWithPath) throws IOException { + + // Phase 1 : Find path and line index for tracing + + for (RevCommit BFC : BFCList) { + + if (BFC.getParentCount() == 0) + continue; + + RevCommit parentRev = BFC.getParent(0); // Get BFC pre-commit (i.e. BFC~1 commit) + if (parentRev == null) { + System.err.println("ERROR: Parent commit does not exist: " + BFC.name()); + break; + } + + if (debug) { + System.out.println("\nParent Revision : " + parentRev.getName()); + System.out.println("Child Revision (BFC) : " + BFC.getName()); + } + + List diffs = GitUtils.diff(repo, parentRev.getTree(), BFC.getTree()); + + /* + * HEURISTIC : If the number of changed path in BFC is greater than 10, that + * commit is highly likely to involve refactoring codes that can be noise for + * collecting BIC. + */ + if (REFACTOIRNG_THRESHOLD <= diffs.size()) + continue; + + for (DiffEntry diff : diffs) { + String path = diff.getNewPath(); + + // Ignore non-java file and test file + if (!path.endsWith(".java") || path.contains("test")) + continue; + + if (debug) { + System.out.println("\nParent Revision : " + parentRev.getName()); + System.out.println("Child Revision (BFC) : " + BFC.getName()); + + System.out.println("\nChanged Path : " + path); + System.out.println("Graph contains " + path + "? " + annotationGraph.containsKey(path)); + + HashMap> subAG = annotationGraph.get(path); + if (subAG != null) { + System.out.println("Sub Graph contains " + BFC.getName() + "? " + subAG.containsKey(BFC)); + } + } + + // get subAnnotationGraph + // path 는 key 값이다. + HashMap> subAnnotationGraph = annotationGraph.get(path); // + + // Skip when subAnnotationGraph is null, because building AG could be omitted for some reasons. + // For example, building AG is omitted when there are only one path. See AnnotationGraphBuilderThread.java + if (subAnnotationGraph == null) + continue; + + // get list of lines of BFC + ArrayList linesToTrace = subAnnotationGraph.get(BFC); + + // get preFixSource and fixSource + String parentContent = Utils.removeComments(GitUtils.fetchBlob(repo, parentRev, path)).trim(); + String childContent = Utils.removeComments(GitUtils.fetchBlob(repo, BFC, path)).trim(); + + // get line indices that fix bug + + // editList에는 parentContent와 childContents의 차이를 나타내는 editList이다. + EditList editList = GitUtils.getEditListFromDiff(parentContent, childContent); + for (Edit edit : editList) { + int begin = -1; + int end = -1; + + if (debug) { + System.out.println("\nHunk Info"); + System.out.println("\tType : " + edit.getType()); + System.out.println("\tbA : " + edit.getBeginA()); + System.out.println("\teA : " + edit.getEndA()); + System.out.println("\tbB : " + edit.getBeginB()); + System.out.println("\teB : " + edit.getEndB()); + } + + // edit.getType() 를 사용하게 되면 자동으로 해당 커밋은 어떤 타입의 커밋이었는지, delete인지, replace인지 등을 나타내다ㅣ. + switch (edit.getType()) { + // 버그는 고쳤을때가 delete or replace인 경우 밖에 없으니까 + // 여기서 하고 싶은건 버그를 고친 line들을 구하고 싶은것이다. + case DELETE: + // 애네들은 phase2에서 쓰임. + begin = edit.getBeginA(); + end = edit.getEndA(); + + /* + * Get a revision just before BFC among changed revisions with path + * + * [REMARK] This list is sorted in chronological order. + * + * Latest ------------> Oldest + * [][][][][][][][][][][][][][][] + */ + List changeRevsWithPath = revsWithPath.get(path); + // 전단계를 얻으려고 한다. BFC가 deletion이였기 때문에 해당 버그는 삭제가 되었기 때문에 다시 복구하여 BIline을 찾을 수 있다.(childPath가 0번째이다.) + RevCommit changedPreBugFixRev = changeRevsWithPath.get(changeRevsWithPath.indexOf(BFC) + 1); + + linesToTrace = annotationGraph.get(path).get(changedPreBugFixRev); + + break; + + case REPLACE: + // 애네들은 phase2에서 쓰임. + begin = edit.getBeginB(); + end = edit.getEndB(); + + // replace는 현 BFC가 어떻게 바뀌었는지 알아내면 된다. + linesToTrace = annotationGraph.get(path).get(BFC); + break; + + default: + break; + } + + if (debug) { + System.out.println("\nTraced Line Info : " + begin); + System.out.println("Begin : " + begin); + System.out.println("End : " + end); + + System.out.println("\nSize of lines to trace : " + linesToTrace.size()); + + for (Line line : linesToTrace) { + int lindIdx = line.getIdx(); + + if (lindIdx >= begin && lindIdx < end) { + System.out.println("\nLine Idx : " + line.getIdx()); + System.out.println("Content : " + line.getContent()); + } + } + } + + // Phase 2 : trace + if (0 <= begin && 0 <= end) { + for (int i = begin; i < end; i++) { + Line line = linesToTrace.get(i); + // analysiz는 cli 모드이다. + if (analysis) { + traceWithAnalysis(line, BFC.getName()); + } else { + trace(line); + } + } + } + } + + String fixSha1 = BFC.name() + ""; + String fixDate = Utils.getStringDateTimeFromCommitTime(BFC); + + for (Line line : BILines) { + BICInfo bicInfo = new BICInfo(fixSha1, path, fixDate, line); + bicList.add(bicInfo); + } + + BILines.clear(); + } + } + + return bicList; + } + + public void trace(Line line) { + // The fact that there are no ancestors means that the type of this line is INSERT + // However, due to the limit of building AG algorithm, the type of line can be CONTEXT if the line is initially inserted in commit history. + if (line.getAncestors().size() == 0) { + if (!Utils.isWhitespace(line.getContent())) { + if (debug) { + System.out.println(String.format( + "Add line into BIC (Commit : %s, Line Idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n", + line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk())); + } + + BILines.add(line); + } + } + + for (Line ancestor : line.getAncestors()) { + // Lines that are not white space, not format change, and within hunk are BI Lines. + if (!Utils.isWhitespace(ancestor.getContent())) { + if (ancestor.isFormatChange() || !ancestor.isWithinHunk()) { + // 둘다 false false 로 나옴 + if (debug) { + System.out.println(String.format( + "From commit : %s, Lind idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n=> To commit : %s, Lind idx : %s, content : %s, type : %s, cometic? : %s, in hunk? : %s", + line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk(), ancestor.getRev(), ancestor.getIdx(), ancestor.getContent(), ancestor.getLineType(), ancestor.isFormatChange(),ancestor.isWithinHunk())); + } + + trace(ancestor); + } else { + if (debug) { + System.out.println(String.format( + "From commit : %s, Lind idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n=>Add line into BIC (Commit : %s, Line Idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n", + line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk(), ancestor.getRev(), ancestor.getIdx(), ancestor.getContent(), ancestor.getLineType(), ancestor.isFormatChange(),ancestor.isWithinHunk())); + } + + BILines.add(ancestor); + } + } + } + } + + public void traceWithAnalysis(Line line, String BFC) { + for (Line ancestor : line.getAncestors()) { + // Lines that are not white space, not format change, and within hunk are BI Lines. + if (!Utils.isWhitespace(ancestor.getContent())) { + if (ancestor.isFormatChange()) { + if (!formatChangedLineList.contains(line)) { + System.out.println(String.join(",", BFC, line.getRev(), line.getPath(), line.getContent().strip())); + + formatChangedLineList.add(line); + } + + traceWithAnalysis(ancestor, BFC); + + } else if (!ancestor.isWithinHunk()) { + + traceWithAnalysis(ancestor, BFC); + } else { + BILines.add(ancestor); + } + } + } + } +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java b/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java new file mode 100644 index 0000000..43cecb2 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java @@ -0,0 +1,240 @@ +package edu.handong.csee.isel.bic.szz.util; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.api.errors.NoHeadException; +import org.eclipse.jgit.diff.DiffAlgorithm; +import org.eclipse.jgit.diff.DiffEntry; +import org.eclipse.jgit.diff.DiffFormatter; +import org.eclipse.jgit.diff.EditList; +import org.eclipse.jgit.diff.RawText; +import org.eclipse.jgit.diff.RawTextComparator; +import org.eclipse.jgit.errors.AmbiguousObjectException; +import org.eclipse.jgit.errors.IncorrectObjectTypeException; +import org.eclipse.jgit.errors.LargeObjectException; +import org.eclipse.jgit.errors.MissingObjectException; +import org.eclipse.jgit.errors.RevisionSyntaxException; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectReader; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevTree; +import org.eclipse.jgit.revwalk.RevWalk; +import org.eclipse.jgit.treewalk.TreeWalk; +import org.eclipse.jgit.treewalk.filter.PathSuffixFilter; +import org.eclipse.jgit.util.io.DisabledOutputStream; + +import edu.handong.csee.isel.bic.szz.model.PathRevision; +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; + +public class GitUtils { + + public static DiffAlgorithm diffAlgorithm = DiffAlgorithm.getAlgorithm(DiffAlgorithm.SupportedAlgorithm.MYERS); + public static RawTextComparator diffComparator = RawTextComparator.WS_IGNORE_ALL; + + public static EditList getEditListFromDiff(String file1, String file2) { + RawText rt1 = new RawText(file1.getBytes()); + RawText rt2 = new RawText(file2.getBytes()); + EditList diffList = new EditList(); + + diffList.addAll(diffAlgorithm.diff(diffComparator, rt1, rt2)); + return diffList; + } + + + public static List diff(Repository repo, RevTree parentTree, RevTree childTree) throws IOException { + List diffs; + + DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); + df.setRepository(repo); + df.setDiffAlgorithm(GitUtils.diffAlgorithm); + df.setDiffComparator(GitUtils.diffComparator); + df.setPathFilter(PathSuffixFilter.create(".java")); + + // parentTree => 부모 커밋을 가지고 있다. + diffs = df.scan(parentTree, childTree); + + df.close(); + + return diffs; // paths 를 리턴한다. + } + + public static List configurePathRevisionList(Repository repo, List commits) + throws IOException { + List paths = new ArrayList<>(); + + for (RevCommit commit : commits) { + // Skip when there are no parents + if (commit.getParentCount() == 0) + continue; + + RevCommit parent = commit.getParent(0); + if (parent == null) + break; + + List diffs = GitUtils.diff(repo, parent.getTree(), commit.getTree()); + + // get changed paths + for (DiffEntry diff : diffs) { + String path = diff.getNewPath(); + + // contains only files which are java files and not test files + if (path.endsWith(".java") && !path.contains("test")) { + paths.add(new PathRevision(path, commit)); + } + } + } + + return paths; + } + + public static RevsWithPath collectRevsWithSpecificPath(List pathRevisions, List targetPaths) { + RevsWithPath revsWithPath = new RevsWithPath(); + + for (PathRevision pr : pathRevisions) { + String path = pr.getPath(); + + // Skip when the path is not a target + if (!targetPaths.contains(path)) + continue; + + if (revsWithPath.containsKey(path)) { + List lst = revsWithPath.get(path); + lst.add(pr.getCommit()); + revsWithPath.replace(path, lst); + } else { + List lst = new ArrayList<>(); + lst.add(pr.getCommit()); + revsWithPath.put(path, lst); + } + } + + return revsWithPath; + } + + public static String fetchBlob(Repository repo, RevCommit commit, String path) + throws LargeObjectException, MissingObjectException, IOException { + + // Makes it simpler to release the allocated resources in one go + ObjectReader reader = repo.newObjectReader(); + + // Get the revision's file tree + RevTree tree = commit.getTree(); + // .. and narrow it down to the single file's path + TreeWalk treewalk = TreeWalk.forPath(reader, path, tree); + + if (treewalk != null) { + // use the blob id to read the file's data + byte[] data = reader.open(treewalk.getObjectId(0)).getBytes(); + reader.close(); + return new String(data, "utf-8"); + } else { + return ""; + } + } + + public static String fetchBlob(Repository repo, String revSpec, String path) + throws RevisionSyntaxException, AmbiguousObjectException, IncorrectObjectTypeException, IOException { + + // Resolve the revision specification + final ObjectId id = repo.resolve(revSpec); + + // Makes it simpler to release the allocated resources in one go + ObjectReader reader = repo.newObjectReader(); + + // Get the commit object for that revision + RevWalk walk = new RevWalk(reader); + RevCommit commit = walk.parseCommit(id); + walk.close(); + + // Get the revision's file tree + RevTree tree = commit.getTree(); + // .. and narrow it down to the single file's path + TreeWalk treewalk = TreeWalk.forPath(reader, path, tree); + + if (treewalk != null) { + // use the blob id to read the file's data + byte[] data = reader.open(treewalk.getObjectId(0)).getBytes(); + reader.close(); + return new String(data, "utf-8"); + } else { + return ""; + } + + } + + public static List getRevs(Git git) throws NoHeadException, GitAPIException { + List commits = new ArrayList<>(); + + Iterable logs; + + logs = git.log().call(); + + for (RevCommit rev : logs) { + //System.out.println(RevCommit.toString(rev)); + commits.add(rev); + } + + return commits; + } + + public static ArrayList getBFCList(List issueKeys, List revs) { + // To avoid duplicate BFCs + HashSet BFCSet = new HashSet(); + + for (String issueKey : issueKeys) { + for (RevCommit rev : revs) + if (rev.getFullMessage().contains(issueKey)) + BFCSet.add(rev); + } + + return new ArrayList(BFCSet); + } + + public static ArrayList getBFCLIST(List BFCID, List revs) { + // To avoid duplicate BFCs + HashSet BFCSet = new HashSet(); + + for (String commitID : BFCID) { + for (RevCommit rev : revs) + if (rev.getFullMessage().contains(commitID)) + BFCSet.add(rev); + } + + return new ArrayList(BFCSet); + } + + public static List getTargetPaths(Repository repo, List BFCList) throws IOException { + List targetPaths = new ArrayList<>(); + + for (RevCommit bfc : BFCList) { + // Skip when there are no parents + if (bfc.getParentCount() == 0) + continue; + + RevCommit parent = bfc.getParent(0); + if (parent == null) + break; + + List diffs = GitUtils.diff(repo, parent.getTree(), bfc.getTree()); + + // get changed paths + for (DiffEntry diff : diffs) { + String path = diff.getNewPath(); + + // contains only files which are java files and not test files + if (path.endsWith(".java") && !path.contains("test")) { + targetPaths.add(path); + } + } + } + + return targetPaths; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/util/JavaASTParser.java b/src/main/java/edu/handong/csee/isel/bic/szz/util/JavaASTParser.java new file mode 100644 index 0000000..a3e5181 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/util/JavaASTParser.java @@ -0,0 +1,770 @@ +package edu.handong.csee.isel.bic.szz.util; + +import java.io.File; +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.dom.*; +import org.eclipse.jgit.errors.RevisionSyntaxException; +import org.eclipse.jgit.lib.Repository; + +public class JavaASTParser { + CompilationUnit cUnit; + String source; + ArrayList lstImportDeclaration = new ArrayList(); + ArrayList lstMethodDeclaration = new ArrayList(); + ArrayList lstMethodInvocation = new ArrayList(); + ArrayList lstFieldDeclaration = new ArrayList(); + ArrayList lstFieldAccess = new ArrayList(); + ArrayList lstIfStatement = new ArrayList(); + ArrayList lstForStatement = new ArrayList(); + ArrayList lstWhileStatement = new ArrayList(); + ArrayList lstVariableDeclarationFragment = new ArrayList(); + ArrayList lstClassInstanceCreation = new ArrayList(); + ArrayList lstSingleVariableDeclaration = new ArrayList(); + ArrayList lstSimpleName = new ArrayList(); + ArrayList lstTypeDeclaration = new ArrayList(); + ArrayList lstInfixExpression = new ArrayList(); + ArrayList lstConditionalExpression = new ArrayList(); + + PackageDeclaration pkgDeclaration; + + public JavaASTParser(String source) { + this.source = source; + praseJavaFile(source); + } + + public int getLineNum(int startPosition) { + return cUnit.getLineNumber(startPosition); + } + + public String getStringCode() { + return source; + } + + public CompilationUnit getCompilationUnit() { + return cUnit; + } + + public void praseJavaFile(String source) { + + ASTParser parser = ASTParser.newParser(AST.JLS8); + + parser.setKind(ASTParser.K_COMPILATION_UNIT); + char[] content = source.toCharArray(); + parser.setSource(content); + // parser.setUnitName("temp.java"); + @SuppressWarnings("unchecked") + Map options = JavaCore.getOptions(); + options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_8); + options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_7); + options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_8); + String[] sources = {}; + String[] classPaths = {}; + parser.setEnvironment(classPaths, sources, null, true); + parser.setResolveBindings(false); + parser.setCompilerOptions(options); + parser.setStatementsRecovery(true); + + try { + final CompilationUnit unit = (CompilationUnit) parser.createAST(null); + cUnit = unit; + + // Process the main body + try { + unit.accept(new ASTVisitor() { + + @Override + public boolean visit(MethodDeclaration node) { + lstMethodDeclaration.add(node); + return super.visit(node); + } + + @Override + public boolean visit(MethodInvocation node) { + lstMethodInvocation.add(node); + return super.visit(node); + } + + @Override + public boolean visit(TypeDeclaration node) { + lstTypeDeclaration.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final FieldDeclaration node) { + lstFieldDeclaration.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final SingleVariableDeclaration node) { + lstSingleVariableDeclaration.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final VariableDeclarationFragment node) { + lstVariableDeclarationFragment.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final ClassInstanceCreation node) { + lstClassInstanceCreation.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final FieldAccess node) { + lstFieldAccess.add(node); + return super.visit(node); + } + + @Override + public boolean visit(IfStatement node) { + lstIfStatement.add(node); + return super.visit(node); + } + + @Override + public boolean visit(ForStatement node) { + lstForStatement.add(node); + return super.visit(node); + } + + @Override + public boolean visit(WhileStatement node) { + lstWhileStatement.add(node); + return super.visit(node); + } + + @Override + public boolean visit(InfixExpression node) { + lstInfixExpression.add(node); + return super.visit(node); + } + + @Override + public boolean visit(SimpleName node) { + lstSimpleName.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final ImportDeclaration node) { + lstImportDeclaration.add(node); + return super.visit(node); + } + + @Override + public boolean visit(final PackageDeclaration node) { + pkgDeclaration = node; + return super.visit(node); + } + + @Override + public boolean visit(final AnonymousClassDeclaration node) { + // Log.info("AnonymousClassDeclaration"); + // Log.info(node); + return super.visit(node); + } + + // Expression ? Expression : Expression + @Override + public boolean visit(final ConditionalExpression node) { + lstConditionalExpression.add(node); + return super.visit(node); + } + + /* + * public boolean visit(CatchClause node) { list.add("CatchClause"); return + * super.visit(node); } public boolean visit(ClassInstanceCreation node) { + * list.add("ClassInstanceCreation"); list.add(node.getName().toString()); + * return super.visit(node); } + * + * public boolean visit(DoStatement node) { list.add("DoStatement"); + * + * return super.visit(node); } public boolean visit(EnumConstantDeclaration + * node) { list.add(node.getName().toString()); return super.visit(node); } + * public boolean visit(EnumDeclaration node) { list.add("EnumDeclaration"); + * list.add(node.getName().toString()); return super.visit(node); } public + * boolean visit(ForStatement node) { list.add("ForStatement"); + * + * return super.visit(node); } public boolean visit(EnhancedForStatement node) { + * list.add("ForStatement"); + * + * return super.visit(node); } + * + * public boolean visit(SingleVariableDeclaration node) { + * list.add("SingleVariableDeclaration"); + * + * return super.visit(node); } + * + * public boolean visit(SimpleName node) { list.add("SimpleName"); + * + * return super.visit(node); } + * + * + * public boolean visit(IfStatement node) { list.add("IfStatement"); + * lstIfStatement.add(node); return super.visit(node); } + * + * public boolean visit(MethodDeclaration node) { + * lstMethodDeclaration.add(node); list.add("METHOD:" + + * node.getName().toString() + node.parameters().toString() + ":" + + * node.getStartPosition() + ":" + node.getLength()); return super.visit(node); + * } + * + * public boolean visit(AssertStatement node) { list.add("AssertStatement"); + * return super.visit(node); } public boolean visit(ContinueStatement node) { + * list.add("ContinueStatement"); return super.visit(node); } + * + * public boolean visit(SwitchCase node) { list.add("SwitchCase"); return + * super.visit(node); } public boolean visit(SynchronizedStatement node) { + * list.add("SynchronizedStatement"); return super.visit(node); } public boolean + * visit(ThisExpression node) { list.add("ThisExpression"); return + * super.visit(node); } public boolean visit(ThrowStatement node) { + * list.add("ThrowStatement"); return super.visit(node); } public boolean + * visit(TryStatement node) { list.add("TryStatement"); return + * super.visit(node); } public boolean visit(TypeDeclaration node) { + * list.add(node.getName().toString()); return super.visit(node); } public + * boolean visit(WhileStatement node) { + * + * list.add("WhileStatement"); return super.visit(node); } public boolean + * visit(final FieldAccess node) { + * + * lstFieldAccess.add(node); + * + * return super.visit(node); } + * + * public boolean visit(final FieldDeclaration node) { + * lstFieldDeclaration.add(node); return super.visit(node); } + * + * public boolean visit(final Block node) { + * + * return super.visit(node); } + * + * public boolean visit(final Assignment node) { + * + * return super.visit(node); } + * + * public boolean visit(final ExpressionStatement node) { + * + * return super.visit(node); } + * + * public boolean visit(final AnnotationTypeDeclaration node) { + * //Log.info("AnnotationTypeDeclaration"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final AnnotationTypeMemberDeclaration node) { + * //Log.info("AnnotationTypeMemberDeclaration"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final AnonymousClassDeclaration node) { + * //Log.info("AnonymousClassDeclaration"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final ArrayAccess node) { //Log.info("ArrayAccess"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final ArrayCreation node) { //Log.info("ArrayCreation"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final ArrayInitializer node) { + * //Log.info("ArrayInitializer"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final ArrayType node) { //Log.info("ArrayType"); + * //Log.info(node); return super.visit(node); } + * + * + * public boolean visit(final BlockComment node) { //Log.info("BlockComment"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final BooleanLiteral node) { + * //Log.info("BooleanLiteral"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final CastExpression node) { + * //Log.info("CastExpression"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final CharacterLiteral node) { + * //Log.info("CharacterLiteral"); //Log.info(node); return super.visit(node); } + * + * + * + * public boolean visit(final CompilationUnit node) { + * //Log.info("CompilationUnit"); //Log.info(node); return super.visit(node); } + * + * + * + * public boolean visit(final ConstructorInvocation node) { + * //Log.info("ConstructorInvocation"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final CreationReference node) { + * //Log.info("CreationReference"); //Log.info(node); return super.visit(node); + * } + * + * public boolean visit(final Dimension node) { //Log.info("Dimension"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final EmptyStatement node) { + * //Log.info("EmptyStatement"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final ImportDeclaration node) { + * //Log.info("ImportDeclaration"); //Log.info(node); return super.visit(node); + * } public boolean visit(final InfixExpression node) { + * //Log.info("InfixExpression"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final Initializer node) { //Log.info("Initializer"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final InstanceofExpression node) { + * //Log.info("InstanceofExpression"); //Log.info(node); return + * super.visit(node); } public boolean visit(final IntersectionType node) { + * //Log.info("IntersectionType"); //Log.info(node); return super.visit(node); } + * public boolean visit(final Javadoc node) { //Log.info("Javadoc"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final LabeledStatement node) { + * //Log.info("LabeledStatement"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final LambdaExpression node) { + * //Log.info("LambdaExpression"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final LineComment node) { //Log.info("LineComment"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * MarkerAnnotation node) { //Log.info("MarkerAnnotation"); //Log.info(node); + * return super.visit(node); } public boolean visit(final MemberRef node) { + * //Log.info("MemberRef"); //Log.info(node); return super.visit(node); } + * + * public boolean visit(final MemberValuePair node) { + * //Log.info("MemberValuePair"); //Log.info(node); return super.visit(node); } + * public boolean visit(final MethodDeclaration node) { + * //Log.info("MethodDeclaration"); //Log.info(node); return super.visit(node); + * } public boolean visit(final MethodRef node) { //Log.info("MethodRef"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * MethodRefParameter node) { //Log.info("MethodRefParameter"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * Modifier node) { //Log.info("Modifier"); //Log.info(node); return + * super.visit(node); } public boolean visit(final NameQualifiedType node) { + * //Log.info("NameQualifiedType"); //Log.info(node); return super.visit(node); + * } + * + * public boolean visit(final NormalAnnotation node) { + * //Log.info("NormalAnnotation"); //Log.info(node); return super.visit(node); } + * public boolean visit(final NullLiteral node) { //Log.info("NullLiteral"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * NumberLiteral node) { //Log.info("NumberLiteral"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final PackageDeclaration node) { + * //Log.info("PackageDeclaration"); //Log.info(node); return super.visit(node); + * } public boolean visit(final ParameterizedType node) { + * //Log.info("ParameterizedType"); //Log.info(node); return super.visit(node); + * } public boolean visit(final ParenthesizedExpression node) { + * //Log.info("ParenthesizedExpression"); //Log.info(node); return + * super.visit(node); } public boolean visit(final PostfixExpression node) { + * //Log.info("PostfixExpression"); //Log.info(node); return super.visit(node); + * } public boolean visit(final PrefixExpression node) { + * //Log.info("PrefixExpression"); //Log.info(node); return super.visit(node); } + * public boolean visit(final PrimitiveType node) { //Log.info("PrimitiveType"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * QualifiedName node) { //Log.info("QualifiedName"); //Log.info(node); return + * super.visit(node); } + * + * public boolean visit(final QualifiedType node) { //Log.info("QualifiedType"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final SimpleType node) { //Log.info("SimpleType"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * SingleMemberAnnotation node) { //Log.info("SingleMemberAnnotation"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final StringLiteral node) { //Log.info("StringLiteral"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * SuperConstructorInvocation node) { //Log.info("SuperConstructorInvocation"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * SuperFieldAccess node) { //Log.info("SuperFieldAccess"); //Log.info(node); + * return super.visit(node); } public boolean visit(final SuperMethodInvocation + * node) { //Log.info("SuperMethodInvocation"); //Log.info(node); return + * super.visit(node); } public boolean visit(final SuperMethodReference node) { + * //Log.info("SuperMethodReference"); //Log.info(node); return + * super.visit(node); } public boolean visit(final TagElement node) { + * //Log.info("TagElement"); //Log.info(node); return super.visit(node); } + * public boolean visit(final TextElement node) { //Log.info("TextElement"); + * //Log.info(node); return super.visit(node); } + * + * public boolean visit(final TypeDeclarationStatement node) { + * //Log.info("TypeDeclarationStatement"); //Log.info(node); return + * super.visit(node); } public boolean visit(final TypeLiteral node) { + * //Log.info("TypeLiteral"); //Log.info(node); return super.visit(node); } + * public boolean visit(final TypeMethodReference node) { + * //Log.info("TypeMethodReference"); //Log.info(node); return + * super.visit(node); } public boolean visit(final TypeParameter node) { + * //Log.info("UnionType"); //Log.info(node); return super.visit(node); } public + * boolean visit(final UnionType node) { //Log.info("UnionType"); + * //Log.info(node); return super.visit(node); } public boolean visit(final + * VariableDeclarationExpression node) { + * //Log.info("VariableDeclarationExpression"); //Log.info(node); return + * super.visit(node); } public boolean visit(final VariableDeclarationFragment + * node) { //Log.info("VariableDeclarationFragment"); //Log.info(node); return + * super.visit(node); } public boolean visit(final VariableDeclarationStatement + * node) { //Log.info("VariableDeclarationStatement"); //Log.info(node); return + * super.visit(node); } public boolean visit(final WildcardType node) { + * //Log.info("WildcardType"); //Log.info(node); return super.visit(node); } + */ + }); + } catch (Exception e) { + System.out.println("Problem : " + e.toString()); + e.printStackTrace(); + System.exit(0); + } + + } catch (Exception e) { + System.out.println("\nError while executing compilation unit : " + e.toString()); + } + + } + + public ArrayList getMethodDeclarations() { + return lstMethodDeclaration; + } + + public ArrayList getMethodInvocations() { + return lstMethodInvocation; + } + + public ArrayList getTypeDeclarations() { + return lstTypeDeclaration; + } + + public ArrayList getFieldDeclarations() { + return lstFieldDeclaration; + } + + public ArrayList getFieldAccesses() { + return lstFieldAccess; + } + + public ArrayList getIfStatements() { + return lstIfStatement; + } + + public ArrayList getForStatements() { + return lstForStatement; + } + + public ArrayList getWhileStatements() { + return lstWhileStatement; + } + + public ArrayList getInfixExpressions() { + return lstInfixExpression; + } + + public ArrayList getSimpleNames() { + return lstSimpleName; + } + + public ArrayList getVariableDeclarationFragments() { + return lstVariableDeclarationFragment; + } + + public ArrayList getClassInstanceCreations() { + return lstClassInstanceCreation; + } + + public ArrayList getSingleVariableDeclarations() { + return lstSingleVariableDeclaration; + } + + public ArrayList getImportDeclarations() { + return lstImportDeclaration; + } + + public ArrayList getConditionalExpressions() { + return lstConditionalExpression; + } + + public PackageDeclaration getPackageDeclaration() { + return pkgDeclaration; + } + + public String getType(Expression node, String path, Repository repo, String shaId) { + + // TODO check the type of return value + if (node instanceof MethodInvocation) + return ""; + + if (node instanceof SimpleName) + return getTypeOfSimpleName(node, node.toString()); + + if (node instanceof ArrayAccess) { + return getTypeOfSimpleName(node, getOnlyNameFromArrayAccess(node)); + } + + // receiver.fieldName + if (node instanceof QualifiedName) { + + QualifiedName qName = (QualifiedName) node; + + String receiverName = qName.getQualifier().toString(); + String fieldName = qName.getName().toString(); + + String typeNameOfReceiver = getTypeOfSimpleName(node, receiverName); + + String typeNameIfReceiverIsInInnerClass = qulifiedNameInInnerClass(typeNameOfReceiver, fieldName); + if (!typeNameIfReceiverIsInInnerClass.isEmpty()) + return typeNameIfReceiverIsInInnerClass; + + ArrayList pathsForJavaSrcCodeOfReceiver = getPathForJavaSrcCodeFromTypeName(path, + typeNameOfReceiver); + + for (String pathForReceiver : pathsForJavaSrcCodeOfReceiver) { + + // load source code + String fileSource; + try { + + if (repo != null) + fileSource = GitUtils.fetchBlob(repo, shaId, pathForReceiver); + else + fileSource = new String(Files.readAllBytes(FileSystems.getDefault().getPath(pathForReceiver))); + + fileSource = Utils.removeComments(fileSource); + JavaASTParser codeASTForReceiver = new JavaASTParser(fileSource); + + // find field + String fieldType = getFieldType(codeASTForReceiver, fieldName); + if (!fieldType.isEmpty()) + return fieldType; + } catch (RevisionSyntaxException | IOException e) { + e.printStackTrace(); + } + } + } + + return ""; + } + + private String qulifiedNameInInnerClass(String typeNameOfReceiver, String fieldName) { + + for (TypeDeclaration typeDec : lstTypeDeclaration) { + String qTypeName = getQualifiedTypeName(typeDec); + if (qTypeName.equals(typeNameOfReceiver)) { + return getFieldType(typeDec, fieldName); + } + } + + return ""; + } + + private String getFieldType(TypeDeclaration typeDec, String fieldName) { + final ArrayList lstFieldDecs = new ArrayList(); + + typeDec.accept(new ASTVisitor() { + @Override + public boolean visit(FieldDeclaration node) { + lstFieldDecs.add(node); + return super.visit(node); + } + }); + + for (FieldDeclaration fieldDec : lstFieldDecs) { + @SuppressWarnings("unchecked") + List varDecFrags = fieldDec.fragments(); + for (VariableDeclarationFragment varDecFrag : varDecFrags) { + if (varDecFrag.getName().toString().equals(fieldName)) + return fieldDec.getType().toString(); + } + } + + return ""; + } + + private String getQualifiedTypeName(ASTNode node) { + + if (node == null) + return ""; + + if (node instanceof TypeDeclaration) { + String qTypeName = ((TypeDeclaration) node).getName().toString(); + String qParentTypeName = getQualifiedTypeName(node.getParent()); + return qParentTypeName.isEmpty() ? qTypeName : qParentTypeName + "." + qTypeName; + } + + return getQualifiedTypeName(node.getParent()); + } + + @SuppressWarnings("unchecked") + private String getFieldType(JavaASTParser codeASTForReceiver, String fieldName) { + + // get Type names associate with fields + for (FieldDeclaration fDc : codeASTForReceiver.getFieldDeclarations()) { + String typeName = fDc.getType().toString(); + + List list = ((List) fDc.fragments()); + for (int i = 0; i < list.size(); i++) { + VariableDeclarationFragment vDcF = list.get(i); + if (vDcF.getName().toString().equals(fieldName)) + return typeName; + } + } + + return ""; + } + + private ArrayList getPathForJavaSrcCodeFromTypeName(String path, String typeName) { + + ArrayList fullyQualitiedTypeNames = getPotentialFullyQualitifedTypeNames(this, typeName); + + String className = ""; + + for (TypeDeclaration tD : this.getTypeDeclarations()) { + // if(tD.modifiers().toString().contains("public")) + // TODO: consider the first class as the main class + className = tD.getName().toString(); + break; + } + + // get package name and Class name + String fullyQualifiedClassName = ""; + if (this.getPackageDeclaration() == null) { + fullyQualifiedClassName = className; + } else { + fullyQualifiedClassName = this.getPackageDeclaration().getName().toString() + "." + className; + } + // add this to fullyQualitiedTypeNames as well + // fullyQualitiedTypeNames.add(fullyQualifiedClassName); + + String pathPrefix = path.replace("/" + fullyQualifiedClassName.replace(".", File.separator) + ".java", ""); + + ArrayList potentialPaths = new ArrayList(); + for (String name : fullyQualitiedTypeNames) + potentialPaths.add(pathPrefix + File.separator + name.replace(".", "/") + ".java"); + + return potentialPaths; + } + + private ArrayList getPotentialFullyQualitifedTypeNames(JavaASTParser preFixWholeCodeAST, String typeName) { + // get a fully qualified Type name + ArrayList lstPackages = new ArrayList(); + ArrayList lstTypes = new ArrayList(); + + lstPackages.add(preFixWholeCodeAST.pkgDeclaration.getName().toString()); + + // get imported packages or types + for (ImportDeclaration iD : (List) preFixWholeCodeAST.getImportDeclarations()) { + if (iD.toString().contains("*")) + lstPackages.add(iD.getName().getFullyQualifiedName()); + else + lstTypes.add(iD.getName().getFullyQualifiedName()); + } + + // generate a list of potential fully qualified type names + ArrayList potentialFullyQualifiedName = new ArrayList(); + for (String name : lstTypes) { + if (name.endsWith("." + typeName)) { + potentialFullyQualifiedName.add(name); + return potentialFullyQualifiedName; + } + } + + for (String name : lstPackages) { + potentialFullyQualifiedName.add(name + "." + typeName); + } + + return potentialFullyQualifiedName; + } + + /** + * Get only name in case of ArrayAccess + * + * @param leftOperand + * @return String + */ + private String getOnlyNameFromArrayAccess(Expression operand) { + + if (operand instanceof ArrayAccess) { + return operand.toString().split("\\[")[0]; + } + + return operand.toString(); + } + + public String getTypeOfSimpleName(ASTNode astNode, String name) { + + // TODO need to find a target name in a hierarchy but not globally in a file + final ArrayList lstSingleVarDecs = new ArrayList(); + final ArrayList lstVarDecStmts = new ArrayList(); + final ArrayList lstFieldDecs = new ArrayList(); + final ArrayList lstVarDecExps = new ArrayList(); + + astNode.accept(new ASTVisitor() { + @Override + public boolean visit(SingleVariableDeclaration node) { + lstSingleVarDecs.add(node); + return super.visit(node); + } + + @Override + public boolean visit(VariableDeclarationStatement node) { + lstVarDecStmts.add(node); + return super.visit(node); + } + + @Override + public boolean visit(VariableDeclarationExpression node) { + lstVarDecExps.add(node); + return super.visit(node); + } + + @Override + public boolean visit(FieldDeclaration node) { + lstFieldDecs.add(node); + return super.visit(node); + } + }); + + for (SingleVariableDeclaration dec : lstSingleVarDecs) { + if (dec.getName().toString().equals(name)) + return dec.getType().toString(); + } + for (VariableDeclarationStatement dec : lstVarDecStmts) { + for (Object node : dec.fragments()) { + if (node instanceof VariableDeclarationFragment) { + if (((VariableDeclarationFragment) node).getName().toString().equals(name)) + return dec.getType().toString(); + } + } + } + for (VariableDeclarationExpression dec : lstVarDecExps) { + for (Object node : dec.fragments()) { + if (node instanceof VariableDeclarationFragment) { + if (((VariableDeclarationFragment) node).getName().toString().equals(name)) + return dec.getType().toString(); + } + } + } + + for (FieldDeclaration dec : lstFieldDecs) { + for (Object node : dec.fragments()) { + if (node instanceof VariableDeclarationFragment) { + if (((VariableDeclarationFragment) node).getName().toString().equals(name)) + return dec.getType().toString(); + } + } + } + + if (astNode.getParent() == null) + return ""; + + return getTypeOfSimpleName(astNode.getParent(), name); + } +} \ No newline at end of file diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java b/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java new file mode 100644 index 0000000..9b6de13 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java @@ -0,0 +1,96 @@ +package edu.handong.csee.isel.bic.szz.util; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; + +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVPrinter; +import org.eclipse.jdt.core.dom.Comment; +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.bic.szz.data.BICInfo; +import edu.handong.csee.isel.bic.szz.model.Line; + +public class Utils { + + public static boolean isWhitespace(String str) { + return str.replaceAll("\\s", "").equals(""); + } + + public static String mergeLineList(List list) { + String mergedContent = ""; + + for (Line line : list) { + mergedContent += line.getContent(); + } + + return mergedContent.replaceAll("\\s", ""); + } + + public static String removeComments(String code) { + + JavaASTParser codeAST = new JavaASTParser(code); + @SuppressWarnings("unchecked") + List lstComments = codeAST.cUnit.getCommentList(); + + for (Comment comment : lstComments) { + code = replaceComments(code, comment.getStartPosition(), comment.getLength()); + } + + return code; + } + + private static String replaceComments(String code, int startPosition, int length) { + + String pre = code.substring(0, startPosition); + String post = code.substring(startPosition + length, code.length()); + + String comments = code.substring(startPosition, startPosition + length); + + comments = comments.replaceAll("\\S", " "); + + code = pre + comments + post; + + return code; + } + + public static String getStringDateTimeFromCommitTime(RevCommit commit) { + SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date commitDate = commit.getAuthorIdent().getWhen(); + + TimeZone GMT = TimeZone.getTimeZone("GMT"); + ft.setTimeZone(GMT); + + return ft.format(commitDate); + } + + public static void storeOutputFile(String GIT_URL, List BICLines) throws IOException { + // Set file name + String[] arr = GIT_URL.split("/"); + String projName = arr[arr.length - 1]; + + //System.getProperty("user.dir") : 현재위치 반환 해줌. + String fName = System.getProperty("user.dir") + File.separator + "results" + File.separator + projName + ".csv"; + + File savedFile = new File(fName); + savedFile.getParentFile().mkdirs(); + + FileWriter writer = new FileWriter(savedFile); + + CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader("BISha1", "BIPath", "FixSha1", + "BIDate", "FixDate", "biLineIdx", "BIContent", "Commiter", "Author")); + + for (BICInfo BICInfo : BICLines) { + csvPrinter.printRecord(BICInfo.getBISha1(), BICInfo.getBiPath(), BICInfo.getFixSha1(), BICInfo.getBIDate(), + BICInfo.getFixDate(), BICInfo.getBiLineIdx(), BICInfo.getBIContent(), BICInfo.getCommiter(), + BICInfo.getAuthor()); + } + + csvPrinter.close(); + } +} diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index dd1a00f..d69cddd 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -51,12 +51,12 @@ public Input getInputFrom(String[] args) { //각각 옵션이 null아닐때 값을 넣어주고 해당 값에 맞는 input.mode를 정해 주었다! - if(!cmd.hasOption("ij")) { + if(cmd.hasOption("ij")) { input.jiraURL = cmd.getOptionValue("ij"); input.jiraProjectKey = cmd.getOptionValue("jk"); input.mode = Input.Mode.Jira; } - else if(!cmd.hasOption("ik")) { + else if(cmd.hasOption("ik")) { input.Issue_keyWord = cmd.getOptionValue("ik"); input.mode = Input.Mode.KeyWord; } From 487005657d2bae044e74ba0f6338044917571004 Mon Sep 17 00:00:00 2001 From: kongsubin Date: Tue, 25 Aug 2020 19:43:35 +0900 Subject: [PATCH 08/18] #28 add dependency picocli --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 8a0c0c8..8584159 100644 --- a/build.gradle +++ b/build.gradle @@ -76,6 +76,9 @@ dependencies { // https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' + + compile 'info.picocli:picocli:4.5.0' + compileOnly 'info.picocli:picocli-codegen:4.5.0' } \ No newline at end of file From ea3816ceed031db0aab7ff7711f683518278f89c Mon Sep 17 00:00:00 2001 From: kongsubin Date: Tue, 25 Aug 2020 19:44:37 +0900 Subject: [PATCH 09/18] #28 add command --- .../processor/input/command/BICCommand.java | 114 ++++++++++++++++++ .../input/command/DeveloperMetricCommand.java | 69 +++++++++++ .../input/command/MetricCommand.java | 70 +++++++++++ .../processor/input/command/PatchCommand.java | 113 +++++++++++++++++ .../data/processor/input/command/Task.java | 39 ++++++ 5 files changed, 405 insertions(+) create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java new file mode 100644 index 0000000..b28f5b2 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java @@ -0,0 +1,114 @@ +package edu.handong.csee.isel.data.processor.input.command; + +import static picocli.CommandLine.*; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.data.Input.Mode; +import edu.handong.csee.isel.data.Input.TaskType; +import picocli.CommandLine.ArgGroup; +import picocli.CommandLine.Option; + +@Command( + name = "bic", + description = "Making the BIC.csv using the issue. If you want to get bug introducing changes, use this command.", + usageHelpAutoWidth = true, + usageHelpWidth = 300, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) +public class BICCommand implements Runnable { + + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + + @ArgGroup(exclusive = true, multiplicity = "1") + Exclusive exclusive; + + static class Exclusive { + + @ArgGroup(exclusive = false) + DependentJira dependentJira = new DependentJira(); + + static class DependentJira { + @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") + private String jiraURL; + @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") + private String jirajiraProjectKey; + } + + @ArgGroup(exclusive = false) + DependentGithub dependentGithub = new DependentGithub(); + + static class DependentGithub { + @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") + private boolean github; + @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") + private String githubLabel = "bug"; + } + + @Option(names = "-ik", required = true, description = "--issue keyword") + private String keyWord; + } + + @ArgGroup(exclusive = false) + DependentMaxMin dependentMaxMin = new DependentMaxMin(); + + static class DependentMaxMin{ + @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") + private int min = 0; + @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") + private int max = 500; + } + + + @Override + public void run() { + Input.taskType = TaskType.BIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { + Input.jiraURL = exclusive.dependentJira.jiraURL; + Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; + Input.mode = Mode.JIRA; + }else if(exclusive.dependentGithub.github) { + Input.mode = Mode.GITHUB; + if(exclusive.dependentGithub.githubLabel != null) { + Input.label = exclusive.dependentGithub.githubLabel; + } + }else if(exclusive.keyWord != null) { + Input.issueKeyWord = exclusive.keyWord; + Input.mode = Mode.KEYWORD; + } + + if (dependentMaxMin.max > dependentMaxMin.min) { + Input.maxSize = dependentMaxMin.max; + Input.minSize = dependentMaxMin.min; + }else { + System.out.println("min must be less then max. set to default value (min:0, max:500)...."); + Input.maxSize = 500; + Input.minSize = 0; + } + + } + + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + +} + diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java new file mode 100644 index 0000000..7a7911a --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java @@ -0,0 +1,69 @@ +package edu.handong.csee.isel.data.processor.input.command; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.data.Input.TaskType; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; + +@Command( + name = "devmetric", + description = "collecting metrics for developer history scenario and making the arff file.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) +public class DeveloperMetricCommand implements Runnable{ + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") + private String bicPath; + + + @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String startDate; + @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String endDate; + + @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") + private int percent = 5; + + @Override + public void run() { + Input.taskType = TaskType.DEVELOPERMETRIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.BICpath = bicPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(startDate != null ) + Input.startDate = startDate; + if(endDate != null ) + Input.endDate = endDate; + + if(percent > 1 && percent < 10) { + Input.percent = percent; + }else { + System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); + Input.percent = 5; + } + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + +} + diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java new file mode 100644 index 0000000..654655f --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java @@ -0,0 +1,70 @@ +package edu.handong.csee.isel.data.processor.input.command; + + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.data.Input.TaskType; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; + +@Command( + name = "metric", + description = "collect metrics from all changes and making the arff file.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) +public class MetricCommand implements Runnable{ + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") + private String bicPath; + + + @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String startDate; + @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String endDate; + + @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") + private int percent = 5; + + @Override + public void run() { + Input.taskType = TaskType.METRIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.BICpath = bicPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(startDate != null ) + Input.startDate = startDate; + if(endDate != null ) + Input.endDate = endDate; + + if(percent > 1 && percent < 10) { + Input.percent = percent; + }else { + System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); + Input.percent = 5; + } + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + +} + diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java new file mode 100644 index 0000000..ab9c7ca --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java @@ -0,0 +1,113 @@ +package edu.handong.csee.isel.data.processor.input.command; + +import static picocli.CommandLine.*; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.data.Input.Mode; +import edu.handong.csee.isel.data.Input.TaskType; +import picocli.CommandLine.ArgGroup; +import picocli.CommandLine.Option; + +@Command( + name = "patch", + description = "Making the patch.csv using the issue. If you want to get bug introducing changes, use this command.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) +public class PatchCommand implements Runnable { + + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + + @ArgGroup(exclusive = true, multiplicity = "1") + Exclusive exclusive; + + static class Exclusive { + + @ArgGroup(exclusive = false) + DependentJira dependentJira = new DependentJira(); + + static class DependentJira { + @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") + private String jiraURL; + @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") + private String jirajiraProjectKey; + } + + @ArgGroup(exclusive = false) + DependentGithub dependentGithub = new DependentGithub(); + + static class DependentGithub { + @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") + private boolean github; + @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") + private String githubLabel = "bug"; + } + + @Option(names = "-ik", required = true, description = "--issue keyword") + private String keyWord; + } + + @ArgGroup(exclusive = false) + DependentMaxMin dependentMaxMin = new DependentMaxMin(); + + static class DependentMaxMin{ + @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") + private int min = 0; + @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") + private int max = 500; + } + + + @Override + public void run() { + Input.taskType = TaskType.PATCH; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { + Input.jiraURL = exclusive.dependentJira.jiraURL; + Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; + Input.mode = Mode.JIRA; + }else if(exclusive.dependentGithub.github) { + Input.mode = Mode.GITHUB; + if(exclusive.dependentGithub.githubLabel != null) { + Input.label = exclusive.dependentGithub.githubLabel; + } + }else if(exclusive.keyWord != null) { + Input.issueKeyWord = exclusive.keyWord; + Input.mode = Mode.KEYWORD; + } + + if (dependentMaxMin.max > dependentMaxMin.min) { + Input.maxSize = dependentMaxMin.max; + Input.minSize = dependentMaxMin.min; + }else { + System.out.println("min must be less then max. set to default value (min:0, max:500)...."); + Input.maxSize = 500; + Input.minSize = 0; + } + + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + +} + diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java new file mode 100644 index 0000000..d1c8f15 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java @@ -0,0 +1,39 @@ +package edu.handong.csee.isel.data.processor.input.command; + +import static picocli.CommandLine.*; +import picocli.CommandLine; +import picocli.CommandLine.Model.CommandSpec; + + +@Command( + subcommands = { + BICCommand.class, + PatchCommand.class, + MetricCommand.class, + DeveloperMetricCommand.class + }, + mixinStandardHelpOptions = true, + usageHelpAutoWidth = true, + sortOptions = false, + exitCodeOnInvalidInput = 64, + exitCodeOnExecutionException = 70, + exitCodeListHeading = "Exit Codes:%n", + exitCodeList = { + " 0:Successful program execution", + "64:Usage error: user input for the command was incorrect, " + + "e.g., the wrong number of arguments, a bad flag, " + + "a bad syntax in a parameter, etc.", + "70:Internal software error: an exception occurred when invoking " + + "the business logic of this command."} + ) + +public class Task implements Runnable { + + @Spec CommandSpec spec; + + @Override + public void run() { + new CommandLine(spec).usage(System.out); + System.exit(64); + } +} From 1408c79686ae77749634e06d9c2c968ff39dbacc Mon Sep 17 00:00:00 2001 From: kongsubin Date: Tue, 25 Aug 2020 19:45:32 +0900 Subject: [PATCH 10/18] #28 modified --- src/main/java/edu/handong/csee/isel/Main.java | 127 ++++++++---------- .../bfc/collector/BFCKeywordCollector.java | 16 ++- .../isel/bic/collector/CBICCollector.java | 16 +-- .../edu/handong/csee/isel/data/Input.java | 43 +++--- .../csee/isel/data/processor/CSVMaker.java | 6 +- .../input/converter/CLIConverter.java | 14 +- .../metric/collector/CMetricCollector.java | 22 ++- .../metric/collector/DeveloperHistory.java | 14 +- .../isel/patch/collector/CPatchCollector.java | 16 +-- 9 files changed, 138 insertions(+), 136 deletions(-) diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index f35d402..5b788ac 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -25,6 +25,7 @@ import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.processor.CSVMaker; import edu.handong.csee.isel.data.processor.input.InputConverter; +import edu.handong.csee.isel.data.processor.input.command.Task; import edu.handong.csee.isel.data.processor.input.converter.CLIConverter; import edu.handong.csee.isel.metric.MetricCollector; import edu.handong.csee.isel.metric.collector.CMetricCollector; @@ -32,6 +33,7 @@ import edu.handong.csee.isel.metric.metadata.Utils; import edu.handong.csee.isel.patch.PatchCollector; import edu.handong.csee.isel.patch.collector.CPatchCollector; +import picocli.CommandLine; public class Main { @@ -39,20 +41,23 @@ public static void main(String[] args) throws NoHeadException, IOException, GitAPIException, InvalidProjectKeyException, InvalidDomainException { // 1. Input - InputConverter inputConverter = new CLIConverter(); - Input input = inputConverter.getInputFrom(args); + Task task = new Task(); + CommandLine cmd = new CommandLine(task); + int exitCode = cmd.execute(args); + if(exitCode != 0) + System.exit(exitCode); // 2. get all commits from GIT directory List commitList; File gitDirectory = null; - if (isCloned(input) && isValidRepository(input)) { - gitDirectory = getGitDirectory(input); - } else if (isCloned(input) && (!isValidRepository(input))) { - File directory = getGitDirectory(input); + if (isCloned() && isValidRepository()) { + gitDirectory = getGitDirectory(); + } else if (isCloned() && (!isValidRepository())) { + File directory = getGitDirectory(); directory.delete(); - gitDirectory = GitClone(input); + gitDirectory = GitClone(); } else { - gitDirectory = GitClone(input); + gitDirectory = GitClone(); } commitList = getCommitListFrom(gitDirectory); @@ -63,76 +68,70 @@ public static void main(String[] args) BFCCollector bfcCollector = null; List csvInfoLst = null; - - - switch (input.taskType) { - case Patch: - bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); + switch (Input.taskType) { + case PATCH: + bfcList=makeBFCCollector(bfcList,commitList,bfcCollector); - PatchCollector patchCollector = new CPatchCollector(input); + PatchCollector patchCollector = new CPatchCollector(); patchCollector.setBFC(bfcList); csvInfoLst = patchCollector.collectFrom(commitList); - Print_CSV(input, csvInfoLst); + printCSV(csvInfoLst); break; case BIC: - bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); + bfcList=makeBFCCollector(bfcList,commitList,bfcCollector); - BICCollector bicCollector = new CBICCollector(input); + BICCollector bicCollector = new CBICCollector(); // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); - Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. + printCSV(csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. break; - case Metric: + case METRIC: //BIC 파일 읽기 - bicList= Read_BICcsv(input); - metricCollector = new CMetricCollector(input,false); + bicList= readBICcsv(); + metricCollector = new CMetricCollector(false); metricCollector.setBIC(bicList); File arff = metricCollector.collectFrom(commitList); System.out.println("Metric was saved in " + arff.getAbsolutePath()); break; - case Develop_Metirc: + case DEVELOPERMETRIC: //BIC 파일 읽기 - bicList=Read_BICcsv(input); + bicList=readBICcsv(); - DeveloperHistory developerHistory = new DeveloperHistory(input); + DeveloperHistory developerHistory = new DeveloperHistory(); String midDate = developerHistory.findDeveloperDate(); System.out.println("MidDate : "+midDate); - metricCollector = new CMetricCollector(input,true); + metricCollector = new CMetricCollector(true); metricCollector.setMidDate(midDate); metricCollector.setBIC(bicList); metricCollector.collectFrom(commitList); break; } - - - } + - - - public static List Read_BICcsv(Input input){ - File BIC = new File(input.BICpath); + public static List readBICcsv(){ + File BIC = new File(Input.BICpath); if (!BIC.isFile()) { System.out.println("There is no BIC file"); System.exit(1); } - List bicList = Utils.readBICCsvFile(input.BICpath); + List bicList = Utils.readBICCsvFile(Input.BICpath); return bicList; } - public static void Print_CSV( Input input, List csvInfoLst) throws IOException { + public static void printCSV(List csvInfoLst) throws IOException { if (csvInfoLst.size() < 1) { // System.out.println("why is it not working?"); @@ -141,47 +140,35 @@ public static void Print_CSV( Input input, List csvInfoLst) throws IOE // System.out.println("Really?"); CSVMaker printer = new CSVMaker(); printer.setDataType(csvInfoLst); - printer.setPath(input); + printer.setPath(); printer.print(csvInfoLst); } - public static List Making_bfcCollector (Input input, List bfcList, List commitList, BFCCollector bfcCollector) + public static List makeBFCCollector (List bfcList, List commitList, BFCCollector bfcCollector) throws IOException,InvalidProjectKeyException, InvalidDomainException{ - switch (input.mode) { //CLIConverter에서 각각 옵션 모드를 설정해 주었다. - case Jira: + switch (Input.mode) { //CLIConverter에서 각각 옵션 모드를 설정해 주었다. + case JIRA: // System.out.println("Main Jira part!"); bfcCollector = new BFCJiraCollector(); - bfcCollector.setJiraURL(input.jiraURL); - bfcCollector.setJiraProjectKey(input.jiraProjectKey); - bfcCollector.setOutPath(input.outPath); + bfcCollector.setJiraURL(Input.jiraURL); + bfcCollector.setJiraProjectKey(Input.jiraProjectKey); + bfcCollector.setOutPath(Input.outPath); bfcList = bfcCollector.collectFrom(commitList); break; - case KeyWord: + case KEYWORD: // System.out.println("Main KeyWord part!"); bfcCollector = new BFCKeywordCollector(); - if(input.Issue_keyWord != null) { -// System.out.println("keyworkds Issue Keywords: "+ input.Issue_keyWord); - BFCKeywordCollector.bugKeywords = new String[1]; - BFCKeywordCollector.bugKeywords[0]="("+input.Issue_keyWord+")"; -// System.out.println("Main: How about here?"); - } - else { - BFCKeywordCollector.bugKeywords = new String[2]; - BFCKeywordCollector.bugKeywords[0]="(bug)"; - BFCKeywordCollector.bugKeywords[1]="(fix)"; - } -// System.out.println("here to: How about here?"); bfcList = bfcCollector.collectFrom(commitList); break; - case GitHub: + case GITHUB: // System.out.println("Main GitHub part!"); bfcCollector = new BFCGitHubCollector(); - bfcCollector.setGitHubURL(input.gitURL); - bfcCollector.setGitHubLabel(input.label); + bfcCollector.setGitHubURL(Input.gitURL); + bfcCollector.setGitHubLabel(Input.label); bfcList = bfcCollector.collectFrom(commitList); break; @@ -192,8 +179,8 @@ public static List Making_bfcCollector (Input input, List bfcLis - private static boolean isValidRepository(Input input) { - File directory = getGitDirectory(input); + private static boolean isValidRepository() { + File directory = getGitDirectory(); try { Git git = Git.open(directory); //여기가 쓰이는데 왜안쓰인다고 뜨는지 모르겠다. return true; @@ -210,21 +197,21 @@ public static List getCommitListFrom(File gitDir) throws IOException, return commitList; } - public static String getReferencePath(Input input) { - return input.outPath + File.separator + "reference"; + public static String getReferencePath() { + return Input.outPath + File.separator + "reference"; } - public static File getGitDirectory(Input input) { - String referencePath = getReferencePath(input); + public static File getGitDirectory() { + String referencePath = getReferencePath(); File clonedDirectory = new File( - referencePath + File.separator + "repositories" + File.separator + input.projectName); + referencePath + File.separator + "repositories" + File.separator + Input.projectName); return clonedDirectory; } - private static File GitClone(Input input) throws InvalidRemoteException, TransportException, GitAPIException { - String remoteURI = input.gitRemoteURI; - String projectName = input.projectName; - File clonedDirectory = getGitDirectory(input); + private static File GitClone() throws InvalidRemoteException, TransportException, GitAPIException { + String remoteURI = Input.gitRemoteURI; + String projectName = Input.projectName; + File clonedDirectory = getGitDirectory(); clonedDirectory.mkdirs(); System.out.println("cloning " + projectName + "..."); Git git = Git.cloneRepository().setURI(remoteURI).setDirectory(clonedDirectory).setCloneAllBranches(true) @@ -233,8 +220,8 @@ private static File GitClone(Input input) throws InvalidRemoteException, Transpo return git.getRepository().getDirectory(); } - private static boolean isCloned(Input input) { - File clonedDirectory = getGitDirectory(input); + private static boolean isCloned() { + File clonedDirectory = getGitDirectory(); return clonedDirectory.exists(); } } diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java index d33fca2..82c1a20 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java @@ -8,9 +8,23 @@ import org.eclipse.jgit.revwalk.RevCommit; import edu.handong.csee.isel.bfc.BFCCollector; +import edu.handong.csee.isel.data.Input; public class BFCKeywordCollector extends BFCCollector { - public static String[] bugKeywords; + public String[] bugKeywords; + + public BFCKeywordCollector() { + super(); + if(Input.issueKeyWord != null) { + this.bugKeywords = new String[1]; + this.bugKeywords[0]="("+Input.issueKeyWord+")"; + } + else { + this.bugKeywords = new String[2]; + this.bugKeywords[0]="(bug)"; + this.bugKeywords[1]="(fix)"; + } + } public List collectFrom(List commitList) { diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java index 45bdeb5..d37fc75 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/CBICCollector.java @@ -29,15 +29,15 @@ public class CBICCollector implements BICCollector { //도대체 왜 여기서 에러가 뜨는지가 모르겠다. 건든게 일도 없는데? - Input input; +// Input input; List bfcList = null; Git git; Repository repo; - public CBICCollector(Input input) { - this.input = input; - } +// public CBICCollector(Input input) { +// this.input = input; +// } @Override public void setBFC(List bfcList) { @@ -49,15 +49,15 @@ public void setBFC(List bfcList) { public List collectFrom(List commitList) { try { - git = Git.open(edu.handong.csee.isel.Main.getGitDirectory(input)); + git = Git.open(edu.handong.csee.isel.Main.getGitDirectory()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } repo = git.getRepository(); - System.out.println("bfcList:"); - System.out.println(bfcList); +// System.out.println("bfcList:"); +// System.out.println(bfcList); List lstBIChanges = new ArrayList(); for (RevCommit commit : commitList) { @@ -106,7 +106,7 @@ public List collectFrom(List commitList) { // if minPathsize is defined, check the size and exit a loop if the changes are // bigger than minPatchSize // only consider min <= size <=max - if (numLinesChanges < input.minSize || numLinesChanges > input.maxSize) { + if (numLinesChanges < Input.minSize || numLinesChanges > Input.maxSize) { continue; } diff --git a/src/main/java/edu/handong/csee/isel/data/Input.java b/src/main/java/edu/handong/csee/isel/data/Input.java index a46ae33..741d00f 100644 --- a/src/main/java/edu/handong/csee/isel/data/Input.java +++ b/src/main/java/edu/handong/csee/isel/data/Input.java @@ -1,47 +1,50 @@ package edu.handong.csee.isel.data; -public class Input { - public String gitURL = null; +public class Input { - public String outPath; + public static String gitURL = null; - public String gitRemoteURI; + public static String outPath; - public String jiraProjectKey; + public static String gitRemoteURI; - public String jiraURL; + public static String jiraProjectKey; - public String projectName; + public static String jiraURL; + + public static String projectName; - public int maxSize; - public int minSize; + public static int maxSize; - public String label; + public static int minSize; + + public static String label; - public TaskType taskType; // -t 옵션(메인 전체 큰 옵션) + public static TaskType taskType; // -t 옵션(메인 전체 큰 옵션) - public Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) + public static Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) - public String Issue_keyWord; //이슈키 추가한 부분 //고쳐야 한다 + public static String issueKeyWord; //이슈키 추가한 부분 //고쳐야 한다 - public String BICpath; + public static String BICpath; - public String gitDirectory; + public static String gitDirectory; - public String startDate; + public static String startDate; - public String endDate; + public static String endDate; - public int percent; + public static int percent; public static enum TaskType { - Patch,BIC, Metric, Develop_Metirc + PATCH, BIC, METRIC, DEVELOPERMETRIC } public static enum Mode { - GitHub, Jira, KeyWord + GITHUB, JIRA, KEYWORD } } + diff --git a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java index e12d226..6abeec2 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java @@ -25,9 +25,9 @@ private static enum Type { //해당 class는 파라미터로 들어온 csvInfo PATCH, BIC, METRIC } - public void setPath(Input input) { + public void setPath() { - String outPath = input.outPath; + String outPath = Input.outPath; if (this.type != null) { switch (type) { @@ -45,7 +45,7 @@ public void setPath(Input input) { break; } } - outPath += input.projectName + ".csv"; + outPath += Input.projectName + ".csv"; this.path = outPath; diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index 3a5ade5..9565cc6 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -54,26 +54,26 @@ public Input getInputFrom(String[] args) { if(cmd.hasOption("ij")) { input.jiraURL = cmd.getOptionValue("ij"); input.jiraProjectKey = cmd.getOptionValue("jk"); - input.mode = Input.Mode.Jira; + input.mode = Input.Mode.JIRA; } else if(cmd.hasOption("ik")) { - input.Issue_keyWord = cmd.getOptionValue("ik"); - input.mode = Input.Mode.KeyWord; + input.issueKeyWord = cmd.getOptionValue("ik"); + input.mode = Input.Mode.KEYWORD; } else { - input.mode = Input.Mode.GitHub; + input.mode = Input.Mode.GITHUB; } String task= cmd.getOptionValue("t"); //무슨 테스크를 할지 값을 비교해서 밑에서 정해줌 if (task.equals("patch")) { - input.taskType = Input.TaskType.Patch; + input.taskType = Input.TaskType.PATCH; } else if (task.equals("BIC")) { input.taskType = Input.TaskType.BIC; } else if (task.equals("metric")) { - input.taskType = Input.TaskType.Metric; + input.taskType = Input.TaskType.METRIC; } else if (task.equals("Develop_Metric")) { - input.taskType = Input.TaskType.Develop_Metirc; + input.taskType = Input.TaskType.DEVELOPERMETRIC; } input.BICpath = cmd.getOptionValue("bp"); //metric 만들때 필요한 BIC 인풋 path옵션! diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java index aa98d37..f8563df 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java @@ -18,7 +18,6 @@ public class CMetricCollector implements MetricCollector { Git git; Repository repo; String referencePath; - Input input; String startDate; String endDate; String midDate; @@ -26,16 +25,15 @@ public class CMetricCollector implements MetricCollector { List bicList; - public CMetricCollector(Input input, boolean developerHistory) throws IOException { - this.input = input; - git = Git.open(Main.getGitDirectory(input)); + public CMetricCollector(boolean developerHistory) throws IOException { + git = Git.open(Main.getGitDirectory()); repo = git.getRepository(); - referencePath = input.outPath + File.separator + input.projectName +"-reference"; + referencePath = Input.outPath + File.separator + Input.projectName +"-reference"; if(startDate == null) this.startDate = "0000-00-00 00:00:00"; - else this.startDate = input.startDate; + else this.startDate = Input.startDate; if(endDate == null) this.endDate = "9999-99-99 99:99:99"; - else this.endDate = input.endDate; + else this.endDate = Input.endDate; this.developerHistory = developerHistory; } @@ -51,7 +49,7 @@ public File collectFrom(List commitList) { bowCollector.setBIC(bicList); bowCollector.setCommitList(commitList); bowCollector.setReferencePath(referencePath); - bowCollector.setProjectName(input.projectName); + bowCollector.setProjectName(Input.projectName); bowCollector.setStartDate(startDate); bowCollector.setEndDate(endDate); bowCollector.collect(); @@ -65,7 +63,7 @@ public File collectFrom(List commitList) { cVectorCollector.setBIC(bicList); cVectorCollector.setCommitList(commitList); cVectorCollector.setReferencePath(referencePath); - cVectorCollector.setProjectName(input.projectName); + cVectorCollector.setProjectName(Input.projectName); cVectorCollector.setStartDate(startDate); cVectorCollector.setEndDate(endDate); cVectorCollector.collect(); @@ -77,12 +75,12 @@ public File collectFrom(List commitList) { ArffHelper arffHelper = new ArffHelper(); arffHelper.setReferencePath(referencePath); - arffHelper.setProjectName(input.projectName); - arffHelper.setOutPath(input.outPath); + arffHelper.setProjectName(Input.projectName); + arffHelper.setOutPath(Input.outPath); mergedArff = arffHelper.getMergedBOWArffBetween(bowCollector, cVectorCollector); //arrf 파일이 하나나온다 <> // TODO: 4. Meta data, SJ help me - CommitCollector commitCollector = new CommitCollector(git, referencePath, bicList, input.projectName, startDate, endDate, developerHistory); //StartDate, strEndDate, test + CommitCollector commitCollector = new CommitCollector(git, referencePath, bicList, Input.projectName, startDate, endDate, developerHistory); //StartDate, strEndDate, test if(developerHistory) commitCollector.setMidDate(midDate); commitCollector.countCommitMetrics(); commitCollector.saveResultToCsvFile(); diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java b/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java index ca5675d..9ea3643 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java @@ -21,17 +21,17 @@ public class DeveloperHistory { String midDate; double percent; - public DeveloperHistory(Input input){ + public DeveloperHistory(){ try { - this.git = Git.open(Main.getGitDirectory(input)); + this.git = Git.open(Main.getGitDirectory()); this.repo = git.getRepository(); - if(input.startDate == null) startDate = "0000-00-00 00:00:00"; - else this.startDate = input.startDate; + if(Input.startDate == null) startDate = "0000-00-00 00:00:00"; + else this.startDate = Input.startDate; - if(input.endDate == null) endDate = "9999-99-99 99:99:99"; - else this.endDate = input.endDate; + if(Input.endDate == null) endDate = "9999-99-99 99:99:99"; + else this.endDate = Input.endDate; - this.percent = (double)input.percent; + this.percent = (double)Input.percent; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java b/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java index 7ddf4b6..af6979e 100644 --- a/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java +++ b/src/main/java/edu/handong/csee/isel/patch/collector/CPatchCollector.java @@ -26,11 +26,11 @@ public class CPatchCollector implements PatchCollector { List bfcList = null; - private Input input; - - public CPatchCollector(Input input) { - this.input = input; - } +// private Input input; +// +// public CPatchCollector(Input input) { +// this.input = input; +// } public CPatchCollector() { // TODO Auto-generated constructor stub @@ -60,7 +60,7 @@ public List collectFrom(List commitList) { List patch = getPatchBetween(parent, commit); int patchSize = getPatchSize(patch); - if (patchSize < input.minSize || patchSize > input.maxSize) { + if (patchSize < Input.minSize || patchSize > Input.maxSize) { continue; } // System.out.println("CPatchCollector collectFrom if Working"); @@ -103,7 +103,7 @@ private List getPatchBetween(RevCommit parent, RevCommit commit) { continue; PatchInfo patch = new PatchInfo(); - patch.project = input.projectName; + patch.project = Input.projectName; patch.commitName = commit.getName(); patch.commitMessage = commit.getFullMessage(); patch.date = Utils.getStringDateTimeFromCommit(commit); @@ -208,7 +208,7 @@ public String getPatch(DiffEntry diff, Repository repo) { // } private Git openGitRepository() { - File clonedDirectory = Main.getGitDirectory(input); + File clonedDirectory = Main.getGitDirectory(); Git git = null; try { git = Git.open(clonedDirectory); From 25091d7af1d8119c640b8f576aad7634a454c30f Mon Sep 17 00:00:00 2001 From: kongsubin Date: Tue, 25 Aug 2020 19:46:46 +0900 Subject: [PATCH 11/18] add makefile --- Makefile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ddf2c91 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +build: + gradle build + unzip ./build/distributions/BugPatchCollector.zip -d run + +unzip: + rm -rf run + unzip ./build/distributions/BugPatchCollector.zip + +run: + ./BugPatchCollector/bin/BugPatchCollector $(args) + +clean: + rm -rf run + rm -rf build From ae51ecbd4a9c13102e16b5bcf6a863687bcefb1e Mon Sep 17 00:00:00 2001 From: kongsubin Date: Tue, 25 Aug 2020 20:11:56 +0900 Subject: [PATCH 12/18] #28 modified command --- .../processor/input/command/BICCommand.java | 227 +++++++++--------- .../input/command/DeveloperMetricCommand.java | 137 ++++++----- .../input/command/MetricCommand.java | 137 ++++++----- .../processor/input/command/PatchCommand.java | 225 +++++++++-------- .../data/processor/input/command/Task.java | 78 +++--- 5 files changed, 400 insertions(+), 404 deletions(-) diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java index b28f5b2..59715e6 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java @@ -1,114 +1,113 @@ -package edu.handong.csee.isel.data.processor.input.command; - -import static picocli.CommandLine.*; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.Input.Mode; -import edu.handong.csee.isel.data.Input.TaskType; -import picocli.CommandLine.ArgGroup; -import picocli.CommandLine.Option; - -@Command( - name = "bic", - description = "Making the BIC.csv using the issue. If you want to get bug introducing changes, use this command.", - usageHelpAutoWidth = true, - usageHelpWidth = 300, - sortOptions = false, - headerHeading = "Usage:%n", - synopsisHeading = "%n", - descriptionHeading = "%nDescription:%n%n", - optionListHeading = "%nOptions:%n" - ) -public class BICCommand implements Runnable { - - @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") - private String inputGitURL; - @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") - private String outputPath; - - @ArgGroup(exclusive = true, multiplicity = "1") - Exclusive exclusive; - - static class Exclusive { - - @ArgGroup(exclusive = false) - DependentJira dependentJira = new DependentJira(); - - static class DependentJira { - @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") - private String jiraURL; - @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") - private String jirajiraProjectKey; - } - - @ArgGroup(exclusive = false) - DependentGithub dependentGithub = new DependentGithub(); - - static class DependentGithub { - @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") - private boolean github; - @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") - private String githubLabel = "bug"; - } - - @Option(names = "-ik", required = true, description = "--issue keyword") - private String keyWord; - } - - @ArgGroup(exclusive = false) - DependentMaxMin dependentMaxMin = new DependentMaxMin(); - - static class DependentMaxMin{ - @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") - private int min = 0; - @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") - private int max = 500; - } - - - @Override - public void run() { - Input.taskType = TaskType.BIC; - Input.gitURL = inputGitURL; - Input.outPath = outputPath; - Input.gitRemoteURI = Input.gitURL + ".git"; - Input.projectName = getProjectName(Input.gitRemoteURI); - - if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { - Input.jiraURL = exclusive.dependentJira.jiraURL; - Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; - Input.mode = Mode.JIRA; - }else if(exclusive.dependentGithub.github) { - Input.mode = Mode.GITHUB; - if(exclusive.dependentGithub.githubLabel != null) { - Input.label = exclusive.dependentGithub.githubLabel; - } - }else if(exclusive.keyWord != null) { - Input.issueKeyWord = exclusive.keyWord; - Input.mode = Mode.KEYWORD; - } - - if (dependentMaxMin.max > dependentMaxMin.min) { - Input.maxSize = dependentMaxMin.max; - Input.minSize = dependentMaxMin.min; - }else { - System.out.println("min must be less then max. set to default value (min:0, max:500)...."); - Input.maxSize = 500; - Input.minSize = 0; - } - - } - - - private String getProjectName(String gitURI) { - Pattern p = Pattern.compile(".*/(.+)\\.git"); - Matcher m = p.matcher(gitURI); - m.find(); - return m.group(1); - } - -} - +package edu.handong.csee.isel.data.processor.input.command; + + import static picocli.CommandLine.*; + + import java.util.regex.Matcher; + import java.util.regex.Pattern; + + import edu.handong.csee.isel.data.Input; + import edu.handong.csee.isel.data.Input.Mode; + import edu.handong.csee.isel.data.Input.TaskType; + import picocli.CommandLine.ArgGroup; + import picocli.CommandLine.Option; + + @Command( + name = "bic", + description = "Making the BIC.csv using the issue. If you want to get bug introducing changes, use this command.", + usageHelpAutoWidth = true, + usageHelpWidth = 300, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) + public class BICCommand implements Runnable { + + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + + @ArgGroup(exclusive = true, multiplicity = "1") + Exclusive exclusive; + + static class Exclusive { + + @ArgGroup(exclusive = false) + DependentJira dependentJira = new DependentJira(); + + static class DependentJira { + @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") + private String jiraURL; + @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") + private String jirajiraProjectKey; + } + + @ArgGroup(exclusive = false) + DependentGithub dependentGithub = new DependentGithub(); + + static class DependentGithub { + @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") + private boolean github; + @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") + private String githubLabel = "bug"; + } + + @Option(names = "-ik", required = true, description = "--issue keyword") + private String keyWord; + } + + @ArgGroup(exclusive = false) + DependentMaxMin dependentMaxMin = new DependentMaxMin(); + + static class DependentMaxMin{ + @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") + private int min = 0; + @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") + private int max = 500; + } + + + @Override + public void run() { + Input.taskType = TaskType.BIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { + Input.jiraURL = exclusive.dependentJira.jiraURL; + Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; + Input.mode = Mode.JIRA; + }else if(exclusive.dependentGithub.github) { + Input.mode = Mode.GITHUB; + if(exclusive.dependentGithub.githubLabel != null) { + Input.label = exclusive.dependentGithub.githubLabel; + } + }else if(exclusive.keyWord != null) { + Input.issueKeyWord = exclusive.keyWord; + Input.mode = Mode.KEYWORD; + } + + if (dependentMaxMin.max > dependentMaxMin.min) { + Input.maxSize = dependentMaxMin.max; + Input.minSize = dependentMaxMin.min; + }else { + System.out.println("min must be less then max. set to default value (min:0, max:500)...."); + Input.maxSize = 500; + Input.minSize = 0; + } + + } + + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + + } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java index 7a7911a..682444d 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.java @@ -1,69 +1,68 @@ -package edu.handong.csee.isel.data.processor.input.command; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.Input.TaskType; -import picocli.CommandLine.Command; -import picocli.CommandLine.Option; - -@Command( - name = "devmetric", - description = "collecting metrics for developer history scenario and making the arff file.", - usageHelpAutoWidth = true, - usageHelpWidth = 200, - sortOptions = false, - headerHeading = "Usage:%n", - synopsisHeading = "%n", - descriptionHeading = "%nDescription:%n%n", - optionListHeading = "%nOptions:%n" - ) -public class DeveloperMetricCommand implements Runnable{ - @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") - private String inputGitURL; - @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") - private String outputPath; - @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") - private String bicPath; - - - @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") - private String startDate; - @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") - private String endDate; - - @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") - private int percent = 5; - - @Override - public void run() { - Input.taskType = TaskType.DEVELOPERMETRIC; - Input.gitURL = inputGitURL; - Input.outPath = outputPath; - Input.BICpath = bicPath; - Input.gitRemoteURI = Input.gitURL + ".git"; - Input.projectName = getProjectName(Input.gitRemoteURI); - - if(startDate != null ) - Input.startDate = startDate; - if(endDate != null ) - Input.endDate = endDate; - - if(percent > 1 && percent < 10) { - Input.percent = percent; - }else { - System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); - Input.percent = 5; - } - } - - private String getProjectName(String gitURI) { - Pattern p = Pattern.compile(".*/(.+)\\.git"); - Matcher m = p.matcher(gitURI); - m.find(); - return m.group(1); - } - -} - +package edu.handong.csee.isel.data.processor.input.command; + + import java.util.regex.Matcher; + import java.util.regex.Pattern; + + import edu.handong.csee.isel.data.Input; + import edu.handong.csee.isel.data.Input.TaskType; + import picocli.CommandLine.Command; + import picocli.CommandLine.Option; + + @Command( + name = "devmetric", + description = "collecting metrics for developer history scenario and making the arff file.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) + public class DeveloperMetricCommand implements Runnable{ + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") + private String bicPath; + + + @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String startDate; + @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String endDate; + + @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") + private int percent = 5; + + @Override + public void run() { + Input.taskType = TaskType.DEVELOPERMETRIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.BICpath = bicPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(startDate != null ) + Input.startDate = startDate; + if(endDate != null ) + Input.endDate = endDate; + + if(percent > 1 && percent < 10) { + Input.percent = percent; + }else { + System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); + Input.percent = 5; + } + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + + } \ No newline at end of file diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java index 654655f..3a05949 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/MetricCommand.java @@ -1,70 +1,69 @@ -package edu.handong.csee.isel.data.processor.input.command; - - +package edu.handong.csee.isel.data.processor.input.command; + + import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.Input.TaskType; -import picocli.CommandLine.Command; -import picocli.CommandLine.Option; - -@Command( - name = "metric", - description = "collect metrics from all changes and making the arff file.", - usageHelpAutoWidth = true, - usageHelpWidth = 200, - sortOptions = false, - headerHeading = "Usage:%n", - synopsisHeading = "%n", - descriptionHeading = "%nDescription:%n%n", - optionListHeading = "%nOptions:%n" - ) -public class MetricCommand implements Runnable{ - @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") - private String inputGitURL; - @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") - private String outputPath; - @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") - private String bicPath; - - - @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") - private String startDate; - @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") - private String endDate; - - @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") - private int percent = 5; - - @Override - public void run() { - Input.taskType = TaskType.METRIC; - Input.gitURL = inputGitURL; - Input.outPath = outputPath; - Input.BICpath = bicPath; - Input.gitRemoteURI = Input.gitURL + ".git"; - Input.projectName = getProjectName(Input.gitRemoteURI); - - if(startDate != null ) - Input.startDate = startDate; - if(endDate != null ) - Input.endDate = endDate; - - if(percent > 1 && percent < 10) { - Input.percent = percent; - }else { - System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); - Input.percent = 5; - } - } - - private String getProjectName(String gitURI) { - Pattern p = Pattern.compile(".*/(.+)\\.git"); - Matcher m = p.matcher(gitURI); - m.find(); - return m.group(1); - } - -} - + import java.util.regex.Pattern; + + import edu.handong.csee.isel.data.Input; + import edu.handong.csee.isel.data.Input.TaskType; + import picocli.CommandLine.Command; + import picocli.CommandLine.Option; + + @Command( + name = "metric", + description = "collect metrics from all changes and making the arff file.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) + public class MetricCommand implements Runnable{ + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + @Option(names = "-bp", required = true, description = "--BugIntroducingChange csv file path \nPath of csv file.") + private String bicPath; + + + @Option(names = "-s", description = "--startdate \nStart date for collecting training data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String startDate; + @Option(names = "-e", description = "--enddate \nEnd date for collecting test data. \nFormat:\"yyyy-MM-dd HH:mm:ss\".") + private String endDate; + + @Option(names = "-p", description = "--percent \nPercent of developer. Range : 2 ~ 9. (default:5)") + private int percent = 5; + + @Override + public void run() { + Input.taskType = TaskType.METRIC; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.BICpath = bicPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(startDate != null ) + Input.startDate = startDate; + if(endDate != null ) + Input.endDate = endDate; + + if(percent > 1 && percent < 10) { + Input.percent = percent; + }else { + System.out.println("percent value is out of range (Range : 2 ~ 9). set to default value 5...."); + Input.percent = 5; + } + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + + } \ No newline at end of file diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java index ab9c7ca..a96a8ef 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java @@ -1,113 +1,112 @@ -package edu.handong.csee.isel.data.processor.input.command; - -import static picocli.CommandLine.*; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.Input.Mode; -import edu.handong.csee.isel.data.Input.TaskType; -import picocli.CommandLine.ArgGroup; -import picocli.CommandLine.Option; - -@Command( - name = "patch", - description = "Making the patch.csv using the issue. If you want to get bug introducing changes, use this command.", - usageHelpAutoWidth = true, - usageHelpWidth = 200, - sortOptions = false, - headerHeading = "Usage:%n", - synopsisHeading = "%n", - descriptionHeading = "%nDescription:%n%n", - optionListHeading = "%nOptions:%n" - ) -public class PatchCommand implements Runnable { - - @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") - private String inputGitURL; - @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") - private String outputPath; - - @ArgGroup(exclusive = true, multiplicity = "1") - Exclusive exclusive; - - static class Exclusive { - - @ArgGroup(exclusive = false) - DependentJira dependentJira = new DependentJira(); - - static class DependentJira { - @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") - private String jiraURL; - @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") - private String jirajiraProjectKey; - } - - @ArgGroup(exclusive = false) - DependentGithub dependentGithub = new DependentGithub(); - - static class DependentGithub { - @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") - private boolean github; - @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") - private String githubLabel = "bug"; - } - - @Option(names = "-ik", required = true, description = "--issue keyword") - private String keyWord; - } - - @ArgGroup(exclusive = false) - DependentMaxMin dependentMaxMin = new DependentMaxMin(); - - static class DependentMaxMin{ - @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") - private int min = 0; - @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") - private int max = 500; - } - - - @Override - public void run() { - Input.taskType = TaskType.PATCH; - Input.gitURL = inputGitURL; - Input.outPath = outputPath; - Input.gitRemoteURI = Input.gitURL + ".git"; - Input.projectName = getProjectName(Input.gitRemoteURI); - - if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { - Input.jiraURL = exclusive.dependentJira.jiraURL; - Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; - Input.mode = Mode.JIRA; - }else if(exclusive.dependentGithub.github) { - Input.mode = Mode.GITHUB; - if(exclusive.dependentGithub.githubLabel != null) { - Input.label = exclusive.dependentGithub.githubLabel; - } - }else if(exclusive.keyWord != null) { - Input.issueKeyWord = exclusive.keyWord; - Input.mode = Mode.KEYWORD; - } - - if (dependentMaxMin.max > dependentMaxMin.min) { - Input.maxSize = dependentMaxMin.max; - Input.minSize = dependentMaxMin.min; - }else { - System.out.println("min must be less then max. set to default value (min:0, max:500)...."); - Input.maxSize = 500; - Input.minSize = 0; - } - - } - - private String getProjectName(String gitURI) { - Pattern p = Pattern.compile(".*/(.+)\\.git"); - Matcher m = p.matcher(gitURI); - m.find(); - return m.group(1); - } - -} - + package edu.handong.csee.isel.data.processor.input.command; + + import static picocli.CommandLine.*; + + import java.util.regex.Matcher; + import java.util.regex.Pattern; + + import edu.handong.csee.isel.data.Input; + import edu.handong.csee.isel.data.Input.Mode; + import edu.handong.csee.isel.data.Input.TaskType; + import picocli.CommandLine.ArgGroup; + import picocli.CommandLine.Option; + + @Command( + name = "patch", + description = "Making the patch.csv using the issue. If you want to get bug introducing changes, use this command.", + usageHelpAutoWidth = true, + usageHelpWidth = 200, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) + public class PatchCommand implements Runnable { + + @Option(names = "-i", required = true, description = "--input \ninput type:URL(https://github.com/user/project_name \noption must be used in this program.") + private String inputGitURL; + @Option(names = "-o", required = true, description = "--result \nDirectory will have result file. \noption must be used in this program.") + private String outputPath; + + @ArgGroup(exclusive = true, multiplicity = "1") + Exclusive exclusive; + + static class Exclusive { + + @ArgGroup(exclusive = false) + DependentJira dependentJira = new DependentJira(); + + static class DependentJira { + @Option(names = "-ij", required = true, description = "--issue jira \nJira issues URL (example:issues.apache.org)") + private String jiraURL; + @Option(names = "-jk", required = true, description = "--jiraProject \nJira project key.") + private String jirajiraProjectKey; + } + + @ArgGroup(exclusive = false) + DependentGithub dependentGithub = new DependentGithub(); + + static class DependentGithub { + @Option(names = "-ig", required = true, description = "--issue github \nWhen searching fix-commit, use GitHub-issues with label name.") + private boolean github; + @Option(names = "-l", required = false, description = "--label \n Set a bug label of github (default: 'bug').") + private String githubLabel = "bug"; + } + + @Option(names = "-ik", required = true, description = "--issue keyword") + private String keyWord; + } + + @ArgGroup(exclusive = false) + DependentMaxMin dependentMaxMin = new DependentMaxMin(); + + static class DependentMaxMin{ + @Option(names = "-m", required = true, description = "-m,--min \nSet a Min lines of each result patch. \nThis Option need to be used with 'x' Option. (default: 0)") + private int min = 0; + @Option(names = "-x", required = true, description = "-x,--max \nSet a Max lines of each result patch. Only count '+++' and '---'lines. must used with '-m'. (default:500)") + private int max = 500; + } + + + @Override + public void run() { + Input.taskType = TaskType.PATCH; + Input.gitURL = inputGitURL; + Input.outPath = outputPath; + Input.gitRemoteURI = Input.gitURL + ".git"; + Input.projectName = getProjectName(Input.gitRemoteURI); + + if(exclusive.dependentJira.jiraURL != null && exclusive.dependentJira.jirajiraProjectKey != null) { + Input.jiraURL = exclusive.dependentJira.jiraURL; + Input.jiraProjectKey = exclusive.dependentJira.jirajiraProjectKey; + Input.mode = Mode.JIRA; + }else if(exclusive.dependentGithub.github) { + Input.mode = Mode.GITHUB; + if(exclusive.dependentGithub.githubLabel != null) { + Input.label = exclusive.dependentGithub.githubLabel; + } + }else if(exclusive.keyWord != null) { + Input.issueKeyWord = exclusive.keyWord; + Input.mode = Mode.KEYWORD; + } + + if (dependentMaxMin.max > dependentMaxMin.min) { + Input.maxSize = dependentMaxMin.max; + Input.minSize = dependentMaxMin.min; + }else { + System.out.println("min must be less then max. set to default value (min:0, max:500)...."); + Input.maxSize = 500; + Input.minSize = 0; + } + + } + + private String getProjectName(String gitURI) { + Pattern p = Pattern.compile(".*/(.+)\\.git"); + Matcher m = p.matcher(gitURI); + m.find(); + return m.group(1); + } + + } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java index d1c8f15..c55d1d4 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java @@ -1,39 +1,39 @@ -package edu.handong.csee.isel.data.processor.input.command; - -import static picocli.CommandLine.*; -import picocli.CommandLine; -import picocli.CommandLine.Model.CommandSpec; - - -@Command( - subcommands = { - BICCommand.class, - PatchCommand.class, - MetricCommand.class, - DeveloperMetricCommand.class - }, - mixinStandardHelpOptions = true, - usageHelpAutoWidth = true, - sortOptions = false, - exitCodeOnInvalidInput = 64, - exitCodeOnExecutionException = 70, - exitCodeListHeading = "Exit Codes:%n", - exitCodeList = { - " 0:Successful program execution", - "64:Usage error: user input for the command was incorrect, " + - "e.g., the wrong number of arguments, a bad flag, " + - "a bad syntax in a parameter, etc.", - "70:Internal software error: an exception occurred when invoking " + - "the business logic of this command."} - ) - -public class Task implements Runnable { - - @Spec CommandSpec spec; - - @Override - public void run() { - new CommandLine(spec).usage(System.out); - System.exit(64); - } -} +package edu.handong.csee.isel.data.processor.input.command; + + import static picocli.CommandLine.*; + import picocli.CommandLine; + import picocli.CommandLine.Model.CommandSpec; + + + @Command( + subcommands = { + BICCommand.class, + PatchCommand.class, + MetricCommand.class, + DeveloperMetricCommand.class + }, + mixinStandardHelpOptions = true, + usageHelpAutoWidth = true, + sortOptions = false, + exitCodeOnInvalidInput = 64, + exitCodeOnExecutionException = 70, + exitCodeListHeading = "Exit Codes:%n", + exitCodeList = { + " 0:Successful program execution", + "64:Usage error: user input for the command was incorrect, " + + "e.g., the wrong number of arguments, a bad flag, " + + "a bad syntax in a parameter, etc.", + "70:Internal software error: an exception occurred when invoking " + + "the business logic of this command."} + ) + + public class Task implements Runnable { + + @Spec CommandSpec spec; + + @Override + public void run() { + new CommandLine(spec).usage(System.out); + System.exit(64); + } + } From 658e311febc95e7c34416ee06b8282b5d4510472 Mon Sep 17 00:00:00 2001 From: JinwooLeeHGU <21400603@handong.edu> Date: Wed, 26 Aug 2020 16:51:07 +0900 Subject: [PATCH 13/18] #28 AG-SZZ runnable --- .../bic/collector/{szzBICCollector.java => SZZBICCollector.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/edu/handong/csee/isel/bic/collector/{szzBICCollector.java => SZZBICCollector.java} (100%) diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java similarity index 100% rename from src/main/java/edu/handong/csee/isel/bic/collector/szzBICCollector.java rename to src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java From 7081a614e59d7dd0adb126acd3487c64cd5fb1b2 Mon Sep 17 00:00:00 2001 From: JinwooLeeHGU <21400603@handong.edu> Date: Wed, 26 Aug 2020 17:04:47 +0900 Subject: [PATCH 14/18] #28 AG-SZZ code change --- src/main/java/edu/handong/csee/isel/Main.java | 10 +++--- .../isel/bic/collector/SZZBICCollector.java | 36 ++++++++++++++----- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index ac82075..494d4b0 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -21,7 +21,7 @@ import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; import edu.handong.csee.isel.bic.BICCollector; import edu.handong.csee.isel.bic.collector.CBICCollector; -import edu.handong.csee.isel.bic.collector.szzBICCollector; +import edu.handong.csee.isel.bic.collector.SZZBICCollector; import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.processor.CSVMaker; @@ -34,7 +34,7 @@ import edu.handong.csee.isel.patch.PatchCollector; import edu.handong.csee.isel.patch.collector.CPatchCollector; -//import edu.handong.csee.isel.bic.collector.szzBICCollector; +//import edu.handong.csee.isel.bic.collector.SZZBICCollector; public class Main { @@ -83,15 +83,15 @@ public static void main(String[] args) //아 여기서 만들어 준넨엥에엥 bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); - BICCollector bicCollector = new szzBICCollector(input); + BICCollector bicCollector = new SZZBICCollector(input); // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); // Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. // 위에걸 해줘야 apacheJUDDIIssueKeys.csv가 나오기 때문에 위에를 일단 실행시킨다. -// BICCollector bicCollector = new szzBICCollector(input); -// 파일 저장해주는 것까지 szzBICCollector에서 처리해주기. +// BICCollector bicCollector = new SZZBICCollector(input); +// 파일 저장해주는 것까지 SZZBICCollector에서 처리해주기. // Phase 3: Utils.storeOutputFile(GIT_URL, BILines); break; diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java index c096b4b..2d9766c 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java @@ -37,7 +37,7 @@ //import edu.handong.csee.isel.data.csv.BICInfo; import edu.handong.csee.isel.bic.szz.data.BICInfo; -public class szzBICCollector implements BICCollector{ +public class SZZBICCollector implements BICCollector{ Input input; List bfcommitList = null; @@ -45,13 +45,13 @@ public class szzBICCollector implements BICCollector{ Git git; Repository repo; - public szzBICCollector(Input input) { + public SZZBICCollector(Input input) { this.input = input; } - // 이건 그냥 bfcList라는 틀을 받아온거임. @Override public void setBFC(List bfcList) { + // 7a26bedd92cff633d641118d19b5237ac8474105 리스트가 넘겨짐. this.bfcommitList = bfcList; } @@ -66,25 +66,43 @@ public List collectFrom(List commitList) throws IOException } repo = git.getRepository(); - // Colleting BFCs - ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); + // Colleting BFCs + List bfcList = new ArrayList(); + + for (RevCommit commit : commitList) { + + if (commit.getParentCount() < 1) { + System.err.println("WARNING: Parent commit does not exist: " + commit.name()); + continue; + } + + if(!Utils.isBFC(commit, bfcommitList)) { + continue; + } + + bfcList.add(commit); + } + + // Colleting BFCs + //ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); // Pre-step for building annotation graph // 파일이 고쳐진 새로운 getNewPath가 나온다. filter 가 된거. (.java 파일이고, test가 아닌것) ( - List targetPaths = GitUtils.getTargetPaths(repo, bfcList); + List targetPaths = GitUtils.getTargetPaths(repo, bfcList); // bfcList에서 계속 이어지는거임. BFCs는 jiraCrawler를 사용하여 얻은 targetPaths와 일치하는 것을 찾아냄. 이건 모든 이슈커밋리스트에서 // Wrong(X) -> 여기 안에 configurePathRevisionList(repo, revs) 이건 filter가 안된 부분이다. - RevsWithPath revsWithPath = GitUtils + RevsWithPath revsWithPath = GitUtils .collectRevsWithSpecificPath(GitUtils.configurePathRevisionList(repo, commitList), targetPaths); - // 한 path당 커밋 리스트를 부여해줌. + // 한 path당 커밋 리스트를 부여해줌. + // Phase 1 : Build the annotation graph final long startBuildingTime = System.currentTimeMillis(); // 수진님한테 물어볼것 - AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); + AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); // set debug mode = false for a while AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath, false); From 6553cb5dd4b7e6c9105e8bc1651529d82634b19a Mon Sep 17 00:00:00 2001 From: kongsubin Date: Thu, 27 Aug 2020 09:51:27 +0900 Subject: [PATCH 15/18] #28 solve the merge conflict --- src/main/java/edu/handong/csee/isel/Main.java | 27 +---- .../isel/bic/collector/AGBICCollector.java | 114 ++++++++++++++++++ .../isel/bic/collector/SZZBICCollector.java | 8 +- .../input/converter/CLIConverter.java | 5 - 4 files changed, 121 insertions(+), 33 deletions(-) create mode 100644 src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index e181292..f1125c9 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -20,6 +20,7 @@ import edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException; import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; import edu.handong.csee.isel.bic.BICCollector; +import edu.handong.csee.isel.bic.collector.AGBICCollector; import edu.handong.csee.isel.bic.collector.CBICCollector; import edu.handong.csee.isel.bic.collector.SZZBICCollector; import edu.handong.csee.isel.data.CSVInfo; @@ -85,30 +86,14 @@ public static void main(String[] args) break; case BIC: -<<<<<<< HEAD - bfcList=makeBFCCollector(bfcList,commitList,bfcCollector); + bfcList = makeBFCCollector(bfcList,commitList,bfcCollector); - BICCollector bicCollector = new CBICCollector(); +// BICCollector bicCollector = new CBICCollector(); + BICCollector bicCollector = new AGBICCollector(); // bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); bicCollector.setBFC(bfcList); csvInfoLst = bicCollector.collectFrom(commitList); printCSV(csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. -======= - //아 여기서 만들어 준넨엥에엥 - bfcList=Making_bfcCollector(input,bfcList,commitList,bfcCollector); - - BICCollector bicCollector = new SZZBICCollector(input); -// bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); - bicCollector.setBFC(bfcList); - csvInfoLst = bicCollector.collectFrom(commitList); -// Print_CSV(input, csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. - -// 위에걸 해줘야 apacheJUDDIIssueKeys.csv가 나오기 때문에 위에를 일단 실행시킨다. -// BICCollector bicCollector = new SZZBICCollector(input); -// 파일 저장해주는 것까지 SZZBICCollector에서 처리해주기. -// Phase 3: Utils.storeOutputFile(GIT_URL, BILines); - ->>>>>>> refactoring_JW break; case METRIC: @@ -135,11 +120,7 @@ public static void main(String[] args) metricCollector.collectFrom(commitList); break; -<<<<<<< HEAD } -======= - } ->>>>>>> refactoring_JW } diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java new file mode 100644 index 0000000..afc9af5 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java @@ -0,0 +1,114 @@ +package edu.handong.csee.isel.bic.collector; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.Utils; +import edu.handong.csee.isel.bic.BICCollector; +import edu.handong.csee.isel.bic.szz.data.BICInfo; +import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder; +import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel; +import edu.handong.csee.isel.bic.szz.model.RevsWithPath; +import edu.handong.csee.isel.bic.szz.trace.Tracer; +import edu.handong.csee.isel.bic.szz.util.GitUtils; +import edu.handong.csee.isel.data.CSVInfo; +import edu.handong.csee.isel.data.Input; + +public class AGBICCollector implements BICCollector{ + + List bfcommitList = null; + + Git git; + Repository repo; + + public AGBICCollector() { + } + + @Override + public void setBFC(List bfcList) { + // 7a26bedd92cff633d641118d19b5237ac8474105 리스트가 넘겨짐. + this.bfcommitList = bfcList; + } + + @Override + public List collectFrom(List commitList) throws IOException { + // TODO Auto-generated method stub + try { + git = Git.open(edu.handong.csee.isel.Main.getGitDirectory()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + repo = git.getRepository(); + + // Colleting BFCs + List bfcList = new ArrayList(); + + for (RevCommit commit : commitList) { + + if (commit.getParentCount() < 1) { + System.err.println("WARNING: Parent commit does not exist: " + commit.name()); + continue; + } + + if(!Utils.isBFC(commit, bfcommitList)) { + continue; + } + + bfcList.add(commit); + } + + // Colleting BFCs + //ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); + + // Pre-step for building annotation graph + + // 파일이 고쳐진 새로운 getNewPath가 나온다. filter 가 된거. (.java 파일이고, test가 아닌것) ( + List targetPaths = GitUtils.getTargetPaths(repo, bfcList); + + // bfcList에서 계속 이어지는거임. BFCs는 jiraCrawler를 사용하여 얻은 targetPaths와 일치하는 것을 찾아냄. 이건 모든 이슈커밋리스트에서 + // Wrong(X) -> 여기 안에 configurePathRevisionList(repo, revs) 이건 filter가 안된 부분이다. + RevsWithPath revsWithPath = GitUtils + .collectRevsWithSpecificPath(GitUtils.configurePathRevisionList(repo, commitList), targetPaths); + // 한 path당 커밋 리스트를 부여해줌. + + + // Phase 1 : Build the annotation graph + final long startBuildingTime = System.currentTimeMillis(); + + // 수진님한테 물어볼것 + AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); + // set debug mode = false for a while + AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath, false); + + final long endBuildingTime = System.currentTimeMillis(); + System.out.println("\nBuilding Annotation Graph takes " + (endBuildingTime - startBuildingTime) / 1000.0 + "s\n"); + + // Phase 2 : Trace and collect BIC candidates and filter out format changes, comments, etc among candidates + final long startTracingTime = System.currentTimeMillis(); + + // 일단은 analysis, debug option은 false 로 세팅 + Tracer tracer = new Tracer(false, false); + List BILines = tracer.collectBILines(repo, bfcList, agm, revsWithPath); + + final long endTracingTime = System.currentTimeMillis(); + System.out.println("\nCollecting BICs takes " + (endTracingTime - startTracingTime) / 1000.0 + "s\n"); + + // Sort BICs in the order FixSha1, BISha1, BIContent, biLineIdx + Collections.sort(BILines); + + // Phase 3 : store outputs + // GIT_URL : input. + Utils.storeOutputFile(Input.outPath, Input.gitURL, BILines); + + + return null; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java index 2d9766c..8424a17 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java @@ -39,14 +39,12 @@ public class SZZBICCollector implements BICCollector{ - Input input; List bfcommitList = null; Git git; Repository repo; - public SZZBICCollector(Input input) { - this.input = input; + public SZZBICCollector() { } @Override @@ -59,7 +57,7 @@ public void setBFC(List bfcList) { public List collectFrom(List commitList) throws IOException { // TODO Auto-generated method stub try { - git = Git.open(edu.handong.csee.isel.Main.getGitDirectory(input)); + git = Git.open(edu.handong.csee.isel.Main.getGitDirectory()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -124,7 +122,7 @@ public List collectFrom(List commitList) throws IOException // Phase 3 : store outputs // GIT_URL : input. - Utils.storeOutputFile(input.outPath, input.gitURL, BILines); + Utils.storeOutputFile(Input.outPath, Input.gitURL, BILines); return null; diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java index 8f3192e..9565cc6 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.java @@ -57,13 +57,8 @@ public Input getInputFrom(String[] args) { input.mode = Input.Mode.JIRA; } else if(cmd.hasOption("ik")) { -<<<<<<< HEAD input.issueKeyWord = cmd.getOptionValue("ik"); input.mode = Input.Mode.KEYWORD; -======= - input.Issue_keyWord = cmd.getOptionValue("ik"); - input.mode = Input.Mode.KeyWord; ->>>>>>> refactoring_JW } else { input.mode = Input.Mode.GITHUB; From e19d7d11a177fa2a0bd2deee10a33170fa00cd2b Mon Sep 17 00:00:00 2001 From: kongsubin Date: Thu, 27 Aug 2020 15:46:35 +0900 Subject: [PATCH 16/18] #28 add szz command, modified ag szz, modified bic file output path --- src/main/java/edu/handong/csee/isel/Main.java | 30 ++-- .../java/edu/handong/csee/isel/Utils.java | 6 +- ...CCollector.java => AGSZZBICCollector.java} | 54 ++------ .../isel/bic/collector/SZZBICCollector.java | 131 ------------------ .../csee/isel/bic/szz/data/BICInfo.java | 24 ---- .../bic/szz/graph/AnnotationGraphBuilder.java | 4 +- .../graph/AnnotationGraphBuilderThread.java | 64 +-------- .../csee/isel/bic/szz/trace/Tracer.java | 80 +---------- .../edu/handong/csee/isel/data/Input.java | 8 +- .../csee/isel/data/processor/CSVMaker.java | 2 +- .../processor/input/command/BICCommand.java | 14 +- .../data/processor/input/command/Task.java | 11 +- 12 files changed, 68 insertions(+), 360 deletions(-) rename src/main/java/edu/handong/csee/isel/bic/collector/{AGBICCollector.java => AGSZZBICCollector.java} (53%) delete mode 100644 src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index f1125c9..8e9d1cd 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -20,15 +20,12 @@ import edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException; import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; import edu.handong.csee.isel.bic.BICCollector; -import edu.handong.csee.isel.bic.collector.AGBICCollector; +import edu.handong.csee.isel.bic.collector.AGSZZBICCollector; import edu.handong.csee.isel.bic.collector.CBICCollector; -import edu.handong.csee.isel.bic.collector.SZZBICCollector; import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.processor.CSVMaker; -import edu.handong.csee.isel.data.processor.input.InputConverter; import edu.handong.csee.isel.data.processor.input.command.Task; -import edu.handong.csee.isel.data.processor.input.converter.CLIConverter; import edu.handong.csee.isel.metric.MetricCollector; import edu.handong.csee.isel.metric.collector.CMetricCollector; import edu.handong.csee.isel.metric.collector.DeveloperHistory; @@ -37,7 +34,6 @@ import edu.handong.csee.isel.patch.collector.CPatchCollector; import picocli.CommandLine; -//import edu.handong.csee.isel.bic.collector.SZZBICCollector; public class Main { @@ -87,13 +83,23 @@ public static void main(String[] args) case BIC: bfcList = makeBFCCollector(bfcList,commitList,bfcCollector); + BICCollector bicCollector; + + switch (Input.szzMode) { + case BSZZ: + bicCollector = new CBICCollector(); + bicCollector.setBFC(bfcList); + csvInfoLst = bicCollector.collectFrom(commitList); + printCSV(csvInfoLst); + break; + + case AGSZZ: + bicCollector = new AGSZZBICCollector(); + bicCollector.setBFC(bfcList); + bicCollector.collectFrom(commitList); + break; + } -// BICCollector bicCollector = new CBICCollector(); - BICCollector bicCollector = new AGBICCollector(); -// bicCollector = new SZZRunner(getGitDirectory(input).getAbsolutePath()); - bicCollector.setBFC(bfcList); - csvInfoLst = bicCollector.collectFrom(commitList); - printCSV(csvInfoLst);//이게 최종 BIC프린트 해주는 메소드-> 손델것은 없다. 알아서 하는 메소드. break; case METRIC: @@ -139,10 +145,8 @@ public static List readBICcsv(){ public static void printCSV(List csvInfoLst) throws IOException { if (csvInfoLst.size() < 1) { -// System.out.println("why is it not working?"); return; } -// System.out.println("Really?"); CSVMaker printer = new CSVMaker(); printer.setDataType(csvInfoLst); printer.setPath(); diff --git a/src/main/java/edu/handong/csee/isel/Utils.java b/src/main/java/edu/handong/csee/isel/Utils.java index 06e8189..c310a0d 100755 --- a/src/main/java/edu/handong/csee/isel/Utils.java +++ b/src/main/java/edu/handong/csee/isel/Utils.java @@ -51,6 +51,7 @@ import edu.handong.csee.isel.bfc.collector.github.IssueLinkParser; import edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException; import edu.handong.csee.isel.bic.szz.data.BICInfo; +import edu.handong.csee.isel.data.Input; public class Utils { @@ -370,8 +371,9 @@ public static void storeOutputFile(String outPath, String GIT_URL, List //System.getProperty("user.dir") : 현재위치 반환 해줌. // String fName = System.getProperty("user.dir") + File.separator + "results" + File.separator + projName + ".csv"; - String fName = outPath + File.separator + "results" + File.separator + projName + ".csv"; - // +// String fName = outPath + File.separator + "AGSZZ_"+ Input.projectName + ".csv"; + String fName = outPath + File.separator + "BIC_AGSZZ_" + Input.projectName + ".csv"; + File savedFile = new File(fName); savedFile.getParentFile().mkdirs(); diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java similarity index 53% rename from src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java rename to src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java index afc9af5..cd1d928 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/AGBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java @@ -20,35 +20,33 @@ import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; -public class AGBICCollector implements BICCollector{ +public class AGSZZBICCollector implements BICCollector{ - List bfcommitList = null; + List bfcList = null; Git git; Repository repo; - public AGBICCollector() { + public AGSZZBICCollector() { } @Override public void setBFC(List bfcList) { - // 7a26bedd92cff633d641118d19b5237ac8474105 리스트가 넘겨짐. - this.bfcommitList = bfcList; + this.bfcList = bfcList; } @Override public List collectFrom(List commitList) throws IOException { - // TODO Auto-generated method stub try { git = Git.open(edu.handong.csee.isel.Main.getGitDirectory()); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } repo = git.getRepository(); - // Colleting BFCs - List bfcList = new ArrayList(); + // Pre-step for building annotation graph + // Colleting BFC (BFC is RevCommit) + List bfcCommitList = new ArrayList(); for (RevCommit commit : commitList) { @@ -57,49 +55,26 @@ public List collectFrom(List commitList) throws IOException continue; } - if(!Utils.isBFC(commit, bfcommitList)) { + if(!Utils.isBFC(commit, bfcList)) { continue; } - bfcList.add(commit); + bfcCommitList.add(commit); } + + List targetPaths = GitUtils.getTargetPaths(repo, bfcCommitList); - // Colleting BFCs - //ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); - - // Pre-step for building annotation graph - - // 파일이 고쳐진 새로운 getNewPath가 나온다. filter 가 된거. (.java 파일이고, test가 아닌것) ( - List targetPaths = GitUtils.getTargetPaths(repo, bfcList); - - // bfcList에서 계속 이어지는거임. BFCs는 jiraCrawler를 사용하여 얻은 targetPaths와 일치하는 것을 찾아냄. 이건 모든 이슈커밋리스트에서 - // Wrong(X) -> 여기 안에 configurePathRevisionList(repo, revs) 이건 filter가 안된 부분이다. RevsWithPath revsWithPath = GitUtils .collectRevsWithSpecificPath(GitUtils.configurePathRevisionList(repo, commitList), targetPaths); - // 한 path당 커밋 리스트를 부여해줌. - // Phase 1 : Build the annotation graph - final long startBuildingTime = System.currentTimeMillis(); - - // 수진님한테 물어볼것 AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); - // set debug mode = false for a while - AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath, false); - - final long endBuildingTime = System.currentTimeMillis(); - System.out.println("\nBuilding Annotation Graph takes " + (endBuildingTime - startBuildingTime) / 1000.0 + "s\n"); + AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath); // Phase 2 : Trace and collect BIC candidates and filter out format changes, comments, etc among candidates - final long startTracingTime = System.currentTimeMillis(); - // 일단은 analysis, debug option은 false 로 세팅 - Tracer tracer = new Tracer(false, false); - List BILines = tracer.collectBILines(repo, bfcList, agm, revsWithPath); - - final long endTracingTime = System.currentTimeMillis(); - System.out.println("\nCollecting BICs takes " + (endTracingTime - startTracingTime) / 1000.0 + "s\n"); - + Tracer tracer = new Tracer(); + List BILines = tracer.collectBILines(repo, bfcCommitList, agm, revsWithPath); // Sort BICs in the order FixSha1, BISha1, BIContent, biLineIdx Collections.sort(BILines); @@ -107,7 +82,6 @@ public List collectFrom(List commitList) throws IOException // GIT_URL : input. Utils.storeOutputFile(Input.outPath, Input.gitURL, BILines); - return null; } diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java deleted file mode 100644 index 8424a17..0000000 --- a/src/main/java/edu/handong/csee/isel/bic/collector/SZZBICCollector.java +++ /dev/null @@ -1,131 +0,0 @@ -package edu.handong.csee.isel.bic.collector; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.eclipse.jgit.api.BlameCommand; -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.blame.BlameResult; -import org.eclipse.jgit.diff.DiffAlgorithm; -import org.eclipse.jgit.diff.DiffEntry; -import org.eclipse.jgit.diff.DiffFormatter; -import org.eclipse.jgit.diff.Edit; -import org.eclipse.jgit.diff.EditList; -import org.eclipse.jgit.diff.RawTextComparator; -import org.eclipse.jgit.errors.RevisionSyntaxException; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.util.io.DisabledOutputStream; - -import edu.handong.csee.isel.bic.BICCollector; -import edu.handong.csee.isel.data.CSVInfo; -import edu.handong.csee.isel.data.Input; - -import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder; -import edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel; -import edu.handong.csee.isel.bic.szz.model.RevsWithPath; -import edu.handong.csee.isel.bic.szz.trace.Tracer; -import edu.handong.csee.isel.bic.szz.util.GitUtils; - -import edu.handong.csee.isel.Utils; -//import edu.handong.csee.isel.bic.szz.util.Utils; - -//import edu.handong.csee.isel.data.csv.BICInfo; -import edu.handong.csee.isel.bic.szz.data.BICInfo; - -public class SZZBICCollector implements BICCollector{ - - List bfcommitList = null; - - Git git; - Repository repo; - - public SZZBICCollector() { - } - - @Override - public void setBFC(List bfcList) { - // 7a26bedd92cff633d641118d19b5237ac8474105 리스트가 넘겨짐. - this.bfcommitList = bfcList; - } - - @Override - public List collectFrom(List commitList) throws IOException { - // TODO Auto-generated method stub - try { - git = Git.open(edu.handong.csee.isel.Main.getGitDirectory()); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - repo = git.getRepository(); - - // Colleting BFCs - List bfcList = new ArrayList(); - - for (RevCommit commit : commitList) { - - if (commit.getParentCount() < 1) { - System.err.println("WARNING: Parent commit does not exist: " + commit.name()); - continue; - } - - if(!Utils.isBFC(commit, bfcommitList)) { - continue; - } - - bfcList.add(commit); - } - - // Colleting BFCs - //ArrayList bfcList = GitUtils.getBFCLIST(bfcommitList, commitList); - - // Pre-step for building annotation graph - - // 파일이 고쳐진 새로운 getNewPath가 나온다. filter 가 된거. (.java 파일이고, test가 아닌것) ( - List targetPaths = GitUtils.getTargetPaths(repo, bfcList); - - // bfcList에서 계속 이어지는거임. BFCs는 jiraCrawler를 사용하여 얻은 targetPaths와 일치하는 것을 찾아냄. 이건 모든 이슈커밋리스트에서 - // Wrong(X) -> 여기 안에 configurePathRevisionList(repo, revs) 이건 filter가 안된 부분이다. - RevsWithPath revsWithPath = GitUtils - .collectRevsWithSpecificPath(GitUtils.configurePathRevisionList(repo, commitList), targetPaths); - // 한 path당 커밋 리스트를 부여해줌. - - - // Phase 1 : Build the annotation graph - final long startBuildingTime = System.currentTimeMillis(); - - // 수진님한테 물어볼것 - AnnotationGraphBuilder agb = new AnnotationGraphBuilder(); - // set debug mode = false for a while - AnnotationGraphModel agm = agb.buildAnnotationGraph(repo, revsWithPath, false); - - final long endBuildingTime = System.currentTimeMillis(); - System.out.println("\nBuilding Annotation Graph takes " + (endBuildingTime - startBuildingTime) / 1000.0 + "s\n"); - - // Phase 2 : Trace and collect BIC candidates and filter out format changes, comments, etc among candidates - final long startTracingTime = System.currentTimeMillis(); - - // 일단은 analysis, debug option은 false 로 세팅 - Tracer tracer = new Tracer(false, false); - List BILines = tracer.collectBILines(repo, bfcList, agm, revsWithPath); - - final long endTracingTime = System.currentTimeMillis(); - System.out.println("\nCollecting BICs takes " + (endTracingTime - startTracingTime) / 1000.0 + "s\n"); - - // Sort BICs in the order FixSha1, BISha1, BIContent, biLineIdx - Collections.sort(BILines); - - // Phase 3 : store outputs - // GIT_URL : input. - Utils.storeOutputFile(Input.outPath, Input.gitURL, BILines); - - - return null; - } - -} diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java index e5bc847..f4aae76 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java @@ -131,30 +131,6 @@ else if (biLineIdx > o.biLineIdx) } } - // order by BIDate, path, FixDate, lineNum -// if (BIDate.compareTo(o.BIDate) < 0) -// return -1; -// else if (BIDate.compareTo(o.BIDate) > 0) -// return 1; -// else { -// if (path.compareTo(o.path) < 0) -// return -1; -// else if (path.compareTo(o.path) > 0) -// return 1; -// else { -// if (FixDate.compareTo(o.FixDate) < 0) -// return -1; -// else if (FixDate.compareTo(o.FixDate) > 0) -// return 1; -// else { -// if (biLineIdx < o.biLineIdx) -// return -1; -// else if (biLineIdx > o.biLineIdx) -// return 1; -// } -// } -// } - return 0; } } diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java index c250bf7..ffebcbe 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java @@ -13,7 +13,7 @@ public class AnnotationGraphBuilder { - public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath revsWithPath, boolean debug) { + public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath revsWithPath) { // Phase 1 : split Map (i.e. RevsWithPath) int mapSize = revsWithPath.size(); // ?? int arrSize = 10; @@ -44,7 +44,7 @@ public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath r ExecutorService executor = Executors.newFixedThreadPool(numOfCoresInMyCPU); for (int i = 0; i < arrSize; i++) { - Runnable worker = new AnnotationGraphBuilderThread(repo, revsWithPathArr[i], debug); + Runnable worker = new AnnotationGraphBuilderThread(repo, revsWithPathArr[i]); // AnnotationGraphBuilderThread 안에서 run을 실행해준다. executor.execute(worker); AGRunners.add((AnnotationGraphBuilderThread) worker); diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java index 38cdc3e..247e703 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java @@ -24,20 +24,18 @@ public class AnnotationGraphBuilderThread implements Runnable { private Repository repo; private RevsWithPath revsWithPath; - private boolean debug; public AnnotationGraphModel partitionedAnnotationGraph; - public AnnotationGraphBuilderThread(Repository repo, RevsWithPath revsWithPath, boolean debug) { + public AnnotationGraphBuilderThread(Repository repo, RevsWithPath revsWithPath) { super(); this.repo = repo; this.revsWithPath = revsWithPath; - this.debug = debug; } @Override public void run() { try { - partitionedAnnotationGraph = buildPartitionedAnnotationGraph(repo, revsWithPath, debug); + partitionedAnnotationGraph = buildPartitionedAnnotationGraph(repo, revsWithPath); } catch (IOException | EmptyHunkTypeException e) { e.printStackTrace(); @@ -47,7 +45,7 @@ public void run() { } } - private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, RevsWithPath revsWithPath, boolean debug) + private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, RevsWithPath revsWithPath) throws IOException, EmptyHunkTypeException { // Generate Annotation Graph AnnotationGraphModel partitionedAnnotationGraph = new AnnotationGraphModel(); @@ -86,8 +84,8 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re ArrayList childLineList = new ArrayList<>(); // Logging - System.out.println("\n" + Thread.currentThread().getName() + " In progress (" + pathCnt + " / " + numOfPaths + ")"); - System.out.println("\tBuilding Annotation Graph of " + path); +// System.out.println("\n" + Thread.currentThread().getName() + " In progress (" + pathCnt + " / " + numOfPaths + ")"); +// System.out.println("\tBuilding Annotation Graph of " + path); for (RevCommit childRev : revs) { // Escape from the loop when there is no parent rev anymore @@ -99,12 +97,6 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re String parentContent = Utils.removeComments(GitUtils.fetchBlob(repo, parentRev, path)).trim(); String childContent = Utils.removeComments(GitUtils.fetchBlob(repo, childRev, path)).trim(); - if (debug) { - System.out.println("path : " + path); - System.out.println("\tparent rev : " + parentRev.getName()); - System.out.println("\tchild rev : " + childRev.getName()); - } - // get the parent line list from content configureLineList(parentLineList, path, parentRev, parentContent); @@ -113,17 +105,6 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re if (revs.indexOf(childRev) == 0) configureLineList(childLineList, path, childRev, childContent); - if (debug) { - System.out.println("\nParent"); - for (int i = 0; i < parentLineList.size(); i++) { - System.out.println(i + "th idx : " + parentLineList.get(i).getContent()); - } - System.out.println("\nChild"); - for (int i = 0; i < childLineList.size(); i++) { - System.out.println(i + "th idx : " + childLineList.get(i).getContent()); - } - } - ArrayList hunkList = configureHunkList(GitUtils.getEditListFromDiff(parentContent, childContent)); // map child line with its ancestor(s) @@ -135,18 +116,8 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re boolean isIgnorable = false; childLine = childLineList.get(childIdx); - if (debug) { - System.out.println("\nHunk Rate : " + (hunkIdx + 1) + " / " + hunkList.size()); - System.out.println("Child Index Rate : " + childIdx + " / " + (childLineList.size() - 1)); - System.out.println("Offset : " + offset); - } - // Case 1 - when there is no hunk anymore if (hunkList.size() <= hunkIdx) { - if (debug) { - System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); - System.out.println("No Hunk anymore\n"); - } childLine.setLineType(LineType.CONTEXT); mapChildLineWithAncestor(childIdx, offset, parentLineList, childLine); @@ -160,21 +131,9 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re endOfChild = hunk.getEndOfChild(); hunkType = hunk.getHunkType(); - if (debug) { - System.out.println("Hunk Type : " + hunk.getHunkType()); - System.out.println("bA : " + hunk.getBeginOfParent()); - System.out.println("eA : " + hunk.getEndOfParent()); - System.out.println("bB : " + hunk.getBeginOfChild()); - System.out.println("eB : " + hunk.getEndOfChild()); - } // Case 2 - child index is out of hunk range if (childIdx < beginOfChild) { - if (debug) { - System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); - System.out.println("Out of Hunk range\n"); - - } childLine.setLineType(LineType.CONTEXT); mapChildLineWithAncestor(childIdx, offset, parentLineList, childLine); @@ -183,10 +142,6 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re else { switch (hunkType) { case "INSERT": - if (debug) { - System.out.println("INSERT\n"); - } - // When childIdx is the last index in hunk, increment hunk index if (childIdx == endOfChild - 1) hunkIdx++; @@ -199,10 +154,6 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re break; case "REPLACE": - if (debug) { - System.out.println("REPLACE\n"); - } - // When childIdx is the last index in hunk, update offset and increment hunk index if (childIdx == endOfChild - 1) { offset += (hunk.getRangeOfParent() - hunk.getRangeOfChild()); @@ -246,11 +197,6 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re hunkIdx++; - if (debug) { - System.out.println("Connected parent index : " + (childIdx + offset) + " / " + (parentLineList.size() - 1)); - System.out.println("DELETE\n"); - } - break; default: diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java index b9c7f62..bfc4769 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java @@ -20,16 +20,12 @@ import edu.handong.csee.isel.bic.szz.data.BICInfo; public class Tracer { - private boolean analysis; - private boolean debug; private static final int REFACTOIRNG_THRESHOLD = 10; private HashSet BILines = new HashSet<>(); private List bicList = new ArrayList<>(); private static ArrayList formatChangedLineList = new ArrayList(); - public Tracer(boolean analysis, boolean debug) { - this.analysis = analysis; - this.debug = debug; + public Tracer() { } public List collectBILines(Repository repo, List BFCList, AnnotationGraphModel annotationGraph, @@ -48,11 +44,6 @@ public List collectBILines(Repository repo, List BFCList, An break; } - if (debug) { - System.out.println("\nParent Revision : " + parentRev.getName()); - System.out.println("Child Revision (BFC) : " + BFC.getName()); - } - List diffs = GitUtils.diff(repo, parentRev.getTree(), BFC.getTree()); /* @@ -70,19 +61,6 @@ public List collectBILines(Repository repo, List BFCList, An if (!path.endsWith(".java") || path.contains("test")) continue; - if (debug) { - System.out.println("\nParent Revision : " + parentRev.getName()); - System.out.println("Child Revision (BFC) : " + BFC.getName()); - - System.out.println("\nChanged Path : " + path); - System.out.println("Graph contains " + path + "? " + annotationGraph.containsKey(path)); - - HashMap> subAG = annotationGraph.get(path); - if (subAG != null) { - System.out.println("Sub Graph contains " + BFC.getName() + "? " + subAG.containsKey(BFC)); - } - } - // get subAnnotationGraph // path 는 key 값이다. HashMap> subAnnotationGraph = annotationGraph.get(path); // @@ -106,15 +84,6 @@ public List collectBILines(Repository repo, List BFCList, An for (Edit edit : editList) { int begin = -1; int end = -1; - - if (debug) { - System.out.println("\nHunk Info"); - System.out.println("\tType : " + edit.getType()); - System.out.println("\tbA : " + edit.getBeginA()); - System.out.println("\teA : " + edit.getEndA()); - System.out.println("\tbB : " + edit.getBeginB()); - System.out.println("\teB : " + edit.getEndB()); - } // edit.getType() 를 사용하게 되면 자동으로 해당 커밋은 어떤 타입의 커밋이었는지, delete인지, replace인지 등을 나타내다ㅣ. switch (edit.getType()) { @@ -154,33 +123,12 @@ public List collectBILines(Repository repo, List BFCList, An break; } - if (debug) { - System.out.println("\nTraced Line Info : " + begin); - System.out.println("Begin : " + begin); - System.out.println("End : " + end); - - System.out.println("\nSize of lines to trace : " + linesToTrace.size()); - - for (Line line : linesToTrace) { - int lindIdx = line.getIdx(); - - if (lindIdx >= begin && lindIdx < end) { - System.out.println("\nLine Idx : " + line.getIdx()); - System.out.println("Content : " + line.getContent()); - } - } - } - // Phase 2 : trace if (0 <= begin && 0 <= end) { for (int i = begin; i < end; i++) { Line line = linesToTrace.get(i); // analysiz는 cli 모드이다. - if (analysis) { - traceWithAnalysis(line, BFC.getName()); - } else { - trace(line); - } + trace(line); } } } @@ -204,13 +152,7 @@ public void trace(Line line) { // The fact that there are no ancestors means that the type of this line is INSERT // However, due to the limit of building AG algorithm, the type of line can be CONTEXT if the line is initially inserted in commit history. if (line.getAncestors().size() == 0) { - if (!Utils.isWhitespace(line.getContent())) { - if (debug) { - System.out.println(String.format( - "Add line into BIC (Commit : %s, Line Idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n", - line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk())); - } - + if (!Utils.isWhitespace(line.getContent())) { BILines.add(line); } } @@ -219,21 +161,8 @@ public void trace(Line line) { // Lines that are not white space, not format change, and within hunk are BI Lines. if (!Utils.isWhitespace(ancestor.getContent())) { if (ancestor.isFormatChange() || !ancestor.isWithinHunk()) { - // 둘다 false false 로 나옴 - if (debug) { - System.out.println(String.format( - "From commit : %s, Lind idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n=> To commit : %s, Lind idx : %s, content : %s, type : %s, cometic? : %s, in hunk? : %s", - line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk(), ancestor.getRev(), ancestor.getIdx(), ancestor.getContent(), ancestor.getLineType(), ancestor.isFormatChange(),ancestor.isWithinHunk())); - } - trace(ancestor); - } else { - if (debug) { - System.out.println(String.format( - "From commit : %s, Lind idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n=>Add line into BIC (Commit : %s, Line Idx : %s, content : %s, type : %s, cosmetic? : %s, in hunk? : %s\n", - line.getRev(), line.getIdx(), line.getContent(), line.getLineType(), line.isFormatChange(), line.isWithinHunk(), ancestor.getRev(), ancestor.getIdx(), ancestor.getContent(), ancestor.getLineType(), ancestor.isFormatChange(),ancestor.isWithinHunk())); - } - + } else { BILines.add(ancestor); } } @@ -250,7 +179,6 @@ public void traceWithAnalysis(Line line, String BFC) { formatChangedLineList.add(line); } - traceWithAnalysis(ancestor, BFC); } else if (!ancestor.isWithinHunk()) { diff --git a/src/main/java/edu/handong/csee/isel/data/Input.java b/src/main/java/edu/handong/csee/isel/data/Input.java index 741d00f..3c569f5 100644 --- a/src/main/java/edu/handong/csee/isel/data/Input.java +++ b/src/main/java/edu/handong/csee/isel/data/Input.java @@ -23,7 +23,9 @@ public class Input { public static TaskType taskType; // -t 옵션(메인 전체 큰 옵션) - public static Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) + public static Mode mode;// BIC 랑 Path일 경우 (ij, ig, ik 옵션 정하기 위해) + + public static SZZMode szzMode; public static String issueKeyWord; //이슈키 추가한 부분 //고쳐야 한다 @@ -45,6 +47,10 @@ public static enum TaskType { public static enum Mode { GITHUB, JIRA, KEYWORD } + + public static enum SZZMode { + BSZZ, AGSZZ + } } diff --git a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java index c760d29..b3fa5b9 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java @@ -37,7 +37,7 @@ public void setPath() { break; case BIC: - outPath += File.separator + "BIC_"; + outPath += File.separator + "BIC_BSZZ_"; break; case METRIC: diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java index 59715e6..37260d2 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/BICCommand.java @@ -7,7 +7,8 @@ import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.data.Input.Mode; - import edu.handong.csee.isel.data.Input.TaskType; +import edu.handong.csee.isel.data.Input.SZZMode; +import edu.handong.csee.isel.data.Input.TaskType; import picocli.CommandLine.ArgGroup; import picocli.CommandLine.Option; @@ -58,6 +59,9 @@ static class DependentGithub { private String keyWord; } + @Option(names = "-s", description = "--szz mode (default: 'BSZZ')") + private String szzMode = "BSZZ"; + @ArgGroup(exclusive = false) DependentMaxMin dependentMaxMin = new DependentMaxMin(); @@ -90,7 +94,13 @@ public void run() { Input.issueKeyWord = exclusive.keyWord; Input.mode = Mode.KEYWORD; } - + + if(szzMode.equals("BSZZ")) { + Input.szzMode = SZZMode.BSZZ; + }else { + Input.szzMode = SZZMode.AGSZZ; + } + if (dependentMaxMin.max > dependentMaxMin.min) { Input.maxSize = dependentMaxMin.max; Input.minSize = dependentMaxMin.min; diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java index c55d1d4..afdb392 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java @@ -16,15 +16,8 @@ usageHelpAutoWidth = true, sortOptions = false, exitCodeOnInvalidInput = 64, - exitCodeOnExecutionException = 70, - exitCodeListHeading = "Exit Codes:%n", - exitCodeList = { - " 0:Successful program execution", - "64:Usage error: user input for the command was incorrect, " + - "e.g., the wrong number of arguments, a bad flag, " + - "a bad syntax in a parameter, etc.", - "70:Internal software error: an exception occurred when invoking " + - "the business logic of this command."} + exitCodeOnExecutionException = 70 + ) public class Task implements Runnable { From e8b340043dba4337f19f69cdf01741b9d2ae7b87 Mon Sep 17 00:00:00 2001 From: kongsubin Date: Wed, 25 Nov 2020 01:21:40 +0900 Subject: [PATCH 17/18] #28 add find repository url list --- build.gradle | 10 + build/scripts/BugPatchCollector | 2 +- build/scripts/BugPatchCollector.bat | 2 +- doc/allclasses-index.html | 431 + doc/allpackages-index.html | 221 + doc/constant-values.html | 101 + doc/deprecated-list.html | 99 + doc/edu/handong/csee/isel/JavaASTParser.html | 530 + doc/edu/handong/csee/isel/Main.html | 354 + doc/edu/handong/csee/isel/Utils.html | 556 + .../handong/csee/isel/bfc/BFCCollector.html | 316 + .../csee/isel/bfc/class-use/BFCCollector.html | 189 + .../bfc/collector/BFCGitHubCollector.html | 289 + .../isel/bfc/collector/BFCJiraCollector.html | 304 + .../bfc/collector/BFCKeywordCollector.html | 302 + .../class-use/BFCGitHubCollector.html | 99 + .../collector/class-use/BFCJiraCollector.html | 99 + .../class-use/BFCKeywordCollector.html | 99 + .../bfc/collector/github/CommitParser.html | 328 + .../bfc/collector/github/IssueLinkParser.html | 326 + .../github/NoIssuePagesException.html | 269 + .../github/class-use/CommitParser.html | 99 + .../github/class-use/IssueLinkParser.html | 99 + .../class-use/NoIssuePagesException.html | 148 + .../bfc/collector/github/package-summary.html | 150 + .../bfc/collector/github/package-tree.html | 124 + .../bfc/collector/github/package-use.html | 144 + .../isel/bfc/collector/jira/FileManager.html | 273 + .../jira/InvalidDomainException.html | 270 + .../jira/InvalidProjectKeyException.html | 270 + .../isel/bfc/collector/jira/JQLManager.html | 277 + .../collector/jira/JiraBugIssueCrawler.html | 281 + .../csee/isel/bfc/collector/jira/Period.html | 316 + .../isel/bfc/collector/jira/URLManager.html | 248 + .../collector/jira/class-use/FileManager.html | 99 + .../class-use/InvalidDomainException.html | 219 + .../class-use/InvalidProjectKeyException.html | 214 + .../collector/jira/class-use/JQLManager.html | 99 + .../jira/class-use/JiraBugIssueCrawler.html | 99 + .../bfc/collector/jira/class-use/Period.html | 99 + .../collector/jira/class-use/URLManager.html | 99 + .../bfc/collector/jira/package-summary.html | 162 + .../isel/bfc/collector/jira/package-tree.html | 128 + .../isel/bfc/collector/jira/package-use.html | 210 + .../isel/bfc/collector/package-summary.html | 131 + .../csee/isel/bfc/collector/package-tree.html | 120 + .../csee/isel/bfc/collector/package-use.html | 99 + .../csee/isel/bfc/package-summary.html | 123 + .../handong/csee/isel/bfc/package-tree.html | 114 + .../handong/csee/isel/bfc/package-use.html | 171 + .../handong/csee/isel/bic/BICCollector.html | 218 + .../csee/isel/bic/class-use/BICCollector.html | 186 + .../isel/bic/collector/AGSZZBICCollector.html | 300 + .../isel/bic/collector/CBICCollector.html | 272 + .../class-use/AGSZZBICCollector.html | 99 + .../collector/class-use/CBICCollector.html | 99 + .../isel/bic/collector/package-summary.html | 131 + .../csee/isel/bic/collector/package-tree.html | 115 + .../csee/isel/bic/collector/package-use.html | 99 + .../csee/isel/bic/package-summary.html | 123 + .../handong/csee/isel/bic/package-tree.html | 110 + .../handong/csee/isel/bic/package-use.html | 171 + .../csee/isel/bic/szz/data/BICInfo.html | 436 + .../isel/bic/szz/data/class-use/BICInfo.html | 251 + .../isel/bic/szz/data/package-summary.html | 126 + .../csee/isel/bic/szz/data/package-tree.html | 114 + .../csee/isel/bic/szz/data/package-use.html | 237 + .../szz/exception/EmptyHunkTypeException.html | 270 + .../class-use/EmptyHunkTypeException.html | 99 + .../bic/szz/exception/package-summary.html | 123 + .../isel/bic/szz/exception/package-tree.html | 122 + .../isel/bic/szz/exception/package-use.html | 99 + .../bic/szz/graph/AnnotationGraphBuilder.html | 269 + .../graph/AnnotationGraphBuilderThread.html | 312 + .../bic/szz/graph/AnnotationGraphModel.html | 253 + .../class-use/AnnotationGraphBuilder.html | 99 + .../AnnotationGraphBuilderThread.html | 99 + .../graph/class-use/AnnotationGraphModel.html | 206 + .../isel/bic/szz/graph/package-summary.html | 137 + .../csee/isel/bic/szz/graph/package-tree.html | 124 + .../csee/isel/bic/szz/graph/package-use.html | 175 + .../handong/csee/isel/bic/szz/model/Hunk.html | 322 + .../handong/csee/isel/bic/szz/model/Line.html | 499 + .../csee/isel/bic/szz/model/LineType.html | 352 + .../csee/isel/bic/szz/model/PathRevision.html | 293 + .../csee/isel/bic/szz/model/RevsWithPath.html | 250 + .../isel/bic/szz/model/class-use/Hunk.html | 99 + .../isel/bic/szz/model/class-use/Line.html | 254 + .../bic/szz/model/class-use/LineType.html | 208 + .../bic/szz/model/class-use/PathRevision.html | 172 + .../bic/szz/model/class-use/RevsWithPath.html | 238 + .../isel/bic/szz/model/package-summary.html | 154 + .../csee/isel/bic/szz/model/package-tree.html | 139 + .../csee/isel/bic/szz/model/package-use.html | 264 + .../csee/isel/bic/szz/trace/Tracer.html | 278 + .../isel/bic/szz/trace/class-use/Tracer.html | 99 + .../isel/bic/szz/trace/package-summary.html | 125 + .../csee/isel/bic/szz/trace/package-tree.html | 114 + .../csee/isel/bic/szz/trace/package-use.html | 99 + .../csee/isel/bic/szz/util/GitUtils.html | 521 + .../csee/isel/bic/szz/util/JavaASTParser.html | 487 + .../handong/csee/isel/bic/szz/util/Utils.html | 299 + .../isel/bic/szz/util/class-use/GitUtils.html | 99 + .../bic/szz/util/class-use/JavaASTParser.html | 99 + .../isel/bic/szz/util/class-use/Utils.html | 99 + .../isel/bic/szz/util/package-summary.html | 134 + .../csee/isel/bic/szz/util/package-tree.html | 116 + .../csee/isel/bic/szz/util/package-use.html | 99 + .../csee/isel/class-use/JavaASTParser.html | 99 + doc/edu/handong/csee/isel/class-use/Main.html | 99 + .../handong/csee/isel/class-use/Utils.html | 99 + doc/edu/handong/csee/isel/data/CSVInfo.html | 202 + .../handong/csee/isel/data/Input.Mode.html | 331 + .../handong/csee/isel/data/Input.SZZMode.html | 321 + .../csee/isel/data/Input.TaskType.html | 341 + doc/edu/handong/csee/isel/data/Input.html | 472 + .../csee/isel/data/class-use/CSVInfo.html | 382 + .../csee/isel/data/class-use/Input.Mode.html | 176 + .../isel/data/class-use/Input.SZZMode.html | 176 + .../isel/data/class-use/Input.TaskType.html | 176 + .../csee/isel/data/class-use/Input.html | 177 + .../handong/csee/isel/data/csv/BICInfo.html | 678 + .../csee/isel/data/csv/MetricInfo.html | 257 + .../handong/csee/isel/data/csv/PatchInfo.html | 355 + .../csee/isel/data/csv/class-use/BICInfo.html | 152 + .../isel/data/csv/class-use/MetricInfo.html | 99 + .../isel/data/csv/class-use/PatchInfo.html | 147 + .../csee/isel/data/csv/package-summary.html | 131 + .../csee/isel/data/csv/package-tree.html | 116 + .../csee/isel/data/csv/package-use.html | 171 + .../csee/isel/data/package-summary.html | 169 + .../handong/csee/isel/data/package-tree.html | 136 + .../handong/csee/isel/data/package-use.html | 422 + .../csee/isel/data/processor/CSVMaker.html | 345 + .../data/processor/class-use/CSVMaker.html | 99 + .../data/processor/input/InputConverter.html | 202 + .../input/class-use/InputConverter.html | 147 + .../processor/input/command/BICCommand.html | 257 + .../input/command/DeveloperMetricCommand.html | 257 + .../input/command/MetricCommand.html | 257 + .../processor/input/command/PatchCommand.html | 257 + .../data/processor/input/command/Task.html | 257 + .../input/command/class-use/BICCommand.html | 99 + .../class-use/DeveloperMetricCommand.html | 99 + .../command/class-use/MetricCommand.html | 99 + .../input/command/class-use/PatchCommand.html | 99 + .../input/command/class-use/Task.html | 99 + .../input/command/package-summary.html | 139 + .../processor/input/command/package-tree.html | 118 + .../processor/input/command/package-use.html | 99 + .../input/converter/CLIConverter.html | 268 + .../converter/class-use/CLIConverter.html | 99 + .../input/converter/package-summary.html | 123 + .../input/converter/package-tree.html | 114 + .../input/converter/package-use.html | 99 + .../data/processor/input/package-summary.html | 123 + .../data/processor/input/package-tree.html | 110 + .../data/processor/input/package-use.html | 144 + .../isel/data/processor/package-summary.html | 123 + .../isel/data/processor/package-tree.html | 114 + .../csee/isel/data/processor/package-use.html | 99 + .../csee/isel/metric/MetricCollector.html | 224 + .../metric/class-use/MetricCollector.html | 147 + .../isel/metric/collector/ArffHelper.html | 396 + .../metric/collector/BagOfWordsCollector.html | 391 + .../metric/collector/CMetricCollector.html | 335 + .../CharacteristicVectorCollector.html | 380 + .../metric/collector/DeveloperHistory.html | 281 + .../metric/collector/MetaDataCollector.html | 205 + .../csee/isel/metric/collector/Test.html | 264 + .../collector/class-use/ArffHelper.html | 99 + .../class-use/BagOfWordsCollector.html | 148 + .../collector/class-use/CMetricCollector.html | 99 + .../CharacteristicVectorCollector.html | 148 + .../collector/class-use/DeveloperHistory.html | 99 + .../class-use/MetaDataCollector.html | 99 + .../isel/metric/collector/class-use/Test.html | 99 + .../metric/collector/package-summary.html | 147 + .../isel/metric/collector/package-tree.html | 120 + .../isel/metric/collector/package-use.html | 148 + .../isel/metric/metadata/CommitCollector.html | 358 + .../isel/metric/metadata/CommitUnitInfo.html | 369 + .../metadata/DeveloperExperienceInfo.html | 303 + .../isel/metric/metadata/MetaDataInfo.html | 699 + .../isel/metric/metadata/MetricParser.html | 329 + .../isel/metric/metadata/SourceFileInfo.html | 369 + .../csee/isel/metric/metadata/Utils.html | 371 + .../metadata/class-use/CommitCollector.html | 99 + .../metadata/class-use/CommitUnitInfo.html | 162 + .../class-use/DeveloperExperienceInfo.html | 156 + .../metadata/class-use/MetaDataInfo.html | 188 + .../metadata/class-use/MetricParser.html | 99 + .../metadata/class-use/SourceFileInfo.html | 174 + .../isel/metric/metadata/class-use/Utils.html | 99 + .../isel/metric/metadata/package-summary.html | 147 + .../isel/metric/metadata/package-tree.html | 120 + .../isel/metric/metadata/package-use.html | 156 + .../csee/isel/metric/package-summary.html | 123 + .../csee/isel/metric/package-tree.html | 110 + .../handong/csee/isel/metric/package-use.html | 144 + .../handong/csee/isel/package-summary.html | 131 + doc/edu/handong/csee/isel/package-tree.html | 116 + doc/edu/handong/csee/isel/package-use.html | 99 + .../csee/isel/patch/PatchCollector.html | 213 + .../isel/patch/class-use/PatchCollector.html | 147 + .../isel/patch/collector/CPatchCollector.html | 307 + .../collector/class-use/CPatchCollector.html | 99 + .../isel/patch/collector/package-summary.html | 123 + .../isel/patch/collector/package-tree.html | 114 + .../isel/patch/collector/package-use.html | 99 + .../csee/isel/patch/package-summary.html | 123 + .../handong/csee/isel/patch/package-tree.html | 110 + .../handong/csee/isel/patch/package-use.html | 144 + doc/edu/handong/csee/isel/szz/SZZRunner.html | 338 + .../csee/isel/szz/class-use/SZZRunner.html | 99 + .../handong/csee/isel/szz/data/Change.html | 254 + .../isel/szz/data/DeletedLineInCommits.html | 291 + .../csee/isel/szz/data/class-use/Change.html | 99 + .../data/class-use/DeletedLineInCommits.html | 99 + .../csee/isel/szz/data/package-summary.html | 127 + .../csee/isel/szz/data/package-tree.html | 115 + .../csee/isel/szz/data/package-use.html | 99 + .../csee/isel/szz/package-summary.html | 123 + .../handong/csee/isel/szz/package-tree.html | 114 + .../handong/csee/isel/szz/package-use.html | 99 + .../csee/isel/szz/utils/JavaASTParser.html | 487 + .../handong/csee/isel/szz/utils/Utils.html | 352 + .../szz/utils/class-use/JavaASTParser.html | 99 + .../csee/isel/szz/utils/class-use/Utils.html | 99 + .../csee/isel/szz/utils/package-summary.html | 127 + .../csee/isel/szz/utils/package-tree.html | 115 + .../csee/isel/szz/utils/package-use.html | 99 + doc/element-list | 27 + doc/help-doc.html | 231 + doc/index-files/index-1.html | 139 + doc/index-files/index-10.html | 133 + doc/index-files/index-11.html | 107 + doc/index-files/index-12.html | 113 + doc/index-files/index-13.html | 163 + doc/index-files/index-14.html | 109 + doc/index-files/index-15.html | 107 + doc/index-files/index-16.html | 183 + doc/index-files/index-17.html | 133 + doc/index-files/index-18.html | 347 + doc/index-files/index-19.html | 127 + doc/index-files/index-2.html | 159 + doc/index-files/index-20.html | 125 + doc/index-files/index-21.html | 141 + doc/index-files/index-3.html | 223 + doc/index-files/index-4.html | 149 + doc/index-files/index-5.html | 177 + doc/index-files/index-6.html | 123 + doc/index-files/index-7.html | 531 + doc/index-files/index-8.html | 111 + doc/index-files/index-9.html | 173 + doc/index.html | 218 + doc/member-search-index.js | 1 + doc/overview-summary.html | 26 + doc/overview-tree.html | 248 + doc/package-search-index.js | 1 + doc/resources/glass.png | Bin 0 -> 499 bytes doc/resources/x.png | Bin 0 -> 394 bytes doc/script-dir/external/jquery/jquery.js | 10598 ++++++++++++++ .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes doc/script-dir/jquery-3.4.1.js | 10598 ++++++++++++++ doc/script-dir/jquery-ui.css | 582 + doc/script-dir/jquery-ui.js | 2659 ++++ doc/script-dir/jquery-ui.min.css | 7 + doc/script-dir/jquery-ui.min.js | 6 + doc/script-dir/jquery-ui.structure.css | 156 + doc/script-dir/jquery-ui.structure.min.css | 5 + .../jszip-utils/dist/jszip-utils-ie.js | 56 + .../jszip-utils/dist/jszip-utils-ie.min.js | 10 + .../jszip-utils/dist/jszip-utils.js | 118 + .../jszip-utils/dist/jszip-utils.min.js | 10 + doc/script-dir/jszip/dist/jszip.js | 11367 ++++++++++++++++ doc/script-dir/jszip/dist/jszip.min.js | 13 + doc/script.js | 159 + doc/search.js | 358 + doc/serialized-form.html | 192 + doc/stylesheet.css | 798 ++ doc/system-properties.html | 107 + doc/type-search-index.js | 1 + .../BugPatchCollector/lib/all-1.1.2.pom | 0 src/main/java/edu/handong/csee/isel/Main.java | 79 +- .../java/edu/handong/csee/isel/Utils.java | 11 +- .../handong/csee/isel/bfc/BFCCollectable.java | 13 + .../handong/csee/isel/bfc/BFCCollector.java | 36 - .../bfc/collector/BFCGitHubCollector.java | 18 +- .../isel/bfc/collector/BFCJiraCollector.java | 27 +- .../bfc/collector/BFCKeywordCollector.java | 5 +- .../bfc/collector/github/IssueLinkParser.java | 2 +- .../isel/bic/collector/AGSZZBICCollector.java | 31 +- .../csee/isel/bic/szz/data/BICInfo.java | 75 +- .../bic/szz/graph/AnnotationGraphBuilder.java | 22 +- .../graph/AnnotationGraphBuilderThread.java | 30 +- .../bic/szz/graph/AnnotationGraphModel.java | 7 + .../csee/isel/bic/szz/trace/Tracer.java | 50 +- .../csee/isel/bic/szz/util/GitUtils.java | 85 +- .../handong/csee/isel/bic/szz/util/Utils.java | 4 +- .../edu/handong/csee/isel/data/Input.java | 22 +- .../data/{processor => csv}/CSVMaker.java | 5 +- .../input/command/FindRepoCommand.java | 94 + .../processor/input/command/PatchCommand.java | 2 +- .../data/processor/input/command/Task.java | 1 + .../isel/metric/collector/ArffHelper.java | 132 +- .../metric/collector/BagOfWordsCollector.java | 75 +- .../metric/collector/CMetricCollector.java | 33 +- .../CharacteristicVectorCollector.java | 100 +- .../metric/collector/DeveloperHistory.java | 29 +- .../csee/isel/metric/collector/Test.java | 1 - .../isel/metric/metadata/CommitCollector.java | 14 +- .../isel/metric/metadata/CommitUnitInfo.java | 12 +- .../metadata/DeveloperExperienceInfo.java | 6 +- .../isel/metric/metadata/MetaDataInfo.java | 42 +- .../isel/metric/metadata/SourceFileInfo.java | 12 +- .../csee/isel/repo/RepoCollectable.java | 11 + .../isel/repo/collector/RepoCollector.java | 196 + .../repo/collector/RepoCommitCollector.java | 143 + .../csee/isel/repo/control/GithubService.java | 24 + .../csee/isel/repo/control/RetroBasic.java | 55 + .../edu/handong/csee/isel/szz/SZZRunner.java | 3 +- 332 files changed, 88248 insertions(+), 274 deletions(-) create mode 100644 doc/allclasses-index.html create mode 100644 doc/allpackages-index.html create mode 100644 doc/constant-values.html create mode 100644 doc/deprecated-list.html create mode 100644 doc/edu/handong/csee/isel/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/Main.html create mode 100644 doc/edu/handong/csee/isel/Utils.html create mode 100644 doc/edu/handong/csee/isel/bfc/BFCCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/class-use/BFCCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/class-use/BFCGitHubCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/class-use/BFCJiraCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/class-use/BFCKeywordCollector.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/CommitParser.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/NoIssuePagesException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/class-use/CommitParser.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/class-use/IssueLinkParser.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/class-use/NoIssuePagesException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/github/package-use.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/FileManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/InvalidDomainException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/InvalidProjectKeyException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/JQLManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/Period.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/URLManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/FileManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidDomainException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidProjectKeyException.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JQLManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JiraBugIssueCrawler.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/Period.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/class-use/URLManager.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/jira/package-use.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bfc/collector/package-use.html create mode 100644 doc/edu/handong/csee/isel/bfc/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bfc/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bfc/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/BICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/class-use/BICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/CBICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/class-use/AGSZZBICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/class-use/CBICCollector.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/collector/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/data/BICInfo.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/data/class-use/BICInfo.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/data/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/data/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/data/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/exception/class-use/EmptyHunkTypeException.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/exception/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/exception/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/exception/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilder.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilderThread.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphModel.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/graph/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/Hunk.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/Line.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/LineType.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/PathRevision.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/RevsWithPath.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/class-use/Hunk.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/class-use/Line.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/class-use/LineType.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/class-use/PathRevision.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/class-use/RevsWithPath.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/model/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/trace/Tracer.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/trace/class-use/Tracer.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/trace/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/trace/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/trace/package-use.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/GitUtils.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/Utils.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/class-use/GitUtils.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/class-use/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/class-use/Utils.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/package-summary.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/package-tree.html create mode 100644 doc/edu/handong/csee/isel/bic/szz/util/package-use.html create mode 100644 doc/edu/handong/csee/isel/class-use/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/class-use/Main.html create mode 100644 doc/edu/handong/csee/isel/class-use/Utils.html create mode 100644 doc/edu/handong/csee/isel/data/CSVInfo.html create mode 100644 doc/edu/handong/csee/isel/data/Input.Mode.html create mode 100644 doc/edu/handong/csee/isel/data/Input.SZZMode.html create mode 100644 doc/edu/handong/csee/isel/data/Input.TaskType.html create mode 100644 doc/edu/handong/csee/isel/data/Input.html create mode 100644 doc/edu/handong/csee/isel/data/class-use/CSVInfo.html create mode 100644 doc/edu/handong/csee/isel/data/class-use/Input.Mode.html create mode 100644 doc/edu/handong/csee/isel/data/class-use/Input.SZZMode.html create mode 100644 doc/edu/handong/csee/isel/data/class-use/Input.TaskType.html create mode 100644 doc/edu/handong/csee/isel/data/class-use/Input.html create mode 100644 doc/edu/handong/csee/isel/data/csv/BICInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/MetricInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/PatchInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/class-use/BICInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/class-use/MetricInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/class-use/PatchInfo.html create mode 100644 doc/edu/handong/csee/isel/data/csv/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/csv/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/csv/package-use.html create mode 100644 doc/edu/handong/csee/isel/data/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/package-use.html create mode 100644 doc/edu/handong/csee/isel/data/processor/CSVMaker.html create mode 100644 doc/edu/handong/csee/isel/data/processor/class-use/CSVMaker.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/InputConverter.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/class-use/InputConverter.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/BICCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/MetricCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/PatchCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/Task.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/class-use/BICCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/class-use/DeveloperMetricCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/class-use/MetricCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/class-use/PatchCommand.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/class-use/Task.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/command/package-use.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/converter/class-use/CLIConverter.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/converter/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/converter/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/converter/package-use.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/processor/input/package-use.html create mode 100644 doc/edu/handong/csee/isel/data/processor/package-summary.html create mode 100644 doc/edu/handong/csee/isel/data/processor/package-tree.html create mode 100644 doc/edu/handong/csee/isel/data/processor/package-use.html create mode 100644 doc/edu/handong/csee/isel/metric/MetricCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/class-use/MetricCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/ArffHelper.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/CMetricCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/DeveloperHistory.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/MetaDataCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/Test.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/ArffHelper.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/BagOfWordsCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/CMetricCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/CharacteristicVectorCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/DeveloperHistory.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/MetaDataCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/class-use/Test.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/package-summary.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/package-tree.html create mode 100644 doc/edu/handong/csee/isel/metric/collector/package-use.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/CommitCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/MetaDataInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/MetricParser.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/SourceFileInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/Utils.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/CommitCollector.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/CommitUnitInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/DeveloperExperienceInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/MetaDataInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/MetricParser.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/SourceFileInfo.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/class-use/Utils.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/package-summary.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/package-tree.html create mode 100644 doc/edu/handong/csee/isel/metric/metadata/package-use.html create mode 100644 doc/edu/handong/csee/isel/metric/package-summary.html create mode 100644 doc/edu/handong/csee/isel/metric/package-tree.html create mode 100644 doc/edu/handong/csee/isel/metric/package-use.html create mode 100644 doc/edu/handong/csee/isel/package-summary.html create mode 100644 doc/edu/handong/csee/isel/package-tree.html create mode 100644 doc/edu/handong/csee/isel/package-use.html create mode 100644 doc/edu/handong/csee/isel/patch/PatchCollector.html create mode 100644 doc/edu/handong/csee/isel/patch/class-use/PatchCollector.html create mode 100644 doc/edu/handong/csee/isel/patch/collector/CPatchCollector.html create mode 100644 doc/edu/handong/csee/isel/patch/collector/class-use/CPatchCollector.html create mode 100644 doc/edu/handong/csee/isel/patch/collector/package-summary.html create mode 100644 doc/edu/handong/csee/isel/patch/collector/package-tree.html create mode 100644 doc/edu/handong/csee/isel/patch/collector/package-use.html create mode 100644 doc/edu/handong/csee/isel/patch/package-summary.html create mode 100644 doc/edu/handong/csee/isel/patch/package-tree.html create mode 100644 doc/edu/handong/csee/isel/patch/package-use.html create mode 100644 doc/edu/handong/csee/isel/szz/SZZRunner.html create mode 100644 doc/edu/handong/csee/isel/szz/class-use/SZZRunner.html create mode 100644 doc/edu/handong/csee/isel/szz/data/Change.html create mode 100644 doc/edu/handong/csee/isel/szz/data/DeletedLineInCommits.html create mode 100644 doc/edu/handong/csee/isel/szz/data/class-use/Change.html create mode 100644 doc/edu/handong/csee/isel/szz/data/class-use/DeletedLineInCommits.html create mode 100644 doc/edu/handong/csee/isel/szz/data/package-summary.html create mode 100644 doc/edu/handong/csee/isel/szz/data/package-tree.html create mode 100644 doc/edu/handong/csee/isel/szz/data/package-use.html create mode 100644 doc/edu/handong/csee/isel/szz/package-summary.html create mode 100644 doc/edu/handong/csee/isel/szz/package-tree.html create mode 100644 doc/edu/handong/csee/isel/szz/package-use.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/Utils.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/class-use/JavaASTParser.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/class-use/Utils.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/package-summary.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/package-tree.html create mode 100644 doc/edu/handong/csee/isel/szz/utils/package-use.html create mode 100644 doc/element-list create mode 100644 doc/help-doc.html create mode 100644 doc/index-files/index-1.html create mode 100644 doc/index-files/index-10.html create mode 100644 doc/index-files/index-11.html create mode 100644 doc/index-files/index-12.html create mode 100644 doc/index-files/index-13.html create mode 100644 doc/index-files/index-14.html create mode 100644 doc/index-files/index-15.html create mode 100644 doc/index-files/index-16.html create mode 100644 doc/index-files/index-17.html create mode 100644 doc/index-files/index-18.html create mode 100644 doc/index-files/index-19.html create mode 100644 doc/index-files/index-2.html create mode 100644 doc/index-files/index-20.html create mode 100644 doc/index-files/index-21.html create mode 100644 doc/index-files/index-3.html create mode 100644 doc/index-files/index-4.html create mode 100644 doc/index-files/index-5.html create mode 100644 doc/index-files/index-6.html create mode 100644 doc/index-files/index-7.html create mode 100644 doc/index-files/index-8.html create mode 100644 doc/index-files/index-9.html create mode 100644 doc/index.html create mode 100644 doc/member-search-index.js create mode 100644 doc/overview-summary.html create mode 100644 doc/overview-tree.html create mode 100644 doc/package-search-index.js create mode 100644 doc/resources/glass.png create mode 100644 doc/resources/x.png create mode 100644 doc/script-dir/external/jquery/jquery.js create mode 100644 doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png create mode 100644 doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 doc/script-dir/images/ui-icons_222222_256x240.png create mode 100644 doc/script-dir/images/ui-icons_2e83ff_256x240.png create mode 100644 doc/script-dir/images/ui-icons_454545_256x240.png create mode 100644 doc/script-dir/images/ui-icons_888888_256x240.png create mode 100644 doc/script-dir/images/ui-icons_cd0a0a_256x240.png create mode 100644 doc/script-dir/jquery-3.4.1.js create mode 100644 doc/script-dir/jquery-ui.css create mode 100644 doc/script-dir/jquery-ui.js create mode 100644 doc/script-dir/jquery-ui.min.css create mode 100644 doc/script-dir/jquery-ui.min.js create mode 100644 doc/script-dir/jquery-ui.structure.css create mode 100644 doc/script-dir/jquery-ui.structure.min.css create mode 100644 doc/script-dir/jszip-utils/dist/jszip-utils-ie.js create mode 100644 doc/script-dir/jszip-utils/dist/jszip-utils-ie.min.js create mode 100644 doc/script-dir/jszip-utils/dist/jszip-utils.js create mode 100644 doc/script-dir/jszip-utils/dist/jszip-utils.min.js create mode 100644 doc/script-dir/jszip/dist/jszip.js create mode 100644 doc/script-dir/jszip/dist/jszip.min.js create mode 100644 doc/script.js create mode 100644 doc/search.js create mode 100644 doc/serialized-form.html create mode 100644 doc/stylesheet.css create mode 100644 doc/system-properties.html create mode 100644 doc/type-search-index.js rename {build/distributions => run}/BugPatchCollector/lib/all-1.1.2.pom (100%) create mode 100644 src/main/java/edu/handong/csee/isel/bfc/BFCCollectable.java delete mode 100644 src/main/java/edu/handong/csee/isel/bfc/BFCCollector.java rename src/main/java/edu/handong/csee/isel/data/{processor => csv}/CSVMaker.java (93%) create mode 100644 src/main/java/edu/handong/csee/isel/data/processor/input/command/FindRepoCommand.java create mode 100644 src/main/java/edu/handong/csee/isel/repo/RepoCollectable.java create mode 100644 src/main/java/edu/handong/csee/isel/repo/collector/RepoCollector.java create mode 100644 src/main/java/edu/handong/csee/isel/repo/collector/RepoCommitCollector.java create mode 100644 src/main/java/edu/handong/csee/isel/repo/control/GithubService.java create mode 100644 src/main/java/edu/handong/csee/isel/repo/control/RetroBasic.java diff --git a/build.gradle b/build.gradle index 8584159..6c390cc 100644 --- a/build.gradle +++ b/build.gradle @@ -79,6 +79,16 @@ dependencies { compile 'info.picocli:picocli:4.5.0' compileOnly 'info.picocli:picocli-codegen:4.5.0' + + // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp + compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.8.0' + + // https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit + compile group: 'com.squareup.retrofit2', name: 'retrofit', version: '2.9.0' + + // https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-gson + compile group: 'com.squareup.retrofit2', name: 'converter-gson', version: '2.9.0' + } \ No newline at end of file diff --git a/build/scripts/BugPatchCollector b/build/scripts/BugPatchCollector index 1f1c9f6..04dfe95 100755 --- a/build/scripts/BugPatchCollector +++ b/build/scripts/BugPatchCollector @@ -80,7 +80,7 @@ case "`uname`" in ;; esac -CLASSPATH=$APP_HOME/lib/BugPatchCollector.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/gen.jdt-2.1.0.jar:$APP_HOME/lib/client-2.1.0.jar:$APP_HOME/lib/commons-csv-1.5.jar:$APP_HOME/lib/jsoup-1.11.3.jar:$APP_HOME/lib/super-csv-2.4.0.jar:$APP_HOME/lib/org.eclipse.jgit-5.6.0.201912101111-r.jar:$APP_HOME/lib/slf4j-api-1.7.25.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/commons-io-2.5.jar:$APP_HOME/lib/weka-dev-3.9.3.jar:$APP_HOME/lib/org.eclipse.jdt.core-3.16.0.jar:$APP_HOME/lib/commons-lang3-3.9.jar:$APP_HOME/lib/commons-collections4-4.4.jar:$APP_HOME/lib/reflections-0.9.11.jar:$APP_HOME/lib/core-2.1.0.jar:$APP_HOME/lib/simmetrics-core-3.2.3.jar:$APP_HOME/lib/guava-26.0-jre.jar:$APP_HOME/lib/jsch-0.1.55.jar:$APP_HOME/lib/jzlib-1.1.1.jar:$APP_HOME/lib/JavaEWAH-1.1.6.jar:$APP_HOME/lib/bcpg-jdk15on-1.64.jar:$APP_HOME/lib/bcpkix-jdk15on-1.64.jar:$APP_HOME/lib/bcprov-jdk15on-1.64.jar:$APP_HOME/lib/java-cup-11b-2015.03.26.jar:$APP_HOME/lib/java-cup-11b-runtime-2015.03.26.jar:$APP_HOME/lib/bounce-0.18.jar:$APP_HOME/lib/mtj-1.0.4.jar:$APP_HOME/lib/all-1.1.2.pom:$APP_HOME/lib/netlib-java-1.1.jar:$APP_HOME/lib/netlib-native_ref-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-armhf-1.1-natives.jar:$APP_HOME/lib/native_ref-java-1.1.jar:$APP_HOME/lib/netlib-native_system-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-armhf-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-i686-1.1-natives.jar:$APP_HOME/lib/native_system-java-1.1.jar:$APP_HOME/lib/core-1.1.2.jar:$APP_HOME/lib/arpack_combined_all-0.1.jar:$APP_HOME/lib/org.eclipse.core.resources-3.13.700.jar:$APP_HOME/lib/org.eclipse.text-3.10.200.jar:$APP_HOME/lib/org.eclipse.core.expressions-3.6.800.jar:$APP_HOME/lib/org.eclipse.core.runtime-3.18.0.jar:$APP_HOME/lib/org.eclipse.core.filesystem-1.7.700.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.1.3.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/gson-2.8.2.jar:$APP_HOME/lib/jgrapht-core-1.0.1.jar:$APP_HOME/lib/javassist-3.21.0-GA.jar:$APP_HOME/lib/org.eclipse.osgi-3.15.300.jar:$APP_HOME/lib/org.eclipse.core.jobs-3.10.800.jar:$APP_HOME/lib/org.eclipse.core.contenttype-3.7.700.jar:$APP_HOME/lib/org.eclipse.equinox.app-1.4.500.jar:$APP_HOME/lib/org.eclipse.equinox.registry-3.8.800.jar:$APP_HOME/lib/org.eclipse.equinox.preferences-3.8.0.jar:$APP_HOME/lib/org.eclipse.core.commands-3.9.700.jar:$APP_HOME/lib/org.eclipse.equinox.common-3.12.0.jar:$APP_HOME/lib/commons-codec-1.10.jar:$APP_HOME/lib/jniloader-1.1.jar +CLASSPATH=$APP_HOME/lib/BugPatchCollector.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/gen.jdt-2.1.0.jar:$APP_HOME/lib/client-2.1.0.jar:$APP_HOME/lib/commons-csv-1.5.jar:$APP_HOME/lib/jsoup-1.11.3.jar:$APP_HOME/lib/super-csv-2.4.0.jar:$APP_HOME/lib/org.eclipse.jgit-5.6.0.201912101111-r.jar:$APP_HOME/lib/slf4j-api-1.7.25.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/commons-io-2.5.jar:$APP_HOME/lib/weka-dev-3.9.3.jar:$APP_HOME/lib/org.eclipse.jdt.core-3.16.0.jar:$APP_HOME/lib/commons-lang3-3.9.jar:$APP_HOME/lib/commons-collections4-4.4.jar:$APP_HOME/lib/picocli-4.5.0.jar:$APP_HOME/lib/converter-gson-2.9.0.jar:$APP_HOME/lib/retrofit-2.9.0.jar:$APP_HOME/lib/okhttp-4.8.0.jar:$APP_HOME/lib/reflections-0.9.11.jar:$APP_HOME/lib/core-2.1.0.jar:$APP_HOME/lib/simmetrics-core-3.2.3.jar:$APP_HOME/lib/guava-26.0-jre.jar:$APP_HOME/lib/jsch-0.1.55.jar:$APP_HOME/lib/jzlib-1.1.1.jar:$APP_HOME/lib/JavaEWAH-1.1.6.jar:$APP_HOME/lib/bcpg-jdk15on-1.64.jar:$APP_HOME/lib/bcpkix-jdk15on-1.64.jar:$APP_HOME/lib/bcprov-jdk15on-1.64.jar:$APP_HOME/lib/java-cup-11b-2015.03.26.jar:$APP_HOME/lib/java-cup-11b-runtime-2015.03.26.jar:$APP_HOME/lib/bounce-0.18.jar:$APP_HOME/lib/mtj-1.0.4.jar:$APP_HOME/lib/all-1.1.2.pom:$APP_HOME/lib/netlib-java-1.1.jar:$APP_HOME/lib/netlib-native_ref-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-armhf-1.1-natives.jar:$APP_HOME/lib/native_ref-java-1.1.jar:$APP_HOME/lib/netlib-native_system-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-armhf-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-i686-1.1-natives.jar:$APP_HOME/lib/native_system-java-1.1.jar:$APP_HOME/lib/core-1.1.2.jar:$APP_HOME/lib/arpack_combined_all-0.1.jar:$APP_HOME/lib/org.eclipse.core.resources-3.13.800.jar:$APP_HOME/lib/org.eclipse.text-3.10.300.jar:$APP_HOME/lib/org.eclipse.core.expressions-3.7.0.jar:$APP_HOME/lib/org.eclipse.core.runtime-3.19.0.jar:$APP_HOME/lib/org.eclipse.core.filesystem-1.7.700.jar:$APP_HOME/lib/okio-jvm-2.7.0.jar:$APP_HOME/lib/kotlin-stdlib-1.3.72.jar:$APP_HOME/lib/gson-2.8.5.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.1.3.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/jgrapht-core-1.0.1.jar:$APP_HOME/lib/javassist-3.21.0-GA.jar:$APP_HOME/lib/org.eclipse.osgi-3.16.0.jar:$APP_HOME/lib/org.eclipse.core.jobs-3.10.800.jar:$APP_HOME/lib/org.eclipse.core.contenttype-3.7.800.jar:$APP_HOME/lib/org.eclipse.equinox.app-1.5.0.jar:$APP_HOME/lib/org.eclipse.equinox.registry-3.9.0.jar:$APP_HOME/lib/org.eclipse.equinox.preferences-3.8.0.jar:$APP_HOME/lib/org.eclipse.core.commands-3.9.700.jar:$APP_HOME/lib/org.eclipse.equinox.common-3.13.0.jar:$APP_HOME/lib/kotlin-stdlib-common-1.3.72.jar:$APP_HOME/lib/annotations-13.0.jar:$APP_HOME/lib/commons-codec-1.10.jar:$APP_HOME/lib/jniloader-1.1.jar # Determine the Java command to use to start the JVM. diff --git a/build/scripts/BugPatchCollector.bat b/build/scripts/BugPatchCollector.bat index b3795f8..203a582 100644 --- a/build/scripts/BugPatchCollector.bat +++ b/build/scripts/BugPatchCollector.bat @@ -82,7 +82,7 @@ set CMD_LINE_ARGS=%* :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\lib\BugPatchCollector.jar;%APP_HOME%\lib\commons-math3-3.6.1.jar;%APP_HOME%\lib\gen.jdt-2.1.0.jar;%APP_HOME%\lib\client-2.1.0.jar;%APP_HOME%\lib\commons-csv-1.5.jar;%APP_HOME%\lib\jsoup-1.11.3.jar;%APP_HOME%\lib\super-csv-2.4.0.jar;%APP_HOME%\lib\org.eclipse.jgit-5.6.0.201912101111-r.jar;%APP_HOME%\lib\slf4j-api-1.7.25.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\commons-io-2.5.jar;%APP_HOME%\lib\weka-dev-3.9.3.jar;%APP_HOME%\lib\org.eclipse.jdt.core-3.16.0.jar;%APP_HOME%\lib\commons-lang3-3.9.jar;%APP_HOME%\lib\commons-collections4-4.4.jar;%APP_HOME%\lib\reflections-0.9.11.jar;%APP_HOME%\lib\core-2.1.0.jar;%APP_HOME%\lib\simmetrics-core-3.2.3.jar;%APP_HOME%\lib\guava-26.0-jre.jar;%APP_HOME%\lib\jsch-0.1.55.jar;%APP_HOME%\lib\jzlib-1.1.1.jar;%APP_HOME%\lib\JavaEWAH-1.1.6.jar;%APP_HOME%\lib\bcpg-jdk15on-1.64.jar;%APP_HOME%\lib\bcpkix-jdk15on-1.64.jar;%APP_HOME%\lib\bcprov-jdk15on-1.64.jar;%APP_HOME%\lib\java-cup-11b-2015.03.26.jar;%APP_HOME%\lib\java-cup-11b-runtime-2015.03.26.jar;%APP_HOME%\lib\bounce-0.18.jar;%APP_HOME%\lib\mtj-1.0.4.jar;%APP_HOME%\lib\all-1.1.2.pom;%APP_HOME%\lib\netlib-java-1.1.jar;%APP_HOME%\lib\netlib-native_ref-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\native_ref-java-1.1.jar;%APP_HOME%\lib\netlib-native_system-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-i686-1.1-natives.jar;%APP_HOME%\lib\native_system-java-1.1.jar;%APP_HOME%\lib\core-1.1.2.jar;%APP_HOME%\lib\arpack_combined_all-0.1.jar;%APP_HOME%\lib\org.eclipse.core.resources-3.13.700.jar;%APP_HOME%\lib\org.eclipse.text-3.10.200.jar;%APP_HOME%\lib\org.eclipse.core.expressions-3.6.800.jar;%APP_HOME%\lib\org.eclipse.core.runtime-3.18.0.jar;%APP_HOME%\lib\org.eclipse.core.filesystem-1.7.700.jar;%APP_HOME%\lib\jsr305-3.0.2.jar;%APP_HOME%\lib\checker-qual-2.5.2.jar;%APP_HOME%\lib\error_prone_annotations-2.1.3.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\trove4j-3.0.3.jar;%APP_HOME%\lib\gson-2.8.2.jar;%APP_HOME%\lib\jgrapht-core-1.0.1.jar;%APP_HOME%\lib\javassist-3.21.0-GA.jar;%APP_HOME%\lib\org.eclipse.osgi-3.15.300.jar;%APP_HOME%\lib\org.eclipse.core.jobs-3.10.800.jar;%APP_HOME%\lib\org.eclipse.core.contenttype-3.7.700.jar;%APP_HOME%\lib\org.eclipse.equinox.app-1.4.500.jar;%APP_HOME%\lib\org.eclipse.equinox.registry-3.8.800.jar;%APP_HOME%\lib\org.eclipse.equinox.preferences-3.8.0.jar;%APP_HOME%\lib\org.eclipse.core.commands-3.9.700.jar;%APP_HOME%\lib\org.eclipse.equinox.common-3.12.0.jar;%APP_HOME%\lib\commons-codec-1.10.jar;%APP_HOME%\lib\jniloader-1.1.jar +set CLASSPATH=%APP_HOME%\lib\BugPatchCollector.jar;%APP_HOME%\lib\commons-math3-3.6.1.jar;%APP_HOME%\lib\gen.jdt-2.1.0.jar;%APP_HOME%\lib\client-2.1.0.jar;%APP_HOME%\lib\commons-csv-1.5.jar;%APP_HOME%\lib\jsoup-1.11.3.jar;%APP_HOME%\lib\super-csv-2.4.0.jar;%APP_HOME%\lib\org.eclipse.jgit-5.6.0.201912101111-r.jar;%APP_HOME%\lib\slf4j-api-1.7.25.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\commons-io-2.5.jar;%APP_HOME%\lib\weka-dev-3.9.3.jar;%APP_HOME%\lib\org.eclipse.jdt.core-3.16.0.jar;%APP_HOME%\lib\commons-lang3-3.9.jar;%APP_HOME%\lib\commons-collections4-4.4.jar;%APP_HOME%\lib\picocli-4.5.0.jar;%APP_HOME%\lib\converter-gson-2.9.0.jar;%APP_HOME%\lib\retrofit-2.9.0.jar;%APP_HOME%\lib\okhttp-4.8.0.jar;%APP_HOME%\lib\reflections-0.9.11.jar;%APP_HOME%\lib\core-2.1.0.jar;%APP_HOME%\lib\simmetrics-core-3.2.3.jar;%APP_HOME%\lib\guava-26.0-jre.jar;%APP_HOME%\lib\jsch-0.1.55.jar;%APP_HOME%\lib\jzlib-1.1.1.jar;%APP_HOME%\lib\JavaEWAH-1.1.6.jar;%APP_HOME%\lib\bcpg-jdk15on-1.64.jar;%APP_HOME%\lib\bcpkix-jdk15on-1.64.jar;%APP_HOME%\lib\bcprov-jdk15on-1.64.jar;%APP_HOME%\lib\java-cup-11b-2015.03.26.jar;%APP_HOME%\lib\java-cup-11b-runtime-2015.03.26.jar;%APP_HOME%\lib\bounce-0.18.jar;%APP_HOME%\lib\mtj-1.0.4.jar;%APP_HOME%\lib\all-1.1.2.pom;%APP_HOME%\lib\netlib-java-1.1.jar;%APP_HOME%\lib\netlib-native_ref-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\native_ref-java-1.1.jar;%APP_HOME%\lib\netlib-native_system-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-i686-1.1-natives.jar;%APP_HOME%\lib\native_system-java-1.1.jar;%APP_HOME%\lib\core-1.1.2.jar;%APP_HOME%\lib\arpack_combined_all-0.1.jar;%APP_HOME%\lib\org.eclipse.core.resources-3.13.800.jar;%APP_HOME%\lib\org.eclipse.text-3.10.300.jar;%APP_HOME%\lib\org.eclipse.core.expressions-3.7.0.jar;%APP_HOME%\lib\org.eclipse.core.runtime-3.19.0.jar;%APP_HOME%\lib\org.eclipse.core.filesystem-1.7.700.jar;%APP_HOME%\lib\okio-jvm-2.7.0.jar;%APP_HOME%\lib\kotlin-stdlib-1.3.72.jar;%APP_HOME%\lib\gson-2.8.5.jar;%APP_HOME%\lib\jsr305-3.0.2.jar;%APP_HOME%\lib\checker-qual-2.5.2.jar;%APP_HOME%\lib\error_prone_annotations-2.1.3.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\trove4j-3.0.3.jar;%APP_HOME%\lib\jgrapht-core-1.0.1.jar;%APP_HOME%\lib\javassist-3.21.0-GA.jar;%APP_HOME%\lib\org.eclipse.osgi-3.16.0.jar;%APP_HOME%\lib\org.eclipse.core.jobs-3.10.800.jar;%APP_HOME%\lib\org.eclipse.core.contenttype-3.7.800.jar;%APP_HOME%\lib\org.eclipse.equinox.app-1.5.0.jar;%APP_HOME%\lib\org.eclipse.equinox.registry-3.9.0.jar;%APP_HOME%\lib\org.eclipse.equinox.preferences-3.8.0.jar;%APP_HOME%\lib\org.eclipse.core.commands-3.9.700.jar;%APP_HOME%\lib\org.eclipse.equinox.common-3.13.0.jar;%APP_HOME%\lib\kotlin-stdlib-common-1.3.72.jar;%APP_HOME%\lib\annotations-13.0.jar;%APP_HOME%\lib\commons-codec-1.10.jar;%APP_HOME%\lib\jniloader-1.1.jar @rem Execute BugPatchCollector diff --git a/doc/allclasses-index.html b/doc/allclasses-index.html new file mode 100644 index 0000000..994dbb1 --- /dev/null +++ b/doc/allclasses-index.html @@ -0,0 +1,431 @@ + + + + + +All Classes + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+

All Classes

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
AGSZZBICCollector +
The AGSZZBICCollector class do collect BIC(bug introducing commit)
+ using the annotation graph.
+ It implements BICColletor which is interface about collecting BIC
+
AnnotationGraphBuilder +
The AnnotationGraphBuilder class is for making Annotation Graph
+
AnnotationGraphBuilderThread +
Create AnnotationGraphBuilder Thread
+
AnnotationGraphModel +
The AnnotationGraphModel class is for HashMap that stores data
+
ArffHelper 
BagOfWordsCollector 
BFCCollector 
BFCGitHubCollector 
BFCJiraCollector 
BFCKeywordCollector 
BICCollector 
BICCommand 
BICInfo +
The BICInfo class
+ the bic information
+
BICInfo 
CBICCollector 
Change 
CharacteristicVectorCollector 
CLIConverter 
CMetricCollector 
CommitCollector 
CommitParser +
Parsing commit addresses and print bug commit contents to .csv file.
+
CommitUnitInfo 
CPatchCollector 
CSVInfo 
CSVMaker 
DeletedLineInCommits 
DeveloperExperienceInfo 
DeveloperHistory 
DeveloperMetricCommand 
EmptyHunkTypeException 
FileManager 
GitUtils +
The GitUtils class
+ collects of functions necessary to execute AG_SZZ
+
Hunk 
Input 
Input.Mode 
Input.SZZMode 
Input.TaskType 
InputConverter 
InvalidDomainException 
InvalidProjectKeyException 
IssueLinkParser +
Parse the issue addresses class.
+
JavaASTParser 
JavaASTParser 
JavaASTParser 
JiraBugIssueCrawler 
JQLManager 
Line 
LineType 
Main 
MetaDataCollector 
MetaDataInfo 
MetricCollector 
MetricCommand 
MetricInfo 
MetricParser 
NoIssuePagesException 
PatchCollector 
PatchCommand 
PatchInfo 
PathRevision 
Period 
RevsWithPath 
SourceFileInfo 
SZZRunner 
Task 
Test 
Tracer +
The Tracer class is commit tracer
+
URLManager 
Utils 
Utils 
Utils 
Utils 
+
+
+
+
+ +
+
+ + diff --git a/doc/allpackages-index.html b/doc/allpackages-index.html new file mode 100644 index 0000000..e181cad --- /dev/null +++ b/doc/allpackages-index.html @@ -0,0 +1,221 @@ + + + + + +All Packages + + + + + + + + + + + + + + + + +
+ + +
+ + diff --git a/doc/constant-values.html b/doc/constant-values.html new file mode 100644 index 0000000..ca0a0ce --- /dev/null +++ b/doc/constant-values.html @@ -0,0 +1,101 @@ + + + + + +Constant Field Values + + + + + + + + + + + + + + + + +
+ +
+
+
+

Constant Field Values

+
+

Contents

+
+
+
+ +
+
+ + diff --git a/doc/deprecated-list.html b/doc/deprecated-list.html new file mode 100644 index 0000000..7e2391b --- /dev/null +++ b/doc/deprecated-list.html @@ -0,0 +1,99 @@ + + + + + +Deprecated List + + + + + + + + + + + + + + + + +
+ +
+
+
+

Deprecated API

+

Contents

+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/JavaASTParser.html b/doc/edu/handong/csee/isel/JavaASTParser.html new file mode 100644 index 0000000..063c4d9 --- /dev/null +++ b/doc/edu/handong/csee/isel/JavaASTParser.html @@ -0,0 +1,530 @@ + + + + + +JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class JavaASTParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.JavaASTParser
+
+
+
+
public class JavaASTParser
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    org.eclipse.jdt.core.dom.CompilationUnitcUnit 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    JavaASTParser​(java.lang.String source) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation>getClassInstanceCreations() 
    org.eclipse.jdt.core.dom.CompilationUnitgetCompilationUnit() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression>getConditionalExpressions() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess>getFieldAccesses() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration>getFieldDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement>getForStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement>getIfStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration>getImportDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression>getInfixExpressions() 
    intgetLineNum​(int startPosition) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration>getMethodDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation>getMethodInvocations() 
    org.eclipse.jdt.core.dom.PackageDeclarationgetPackageDeclaration() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName>getSimpleNames() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration>getSingleVariableDeclarations() 
    java.lang.StringgetStringCode() 
    java.lang.StringgetType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration>getTypeDeclarations() 
    java.lang.StringgetTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment>getVariableDeclarationFragments() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement>getWhileStatements() 
    voidpraseJavaFile​(java.lang.String source) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      cUnit

      +
      public org.eclipse.jdt.core.dom.CompilationUnit cUnit
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      JavaASTParser

      +
      public JavaASTParser​(java.lang.String source)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getLineNum

      +
      public int getLineNum​(int startPosition)
      +
      +
    • +
    • +
      +

      getStringCode

      +
      public java.lang.String getStringCode()
      +
      +
    • +
    • +
      +

      getCompilationUnit

      +
      public org.eclipse.jdt.core.dom.CompilationUnit getCompilationUnit()
      +
      +
    • +
    • +
      +

      praseJavaFile

      +
      public void praseJavaFile​(java.lang.String source)
      +
      +
    • +
    • +
      +

      getMethodDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration> getMethodDeclarations()
      +
      +
    • +
    • +
      +

      getMethodInvocations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation> getMethodInvocations()
      +
      +
    • +
    • +
      +

      getTypeDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration> getTypeDeclarations()
      +
      +
    • +
    • +
      +

      getFieldDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration> getFieldDeclarations()
      +
      +
    • +
    • +
      +

      getFieldAccesses

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess> getFieldAccesses()
      +
      +
    • +
    • +
      +

      getIfStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement> getIfStatements()
      +
      +
    • +
    • +
      +

      getForStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement> getForStatements()
      +
      +
    • +
    • +
      +

      getWhileStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement> getWhileStatements()
      +
      +
    • +
    • +
      +

      getInfixExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression> getInfixExpressions()
      +
      +
    • +
    • +
      +

      getSimpleNames

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName> getSimpleNames()
      +
      +
    • +
    • +
      +

      getVariableDeclarationFragments

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment> getVariableDeclarationFragments()
      +
      +
    • +
    • +
      +

      getClassInstanceCreations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation> getClassInstanceCreations()
      +
      +
    • +
    • +
      +

      getSingleVariableDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration> getSingleVariableDeclarations()
      +
      +
    • +
    • +
      +

      getImportDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration> getImportDeclarations()
      +
      +
    • +
    • +
      +

      getConditionalExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression> getConditionalExpressions()
      +
      +
    • +
    • +
      +

      getPackageDeclaration

      +
      public org.eclipse.jdt.core.dom.PackageDeclaration getPackageDeclaration()
      +
      +
    • +
    • +
      +

      getType

      +
      public java.lang.String getType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId)
      +
      +
    • +
    • +
      +

      getTypeOfSimpleName

      +
      public java.lang.String getTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/Main.html b/doc/edu/handong/csee/isel/Main.html new file mode 100644 index 0000000..b6cd394 --- /dev/null +++ b/doc/edu/handong/csee/isel/Main.html @@ -0,0 +1,354 @@ + + + + + +Main + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Main

+
+
+
java.lang.Object +
edu.handong.csee.isel.Main
+
+
+
+
public class Main
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Main() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.util.List<org.eclipse.jgit.revwalk.RevCommit>getCommitListFrom​(java.io.File gitDir) 
    static java.io.FilegetGitDirectory() 
    static java.lang.StringgetReferencePath() 
    static voidmain​(java.lang.String[] args) 
    static java.util.List<java.lang.String>makeBFCCollector​(java.util.List<java.lang.String> bfcList, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList, +BFCCollector bfcCollector) 
    static voidprintCSV​(java.util.List<CSVInfo> csvInfoLst) 
    static java.util.List<java.lang.String>readBICcsv() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Main

      +
      public Main()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main​(java.lang.String[] args) + throws org.eclipse.jgit.api.errors.NoHeadException, +java.io.IOException, +org.eclipse.jgit.api.errors.GitAPIException, +InvalidProjectKeyException, +InvalidDomainException
      +
      +
      Throws:
      +
      org.eclipse.jgit.api.errors.NoHeadException
      +
      java.io.IOException
      +
      org.eclipse.jgit.api.errors.GitAPIException
      +
      InvalidProjectKeyException
      +
      InvalidDomainException
      +
      +
      +
    • +
    • +
      +

      readBICcsv

      +
      public static java.util.List<java.lang.String> readBICcsv()
      +
      +
    • +
    • +
      +

      printCSV

      +
      public static void printCSV​(java.util.List<CSVInfo> csvInfoLst) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      makeBFCCollector

      +
      public static java.util.List<java.lang.String> makeBFCCollector​(java.util.List<java.lang.String> bfcList, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList, +BFCCollector bfcCollector) + throws java.io.IOException, +InvalidProjectKeyException, +InvalidDomainException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      InvalidProjectKeyException
      +
      InvalidDomainException
      +
      +
      +
    • +
    • +
      +

      getCommitListFrom

      +
      public static java.util.List<org.eclipse.jgit.revwalk.RevCommit> getCommitListFrom​(java.io.File gitDir) + throws java.io.IOException, +org.eclipse.jgit.api.errors.NoHeadException, +org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      org.eclipse.jgit.api.errors.NoHeadException
      +
      org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      +
    • +
    • +
      +

      getReferencePath

      +
      public static java.lang.String getReferencePath()
      +
      +
    • +
    • +
      +

      getGitDirectory

      +
      public static java.io.File getGitDirectory()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/Utils.html b/doc/edu/handong/csee/isel/Utils.html new file mode 100644 index 0000000..7757e51 --- /dev/null +++ b/doc/edu/handong/csee/isel/Utils.html @@ -0,0 +1,556 @@ + + + + + +Utils + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Utils

+
+
+
java.lang.Object +
edu.handong.csee.isel.Utils
+
+
+
+
public class Utils
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static org.eclipse.jgit.diff.DiffAlgorithmdiffAlgorithm 
    static org.eclipse.jgit.diff.RawTextComparatordiffComparator 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Utils() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.util.List<org.eclipse.jgit.diff.DiffEntry>diff​(org.eclipse.jgit.revwalk.RevCommit parent, +org.eclipse.jgit.revwalk.RevCommit commit, +org.eclipse.jgit.lib.Repository repo) 
    static java.lang.StringfetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) 
    static org.eclipse.jgit.diff.EditListgetEditListFromDiff​(java.lang.String file1, +java.lang.String file2) 
    static org.eclipse.jgit.diff.EditListgetEditListFromDiff​(org.eclipse.jgit.api.Git git, +java.lang.String oldSha1, +java.lang.String newSha1, +java.lang.String path) 
    static java.lang.StringgetKeyName​(java.lang.String commitName, +java.lang.String newPath) 
    static java.lang.StringgetProjectName​(java.lang.String URI) 
    static java.lang.StringgetStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static java.lang.StringgetStringDateTimeFromCommitTime​(int commitTime) 
    static org.eclipse.jgit.api.GitgitClone​(java.lang.String REMOTE_URI) 
    static booleanisBFC​(org.eclipse.jgit.revwalk.RevCommit commit, +java.util.List<java.lang.String> bfcList) 
    static booleanisExceededcondition​(java.lang.String patch, +int conditionMax, +int conditionMin) 
    static java.lang.StringparseAuthorID​(java.lang.String authorId) 
    static java.util.HashSet<java.lang.String>parseGithubIssues​(java.lang.String URL, +java.lang.String label) 
    static intparseNumOfDiffLine​(java.lang.String inStr) 
    static java.util.HashSet<java.lang.String>parseReference​(java.lang.String reference) 
    static org.eclipse.jgit.treewalk.AbstractTreeIteratorprepareTreeParser​(org.eclipse.jgit.lib.Repository repository, +java.lang.String objectId) 
    static java.lang.StringremoveComments​(java.lang.String code) 
    static voidstoreOutputFile​(java.lang.String outPath, +java.lang.String GIT_URL, +java.util.List<BICInfo> BICLines) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      diffAlgorithm

      +
      public static org.eclipse.jgit.diff.DiffAlgorithm diffAlgorithm
      +
      +
    • +
    • +
      +

      diffComparator

      +
      public static org.eclipse.jgit.diff.RawTextComparator diffComparator
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Utils

      +
      public Utils()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getEditListFromDiff

      +
      public static org.eclipse.jgit.diff.EditList getEditListFromDiff​(org.eclipse.jgit.api.Git git, +java.lang.String oldSha1, +java.lang.String newSha1, +java.lang.String path)
      +
      +
    • +
    • +
      +

      removeComments

      +
      public static java.lang.String removeComments​(java.lang.String code)
      +
      +
    • +
    • +
      +

      getEditListFromDiff

      +
      public static org.eclipse.jgit.diff.EditList getEditListFromDiff​(java.lang.String file1, +java.lang.String file2)
      +
      +
    • +
    • +
      +

      fetchBlob

      +
      public static java.lang.String fetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path)
      +
      +
    • +
    • +
      +

      gitClone

      +
      public static org.eclipse.jgit.api.Git gitClone​(java.lang.String REMOTE_URI) + throws org.eclipse.jgit.api.errors.InvalidRemoteException, +org.eclipse.jgit.api.errors.TransportException, +org.eclipse.jgit.api.errors.GitAPIException, +java.io.IOException
      +
      +
      Throws:
      +
      org.eclipse.jgit.api.errors.InvalidRemoteException
      +
      org.eclipse.jgit.api.errors.TransportException
      +
      org.eclipse.jgit.api.errors.GitAPIException
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      prepareTreeParser

      +
      public static org.eclipse.jgit.treewalk.AbstractTreeIterator prepareTreeParser​(org.eclipse.jgit.lib.Repository repository, +java.lang.String objectId) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      isExceededcondition

      +
      public static boolean isExceededcondition​(java.lang.String patch, +int conditionMax, +int conditionMin)
      +
      +
    • +
    • +
      +

      parseNumOfDiffLine

      +
      public static int parseNumOfDiffLine​(java.lang.String inStr)
      +
      +
    • +
    • +
      +

      parseReference

      +
      public static java.util.HashSet<java.lang.String> parseReference​(java.lang.String reference) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      parseGithubIssues

      +
      public static java.util.HashSet<java.lang.String> parseGithubIssues​(java.lang.String URL, +java.lang.String label) + throws NoIssuePagesException
      +
      +
      Throws:
      +
      NoIssuePagesException
      +
      +
      +
    • +
    • +
      +

      getProjectName

      +
      public static java.lang.String getProjectName​(java.lang.String URI)
      +
      +
    • +
    • +
      +

      getStringDateTimeFromCommit

      +
      public static java.lang.String getStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    • +
      +

      diff

      +
      public static java.util.List<org.eclipse.jgit.diff.DiffEntry> diff​(org.eclipse.jgit.revwalk.RevCommit parent, +org.eclipse.jgit.revwalk.RevCommit commit, +org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    • +
      +

      getKeyName

      +
      public static java.lang.String getKeyName​(java.lang.String commitName, +java.lang.String newPath)
      +
      +
    • +
    • +
      +

      isBFC

      +
      public static boolean isBFC​(org.eclipse.jgit.revwalk.RevCommit commit, +java.util.List<java.lang.String> bfcList)
      +
      +
    • +
    • +
      +

      getStringDateTimeFromCommitTime

      +
      public static java.lang.String getStringDateTimeFromCommitTime​(int commitTime)
      +
      +
    • +
    • +
      +

      parseAuthorID

      +
      public static java.lang.String parseAuthorID​(java.lang.String authorId)
      +
      +
    • +
    • +
      +

      storeOutputFile

      +
      public static void storeOutputFile​(java.lang.String outPath, +java.lang.String GIT_URL, +java.util.List<BICInfo> BICLines) + throws java.io.IOException
      +
      +
      Parameters:
      +
      outPath - output local path
      +
      GIT_URL - input github url
      +
      BICLines - bug introducing commit information
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/BFCCollector.html b/doc/edu/handong/csee/isel/bfc/BFCCollector.html new file mode 100644 index 0000000..57dac45 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/BFCCollector.html @@ -0,0 +1,316 @@ + + + + + +BFCCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BFCCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.BFCCollector
+
+
+
+
Direct Known Subclasses:
+
BFCGitHubCollector, BFCJiraCollector, BFCKeywordCollector
+
+
+
public abstract class BFCCollector
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BFCCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<java.lang.String>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetGitHubLabel​(java.lang.String label) 
    voidsetGitHubURL​(java.lang.String url) 
    voidsetJiraProjectKey​(java.lang.String key) 
    voidsetJiraURL​(java.lang.String url) 
    voidsetOutPath​(java.lang.String outPath) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/class-use/BFCCollector.html b/doc/edu/handong/csee/isel/bfc/class-use/BFCCollector.html new file mode 100644 index 0000000..3416987 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/class-use/BFCCollector.html @@ -0,0 +1,189 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.BFCCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.BFCCollector

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use BFCCollector 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bfc.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.html b/doc/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.html new file mode 100644 index 0000000..cf3aac3 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.html @@ -0,0 +1,289 @@ + + + + + +BFCGitHubCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BFCGitHubCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.BFCCollector +
edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
+
+
+
+
public class BFCGitHubCollector
+extends BFCCollector
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BFCGitHubCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<java.lang.String>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetGitHubLabel​(java.lang.String label) 
    voidsetGitHubURL​(java.lang.String url) 
    +
    +
    +
    +

    Methods inherited from class edu.handong.csee.isel.bfc.BFCCollector

    + + +setJiraProjectKey, setJiraURL, setOutPath
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.html b/doc/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.html new file mode 100644 index 0000000..6cb2f88 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.html @@ -0,0 +1,304 @@ + + + + + +BFCJiraCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BFCJiraCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.BFCCollector +
edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
+
+
+
+
public class BFCJiraCollector
+extends BFCCollector
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BFCJiraCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<java.lang.String>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetJiraProjectKey​(java.lang.String key) 
    voidsetJiraURL​(java.lang.String url) 
    voidsetOutPath​(java.lang.String outPath) 
    +
    +
    +
    +

    Methods inherited from class edu.handong.csee.isel.bfc.BFCCollector

    + + +setGitHubLabel, setGitHubURL
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.html b/doc/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.html new file mode 100644 index 0000000..e97dc8a --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.html @@ -0,0 +1,302 @@ + + + + + +BFCKeywordCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BFCKeywordCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.BFCCollector +
edu.handong.csee.isel.bfc.collector.BFCKeywordCollector
+
+
+
+
+
public class BFCKeywordCollector
+extends BFCCollector
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    java.lang.String[]bugKeywords 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BFCKeywordCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<java.lang.String>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    +
    +
    +
    +

    Methods inherited from class edu.handong.csee.isel.bfc.BFCCollector

    + + +setGitHubLabel, setGitHubURL, setJiraProjectKey, setJiraURL, setOutPath
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      bugKeywords

      +
      public java.lang.String[] bugKeywords
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      collectFrom

      +
      public java.util.List<java.lang.String> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
      Overrides:
      +
      collectFrom in class BFCCollector
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCGitHubCollector.html b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCGitHubCollector.html new file mode 100644 index 0000000..16fbd71 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCGitHubCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.BFCGitHubCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.BFCGitHubCollector

+
+
No usage of edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCJiraCollector.html b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCJiraCollector.html new file mode 100644 index 0000000..86cc595 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCJiraCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.BFCJiraCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.BFCJiraCollector

+
+
No usage of edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCKeywordCollector.html b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCKeywordCollector.html new file mode 100644 index 0000000..fe36c54 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/class-use/BFCKeywordCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.BFCKeywordCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.BFCKeywordCollector

+
+
No usage of edu.handong.csee.isel.bfc.collector.BFCKeywordCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/CommitParser.html b/doc/edu/handong/csee/isel/bfc/collector/github/CommitParser.html new file mode 100644 index 0000000..4ee26e5 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/CommitParser.html @@ -0,0 +1,328 @@ + + + + + +CommitParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CommitParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.github.CommitParser
+
+
+
+
public class CommitParser
+extends java.lang.Object
+
Parsing commit addresses and print bug commit contents to .csv file.
+
+
Author:
+
yangsujin
+
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    java.util.HashSet<java.lang.String>commitAddress 
    java.util.ArrayList<java.lang.String>commitLine 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CommitParser() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.HashSet<java.lang.String>getCommitAddress() 
    voidparseCommitAddress​(java.lang.String address) +
    Parse commit addresses in bug issue addresses.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      commitAddress

      +
      public java.util.HashSet<java.lang.String> commitAddress
      +
      +
    • +
    • +
      +

      commitLine

      +
      public java.util.ArrayList<java.lang.String> commitLine
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      parseCommitAddress

      +
      public void parseCommitAddress​(java.lang.String address) + throws java.io.IOException
      +
      Parse commit addresses in bug issue addresses.
      +
      +
      Parameters:
      +
      address - Github repository address
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      getCommitAddress

      +
      public java.util.HashSet<java.lang.String> getCommitAddress()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.html b/doc/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.html new file mode 100644 index 0000000..0042e1b --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.html @@ -0,0 +1,326 @@ + + + + + +IssueLinkParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class IssueLinkParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
+
+
+
public class IssueLinkParser
+extends java.lang.Object
+
Parse the issue addresses class.
+
+
Author:
+
yangsujin
+
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static java.util.ArrayList<java.lang.String>issueAddress +
    Save parsing Github issues addresses.
    +
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    IssueLinkParser() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.util.ArrayList<java.lang.String>getIssueAddress() +
    Using issueAddress in another class.
    +
    voidparseIssueAddress​(java.lang.String address, +java.lang.String label) +
    Parse the issue addresses of a specific label in Github repository.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      issueAddress

      +
      public static java.util.ArrayList<java.lang.String> issueAddress
      +
      Save parsing Github issues addresses.
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      parseIssueAddress

      +
      public void parseIssueAddress​(java.lang.String address, +java.lang.String label) + throws java.io.IOException
      +
      Parse the issue addresses of a specific label in Github repository.
      +
      +
      Parameters:
      +
      address - Github repository address
      +
      label - Github repository issues label names
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      getIssueAddress

      +
      public static java.util.ArrayList<java.lang.String> getIssueAddress()
      +
      Using issueAddress in another class.
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/NoIssuePagesException.html b/doc/edu/handong/csee/isel/bfc/collector/github/NoIssuePagesException.html new file mode 100644 index 0000000..30b5f50 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/NoIssuePagesException.html @@ -0,0 +1,269 @@ + + + + + +NoIssuePagesException + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class NoIssuePagesException

+
+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable
+
+
+
public class NoIssuePagesException
+extends java.lang.Exception
+
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    NoIssuePagesException​(java.lang.String message) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringgetMessage() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Throwable

    + + +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getMessage

      +
      public java.lang.String getMessage()
      +
      +
      Overrides:
      +
      getMessage in class java.lang.Throwable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/class-use/CommitParser.html b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/CommitParser.html new file mode 100644 index 0000000..99027e4 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/CommitParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.github.CommitParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.github.CommitParser

+
+
No usage of edu.handong.csee.isel.bfc.collector.github.CommitParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/class-use/IssueLinkParser.html b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/IssueLinkParser.html new file mode 100644 index 0000000..01bb129 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/IssueLinkParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.github.IssueLinkParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.github.IssueLinkParser

+
+
No usage of edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/class-use/NoIssuePagesException.html b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/NoIssuePagesException.html new file mode 100644 index 0000000..44df5ec --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/class-use/NoIssuePagesException.html @@ -0,0 +1,148 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException

+
+
+
+ + + + + + + + + + + + + + +
Packages that use NoIssuePagesException 
PackageDescription
edu.handong.csee.isel 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/package-summary.html b/doc/edu/handong/csee/isel/bfc/collector/github/package-summary.html new file mode 100644 index 0000000..70d6c47 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/package-summary.html @@ -0,0 +1,150 @@ + + + + + +edu.handong.csee.isel.bfc.collector.github + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bfc.collector.github

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CommitParser +
    Parsing commit addresses and print bug commit contents to .csv file.
    +
    IssueLinkParser +
    Parse the issue addresses class.
    +
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    NoIssuePagesException 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/package-tree.html b/doc/edu/handong/csee/isel/bfc/collector/github/package-tree.html new file mode 100644 index 0000000..f5d5384 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/package-tree.html @@ -0,0 +1,124 @@ + + + + + +edu.handong.csee.isel.bfc.collector.github Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bfc.collector.github

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.bfc.collector.github.CommitParser
    • +
    • edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
    • +
    • java.lang.Throwable (implements java.io.Serializable) + +
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/github/package-use.html b/doc/edu/handong/csee/isel/bfc/collector/github/package-use.html new file mode 100644 index 0000000..2f3a9e1 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/github/package-use.html @@ -0,0 +1,144 @@ + + + + + +Uses of Package edu.handong.csee.isel.bfc.collector.github + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bfc.collector.github

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.bfc.collector.github 
PackageDescription
edu.handong.csee.isel 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/FileManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/FileManager.html new file mode 100644 index 0000000..7202356 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/FileManager.html @@ -0,0 +1,273 @@ + + + + + +FileManager + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FileManager

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.jira.FileManager
+
+
+
+
public class FileManager
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    FileManager​(java.lang.String path, +java.lang.String domain, +java.lang.String projectKey) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.io.FilecollectIssueKeys() 
    voidstoreCSVFile​(org.jsoup.Connection.Response response) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      FileManager

      +
      public FileManager​(java.lang.String path, +java.lang.String domain, +java.lang.String projectKey)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      storeCSVFile

      +
      public void storeCSVFile​(org.jsoup.Connection.Response response) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      collectIssueKeys

      +
      public java.io.File collectIssueKeys() + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidDomainException.html b/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidDomainException.html new file mode 100644 index 0000000..f46ed6a --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidDomainException.html @@ -0,0 +1,270 @@ + + + + + +InvalidDomainException + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class InvalidDomainException

+
+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable
+
+
+
public class InvalidDomainException
+extends java.lang.Exception
+
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    InvalidDomainException() 
    InvalidDomainException​(java.lang.String message) 
    InvalidDomainException​(java.lang.String message, +java.lang.Throwable cause) 
    InvalidDomainException​(java.lang.String message, +java.lang.Throwable cause, +boolean enableSuppression, +boolean writableStackTrace) 
    InvalidDomainException​(java.lang.Throwable cause) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.lang.Throwable

    + + +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      InvalidDomainException

      +
      public InvalidDomainException()
      +
      +
    • +
    • +
      +

      InvalidDomainException

      +
      public InvalidDomainException​(java.lang.String message, +java.lang.Throwable cause, +boolean enableSuppression, +boolean writableStackTrace)
      +
      +
    • +
    • +
      +

      InvalidDomainException

      +
      public InvalidDomainException​(java.lang.String message, +java.lang.Throwable cause)
      +
      +
    • +
    • +
      +

      InvalidDomainException

      +
      public InvalidDomainException​(java.lang.String message)
      +
      +
    • +
    • +
      +

      InvalidDomainException

      +
      public InvalidDomainException​(java.lang.Throwable cause)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidProjectKeyException.html b/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidProjectKeyException.html new file mode 100644 index 0000000..0eadd6b --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/InvalidProjectKeyException.html @@ -0,0 +1,270 @@ + + + + + +InvalidProjectKeyException + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class InvalidProjectKeyException

+
+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable
+
+
+
public class InvalidProjectKeyException
+extends java.lang.Exception
+
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    InvalidProjectKeyException() 
    InvalidProjectKeyException​(java.lang.String message) 
    InvalidProjectKeyException​(java.lang.String message, +java.lang.Throwable cause) 
    InvalidProjectKeyException​(java.lang.String message, +java.lang.Throwable cause, +boolean enableSuppression, +boolean writableStackTrace) 
    InvalidProjectKeyException​(java.lang.Throwable cause) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.lang.Throwable

    + + +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/JQLManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/JQLManager.html new file mode 100644 index 0000000..7a19975 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/JQLManager.html @@ -0,0 +1,277 @@ + + + + + +JQLManager + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class JQLManager

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
+
+
+
public class JQLManager
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    JQLManager​(java.lang.String projectKey) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringgetEncodedJQL​(java.lang.String jql) 
    java.lang.StringgetJQL1​(int end) 
    java.lang.StringgetJQL2​(int start, +int end) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      JQLManager

      +
      public JQLManager​(java.lang.String projectKey)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getJQL1

      +
      public java.lang.String getJQL1​(int end)
      +
      +
    • +
    • +
      +

      getJQL2

      +
      public java.lang.String getJQL2​(int start, +int end)
      +
      +
    • +
    • +
      +

      getEncodedJQL

      +
      public java.lang.String getEncodedJQL​(java.lang.String jql) + throws java.io.UnsupportedEncodingException
      +
      +
      Throws:
      +
      java.io.UnsupportedEncodingException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.html b/doc/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.html new file mode 100644 index 0000000..7bb4f37 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/JiraBugIssueCrawler.html @@ -0,0 +1,281 @@ + + + + + +JiraBugIssueCrawler + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class JiraBugIssueCrawler

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler
+
+
+
+
public class JiraBugIssueCrawler
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    JiraBugIssueCrawler​(java.lang.String domain, +java.lang.String projectKey) 
    JiraBugIssueCrawler​(java.lang.String domain, +java.lang.String projectKey, +java.lang.String path) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.io.FilegetJiraBugs() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/Period.html b/doc/edu/handong/csee/isel/bfc/collector/jira/Period.html new file mode 100644 index 0000000..b6f6979 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/Period.html @@ -0,0 +1,316 @@ + + + + + +Period + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Period

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.jira.Period
+
+
+
+
public class Period
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Period​(int start, +int end) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voiddecreasePeriod() 
    intgetEnd() 
    intgetStart() 
    voidincreasePeriod() 
    voidmovePeriod​(int period) 
    voidsetEnd​(int end) 
    voidsetStart​(int start) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Period

      +
      public Period​(int start, +int end)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getStart

      +
      public int getStart()
      +
      +
    • +
    • +
      +

      setStart

      +
      public void setStart​(int start)
      +
      +
    • +
    • +
      +

      getEnd

      +
      public int getEnd()
      +
      +
    • +
    • +
      +

      setEnd

      +
      public void setEnd​(int end)
      +
      +
    • +
    • +
      +

      decreasePeriod

      +
      public void decreasePeriod()
      +
      +
    • +
    • +
      +

      increasePeriod

      +
      public void increasePeriod()
      +
      +
    • +
    • +
      +

      movePeriod

      +
      public void movePeriod​(int period)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/URLManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/URLManager.html new file mode 100644 index 0000000..9db6e45 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/URLManager.html @@ -0,0 +1,248 @@ + + + + + +URLManager + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class URLManager

+
+
+
java.lang.Object +
edu.handong.csee.isel.bfc.collector.jira.URLManager
+
+
+
+
public class URLManager
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    URLManager​(java.lang.String domain) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringgetURL​(java.lang.String encodedJql) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      URLManager

      +
      public URLManager​(java.lang.String domain)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getURL

      +
      public java.lang.String getURL​(java.lang.String encodedJql)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/FileManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/FileManager.html new file mode 100644 index 0000000..69845f4 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/FileManager.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.FileManager + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.FileManager

+
+
No usage of edu.handong.csee.isel.bfc.collector.jira.FileManager
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidDomainException.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidDomainException.html new file mode 100644 index 0000000..35c6b3f --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidDomainException.html @@ -0,0 +1,219 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Packages that use InvalidDomainException 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bfc 
edu.handong.csee.isel.bfc.collector.jira 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidProjectKeyException.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidProjectKeyException.html new file mode 100644 index 0000000..f9133ad --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/InvalidProjectKeyException.html @@ -0,0 +1,214 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Packages that use InvalidProjectKeyException 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bfc 
edu.handong.csee.isel.bfc.collector.jira 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JQLManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JQLManager.html new file mode 100644 index 0000000..501eb30 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JQLManager.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.JQLManager + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.JQLManager

+
+
No usage of edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JiraBugIssueCrawler.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JiraBugIssueCrawler.html new file mode 100644 index 0000000..6780186 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/JiraBugIssueCrawler.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler

+
+
No usage of edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/Period.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/Period.html new file mode 100644 index 0000000..a76e02a --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/Period.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.Period + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.Period

+
+
No usage of edu.handong.csee.isel.bfc.collector.jira.Period
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/URLManager.html b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/URLManager.html new file mode 100644 index 0000000..3e4e7b6 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/class-use/URLManager.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bfc.collector.jira.URLManager + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bfc.collector.jira.URLManager

+
+
No usage of edu.handong.csee.isel.bfc.collector.jira.URLManager
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/package-summary.html b/doc/edu/handong/csee/isel/bfc/collector/jira/package-summary.html new file mode 100644 index 0000000..855cca1 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/package-summary.html @@ -0,0 +1,162 @@ + + + + + +edu.handong.csee.isel.bfc.collector.jira + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bfc.collector.jira

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/package-tree.html b/doc/edu/handong/csee/isel/bfc/collector/jira/package-tree.html new file mode 100644 index 0000000..3718db6 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/package-tree.html @@ -0,0 +1,128 @@ + + + + + +edu.handong.csee.isel.bfc.collector.jira Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bfc.collector.jira

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/jira/package-use.html b/doc/edu/handong/csee/isel/bfc/collector/jira/package-use.html new file mode 100644 index 0000000..952fa84 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/jira/package-use.html @@ -0,0 +1,210 @@ + + + + + +Uses of Package edu.handong.csee.isel.bfc.collector.jira + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bfc.collector.jira

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.bfc.collector.jira 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bfc 
edu.handong.csee.isel.bfc.collector.jira 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/package-summary.html b/doc/edu/handong/csee/isel/bfc/collector/package-summary.html new file mode 100644 index 0000000..4a43579 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/package-summary.html @@ -0,0 +1,131 @@ + + + + + +edu.handong.csee.isel.bfc.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bfc.collector

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/package-tree.html b/doc/edu/handong/csee/isel/bfc/collector/package-tree.html new file mode 100644 index 0000000..31d0178 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/package-tree.html @@ -0,0 +1,120 @@ + + + + + +edu.handong.csee.isel.bfc.collector Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bfc.collector

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/collector/package-use.html b/doc/edu/handong/csee/isel/bfc/collector/package-use.html new file mode 100644 index 0000000..f53b120 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/collector/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.bfc.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bfc.collector

+
+
No usage of edu.handong.csee.isel.bfc.collector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/package-summary.html b/doc/edu/handong/csee/isel/bfc/package-summary.html new file mode 100644 index 0000000..2e5656e --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.bfc + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bfc

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    BFCCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/package-tree.html b/doc/edu/handong/csee/isel/bfc/package-tree.html new file mode 100644 index 0000000..f418e30 --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.bfc Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bfc

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bfc/package-use.html b/doc/edu/handong/csee/isel/bfc/package-use.html new file mode 100644 index 0000000..ec86bfb --- /dev/null +++ b/doc/edu/handong/csee/isel/bfc/package-use.html @@ -0,0 +1,171 @@ + + + + + +Uses of Package edu.handong.csee.isel.bfc + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bfc

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.bfc 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bfc.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/BICCollector.html b/doc/edu/handong/csee/isel/bic/BICCollector.html new file mode 100644 index 0000000..fcbac60 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/BICCollector.html @@ -0,0 +1,218 @@ + + + + + +BICCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface BICCollector

+
+
+
+
+
All Known Implementing Classes:
+
AGSZZBICCollector, CBICCollector, SZZRunner
+
+
+
public interface BICCollector
+
+
+
    + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetBFC​(java.util.List<java.lang.String> bfcList) 
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setBFC

      +
      void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      +
    • +
    • +
      +

      collectFrom

      +
      java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/class-use/BICCollector.html b/doc/edu/handong/csee/isel/bic/class-use/BICCollector.html new file mode 100644 index 0000000..410e025 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/class-use/BICCollector.html @@ -0,0 +1,186 @@ + + + + + +Uses of Interface edu.handong.csee.isel.bic.BICCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
edu.handong.csee.isel.bic.BICCollector

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use BICCollector 
PackageDescription
edu.handong.csee.isel.bic.collector 
edu.handong.csee.isel.szz 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.html b/doc/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.html new file mode 100644 index 0000000..2ae1a70 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.html @@ -0,0 +1,300 @@ + + + + + +AGSZZBICCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AGSZZBICCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.collector.AGSZZBICCollector
+
+
+
+
All Implemented Interfaces:
+
BICCollector
+
+
+
public class AGSZZBICCollector
+extends java.lang.Object
+implements BICCollector
+
The AGSZZBICCollector class do collect BIC(bug introducing commit)
+ using the annotation graph.
+ It implements BICColletor which is interface about collecting BIC
+
+
Version:
+
1.0
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    AGSZZBICCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) +
    Make the annotation graph and than create bic csv file using annotation graph.
    +
    voidsetBFC​(java.util.List<java.lang.String> bfcList) +
    setting BFC(bug fixing commit)
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setBFC

      +
      public void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      setting BFC(bug fixing commit)
      +
      +
      Specified by:
      +
      setBFC in interface BICCollector
      +
      Parameters:
      +
      bfcList - The list that is only bug fixing commit name list.
      +
      +
      +
    • +
    • +
      +

      collectFrom

      +
      public java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) + throws java.io.IOException
      +
      Make the annotation graph and than create bic csv file using annotation graph.
      +
      +
      Specified by:
      +
      collectFrom in interface BICCollector
      +
      Parameters:
      +
      commitList - The list that is all commit list from github project.
      +
      Returns:
      +
      null
      +
      Throws:
      +
      java.io.IOException
      +
      See Also:
      +
      "AnnotationGraphBuilder", +"AnnotationGraphModel", +"RevCommit"
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/CBICCollector.html b/doc/edu/handong/csee/isel/bic/collector/CBICCollector.html new file mode 100644 index 0000000..7491ca9 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/CBICCollector.html @@ -0,0 +1,272 @@ + + + + + +CBICCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CBICCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.collector.CBICCollector
+
+
+
+
All Implemented Interfaces:
+
BICCollector
+
+
+
public class CBICCollector
+extends java.lang.Object
+implements BICCollector
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CBICCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetBFC​(java.util.List<java.lang.String> bfcList) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setBFC

      +
      public void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      +
      Specified by:
      +
      setBFC in interface BICCollector
      +
      +
      +
    • +
    • +
      +

      collectFrom

      +
      public java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
      Specified by:
      +
      collectFrom in interface BICCollector
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/class-use/AGSZZBICCollector.html b/doc/edu/handong/csee/isel/bic/collector/class-use/AGSZZBICCollector.html new file mode 100644 index 0000000..8647177 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/class-use/AGSZZBICCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.collector.AGSZZBICCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.collector.AGSZZBICCollector

+
+
No usage of edu.handong.csee.isel.bic.collector.AGSZZBICCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/class-use/CBICCollector.html b/doc/edu/handong/csee/isel/bic/collector/class-use/CBICCollector.html new file mode 100644 index 0000000..1a38cea --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/class-use/CBICCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.collector.CBICCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.collector.CBICCollector

+
+
No usage of edu.handong.csee.isel.bic.collector.CBICCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/package-summary.html b/doc/edu/handong/csee/isel/bic/collector/package-summary.html new file mode 100644 index 0000000..92808b0 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/package-summary.html @@ -0,0 +1,131 @@ + + + + + +edu.handong.csee.isel.bic.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.collector

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    AGSZZBICCollector +
    The AGSZZBICCollector class do collect BIC(bug introducing commit)
    + using the annotation graph.
    + It implements BICColletor which is interface about collecting BIC
    +
    CBICCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/package-tree.html b/doc/edu/handong/csee/isel/bic/collector/package-tree.html new file mode 100644 index 0000000..5a9e7a2 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/package-tree.html @@ -0,0 +1,115 @@ + + + + + +edu.handong.csee.isel.bic.collector Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.collector

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/collector/package-use.html b/doc/edu/handong/csee/isel/bic/collector/package-use.html new file mode 100644 index 0000000..82bf169 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/collector/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.collector

+
+
No usage of edu.handong.csee.isel.bic.collector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/package-summary.html b/doc/edu/handong/csee/isel/bic/package-summary.html new file mode 100644 index 0000000..8654579 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.bic + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    BICCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/package-tree.html b/doc/edu/handong/csee/isel/bic/package-tree.html new file mode 100644 index 0000000..489a9cd --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/package-tree.html @@ -0,0 +1,110 @@ + + + + + +edu.handong.csee.isel.bic Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic

+Package Hierarchies: + +
+
+
+

Interface Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/package-use.html b/doc/edu/handong/csee/isel/bic/package-use.html new file mode 100644 index 0000000..276af74 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/package-use.html @@ -0,0 +1,171 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.bic 
PackageDescription
edu.handong.csee.isel.bic.collector 
edu.handong.csee.isel.szz 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/data/BICInfo.html b/doc/edu/handong/csee/isel/bic/szz/data/BICInfo.html new file mode 100644 index 0000000..55be927 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/data/BICInfo.html @@ -0,0 +1,436 @@ + + + + + +BICInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BICInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.data.BICInfo
+
+
+
+
All Implemented Interfaces:
+
java.lang.Comparable<BICInfo>
+
+
+
public class BICInfo
+extends java.lang.Object
+implements java.lang.Comparable<BICInfo>
+
The BICInfo class
+ the bic information
+
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BICInfo​(java.lang.String fixSha1, +java.lang.String path, +java.lang.String fixDate, +Line line) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intcompareTo​(BICInfo o) 
    booleanequals​(BICInfo compareWith) 
    java.lang.StringgetAuthor() 
    java.lang.StringgetBIContent() 
    java.lang.StringgetBIDate() 
    intgetBiLineIdx() 
    java.lang.StringgetBiPath() 
    java.lang.StringgetBISha1() 
    java.lang.StringgetCommiter() 
    java.lang.StringgetFixDate() 
    java.lang.StringgetFixSha1() 
    java.lang.StringgetPath() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      BICInfo

      +
      public BICInfo​(java.lang.String fixSha1, +java.lang.String path, +java.lang.String fixDate, +Line line)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getBISha1

      +
      public java.lang.String getBISha1()
      +
      +
      Returns:
      +
      BISha1 bic commit name
      +
      +
      +
    • +
    • +
      +

      getBiPath

      +
      public java.lang.String getBiPath()
      +
      +
      Returns:
      +
      biPath bic path
      +
      +
      +
    • +
    • +
      +

      getFixSha1

      +
      public java.lang.String getFixSha1()
      +
      +
      Returns:
      +
      FixSha1 bfc commit name
      +
      +
      +
    • +
    • +
      +

      getPath

      +
      public java.lang.String getPath()
      +
      +
      Returns:
      +
      path bfc path
      +
      +
      +
    • +
    • +
      +

      getBIDate

      +
      public java.lang.String getBIDate()
      +
      +
      Returns:
      +
      BIDate date bug created
      +
      +
      +
    • +
    • +
      +

      getFixDate

      +
      public java.lang.String getFixDate()
      +
      +
      Returns:
      +
      FixDate bug fixing date
      +
      +
      +
    • +
    • +
      +

      getBiLineIdx

      +
      public int getBiLineIdx()
      +
      +
      Returns:
      +
      biLineIdx bug line index
      +
      +
      +
    • +
    • +
      +

      getBIContent

      +
      public java.lang.String getBIContent()
      +
      +
      Returns:
      +
      BIContent bug content
      +
      +
      +
    • +
    • +
      +

      getCommiter

      +
      public java.lang.String getCommiter()
      +
      +
      Returns:
      +
      commiter Who made the commit
      +
      +
      +
    • +
    • +
      +

      getAuthor

      +
      public java.lang.String getAuthor()
      +
      +
      Returns:
      +
      getAuthor
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals​(BICInfo compareWith)
      +
      +
      Parameters:
      +
      compareWith - bic information
      +
      Returns:
      +
      Whether or not the bug information matches
      +
      +
      +
    • +
    • +
      +

      compareTo

      +
      public int compareTo​(BICInfo o)
      +
      +
      Specified by:
      +
      compareTo in interface java.lang.Comparable<BICInfo>
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/data/class-use/BICInfo.html b/doc/edu/handong/csee/isel/bic/szz/data/class-use/BICInfo.html new file mode 100644 index 0000000..811ac50 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/data/class-use/BICInfo.html @@ -0,0 +1,251 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.data.BICInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.data.BICInfo

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages that use BICInfo 
PackageDescription
edu.handong.csee.isel 
edu.handong.csee.isel.bic.szz.data 
edu.handong.csee.isel.bic.szz.trace 
edu.handong.csee.isel.bic.szz.util 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/data/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/data/package-summary.html new file mode 100644 index 0000000..3e89c67 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/data/package-summary.html @@ -0,0 +1,126 @@ + + + + + +edu.handong.csee.isel.bic.szz.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.data

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    BICInfo +
    The BICInfo class
    + the bic information
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/data/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/data/package-tree.html new file mode 100644 index 0000000..1942d5d --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/data/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.bic.szz.data Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.data

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.bic.szz.data.BICInfo (implements java.lang.Comparable<T>)
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/data/package-use.html b/doc/edu/handong/csee/isel/bic/szz/data/package-use.html new file mode 100644 index 0000000..4b0b865 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/data/package-use.html @@ -0,0 +1,237 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.data

+
+
+ +
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.html b/doc/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.html new file mode 100644 index 0000000..e3b66b5 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/exception/EmptyHunkTypeException.html @@ -0,0 +1,270 @@ + + + + + +EmptyHunkTypeException + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class EmptyHunkTypeException

+
+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable
+
+
+
public class EmptyHunkTypeException
+extends java.lang.Exception
+
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    EmptyHunkTypeException() 
    EmptyHunkTypeException​(java.lang.String message) 
    EmptyHunkTypeException​(java.lang.String message, +java.lang.Throwable cause) 
    EmptyHunkTypeException​(java.lang.String message, +java.lang.Throwable cause, +boolean enableSuppression, +boolean writableStackTrace) 
    EmptyHunkTypeException​(java.lang.Throwable cause) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.lang.Throwable

    + + +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      EmptyHunkTypeException

      +
      public EmptyHunkTypeException()
      +
      +
    • +
    • +
      +

      EmptyHunkTypeException

      +
      public EmptyHunkTypeException​(java.lang.String message)
      +
      +
    • +
    • +
      +

      EmptyHunkTypeException

      +
      public EmptyHunkTypeException​(java.lang.Throwable cause)
      +
      +
    • +
    • +
      +

      EmptyHunkTypeException

      +
      public EmptyHunkTypeException​(java.lang.String message, +java.lang.Throwable cause)
      +
      +
    • +
    • +
      +

      EmptyHunkTypeException

      +
      public EmptyHunkTypeException​(java.lang.String message, +java.lang.Throwable cause, +boolean enableSuppression, +boolean writableStackTrace)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/exception/class-use/EmptyHunkTypeException.html b/doc/edu/handong/csee/isel/bic/szz/exception/class-use/EmptyHunkTypeException.html new file mode 100644 index 0000000..7435fe9 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/exception/class-use/EmptyHunkTypeException.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException

+
+
No usage of edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/exception/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/exception/package-summary.html new file mode 100644 index 0000000..2538050 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/exception/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.bic.szz.exception + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.exception

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/exception/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/exception/package-tree.html new file mode 100644 index 0000000..2393b71 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/exception/package-tree.html @@ -0,0 +1,122 @@ + + + + + +edu.handong.csee.isel.bic.szz.exception Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.exception

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Throwable (implements java.io.Serializable) + +
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/exception/package-use.html b/doc/edu/handong/csee/isel/bic/szz/exception/package-use.html new file mode 100644 index 0000000..c20dff2 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/exception/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.exception + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.exception

+
+
No usage of edu.handong.csee.isel.bic.szz.exception
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.html b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.html new file mode 100644 index 0000000..7cab8fd --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.html @@ -0,0 +1,269 @@ + + + + + +AnnotationGraphBuilder + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AnnotationGraphBuilder

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder
+
+
+
+
public class AnnotationGraphBuilder
+extends java.lang.Object
+
The AnnotationGraphBuilder class is for making Annotation Graph
+
+
Version:
+
1.0
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    AnnotationGraphBuilder() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    AnnotationGraphModelbuildAnnotationGraph​(org.eclipse.jgit.lib.Repository repo, +RevsWithPath revsWithPath) +
    spiting Map RevsWithPath
    + executing AnnotationGraphBuilderThread
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      buildAnnotationGraph

      +
      public AnnotationGraphModel buildAnnotationGraph​(org.eclipse.jgit.lib.Repository repo, +RevsWithPath revsWithPath)
      +
      spiting Map RevsWithPath
      + executing AnnotationGraphBuilderThread
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      revsWithPath - revs With Path
      +
      Returns:
      +
      annotationGraph annotation Graph
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.html b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.html new file mode 100644 index 0000000..ad73f66 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.html @@ -0,0 +1,312 @@ + + + + + +AnnotationGraphBuilderThread + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AnnotationGraphBuilderThread

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class AnnotationGraphBuilderThread
+extends java.lang.Object
+implements java.lang.Runnable
+
Create AnnotationGraphBuilder Thread
+
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    AnnotationGraphModelpartitionedAnnotationGraph 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    AnnotationGraphBuilderThread​(org.eclipse.jgit.lib.Repository repo, +RevsWithPath revsWithPath) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    + +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      AnnotationGraphBuilderThread

      +
      public AnnotationGraphBuilderThread​(org.eclipse.jgit.lib.Repository repo, +RevsWithPath revsWithPath)
      +
      +
      Parameters:
      +
      repo - Github project repository
      +
      revsWithPath - revs With Path
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.html b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.html new file mode 100644 index 0000000..7ca4a35 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.html @@ -0,0 +1,253 @@ + + + + + +AnnotationGraphModel + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AnnotationGraphModel

+
+
+
java.lang.Object +
java.util.AbstractMap<K,​V> +
java.util.HashMap<java.lang.String,​java.util.HashMap<org.eclipse.jgit.revwalk.RevCommit,​java.util.ArrayList<Line>>> +
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,​java.util.HashMap<org.eclipse.jgit.revwalk.RevCommit,​java.util.ArrayList<Line>>>
+
+
+
public class AnnotationGraphModel
+extends java.util.HashMap<java.lang.String,​java.util.HashMap<org.eclipse.jgit.revwalk.RevCommit,​java.util.ArrayList<Line>>>
+
The AnnotationGraphModel class is for HashMap that stores data
+
+
Author:
+
SJ, JY
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.util.AbstractMap

    + + +java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>
    +
    +

    Nested classes/interfaces inherited from interface java.util.Map

    + + +java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    AnnotationGraphModel() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.util.HashMap

    + + +clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
    +
    +

    Methods inherited from class java.util.AbstractMap

    + + +equals, hashCode, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface java.util.Map

    + + +equals, hashCode
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilder.html b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilder.html new file mode 100644 index 0000000..31a2e82 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilder.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder

+
+
No usage of edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilderThread.html b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilderThread.html new file mode 100644 index 0000000..d7ad196 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphBuilderThread.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread

+
+
No usage of edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphModel.html b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphModel.html new file mode 100644 index 0000000..c2feeae --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/class-use/AnnotationGraphModel.html @@ -0,0 +1,206 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use AnnotationGraphModel 
PackageDescription
edu.handong.csee.isel.bic.szz.graph 
edu.handong.csee.isel.bic.szz.trace 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/graph/package-summary.html new file mode 100644 index 0000000..a5e5893 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/package-summary.html @@ -0,0 +1,137 @@ + + + + + +edu.handong.csee.isel.bic.szz.graph + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.graph

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/graph/package-tree.html new file mode 100644 index 0000000..d8ff2a4 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/package-tree.html @@ -0,0 +1,124 @@ + + + + + +edu.handong.csee.isel.bic.szz.graph Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.graph

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.util.AbstractMap<K,​V> (implements java.util.Map<K,​V>) +
        +
      • java.util.HashMap<K,​V> (implements java.lang.Cloneable, java.util.Map<K,​V>, java.io.Serializable) + +
      • +
      +
    • +
    • edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder
    • +
    • edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread (implements java.lang.Runnable)
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/graph/package-use.html b/doc/edu/handong/csee/isel/bic/szz/graph/package-use.html new file mode 100644 index 0000000..cc2fb88 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/graph/package-use.html @@ -0,0 +1,175 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.graph + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.graph

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.bic.szz.graph 
PackageDescription
edu.handong.csee.isel.bic.szz.graph 
edu.handong.csee.isel.bic.szz.trace 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/Hunk.html b/doc/edu/handong/csee/isel/bic/szz/model/Hunk.html new file mode 100644 index 0000000..325869c --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/Hunk.html @@ -0,0 +1,322 @@ + + + + + +Hunk + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Hunk

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.model.Hunk
+
+
+
+
public class Hunk
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Hunk​(java.lang.String hunkType, +int beginA, +int endA, +int beginB, +int endB) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intgetBeginOfChild() 
    intgetBeginOfParent() 
    intgetEndOfChild() 
    intgetEndOfParent() 
    java.lang.StringgetHunkType() 
    intgetRangeOfChild() 
    intgetRangeOfParent() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Hunk

      +
      public Hunk​(java.lang.String hunkType, +int beginA, +int endA, +int beginB, +int endB)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/Line.html b/doc/edu/handong/csee/isel/bic/szz/model/Line.html new file mode 100644 index 0000000..c494c00 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/Line.html @@ -0,0 +1,499 @@ + + + + + +Line + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Line

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.model.Line
+
+
+
+
public class Line
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Line​(java.lang.String path, +java.lang.String rev, +java.lang.String content, +int idx, +LineType lineType, +java.util.List<Line> ancestors, +boolean isFormatChange, +boolean isWithinHunk, +java.lang.String commiter, +java.lang.String author, +java.lang.String commitDate) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<Line>getAncestors() 
    java.lang.StringgetAuthor() 
    java.lang.StringgetCommitDate() 
    java.lang.StringgetCommiter() 
    java.lang.StringgetContent() 
    intgetIdx() 
    LineTypegetLineType() 
    java.lang.StringgetPath() 
    java.lang.StringgetRev() 
    booleanisFormatChange() 
    booleanisWithinHunk() 
    voidsetAncestors​(java.util.List<Line> ancestors) 
    voidsetAuthor​(java.lang.String author) 
    voidsetCommitDate​(java.lang.String commitDate) 
    voidsetCommiter​(java.lang.String commiter) 
    voidsetContent​(java.lang.String content) 
    voidsetFormatChange​(boolean isFormatChange) 
    voidsetIdx​(int idx) 
    voidsetLineType​(LineType lineType) 
    voidsetPath​(java.lang.String path) 
    voidsetRev​(java.lang.String rev) 
    voidsetWithinHunk​(boolean isWithinHunk) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Line

      +
      public Line​(java.lang.String path, +java.lang.String rev, +java.lang.String content, +int idx, +LineType lineType, +java.util.List<Line> ancestors, +boolean isFormatChange, +boolean isWithinHunk, +java.lang.String commiter, +java.lang.String author, +java.lang.String commitDate)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getPath

      +
      public java.lang.String getPath()
      +
      +
    • +
    • +
      +

      setPath

      +
      public void setPath​(java.lang.String path)
      +
      +
    • +
    • +
      +

      getRev

      +
      public java.lang.String getRev()
      +
      +
    • +
    • +
      +

      setRev

      +
      public void setRev​(java.lang.String rev)
      +
      +
    • +
    • +
      +

      getContent

      +
      public java.lang.String getContent()
      +
      +
    • +
    • +
      +

      setContent

      +
      public void setContent​(java.lang.String content)
      +
      +
    • +
    • +
      +

      getIdx

      +
      public int getIdx()
      +
      +
    • +
    • +
      +

      setIdx

      +
      public void setIdx​(int idx)
      +
      +
    • +
    • +
      +

      getLineType

      +
      public LineType getLineType()
      +
      +
    • +
    • +
      +

      setLineType

      +
      public void setLineType​(LineType lineType)
      +
      +
    • +
    • +
      +

      getAncestors

      +
      public java.util.List<Line> getAncestors()
      +
      +
    • +
    • +
      +

      setAncestors

      +
      public void setAncestors​(java.util.List<Line> ancestors)
      +
      +
    • +
    • +
      +

      isFormatChange

      +
      public boolean isFormatChange()
      +
      +
    • +
    • +
      +

      setFormatChange

      +
      public void setFormatChange​(boolean isFormatChange)
      +
      +
    • +
    • +
      +

      isWithinHunk

      +
      public boolean isWithinHunk()
      +
      +
    • +
    • +
      +

      setWithinHunk

      +
      public void setWithinHunk​(boolean isWithinHunk)
      +
      +
    • +
    • +
      +

      getCommiter

      +
      public java.lang.String getCommiter()
      +
      +
    • +
    • +
      +

      setCommiter

      +
      public void setCommiter​(java.lang.String commiter)
      +
      +
    • +
    • +
      +

      getAuthor

      +
      public java.lang.String getAuthor()
      +
      +
    • +
    • +
      +

      setAuthor

      +
      public void setAuthor​(java.lang.String author)
      +
      +
    • +
    • +
      +

      getCommitDate

      +
      public java.lang.String getCommitDate()
      +
      +
    • +
    • +
      +

      setCommitDate

      +
      public void setCommitDate​(java.lang.String commitDate)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/LineType.html b/doc/edu/handong/csee/isel/bic/szz/model/LineType.html new file mode 100644 index 0000000..1568060 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/LineType.html @@ -0,0 +1,352 @@ + + + + + +LineType + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum LineType

+
+
+
java.lang.Object +
java.lang.Enum<LineType> +
edu.handong.csee.isel.bic.szz.model.LineType
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Comparable<LineType>, java.lang.constant.Constable
+
+
+
public enum LineType
+extends java.lang.Enum<LineType>
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    + + +java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    +
    +
  • + +
  • +
    + + +

    Enum Constant Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enum Constants 
    Enum ConstantDescription
    CONTEXT 
    DELETE 
    INSERT 
    REPLACE 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringtoString() 
    static LineTypevalueOf​(java.lang.String name) +
    Returns the enum constant of this type with the specified name.
    +
    static LineType[]values() +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Enum

    + + +compareTo, describeConstable, equals, getDeclaringClass, hashCode, name, ordinal, valueOf
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Enum Constant Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static LineType[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static LineType valueOf​(java.lang.String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      +
      java.lang.NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Enum<LineType>
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/PathRevision.html b/doc/edu/handong/csee/isel/bic/szz/model/PathRevision.html new file mode 100644 index 0000000..47aedc5 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/PathRevision.html @@ -0,0 +1,293 @@ + + + + + +PathRevision + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PathRevision

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.model.PathRevision
+
+
+
+
public class PathRevision
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    PathRevision() 
    PathRevision​(java.lang.String path, +org.eclipse.jgit.revwalk.RevCommit commit) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    org.eclipse.jgit.revwalk.RevCommitgetCommit() 
    java.lang.StringgetPath() 
    voidsetCommit​(org.eclipse.jgit.revwalk.RevCommit commit) 
    voidsetPath​(java.lang.String path) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      PathRevision

      +
      public PathRevision()
      +
      +
    • +
    • +
      +

      PathRevision

      +
      public PathRevision​(java.lang.String path, +org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getPath

      +
      public java.lang.String getPath()
      +
      +
    • +
    • +
      +

      setPath

      +
      public void setPath​(java.lang.String path)
      +
      +
    • +
    • +
      +

      getCommit

      +
      public org.eclipse.jgit.revwalk.RevCommit getCommit()
      +
      +
    • +
    • +
      +

      setCommit

      +
      public void setCommit​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/RevsWithPath.html b/doc/edu/handong/csee/isel/bic/szz/model/RevsWithPath.html new file mode 100644 index 0000000..05a6c4f --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/RevsWithPath.html @@ -0,0 +1,250 @@ + + + + + +RevsWithPath + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RevsWithPath

+
+
+
java.lang.Object +
java.util.AbstractMap<K,​V> +
java.util.HashMap<java.lang.String,​java.util.List<org.eclipse.jgit.revwalk.RevCommit>> +
edu.handong.csee.isel.bic.szz.model.RevsWithPath
+
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,​java.util.List<org.eclipse.jgit.revwalk.RevCommit>>
+
+
+
public class RevsWithPath
+extends java.util.HashMap<java.lang.String,​java.util.List<org.eclipse.jgit.revwalk.RevCommit>>
+
+
See Also:
+
Serialized Form
+
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.util.AbstractMap

    + + +java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>
    +
    +

    Nested classes/interfaces inherited from interface java.util.Map

    + + +java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    RevsWithPath() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.util.HashMap

    + + +clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
    +
    +

    Methods inherited from class java.util.AbstractMap

    + + +equals, hashCode, toString
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface java.util.Map

    + + +equals, hashCode
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/class-use/Hunk.html b/doc/edu/handong/csee/isel/bic/szz/model/class-use/Hunk.html new file mode 100644 index 0000000..dd901fa --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/class-use/Hunk.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.model.Hunk + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.model.Hunk

+
+
No usage of edu.handong.csee.isel.bic.szz.model.Hunk
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/class-use/Line.html b/doc/edu/handong/csee/isel/bic/szz/model/class-use/Line.html new file mode 100644 index 0000000..204f91c --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/class-use/Line.html @@ -0,0 +1,254 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.model.Line + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.model.Line

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Packages that use Line 
PackageDescription
edu.handong.csee.isel.bic.szz.data 
edu.handong.csee.isel.bic.szz.model 
edu.handong.csee.isel.bic.szz.util 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/class-use/LineType.html b/doc/edu/handong/csee/isel/bic/szz/model/class-use/LineType.html new file mode 100644 index 0000000..7311451 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/class-use/LineType.html @@ -0,0 +1,208 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.model.LineType + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.model.LineType

+
+
+
+ + + + + + + + + + + + + + +
Packages that use LineType 
PackageDescription
edu.handong.csee.isel.bic.szz.model 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/class-use/PathRevision.html b/doc/edu/handong/csee/isel/bic/szz/model/class-use/PathRevision.html new file mode 100644 index 0000000..f450516 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/class-use/PathRevision.html @@ -0,0 +1,172 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.model.PathRevision + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.model.PathRevision

+
+
+
+ + + + + + + + + + + + + + +
Packages that use PathRevision 
PackageDescription
edu.handong.csee.isel.bic.szz.util 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/class-use/RevsWithPath.html b/doc/edu/handong/csee/isel/bic/szz/model/class-use/RevsWithPath.html new file mode 100644 index 0000000..3d20844 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/class-use/RevsWithPath.html @@ -0,0 +1,238 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.model.RevsWithPath + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.model.RevsWithPath

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Packages that use RevsWithPath 
PackageDescription
edu.handong.csee.isel.bic.szz.graph 
edu.handong.csee.isel.bic.szz.trace 
edu.handong.csee.isel.bic.szz.util 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/model/package-summary.html new file mode 100644 index 0000000..33e258c --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/package-summary.html @@ -0,0 +1,154 @@ + + + + + +edu.handong.csee.isel.bic.szz.model + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.model

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Hunk 
    Line 
    PathRevision 
    RevsWithPath 
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    LineType 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/model/package-tree.html new file mode 100644 index 0000000..eef83ed --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/package-tree.html @@ -0,0 +1,139 @@ + + + + + +edu.handong.csee.isel.bic.szz.model Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.model

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.util.AbstractMap<K,​V> (implements java.util.Map<K,​V>) +
        +
      • java.util.HashMap<K,​V> (implements java.lang.Cloneable, java.util.Map<K,​V>, java.io.Serializable) + +
      • +
      +
    • +
    • edu.handong.csee.isel.bic.szz.model.Hunk
    • +
    • edu.handong.csee.isel.bic.szz.model.Line
    • +
    • edu.handong.csee.isel.bic.szz.model.PathRevision
    • +
    +
  • +
+
+
+

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) +
        +
      • edu.handong.csee.isel.bic.szz.model.LineType
      • +
      +
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/model/package-use.html b/doc/edu/handong/csee/isel/bic/szz/model/package-use.html new file mode 100644 index 0000000..8e2b8e3 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/model/package-use.html @@ -0,0 +1,264 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.model + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.model

+
+
+ +
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/trace/Tracer.html b/doc/edu/handong/csee/isel/bic/szz/trace/Tracer.html new file mode 100644 index 0000000..594ba57 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/trace/Tracer.html @@ -0,0 +1,278 @@ + + + + + +Tracer + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Tracer

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.trace.Tracer
+
+
+
+
public class Tracer
+extends java.lang.Object
+
The Tracer class is commit tracer
+
+
Version:
+
1.0
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Tracer() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<BICInfo>collectBILines​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> BFCList, +AnnotationGraphModel annotationGraph, +RevsWithPath revsWithPath) +
    Find path and line index for tracing
    + Trace
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Tracer

      +
      public Tracer()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      collectBILines

      +
      public java.util.List<BICInfo> collectBILines​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> BFCList, +AnnotationGraphModel annotationGraph, +RevsWithPath revsWithPath) + throws java.io.IOException
      +
      Find path and line index for tracing
      + Trace
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      BFCList - bug fixing list
      +
      annotationGraph - annotation Graph
      +
      revsWithPath - revs With Path
      +
      Returns:
      +
      bicList bug introducing commit
      +
      Throws:
      +
      java.io.IOException - failed file creating
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/trace/class-use/Tracer.html b/doc/edu/handong/csee/isel/bic/szz/trace/class-use/Tracer.html new file mode 100644 index 0000000..709f62a --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/trace/class-use/Tracer.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.trace.Tracer + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.trace.Tracer

+
+
No usage of edu.handong.csee.isel.bic.szz.trace.Tracer
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/trace/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/trace/package-summary.html new file mode 100644 index 0000000..9753f3a --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/trace/package-summary.html @@ -0,0 +1,125 @@ + + + + + +edu.handong.csee.isel.bic.szz.trace + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.trace

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Tracer +
    The Tracer class is commit tracer
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/trace/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/trace/package-tree.html new file mode 100644 index 0000000..a40ec8e --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/trace/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.bic.szz.trace Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.trace

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.bic.szz.trace.Tracer
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/trace/package-use.html b/doc/edu/handong/csee/isel/bic/szz/trace/package-use.html new file mode 100644 index 0000000..308e160 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/trace/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.trace + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.trace

+
+
No usage of edu.handong.csee.isel.bic.szz.trace
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/GitUtils.html b/doc/edu/handong/csee/isel/bic/szz/util/GitUtils.html new file mode 100644 index 0000000..43bedfe --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/GitUtils.html @@ -0,0 +1,521 @@ + + + + + +GitUtils + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class GitUtils

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
+
+
public class GitUtils
+extends java.lang.Object
+
The GitUtils class
+ collects of functions necessary to execute AG_SZZ
+
+
Version:
+
1.0
+
Author:
+
SJ, JY
+
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static org.eclipse.jgit.diff.DiffAlgorithmdiffAlgorithm 
    static org.eclipse.jgit.diff.RawTextComparatordiffComparator 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    GitUtils() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static RevsWithPathcollectRevsWithSpecificPath​(java.util.List<PathRevision> pathRevisions, +java.util.List<java.lang.String> targetPaths) +
    Collect commit list related specific path
    +
    static java.util.List<PathRevision>configurePathRevisionList​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> commits) +
    Get the path where change exists for all commit lists.
    +
    static java.util.List<org.eclipse.jgit.diff.DiffEntry>diff​(org.eclipse.jgit.lib.Repository repo, +org.eclipse.jgit.revwalk.RevTree parentTree, +org.eclipse.jgit.revwalk.RevTree childTree) +
    Conduct diff using diffAlgorithm that is MYERS Algorithm and diffComparator that is white space ignore all.
    +
    static java.lang.StringfetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) 
    static java.lang.StringfetchBlob​(org.eclipse.jgit.lib.Repository repo, +org.eclipse.jgit.revwalk.RevCommit commit, +java.lang.String path) +
    get the file content using path info and commit info
    +
    static java.util.ArrayList<org.eclipse.jgit.revwalk.RevCommit>getBFCList​(java.util.List<java.lang.String> issueKeys, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> revs) 
    static java.util.ArrayList<org.eclipse.jgit.revwalk.RevCommit>getBFCLIST​(java.util.List<java.lang.String> BFCID, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> revs) 
    static org.eclipse.jgit.diff.EditListgetEditListFromDiff​(java.lang.String file1, +java.lang.String file2) 
    static java.util.List<org.eclipse.jgit.revwalk.RevCommit>getRevs​(org.eclipse.jgit.api.Git git) 
    static java.util.List<java.lang.String>getTargetPaths​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> BFCList) +
    collect target path from bug fixing commit list.
    + only java file path and file with change.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      diffAlgorithm

      +
      public static org.eclipse.jgit.diff.DiffAlgorithm diffAlgorithm
      +
      +
    • +
    • +
      +

      diffComparator

      +
      public static org.eclipse.jgit.diff.RawTextComparator diffComparator
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      GitUtils

      +
      public GitUtils()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getEditListFromDiff

      +
      public static org.eclipse.jgit.diff.EditList getEditListFromDiff​(java.lang.String file1, +java.lang.String file2)
      +
      +
    • +
    • +
      +

      diff

      +
      public static java.util.List<org.eclipse.jgit.diff.DiffEntry> diff​(org.eclipse.jgit.lib.Repository repo, +org.eclipse.jgit.revwalk.RevTree parentTree, +org.eclipse.jgit.revwalk.RevTree childTree) + throws java.io.IOException
      +
      Conduct diff using diffAlgorithm that is MYERS Algorithm and diffComparator that is white space ignore all.
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      parentTree - parent commit tree
      +
      childTree - child commit tree
      +
      Returns:
      +
      diffs file path with change
      +
      Throws:
      +
      java.io.IOException - repository open faild
      +
      +
      +
    • +
    • +
      +

      configurePathRevisionList

      +
      public static java.util.List<PathRevision> configurePathRevisionList​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> commits) + throws java.io.IOException
      +
      Get the path where change exists for all commit lists.
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      commits - all commit list from input github project
      +
      Returns:
      +
      paths java file path with change
      +
      Throws:
      +
      java.io.IOException - IOException
      +
      +
      +
    • +
    • +
      +

      collectRevsWithSpecificPath

      +
      public static RevsWithPath collectRevsWithSpecificPath​(java.util.List<PathRevision> pathRevisions, +java.util.List<java.lang.String> targetPaths)
      +
      Collect commit list related specific path
      +
      +
      Parameters:
      +
      pathRevisions - information commit and path
      +
      targetPaths - target Paths
      +
      Returns:
      +
      revsWithPath revs With Path
      +
      +
      +
    • +
    • +
      +

      fetchBlob

      +
      public static java.lang.String fetchBlob​(org.eclipse.jgit.lib.Repository repo, +org.eclipse.jgit.revwalk.RevCommit commit, +java.lang.String path) + throws org.eclipse.jgit.errors.LargeObjectException, +org.eclipse.jgit.errors.MissingObjectException, +java.io.IOException
      +
      get the file content using path info and commit info
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      commit - commit
      +
      path - target path
      +
      Returns:
      +
      string All file content
      +
      Throws:
      +
      org.eclipse.jgit.errors.LargeObjectException - LargeObjectException
      +
      org.eclipse.jgit.errors.MissingObjectException - MissingObjectException
      +
      java.io.IOException - IOException
      +
      +
      +
    • +
    • +
      +

      fetchBlob

      +
      public static java.lang.String fetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) + throws org.eclipse.jgit.errors.RevisionSyntaxException, +org.eclipse.jgit.errors.AmbiguousObjectException, +org.eclipse.jgit.errors.IncorrectObjectTypeException, +java.io.IOException
      +
      +
      Throws:
      +
      org.eclipse.jgit.errors.RevisionSyntaxException
      +
      org.eclipse.jgit.errors.AmbiguousObjectException
      +
      org.eclipse.jgit.errors.IncorrectObjectTypeException
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      getRevs

      +
      public static java.util.List<org.eclipse.jgit.revwalk.RevCommit> getRevs​(org.eclipse.jgit.api.Git git) + throws org.eclipse.jgit.api.errors.NoHeadException, +org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      Throws:
      +
      org.eclipse.jgit.api.errors.NoHeadException
      +
      org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      +
    • +
    • +
      +

      getBFCList

      +
      public static java.util.ArrayList<org.eclipse.jgit.revwalk.RevCommit> getBFCList​(java.util.List<java.lang.String> issueKeys, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> revs)
      +
      +
    • +
    • +
      +

      getBFCLIST

      +
      public static java.util.ArrayList<org.eclipse.jgit.revwalk.RevCommit> getBFCLIST​(java.util.List<java.lang.String> BFCID, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> revs)
      +
      +
    • +
    • +
      +

      getTargetPaths

      +
      public static java.util.List<java.lang.String> getTargetPaths​(org.eclipse.jgit.lib.Repository repo, +java.util.List<org.eclipse.jgit.revwalk.RevCommit> BFCList) + throws java.io.IOException
      +
      collect target path from bug fixing commit list.
      + only java file path and file with change.
      +
      +
      Parameters:
      +
      repo - Github repository
      +
      BFCList - bug fixing list
      +
      Returns:
      +
      targetPaths path from bfc list
      +
      Throws:
      +
      java.io.IOException - IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/JavaASTParser.html b/doc/edu/handong/csee/isel/bic/szz/util/JavaASTParser.html new file mode 100644 index 0000000..521830f --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/JavaASTParser.html @@ -0,0 +1,487 @@ + + + + + +JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class JavaASTParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
+
+
+
public class JavaASTParser
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    JavaASTParser​(java.lang.String source) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation>getClassInstanceCreations() 
    org.eclipse.jdt.core.dom.CompilationUnitgetCompilationUnit() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression>getConditionalExpressions() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess>getFieldAccesses() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration>getFieldDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement>getForStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement>getIfStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration>getImportDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression>getInfixExpressions() 
    intgetLineNum​(int startPosition) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration>getMethodDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation>getMethodInvocations() 
    org.eclipse.jdt.core.dom.PackageDeclarationgetPackageDeclaration() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName>getSimpleNames() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration>getSingleVariableDeclarations() 
    java.lang.StringgetStringCode() 
    java.lang.StringgetType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration>getTypeDeclarations() 
    java.lang.StringgetTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment>getVariableDeclarationFragments() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement>getWhileStatements() 
    voidpraseJavaFile​(java.lang.String source) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      JavaASTParser

      +
      public JavaASTParser​(java.lang.String source)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getLineNum

      +
      public int getLineNum​(int startPosition)
      +
      +
    • +
    • +
      +

      getStringCode

      +
      public java.lang.String getStringCode()
      +
      +
    • +
    • +
      +

      getCompilationUnit

      +
      public org.eclipse.jdt.core.dom.CompilationUnit getCompilationUnit()
      +
      +
    • +
    • +
      +

      praseJavaFile

      +
      public void praseJavaFile​(java.lang.String source)
      +
      +
    • +
    • +
      +

      getMethodDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration> getMethodDeclarations()
      +
      +
    • +
    • +
      +

      getMethodInvocations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation> getMethodInvocations()
      +
      +
    • +
    • +
      +

      getTypeDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration> getTypeDeclarations()
      +
      +
    • +
    • +
      +

      getFieldDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration> getFieldDeclarations()
      +
      +
    • +
    • +
      +

      getFieldAccesses

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess> getFieldAccesses()
      +
      +
    • +
    • +
      +

      getIfStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement> getIfStatements()
      +
      +
    • +
    • +
      +

      getForStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement> getForStatements()
      +
      +
    • +
    • +
      +

      getWhileStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement> getWhileStatements()
      +
      +
    • +
    • +
      +

      getInfixExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression> getInfixExpressions()
      +
      +
    • +
    • +
      +

      getSimpleNames

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName> getSimpleNames()
      +
      +
    • +
    • +
      +

      getVariableDeclarationFragments

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment> getVariableDeclarationFragments()
      +
      +
    • +
    • +
      +

      getClassInstanceCreations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation> getClassInstanceCreations()
      +
      +
    • +
    • +
      +

      getSingleVariableDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration> getSingleVariableDeclarations()
      +
      +
    • +
    • +
      +

      getImportDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration> getImportDeclarations()
      +
      +
    • +
    • +
      +

      getConditionalExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression> getConditionalExpressions()
      +
      +
    • +
    • +
      +

      getPackageDeclaration

      +
      public org.eclipse.jdt.core.dom.PackageDeclaration getPackageDeclaration()
      +
      +
    • +
    • +
      +

      getType

      +
      public java.lang.String getType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId)
      +
      +
    • +
    • +
      +

      getTypeOfSimpleName

      +
      public java.lang.String getTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/Utils.html b/doc/edu/handong/csee/isel/bic/szz/util/Utils.html new file mode 100644 index 0000000..178877f --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/Utils.html @@ -0,0 +1,299 @@ + + + + + +Utils + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Utils

+
+
+
java.lang.Object +
edu.handong.csee.isel.bic.szz.util.Utils
+
+
+
+
public class Utils
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Utils() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.lang.StringgetStringDateTimeFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static booleanisWhitespace​(java.lang.String str) 
    static java.lang.StringmergeLineList​(java.util.List<Line> list) 
    static java.lang.StringremoveComments​(java.lang.String code) 
    static voidstoreOutputFile​(java.lang.String GIT_URL, +java.util.List<BICInfo> BICLines) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Utils

      +
      public Utils()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      isWhitespace

      +
      public static boolean isWhitespace​(java.lang.String str)
      +
      +
    • +
    • +
      +

      mergeLineList

      +
      public static java.lang.String mergeLineList​(java.util.List<Line> list)
      +
      +
    • +
    • +
      +

      removeComments

      +
      public static java.lang.String removeComments​(java.lang.String code)
      +
      +
    • +
    • +
      +

      getStringDateTimeFromCommitTime

      +
      public static java.lang.String getStringDateTimeFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    • +
      +

      storeOutputFile

      +
      public static void storeOutputFile​(java.lang.String GIT_URL, +java.util.List<BICInfo> BICLines) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/class-use/GitUtils.html b/doc/edu/handong/csee/isel/bic/szz/util/class-use/GitUtils.html new file mode 100644 index 0000000..d509841 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/class-use/GitUtils.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.util.GitUtils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.util.GitUtils

+
+
No usage of edu.handong.csee.isel.bic.szz.util.GitUtils
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/class-use/JavaASTParser.html b/doc/edu/handong/csee/isel/bic/szz/util/class-use/JavaASTParser.html new file mode 100644 index 0000000..a3855ca --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/class-use/JavaASTParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.util.JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.util.JavaASTParser

+
+
No usage of edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/class-use/Utils.html b/doc/edu/handong/csee/isel/bic/szz/util/class-use/Utils.html new file mode 100644 index 0000000..602b4d3 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/class-use/Utils.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.bic.szz.util.Utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.bic.szz.util.Utils

+
+
No usage of edu.handong.csee.isel.bic.szz.util.Utils
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/package-summary.html b/doc/edu/handong/csee/isel/bic/szz/util/package-summary.html new file mode 100644 index 0000000..62254d7 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/package-summary.html @@ -0,0 +1,134 @@ + + + + + +edu.handong.csee.isel.bic.szz.util + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.bic.szz.util

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    GitUtils +
    The GitUtils class
    + collects of functions necessary to execute AG_SZZ
    +
    JavaASTParser 
    Utils 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/package-tree.html b/doc/edu/handong/csee/isel/bic/szz/util/package-tree.html new file mode 100644 index 0000000..102ca22 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/package-tree.html @@ -0,0 +1,116 @@ + + + + + +edu.handong.csee.isel.bic.szz.util Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.bic.szz.util

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.bic.szz.util.GitUtils
    • +
    • edu.handong.csee.isel.bic.szz.util.JavaASTParser
    • +
    • edu.handong.csee.isel.bic.szz.util.Utils
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/bic/szz/util/package-use.html b/doc/edu/handong/csee/isel/bic/szz/util/package-use.html new file mode 100644 index 0000000..63c9911 --- /dev/null +++ b/doc/edu/handong/csee/isel/bic/szz/util/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.bic.szz.util + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.bic.szz.util

+
+
No usage of edu.handong.csee.isel.bic.szz.util
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/class-use/JavaASTParser.html b/doc/edu/handong/csee/isel/class-use/JavaASTParser.html new file mode 100644 index 0000000..4817faf --- /dev/null +++ b/doc/edu/handong/csee/isel/class-use/JavaASTParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.JavaASTParser

+
+
No usage of edu.handong.csee.isel.JavaASTParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/class-use/Main.html b/doc/edu/handong/csee/isel/class-use/Main.html new file mode 100644 index 0000000..1298acd --- /dev/null +++ b/doc/edu/handong/csee/isel/class-use/Main.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.Main + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.Main

+
+
No usage of edu.handong.csee.isel.Main
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/class-use/Utils.html b/doc/edu/handong/csee/isel/class-use/Utils.html new file mode 100644 index 0000000..250cd66 --- /dev/null +++ b/doc/edu/handong/csee/isel/class-use/Utils.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.Utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.Utils

+
+
No usage of edu.handong.csee.isel.Utils
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/CSVInfo.html b/doc/edu/handong/csee/isel/data/CSVInfo.html new file mode 100644 index 0000000..fe5e602 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/CSVInfo.html @@ -0,0 +1,202 @@ + + + + + +CSVInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface CSVInfo

+
+
+
+
+
All Known Implementing Classes:
+
BICInfo, MetricInfo, PatchInfo
+
+
+
public interface CSVInfo
+
+
+
    + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.String[]getHeaders() 
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getHeaders

      +
      java.lang.String[] getHeaders()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/Input.Mode.html b/doc/edu/handong/csee/isel/data/Input.Mode.html new file mode 100644 index 0000000..7759a78 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/Input.Mode.html @@ -0,0 +1,331 @@ + + + + + +Input.Mode + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Input.Mode

+
+
+
java.lang.Object +
java.lang.Enum<Input.Mode> +
edu.handong.csee.isel.data.Input.Mode
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Comparable<Input.Mode>, java.lang.constant.Constable
+
+
+
Enclosing class:
+
Input
+
+
+
public static enum Input.Mode
+extends java.lang.Enum<Input.Mode>
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    + + +java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    +
    +
  • + +
  • +
    + + +

    Enum Constant Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Enum Constants 
    Enum ConstantDescription
    GITHUB 
    JIRA 
    KEYWORD 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static Input.ModevalueOf​(java.lang.String name) +
    Returns the enum constant of this type with the specified name.
    +
    static Input.Mode[]values() +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Enum

    + + +compareTo, describeConstable, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Enum Constant Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Input.Mode[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Input.Mode valueOf​(java.lang.String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      +
      java.lang.NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/Input.SZZMode.html b/doc/edu/handong/csee/isel/data/Input.SZZMode.html new file mode 100644 index 0000000..8c08a94 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/Input.SZZMode.html @@ -0,0 +1,321 @@ + + + + + +Input.SZZMode + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Input.SZZMode

+
+
+
java.lang.Object +
java.lang.Enum<Input.SZZMode> +
edu.handong.csee.isel.data.Input.SZZMode
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Comparable<Input.SZZMode>, java.lang.constant.Constable
+
+
+
Enclosing class:
+
Input
+
+
+
public static enum Input.SZZMode
+extends java.lang.Enum<Input.SZZMode>
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    + + +java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    +
    +
  • + +
  • +
    + + +

    Enum Constant Summary

    +
    + + + + + + + + + + + + + + + + + + +
    Enum Constants 
    Enum ConstantDescription
    AGSZZ 
    BSZZ 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static Input.SZZModevalueOf​(java.lang.String name) +
    Returns the enum constant of this type with the specified name.
    +
    static Input.SZZMode[]values() +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Enum

    + + +compareTo, describeConstable, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Enum Constant Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Input.SZZMode[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Input.SZZMode valueOf​(java.lang.String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      +
      java.lang.NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/Input.TaskType.html b/doc/edu/handong/csee/isel/data/Input.TaskType.html new file mode 100644 index 0000000..40081b4 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/Input.TaskType.html @@ -0,0 +1,341 @@ + + + + + +Input.TaskType + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Input.TaskType

+
+
+
java.lang.Object +
java.lang.Enum<Input.TaskType> +
edu.handong.csee.isel.data.Input.TaskType
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Comparable<Input.TaskType>, java.lang.constant.Constable
+
+
+
Enclosing class:
+
Input
+
+
+
public static enum Input.TaskType
+extends java.lang.Enum<Input.TaskType>
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    + + +java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    +
    +
  • + +
  • +
    + + +

    Enum Constant Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enum Constants 
    Enum ConstantDescription
    BIC 
    DEVELOPERMETRIC 
    METRIC 
    PATCH 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static Input.TaskTypevalueOf​(java.lang.String name) +
    Returns the enum constant of this type with the specified name.
    +
    static Input.TaskType[]values() +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Enum

    + + +compareTo, describeConstable, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    +
    +

    Methods inherited from class java.lang.Object

    + + +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Enum Constant Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Input.TaskType[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Input.TaskType valueOf​(java.lang.String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      +
      java.lang.NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/Input.html b/doc/edu/handong/csee/isel/data/Input.html new file mode 100644 index 0000000..d93dd28 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/Input.html @@ -0,0 +1,472 @@ + + + + + +Input + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Input

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.Input
+
+
+
+
public class Input
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Nested Class Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Nested Classes 
    Modifier and TypeClassDescription
    static class Input.Mode 
    static class Input.SZZMode 
    static class Input.TaskType 
    +
    +
    +
  • + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static java.lang.StringBICpath 
    static java.lang.StringendDate 
    static java.lang.StringgitDirectory 
    static java.lang.StringgitRemoteURI 
    static java.lang.StringgitURL 
    static java.lang.StringissueKeyWord 
    static java.lang.StringjiraProjectKey 
    static java.lang.StringjiraURL 
    static java.lang.Stringlabel 
    static intmaxSize 
    static intminSize 
    static Input.Modemode 
    static java.lang.StringoutPath 
    static intpercent 
    static java.lang.StringprojectName 
    static java.lang.StringstartDate 
    static Input.SZZModeszzMode 
    static Input.TaskTypetaskType 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Input() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      gitURL

      +
      public static java.lang.String gitURL
      +
      +
    • +
    • +
      +

      outPath

      +
      public static java.lang.String outPath
      +
      +
    • +
    • +
      +

      gitRemoteURI

      +
      public static java.lang.String gitRemoteURI
      +
      +
    • +
    • +
      +

      jiraProjectKey

      +
      public static java.lang.String jiraProjectKey
      +
      +
    • +
    • +
      +

      jiraURL

      +
      public static java.lang.String jiraURL
      +
      +
    • +
    • +
      +

      projectName

      +
      public static java.lang.String projectName
      +
      +
    • +
    • +
      +

      maxSize

      +
      public static int maxSize
      +
      +
    • +
    • +
      +

      minSize

      +
      public static int minSize
      +
      +
    • +
    • +
      +

      label

      +
      public static java.lang.String label
      +
      +
    • +
    • +
      +

      taskType

      +
      public static Input.TaskType taskType
      +
      +
    • +
    • +
      +

      mode

      +
      public static Input.Mode mode
      +
      +
    • +
    • +
      +

      szzMode

      +
      public static Input.SZZMode szzMode
      +
      +
    • +
    • +
      +

      issueKeyWord

      +
      public static java.lang.String issueKeyWord
      +
      +
    • +
    • +
      +

      BICpath

      +
      public static java.lang.String BICpath
      +
      +
    • +
    • +
      +

      gitDirectory

      +
      public static java.lang.String gitDirectory
      +
      +
    • +
    • +
      +

      startDate

      +
      public static java.lang.String startDate
      +
      +
    • +
    • +
      +

      endDate

      +
      public static java.lang.String endDate
      +
      +
    • +
    • +
      +

      percent

      +
      public static int percent
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Input

      +
      public Input()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/class-use/CSVInfo.html b/doc/edu/handong/csee/isel/data/class-use/CSVInfo.html new file mode 100644 index 0000000..70029c9 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/class-use/CSVInfo.html @@ -0,0 +1,382 @@ + + + + + +Uses of Interface edu.handong.csee.isel.data.CSVInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
edu.handong.csee.isel.data.CSVInfo

+
+
+ +
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/class-use/Input.Mode.html b/doc/edu/handong/csee/isel/data/class-use/Input.Mode.html new file mode 100644 index 0000000..4442b42 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/class-use/Input.Mode.html @@ -0,0 +1,176 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.Input.Mode + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.Input.Mode

+
+
+
+ + + + + + + + + + + + + + +
Packages that use Input.Mode 
PackageDescription
edu.handong.csee.isel.data 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/class-use/Input.SZZMode.html b/doc/edu/handong/csee/isel/data/class-use/Input.SZZMode.html new file mode 100644 index 0000000..fc82627 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/class-use/Input.SZZMode.html @@ -0,0 +1,176 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.Input.SZZMode + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.Input.SZZMode

+
+
+
+ + + + + + + + + + + + + + +
Packages that use Input.SZZMode 
PackageDescription
edu.handong.csee.isel.data 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/class-use/Input.TaskType.html b/doc/edu/handong/csee/isel/data/class-use/Input.TaskType.html new file mode 100644 index 0000000..4fd60f1 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/class-use/Input.TaskType.html @@ -0,0 +1,176 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.Input.TaskType + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.Input.TaskType

+
+
+
+ + + + + + + + + + + + + + +
Packages that use Input.TaskType 
PackageDescription
edu.handong.csee.isel.data 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/class-use/Input.html b/doc/edu/handong/csee/isel/data/class-use/Input.html new file mode 100644 index 0000000..8373f77 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/class-use/Input.html @@ -0,0 +1,177 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.Input + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.Input

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use Input 
PackageDescription
edu.handong.csee.isel.data.processor.input 
edu.handong.csee.isel.data.processor.input.converter 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/BICInfo.html b/doc/edu/handong/csee/isel/data/csv/BICInfo.html new file mode 100644 index 0000000..1ce7f18 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/BICInfo.html @@ -0,0 +1,678 @@ + + + + + +BICInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BICInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.csv.BICInfo
+
+
+
+
All Implemented Interfaces:
+
CSVInfo, java.lang.Comparable<BICInfo>
+
+
+
public class BICInfo
+extends java.lang.Object
+implements java.lang.Comparable<BICInfo>, CSVInfo
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static java.lang.String[]headers 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BICInfo() 
    BICInfo​(java.lang.String changeInfo, +boolean forSenitizer) 
    BICInfo​(java.lang.String BISha1, +java.lang.String biPath, +java.lang.String FixSha1, +java.lang.String path, +java.lang.String BIDate, +java.lang.String FixDate, +int lineNum, +int lineNumInPrevFixRev, +java.lang.String line, +boolean isAddedLine) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intcompareTo​(BICInfo o) 
    booleanequals​(BICInfo compareWith) 
    java.lang.StringgetBIDate() 
    java.lang.StringgetBIPath() 
    java.lang.StringgetBISha1() 
    org.eclipse.jgit.diff.EditgetEdit() 
    org.eclipse.jgit.diff.EditListgetEditListFromDiff() 
    java.lang.StringgetFilteredDueTo() 
    java.lang.StringgetFixDate() 
    java.lang.StringgetFixSha1() 
    java.lang.String[]getHeaders() 
    booleangetIsAddedLine() 
    java.lang.StringgetLine() 
    intgetLineNum() 
    intgetLineNumInPrevFixRev() 
    java.lang.StringgetPath() 
    java.lang.StringgetRecord() 
    java.lang.StringgetRecordWithoutLineNumInPrevFix() 
    booleanisNoise() 
    voidsetBIDate​(java.lang.String date) 
    voidsetBIPath​(java.lang.String biPath) 
    voidsetBISha1​(java.lang.String biSha1) 
    voidsetEdit​(org.eclipse.jgit.diff.Edit edit) 
    voidsetEditList​(org.eclipse.jgit.diff.EditList editListFromDiff) 
    voidsetFilteredDueTo​(java.lang.String filterName) 
    voidsetFixDate​(java.lang.String date) 
    voidsetIsNoise​(boolean isNoise) 
    voidsetLineNum​(java.lang.Integer lineNum) 
    voidsetLineNumInPrevFixRev​(int lineNum) 
    voidsetPath​(java.lang.String path) 
    java.lang.StringtoString() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      headers

      +
      public static final java.lang.String[] headers
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      BICInfo

      +
      public BICInfo()
      +
      +
    • +
    • +
      +

      BICInfo

      +
      public BICInfo​(java.lang.String BISha1, +java.lang.String biPath, +java.lang.String FixSha1, +java.lang.String path, +java.lang.String BIDate, +java.lang.String FixDate, +int lineNum, +int lineNumInPrevFixRev, +java.lang.String line, +boolean isAddedLine)
      +
      +
    • +
    • +
      +

      BICInfo

      +
      public BICInfo​(java.lang.String changeInfo, +boolean forSenitizer)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getHeaders

      +
      public java.lang.String[] getHeaders()
      +
      +
      Specified by:
      +
      getHeaders in interface CSVInfo
      +
      +
      +
    • +
    • +
      +

      setIsNoise

      +
      public void setIsNoise​(boolean isNoise)
      +
      +
    • +
    • +
      +

      setBIPath

      +
      public void setBIPath​(java.lang.String biPath)
      +
      +
    • +
    • +
      +

      setPath

      +
      public void setPath​(java.lang.String path)
      +
      +
    • +
    • +
      +

      setBIDate

      +
      public void setBIDate​(java.lang.String date)
      +
      +
    • +
    • +
      +

      setFixDate

      +
      public void setFixDate​(java.lang.String date)
      +
      +
    • +
    • +
      +

      setFilteredDueTo

      +
      public void setFilteredDueTo​(java.lang.String filterName)
      +
      +
    • +
    • +
      +

      isNoise

      +
      public boolean isNoise()
      +
      +
    • +
    • +
      +

      getBISha1

      +
      public java.lang.String getBISha1()
      +
      +
    • +
    • +
      +

      getBIPath

      +
      public java.lang.String getBIPath()
      +
      +
    • +
    • +
      +

      getPath

      +
      public java.lang.String getPath()
      +
      +
    • +
    • +
      +

      getFixSha1

      +
      public java.lang.String getFixSha1()
      +
      +
    • +
    • +
      +

      getBIDate

      +
      public java.lang.String getBIDate()
      +
      +
    • +
    • +
      +

      getFixDate

      +
      public java.lang.String getFixDate()
      +
      +
    • +
    • +
      +

      getLineNum

      +
      public int getLineNum()
      +
      +
    • +
    • +
      +

      getLine

      +
      public java.lang.String getLine()
      +
      +
    • +
    • +
      +

      getIsAddedLine

      +
      public boolean getIsAddedLine()
      +
      +
    • +
    • +
      +

      getFilteredDueTo

      +
      public java.lang.String getFilteredDueTo()
      +
      +
    • +
    • +
      +

      setLineNum

      +
      public void setLineNum​(java.lang.Integer lineNum)
      +
      +
    • +
    • +
      +

      setEdit

      +
      public void setEdit​(org.eclipse.jgit.diff.Edit edit)
      +
      +
    • +
    • +
      +

      setEditList

      +
      public void setEditList​(org.eclipse.jgit.diff.EditList editListFromDiff)
      +
      +
    • +
    • +
      +

      getEdit

      +
      public org.eclipse.jgit.diff.Edit getEdit()
      +
      +
    • +
    • +
      +

      getEditListFromDiff

      +
      public org.eclipse.jgit.diff.EditList getEditListFromDiff()
      +
      +
    • +
    • +
      +

      setBISha1

      +
      public void setBISha1​(java.lang.String biSha1)
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      getRecord

      +
      public java.lang.String getRecord()
      +
      +
    • +
    • +
      +

      getRecordWithoutLineNumInPrevFix

      +
      public java.lang.String getRecordWithoutLineNumInPrevFix()
      +
      +
    • +
    • +
      +

      getLineNumInPrevFixRev

      +
      public int getLineNumInPrevFixRev()
      +
      +
    • +
    • +
      +

      setLineNumInPrevFixRev

      +
      public void setLineNumInPrevFixRev​(int lineNum)
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals​(BICInfo compareWith)
      +
      +
    • +
    • +
      +

      compareTo

      +
      public int compareTo​(BICInfo o)
      +
      +
      Specified by:
      +
      compareTo in interface java.lang.Comparable<BICInfo>
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/MetricInfo.html b/doc/edu/handong/csee/isel/data/csv/MetricInfo.html new file mode 100644 index 0000000..c8b579a --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/MetricInfo.html @@ -0,0 +1,257 @@ + + + + + +MetricInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetricInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.csv.MetricInfo
+
+
+
+
All Implemented Interfaces:
+
CSVInfo
+
+
+
public class MetricInfo
+extends java.lang.Object
+implements CSVInfo
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    MetricInfo() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.String[]getHeaders() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/PatchInfo.html b/doc/edu/handong/csee/isel/data/csv/PatchInfo.html new file mode 100644 index 0000000..af6d338 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/PatchInfo.html @@ -0,0 +1,355 @@ + + + + + +PatchInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PatchInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.csv.PatchInfo
+
+
+
+
All Implemented Interfaces:
+
CSVInfo
+
+
+
public class PatchInfo
+extends java.lang.Object
+implements CSVInfo
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    java.lang.Stringauthor 
    java.lang.StringcommitMessage 
    java.lang.StringcommitName 
    java.lang.Stringdate 
    java.lang.Stringpatch 
    java.lang.Stringproject 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    PatchInfo() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.String[]getHeaders() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      project

      +
      public java.lang.String project
      +
      +
    • +
    • +
      +

      commitName

      +
      public java.lang.String commitName
      +
      +
    • +
    • +
      +

      commitMessage

      +
      public java.lang.String commitMessage
      +
      +
    • +
    • +
      +

      date

      +
      public java.lang.String date
      +
      +
    • +
    • +
      +

      author

      +
      public java.lang.String author
      +
      +
    • +
    • +
      +

      patch

      +
      public java.lang.String patch
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/class-use/BICInfo.html b/doc/edu/handong/csee/isel/data/csv/class-use/BICInfo.html new file mode 100644 index 0000000..25c3691 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/class-use/BICInfo.html @@ -0,0 +1,152 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.csv.BICInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.csv.BICInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use BICInfo 
PackageDescription
edu.handong.csee.isel.data.csv 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/class-use/MetricInfo.html b/doc/edu/handong/csee/isel/data/csv/class-use/MetricInfo.html new file mode 100644 index 0000000..d87bf65 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/class-use/MetricInfo.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.csv.MetricInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.csv.MetricInfo

+
+
No usage of edu.handong.csee.isel.data.csv.MetricInfo
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/class-use/PatchInfo.html b/doc/edu/handong/csee/isel/data/csv/class-use/PatchInfo.html new file mode 100644 index 0000000..cb3fa0b --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/class-use/PatchInfo.html @@ -0,0 +1,147 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.csv.PatchInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.csv.PatchInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use PatchInfo 
PackageDescription
edu.handong.csee.isel.data.processor 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/package-summary.html b/doc/edu/handong/csee/isel/data/csv/package-summary.html new file mode 100644 index 0000000..5508c5b --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/package-summary.html @@ -0,0 +1,131 @@ + + + + + +edu.handong.csee.isel.data.csv + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data.csv

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/package-tree.html b/doc/edu/handong/csee/isel/data/csv/package-tree.html new file mode 100644 index 0000000..4b114d7 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/package-tree.html @@ -0,0 +1,116 @@ + + + + + +edu.handong.csee.isel.data.csv Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data.csv

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.data.csv.BICInfo (implements java.lang.Comparable<T>, edu.handong.csee.isel.data.CSVInfo)
    • +
    • edu.handong.csee.isel.data.csv.MetricInfo (implements edu.handong.csee.isel.data.CSVInfo)
    • +
    • edu.handong.csee.isel.data.csv.PatchInfo (implements edu.handong.csee.isel.data.CSVInfo)
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/csv/package-use.html b/doc/edu/handong/csee/isel/data/csv/package-use.html new file mode 100644 index 0000000..11ebd59 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/csv/package-use.html @@ -0,0 +1,171 @@ + + + + + +Uses of Package edu.handong.csee.isel.data.csv + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data.csv

+
+
+
+ + + + + + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.data.csv 
PackageDescription
edu.handong.csee.isel.data.csv 
edu.handong.csee.isel.data.processor 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/package-summary.html b/doc/edu/handong/csee/isel/data/package-summary.html new file mode 100644 index 0000000..2c8efa6 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/package-summary.html @@ -0,0 +1,169 @@ + + + + + +edu.handong.csee.isel.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    CSVInfo 
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Input 
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    Input.Mode 
    Input.SZZMode 
    Input.TaskType 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/package-tree.html b/doc/edu/handong/csee/isel/data/package-tree.html new file mode 100644 index 0000000..fbf12b9 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/package-tree.html @@ -0,0 +1,136 @@ + + + + + +edu.handong.csee.isel.data Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.data.Input
    • +
    +
  • +
+
+
+

Interface Hierarchy

+
    +
  • edu.handong.csee.isel.data.CSVInfo
  • +
+
+
+

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) + +
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/package-use.html b/doc/edu/handong/csee/isel/data/package-use.html new file mode 100644 index 0000000..747a1f1 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/package-use.html @@ -0,0 +1,422 @@ + + + + + +Uses of Package edu.handong.csee.isel.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data

+
+
+ +
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/CSVMaker.html b/doc/edu/handong/csee/isel/data/processor/CSVMaker.html new file mode 100644 index 0000000..01e1cc8 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/CSVMaker.html @@ -0,0 +1,345 @@ + + + + + +CSVMaker + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CSVMaker

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.processor.CSVMaker
+
+
+
+
public class CSVMaker
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    java.lang.Stringpath 
    org.apache.commons.csv.CSVPrinterprinter 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CSVMaker() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidprint​(PatchInfo patchInfo) 
    voidprint​(java.util.List<CSVInfo> csvInfo) 
    voidsetDataType​(java.util.List<CSVInfo> csvInfoLst) 
    voidsetPath() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      printer

      +
      public org.apache.commons.csv.CSVPrinter printer
      +
      +
    • +
    • +
      +

      path

      +
      public java.lang.String path
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      CSVMaker

      +
      public CSVMaker()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setPath

      +
      public void setPath()
      +
      +
    • +
    • +
      +

      print

      +
      public void print​(PatchInfo patchInfo) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      print

      +
      public void print​(java.util.List<CSVInfo> csvInfo) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      setDataType

      +
      public void setDataType​(java.util.List<CSVInfo> csvInfoLst)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/class-use/CSVMaker.html b/doc/edu/handong/csee/isel/data/processor/class-use/CSVMaker.html new file mode 100644 index 0000000..e3a6801 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/class-use/CSVMaker.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.CSVMaker + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.CSVMaker

+
+
No usage of edu.handong.csee.isel.data.processor.CSVMaker
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/InputConverter.html b/doc/edu/handong/csee/isel/data/processor/input/InputConverter.html new file mode 100644 index 0000000..6927e5e --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/InputConverter.html @@ -0,0 +1,202 @@ + + + + + +InputConverter + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface InputConverter

+
+
+
+
+
All Known Implementing Classes:
+
CLIConverter
+
+
+
public interface InputConverter
+
+
+
    + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    InputgetInputFrom​(java.lang.String[] args) 
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/class-use/InputConverter.html b/doc/edu/handong/csee/isel/data/processor/input/class-use/InputConverter.html new file mode 100644 index 0000000..0ad9267 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/class-use/InputConverter.html @@ -0,0 +1,147 @@ + + + + + +Uses of Interface edu.handong.csee.isel.data.processor.input.InputConverter + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
edu.handong.csee.isel.data.processor.input.InputConverter

+
+
+
+ + + + + + + + + + + + + + +
Packages that use InputConverter 
PackageDescription
edu.handong.csee.isel.data.processor.input.converter 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/BICCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/BICCommand.html new file mode 100644 index 0000000..3d1ebf9 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/BICCommand.html @@ -0,0 +1,257 @@ + + + + + +BICCommand + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.command.BICCommand
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class BICCommand
+extends java.lang.Object
+implements java.lang.Runnable
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BICCommand() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.html new file mode 100644 index 0000000..7919019 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/DeveloperMetricCommand.html @@ -0,0 +1,257 @@ + + + + + +DeveloperMetricCommand + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class DeveloperMetricCommand

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class DeveloperMetricCommand
+extends java.lang.Object
+implements java.lang.Runnable
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    DeveloperMetricCommand() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/MetricCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/MetricCommand.html new file mode 100644 index 0000000..73b2e3c --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/MetricCommand.html @@ -0,0 +1,257 @@ + + + + + +MetricCommand + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetricCommand

+
+
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.command.MetricCommand
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class MetricCommand
+extends java.lang.Object
+implements java.lang.Runnable
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    MetricCommand() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/PatchCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/PatchCommand.html new file mode 100644 index 0000000..b931973 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/PatchCommand.html @@ -0,0 +1,257 @@ + + + + + +PatchCommand + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.command.PatchCommand
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class PatchCommand
+extends java.lang.Object
+implements java.lang.Runnable
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    PatchCommand() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/Task.html b/doc/edu/handong/csee/isel/data/processor/input/command/Task.html new file mode 100644 index 0000000..dd70549 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/Task.html @@ -0,0 +1,257 @@ + + + + + +Task + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.command.Task
+
+
+
+
All Implemented Interfaces:
+
java.lang.Runnable
+
+
+
public class Task
+extends java.lang.Object
+implements java.lang.Runnable
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Task() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidrun() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Task

      +
      public Task()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      run

      +
      public void run()
      +
      +
      Specified by:
      +
      run in interface java.lang.Runnable
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/class-use/BICCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/BICCommand.html new file mode 100644 index 0000000..a2b9e9e --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/BICCommand.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.command.BICCommand + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.command.BICCommand

+
+
No usage of edu.handong.csee.isel.data.processor.input.command.BICCommand
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/class-use/DeveloperMetricCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/DeveloperMetricCommand.html new file mode 100644 index 0000000..c4c1f28 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/DeveloperMetricCommand.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand

+
+
No usage of edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/class-use/MetricCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/MetricCommand.html new file mode 100644 index 0000000..af12462 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/MetricCommand.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.command.MetricCommand + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.command.MetricCommand

+
+
No usage of edu.handong.csee.isel.data.processor.input.command.MetricCommand
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/class-use/PatchCommand.html b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/PatchCommand.html new file mode 100644 index 0000000..5d84443 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/PatchCommand.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.command.PatchCommand + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.command.PatchCommand

+
+
No usage of edu.handong.csee.isel.data.processor.input.command.PatchCommand
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/class-use/Task.html b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/Task.html new file mode 100644 index 0000000..16c9e4f --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/class-use/Task.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.command.Task + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.command.Task

+
+
No usage of edu.handong.csee.isel.data.processor.input.command.Task
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/package-summary.html b/doc/edu/handong/csee/isel/data/processor/input/command/package-summary.html new file mode 100644 index 0000000..c681762 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/package-summary.html @@ -0,0 +1,139 @@ + + + + + +edu.handong.csee.isel.data.processor.input.command + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data.processor.input.command

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/package-tree.html b/doc/edu/handong/csee/isel/data/processor/input/command/package-tree.html new file mode 100644 index 0000000..97a1c69 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/package-tree.html @@ -0,0 +1,118 @@ + + + + + +edu.handong.csee.isel.data.processor.input.command Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data.processor.input.command

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.data.processor.input.command.BICCommand (implements java.lang.Runnable)
    • +
    • edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand (implements java.lang.Runnable)
    • +
    • edu.handong.csee.isel.data.processor.input.command.MetricCommand (implements java.lang.Runnable)
    • +
    • edu.handong.csee.isel.data.processor.input.command.PatchCommand (implements java.lang.Runnable)
    • +
    • edu.handong.csee.isel.data.processor.input.command.Task (implements java.lang.Runnable)
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/command/package-use.html b/doc/edu/handong/csee/isel/data/processor/input/command/package-use.html new file mode 100644 index 0000000..ec2ca17 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/command/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.data.processor.input.command + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data.processor.input.command

+
+
No usage of edu.handong.csee.isel.data.processor.input.command
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.html b/doc/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.html new file mode 100644 index 0000000..6ea24a9 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/converter/CLIConverter.html @@ -0,0 +1,268 @@ + + + + + +CLIConverter + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
java.lang.Object +
edu.handong.csee.isel.data.processor.input.converter.CLIConverter
+
+
+
+
All Implemented Interfaces:
+
InputConverter
+
+
+
public class CLIConverter
+extends java.lang.Object
+implements InputConverter
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CLIConverter() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    InputgetInputFrom​(java.lang.String[] args) 
    static java.lang.StringgetProjectName​(java.lang.String gitURI) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/converter/class-use/CLIConverter.html b/doc/edu/handong/csee/isel/data/processor/input/converter/class-use/CLIConverter.html new file mode 100644 index 0000000..995b523 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/converter/class-use/CLIConverter.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.data.processor.input.converter.CLIConverter + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.data.processor.input.converter.CLIConverter

+
+
No usage of edu.handong.csee.isel.data.processor.input.converter.CLIConverter
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/converter/package-summary.html b/doc/edu/handong/csee/isel/data/processor/input/converter/package-summary.html new file mode 100644 index 0000000..14e71e8 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/converter/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.data.processor.input.converter + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data.processor.input.converter

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CLIConverter 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/converter/package-tree.html b/doc/edu/handong/csee/isel/data/processor/input/converter/package-tree.html new file mode 100644 index 0000000..0409b27 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/converter/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.data.processor.input.converter Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data.processor.input.converter

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.data.processor.input.converter.CLIConverter (implements edu.handong.csee.isel.data.processor.input.InputConverter)
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/converter/package-use.html b/doc/edu/handong/csee/isel/data/processor/input/converter/package-use.html new file mode 100644 index 0000000..336b4bd --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/converter/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.data.processor.input.converter + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data.processor.input.converter

+
+
No usage of edu.handong.csee.isel.data.processor.input.converter
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/package-summary.html b/doc/edu/handong/csee/isel/data/processor/input/package-summary.html new file mode 100644 index 0000000..a6427a6 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.data.processor.input + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data.processor.input

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    InputConverter 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/package-tree.html b/doc/edu/handong/csee/isel/data/processor/input/package-tree.html new file mode 100644 index 0000000..3d7dc9a --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/package-tree.html @@ -0,0 +1,110 @@ + + + + + +edu.handong.csee.isel.data.processor.input Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data.processor.input

+Package Hierarchies: + +
+
+
+

Interface Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/input/package-use.html b/doc/edu/handong/csee/isel/data/processor/input/package-use.html new file mode 100644 index 0000000..505aa1a --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/input/package-use.html @@ -0,0 +1,144 @@ + + + + + +Uses of Package edu.handong.csee.isel.data.processor.input + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data.processor.input

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.data.processor.input 
PackageDescription
edu.handong.csee.isel.data.processor.input.converter 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/package-summary.html b/doc/edu/handong/csee/isel/data/processor/package-summary.html new file mode 100644 index 0000000..58e345f --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.data.processor + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.data.processor

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CSVMaker 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/package-tree.html b/doc/edu/handong/csee/isel/data/processor/package-tree.html new file mode 100644 index 0000000..74bdb65 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.data.processor Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.data.processor

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • edu.handong.csee.isel.data.processor.CSVMaker
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/data/processor/package-use.html b/doc/edu/handong/csee/isel/data/processor/package-use.html new file mode 100644 index 0000000..963ebf3 --- /dev/null +++ b/doc/edu/handong/csee/isel/data/processor/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.data.processor + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.data.processor

+
+
No usage of edu.handong.csee.isel.data.processor
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/MetricCollector.html b/doc/edu/handong/csee/isel/metric/MetricCollector.html new file mode 100644 index 0000000..bf045aa --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/MetricCollector.html @@ -0,0 +1,224 @@ + + + + + +MetricCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface MetricCollector

+
+
+
+
+
All Known Implementing Classes:
+
CMetricCollector
+
+
+
public interface MetricCollector
+
+
+
    + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.io.FilecollectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetBIC​(java.util.List<java.lang.String> bfcList) 
    voidsetMidDate​(java.lang.String midDate) 
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      collectFrom

      +
      java.io.File collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
    • +
    • +
      +

      setBIC

      +
      void setBIC​(java.util.List<java.lang.String> bfcList)
      +
      +
    • +
    • +
      +

      setMidDate

      +
      void setMidDate​(java.lang.String midDate)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/class-use/MetricCollector.html b/doc/edu/handong/csee/isel/metric/class-use/MetricCollector.html new file mode 100644 index 0000000..baa524f --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/class-use/MetricCollector.html @@ -0,0 +1,147 @@ + + + + + +Uses of Interface edu.handong.csee.isel.metric.MetricCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
edu.handong.csee.isel.metric.MetricCollector

+
+
+
+ + + + + + + + + + + + + + +
Packages that use MetricCollector 
PackageDescription
edu.handong.csee.isel.metric.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/ArffHelper.html b/doc/edu/handong/csee/isel/metric/collector/ArffHelper.html new file mode 100644 index 0000000..bbddd75 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/ArffHelper.html @@ -0,0 +1,396 @@ + + + + + +ArffHelper + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ArffHelper

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.ArffHelper
+
+
+
+
public class ArffHelper
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    ArffHelper() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.io.FilegetArffFromDirectory​(java.lang.String bowDirectoryPath) 
    java.io.FilegetBuggyDirectory() 
    java.io.FilegetCleanDirectory() 
    java.util.ArrayList<java.lang.String>getKeyOrder() 
    java.io.FilegetMergedBOWArffBetween​(BagOfWordsCollector bowCollector, +CharacteristicVectorCollector cVectorCollector) 
    java.lang.StringgetMergedDirectoryPath() 
    static voidmain​(java.lang.String[] args) 
    java.io.FilemakeMergedArff​(java.io.File arff1, +java.io.File arff2, +java.util.List<java.lang.String> keyOrder) 
    java.io.FilemakeMergedDeveloperHistoryArff​(java.io.File arff1, +java.io.File arff2, +java.util.List<java.lang.String> keyOrder, +java.lang.String midDate) 
    voidsetOutPath​(java.lang.String outPath) 
    voidsetProjectName​(java.lang.String projectName) 
    voidsetReferencePath​(java.lang.String referencePath) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setProjectName

      +
      public void setProjectName​(java.lang.String projectName)
      +
      +
    • +
    • +
      +

      setOutPath

      +
      public void setOutPath​(java.lang.String outPath)
      +
      +
    • +
    • +
      +

      getArffFromDirectory

      +
      public java.io.File getArffFromDirectory​(java.lang.String bowDirectoryPath)
      +
      +
    • +
    • +
      +

      getMergedBOWArffBetween

      +
      public java.io.File getMergedBOWArffBetween​(BagOfWordsCollector bowCollector, +CharacteristicVectorCollector cVectorCollector)
      +
      +
    • +
    • +
      +

      setReferencePath

      +
      public void setReferencePath​(java.lang.String referencePath)
      +
      +
    • +
    • +
      +

      getMergedDirectoryPath

      +
      public java.lang.String getMergedDirectoryPath()
      +
      +
    • +
    • +
      +

      getBuggyDirectory

      +
      public java.io.File getBuggyDirectory()
      +
      +
    • +
    • +
      +

      getCleanDirectory

      +
      public java.io.File getCleanDirectory()
      +
      +
    • +
    • +
      +

      main

      +
      public static void main​(java.lang.String[] args) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      makeMergedArff

      +
      public java.io.File makeMergedArff​(java.io.File arff1, +java.io.File arff2, +java.util.List<java.lang.String> keyOrder) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      getKeyOrder

      +
      public java.util.ArrayList<java.lang.String> getKeyOrder()
      +
      +
    • +
    • +
      +

      makeMergedDeveloperHistoryArff

      +
      public java.io.File makeMergedDeveloperHistoryArff​(java.io.File arff1, +java.io.File arff2, +java.util.List<java.lang.String> keyOrder, +java.lang.String midDate) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.html b/doc/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.html new file mode 100644 index 0000000..05c9778 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.html @@ -0,0 +1,391 @@ + + + + + +BagOfWordsCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class BagOfWordsCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
+
+
+
public class BagOfWordsCollector
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    BagOfWordsCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidcollect() 
    java.io.FilegetArff() 
    java.io.FilegetBuggyDirectory() 
    java.io.FilegetCleanDirectory() 
    java.lang.StringgetReferencePath() 
    voidmakeArff() 
    voidsetBIC​(java.util.List<java.lang.String> bicList) 
    voidsetCommitList​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetEndDate​(java.lang.String endDate) 
    voidsetGit​(org.eclipse.jgit.api.Git git) 
    voidsetProjectName​(java.lang.String projectName) 
    voidsetReferencePath​(java.lang.String referencePath) 
    voidsetRepository​(org.eclipse.jgit.lib.Repository repo) 
    voidsetStartDate​(java.lang.String startDate) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      collect

      +
      public void collect()
      +
      +
    • +
    • +
      +

      makeArff

      +
      public void makeArff()
      +
      +
    • +
    • +
      +

      getBuggyDirectory

      +
      public java.io.File getBuggyDirectory()
      +
      +
    • +
    • +
      +

      getCleanDirectory

      +
      public java.io.File getCleanDirectory()
      +
      +
    • +
    • +
      +

      setCommitList

      +
      public void setCommitList​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
    • +
    • +
      +

      getArff

      +
      public java.io.File getArff()
      +
      +
    • +
    • +
      +

      setGit

      +
      public void setGit​(org.eclipse.jgit.api.Git git)
      +
      +
    • +
    • +
      +

      setRepository

      +
      public void setRepository​(org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    • +
      +

      setBIC

      +
      public void setBIC​(java.util.List<java.lang.String> bicList)
      +
      +
    • +
    • +
      +

      setReferencePath

      +
      public void setReferencePath​(java.lang.String referencePath)
      +
      +
    • +
    • +
      +

      getReferencePath

      +
      public java.lang.String getReferencePath()
      +
      +
    • +
    • +
      +

      setProjectName

      +
      public void setProjectName​(java.lang.String projectName)
      +
      +
    • +
    • +
      +

      setStartDate

      +
      public void setStartDate​(java.lang.String startDate)
      +
      +
    • +
    • +
      +

      setEndDate

      +
      public void setEndDate​(java.lang.String endDate)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/CMetricCollector.html b/doc/edu/handong/csee/isel/metric/collector/CMetricCollector.html new file mode 100644 index 0000000..754782e --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/CMetricCollector.html @@ -0,0 +1,335 @@ + + + + + +CMetricCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CMetricCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.CMetricCollector
+
+
+
+
All Implemented Interfaces:
+
MetricCollector
+
+
+
public class CMetricCollector
+extends java.lang.Object
+implements MetricCollector
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static java.util.HashMap<java.lang.String,​java.lang.Integer>tooLongName 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CMetricCollector​(boolean developerHistory) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.io.FilecollectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetBIC​(java.util.List<java.lang.String> bicList) 
    voidsetMidDate​(java.lang.String midDate) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      tooLongName

      +
      public static java.util.HashMap<java.lang.String,​java.lang.Integer> tooLongName
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      CMetricCollector

      +
      public CMetricCollector​(boolean developerHistory) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.html b/doc/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.html new file mode 100644 index 0000000..cc943aa --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.html @@ -0,0 +1,380 @@ + + + + + +CharacteristicVectorCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CharacteristicVectorCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
+
+
+
public class CharacteristicVectorCollector
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CharacteristicVectorCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidcollect() 
    java.io.FilegetArff() 
    java.io.FilegetBuggyDirectory() 
    java.io.FilegetCleanDirectory() 
    voidmakeArff() 
    voidsetBIC​(java.util.List<java.lang.String> bicList) 
    voidsetCommitList​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetEndDate​(java.lang.String endDate) 
    voidsetGit​(org.eclipse.jgit.api.Git git) 
    voidsetProjectName​(java.lang.String projectName) 
    voidsetReferencePath​(java.lang.String referencePath) 
    voidsetRepository​(org.eclipse.jgit.lib.Repository repo) 
    voidsetStartDate​(java.lang.String startDate) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      collect

      +
      public void collect()
      +
      +
    • +
    • +
      +

      makeArff

      +
      public void makeArff()
      +
      +
    • +
    • +
      +

      setCommitList

      +
      public void setCommitList​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
    • +
    • +
      +

      getArff

      +
      public java.io.File getArff()
      +
      +
    • +
    • +
      +

      setGit

      +
      public void setGit​(org.eclipse.jgit.api.Git git)
      +
      +
    • +
    • +
      +

      setRepository

      +
      public void setRepository​(org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    • +
      +

      setBIC

      +
      public void setBIC​(java.util.List<java.lang.String> bicList)
      +
      +
    • +
    • +
      +

      setProjectName

      +
      public void setProjectName​(java.lang.String projectName)
      +
      +
    • +
    • +
      +

      setReferencePath

      +
      public void setReferencePath​(java.lang.String referencePath)
      +
      +
    • +
    • +
      +

      setStartDate

      +
      public void setStartDate​(java.lang.String startDate)
      +
      +
    • +
    • +
      +

      setEndDate

      +
      public void setEndDate​(java.lang.String endDate)
      +
      +
    • +
    • +
      +

      getBuggyDirectory

      +
      public java.io.File getBuggyDirectory()
      +
      +
    • +
    • +
      +

      getCleanDirectory

      +
      public java.io.File getCleanDirectory()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/DeveloperHistory.html b/doc/edu/handong/csee/isel/metric/collector/DeveloperHistory.html new file mode 100644 index 0000000..04da537 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/DeveloperHistory.html @@ -0,0 +1,281 @@ + + + + + +DeveloperHistory + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class DeveloperHistory

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.DeveloperHistory
+
+
+
+
public class DeveloperHistory
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    DeveloperHistory() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringfindDeveloperDate() 
    java.lang.StringgetMidDate() 
    voidsetGit​(org.eclipse.jgit.api.Git git) 
    voidsetRepo​(org.eclipse.jgit.lib.Repository repo) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      findDeveloperDate

      +
      public java.lang.String findDeveloperDate()
      +
      +
    • +
    • +
      +

      getMidDate

      +
      public java.lang.String getMidDate()
      +
      +
    • +
    • +
      +

      setGit

      +
      public void setGit​(org.eclipse.jgit.api.Git git)
      +
      +
    • +
    • +
      +

      setRepo

      +
      public void setRepo​(org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/MetaDataCollector.html b/doc/edu/handong/csee/isel/metric/collector/MetaDataCollector.html new file mode 100644 index 0000000..b896b9f --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/MetaDataCollector.html @@ -0,0 +1,205 @@ + + + + + +MetaDataCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetaDataCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.MetaDataCollector
+
+
+
+
public class MetaDataCollector
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    MetaDataCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/Test.html b/doc/edu/handong/csee/isel/metric/collector/Test.html new file mode 100644 index 0000000..4a25ad5 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/Test.html @@ -0,0 +1,264 @@ + + + + + +Test + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+
java.lang.Object +
edu.handong.csee.isel.metric.collector.Test
+
+
+
+
public class Test
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Test() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.util.ArrayList<java.lang.String>getFileOrder() 
    static voidmain​(java.lang.String[] args) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Test

      +
      public Test()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main​(java.lang.String[] args) + throws java.io.IOException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      getFileOrder

      +
      public static java.util.ArrayList<java.lang.String> getFileOrder()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/ArffHelper.html b/doc/edu/handong/csee/isel/metric/collector/class-use/ArffHelper.html new file mode 100644 index 0000000..3e19d96 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/ArffHelper.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.ArffHelper + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.ArffHelper

+
+
No usage of edu.handong.csee.isel.metric.collector.ArffHelper
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/BagOfWordsCollector.html b/doc/edu/handong/csee/isel/metric/collector/class-use/BagOfWordsCollector.html new file mode 100644 index 0000000..0f01b4c --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/BagOfWordsCollector.html @@ -0,0 +1,148 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.BagOfWordsCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.BagOfWordsCollector

+
+
+
+ + + + + + + + + + + + + + +
Packages that use BagOfWordsCollector 
PackageDescription
edu.handong.csee.isel.metric.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/CMetricCollector.html b/doc/edu/handong/csee/isel/metric/collector/class-use/CMetricCollector.html new file mode 100644 index 0000000..bc4a949 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/CMetricCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.CMetricCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.CMetricCollector

+
+
No usage of edu.handong.csee.isel.metric.collector.CMetricCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/CharacteristicVectorCollector.html b/doc/edu/handong/csee/isel/metric/collector/class-use/CharacteristicVectorCollector.html new file mode 100644 index 0000000..0cd56de --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/CharacteristicVectorCollector.html @@ -0,0 +1,148 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector

+
+
+
+ + + + + + + + + + + + + + +
Packages that use CharacteristicVectorCollector 
PackageDescription
edu.handong.csee.isel.metric.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/DeveloperHistory.html b/doc/edu/handong/csee/isel/metric/collector/class-use/DeveloperHistory.html new file mode 100644 index 0000000..8f9ea9f --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/DeveloperHistory.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.DeveloperHistory + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.DeveloperHistory

+
+
No usage of edu.handong.csee.isel.metric.collector.DeveloperHistory
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/MetaDataCollector.html b/doc/edu/handong/csee/isel/metric/collector/class-use/MetaDataCollector.html new file mode 100644 index 0000000..713601d --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/MetaDataCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.MetaDataCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.MetaDataCollector

+
+
No usage of edu.handong.csee.isel.metric.collector.MetaDataCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/class-use/Test.html b/doc/edu/handong/csee/isel/metric/collector/class-use/Test.html new file mode 100644 index 0000000..ecd0ed3 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/class-use/Test.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.collector.Test + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.collector.Test

+
+
No usage of edu.handong.csee.isel.metric.collector.Test
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/package-summary.html b/doc/edu/handong/csee/isel/metric/collector/package-summary.html new file mode 100644 index 0000000..facb031 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/package-summary.html @@ -0,0 +1,147 @@ + + + + + +edu.handong.csee.isel.metric.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.metric.collector

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/package-tree.html b/doc/edu/handong/csee/isel/metric/collector/package-tree.html new file mode 100644 index 0000000..5b7a6d6 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/package-tree.html @@ -0,0 +1,120 @@ + + + + + +edu.handong.csee.isel.metric.collector Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.metric.collector

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/collector/package-use.html b/doc/edu/handong/csee/isel/metric/collector/package-use.html new file mode 100644 index 0000000..296121a --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/collector/package-use.html @@ -0,0 +1,148 @@ + + + + + +Uses of Package edu.handong.csee.isel.metric.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.metric.collector

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.metric.collector 
PackageDescription
edu.handong.csee.isel.metric.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/CommitCollector.html b/doc/edu/handong/csee/isel/metric/metadata/CommitCollector.html new file mode 100644 index 0000000..69f67fc --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/CommitCollector.html @@ -0,0 +1,358 @@ + + + + + +CommitCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CommitCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.CommitCollector
+
+
+
+
public class CommitCollector
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static java.util.HashMap<java.lang.String,​MetaDataInfo>metaDatas 
    java.util.HashMap<java.lang.String,​SourceFileInfo>sourceFileInfo 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CommitCollector​(org.eclipse.jgit.api.Git git, +java.lang.String resultDirectory, +java.util.List<java.lang.String> buggyCommit, +java.lang.String projectName, +java.lang.String startDate, +java.lang.String endDate, +boolean developerHistory) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidcountCommitMetrics() 
    java.lang.StringCSV2ARFF() 
    voidparsing​(java.lang.String csvOutputPath) 
    voidsaveResultToCsvFile() 
    voidsetMidDate​(java.lang.String midDate) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    + +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      CommitCollector

      +
      public CommitCollector​(org.eclipse.jgit.api.Git git, +java.lang.String resultDirectory, +java.util.List<java.lang.String> buggyCommit, +java.lang.String projectName, +java.lang.String startDate, +java.lang.String endDate, +boolean developerHistory)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      countCommitMetrics

      +
      public void countCommitMetrics()
      +
      +
    • +
    • +
      +

      saveResultToCsvFile

      +
      public void saveResultToCsvFile()
      +
      +
    • +
    • +
      +

      CSV2ARFF

      +
      public java.lang.String CSV2ARFF()
      +
      +
    • +
    • +
      +

      parsing

      +
      public void parsing​(java.lang.String csvOutputPath)
      +
      +
    • +
    • +
      +

      setMidDate

      +
      public void setMidDate​(java.lang.String midDate)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.html b/doc/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.html new file mode 100644 index 0000000..1a67336 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.html @@ -0,0 +1,369 @@ + + + + + +CommitUnitInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CommitUnitInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
+
+
+
public class CommitUnitInfo
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CommitUnitInfo() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringgetAuthorId() 
    java.util.TreeSet<java.lang.String>getDirectories() 
    java.util.TreeSet<java.lang.String>getFiles() 
    java.util.ArrayList<java.lang.String>getKey() 
    java.util.TreeSet<java.lang.String>getPreviousCommitHashs() 
    java.util.TreeSet<java.lang.String>getSubsystems() 
    voidsetAuthorId​(java.lang.String authorId) 
    voidsetDirectories​(java.lang.String directorie) 
    voidsetFiles​(java.lang.String file) 
    voidsetKey​(java.lang.String key) 
    voidsetPreviousCommitHashs​(java.lang.String previousCommitHash) 
    voidsetSubsystems​(java.lang.String subsystem) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getKey

      +
      public java.util.ArrayList<java.lang.String> getKey()
      +
      +
    • +
    • +
      +

      setKey

      +
      public void setKey​(java.lang.String key)
      +
      +
    • +
    • +
      +

      getAuthorId

      +
      public java.lang.String getAuthorId()
      +
      +
    • +
    • +
      +

      setAuthorId

      +
      public void setAuthorId​(java.lang.String authorId)
      +
      +
    • +
    • +
      +

      getSubsystems

      +
      public java.util.TreeSet<java.lang.String> getSubsystems()
      +
      +
    • +
    • +
      +

      setSubsystems

      +
      public void setSubsystems​(java.lang.String subsystem)
      +
      +
    • +
    • +
      +

      getDirectories

      +
      public java.util.TreeSet<java.lang.String> getDirectories()
      +
      +
    • +
    • +
      +

      setDirectories

      +
      public void setDirectories​(java.lang.String directorie)
      +
      +
    • +
    • +
      +

      getFiles

      +
      public java.util.TreeSet<java.lang.String> getFiles()
      +
      +
    • +
    • +
      +

      setFiles

      +
      public void setFiles​(java.lang.String file)
      +
      +
    • +
    • +
      +

      getPreviousCommitHashs

      +
      public java.util.TreeSet<java.lang.String> getPreviousCommitHashs()
      +
      +
    • +
    • +
      +

      setPreviousCommitHashs

      +
      public void setPreviousCommitHashs​(java.lang.String previousCommitHash)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.html b/doc/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.html new file mode 100644 index 0000000..bcee724 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.html @@ -0,0 +1,303 @@ + + + + + +DeveloperExperienceInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class DeveloperExperienceInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
+
+
+
public class DeveloperExperienceInfo
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    DeveloperExperienceInfo() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intgetNumOfCommits() 
    java.util.TreeMap<java.lang.Integer,​java.lang.Integer>getRecentExperiences() 
    floatgetREXP() 
    voidsetNumOfCommits() 
    voidsetRecentExperiences​(java.util.TreeMap<java.lang.Integer,​java.lang.Integer> recentExperiences) 
    voidsetREXP​(float rEXP) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getRecentExperiences

      +
      public java.util.TreeMap<java.lang.Integer,​java.lang.Integer> getRecentExperiences()
      +
      +
    • +
    • +
      +

      setRecentExperiences

      +
      public void setRecentExperiences​(java.util.TreeMap<java.lang.Integer,​java.lang.Integer> recentExperiences)
      +
      +
    • +
    • +
      +

      getNumOfCommits

      +
      public int getNumOfCommits()
      +
      +
    • +
    • +
      +

      setNumOfCommits

      +
      public void setNumOfCommits()
      +
      +
    • +
    • +
      +

      getREXP

      +
      public float getREXP()
      +
      +
    • +
    • +
      +

      setREXP

      +
      public void setREXP​(float rEXP)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/MetaDataInfo.html b/doc/edu/handong/csee/isel/metric/metadata/MetaDataInfo.html new file mode 100644 index 0000000..7f12f35 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/MetaDataInfo.html @@ -0,0 +1,699 @@ + + + + + +MetaDataInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetaDataInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
+
+
+
public class MetaDataInfo
+extends java.lang.Object
+
+
+ +
+
+ +
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/MetricParser.html b/doc/edu/handong/csee/isel/metric/metadata/MetricParser.html new file mode 100644 index 0000000..96648ed --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/MetricParser.html @@ -0,0 +1,329 @@ + + + + + +MetricParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetricParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.MetricParser
+
+
+
+
public class MetricParser
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    MetricParser() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidcomputeDeveloperInfo​(java.util.HashMap<java.lang.String,​DeveloperExperienceInfo> developerExperience, +java.lang.String authorId, +java.lang.String commitTime) 
    voidparseCommitUnitInfo​(CommitUnitInfo commitUnitInfo, +java.lang.String sourcePath, +java.lang.String key) 
    voidparseDeveloperInfo​(MetaDataInfo metaDataInfo, +java.util.HashMap<java.lang.String,​java.lang.Integer> developerExperience, +java.lang.String authorId) 
    voidparsePatchContents​(MetaDataInfo metaDataInfo, +java.lang.String commitHash, +java.lang.String diffContent) 
    voidparseSourceInfo​(MetaDataInfo metaDataInfo, +java.util.HashMap<java.lang.String,​SourceFileInfo> sourceFileInfo, +java.lang.String sourceFileName, +java.lang.String authorId, +boolean isBuggyCommit, +java.lang.String commitTime, +java.lang.String commitHash, +CommitUnitInfo commitUnitInfo, +java.lang.String fileSource) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      parsePatchContents

      +
      public void parsePatchContents​(MetaDataInfo metaDataInfo, +java.lang.String commitHash, +java.lang.String diffContent)
      +
      +
    • +
    • +
      +

      parseSourceInfo

      +
      public void parseSourceInfo​(MetaDataInfo metaDataInfo, +java.util.HashMap<java.lang.String,​SourceFileInfo> sourceFileInfo, +java.lang.String sourceFileName, +java.lang.String authorId, +boolean isBuggyCommit, +java.lang.String commitTime, +java.lang.String commitHash, +CommitUnitInfo commitUnitInfo, +java.lang.String fileSource) + throws java.lang.Exception
      +
      +
      Throws:
      +
      java.lang.Exception
      +
      +
      +
    • +
    • +
      +

      parseDeveloperInfo

      +
      public void parseDeveloperInfo​(MetaDataInfo metaDataInfo, +java.util.HashMap<java.lang.String,​java.lang.Integer> developerExperience, +java.lang.String authorId)
      +
      +
    • +
    • +
      +

      parseCommitUnitInfo

      +
      public void parseCommitUnitInfo​(CommitUnitInfo commitUnitInfo, +java.lang.String sourcePath, +java.lang.String key)
      +
      +
    • +
    • +
      +

      computeDeveloperInfo

      +
      public void computeDeveloperInfo​(java.util.HashMap<java.lang.String,​DeveloperExperienceInfo> developerExperience, +java.lang.String authorId, +java.lang.String commitTime)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/SourceFileInfo.html b/doc/edu/handong/csee/isel/metric/metadata/SourceFileInfo.html new file mode 100644 index 0000000..2fe3ef7 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/SourceFileInfo.html @@ -0,0 +1,369 @@ + + + + + +SourceFileInfo + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SourceFileInfo

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
+
+
+
public class SourceFileInfo
+extends java.lang.Object
+
+
+ +
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getDeveloper

      +
      public java.util.TreeSet<java.lang.String> getDeveloper()
      +
      +
    • +
    • +
      +

      setDeveloper

      +
      public void setDeveloper​(java.lang.String developer)
      +
      +
    • +
    • +
      +

      getNumOfModify

      +
      public int getNumOfModify()
      +
      +
    • +
    • +
      +

      setNumOfModify

      +
      public void setNumOfModify()
      +
      +
    • +
    • +
      +

      getNumOfBIC

      +
      public int getNumOfBIC()
      +
      +
    • +
    • +
      +

      setNumOfBIC

      +
      public void setNumOfBIC()
      +
      +
    • +
    • +
      +

      getMakeDate

      +
      public java.lang.String getMakeDate()
      +
      +
    • +
    • +
      +

      setMakeDate

      +
      public void setMakeDate​(java.lang.String makeDate)
      +
      +
    • +
    • +
      +

      getPreviousCommitDate

      +
      public java.lang.String getPreviousCommitDate()
      +
      +
    • +
    • +
      +

      setPreviousCommitDate

      +
      public void setPreviousCommitDate​(java.lang.String previousCommitDate)
      +
      +
    • +
    • +
      +

      getPreviousCommitHash

      +
      public java.lang.String getPreviousCommitHash()
      +
      +
    • +
    • +
      +

      setPreviousCommitHash

      +
      public void setPreviousCommitHash​(java.lang.String previousCommitHash)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/Utils.html b/doc/edu/handong/csee/isel/metric/metadata/Utils.html new file mode 100644 index 0000000..47b738a --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/Utils.html @@ -0,0 +1,371 @@ + + + + + +Utils + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Utils

+
+
+
java.lang.Object +
edu.handong.csee.isel.metric.metadata.Utils
+
+
+
+
public class Utils
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Utils() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static intcalDate​(java.lang.String first, +java.lang.String second) 
    static voidcountDeveloperCommit​(java.util.HashMap<java.lang.String,​DeveloperExperienceInfo> developerExperience, +java.lang.String authorId, +java.lang.String commitTime) 
    static java.util.List<org.eclipse.jgit.diff.DiffEntry>diff​(org.eclipse.jgit.revwalk.RevCommit parent, +org.eclipse.jgit.revwalk.RevCommit commit, +org.eclipse.jgit.lib.Repository repo) 
    static java.lang.StringfetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) 
    static java.lang.StringgetDayFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static java.lang.StringgetHourFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static java.lang.StringgetStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static java.lang.StringgetStringDateTimeFromCommitTime​(int commitTime) 
    static java.lang.StringparseAuthorID​(java.lang.String authorId) 
    static java.util.List<java.lang.String>readBICCsvFile​(java.lang.String BICcsvPath) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Utils

      +
      public Utils()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getStringDateTimeFromCommit

      +
      public static java.lang.String getStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    • +
      +

      getDayFromCommitTime

      +
      public static java.lang.String getDayFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    • +
      +

      getHourFromCommitTime

      +
      public static java.lang.String getHourFromCommitTime​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    • +
      +

      readBICCsvFile

      +
      public static java.util.List<java.lang.String> readBICCsvFile​(java.lang.String BICcsvPath)
      +
      +
    • +
    • +
      +

      calDate

      +
      public static int calDate​(java.lang.String first, +java.lang.String second) + throws java.text.ParseException
      +
      +
      Throws:
      +
      java.text.ParseException
      +
      +
      +
    • +
    • +
      +

      parseAuthorID

      +
      public static java.lang.String parseAuthorID​(java.lang.String authorId)
      +
      +
    • +
    • +
      +

      countDeveloperCommit

      +
      public static void countDeveloperCommit​(java.util.HashMap<java.lang.String,​DeveloperExperienceInfo> developerExperience, +java.lang.String authorId, +java.lang.String commitTime)
      +
      +
    • +
    • +
      +

      fetchBlob

      +
      public static java.lang.String fetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) + throws java.lang.Exception
      +
      +
      Throws:
      +
      java.lang.Exception
      +
      +
      +
    • +
    • +
      +

      diff

      +
      public static java.util.List<org.eclipse.jgit.diff.DiffEntry> diff​(org.eclipse.jgit.revwalk.RevCommit parent, +org.eclipse.jgit.revwalk.RevCommit commit, +org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    • +
      +

      getStringDateTimeFromCommitTime

      +
      public static java.lang.String getStringDateTimeFromCommitTime​(int commitTime)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitCollector.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitCollector.html new file mode 100644 index 0000000..68da456 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.CommitCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.CommitCollector

+
+
No usage of edu.handong.csee.isel.metric.metadata.CommitCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitUnitInfo.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitUnitInfo.html new file mode 100644 index 0000000..0b11537 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/CommitUnitInfo.html @@ -0,0 +1,162 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.CommitUnitInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.CommitUnitInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use CommitUnitInfo 
PackageDescription
edu.handong.csee.isel.metric.metadata 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/DeveloperExperienceInfo.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/DeveloperExperienceInfo.html new file mode 100644 index 0000000..d4233bc --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/DeveloperExperienceInfo.html @@ -0,0 +1,156 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use DeveloperExperienceInfo 
PackageDescription
edu.handong.csee.isel.metric.metadata 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/MetaDataInfo.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/MetaDataInfo.html new file mode 100644 index 0000000..fc61359 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/MetaDataInfo.html @@ -0,0 +1,188 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.MetaDataInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.MetaDataInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use MetaDataInfo 
PackageDescription
edu.handong.csee.isel.metric.metadata 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/MetricParser.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/MetricParser.html new file mode 100644 index 0000000..ace79d2 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/MetricParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.MetricParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.MetricParser

+
+
No usage of edu.handong.csee.isel.metric.metadata.MetricParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/SourceFileInfo.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/SourceFileInfo.html new file mode 100644 index 0000000..11e265e --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/SourceFileInfo.html @@ -0,0 +1,174 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.SourceFileInfo + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.SourceFileInfo

+
+
+
+ + + + + + + + + + + + + + +
Packages that use SourceFileInfo 
PackageDescription
edu.handong.csee.isel.metric.metadata 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/class-use/Utils.html b/doc/edu/handong/csee/isel/metric/metadata/class-use/Utils.html new file mode 100644 index 0000000..46428cf --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/class-use/Utils.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.metric.metadata.Utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.metric.metadata.Utils

+
+
No usage of edu.handong.csee.isel.metric.metadata.Utils
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/package-summary.html b/doc/edu/handong/csee/isel/metric/metadata/package-summary.html new file mode 100644 index 0000000..52dc17f --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/package-summary.html @@ -0,0 +1,147 @@ + + + + + +edu.handong.csee.isel.metric.metadata + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.metric.metadata

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/package-tree.html b/doc/edu/handong/csee/isel/metric/metadata/package-tree.html new file mode 100644 index 0000000..89bf381 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/package-tree.html @@ -0,0 +1,120 @@ + + + + + +edu.handong.csee.isel.metric.metadata Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.metric.metadata

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/metadata/package-use.html b/doc/edu/handong/csee/isel/metric/metadata/package-use.html new file mode 100644 index 0000000..eda6eb4 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/metadata/package-use.html @@ -0,0 +1,156 @@ + + + + + +Uses of Package edu.handong.csee.isel.metric.metadata + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.metric.metadata

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.metric.metadata 
PackageDescription
edu.handong.csee.isel.metric.metadata 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/package-summary.html b/doc/edu/handong/csee/isel/metric/package-summary.html new file mode 100644 index 0000000..d536380 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.metric + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.metric

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    MetricCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/package-tree.html b/doc/edu/handong/csee/isel/metric/package-tree.html new file mode 100644 index 0000000..9388adb --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/package-tree.html @@ -0,0 +1,110 @@ + + + + + +edu.handong.csee.isel.metric Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.metric

+Package Hierarchies: + +
+
+
+

Interface Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/metric/package-use.html b/doc/edu/handong/csee/isel/metric/package-use.html new file mode 100644 index 0000000..dfaa8f4 --- /dev/null +++ b/doc/edu/handong/csee/isel/metric/package-use.html @@ -0,0 +1,144 @@ + + + + + +Uses of Package edu.handong.csee.isel.metric + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.metric

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.metric 
PackageDescription
edu.handong.csee.isel.metric.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/package-summary.html b/doc/edu/handong/csee/isel/package-summary.html new file mode 100644 index 0000000..e48f141 --- /dev/null +++ b/doc/edu/handong/csee/isel/package-summary.html @@ -0,0 +1,131 @@ + + + + + +edu.handong.csee.isel + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    JavaASTParser 
    Main 
    Utils 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/package-tree.html b/doc/edu/handong/csee/isel/package-tree.html new file mode 100644 index 0000000..2851ef0 --- /dev/null +++ b/doc/edu/handong/csee/isel/package-tree.html @@ -0,0 +1,116 @@ + + + + + +edu.handong.csee.isel Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/package-use.html b/doc/edu/handong/csee/isel/package-use.html new file mode 100644 index 0000000..2e13af4 --- /dev/null +++ b/doc/edu/handong/csee/isel/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel

+
+
No usage of edu.handong.csee.isel
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/PatchCollector.html b/doc/edu/handong/csee/isel/patch/PatchCollector.html new file mode 100644 index 0000000..2aa9baf --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/PatchCollector.html @@ -0,0 +1,213 @@ + + + + + +PatchCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface PatchCollector

+
+
+
+
+
All Known Implementing Classes:
+
CPatchCollector
+
+
+
public interface PatchCollector
+
+
+
    + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    voidsetBFC​(java.util.List<java.lang.String> bfcList) 
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setBFC

      +
      void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      +
    • +
    • +
      +

      collectFrom

      +
      java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/class-use/PatchCollector.html b/doc/edu/handong/csee/isel/patch/class-use/PatchCollector.html new file mode 100644 index 0000000..4cf098f --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/class-use/PatchCollector.html @@ -0,0 +1,147 @@ + + + + + +Uses of Interface edu.handong.csee.isel.patch.PatchCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
edu.handong.csee.isel.patch.PatchCollector

+
+
+
+ + + + + + + + + + + + + + +
Packages that use PatchCollector 
PackageDescription
edu.handong.csee.isel.patch.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/collector/CPatchCollector.html b/doc/edu/handong/csee/isel/patch/collector/CPatchCollector.html new file mode 100644 index 0000000..b7fe66d --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/collector/CPatchCollector.html @@ -0,0 +1,307 @@ + + + + + +CPatchCollector + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CPatchCollector

+
+
+
java.lang.Object +
edu.handong.csee.isel.patch.collector.CPatchCollector
+
+
+
+
All Implemented Interfaces:
+
PatchCollector
+
+
+
public class CPatchCollector
+extends java.lang.Object
+implements PatchCollector
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    CPatchCollector() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) 
    java.lang.StringgetPatch​(org.eclipse.jgit.diff.DiffEntry diff, +org.eclipse.jgit.lib.Repository repo) 
    booleanisStartWithMinus​(java.lang.String line) 
    booleanisStartWithPlus​(java.lang.String line) 
    voidsetBFC​(java.util.List<java.lang.String> bfcList) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    + +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      setBFC

      +
      public void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      +
      Specified by:
      +
      setBFC in interface PatchCollector
      +
      +
      +
    • +
    • +
      +

      collectFrom

      +
      public java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      +
      Specified by:
      +
      collectFrom in interface PatchCollector
      +
      +
      +
    • +
    • +
      +

      isStartWithPlus

      +
      public boolean isStartWithPlus​(java.lang.String line)
      +
      +
    • +
    • +
      +

      isStartWithMinus

      +
      public boolean isStartWithMinus​(java.lang.String line)
      +
      +
    • +
    • +
      +

      getPatch

      +
      public java.lang.String getPatch​(org.eclipse.jgit.diff.DiffEntry diff, +org.eclipse.jgit.lib.Repository repo)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/collector/class-use/CPatchCollector.html b/doc/edu/handong/csee/isel/patch/collector/class-use/CPatchCollector.html new file mode 100644 index 0000000..d28ba70 --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/collector/class-use/CPatchCollector.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.patch.collector.CPatchCollector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.patch.collector.CPatchCollector

+
+
No usage of edu.handong.csee.isel.patch.collector.CPatchCollector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/collector/package-summary.html b/doc/edu/handong/csee/isel/patch/collector/package-summary.html new file mode 100644 index 0000000..17bca27 --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/collector/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.patch.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.patch.collector

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CPatchCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/collector/package-tree.html b/doc/edu/handong/csee/isel/patch/collector/package-tree.html new file mode 100644 index 0000000..4ce717e --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/collector/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.patch.collector Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.patch.collector

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/collector/package-use.html b/doc/edu/handong/csee/isel/patch/collector/package-use.html new file mode 100644 index 0000000..c87226d --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/collector/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.patch.collector + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.patch.collector

+
+
No usage of edu.handong.csee.isel.patch.collector
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/package-summary.html b/doc/edu/handong/csee/isel/patch/package-summary.html new file mode 100644 index 0000000..ca13efc --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.patch + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.patch

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    PatchCollector 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/package-tree.html b/doc/edu/handong/csee/isel/patch/package-tree.html new file mode 100644 index 0000000..f50b6a7 --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/package-tree.html @@ -0,0 +1,110 @@ + + + + + +edu.handong.csee.isel.patch Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.patch

+Package Hierarchies: + +
+
+
+

Interface Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/patch/package-use.html b/doc/edu/handong/csee/isel/patch/package-use.html new file mode 100644 index 0000000..8493eba --- /dev/null +++ b/doc/edu/handong/csee/isel/patch/package-use.html @@ -0,0 +1,144 @@ + + + + + +Uses of Package edu.handong.csee.isel.patch + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.patch

+
+
+
+ + + + + + + + + + + + + + +
Packages that use edu.handong.csee.isel.patch 
PackageDescription
edu.handong.csee.isel.patch.collector 
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/SZZRunner.html b/doc/edu/handong/csee/isel/szz/SZZRunner.html new file mode 100644 index 0000000..3882639 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/SZZRunner.html @@ -0,0 +1,338 @@ + + + + + +SZZRunner + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SZZRunner

+
+
+
java.lang.Object +
edu.handong.csee.isel.szz.SZZRunner
+
+
+
+
All Implemented Interfaces:
+
BICCollector
+
+
+
public class SZZRunner
+extends java.lang.Object
+implements BICCollector
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    SZZRunner() 
    SZZRunner​(java.lang.Iterable<java.lang.String> BFCommitList) 
    SZZRunner​(java.lang.String gitURI) 
    SZZRunner​(java.lang.String gitURI, +java.lang.Iterable<java.lang.String> BFCommitList) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.List<CSVInfo>collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList) +
    TODO Let's just print out BIC information and then change return type as + (i.e.
    +
    static java.util.List<org.eclipse.jgit.revwalk.RevCommit>getCommitListFrom​(java.io.File gitDir) 
    static voidmain​(java.lang.String[] args) 
    voidsetBFC​(java.util.List<java.lang.String> bfcList) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      SZZRunner

      +
      public SZZRunner()
      +
      +
    • +
    • +
      +

      SZZRunner

      +
      public SZZRunner​(java.lang.String gitURI, +java.lang.Iterable<java.lang.String> BFCommitList)
      +
      +
    • +
    • +
      +

      SZZRunner

      +
      public SZZRunner​(java.lang.Iterable<java.lang.String> BFCommitList)
      +
      +
    • +
    • +
      +

      SZZRunner

      +
      public SZZRunner​(java.lang.String gitURI)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main​(java.lang.String[] args)
      +
      +
    • +
    • +
      +

      collectFrom

      +
      public java.util.List<CSVInfo> collectFrom​(java.util.List<org.eclipse.jgit.revwalk.RevCommit> commitList)
      +
      TODO Let's just print out BIC information and then change return type as + (i.e. BIC list)
      +
      +
      Specified by:
      +
      collectFrom in interface BICCollector
      +
      +
      +
    • +
    • +
      +

      getCommitListFrom

      +
      public static java.util.List<org.eclipse.jgit.revwalk.RevCommit> getCommitListFrom​(java.io.File gitDir) + throws java.io.IOException, +org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      Throws:
      +
      java.io.IOException
      +
      org.eclipse.jgit.api.errors.GitAPIException
      +
      +
      +
    • +
    • +
      +

      setBFC

      +
      public void setBFC​(java.util.List<java.lang.String> bfcList)
      +
      +
      Specified by:
      +
      setBFC in interface BICCollector
      +
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/class-use/SZZRunner.html b/doc/edu/handong/csee/isel/szz/class-use/SZZRunner.html new file mode 100644 index 0000000..917dddc --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/class-use/SZZRunner.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.szz.SZZRunner + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.szz.SZZRunner

+
+
No usage of edu.handong.csee.isel.szz.SZZRunner
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/Change.html b/doc/edu/handong/csee/isel/szz/data/Change.html new file mode 100644 index 0000000..4ea8acc --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/Change.html @@ -0,0 +1,254 @@ + + + + + +Change + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Change

+
+
+
java.lang.Object +
edu.handong.csee.isel.szz.data.Change
+
+
+
+
public class Change
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Change​(java.lang.String sha1, +java.lang.String path, +int numDeletedLines, +int numAddedLines) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intgetNumDeletedLines() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Change

      +
      public Change​(java.lang.String sha1, +java.lang.String path, +int numDeletedLines, +int numAddedLines)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    + +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/DeletedLineInCommits.html b/doc/edu/handong/csee/isel/szz/data/DeletedLineInCommits.html new file mode 100644 index 0000000..5b3c6bc --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/DeletedLineInCommits.html @@ -0,0 +1,291 @@ + + + + + +DeletedLineInCommits + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class DeletedLineInCommits

+
+
+
java.lang.Object +
edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
+
+
+
public class DeletedLineInCommits
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    DeletedLineInCommits​(java.lang.String sha1, +java.lang.String date, +java.lang.String oldPath, +java.lang.String path, +int lineNum, +java.lang.String line) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringgetBIDate() 
    intgetLineNum() 
    java.lang.StringgetPath() 
    java.lang.StringgetSha1() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      DeletedLineInCommits

      +
      public DeletedLineInCommits​(java.lang.String sha1, +java.lang.String date, +java.lang.String oldPath, +java.lang.String path, +int lineNum, +java.lang.String line)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getSha1

      +
      public java.lang.String getSha1()
      +
      +
    • +
    • +
      +

      getBIDate

      +
      public java.lang.String getBIDate()
      +
      +
    • +
    • +
      +

      getPath

      +
      public java.lang.String getPath()
      +
      +
    • +
    • +
      +

      getLineNum

      +
      public int getLineNum()
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/class-use/Change.html b/doc/edu/handong/csee/isel/szz/data/class-use/Change.html new file mode 100644 index 0000000..59e5b46 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/class-use/Change.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.szz.data.Change + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.szz.data.Change

+
+
No usage of edu.handong.csee.isel.szz.data.Change
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/class-use/DeletedLineInCommits.html b/doc/edu/handong/csee/isel/szz/data/class-use/DeletedLineInCommits.html new file mode 100644 index 0000000..4e43aee --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/class-use/DeletedLineInCommits.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.szz.data.DeletedLineInCommits + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.szz.data.DeletedLineInCommits

+
+
No usage of edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/package-summary.html b/doc/edu/handong/csee/isel/szz/data/package-summary.html new file mode 100644 index 0000000..c045f3d --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/package-summary.html @@ -0,0 +1,127 @@ + + + + + +edu.handong.csee.isel.szz.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.szz.data

+
+
+
+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/package-tree.html b/doc/edu/handong/csee/isel/szz/data/package-tree.html new file mode 100644 index 0000000..1676bc2 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/package-tree.html @@ -0,0 +1,115 @@ + + + + + +edu.handong.csee.isel.szz.data Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.szz.data

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+ +
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/data/package-use.html b/doc/edu/handong/csee/isel/szz/data/package-use.html new file mode 100644 index 0000000..84b49a3 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/data/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.szz.data + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.szz.data

+
+
No usage of edu.handong.csee.isel.szz.data
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/package-summary.html b/doc/edu/handong/csee/isel/szz/package-summary.html new file mode 100644 index 0000000..388e82b --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/package-summary.html @@ -0,0 +1,123 @@ + + + + + +edu.handong.csee.isel.szz + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.szz

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SZZRunner 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/package-tree.html b/doc/edu/handong/csee/isel/szz/package-tree.html new file mode 100644 index 0000000..46ff4b0 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/package-tree.html @@ -0,0 +1,114 @@ + + + + + +edu.handong.csee.isel.szz Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.szz

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/package-use.html b/doc/edu/handong/csee/isel/szz/package-use.html new file mode 100644 index 0000000..5bf35c1 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.szz + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.szz

+
+
No usage of edu.handong.csee.isel.szz
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/JavaASTParser.html b/doc/edu/handong/csee/isel/szz/utils/JavaASTParser.html new file mode 100644 index 0000000..1e7eb92 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/JavaASTParser.html @@ -0,0 +1,487 @@ + + + + + +JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class JavaASTParser

+
+
+
java.lang.Object +
edu.handong.csee.isel.szz.utils.JavaASTParser
+
+
+
+
public class JavaASTParser
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    JavaASTParser​(java.lang.String source) 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation>getClassInstanceCreations() 
    org.eclipse.jdt.core.dom.CompilationUnitgetCompilationUnit() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression>getConditionalExpressions() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess>getFieldAccesses() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration>getFieldDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement>getForStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement>getIfStatements() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration>getImportDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression>getInfixExpressions() 
    intgetLineNum​(int startPosition) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration>getMethodDeclarations() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation>getMethodInvocations() 
    org.eclipse.jdt.core.dom.PackageDeclarationgetPackageDeclaration() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName>getSimpleNames() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration>getSingleVariableDeclarations() 
    java.lang.StringgetStringCode() 
    java.lang.StringgetType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration>getTypeDeclarations() 
    java.lang.StringgetTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name) 
    java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment>getVariableDeclarationFragments() 
    java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement>getWhileStatements() 
    voidpraseJavaFile​(java.lang.String source) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      JavaASTParser

      +
      public JavaASTParser​(java.lang.String source)
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      getLineNum

      +
      public int getLineNum​(int startPosition)
      +
      +
    • +
    • +
      +

      getStringCode

      +
      public java.lang.String getStringCode()
      +
      +
    • +
    • +
      +

      getCompilationUnit

      +
      public org.eclipse.jdt.core.dom.CompilationUnit getCompilationUnit()
      +
      +
    • +
    • +
      +

      praseJavaFile

      +
      public void praseJavaFile​(java.lang.String source)
      +
      +
    • +
    • +
      +

      getMethodDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodDeclaration> getMethodDeclarations()
      +
      +
    • +
    • +
      +

      getMethodInvocations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.MethodInvocation> getMethodInvocations()
      +
      +
    • +
    • +
      +

      getTypeDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.TypeDeclaration> getTypeDeclarations()
      +
      +
    • +
    • +
      +

      getFieldDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldDeclaration> getFieldDeclarations()
      +
      +
    • +
    • +
      +

      getFieldAccesses

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.FieldAccess> getFieldAccesses()
      +
      +
    • +
    • +
      +

      getIfStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.IfStatement> getIfStatements()
      +
      +
    • +
    • +
      +

      getForStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ForStatement> getForStatements()
      +
      +
    • +
    • +
      +

      getWhileStatements

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.WhileStatement> getWhileStatements()
      +
      +
    • +
    • +
      +

      getInfixExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.InfixExpression> getInfixExpressions()
      +
      +
    • +
    • +
      +

      getSimpleNames

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SimpleName> getSimpleNames()
      +
      +
    • +
    • +
      +

      getVariableDeclarationFragments

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.VariableDeclarationFragment> getVariableDeclarationFragments()
      +
      +
    • +
    • +
      +

      getClassInstanceCreations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ClassInstanceCreation> getClassInstanceCreations()
      +
      +
    • +
    • +
      +

      getSingleVariableDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.SingleVariableDeclaration> getSingleVariableDeclarations()
      +
      +
    • +
    • +
      +

      getImportDeclarations

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ImportDeclaration> getImportDeclarations()
      +
      +
    • +
    • +
      +

      getConditionalExpressions

      +
      public java.util.ArrayList<org.eclipse.jdt.core.dom.ConditionalExpression> getConditionalExpressions()
      +
      +
    • +
    • +
      +

      getPackageDeclaration

      +
      public org.eclipse.jdt.core.dom.PackageDeclaration getPackageDeclaration()
      +
      +
    • +
    • +
      +

      getType

      +
      public java.lang.String getType​(org.eclipse.jdt.core.dom.Expression node, +java.lang.String path, +org.eclipse.jgit.lib.Repository repo, +java.lang.String shaId)
      +
      +
    • +
    • +
      +

      getTypeOfSimpleName

      +
      public java.lang.String getTypeOfSimpleName​(org.eclipse.jdt.core.dom.ASTNode astNode, +java.lang.String name)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/Utils.html b/doc/edu/handong/csee/isel/szz/utils/Utils.html new file mode 100644 index 0000000..c1b77ce --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/Utils.html @@ -0,0 +1,352 @@ + + + + + +Utils + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Utils

+
+
+
java.lang.Object +
edu.handong.csee.isel.szz.utils.Utils
+
+
+
+
public class Utils
+extends java.lang.Object
+
+
+
    + +
  • +
    + + +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields 
    Modifier and TypeFieldDescription
    static org.eclipse.jgit.diff.DiffAlgorithmdiffAlgorithm 
    static org.eclipse.jgit.diff.RawTextComparatordiffComparator 
    +
    +
    +
  • + +
  • +
    + + +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors 
    ConstructorDescription
    Utils() 
    +
    +
    +
  • + +
  • +
    + + +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static java.lang.StringfetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) 
    static org.eclipse.jgit.diff.EditListgetEditListFromDiff​(java.lang.String file1, +java.lang.String file2) 
    static java.lang.StringgetStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit) 
    static java.lang.StringremoveComments​(java.lang.String code) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    + + +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    + + +

    Field Details

    +
      +
    • +
      +

      diffAlgorithm

      +
      public static org.eclipse.jgit.diff.DiffAlgorithm diffAlgorithm
      +
      +
    • +
    • +
      +

      diffComparator

      +
      public static org.eclipse.jgit.diff.RawTextComparator diffComparator
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Constructor Details

    +
      +
    • +
      +

      Utils

      +
      public Utils()
      +
      +
    • +
    +
    +
  • + +
  • +
    + + +

    Method Details

    +
      +
    • +
      +

      fetchBlob

      +
      public static java.lang.String fetchBlob​(org.eclipse.jgit.lib.Repository repo, +java.lang.String revSpec, +java.lang.String path) + throws org.eclipse.jgit.errors.RevisionSyntaxException, +org.eclipse.jgit.errors.AmbiguousObjectException, +org.eclipse.jgit.errors.IncorrectObjectTypeException, +java.io.IOException
      +
      +
      Throws:
      +
      org.eclipse.jgit.errors.RevisionSyntaxException
      +
      org.eclipse.jgit.errors.AmbiguousObjectException
      +
      org.eclipse.jgit.errors.IncorrectObjectTypeException
      +
      java.io.IOException
      +
      +
      +
    • +
    • +
      +

      removeComments

      +
      public static java.lang.String removeComments​(java.lang.String code)
      +
      +
    • +
    • +
      +

      getEditListFromDiff

      +
      public static org.eclipse.jgit.diff.EditList getEditListFromDiff​(java.lang.String file1, +java.lang.String file2)
      +
      +
    • +
    • +
      +

      getStringDateTimeFromCommit

      +
      public static java.lang.String getStringDateTimeFromCommit​(org.eclipse.jgit.revwalk.RevCommit commit)
      +
      +
    • +
    +
    +
  • +
+
+
+ +
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/class-use/JavaASTParser.html b/doc/edu/handong/csee/isel/szz/utils/class-use/JavaASTParser.html new file mode 100644 index 0000000..a079201 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/class-use/JavaASTParser.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.szz.utils.JavaASTParser + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.szz.utils.JavaASTParser

+
+
No usage of edu.handong.csee.isel.szz.utils.JavaASTParser
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/class-use/Utils.html b/doc/edu/handong/csee/isel/szz/utils/class-use/Utils.html new file mode 100644 index 0000000..3a78e31 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/class-use/Utils.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class edu.handong.csee.isel.szz.utils.Utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
edu.handong.csee.isel.szz.utils.Utils

+
+
No usage of edu.handong.csee.isel.szz.utils.Utils
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/package-summary.html b/doc/edu/handong/csee/isel/szz/utils/package-summary.html new file mode 100644 index 0000000..f06dd5c --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/package-summary.html @@ -0,0 +1,127 @@ + + + + + +edu.handong.csee.isel.szz.utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Package edu.handong.csee.isel.szz.utils

+
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    JavaASTParser 
    Utils 
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/package-tree.html b/doc/edu/handong/csee/isel/szz/utils/package-tree.html new file mode 100644 index 0000000..347d9fb --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/package-tree.html @@ -0,0 +1,115 @@ + + + + + +edu.handong.csee.isel.szz.utils Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package edu.handong.csee.isel.szz.utils

+Package Hierarchies: + +
+
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/edu/handong/csee/isel/szz/utils/package-use.html b/doc/edu/handong/csee/isel/szz/utils/package-use.html new file mode 100644 index 0000000..196b803 --- /dev/null +++ b/doc/edu/handong/csee/isel/szz/utils/package-use.html @@ -0,0 +1,99 @@ + + + + + +Uses of Package edu.handong.csee.isel.szz.utils + + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
edu.handong.csee.isel.szz.utils

+
+
No usage of edu.handong.csee.isel.szz.utils
+
+ +
+
+ + diff --git a/doc/element-list b/doc/element-list new file mode 100644 index 0000000..eaf04c7 --- /dev/null +++ b/doc/element-list @@ -0,0 +1,27 @@ +edu.handong.csee.isel +edu.handong.csee.isel.bfc +edu.handong.csee.isel.bfc.collector +edu.handong.csee.isel.bfc.collector.github +edu.handong.csee.isel.bfc.collector.jira +edu.handong.csee.isel.bic +edu.handong.csee.isel.bic.collector +edu.handong.csee.isel.bic.szz.data +edu.handong.csee.isel.bic.szz.exception +edu.handong.csee.isel.bic.szz.graph +edu.handong.csee.isel.bic.szz.model +edu.handong.csee.isel.bic.szz.trace +edu.handong.csee.isel.bic.szz.util +edu.handong.csee.isel.data +edu.handong.csee.isel.data.csv +edu.handong.csee.isel.data.processor +edu.handong.csee.isel.data.processor.input +edu.handong.csee.isel.data.processor.input.command +edu.handong.csee.isel.data.processor.input.converter +edu.handong.csee.isel.metric +edu.handong.csee.isel.metric.collector +edu.handong.csee.isel.metric.metadata +edu.handong.csee.isel.patch +edu.handong.csee.isel.patch.collector +edu.handong.csee.isel.szz +edu.handong.csee.isel.szz.data +edu.handong.csee.isel.szz.utils diff --git a/doc/help-doc.html b/doc/help-doc.html new file mode 100644 index 0000000..bb89165 --- /dev/null +++ b/doc/help-doc.html @@ -0,0 +1,231 @@ + + + + + +API Help + + + + + + + + + + + + + + + + +
+ +
+
+
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +
    +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
    +
  • +
  • +
    +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:

    +
      +
    • Interfaces
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
    +
  • +
  • +
    +

    Class or Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class Inheritance Diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class or Interface Declaration
    • +
    • Class or Interface Description
    • +
    +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Property Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
    +
      +
    • Field Details
    • +
    • Property Details
    • +
    • Constructor Details
    • +
    • Method Details
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
    +
  • +
  • +
    +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type Declaration
    • +
    • Annotation Type Description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Details
    • +
    +
    +
  • +
  • +
    +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum Declaration
    • +
    • Enum Description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Details
    • +
    +
    +
  • +
  • +
    +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its "Use" page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
    +
  • +
  • +
    +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.
    • +
    +
    +
  • +
  • +
    +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
    +
  • +
  • +
    +

    Index

    +

    The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.

    +
    +
  • +
  • +
    +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
    +
  • +
  • +
    +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
    +
  • +
  • +
    +

    Search

    +

    You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camel-case" abbreviations. For example:

    +
      +
    • j.l.obj will match "java.lang.Object"
    • +
    • InpStr will match "java.io.InputStream"
    • +
    • HM.cK will match "java.util.HashMap.containsKey(Object)"
    • +
    +

    Refer to the Javadoc Search Specification for a full description of search features.

    +
    +
  • +
+
+This help file applies to API documentation generated by the standard doclet.
+
+ +
+
+ + diff --git a/doc/index-files/index-1.html b/doc/index-files/index-1.html new file mode 100644 index 0000000..97feb9e --- /dev/null +++ b/doc/index-files/index-1.html @@ -0,0 +1,139 @@ + + + + + +A-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

A

+
+
AGSZZ - edu.handong.csee.isel.data.Input.SZZMode
+
 
+
AGSZZBICCollector - Class in edu.handong.csee.isel.bic.collector
+
+
The AGSZZBICCollector class do collect BIC(bug introducing commit)
+ using the annotation graph.
+ It implements BICColletor which is interface about collecting BIC
+
+
AGSZZBICCollector() - Constructor for class edu.handong.csee.isel.bic.collector.AGSZZBICCollector
+
 
+
AnnotationGraphBuilder - Class in edu.handong.csee.isel.bic.szz.graph
+
+
The AnnotationGraphBuilder class is for making Annotation Graph
+
+
AnnotationGraphBuilder() - Constructor for class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder
+
 
+
AnnotationGraphBuilderThread - Class in edu.handong.csee.isel.bic.szz.graph
+
+
Create AnnotationGraphBuilder Thread
+
+
AnnotationGraphBuilderThread(Repository, RevsWithPath) - Constructor for class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread
+
 
+
AnnotationGraphModel - Class in edu.handong.csee.isel.bic.szz.graph
+
+
The AnnotationGraphModel class is for HashMap that stores data
+
+
AnnotationGraphModel() - Constructor for class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel
+
 
+
ArffHelper - Class in edu.handong.csee.isel.metric.collector
+
 
+
ArffHelper() - Constructor for class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
author - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-10.html b/doc/index-files/index-10.html new file mode 100644 index 0000000..d96f83b --- /dev/null +++ b/doc/index-files/index-10.html @@ -0,0 +1,133 @@ + + + + + +J-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

J

+
+
JavaASTParser - Class in edu.handong.csee.isel.bic.szz.util
+
 
+
JavaASTParser - Class in edu.handong.csee.isel
+
 
+
JavaASTParser - Class in edu.handong.csee.isel.szz.utils
+
 
+
JavaASTParser(String) - Constructor for class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
JavaASTParser(String) - Constructor for class edu.handong.csee.isel.JavaASTParser
+
 
+
JavaASTParser(String) - Constructor for class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
JIRA - edu.handong.csee.isel.data.Input.Mode
+
 
+
JiraBugIssueCrawler - Class in edu.handong.csee.isel.bfc.collector.jira
+
 
+
JiraBugIssueCrawler(String, String) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler
+
 
+
JiraBugIssueCrawler(String, String, String) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler
+
 
+
jiraProjectKey - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
jiraURL - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
JQLManager - Class in edu.handong.csee.isel.bfc.collector.jira
+
 
+
JQLManager(String) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-11.html b/doc/index-files/index-11.html new file mode 100644 index 0000000..823ae0a --- /dev/null +++ b/doc/index-files/index-11.html @@ -0,0 +1,107 @@ + + + + + +K-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

K

+
+
KEYWORD - edu.handong.csee.isel.data.Input.Mode
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-12.html b/doc/index-files/index-12.html new file mode 100644 index 0000000..b5a8850 --- /dev/null +++ b/doc/index-files/index-12.html @@ -0,0 +1,113 @@ + + + + + +L-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

L

+
+
label - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
Line - Class in edu.handong.csee.isel.bic.szz.model
+
 
+
Line(String, String, String, int, LineType, List<Line>, boolean, boolean, String, String, String) - Constructor for class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
LineType - Enum in edu.handong.csee.isel.bic.szz.model
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-13.html b/doc/index-files/index-13.html new file mode 100644 index 0000000..6f52b7f --- /dev/null +++ b/doc/index-files/index-13.html @@ -0,0 +1,163 @@ + + + + + +M-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

M

+
+
main(String[]) - Static method in class edu.handong.csee.isel.Main
+
 
+
main(String[]) - Static method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
main(String[]) - Static method in class edu.handong.csee.isel.metric.collector.Test
+
 
+
main(String[]) - Static method in class edu.handong.csee.isel.szz.SZZRunner
+
 
+
Main - Class in edu.handong.csee.isel
+
 
+
Main() - Constructor for class edu.handong.csee.isel.Main
+
 
+
makeArff() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
makeArff() - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
makeBFCCollector(List<String>, List<RevCommit>, BFCCollector) - Static method in class edu.handong.csee.isel.Main
+
 
+
makeMergedArff(File, File, List<String>) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
makeMergedDeveloperHistoryArff(File, File, List<String>, String) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
maxSize - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
mergeLineList(List<Line>) - Static method in class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
MetaDataCollector - Class in edu.handong.csee.isel.metric.collector
+
 
+
MetaDataCollector() - Constructor for class edu.handong.csee.isel.metric.collector.MetaDataCollector
+
 
+
MetaDataInfo - Class in edu.handong.csee.isel.metric.metadata
+
 
+
MetaDataInfo() - Constructor for class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
metaDatas - Static variable in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
METRIC - edu.handong.csee.isel.data.Input.TaskType
+
 
+
MetricCollector - Interface in edu.handong.csee.isel.metric
+
 
+
MetricCommand - Class in edu.handong.csee.isel.data.processor.input.command
+
 
+
MetricCommand() - Constructor for class edu.handong.csee.isel.data.processor.input.command.MetricCommand
+
 
+
MetricInfo - Class in edu.handong.csee.isel.data.csv
+
 
+
MetricInfo() - Constructor for class edu.handong.csee.isel.data.csv.MetricInfo
+
 
+
MetricParser - Class in edu.handong.csee.isel.metric.metadata
+
 
+
MetricParser() - Constructor for class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
minSize - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
mode - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
movePeriod(int) - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-14.html b/doc/index-files/index-14.html new file mode 100644 index 0000000..fef4999 --- /dev/null +++ b/doc/index-files/index-14.html @@ -0,0 +1,109 @@ + + + + + +N-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

N

+
+
NoIssuePagesException - Exception in edu.handong.csee.isel.bfc.collector.github
+
 
+
NoIssuePagesException(String) - Constructor for exception edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-15.html b/doc/index-files/index-15.html new file mode 100644 index 0000000..48cb7bd --- /dev/null +++ b/doc/index-files/index-15.html @@ -0,0 +1,107 @@ + + + + + +O-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

O

+
+
outPath - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-16.html b/doc/index-files/index-16.html new file mode 100644 index 0000000..ef40dbe --- /dev/null +++ b/doc/index-files/index-16.html @@ -0,0 +1,183 @@ + + + + + +P-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

P

+
+
parseAuthorID(String) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
parseAuthorID(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
parseCommitAddress(String) - Method in class edu.handong.csee.isel.bfc.collector.github.CommitParser
+
+
Parse commit addresses in bug issue addresses.
+
+
parseCommitUnitInfo(CommitUnitInfo, String, String) - Method in class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
parseDeveloperInfo(MetaDataInfo, HashMap<String, Integer>, String) - Method in class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
parseGithubIssues(String, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
parseIssueAddress(String, String) - Method in class edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
+
Parse the issue addresses of a specific label in Github repository.
+
+
parseNumOfDiffLine(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
parsePatchContents(MetaDataInfo, String, String) - Method in class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
parseReference(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
parseSourceInfo(MetaDataInfo, HashMap<String, SourceFileInfo>, String, String, boolean, String, String, CommitUnitInfo, String) - Method in class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
parsing(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
partitionedAnnotationGraph - Variable in class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread
+
 
+
patch - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
PATCH - edu.handong.csee.isel.data.Input.TaskType
+
 
+
PatchCollector - Interface in edu.handong.csee.isel.patch
+
 
+
PatchCommand - Class in edu.handong.csee.isel.data.processor.input.command
+
 
+
PatchCommand() - Constructor for class edu.handong.csee.isel.data.processor.input.command.PatchCommand
+
 
+
PatchInfo - Class in edu.handong.csee.isel.data.csv
+
 
+
PatchInfo() - Constructor for class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
path - Variable in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
PathRevision - Class in edu.handong.csee.isel.bic.szz.model
+
 
+
PathRevision() - Constructor for class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
PathRevision(String, RevCommit) - Constructor for class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
percent - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
Period - Class in edu.handong.csee.isel.bfc.collector.jira
+
 
+
Period(int, int) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
praseJavaFile(String) - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
praseJavaFile(String) - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
praseJavaFile(String) - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
prepareTreeParser(Repository, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
print(PatchInfo) - Method in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
print(List<CSVInfo>) - Method in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
printCSV(List<CSVInfo>) - Static method in class edu.handong.csee.isel.Main
+
 
+
printer - Variable in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
project - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
projectName - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-17.html b/doc/index-files/index-17.html new file mode 100644 index 0000000..ace50bf --- /dev/null +++ b/doc/index-files/index-17.html @@ -0,0 +1,133 @@ + + + + + +R-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

R

+
+
readBICcsv() - Static method in class edu.handong.csee.isel.Main
+
 
+
readBICCsvFile(String) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
removeComments(String) - Static method in class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
removeComments(String) - Static method in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
removeComments(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
REPLACE - edu.handong.csee.isel.bic.szz.model.LineType
+
 
+
RevsWithPath - Class in edu.handong.csee.isel.bic.szz.model
+
 
+
RevsWithPath() - Constructor for class edu.handong.csee.isel.bic.szz.model.RevsWithPath
+
 
+
run() - Method in class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilderThread
+
 
+
run() - Method in class edu.handong.csee.isel.data.processor.input.command.BICCommand
+
 
+
run() - Method in class edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand
+
 
+
run() - Method in class edu.handong.csee.isel.data.processor.input.command.MetricCommand
+
 
+
run() - Method in class edu.handong.csee.isel.data.processor.input.command.PatchCommand
+
 
+
run() - Method in class edu.handong.csee.isel.data.processor.input.command.Task
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-18.html b/doc/index-files/index-18.html new file mode 100644 index 0000000..0ff8ae7 --- /dev/null +++ b/doc/index-files/index-18.html @@ -0,0 +1,347 @@ + + + + + +S-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

S

+
+
saveResultToCsvFile() - Method in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
setAncestors(List<Line>) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setAuthor(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setAuthorId(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setBFC(List<String>) - Method in interface edu.handong.csee.isel.bic.BICCollector
+
 
+
setBFC(List<String>) - Method in class edu.handong.csee.isel.bic.collector.AGSZZBICCollector
+
+
setting BFC(bug fixing commit)
+
+
setBFC(List<String>) - Method in class edu.handong.csee.isel.bic.collector.CBICCollector
+
 
+
setBFC(List<String>) - Method in class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
setBFC(List<String>) - Method in interface edu.handong.csee.isel.patch.PatchCollector
+
 
+
setBFC(List<String>) - Method in class edu.handong.csee.isel.szz.SZZRunner
+
 
+
setBIC(List<String>) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setBIC(List<String>) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setBIC(List<String>) - Method in class edu.handong.csee.isel.metric.collector.CMetricCollector
+
 
+
setBIC(List<String>) - Method in interface edu.handong.csee.isel.metric.MetricCollector
+
 
+
setBIDate(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setBIPath(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setBISha1(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setCommit(RevCommit) - Method in class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
setCommitAuthor(String) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setCommitDate(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setCommitDay(String) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setCommiter(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setCommitHour(String) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setCommitList(List<RevCommit>) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setCommitList(List<RevCommit>) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setCommitTime(String) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setContent(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setDataType(List<CSVInfo>) - Method in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
setDeveloper(String) - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setDeveloperExperience(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setDirectories(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setDistributionOfModifiedLines(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setEdit(Edit) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setEditList(EditList) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setEnd(int) - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
setEndDate(String) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setEndDate(String) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setFileAge(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setFiles(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setFilteredDueTo(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setFixDate(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setFormatChange(boolean) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setGit(Git) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setGit(Git) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setGit(Git) - Method in class edu.handong.csee.isel.metric.collector.DeveloperHistory
+
 
+
setGitHubLabel(String) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
setGitHubLabel(String) - Method in class edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
 
+
setGitHubURL(String) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
setGitHubURL(String) - Method in class edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
 
+
setIdx(int) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setIsBugCommit(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setIsNoise(boolean) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setJiraProjectKey(String) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
setJiraProjectKey(String) - Method in class edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
 
+
setJiraURL(String) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
setJiraURL(String) - Method in class edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
 
+
setKey(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setLineNum(Integer) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setLineNumInPrevFixRev(int) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setLinesOfCodeBeforeTheChange(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setLineType(LineType) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setMakeDate(String) - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setMidDate(String) - Method in class edu.handong.csee.isel.metric.collector.CMetricCollector
+
 
+
setMidDate(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
setMidDate(String) - Method in interface edu.handong.csee.isel.metric.MetricCollector
+
 
+
setNumOfAddLines(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfBIC() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setNumOfBIC(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfCommits() - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
setNumOfDeleteLines(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfDirectories(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfFiles(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfModify() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setNumOfModifyLines(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfSubsystems(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setNumOfUniqueCommitToTheModifyFiles(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setOutPath(String) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
setOutPath(String) - Method in class edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
 
+
setOutPath(String) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
setPath() - Method in class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
setPath(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setPath(String) - Method in class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
setPath(String) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
setPreviousCommitDate(String) - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setPreviousCommitHash(String) - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
setPreviousCommitHashs(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setProjectName(String) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
setProjectName(String) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setProjectName(String) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setRecentDeveloperExperience(float) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setRecentExperiences(TreeMap<Integer, Integer>) - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
setReferencePath(String) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
setReferencePath(String) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setReferencePath(String) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setRepo(Repository) - Method in class edu.handong.csee.isel.metric.collector.DeveloperHistory
+
 
+
setRepository(Repository) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setRepository(Repository) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setRev(String) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
setREXP(float) - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
setStart(int) - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
setStartDate(String) - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
setStartDate(String) - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
setSubsystems(String) - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
setSumOfDeveloper(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setSumOfSourceRevision(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setTimeBetweenLastAndCurrentCommitDate(int) - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
setWithinHunk(boolean) - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
sourceFileInfo - Variable in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
SourceFileInfo - Class in edu.handong.csee.isel.metric.metadata
+
 
+
SourceFileInfo() - Constructor for class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
startDate - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
storeCSVFile(Connection.Response) - Method in class edu.handong.csee.isel.bfc.collector.jira.FileManager
+
 
+
storeOutputFile(String, String, List<BICInfo>) - Static method in class edu.handong.csee.isel.Utils
+
 
+
storeOutputFile(String, List<BICInfo>) - Static method in class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
szzMode - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
SZZRunner - Class in edu.handong.csee.isel.szz
+
 
+
SZZRunner() - Constructor for class edu.handong.csee.isel.szz.SZZRunner
+
 
+
SZZRunner(Iterable<String>) - Constructor for class edu.handong.csee.isel.szz.SZZRunner
+
 
+
SZZRunner(String) - Constructor for class edu.handong.csee.isel.szz.SZZRunner
+
 
+
SZZRunner(String, Iterable<String>) - Constructor for class edu.handong.csee.isel.szz.SZZRunner
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-19.html b/doc/index-files/index-19.html new file mode 100644 index 0000000..7d132b0 --- /dev/null +++ b/doc/index-files/index-19.html @@ -0,0 +1,127 @@ + + + + + +T-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

T

+
+
Task - Class in edu.handong.csee.isel.data.processor.input.command
+
 
+
Task() - Constructor for class edu.handong.csee.isel.data.processor.input.command.Task
+
 
+
taskType - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
Test - Class in edu.handong.csee.isel.metric.collector
+
 
+
Test() - Constructor for class edu.handong.csee.isel.metric.collector.Test
+
 
+
tooLongName - Static variable in class edu.handong.csee.isel.metric.collector.CMetricCollector
+
 
+
toString() - Method in enum edu.handong.csee.isel.bic.szz.model.LineType
+
 
+
toString() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
Tracer - Class in edu.handong.csee.isel.bic.szz.trace
+
+
The Tracer class is commit tracer
+
+
Tracer() - Constructor for class edu.handong.csee.isel.bic.szz.trace.Tracer
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-2.html b/doc/index-files/index-2.html new file mode 100644 index 0000000..d7e13c1 --- /dev/null +++ b/doc/index-files/index-2.html @@ -0,0 +1,159 @@ + + + + + +B-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

B

+
+
BagOfWordsCollector - Class in edu.handong.csee.isel.metric.collector
+
 
+
BagOfWordsCollector() - Constructor for class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
BFCCollector - Class in edu.handong.csee.isel.bfc
+
 
+
BFCCollector() - Constructor for class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
BFCGitHubCollector - Class in edu.handong.csee.isel.bfc.collector
+
 
+
BFCGitHubCollector() - Constructor for class edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
 
+
BFCJiraCollector - Class in edu.handong.csee.isel.bfc.collector
+
 
+
BFCJiraCollector() - Constructor for class edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
 
+
BFCKeywordCollector - Class in edu.handong.csee.isel.bfc.collector
+
 
+
BFCKeywordCollector() - Constructor for class edu.handong.csee.isel.bfc.collector.BFCKeywordCollector
+
 
+
BIC - edu.handong.csee.isel.data.Input.TaskType
+
 
+
BICCollector - Interface in edu.handong.csee.isel.bic
+
 
+
BICCommand - Class in edu.handong.csee.isel.data.processor.input.command
+
 
+
BICCommand() - Constructor for class edu.handong.csee.isel.data.processor.input.command.BICCommand
+
 
+
BICInfo - Class in edu.handong.csee.isel.bic.szz.data
+
+
The BICInfo class
+ the bic information
+
+
BICInfo - Class in edu.handong.csee.isel.data.csv
+
 
+
BICInfo() - Constructor for class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
BICInfo(String, boolean) - Constructor for class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
BICInfo(String, String, String, Line) - Constructor for class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
BICInfo(String, String, String, String, String, String, int, int, String, boolean) - Constructor for class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
BICpath - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
BSZZ - edu.handong.csee.isel.data.Input.SZZMode
+
 
+
bugKeywords - Variable in class edu.handong.csee.isel.bfc.collector.BFCKeywordCollector
+
 
+
buildAnnotationGraph(Repository, RevsWithPath) - Method in class edu.handong.csee.isel.bic.szz.graph.AnnotationGraphBuilder
+
+
spiting Map RevsWithPath
+ executing AnnotationGraphBuilderThread
+
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-20.html b/doc/index-files/index-20.html new file mode 100644 index 0000000..700be59 --- /dev/null +++ b/doc/index-files/index-20.html @@ -0,0 +1,125 @@ + + + + + +U-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

U

+
+
URLManager - Class in edu.handong.csee.isel.bfc.collector.jira
+
 
+
URLManager(String) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.URLManager
+
 
+
Utils - Class in edu.handong.csee.isel.bic.szz.util
+
 
+
Utils - Class in edu.handong.csee.isel.metric.metadata
+
 
+
Utils - Class in edu.handong.csee.isel.szz.utils
+
 
+
Utils - Class in edu.handong.csee.isel
+
 
+
Utils() - Constructor for class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
Utils() - Constructor for class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
Utils() - Constructor for class edu.handong.csee.isel.szz.utils.Utils
+
 
+
Utils() - Constructor for class edu.handong.csee.isel.Utils
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-21.html b/doc/index-files/index-21.html new file mode 100644 index 0000000..6a28b60 --- /dev/null +++ b/doc/index-files/index-21.html @@ -0,0 +1,141 @@ + + + + + +V-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

V

+
+
valueOf(String) - Static method in enum edu.handong.csee.isel.bic.szz.model.LineType
+
+
Returns the enum constant of this type with the specified name.
+
+
valueOf(String) - Static method in enum edu.handong.csee.isel.data.Input.Mode
+
+
Returns the enum constant of this type with the specified name.
+
+
valueOf(String) - Static method in enum edu.handong.csee.isel.data.Input.SZZMode
+
+
Returns the enum constant of this type with the specified name.
+
+
valueOf(String) - Static method in enum edu.handong.csee.isel.data.Input.TaskType
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum edu.handong.csee.isel.bic.szz.model.LineType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
values() - Static method in enum edu.handong.csee.isel.data.Input.Mode
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
values() - Static method in enum edu.handong.csee.isel.data.Input.SZZMode
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
values() - Static method in enum edu.handong.csee.isel.data.Input.TaskType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-3.html b/doc/index-files/index-3.html new file mode 100644 index 0000000..cb875e7 --- /dev/null +++ b/doc/index-files/index-3.html @@ -0,0 +1,223 @@ + + + + + +C-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

C

+
+
calDate(String, String) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
CBICCollector - Class in edu.handong.csee.isel.bic.collector
+
 
+
CBICCollector() - Constructor for class edu.handong.csee.isel.bic.collector.CBICCollector
+
 
+
Change - Class in edu.handong.csee.isel.szz.data
+
 
+
Change(String, String, int, int) - Constructor for class edu.handong.csee.isel.szz.data.Change
+
 
+
CharacteristicVectorCollector - Class in edu.handong.csee.isel.metric.collector
+
 
+
CharacteristicVectorCollector() - Constructor for class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
CLIConverter - Class in edu.handong.csee.isel.data.processor.input.converter
+
 
+
CLIConverter() - Constructor for class edu.handong.csee.isel.data.processor.input.converter.CLIConverter
+
 
+
CMetricCollector - Class in edu.handong.csee.isel.metric.collector
+
 
+
CMetricCollector(boolean) - Constructor for class edu.handong.csee.isel.metric.collector.CMetricCollector
+
 
+
collect() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
collect() - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
collectBILines(Repository, List<RevCommit>, AnnotationGraphModel, RevsWithPath) - Method in class edu.handong.csee.isel.bic.szz.trace.Tracer
+
+
Find path and line index for tracing
+ Trace
+
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bfc.BFCCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bfc.collector.BFCGitHubCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bfc.collector.BFCJiraCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bfc.collector.BFCKeywordCollector
+
 
+
collectFrom(List<RevCommit>) - Method in interface edu.handong.csee.isel.bic.BICCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bic.collector.AGSZZBICCollector
+
+
Make the annotation graph and than create bic csv file using annotation graph.
+
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.bic.collector.CBICCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.metric.collector.CMetricCollector
+
 
+
collectFrom(List<RevCommit>) - Method in interface edu.handong.csee.isel.metric.MetricCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
collectFrom(List<RevCommit>) - Method in interface edu.handong.csee.isel.patch.PatchCollector
+
 
+
collectFrom(List<RevCommit>) - Method in class edu.handong.csee.isel.szz.SZZRunner
+
+
TODO Let's just print out BIC information and then change return type as + (i.e.
+
+
collectIssueKeys() - Method in class edu.handong.csee.isel.bfc.collector.jira.FileManager
+
 
+
collectRevsWithSpecificPath(List<PathRevision>, List<String>) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
Collect commit list related specific path
+
+
commitAddress - Variable in class edu.handong.csee.isel.bfc.collector.github.CommitParser
+
 
+
CommitCollector - Class in edu.handong.csee.isel.metric.metadata
+
 
+
CommitCollector(Git, String, List<String>, String, String, String, boolean) - Constructor for class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
commitLine - Variable in class edu.handong.csee.isel.bfc.collector.github.CommitParser
+
 
+
commitMessage - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
commitName - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
CommitParser - Class in edu.handong.csee.isel.bfc.collector.github
+
+
Parsing commit addresses and print bug commit contents to .csv file.
+
+
CommitParser() - Constructor for class edu.handong.csee.isel.bfc.collector.github.CommitParser
+
 
+
CommitUnitInfo - Class in edu.handong.csee.isel.metric.metadata
+
 
+
CommitUnitInfo() - Constructor for class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
compareTo(BICInfo) - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
compareTo(BICInfo) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
computeDeveloperInfo(HashMap<String, DeveloperExperienceInfo>, String, String) - Method in class edu.handong.csee.isel.metric.metadata.MetricParser
+
 
+
configurePathRevisionList(Repository, List<RevCommit>) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
Get the path where change exists for all commit lists.
+
+
CONTEXT - edu.handong.csee.isel.bic.szz.model.LineType
+
 
+
countCommitMetrics() - Method in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
countDeveloperCommit(HashMap<String, DeveloperExperienceInfo>, String, String) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
CPatchCollector - Class in edu.handong.csee.isel.patch.collector
+
 
+
CPatchCollector() - Constructor for class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
CSV2ARFF() - Method in class edu.handong.csee.isel.metric.metadata.CommitCollector
+
 
+
CSVInfo - Interface in edu.handong.csee.isel.data
+
 
+
CSVMaker - Class in edu.handong.csee.isel.data.processor
+
 
+
CSVMaker() - Constructor for class edu.handong.csee.isel.data.processor.CSVMaker
+
 
+
cUnit - Variable in class edu.handong.csee.isel.JavaASTParser
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-4.html b/doc/index-files/index-4.html new file mode 100644 index 0000000..0dfd6ec --- /dev/null +++ b/doc/index-files/index-4.html @@ -0,0 +1,149 @@ + + + + + +D-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

D

+
+
date - Variable in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
decreasePeriod() - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
DELETE - edu.handong.csee.isel.bic.szz.model.LineType
+
 
+
DeletedLineInCommits - Class in edu.handong.csee.isel.szz.data
+
 
+
DeletedLineInCommits(String, String, String, String, int, String) - Constructor for class edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
 
+
DeveloperExperienceInfo - Class in edu.handong.csee.isel.metric.metadata
+
 
+
DeveloperExperienceInfo() - Constructor for class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
DeveloperHistory - Class in edu.handong.csee.isel.metric.collector
+
 
+
DeveloperHistory() - Constructor for class edu.handong.csee.isel.metric.collector.DeveloperHistory
+
 
+
DEVELOPERMETRIC - edu.handong.csee.isel.data.Input.TaskType
+
 
+
DeveloperMetricCommand - Class in edu.handong.csee.isel.data.processor.input.command
+
 
+
DeveloperMetricCommand() - Constructor for class edu.handong.csee.isel.data.processor.input.command.DeveloperMetricCommand
+
 
+
diff(Repository, RevTree, RevTree) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
Conduct diff using diffAlgorithm that is MYERS Algorithm and diffComparator that is white space ignore all.
+
+
diff(RevCommit, RevCommit, Repository) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
diff(RevCommit, RevCommit, Repository) - Static method in class edu.handong.csee.isel.Utils
+
 
+
diffAlgorithm - Static variable in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
diffAlgorithm - Static variable in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
diffAlgorithm - Static variable in class edu.handong.csee.isel.Utils
+
 
+
diffComparator - Static variable in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
diffComparator - Static variable in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
diffComparator - Static variable in class edu.handong.csee.isel.Utils
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-5.html b/doc/index-files/index-5.html new file mode 100644 index 0000000..90247e2 --- /dev/null +++ b/doc/index-files/index-5.html @@ -0,0 +1,177 @@ + + + + + +E-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

E

+
+
edu.handong.csee.isel - package edu.handong.csee.isel
+
 
+
edu.handong.csee.isel.bfc - package edu.handong.csee.isel.bfc
+
 
+
edu.handong.csee.isel.bfc.collector - package edu.handong.csee.isel.bfc.collector
+
 
+
edu.handong.csee.isel.bfc.collector.github - package edu.handong.csee.isel.bfc.collector.github
+
 
+
edu.handong.csee.isel.bfc.collector.jira - package edu.handong.csee.isel.bfc.collector.jira
+
 
+
edu.handong.csee.isel.bic - package edu.handong.csee.isel.bic
+
 
+
edu.handong.csee.isel.bic.collector - package edu.handong.csee.isel.bic.collector
+
 
+
edu.handong.csee.isel.bic.szz.data - package edu.handong.csee.isel.bic.szz.data
+
 
+
edu.handong.csee.isel.bic.szz.exception - package edu.handong.csee.isel.bic.szz.exception
+
 
+
edu.handong.csee.isel.bic.szz.graph - package edu.handong.csee.isel.bic.szz.graph
+
 
+
edu.handong.csee.isel.bic.szz.model - package edu.handong.csee.isel.bic.szz.model
+
 
+
edu.handong.csee.isel.bic.szz.trace - package edu.handong.csee.isel.bic.szz.trace
+
 
+
edu.handong.csee.isel.bic.szz.util - package edu.handong.csee.isel.bic.szz.util
+
 
+
edu.handong.csee.isel.data - package edu.handong.csee.isel.data
+
 
+
edu.handong.csee.isel.data.csv - package edu.handong.csee.isel.data.csv
+
 
+
edu.handong.csee.isel.data.processor - package edu.handong.csee.isel.data.processor
+
 
+
edu.handong.csee.isel.data.processor.input - package edu.handong.csee.isel.data.processor.input
+
 
+
edu.handong.csee.isel.data.processor.input.command - package edu.handong.csee.isel.data.processor.input.command
+
 
+
edu.handong.csee.isel.data.processor.input.converter - package edu.handong.csee.isel.data.processor.input.converter
+
 
+
edu.handong.csee.isel.metric - package edu.handong.csee.isel.metric
+
 
+
edu.handong.csee.isel.metric.collector - package edu.handong.csee.isel.metric.collector
+
 
+
edu.handong.csee.isel.metric.metadata - package edu.handong.csee.isel.metric.metadata
+
 
+
edu.handong.csee.isel.patch - package edu.handong.csee.isel.patch
+
 
+
edu.handong.csee.isel.patch.collector - package edu.handong.csee.isel.patch.collector
+
 
+
edu.handong.csee.isel.szz - package edu.handong.csee.isel.szz
+
 
+
edu.handong.csee.isel.szz.data - package edu.handong.csee.isel.szz.data
+
 
+
edu.handong.csee.isel.szz.utils - package edu.handong.csee.isel.szz.utils
+
 
+
EmptyHunkTypeException - Exception in edu.handong.csee.isel.bic.szz.exception
+
 
+
EmptyHunkTypeException() - Constructor for exception edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
 
+
EmptyHunkTypeException(String) - Constructor for exception edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
 
+
EmptyHunkTypeException(String, Throwable) - Constructor for exception edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
 
+
EmptyHunkTypeException(String, Throwable, boolean, boolean) - Constructor for exception edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
 
+
EmptyHunkTypeException(Throwable) - Constructor for exception edu.handong.csee.isel.bic.szz.exception.EmptyHunkTypeException
+
 
+
endDate - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
equals(BICInfo) - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
equals(BICInfo) - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-6.html b/doc/index-files/index-6.html new file mode 100644 index 0000000..78b172f --- /dev/null +++ b/doc/index-files/index-6.html @@ -0,0 +1,123 @@ + + + + + +F-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

F

+
+
fetchBlob(Repository, String, String) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
fetchBlob(Repository, String, String) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
fetchBlob(Repository, String, String) - Static method in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
fetchBlob(Repository, String, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
fetchBlob(Repository, RevCommit, String) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
get the file content using path info and commit info
+
+
FileManager - Class in edu.handong.csee.isel.bfc.collector.jira
+
 
+
FileManager(String, String, String) - Constructor for class edu.handong.csee.isel.bfc.collector.jira.FileManager
+
 
+
findDeveloperDate() - Method in class edu.handong.csee.isel.metric.collector.DeveloperHistory
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-7.html b/doc/index-files/index-7.html new file mode 100644 index 0000000..1e95d81 --- /dev/null +++ b/doc/index-files/index-7.html @@ -0,0 +1,531 @@ + + + + + +G-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

G

+
+
getAncestors() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getArff() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
getArff() - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
getArffFromDirectory(String) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getAuthor() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getAuthor() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getAuthorId() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getBeginOfChild() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getBeginOfParent() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getBFCList(List<String>, List<RevCommit>) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
getBFCLIST(List<String>, List<RevCommit>) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
getBIContent() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getBIDate() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getBIDate() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getBIDate() - Method in class edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
 
+
getBiLineIdx() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getBiPath() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getBIPath() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getBISha1() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getBISha1() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getBuggyDirectory() - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getBuggyDirectory() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
getBuggyDirectory() - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
getClassInstanceCreations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getClassInstanceCreations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getClassInstanceCreations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getCleanDirectory() - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getCleanDirectory() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
getCleanDirectory() - Method in class edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector
+
 
+
getCommit() - Method in class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
getCommitAddress() - Method in class edu.handong.csee.isel.bfc.collector.github.CommitParser
+
 
+
getCommitAuthor() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getCommitDate() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getCommitDay() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getCommiter() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getCommiter() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getCommitHour() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getCommitListFrom(File) - Static method in class edu.handong.csee.isel.Main
+
 
+
getCommitListFrom(File) - Static method in class edu.handong.csee.isel.szz.SZZRunner
+
 
+
getCommitTime() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getCompilationUnit() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getCompilationUnit() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getCompilationUnit() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getConditionalExpressions() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getConditionalExpressions() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getConditionalExpressions() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getContent() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getDayFromCommitTime(RevCommit) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
getDeveloper() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getDeveloperExperience() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getDirectories() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getDistributionOfModifiedLines() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getEdit() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getEditListFromDiff() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getEditListFromDiff(String, String) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
getEditListFromDiff(String, String) - Static method in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
getEditListFromDiff(String, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getEditListFromDiff(Git, String, String, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getEncodedJQL(String) - Method in class edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
 
+
getEnd() - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
getEndOfChild() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getEndOfParent() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getFieldAccesses() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getFieldAccesses() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getFieldAccesses() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getFieldDeclarations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getFieldDeclarations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getFieldDeclarations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getFileAge() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getFileOrder() - Static method in class edu.handong.csee.isel.metric.collector.Test
+
 
+
getFiles() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getFilteredDueTo() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getFixDate() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getFixDate() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getFixSha1() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getFixSha1() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getForStatements() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getForStatements() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getForStatements() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getGitDirectory() - Static method in class edu.handong.csee.isel.Main
+
 
+
getHeaders() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getHeaders() - Method in class edu.handong.csee.isel.data.csv.MetricInfo
+
 
+
getHeaders() - Method in class edu.handong.csee.isel.data.csv.PatchInfo
+
 
+
getHeaders() - Method in interface edu.handong.csee.isel.data.CSVInfo
+
 
+
getHourFromCommitTime(RevCommit) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
getHunkType() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getIdx() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getIfStatements() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getIfStatements() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getIfStatements() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getImportDeclarations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getImportDeclarations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getImportDeclarations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getInfixExpressions() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getInfixExpressions() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getInfixExpressions() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getInputFrom(String[]) - Method in class edu.handong.csee.isel.data.processor.input.converter.CLIConverter
+
 
+
getInputFrom(String[]) - Method in interface edu.handong.csee.isel.data.processor.input.InputConverter
+
 
+
getIsAddedLine() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getIsBugCommit() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getIssueAddress() - Static method in class edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
+
Using issueAddress in another class.
+
+
getJiraBugs() - Method in class edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler
+
 
+
getJQL1(int) - Method in class edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
 
+
getJQL2(int, int) - Method in class edu.handong.csee.isel.bfc.collector.jira.JQLManager
+
 
+
getKey() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getKeyName(String, String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getKeyOrder() - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getLine() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getLineNum() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getLineNum() - Method in class edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
 
+
getLineNum(int) - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getLineNum(int) - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getLineNum(int) - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getLineNumInPrevFixRev() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getLinesOfCodeBeforeTheChange() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getLineType() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getMakeDate() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getMergedBOWArffBetween(BagOfWordsCollector, CharacteristicVectorCollector) - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getMergedDirectoryPath() - Method in class edu.handong.csee.isel.metric.collector.ArffHelper
+
 
+
getMessage() - Method in exception edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException
+
 
+
getMethodDeclarations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getMethodDeclarations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getMethodDeclarations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getMethodInvocations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getMethodInvocations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getMethodInvocations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getMidDate() - Method in class edu.handong.csee.isel.metric.collector.DeveloperHistory
+
 
+
getNumDeletedLines() - Method in class edu.handong.csee.isel.szz.data.Change
+
 
+
getNumOfAddLines() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfBIC() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfBIC() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getNumOfCommits() - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
getNumOfDeleteLines() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfDirectories() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfFiles() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfModify() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getNumOfModifyLines() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfSubsystems() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getNumOfUniqueCommitToTheModifyFiles() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getPackageDeclaration() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getPackageDeclaration() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getPackageDeclaration() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getPatch(DiffEntry, Repository) - Method in class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
getPath() - Method in class edu.handong.csee.isel.bic.szz.data.BICInfo
+
 
+
getPath() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getPath() - Method in class edu.handong.csee.isel.bic.szz.model.PathRevision
+
 
+
getPath() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getPath() - Method in class edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
 
+
getPreviousCommitDate() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getPreviousCommitHash() - Method in class edu.handong.csee.isel.metric.metadata.SourceFileInfo
+
 
+
getPreviousCommitHashs() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getProjectName(String) - Static method in class edu.handong.csee.isel.data.processor.input.converter.CLIConverter
+
 
+
getProjectName(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getRangeOfChild() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getRangeOfParent() - Method in class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
getRecentDeveloperExperience() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getRecentExperiences() - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
getRecord() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getRecordWithoutLineNumInPrevFix() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
getReferencePath() - Static method in class edu.handong.csee.isel.Main
+
 
+
getReferencePath() - Method in class edu.handong.csee.isel.metric.collector.BagOfWordsCollector
+
 
+
getRev() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
getRevs(Git) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
getREXP() - Method in class edu.handong.csee.isel.metric.metadata.DeveloperExperienceInfo
+
 
+
getSha1() - Method in class edu.handong.csee.isel.szz.data.DeletedLineInCommits
+
 
+
getSimpleNames() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getSimpleNames() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getSimpleNames() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getSingleVariableDeclarations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getSingleVariableDeclarations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getSingleVariableDeclarations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getStart() - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
getStringCode() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getStringCode() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getStringCode() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getStringDateTimeFromCommit(RevCommit) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
getStringDateTimeFromCommit(RevCommit) - Static method in class edu.handong.csee.isel.szz.utils.Utils
+
 
+
getStringDateTimeFromCommit(RevCommit) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getStringDateTimeFromCommitTime(int) - Static method in class edu.handong.csee.isel.metric.metadata.Utils
+
 
+
getStringDateTimeFromCommitTime(int) - Static method in class edu.handong.csee.isel.Utils
+
 
+
getStringDateTimeFromCommitTime(RevCommit) - Static method in class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
getSubsystems() - Method in class edu.handong.csee.isel.metric.metadata.CommitUnitInfo
+
 
+
getSumOfDeveloper() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getSumOfSourceRevision() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getTargetPaths(Repository, List<RevCommit>) - Static method in class edu.handong.csee.isel.bic.szz.util.GitUtils
+
+
collect target path from bug fixing commit list.
+ only java file path and file with change.
+
+
getTimeBetweenLastAndCurrentCommitDate() - Method in class edu.handong.csee.isel.metric.metadata.MetaDataInfo
+
 
+
getType(Expression, String, Repository, String) - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getType(Expression, String, Repository, String) - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getType(Expression, String, Repository, String) - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getTypeDeclarations() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getTypeDeclarations() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getTypeDeclarations() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getTypeOfSimpleName(ASTNode, String) - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getTypeOfSimpleName(ASTNode, String) - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getTypeOfSimpleName(ASTNode, String) - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getURL(String) - Method in class edu.handong.csee.isel.bfc.collector.jira.URLManager
+
 
+
getVariableDeclarationFragments() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getVariableDeclarationFragments() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getVariableDeclarationFragments() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
getWhileStatements() - Method in class edu.handong.csee.isel.bic.szz.util.JavaASTParser
+
 
+
getWhileStatements() - Method in class edu.handong.csee.isel.JavaASTParser
+
 
+
getWhileStatements() - Method in class edu.handong.csee.isel.szz.utils.JavaASTParser
+
 
+
gitClone(String) - Static method in class edu.handong.csee.isel.Utils
+
 
+
gitDirectory - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
GITHUB - edu.handong.csee.isel.data.Input.Mode
+
 
+
gitRemoteURI - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
gitURL - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
GitUtils - Class in edu.handong.csee.isel.bic.szz.util
+
+
The GitUtils class
+ collects of functions necessary to execute AG_SZZ
+
+
GitUtils() - Constructor for class edu.handong.csee.isel.bic.szz.util.GitUtils
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-8.html b/doc/index-files/index-8.html new file mode 100644 index 0000000..72b41d8 --- /dev/null +++ b/doc/index-files/index-8.html @@ -0,0 +1,111 @@ + + + + + +H-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

H

+
+
headers - Static variable in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
Hunk - Class in edu.handong.csee.isel.bic.szz.model
+
 
+
Hunk(String, int, int, int, int) - Constructor for class edu.handong.csee.isel.bic.szz.model.Hunk
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index-files/index-9.html b/doc/index-files/index-9.html new file mode 100644 index 0000000..4a316d5 --- /dev/null +++ b/doc/index-files/index-9.html @@ -0,0 +1,173 @@ + + + + + +I-Index + + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+
A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages + + +

I

+
+
increasePeriod() - Method in class edu.handong.csee.isel.bfc.collector.jira.Period
+
 
+
Input - Class in edu.handong.csee.isel.data
+
 
+
Input() - Constructor for class edu.handong.csee.isel.data.Input
+
 
+
Input.Mode - Enum in edu.handong.csee.isel.data
+
 
+
Input.SZZMode - Enum in edu.handong.csee.isel.data
+
 
+
Input.TaskType - Enum in edu.handong.csee.isel.data
+
 
+
InputConverter - Interface in edu.handong.csee.isel.data.processor.input
+
 
+
INSERT - edu.handong.csee.isel.bic.szz.model.LineType
+
 
+
InvalidDomainException - Exception in edu.handong.csee.isel.bfc.collector.jira
+
 
+
InvalidDomainException() - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
 
+
InvalidDomainException(String) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
 
+
InvalidDomainException(String, Throwable) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
 
+
InvalidDomainException(String, Throwable, boolean, boolean) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
 
+
InvalidDomainException(Throwable) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException
+
 
+
InvalidProjectKeyException - Exception in edu.handong.csee.isel.bfc.collector.jira
+
 
+
InvalidProjectKeyException() - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
 
+
InvalidProjectKeyException(String) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
 
+
InvalidProjectKeyException(String, Throwable) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
 
+
InvalidProjectKeyException(String, Throwable, boolean, boolean) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
 
+
InvalidProjectKeyException(Throwable) - Constructor for exception edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException
+
 
+
isBFC(RevCommit, List<String>) - Static method in class edu.handong.csee.isel.Utils
+
 
+
isExceededcondition(String, int, int) - Static method in class edu.handong.csee.isel.Utils
+
 
+
isFormatChange() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
isNoise() - Method in class edu.handong.csee.isel.data.csv.BICInfo
+
 
+
isStartWithMinus(String) - Method in class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
isStartWithPlus(String) - Method in class edu.handong.csee.isel.patch.collector.CPatchCollector
+
 
+
issueAddress - Static variable in class edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
+
Save parsing Github issues addresses.
+
+
issueKeyWord - Static variable in class edu.handong.csee.isel.data.Input
+
 
+
IssueLinkParser - Class in edu.handong.csee.isel.bfc.collector.github
+
+
Parse the issue addresses class.
+
+
IssueLinkParser() - Constructor for class edu.handong.csee.isel.bfc.collector.github.IssueLinkParser
+
 
+
isWhitespace(String) - Static method in class edu.handong.csee.isel.bic.szz.util.Utils
+
 
+
isWithinHunk() - Method in class edu.handong.csee.isel.bic.szz.model.Line
+
 
+
+A B C D E F G H I J K L M N O P R S T U V 
All Classes|All Packages
+
+ +
+
+ + diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..b9e96a4 --- /dev/null +++ b/doc/index.html @@ -0,0 +1,218 @@ + + + + + +Overview + + + + + + + + + + + + + + + + +
+ + +
+ + diff --git a/doc/member-search-index.js b/doc/member-search-index.js new file mode 100644 index 0000000..0df02a0 --- /dev/null +++ b/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"edu.handong.csee.isel.data","c":"Input.SZZMode","l":"AGSZZ"},{"p":"edu.handong.csee.isel.bic.collector","c":"AGSZZBICCollector","l":"AGSZZBICCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphBuilder","l":"AnnotationGraphBuilder()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphBuilderThread","l":"AnnotationGraphBuilderThread(Repository, RevsWithPath)","url":"%3Cinit%3E(org.eclipse.jgit.lib.Repository,edu.handong.csee.isel.bic.szz.model.RevsWithPath)"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphModel","l":"AnnotationGraphModel()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"ArffHelper()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"author"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"BagOfWordsCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"BFCCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCGitHubCollector","l":"BFCGitHubCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCJiraCollector","l":"BFCJiraCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCKeywordCollector","l":"BFCKeywordCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"BIC"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"BICCommand","l":"BICCommand()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"BICInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"BICInfo(String, boolean)","url":"%3Cinit%3E(java.lang.String,boolean)"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"BICInfo(String, String, String, Line)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,edu.handong.csee.isel.bic.szz.model.Line)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"BICInfo(String, String, String, String, String, String, int, int, String, boolean)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,int,java.lang.String,boolean)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"BICpath"},{"p":"edu.handong.csee.isel.data","c":"Input.SZZMode","l":"BSZZ"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCKeywordCollector","l":"bugKeywords"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphBuilder","l":"buildAnnotationGraph(Repository, RevsWithPath)","url":"buildAnnotationGraph(org.eclipse.jgit.lib.Repository,edu.handong.csee.isel.bic.szz.model.RevsWithPath)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"calDate(String, String)","url":"calDate(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.collector","c":"CBICCollector","l":"CBICCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.szz.data","c":"Change","l":"Change(String, String, int, int)","url":"%3Cinit%3E(java.lang.String,java.lang.String,int,int)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"CharacteristicVectorCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.processor.input.converter","c":"CLIConverter","l":"CLIConverter()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CMetricCollector","l":"CMetricCollector(boolean)","url":"%3Cinit%3E(boolean)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"collect()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"collect()"},{"p":"edu.handong.csee.isel.bic.szz.trace","c":"Tracer","l":"collectBILines(Repository, List, AnnotationGraphModel, RevsWithPath)","url":"collectBILines(org.eclipse.jgit.lib.Repository,java.util.List,edu.handong.csee.isel.bic.szz.graph.AnnotationGraphModel,edu.handong.csee.isel.bic.szz.model.RevsWithPath)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCGitHubCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCJiraCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCKeywordCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bic","c":"BICCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bic.collector","c":"AGSZZBICCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bic.collector","c":"CBICCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.metric","c":"MetricCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CMetricCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.patch","c":"PatchCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"collectFrom(List)","url":"collectFrom(java.util.List)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"FileManager","l":"collectIssueKeys()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"collectRevsWithSpecificPath(List, List)","url":"collectRevsWithSpecificPath(java.util.List,java.util.List)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"CommitParser","l":"commitAddress"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"CommitCollector(Git, String, List, String, String, String, boolean)","url":"%3Cinit%3E(org.eclipse.jgit.api.Git,java.lang.String,java.util.List,java.lang.String,java.lang.String,java.lang.String,boolean)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"CommitParser","l":"commitLine"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"commitMessage"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"commitName"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"CommitParser","l":"CommitParser()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"CommitUnitInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"compareTo(BICInfo)","url":"compareTo(edu.handong.csee.isel.bic.szz.data.BICInfo)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"compareTo(BICInfo)","url":"compareTo(edu.handong.csee.isel.data.csv.BICInfo)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"computeDeveloperInfo(HashMap, String, String)","url":"computeDeveloperInfo(java.util.HashMap,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"configurePathRevisionList(Repository, List)","url":"configurePathRevisionList(org.eclipse.jgit.lib.Repository,java.util.List)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"CONTEXT"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"countCommitMetrics()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"countDeveloperCommit(HashMap, String, String)","url":"countDeveloperCommit(java.util.HashMap,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"CPatchCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"CSV2ARFF()"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"CSVMaker()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"cUnit"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"date"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"decreasePeriod()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"DELETE"},{"p":"edu.handong.csee.isel.szz.data","c":"DeletedLineInCommits","l":"DeletedLineInCommits(String, String, String, String, int, String)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"DeveloperExperienceInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.collector","c":"DeveloperHistory","l":"DeveloperHistory()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"DEVELOPERMETRIC"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"DeveloperMetricCommand","l":"DeveloperMetricCommand()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"diff(Repository, RevTree, RevTree)","url":"diff(org.eclipse.jgit.lib.Repository,org.eclipse.jgit.revwalk.RevTree,org.eclipse.jgit.revwalk.RevTree)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"diff(RevCommit, RevCommit, Repository)","url":"diff(org.eclipse.jgit.revwalk.RevCommit,org.eclipse.jgit.revwalk.RevCommit,org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"diff(RevCommit, RevCommit, Repository)","url":"diff(org.eclipse.jgit.revwalk.RevCommit,org.eclipse.jgit.revwalk.RevCommit,org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"diffAlgorithm"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"diffAlgorithm"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"diffAlgorithm"},{"p":"edu.handong.csee.isel","c":"Utils","l":"diffComparator"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"diffComparator"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"diffComparator"},{"p":"edu.handong.csee.isel.bic.szz.exception","c":"EmptyHunkTypeException","l":"EmptyHunkTypeException()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.exception","c":"EmptyHunkTypeException","l":"EmptyHunkTypeException(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.exception","c":"EmptyHunkTypeException","l":"EmptyHunkTypeException(String, Throwable)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"edu.handong.csee.isel.bic.szz.exception","c":"EmptyHunkTypeException","l":"EmptyHunkTypeException(String, Throwable, boolean, boolean)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable,boolean,boolean)"},{"p":"edu.handong.csee.isel.bic.szz.exception","c":"EmptyHunkTypeException","l":"EmptyHunkTypeException(Throwable)","url":"%3Cinit%3E(java.lang.Throwable)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"endDate"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"equals(BICInfo)","url":"equals(edu.handong.csee.isel.bic.szz.data.BICInfo)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"equals(BICInfo)","url":"equals(edu.handong.csee.isel.data.csv.BICInfo)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"fetchBlob(Repository, RevCommit, String)","url":"fetchBlob(org.eclipse.jgit.lib.Repository,org.eclipse.jgit.revwalk.RevCommit,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"fetchBlob(Repository, String, String)","url":"fetchBlob(org.eclipse.jgit.lib.Repository,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"fetchBlob(Repository, String, String)","url":"fetchBlob(org.eclipse.jgit.lib.Repository,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"fetchBlob(Repository, String, String)","url":"fetchBlob(org.eclipse.jgit.lib.Repository,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"fetchBlob(Repository, String, String)","url":"fetchBlob(org.eclipse.jgit.lib.Repository,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"FileManager","l":"FileManager(String, String, String)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"DeveloperHistory","l":"findDeveloperDate()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getAncestors()"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"getArff()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"getArff()"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getArffFromDirectory(String)","url":"getArffFromDirectory(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getAuthor()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getAuthor()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getAuthorId()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getBeginOfChild()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getBeginOfParent()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"getBFCList(List, List)","url":"getBFCList(java.util.List,java.util.List)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"getBFCLIST(List, List)","url":"getBFCLIST(java.util.List,java.util.List)"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getBIContent()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getBIDate()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getBIDate()"},{"p":"edu.handong.csee.isel.szz.data","c":"DeletedLineInCommits","l":"getBIDate()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getBiLineIdx()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getBiPath()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getBIPath()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getBISha1()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getBISha1()"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getBuggyDirectory()"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"getBuggyDirectory()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"getBuggyDirectory()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getClassInstanceCreations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getClassInstanceCreations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getClassInstanceCreations()"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getCleanDirectory()"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"getCleanDirectory()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"getCleanDirectory()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"getCommit()"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"CommitParser","l":"getCommitAddress()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getCommitAuthor()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getCommitDate()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getCommitDay()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getCommiter()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getCommiter()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getCommitHour()"},{"p":"edu.handong.csee.isel","c":"Main","l":"getCommitListFrom(File)","url":"getCommitListFrom(java.io.File)"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"getCommitListFrom(File)","url":"getCommitListFrom(java.io.File)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getCommitTime()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getCompilationUnit()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getCompilationUnit()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getCompilationUnit()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getConditionalExpressions()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getConditionalExpressions()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getConditionalExpressions()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getContent()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"getDayFromCommitTime(RevCommit)","url":"getDayFromCommitTime(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getDeveloper()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getDeveloperExperience()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getDirectories()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getDistributionOfModifiedLines()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getEdit()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getEditListFromDiff()"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getEditListFromDiff(Git, String, String, String)","url":"getEditListFromDiff(org.eclipse.jgit.api.Git,java.lang.String,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getEditListFromDiff(String, String)","url":"getEditListFromDiff(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"getEditListFromDiff(String, String)","url":"getEditListFromDiff(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"getEditListFromDiff(String, String)","url":"getEditListFromDiff(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JQLManager","l":"getEncodedJQL(String)","url":"getEncodedJQL(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"getEnd()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getEndOfChild()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getEndOfParent()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getFieldAccesses()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getFieldAccesses()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getFieldAccesses()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getFieldDeclarations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getFieldDeclarations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getFieldDeclarations()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getFileAge()"},{"p":"edu.handong.csee.isel.metric.collector","c":"Test","l":"getFileOrder()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getFiles()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getFilteredDueTo()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getFixDate()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getFixDate()"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getFixSha1()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getFixSha1()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getForStatements()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getForStatements()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getForStatements()"},{"p":"edu.handong.csee.isel","c":"Main","l":"getGitDirectory()"},{"p":"edu.handong.csee.isel.data","c":"CSVInfo","l":"getHeaders()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getHeaders()"},{"p":"edu.handong.csee.isel.data.csv","c":"MetricInfo","l":"getHeaders()"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"getHeaders()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"getHourFromCommitTime(RevCommit)","url":"getHourFromCommitTime(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getHunkType()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getIdx()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getIfStatements()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getIfStatements()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getIfStatements()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getImportDeclarations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getImportDeclarations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getImportDeclarations()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getInfixExpressions()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getInfixExpressions()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getInfixExpressions()"},{"p":"edu.handong.csee.isel.data.processor.input","c":"InputConverter","l":"getInputFrom(String[])","url":"getInputFrom(java.lang.String[])"},{"p":"edu.handong.csee.isel.data.processor.input.converter","c":"CLIConverter","l":"getInputFrom(String[])","url":"getInputFrom(java.lang.String[])"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getIsAddedLine()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getIsBugCommit()"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"IssueLinkParser","l":"getIssueAddress()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JiraBugIssueCrawler","l":"getJiraBugs()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JQLManager","l":"getJQL1(int)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JQLManager","l":"getJQL2(int, int)","url":"getJQL2(int,int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getKey()"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getKeyName(String, String)","url":"getKeyName(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getKeyOrder()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getLine()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getLineNum()"},{"p":"edu.handong.csee.isel.szz.data","c":"DeletedLineInCommits","l":"getLineNum()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getLineNum(int)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getLineNum(int)"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getLineNum(int)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getLineNumInPrevFixRev()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getLinesOfCodeBeforeTheChange()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getLineType()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getMakeDate()"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getMergedBOWArffBetween(BagOfWordsCollector, CharacteristicVectorCollector)","url":"getMergedBOWArffBetween(edu.handong.csee.isel.metric.collector.BagOfWordsCollector,edu.handong.csee.isel.metric.collector.CharacteristicVectorCollector)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"getMergedDirectoryPath()"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"NoIssuePagesException","l":"getMessage()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getMethodDeclarations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getMethodDeclarations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getMethodDeclarations()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getMethodInvocations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getMethodInvocations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getMethodInvocations()"},{"p":"edu.handong.csee.isel.metric.collector","c":"DeveloperHistory","l":"getMidDate()"},{"p":"edu.handong.csee.isel.szz.data","c":"Change","l":"getNumDeletedLines()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfAddLines()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfBIC()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getNumOfBIC()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"getNumOfCommits()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfDeleteLines()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfDirectories()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfFiles()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getNumOfModify()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfModifyLines()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfSubsystems()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getNumOfUniqueCommitToTheModifyFiles()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getPackageDeclaration()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getPackageDeclaration()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getPackageDeclaration()"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"getPatch(DiffEntry, Repository)","url":"getPatch(org.eclipse.jgit.diff.DiffEntry,org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel.bic.szz.data","c":"BICInfo","l":"getPath()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getPath()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"getPath()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getPath()"},{"p":"edu.handong.csee.isel.szz.data","c":"DeletedLineInCommits","l":"getPath()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getPreviousCommitDate()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"getPreviousCommitHash()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getPreviousCommitHashs()"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getProjectName(String)","url":"getProjectName(java.lang.String)"},{"p":"edu.handong.csee.isel.data.processor.input.converter","c":"CLIConverter","l":"getProjectName(String)","url":"getProjectName(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getRangeOfChild()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"getRangeOfParent()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getRecentDeveloperExperience()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"getRecentExperiences()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getRecord()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"getRecordWithoutLineNumInPrevFix()"},{"p":"edu.handong.csee.isel","c":"Main","l":"getReferencePath()"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"getReferencePath()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"getRev()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"getRevs(Git)","url":"getRevs(org.eclipse.jgit.api.Git)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"getREXP()"},{"p":"edu.handong.csee.isel.szz.data","c":"DeletedLineInCommits","l":"getSha1()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getSimpleNames()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getSimpleNames()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getSimpleNames()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getSingleVariableDeclarations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getSingleVariableDeclarations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getSingleVariableDeclarations()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"getStart()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getStringCode()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getStringCode()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getStringCode()"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getStringDateTimeFromCommit(RevCommit)","url":"getStringDateTimeFromCommit(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"getStringDateTimeFromCommit(RevCommit)","url":"getStringDateTimeFromCommit(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"getStringDateTimeFromCommit(RevCommit)","url":"getStringDateTimeFromCommit(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"getStringDateTimeFromCommitTime(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"getStringDateTimeFromCommitTime(int)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"getStringDateTimeFromCommitTime(RevCommit)","url":"getStringDateTimeFromCommitTime(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"getSubsystems()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getSumOfDeveloper()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getSumOfSourceRevision()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"getTargetPaths(Repository, List)","url":"getTargetPaths(org.eclipse.jgit.lib.Repository,java.util.List)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"getTimeBetweenLastAndCurrentCommitDate()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getType(Expression, String, Repository, String)","url":"getType(org.eclipse.jdt.core.dom.Expression,java.lang.String,org.eclipse.jgit.lib.Repository,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getType(Expression, String, Repository, String)","url":"getType(org.eclipse.jdt.core.dom.Expression,java.lang.String,org.eclipse.jgit.lib.Repository,java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getType(Expression, String, Repository, String)","url":"getType(org.eclipse.jdt.core.dom.Expression,java.lang.String,org.eclipse.jgit.lib.Repository,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getTypeDeclarations()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getTypeDeclarations()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getTypeDeclarations()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getTypeOfSimpleName(ASTNode, String)","url":"getTypeOfSimpleName(org.eclipse.jdt.core.dom.ASTNode,java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getTypeOfSimpleName(ASTNode, String)","url":"getTypeOfSimpleName(org.eclipse.jdt.core.dom.ASTNode,java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getTypeOfSimpleName(ASTNode, String)","url":"getTypeOfSimpleName(org.eclipse.jdt.core.dom.ASTNode,java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"URLManager","l":"getURL(String)","url":"getURL(java.lang.String)"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getVariableDeclarationFragments()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getVariableDeclarationFragments()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getVariableDeclarationFragments()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"getWhileStatements()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"getWhileStatements()"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"getWhileStatements()"},{"p":"edu.handong.csee.isel","c":"Utils","l":"gitClone(String)","url":"gitClone(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"gitDirectory"},{"p":"edu.handong.csee.isel.data","c":"Input.Mode","l":"GITHUB"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"gitRemoteURI"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"gitURL"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"GitUtils","l":"GitUtils()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"headers"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Hunk","l":"Hunk(String, int, int, int, int)","url":"%3Cinit%3E(java.lang.String,int,int,int,int)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"increasePeriod()"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"Input()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"INSERT"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidDomainException","l":"InvalidDomainException()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidDomainException","l":"InvalidDomainException(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidDomainException","l":"InvalidDomainException(String, Throwable)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidDomainException","l":"InvalidDomainException(String, Throwable, boolean, boolean)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable,boolean,boolean)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidDomainException","l":"InvalidDomainException(Throwable)","url":"%3Cinit%3E(java.lang.Throwable)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidProjectKeyException","l":"InvalidProjectKeyException()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidProjectKeyException","l":"InvalidProjectKeyException(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidProjectKeyException","l":"InvalidProjectKeyException(String, Throwable)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidProjectKeyException","l":"InvalidProjectKeyException(String, Throwable, boolean, boolean)","url":"%3Cinit%3E(java.lang.String,java.lang.Throwable,boolean,boolean)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"InvalidProjectKeyException","l":"InvalidProjectKeyException(Throwable)","url":"%3Cinit%3E(java.lang.Throwable)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"isBFC(RevCommit, List)","url":"isBFC(org.eclipse.jgit.revwalk.RevCommit,java.util.List)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"isExceededcondition(String, int, int)","url":"isExceededcondition(java.lang.String,int,int)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"isFormatChange()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"isNoise()"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"isStartWithMinus(String)","url":"isStartWithMinus(java.lang.String)"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"isStartWithPlus(String)","url":"isStartWithPlus(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"IssueLinkParser","l":"issueAddress"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"issueKeyWord"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"IssueLinkParser","l":"IssueLinkParser()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"isWhitespace(String)","url":"isWhitespace(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"isWithinHunk()"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"JavaASTParser(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"JavaASTParser(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"JavaASTParser(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input.Mode","l":"JIRA"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JiraBugIssueCrawler","l":"JiraBugIssueCrawler(String, String)","url":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JiraBugIssueCrawler","l":"JiraBugIssueCrawler(String, String, String)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"jiraProjectKey"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"jiraURL"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"JQLManager","l":"JQLManager(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input.Mode","l":"KEYWORD"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"label"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"Line(String, String, String, int, LineType, List, boolean, boolean, String, String, String)","url":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,int,edu.handong.csee.isel.bic.szz.model.LineType,java.util.List,boolean,boolean,java.lang.String,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Main","l":"Main()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel","c":"Main","l":"main(String[])","url":"main(java.lang.String[])"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"main(String[])","url":"main(java.lang.String[])"},{"p":"edu.handong.csee.isel.metric.collector","c":"Test","l":"main(String[])","url":"main(java.lang.String[])"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"main(String[])","url":"main(java.lang.String[])"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"makeArff()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"makeArff()"},{"p":"edu.handong.csee.isel","c":"Main","l":"makeBFCCollector(List, List, BFCCollector)","url":"makeBFCCollector(java.util.List,java.util.List,edu.handong.csee.isel.bfc.BFCCollector)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"makeMergedArff(File, File, List)","url":"makeMergedArff(java.io.File,java.io.File,java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"makeMergedDeveloperHistoryArff(File, File, List, String)","url":"makeMergedDeveloperHistoryArff(java.io.File,java.io.File,java.util.List,java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"maxSize"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"mergeLineList(List)","url":"mergeLineList(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"MetaDataCollector","l":"MetaDataCollector()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"MetaDataInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"metaDatas"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"METRIC"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"MetricCommand","l":"MetricCommand()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"MetricInfo","l":"MetricInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"MetricParser()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"minSize"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"mode"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"movePeriod(int)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"NoIssuePagesException","l":"NoIssuePagesException(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"outPath"},{"p":"edu.handong.csee.isel","c":"Utils","l":"parseAuthorID(String)","url":"parseAuthorID(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"parseAuthorID(String)","url":"parseAuthorID(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"CommitParser","l":"parseCommitAddress(String)","url":"parseCommitAddress(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"parseCommitUnitInfo(CommitUnitInfo, String, String)","url":"parseCommitUnitInfo(edu.handong.csee.isel.metric.metadata.CommitUnitInfo,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"parseDeveloperInfo(MetaDataInfo, HashMap, String)","url":"parseDeveloperInfo(edu.handong.csee.isel.metric.metadata.MetaDataInfo,java.util.HashMap,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"parseGithubIssues(String, String)","url":"parseGithubIssues(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector.github","c":"IssueLinkParser","l":"parseIssueAddress(String, String)","url":"parseIssueAddress(java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"parseNumOfDiffLine(String)","url":"parseNumOfDiffLine(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"parsePatchContents(MetaDataInfo, String, String)","url":"parsePatchContents(edu.handong.csee.isel.metric.metadata.MetaDataInfo,java.lang.String,java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"parseReference(String)","url":"parseReference(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetricParser","l":"parseSourceInfo(MetaDataInfo, HashMap, String, String, boolean, String, String, CommitUnitInfo, String)","url":"parseSourceInfo(edu.handong.csee.isel.metric.metadata.MetaDataInfo,java.util.HashMap,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String,edu.handong.csee.isel.metric.metadata.CommitUnitInfo,java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"parsing(String)","url":"parsing(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphBuilderThread","l":"partitionedAnnotationGraph"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"patch"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"PATCH"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"PatchCommand","l":"PatchCommand()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"PatchInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"path"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"PathRevision()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"PathRevision(String, RevCommit)","url":"%3Cinit%3E(java.lang.String,org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"percent"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"Period(int, int)","url":"%3Cinit%3E(int,int)"},{"p":"edu.handong.csee.isel","c":"JavaASTParser","l":"praseJavaFile(String)","url":"praseJavaFile(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"JavaASTParser","l":"praseJavaFile(String)","url":"praseJavaFile(java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"JavaASTParser","l":"praseJavaFile(String)","url":"praseJavaFile(java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"prepareTreeParser(Repository, String)","url":"prepareTreeParser(org.eclipse.jgit.lib.Repository,java.lang.String)"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"print(List)","url":"print(java.util.List)"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"print(PatchInfo)","url":"print(edu.handong.csee.isel.data.csv.PatchInfo)"},{"p":"edu.handong.csee.isel","c":"Main","l":"printCSV(List)","url":"printCSV(java.util.List)"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"printer"},{"p":"edu.handong.csee.isel.data.csv","c":"PatchInfo","l":"project"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"projectName"},{"p":"edu.handong.csee.isel","c":"Main","l":"readBICcsv()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"readBICCsvFile(String)","url":"readBICCsvFile(java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"removeComments(String)","url":"removeComments(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"removeComments(String)","url":"removeComments(java.lang.String)"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"removeComments(String)","url":"removeComments(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"REPLACE"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"RevsWithPath","l":"RevsWithPath()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.graph","c":"AnnotationGraphBuilderThread","l":"run()"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"BICCommand","l":"run()"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"DeveloperMetricCommand","l":"run()"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"MetricCommand","l":"run()"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"PatchCommand","l":"run()"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"Task","l":"run()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"saveResultToCsvFile()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setAncestors(List)","url":"setAncestors(java.util.List)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setAuthor(String)","url":"setAuthor(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setAuthorId(String)","url":"setAuthorId(java.lang.String)"},{"p":"edu.handong.csee.isel.bic","c":"BICCollector","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.bic.collector","c":"AGSZZBICCollector","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.bic.collector","c":"CBICCollector","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.patch","c":"PatchCollector","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.patch.collector","c":"CPatchCollector","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"setBFC(List)","url":"setBFC(java.util.List)"},{"p":"edu.handong.csee.isel.metric","c":"MetricCollector","l":"setBIC(List)","url":"setBIC(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setBIC(List)","url":"setBIC(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CMetricCollector","l":"setBIC(List)","url":"setBIC(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setBIC(List)","url":"setBIC(java.util.List)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setBIDate(String)","url":"setBIDate(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setBIPath(String)","url":"setBIPath(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setBISha1(String)","url":"setBISha1(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"setCommit(RevCommit)","url":"setCommit(org.eclipse.jgit.revwalk.RevCommit)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setCommitAuthor(String)","url":"setCommitAuthor(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setCommitDate(String)","url":"setCommitDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setCommitDay(String)","url":"setCommitDay(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setCommiter(String)","url":"setCommiter(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setCommitHour(String)","url":"setCommitHour(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setCommitList(List)","url":"setCommitList(java.util.List)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setCommitList(List)","url":"setCommitList(java.util.List)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setCommitTime(String)","url":"setCommitTime(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setContent(String)","url":"setContent(java.lang.String)"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"setDataType(List)","url":"setDataType(java.util.List)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setDeveloper(String)","url":"setDeveloper(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setDeveloperExperience(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setDirectories(String)","url":"setDirectories(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setDistributionOfModifiedLines(int)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setEdit(Edit)","url":"setEdit(org.eclipse.jgit.diff.Edit)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setEditList(EditList)","url":"setEditList(org.eclipse.jgit.diff.EditList)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"setEnd(int)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setEndDate(String)","url":"setEndDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setEndDate(String)","url":"setEndDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setFileAge(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setFiles(String)","url":"setFiles(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setFilteredDueTo(String)","url":"setFilteredDueTo(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setFixDate(String)","url":"setFixDate(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setFormatChange(boolean)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setGit(Git)","url":"setGit(org.eclipse.jgit.api.Git)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setGit(Git)","url":"setGit(org.eclipse.jgit.api.Git)"},{"p":"edu.handong.csee.isel.metric.collector","c":"DeveloperHistory","l":"setGit(Git)","url":"setGit(org.eclipse.jgit.api.Git)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"setGitHubLabel(String)","url":"setGitHubLabel(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCGitHubCollector","l":"setGitHubLabel(String)","url":"setGitHubLabel(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"setGitHubURL(String)","url":"setGitHubURL(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCGitHubCollector","l":"setGitHubURL(String)","url":"setGitHubURL(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setIdx(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setIsBugCommit(int)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setIsNoise(boolean)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"setJiraProjectKey(String)","url":"setJiraProjectKey(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCJiraCollector","l":"setJiraProjectKey(String)","url":"setJiraProjectKey(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"setJiraURL(String)","url":"setJiraURL(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCJiraCollector","l":"setJiraURL(String)","url":"setJiraURL(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setKey(String)","url":"setKey(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setLineNum(Integer)","url":"setLineNum(java.lang.Integer)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setLineNumInPrevFixRev(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setLinesOfCodeBeforeTheChange(int)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setLineType(LineType)","url":"setLineType(edu.handong.csee.isel.bic.szz.model.LineType)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setMakeDate(String)","url":"setMakeDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric","c":"MetricCollector","l":"setMidDate(String)","url":"setMidDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CMetricCollector","l":"setMidDate(String)","url":"setMidDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"setMidDate(String)","url":"setMidDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfAddLines(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setNumOfBIC()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfBIC(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"setNumOfCommits()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfDeleteLines(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfDirectories(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfFiles(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setNumOfModify()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfModifyLines(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfSubsystems(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setNumOfUniqueCommitToTheModifyFiles(int)"},{"p":"edu.handong.csee.isel.bfc","c":"BFCCollector","l":"setOutPath(String)","url":"setOutPath(java.lang.String)"},{"p":"edu.handong.csee.isel.bfc.collector","c":"BFCJiraCollector","l":"setOutPath(String)","url":"setOutPath(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"setOutPath(String)","url":"setOutPath(java.lang.String)"},{"p":"edu.handong.csee.isel.data.processor","c":"CSVMaker","l":"setPath()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setPath(String)","url":"setPath(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"PathRevision","l":"setPath(String)","url":"setPath(java.lang.String)"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"setPath(String)","url":"setPath(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setPreviousCommitDate(String)","url":"setPreviousCommitDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"setPreviousCommitHash(String)","url":"setPreviousCommitHash(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setPreviousCommitHashs(String)","url":"setPreviousCommitHashs(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"setProjectName(String)","url":"setProjectName(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setProjectName(String)","url":"setProjectName(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setProjectName(String)","url":"setProjectName(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setRecentDeveloperExperience(float)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"setRecentExperiences(TreeMap)","url":"setRecentExperiences(java.util.TreeMap)"},{"p":"edu.handong.csee.isel.metric.collector","c":"ArffHelper","l":"setReferencePath(String)","url":"setReferencePath(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setReferencePath(String)","url":"setReferencePath(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setReferencePath(String)","url":"setReferencePath(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"DeveloperHistory","l":"setRepo(Repository)","url":"setRepo(org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setRepository(Repository)","url":"setRepository(org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setRepository(Repository)","url":"setRepository(org.eclipse.jgit.lib.Repository)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setRev(String)","url":"setRev(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"DeveloperExperienceInfo","l":"setREXP(float)"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"Period","l":"setStart(int)"},{"p":"edu.handong.csee.isel.metric.collector","c":"BagOfWordsCollector","l":"setStartDate(String)","url":"setStartDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.collector","c":"CharacteristicVectorCollector","l":"setStartDate(String)","url":"setStartDate(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitUnitInfo","l":"setSubsystems(String)","url":"setSubsystems(java.lang.String)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setSumOfDeveloper(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setSumOfSourceRevision(int)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"MetaDataInfo","l":"setTimeBetweenLastAndCurrentCommitDate(int)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"Line","l":"setWithinHunk(boolean)"},{"p":"edu.handong.csee.isel.metric.metadata","c":"CommitCollector","l":"sourceFileInfo"},{"p":"edu.handong.csee.isel.metric.metadata","c":"SourceFileInfo","l":"SourceFileInfo()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"startDate"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"FileManager","l":"storeCSVFile(Connection.Response)","url":"storeCSVFile(org.jsoup.Connection.Response)"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"storeOutputFile(String, List)","url":"storeOutputFile(java.lang.String,java.util.List)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"storeOutputFile(String, String, List)","url":"storeOutputFile(java.lang.String,java.lang.String,java.util.List)"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"szzMode"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"SZZRunner()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"SZZRunner(Iterable)","url":"%3Cinit%3E(java.lang.Iterable)"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"SZZRunner(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel.szz","c":"SZZRunner","l":"SZZRunner(String, Iterable)","url":"%3Cinit%3E(java.lang.String,java.lang.Iterable)"},{"p":"edu.handong.csee.isel.data.processor.input.command","c":"Task","l":"Task()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.data","c":"Input","l":"taskType"},{"p":"edu.handong.csee.isel.metric.collector","c":"Test","l":"Test()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.collector","c":"CMetricCollector","l":"tooLongName"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"toString()"},{"p":"edu.handong.csee.isel.data.csv","c":"BICInfo","l":"toString()"},{"p":"edu.handong.csee.isel.bic.szz.trace","c":"Tracer","l":"Tracer()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bfc.collector.jira","c":"URLManager","l":"URLManager(String)","url":"%3Cinit%3E(java.lang.String)"},{"p":"edu.handong.csee.isel","c":"Utils","l":"Utils()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.util","c":"Utils","l":"Utils()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.metric.metadata","c":"Utils","l":"Utils()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.szz.utils","c":"Utils","l":"Utils()","url":"%3Cinit%3E()"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"valueOf(String)","url":"valueOf(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input.Mode","l":"valueOf(String)","url":"valueOf(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input.SZZMode","l":"valueOf(String)","url":"valueOf(java.lang.String)"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"valueOf(String)","url":"valueOf(java.lang.String)"},{"p":"edu.handong.csee.isel.bic.szz.model","c":"LineType","l":"values()"},{"p":"edu.handong.csee.isel.data","c":"Input.Mode","l":"values()"},{"p":"edu.handong.csee.isel.data","c":"Input.SZZMode","l":"values()"},{"p":"edu.handong.csee.isel.data","c":"Input.TaskType","l":"values()"}] \ No newline at end of file diff --git a/doc/overview-summary.html b/doc/overview-summary.html new file mode 100644 index 0000000..f3c4a41 --- /dev/null +++ b/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + + +Generated Documentation (Untitled) + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/doc/overview-tree.html b/doc/overview-tree.html new file mode 100644 index 0000000..55ed3d8 --- /dev/null +++ b/doc/overview-tree.html @@ -0,0 +1,248 @@ + + + + + +Class Hierarchy + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) + +
    • +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/doc/package-search-index.js b/doc/package-search-index.js new file mode 100644 index 0000000..5a71e0d --- /dev/null +++ b/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","url":"allpackages-index.html"},{"l":"edu.handong.csee.isel"},{"l":"edu.handong.csee.isel.bfc"},{"l":"edu.handong.csee.isel.bfc.collector"},{"l":"edu.handong.csee.isel.bfc.collector.github"},{"l":"edu.handong.csee.isel.bfc.collector.jira"},{"l":"edu.handong.csee.isel.bic"},{"l":"edu.handong.csee.isel.bic.collector"},{"l":"edu.handong.csee.isel.bic.szz.data"},{"l":"edu.handong.csee.isel.bic.szz.exception"},{"l":"edu.handong.csee.isel.bic.szz.graph"},{"l":"edu.handong.csee.isel.bic.szz.model"},{"l":"edu.handong.csee.isel.bic.szz.trace"},{"l":"edu.handong.csee.isel.bic.szz.util"},{"l":"edu.handong.csee.isel.data"},{"l":"edu.handong.csee.isel.data.csv"},{"l":"edu.handong.csee.isel.data.processor"},{"l":"edu.handong.csee.isel.data.processor.input"},{"l":"edu.handong.csee.isel.data.processor.input.command"},{"l":"edu.handong.csee.isel.data.processor.input.converter"},{"l":"edu.handong.csee.isel.metric"},{"l":"edu.handong.csee.isel.metric.collector"},{"l":"edu.handong.csee.isel.metric.metadata"},{"l":"edu.handong.csee.isel.patch"},{"l":"edu.handong.csee.isel.patch.collector"},{"l":"edu.handong.csee.isel.szz"},{"l":"edu.handong.csee.isel.szz.data"},{"l":"edu.handong.csee.isel.szz.utils"}] \ No newline at end of file diff --git a/doc/resources/glass.png b/doc/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/doc/script-dir/external/jquery/jquery.js b/doc/script-dir/external/jquery/jquery.js new file mode 100644 index 0000000..5b16efa --- /dev/null +++ b/doc/script-dir/external/jquery/jquery.js @@ -0,0 +1,10598 @@ +/*! + * jQuery JavaScript Library v3.4.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-05-01T21:04Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.4.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code, options ) { + DOMEval( code, { nonce: options && options.nonce } ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.4 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2019-04-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) && + + // Support: IE 8 only + // Exclude object elements + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && rdescend.test( selector ) ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = (elem.ownerDocument || elem).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( typeof elem.contentDocument !== "undefined" ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + } ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + // Support: IE 9-11 only + // Also use offsetWidth/offsetHeight for when box sizing is unreliable + // We use getClientRects() to check for hidden/disconnected. + // In those cases, the computed value can be trusted to be border-box + if ( ( !support.boxSizingReliable() && isBorderBox || + val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url, options ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "\r\n"; + +// inject VBScript +document.write(IEBinaryToArray_ByteStr_Script); + +global.JSZipUtils._getBinaryFromXHR = function (xhr) { + var binary = xhr.responseBody; + var byteMapping = {}; + for ( var i = 0; i < 256; i++ ) { + for ( var j = 0; j < 256; j++ ) { + byteMapping[ String.fromCharCode( i + (j << 8) ) ] = + String.fromCharCode(i) + String.fromCharCode(j); + } + } + var rawBytes = IEBinaryToArray_ByteStr(binary); + var lastChr = IEBinaryToArray_ByteStr_Last(binary); + return rawBytes.replace(/[\s\S]/g, function( match ) { + return byteMapping[match]; + }) + lastChr; +}; + +// enforcing Stuk's coding style +// vim: set shiftwidth=4 softtabstop=4: + +},{}]},{},[1]) +; diff --git a/doc/script-dir/jszip-utils/dist/jszip-utils-ie.min.js b/doc/script-dir/jszip-utils/dist/jszip-utils-ie.min.js new file mode 100644 index 0000000..93d8bc8 --- /dev/null +++ b/doc/script-dir/jszip-utils/dist/jszip-utils-ie.min.js @@ -0,0 +1,10 @@ +/*! + +JSZipUtils - A collection of cross-browser utilities to go along with JSZip. + + +(c) 2014 Stuart Knightley, David Duponchel +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown. + +*/ +!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g\r\n";document.write(b),a.JSZipUtils._getBinaryFromXHR=function(a){for(var b=a.responseBody,c={},d=0;256>d;d++)for(var e=0;256>e;e++)c[String.fromCharCode(d+(e<<8))]=String.fromCharCode(d)+String.fromCharCode(e);var f=IEBinaryToArray_ByteStr(b),g=IEBinaryToArray_ByteStr_Last(b);return f.replace(/[\s\S]/g,function(a){return c[a]})+g}},{}]},{},[1]); diff --git a/doc/script-dir/jszip-utils/dist/jszip-utils.js b/doc/script-dir/jszip-utils/dist/jszip-utils.js new file mode 100644 index 0000000..775895e --- /dev/null +++ b/doc/script-dir/jszip-utils/dist/jszip-utils.js @@ -0,0 +1,118 @@ +/*! + +JSZipUtils - A collection of cross-browser utilities to go along with JSZip. + + +(c) 2014 Stuart Knightley, David Duponchel +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown. + +*/ +!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + +(c) 2014 Stuart Knightley, David Duponchel +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown. + +*/ +!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ + +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64; + enc4 = remainingBytes > 2 ? (chr3 & 63) : 64; + + output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4)); + + } + + return output.join(""); +}; + +// public method for decoding +exports.decode = function(input) { + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0, resultIndex = 0; + + var dataUrlPrefix = "data:"; + + if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) { + // This is a common error: people give a data url + // (data:image/png;base64,iVBOR...) with a {base64: true} and + // wonders why things don't work. + // We can detect that the string input looks like a data url but we + // *can't* be sure it is one: removing everything up to the comma would + // be too dangerous. + throw new Error("Invalid base64 input, it looks like a data url."); + } + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + var totalLength = input.length * 3 / 4; + if(input.charAt(input.length - 1) === _keyStr.charAt(64)) { + totalLength--; + } + if(input.charAt(input.length - 2) === _keyStr.charAt(64)) { + totalLength--; + } + if (totalLength % 1 !== 0) { + // totalLength is not an integer, the length does not match a valid + // base64 content. That can happen if: + // - the input is not a base64 content + // - the input is *almost* a base64 content, with a extra chars at the + // beginning or at the end + // - the input uses a base64 variant (base64url for example) + throw new Error("Invalid base64 input, bad content length."); + } + var output; + if (support.uint8array) { + output = new Uint8Array(totalLength|0); + } else { + output = new Array(totalLength|0); + } + + while (i < input.length) { + + enc1 = _keyStr.indexOf(input.charAt(i++)); + enc2 = _keyStr.indexOf(input.charAt(i++)); + enc3 = _keyStr.indexOf(input.charAt(i++)); + enc4 = _keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output[resultIndex++] = chr1; + + if (enc3 !== 64) { + output[resultIndex++] = chr2; + } + if (enc4 !== 64) { + output[resultIndex++] = chr3; + } + + } + + return output; +}; + +},{"./support":30,"./utils":32}],2:[function(require,module,exports){ +'use strict'; + +var external = require("./external"); +var DataWorker = require('./stream/DataWorker'); +var DataLengthProbe = require('./stream/DataLengthProbe'); +var Crc32Probe = require('./stream/Crc32Probe'); +var DataLengthProbe = require('./stream/DataLengthProbe'); + +/** + * Represent a compressed object, with everything needed to decompress it. + * @constructor + * @param {number} compressedSize the size of the data compressed. + * @param {number} uncompressedSize the size of the data after decompression. + * @param {number} crc32 the crc32 of the decompressed file. + * @param {object} compression the type of compression, see lib/compressions.js. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data. + */ +function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) { + this.compressedSize = compressedSize; + this.uncompressedSize = uncompressedSize; + this.crc32 = crc32; + this.compression = compression; + this.compressedContent = data; +} + +CompressedObject.prototype = { + /** + * Create a worker to get the uncompressed content. + * @return {GenericWorker} the worker. + */ + getContentWorker : function () { + var worker = new DataWorker(external.Promise.resolve(this.compressedContent)) + .pipe(this.compression.uncompressWorker()) + .pipe(new DataLengthProbe("data_length")); + + var that = this; + worker.on("end", function () { + if(this.streamInfo['data_length'] !== that.uncompressedSize) { + throw new Error("Bug : uncompressed data size mismatch"); + } + }); + return worker; + }, + /** + * Create a worker to get the compressed content. + * @return {GenericWorker} the worker. + */ + getCompressedWorker : function () { + return new DataWorker(external.Promise.resolve(this.compressedContent)) + .withStreamInfo("compressedSize", this.compressedSize) + .withStreamInfo("uncompressedSize", this.uncompressedSize) + .withStreamInfo("crc32", this.crc32) + .withStreamInfo("compression", this.compression) + ; + } +}; + +/** + * Chain the given worker with other workers to compress the content with the + * given compresion. + * @param {GenericWorker} uncompressedWorker the worker to pipe. + * @param {Object} compression the compression object. + * @param {Object} compressionOptions the options to use when compressing. + * @return {GenericWorker} the new worker compressing the content. + */ +CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) { + return uncompressedWorker + .pipe(new Crc32Probe()) + .pipe(new DataLengthProbe("uncompressedSize")) + .pipe(compression.compressWorker(compressionOptions)) + .pipe(new DataLengthProbe("compressedSize")) + .withStreamInfo("compression", compression); +}; + +module.exports = CompressedObject; + +},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(require,module,exports){ +'use strict'; + +var GenericWorker = require("./stream/GenericWorker"); + +exports.STORE = { + magic: "\x00\x00", + compressWorker : function (compressionOptions) { + return new GenericWorker("STORE compression"); + }, + uncompressWorker : function () { + return new GenericWorker("STORE decompression"); + } +}; +exports.DEFLATE = require('./flate'); + +},{"./flate":7,"./stream/GenericWorker":28}],4:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); + +/** + * The following functions come from pako, from pako/lib/zlib/crc32.js + * released under the MIT license, see pako https://github.com/nodeca/pako/ + */ + +// Use ordinary array, since untyped makes no boost here +function makeTable() { + var c, table = []; + + for(var n =0; n < 256; n++){ + c = n; + for(var k =0; k < 8; k++){ + c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; +} + +// Create table on load. Just 255 signed longs. Not a problem. +var crcTable = makeTable(); + + +function crc32(crc, buf, len, pos) { + var t = crcTable, end = pos + len; + + crc = crc ^ (-1); + + for (var i = pos; i < end; i++ ) { + crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + +// That's all for the pako functions. + +/** + * Compute the crc32 of a string. + * This is almost the same as the function crc32, but for strings. Using the + * same function for the two use cases leads to horrible performances. + * @param {Number} crc the starting value of the crc. + * @param {String} str the string to use. + * @param {Number} len the length of the string. + * @param {Number} pos the starting position for the crc32 computation. + * @return {Number} the computed crc32. + */ +function crc32str(crc, str, len, pos) { + var t = crcTable, end = pos + len; + + crc = crc ^ (-1); + + for (var i = pos; i < end; i++ ) { + crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + +module.exports = function crc32wrapper(input, crc) { + if (typeof input === "undefined" || !input.length) { + return 0; + } + + var isArray = utils.getTypeOf(input) !== "string"; + + if(isArray) { + return crc32(crc|0, input, input.length, 0); + } else { + return crc32str(crc|0, input, input.length, 0); + } +}; + +},{"./utils":32}],5:[function(require,module,exports){ +'use strict'; +exports.base64 = false; +exports.binary = false; +exports.dir = false; +exports.createFolders = true; +exports.date = null; +exports.compression = null; +exports.compressionOptions = null; +exports.comment = null; +exports.unixPermissions = null; +exports.dosPermissions = null; + +},{}],6:[function(require,module,exports){ +/* global Promise */ +'use strict'; + +// load the global object first: +// - it should be better integrated in the system (unhandledRejection in node) +// - the environment may have a custom Promise implementation (see zone.js) +var ES6Promise = null; +if (typeof Promise !== "undefined") { + ES6Promise = Promise; +} else { + ES6Promise = require("lie"); +} + +/** + * Let the user use/change some implementations. + */ +module.exports = { + Promise: ES6Promise +}; + +},{"lie":37}],7:[function(require,module,exports){ +'use strict'; +var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined'); + +var pako = require("pako"); +var utils = require("./utils"); +var GenericWorker = require("./stream/GenericWorker"); + +var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array"; + +exports.magic = "\x08\x00"; + +/** + * Create a worker that uses pako to inflate/deflate. + * @constructor + * @param {String} action the name of the pako function to call : either "Deflate" or "Inflate". + * @param {Object} options the options to use when (de)compressing. + */ +function FlateWorker(action, options) { + GenericWorker.call(this, "FlateWorker/" + action); + + this._pako = null; + this._pakoAction = action; + this._pakoOptions = options; + // the `meta` object from the last chunk received + // this allow this worker to pass around metadata + this.meta = {}; +} + +utils.inherits(FlateWorker, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +FlateWorker.prototype.processChunk = function (chunk) { + this.meta = chunk.meta; + if (this._pako === null) { + this._createPako(); + } + this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false); +}; + +/** + * @see GenericWorker.flush + */ +FlateWorker.prototype.flush = function () { + GenericWorker.prototype.flush.call(this); + if (this._pako === null) { + this._createPako(); + } + this._pako.push([], true); +}; +/** + * @see GenericWorker.cleanUp + */ +FlateWorker.prototype.cleanUp = function () { + GenericWorker.prototype.cleanUp.call(this); + this._pako = null; +}; + +/** + * Create the _pako object. + * TODO: lazy-loading this object isn't the best solution but it's the + * quickest. The best solution is to lazy-load the worker list. See also the + * issue #446. + */ +FlateWorker.prototype._createPako = function () { + this._pako = new pako[this._pakoAction]({ + raw: true, + level: this._pakoOptions.level || -1 // default compression + }); + var self = this; + this._pako.onData = function(data) { + self.push({ + data : data, + meta : self.meta + }); + }; +}; + +exports.compressWorker = function (compressionOptions) { + return new FlateWorker("Deflate", compressionOptions); +}; +exports.uncompressWorker = function () { + return new FlateWorker("Inflate", {}); +}; + +},{"./stream/GenericWorker":28,"./utils":32,"pako":38}],8:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); +var GenericWorker = require('../stream/GenericWorker'); +var utf8 = require('../utf8'); +var crc32 = require('../crc32'); +var signature = require('../signature'); + +/** + * Transform an integer into a string in hexadecimal. + * @private + * @param {number} dec the number to convert. + * @param {number} bytes the number of bytes to generate. + * @returns {string} the result. + */ +var decToHex = function(dec, bytes) { + var hex = "", i; + for (i = 0; i < bytes; i++) { + hex += String.fromCharCode(dec & 0xff); + dec = dec >>> 8; + } + return hex; +}; + +/** + * Generate the UNIX part of the external file attributes. + * @param {Object} unixPermissions the unix permissions or null. + * @param {Boolean} isDir true if the entry is a directory, false otherwise. + * @return {Number} a 32 bit integer. + * + * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute : + * + * TTTTsstrwxrwxrwx0000000000ADVSHR + * ^^^^____________________________ file type, see zipinfo.c (UNX_*) + * ^^^_________________________ setuid, setgid, sticky + * ^^^^^^^^^________________ permissions + * ^^^^^^^^^^______ not used ? + * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only + */ +var generateUnixExternalFileAttr = function (unixPermissions, isDir) { + + var result = unixPermissions; + if (!unixPermissions) { + // I can't use octal values in strict mode, hence the hexa. + // 040775 => 0x41fd + // 0100664 => 0x81b4 + result = isDir ? 0x41fd : 0x81b4; + } + return (result & 0xFFFF) << 16; +}; + +/** + * Generate the DOS part of the external file attributes. + * @param {Object} dosPermissions the dos permissions or null. + * @param {Boolean} isDir true if the entry is a directory, false otherwise. + * @return {Number} a 32 bit integer. + * + * Bit 0 Read-Only + * Bit 1 Hidden + * Bit 2 System + * Bit 3 Volume Label + * Bit 4 Directory + * Bit 5 Archive + */ +var generateDosExternalFileAttr = function (dosPermissions, isDir) { + + // the dir flag is already set for compatibility + return (dosPermissions || 0) & 0x3F; +}; + +/** + * Generate the various parts used in the construction of the final zip file. + * @param {Object} streamInfo the hash with informations about the compressed file. + * @param {Boolean} streamedContent is the content streamed ? + * @param {Boolean} streamingEnded is the stream finished ? + * @param {number} offset the current offset from the start of the zip file. + * @param {String} platform let's pretend we are this platform (change platform dependents fields) + * @param {Function} encodeFileName the function to encode the file name / comment. + * @return {Object} the zip parts. + */ +var generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) { + var file = streamInfo['file'], + compression = streamInfo['compression'], + useCustomEncoding = encodeFileName !== utf8.utf8encode, + encodedFileName = utils.transformTo("string", encodeFileName(file.name)), + utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)), + comment = file.comment, + encodedComment = utils.transformTo("string", encodeFileName(comment)), + utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)), + useUTF8ForFileName = utfEncodedFileName.length !== file.name.length, + useUTF8ForComment = utfEncodedComment.length !== comment.length, + dosTime, + dosDate, + extraFields = "", + unicodePathExtraField = "", + unicodeCommentExtraField = "", + dir = file.dir, + date = file.date; + + + var dataInfo = { + crc32 : 0, + compressedSize : 0, + uncompressedSize : 0 + }; + + // if the content is streamed, the sizes/crc32 are only available AFTER + // the end of the stream. + if (!streamedContent || streamingEnded) { + dataInfo.crc32 = streamInfo['crc32']; + dataInfo.compressedSize = streamInfo['compressedSize']; + dataInfo.uncompressedSize = streamInfo['uncompressedSize']; + } + + var bitflag = 0; + if (streamedContent) { + // Bit 3: the sizes/crc32 are set to zero in the local header. + // The correct values are put in the data descriptor immediately + // following the compressed data. + bitflag |= 0x0008; + } + if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) { + // Bit 11: Language encoding flag (EFS). + bitflag |= 0x0800; + } + + + var extFileAttr = 0; + var versionMadeBy = 0; + if (dir) { + // dos or unix, we set the dos dir flag + extFileAttr |= 0x00010; + } + if(platform === "UNIX") { + versionMadeBy = 0x031E; // UNIX, version 3.0 + extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir); + } else { // DOS or other, fallback to DOS + versionMadeBy = 0x0014; // DOS, version 2.0 + extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir); + } + + // date + // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html + // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html + // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html + + dosTime = date.getUTCHours(); + dosTime = dosTime << 6; + dosTime = dosTime | date.getUTCMinutes(); + dosTime = dosTime << 5; + dosTime = dosTime | date.getUTCSeconds() / 2; + + dosDate = date.getUTCFullYear() - 1980; + dosDate = dosDate << 4; + dosDate = dosDate | (date.getUTCMonth() + 1); + dosDate = dosDate << 5; + dosDate = dosDate | date.getUTCDate(); + + if (useUTF8ForFileName) { + // set the unicode path extra field. unzip needs at least one extra + // field to correctly handle unicode path, so using the path is as good + // as any other information. This could improve the situation with + // other archive managers too. + // This field is usually used without the utf8 flag, with a non + // unicode path in the header (winrar, winzip). This helps (a bit) + // with the messy Windows' default compressed folders feature but + // breaks on p7zip which doesn't seek the unicode path extra field. + // So for now, UTF-8 everywhere ! + unicodePathExtraField = + // Version + decToHex(1, 1) + + // NameCRC32 + decToHex(crc32(encodedFileName), 4) + + // UnicodeName + utfEncodedFileName; + + extraFields += + // Info-ZIP Unicode Path Extra Field + "\x75\x70" + + // size + decToHex(unicodePathExtraField.length, 2) + + // content + unicodePathExtraField; + } + + if(useUTF8ForComment) { + + unicodeCommentExtraField = + // Version + decToHex(1, 1) + + // CommentCRC32 + decToHex(crc32(encodedComment), 4) + + // UnicodeName + utfEncodedComment; + + extraFields += + // Info-ZIP Unicode Path Extra Field + "\x75\x63" + + // size + decToHex(unicodeCommentExtraField.length, 2) + + // content + unicodeCommentExtraField; + } + + var header = ""; + + // version needed to extract + header += "\x0A\x00"; + // general purpose bit flag + header += decToHex(bitflag, 2); + // compression method + header += compression.magic; + // last mod file time + header += decToHex(dosTime, 2); + // last mod file date + header += decToHex(dosDate, 2); + // crc-32 + header += decToHex(dataInfo.crc32, 4); + // compressed size + header += decToHex(dataInfo.compressedSize, 4); + // uncompressed size + header += decToHex(dataInfo.uncompressedSize, 4); + // file name length + header += decToHex(encodedFileName.length, 2); + // extra field length + header += decToHex(extraFields.length, 2); + + + var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields; + + var dirRecord = signature.CENTRAL_FILE_HEADER + + // version made by (00: DOS) + decToHex(versionMadeBy, 2) + + // file header (common to file and central directory) + header + + // file comment length + decToHex(encodedComment.length, 2) + + // disk number start + "\x00\x00" + + // internal file attributes TODO + "\x00\x00" + + // external file attributes + decToHex(extFileAttr, 4) + + // relative offset of local header + decToHex(offset, 4) + + // file name + encodedFileName + + // extra field + extraFields + + // file comment + encodedComment; + + return { + fileRecord: fileRecord, + dirRecord: dirRecord + }; +}; + +/** + * Generate the EOCD record. + * @param {Number} entriesCount the number of entries in the zip file. + * @param {Number} centralDirLength the length (in bytes) of the central dir. + * @param {Number} localDirLength the length (in bytes) of the local dir. + * @param {String} comment the zip file comment as a binary string. + * @param {Function} encodeFileName the function to encode the comment. + * @return {String} the EOCD record. + */ +var generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) { + var dirEnd = ""; + var encodedComment = utils.transformTo("string", encodeFileName(comment)); + + // end of central dir signature + dirEnd = signature.CENTRAL_DIRECTORY_END + + // number of this disk + "\x00\x00" + + // number of the disk with the start of the central directory + "\x00\x00" + + // total number of entries in the central directory on this disk + decToHex(entriesCount, 2) + + // total number of entries in the central directory + decToHex(entriesCount, 2) + + // size of the central directory 4 bytes + decToHex(centralDirLength, 4) + + // offset of start of central directory with respect to the starting disk number + decToHex(localDirLength, 4) + + // .ZIP file comment length + decToHex(encodedComment.length, 2) + + // .ZIP file comment + encodedComment; + + return dirEnd; +}; + +/** + * Generate data descriptors for a file entry. + * @param {Object} streamInfo the hash generated by a worker, containing informations + * on the file entry. + * @return {String} the data descriptors. + */ +var generateDataDescriptors = function (streamInfo) { + var descriptor = ""; + descriptor = signature.DATA_DESCRIPTOR + + // crc-32 4 bytes + decToHex(streamInfo['crc32'], 4) + + // compressed size 4 bytes + decToHex(streamInfo['compressedSize'], 4) + + // uncompressed size 4 bytes + decToHex(streamInfo['uncompressedSize'], 4); + + return descriptor; +}; + + +/** + * A worker to concatenate other workers to create a zip file. + * @param {Boolean} streamFiles `true` to stream the content of the files, + * `false` to accumulate it. + * @param {String} comment the comment to use. + * @param {String} platform the platform to use, "UNIX" or "DOS". + * @param {Function} encodeFileName the function to encode file names and comments. + */ +function ZipFileWorker(streamFiles, comment, platform, encodeFileName) { + GenericWorker.call(this, "ZipFileWorker"); + // The number of bytes written so far. This doesn't count accumulated chunks. + this.bytesWritten = 0; + // The comment of the zip file + this.zipComment = comment; + // The platform "generating" the zip file. + this.zipPlatform = platform; + // the function to encode file names and comments. + this.encodeFileName = encodeFileName; + // Should we stream the content of the files ? + this.streamFiles = streamFiles; + // If `streamFiles` is false, we will need to accumulate the content of the + // files to calculate sizes / crc32 (and write them *before* the content). + // This boolean indicates if we are accumulating chunks (it will change a lot + // during the lifetime of this worker). + this.accumulate = false; + // The buffer receiving chunks when accumulating content. + this.contentBuffer = []; + // The list of generated directory records. + this.dirRecords = []; + // The offset (in bytes) from the beginning of the zip file for the current source. + this.currentSourceOffset = 0; + // The total number of entries in this zip file. + this.entriesCount = 0; + // the name of the file currently being added, null when handling the end of the zip file. + // Used for the emited metadata. + this.currentFile = null; + + + + this._sources = []; +} +utils.inherits(ZipFileWorker, GenericWorker); + +/** + * @see GenericWorker.push + */ +ZipFileWorker.prototype.push = function (chunk) { + + var currentFilePercent = chunk.meta.percent || 0; + var entriesCount = this.entriesCount; + var remainingFiles = this._sources.length; + + if(this.accumulate) { + this.contentBuffer.push(chunk); + } else { + this.bytesWritten += chunk.data.length; + + GenericWorker.prototype.push.call(this, { + data : chunk.data, + meta : { + currentFile : this.currentFile, + percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100 + } + }); + } +}; + +/** + * The worker started a new source (an other worker). + * @param {Object} streamInfo the streamInfo object from the new source. + */ +ZipFileWorker.prototype.openedSource = function (streamInfo) { + this.currentSourceOffset = this.bytesWritten; + this.currentFile = streamInfo['file'].name; + + var streamedContent = this.streamFiles && !streamInfo['file'].dir; + + // don't stream folders (because they don't have any content) + if(streamedContent) { + var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + this.push({ + data : record.fileRecord, + meta : {percent:0} + }); + } else { + // we need to wait for the whole file before pushing anything + this.accumulate = true; + } +}; + +/** + * The worker finished a source (an other worker). + * @param {Object} streamInfo the streamInfo object from the finished source. + */ +ZipFileWorker.prototype.closedSource = function (streamInfo) { + this.accumulate = false; + var streamedContent = this.streamFiles && !streamInfo['file'].dir; + var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + + this.dirRecords.push(record.dirRecord); + if(streamedContent) { + // after the streamed file, we put data descriptors + this.push({ + data : generateDataDescriptors(streamInfo), + meta : {percent:100} + }); + } else { + // the content wasn't streamed, we need to push everything now + // first the file record, then the content + this.push({ + data : record.fileRecord, + meta : {percent:0} + }); + while(this.contentBuffer.length) { + this.push(this.contentBuffer.shift()); + } + } + this.currentFile = null; +}; + +/** + * @see GenericWorker.flush + */ +ZipFileWorker.prototype.flush = function () { + + var localDirLength = this.bytesWritten; + for(var i = 0; i < this.dirRecords.length; i++) { + this.push({ + data : this.dirRecords[i], + meta : {percent:100} + }); + } + var centralDirLength = this.bytesWritten - localDirLength; + + var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName); + + this.push({ + data : dirEnd, + meta : {percent:100} + }); +}; + +/** + * Prepare the next source to be read. + */ +ZipFileWorker.prototype.prepareNextSource = function () { + this.previous = this._sources.shift(); + this.openedSource(this.previous.streamInfo); + if (this.isPaused) { + this.previous.pause(); + } else { + this.previous.resume(); + } +}; + +/** + * @see GenericWorker.registerPrevious + */ +ZipFileWorker.prototype.registerPrevious = function (previous) { + this._sources.push(previous); + var self = this; + + previous.on('data', function (chunk) { + self.processChunk(chunk); + }); + previous.on('end', function () { + self.closedSource(self.previous.streamInfo); + if(self._sources.length) { + self.prepareNextSource(); + } else { + self.end(); + } + }); + previous.on('error', function (e) { + self.error(e); + }); + return this; +}; + +/** + * @see GenericWorker.resume + */ +ZipFileWorker.prototype.resume = function () { + if(!GenericWorker.prototype.resume.call(this)) { + return false; + } + + if (!this.previous && this._sources.length) { + this.prepareNextSource(); + return true; + } + if (!this.previous && !this._sources.length && !this.generatedError) { + this.end(); + return true; + } +}; + +/** + * @see GenericWorker.error + */ +ZipFileWorker.prototype.error = function (e) { + var sources = this._sources; + if(!GenericWorker.prototype.error.call(this, e)) { + return false; + } + for(var i = 0; i < sources.length; i++) { + try { + sources[i].error(e); + } catch(e) { + // the `error` exploded, nothing to do + } + } + return true; +}; + +/** + * @see GenericWorker.lock + */ +ZipFileWorker.prototype.lock = function () { + GenericWorker.prototype.lock.call(this); + var sources = this._sources; + for(var i = 0; i < sources.length; i++) { + sources[i].lock(); + } +}; + +module.exports = ZipFileWorker; + +},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(require,module,exports){ +'use strict'; + +var compressions = require('../compressions'); +var ZipFileWorker = require('./ZipFileWorker'); + +/** + * Find the compression to use. + * @param {String} fileCompression the compression defined at the file level, if any. + * @param {String} zipCompression the compression defined at the load() level. + * @return {Object} the compression object to use. + */ +var getCompression = function (fileCompression, zipCompression) { + + var compressionName = fileCompression || zipCompression; + var compression = compressions[compressionName]; + if (!compression) { + throw new Error(compressionName + " is not a valid compression method !"); + } + return compression; +}; + +/** + * Create a worker to generate a zip file. + * @param {JSZip} zip the JSZip instance at the right root level. + * @param {Object} options to generate the zip file. + * @param {String} comment the comment to use. + */ +exports.generateWorker = function (zip, options, comment) { + + var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName); + var entriesCount = 0; + try { + + zip.forEach(function (relativePath, file) { + entriesCount++; + var compression = getCompression(file.options.compression, options.compression); + var compressionOptions = file.options.compressionOptions || options.compressionOptions || {}; + var dir = file.dir, date = file.date; + + file._compressWorker(compression, compressionOptions) + .withStreamInfo("file", { + name : relativePath, + dir : dir, + date : date, + comment : file.comment || "", + unixPermissions : file.unixPermissions, + dosPermissions : file.dosPermissions + }) + .pipe(zipFileWorker); + }); + zipFileWorker.entriesCount = entriesCount; + } catch (e) { + zipFileWorker.error(e); + } + + return zipFileWorker; +}; + +},{"../compressions":3,"./ZipFileWorker":8}],10:[function(require,module,exports){ +'use strict'; + +/** + * Representation a of zip file in js + * @constructor + */ +function JSZip() { + // if this constructor is used without `new`, it adds `new` before itself: + if(!(this instanceof JSZip)) { + return new JSZip(); + } + + if(arguments.length) { + throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); + } + + // object containing the files : + // { + // "folder/" : {...}, + // "folder/data.txt" : {...} + // } + this.files = {}; + + this.comment = null; + + // Where we are in the hierarchy + this.root = ""; + this.clone = function() { + var newObj = new JSZip(); + for (var i in this) { + if (typeof this[i] !== "function") { + newObj[i] = this[i]; + } + } + return newObj; + }; +} +JSZip.prototype = require('./object'); +JSZip.prototype.loadAsync = require('./load'); +JSZip.support = require('./support'); +JSZip.defaults = require('./defaults'); + +// TODO find a better way to handle this version, +// a require('package.json').version doesn't work with webpack, see #327 +JSZip.version = "3.2.0"; + +JSZip.loadAsync = function (content, options) { + return new JSZip().loadAsync(content, options); +}; + +JSZip.external = require("./external"); +module.exports = JSZip; + +},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(require,module,exports){ +'use strict'; +var utils = require('./utils'); +var external = require("./external"); +var utf8 = require('./utf8'); +var utils = require('./utils'); +var ZipEntries = require('./zipEntries'); +var Crc32Probe = require('./stream/Crc32Probe'); +var nodejsUtils = require("./nodejsUtils"); + +/** + * Check the CRC32 of an entry. + * @param {ZipEntry} zipEntry the zip entry to check. + * @return {Promise} the result. + */ +function checkEntryCRC32(zipEntry) { + return new external.Promise(function (resolve, reject) { + var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe()); + worker.on("error", function (e) { + reject(e); + }) + .on("end", function () { + if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) { + reject(new Error("Corrupted zip : CRC32 mismatch")); + } else { + resolve(); + } + }) + .resume(); + }); +} + +module.exports = function(data, options) { + var zip = this; + options = utils.extend(options || {}, { + base64: false, + checkCRC32: false, + optimizedBinaryString: false, + createFolders: false, + decodeFileName: utf8.utf8decode + }); + + if (nodejsUtils.isNode && nodejsUtils.isStream(data)) { + return external.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")); + } + + return utils.prepareContent("the loaded zip file", data, true, options.optimizedBinaryString, options.base64) + .then(function(data) { + var zipEntries = new ZipEntries(options); + zipEntries.load(data); + return zipEntries; + }).then(function checkCRC32(zipEntries) { + var promises = [external.Promise.resolve(zipEntries)]; + var files = zipEntries.files; + if (options.checkCRC32) { + for (var i = 0; i < files.length; i++) { + promises.push(checkEntryCRC32(files[i])); + } + } + return external.Promise.all(promises); + }).then(function addFiles(results) { + var zipEntries = results.shift(); + var files = zipEntries.files; + for (var i = 0; i < files.length; i++) { + var input = files[i]; + zip.file(input.fileNameStr, input.decompressed, { + binary: true, + optimizedBinaryString: true, + date: input.date, + dir: input.dir, + comment : input.fileCommentStr.length ? input.fileCommentStr : null, + unixPermissions : input.unixPermissions, + dosPermissions : input.dosPermissions, + createFolders: options.createFolders + }); + } + if (zipEntries.zipComment.length) { + zip.comment = zipEntries.zipComment; + } + + return zip; + }); +}; + +},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(require,module,exports){ +"use strict"; + +var utils = require('../utils'); +var GenericWorker = require('../stream/GenericWorker'); + +/** + * A worker that use a nodejs stream as source. + * @constructor + * @param {String} filename the name of the file entry for this stream. + * @param {Readable} stream the nodejs stream. + */ +function NodejsStreamInputAdapter(filename, stream) { + GenericWorker.call(this, "Nodejs stream input adapter for " + filename); + this._upstreamEnded = false; + this._bindStream(stream); +} + +utils.inherits(NodejsStreamInputAdapter, GenericWorker); + +/** + * Prepare the stream and bind the callbacks on it. + * Do this ASAP on node 0.10 ! A lazy binding doesn't always work. + * @param {Stream} stream the nodejs stream to use. + */ +NodejsStreamInputAdapter.prototype._bindStream = function (stream) { + var self = this; + this._stream = stream; + stream.pause(); + stream + .on("data", function (chunk) { + self.push({ + data: chunk, + meta : { + percent : 0 + } + }); + }) + .on("error", function (e) { + if(self.isPaused) { + this.generatedError = e; + } else { + self.error(e); + } + }) + .on("end", function () { + if(self.isPaused) { + self._upstreamEnded = true; + } else { + self.end(); + } + }); +}; +NodejsStreamInputAdapter.prototype.pause = function () { + if(!GenericWorker.prototype.pause.call(this)) { + return false; + } + this._stream.pause(); + return true; +}; +NodejsStreamInputAdapter.prototype.resume = function () { + if(!GenericWorker.prototype.resume.call(this)) { + return false; + } + + if(this._upstreamEnded) { + this.end(); + } else { + this._stream.resume(); + } + + return true; +}; + +module.exports = NodejsStreamInputAdapter; + +},{"../stream/GenericWorker":28,"../utils":32}],13:[function(require,module,exports){ +'use strict'; + +var Readable = require('readable-stream').Readable; + +var utils = require('../utils'); +utils.inherits(NodejsStreamOutputAdapter, Readable); + +/** +* A nodejs stream using a worker as source. +* @see the SourceWrapper in http://nodejs.org/api/stream.html +* @constructor +* @param {StreamHelper} helper the helper wrapping the worker +* @param {Object} options the nodejs stream options +* @param {Function} updateCb the update callback. +*/ +function NodejsStreamOutputAdapter(helper, options, updateCb) { + Readable.call(this, options); + this._helper = helper; + + var self = this; + helper.on("data", function (data, meta) { + if (!self.push(data)) { + self._helper.pause(); + } + if(updateCb) { + updateCb(meta); + } + }) + .on("error", function(e) { + self.emit('error', e); + }) + .on("end", function () { + self.push(null); + }); +} + + +NodejsStreamOutputAdapter.prototype._read = function() { + this._helper.resume(); +}; + +module.exports = NodejsStreamOutputAdapter; + +},{"../utils":32,"readable-stream":16}],14:[function(require,module,exports){ +'use strict'; + +module.exports = { + /** + * True if this is running in Nodejs, will be undefined in a browser. + * In a browser, browserify won't include this file and the whole module + * will be resolved an empty object. + */ + isNode : typeof Buffer !== "undefined", + /** + * Create a new nodejs Buffer from an existing content. + * @param {Object} data the data to pass to the constructor. + * @param {String} encoding the encoding to use. + * @return {Buffer} a new Buffer. + */ + newBufferFrom: function(data, encoding) { + if (Buffer.from && Buffer.from !== Uint8Array.from) { + return Buffer.from(data, encoding); + } else { + if (typeof data === "number") { + // Safeguard for old Node.js versions. On newer versions, + // Buffer.from(number) / Buffer(number, encoding) already throw. + throw new Error("The \"data\" argument must not be a number"); + } + return new Buffer(data, encoding); + } + }, + /** + * Create a new nodejs Buffer with the specified size. + * @param {Integer} size the size of the buffer. + * @return {Buffer} a new Buffer. + */ + allocBuffer: function (size) { + if (Buffer.alloc) { + return Buffer.alloc(size); + } else { + var buf = new Buffer(size); + buf.fill(0); + return buf; + } + }, + /** + * Find out if an object is a Buffer. + * @param {Object} b the object to test. + * @return {Boolean} true if the object is a Buffer, false otherwise. + */ + isBuffer : function(b){ + return Buffer.isBuffer(b); + }, + + isStream : function (obj) { + return obj && + typeof obj.on === "function" && + typeof obj.pause === "function" && + typeof obj.resume === "function"; + } +}; + +},{}],15:[function(require,module,exports){ +'use strict'; +var utf8 = require('./utf8'); +var utils = require('./utils'); +var GenericWorker = require('./stream/GenericWorker'); +var StreamHelper = require('./stream/StreamHelper'); +var defaults = require('./defaults'); +var CompressedObject = require('./compressedObject'); +var ZipObject = require('./zipObject'); +var generate = require("./generate"); +var nodejsUtils = require("./nodejsUtils"); +var NodejsStreamInputAdapter = require("./nodejs/NodejsStreamInputAdapter"); + + +/** + * Add a file in the current folder. + * @private + * @param {string} name the name of the file + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file + * @param {Object} originalOptions the options of the file + * @return {Object} the new file. + */ +var fileAdd = function(name, data, originalOptions) { + // be sure sub folders exist + var dataType = utils.getTypeOf(data), + parent; + + + /* + * Correct options. + */ + + var o = utils.extend(originalOptions || {}, defaults); + o.date = o.date || new Date(); + if (o.compression !== null) { + o.compression = o.compression.toUpperCase(); + } + + if (typeof o.unixPermissions === "string") { + o.unixPermissions = parseInt(o.unixPermissions, 8); + } + + // UNX_IFDIR 0040000 see zipinfo.c + if (o.unixPermissions && (o.unixPermissions & 0x4000)) { + o.dir = true; + } + // Bit 4 Directory + if (o.dosPermissions && (o.dosPermissions & 0x0010)) { + o.dir = true; + } + + if (o.dir) { + name = forceTrailingSlash(name); + } + if (o.createFolders && (parent = parentFolder(name))) { + folderAdd.call(this, parent, true); + } + + var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false; + if (!originalOptions || typeof originalOptions.binary === "undefined") { + o.binary = !isUnicodeString; + } + + + var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0; + + if (isCompressedEmpty || o.dir || !data || data.length === 0) { + o.base64 = false; + o.binary = true; + data = ""; + o.compression = "STORE"; + dataType = "string"; + } + + /* + * Convert content to fit. + */ + + var zipObjectContent = null; + if (data instanceof CompressedObject || data instanceof GenericWorker) { + zipObjectContent = data; + } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) { + zipObjectContent = new NodejsStreamInputAdapter(name, data); + } else { + zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64); + } + + var object = new ZipObject(name, zipObjectContent, o); + this.files[name] = object; + /* + TODO: we can't throw an exception because we have async promises + (we can have a promise of a Date() for example) but returning a + promise is useless because file(name, data) returns the JSZip + object for chaining. Should we break that to allow the user + to catch the error ? + + return external.Promise.resolve(zipObjectContent) + .then(function () { + return object; + }); + */ +}; + +/** + * Find the parent folder of the path. + * @private + * @param {string} path the path to use + * @return {string} the parent folder, or "" + */ +var parentFolder = function (path) { + if (path.slice(-1) === '/') { + path = path.substring(0, path.length - 1); + } + var lastSlash = path.lastIndexOf('/'); + return (lastSlash > 0) ? path.substring(0, lastSlash) : ""; +}; + +/** + * Returns the path with a slash at the end. + * @private + * @param {String} path the path to check. + * @return {String} the path with a trailing slash. + */ +var forceTrailingSlash = function(path) { + // Check the name ends with a / + if (path.slice(-1) !== "/") { + path += "/"; // IE doesn't like substr(-1) + } + return path; +}; + +/** + * Add a (sub) folder in the current folder. + * @private + * @param {string} name the folder's name + * @param {boolean=} [createFolders] If true, automatically create sub + * folders. Defaults to false. + * @return {Object} the new folder. + */ +var folderAdd = function(name, createFolders) { + createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders; + + name = forceTrailingSlash(name); + + // Does this folder already exist? + if (!this.files[name]) { + fileAdd.call(this, name, null, { + dir: true, + createFolders: createFolders + }); + } + return this.files[name]; +}; + +/** +* Cross-window, cross-Node-context regular expression detection +* @param {Object} object Anything +* @return {Boolean} true if the object is a regular expression, +* false otherwise +*/ +function isRegExp(object) { + return Object.prototype.toString.call(object) === "[object RegExp]"; +} + +// return the actual prototype of JSZip +var out = { + /** + * @see loadAsync + */ + load: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, + + + /** + * Call a callback function for each entry at this folder level. + * @param {Function} cb the callback function: + * function (relativePath, file) {...} + * It takes 2 arguments : the relative path and the file. + */ + forEach: function(cb) { + var filename, relativePath, file; + for (filename in this.files) { + if (!this.files.hasOwnProperty(filename)) { + continue; + } + file = this.files[filename]; + relativePath = filename.slice(this.root.length, filename.length); + if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root + cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn... + } + } + }, + + /** + * Filter nested files/folders with the specified function. + * @param {Function} search the predicate to use : + * function (relativePath, file) {...} + * It takes 2 arguments : the relative path and the file. + * @return {Array} An array of matching elements. + */ + filter: function(search) { + var result = []; + this.forEach(function (relativePath, entry) { + if (search(relativePath, entry)) { // the file matches the function + result.push(entry); + } + + }); + return result; + }, + + /** + * Add a file to the zip file, or search a file. + * @param {string|RegExp} name The name of the file to add (if data is defined), + * the name of the file to find (if no data) or a regex to match files. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded + * @param {Object} o File options + * @return {JSZip|Object|Array} this JSZip object (when adding a file), + * a file (when searching by string) or an array of files (when searching by regex). + */ + file: function(name, data, o) { + if (arguments.length === 1) { + if (isRegExp(name)) { + var regexp = name; + return this.filter(function(relativePath, file) { + return !file.dir && regexp.test(relativePath); + }); + } + else { // text + var obj = this.files[this.root + name]; + if (obj && !obj.dir) { + return obj; + } else { + return null; + } + } + } + else { // more than one argument : we have data ! + name = this.root + name; + fileAdd.call(this, name, data, o); + } + return this; + }, + + /** + * Add a directory to the zip file, or search. + * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders. + * @return {JSZip} an object with the new directory as the root, or an array containing matching folders. + */ + folder: function(arg) { + if (!arg) { + return this; + } + + if (isRegExp(arg)) { + return this.filter(function(relativePath, file) { + return file.dir && arg.test(relativePath); + }); + } + + // else, name is a new folder + var name = this.root + arg; + var newFolder = folderAdd.call(this, name); + + // Allow chaining by returning a new object with this folder as the root + var ret = this.clone(); + ret.root = newFolder.name; + return ret; + }, + + /** + * Delete a file, or a directory and all sub-files, from the zip + * @param {string} name the name of the file to delete + * @return {JSZip} this JSZip object + */ + remove: function(name) { + name = this.root + name; + var file = this.files[name]; + if (!file) { + // Look for any folders + if (name.slice(-1) !== "/") { + name += "/"; + } + file = this.files[name]; + } + + if (file && !file.dir) { + // file + delete this.files[name]; + } else { + // maybe a folder, delete recursively + var kids = this.filter(function(relativePath, file) { + return file.name.slice(0, name.length) === name; + }); + for (var i = 0; i < kids.length; i++) { + delete this.files[kids[i].name]; + } + } + + return this; + }, + + /** + * Generate the complete zip file + * @param {Object} options the options to generate the zip file : + * - compression, "STORE" by default. + * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob. + * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file + */ + generate: function(options) { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, + + /** + * Generate the complete zip file as an internal stream. + * @param {Object} options the options to generate the zip file : + * - compression, "STORE" by default. + * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob. + * @return {StreamHelper} the streamed zip file. + */ + generateInternalStream: function(options) { + var worker, opts = {}; + try { + opts = utils.extend(options || {}, { + streamFiles: false, + compression: "STORE", + compressionOptions : null, + type: "", + platform: "DOS", + comment: null, + mimeType: 'application/zip', + encodeFileName: utf8.utf8encode + }); + + opts.type = opts.type.toLowerCase(); + opts.compression = opts.compression.toUpperCase(); + + // "binarystring" is prefered but the internals use "string". + if(opts.type === "binarystring") { + opts.type = "string"; + } + + if (!opts.type) { + throw new Error("No output type specified."); + } + + utils.checkSupport(opts.type); + + // accept nodejs `process.platform` + if( + opts.platform === 'darwin' || + opts.platform === 'freebsd' || + opts.platform === 'linux' || + opts.platform === 'sunos' + ) { + opts.platform = "UNIX"; + } + if (opts.platform === 'win32') { + opts.platform = "DOS"; + } + + var comment = opts.comment || this.comment || ""; + worker = generate.generateWorker(this, opts, comment); + } catch (e) { + worker = new GenericWorker("error"); + worker.error(e); + } + return new StreamHelper(worker, opts.type || "string", opts.mimeType); + }, + /** + * Generate the complete zip file asynchronously. + * @see generateInternalStream + */ + generateAsync: function(options, onUpdate) { + return this.generateInternalStream(options).accumulate(onUpdate); + }, + /** + * Generate the complete zip file asynchronously. + * @see generateInternalStream + */ + generateNodeStream: function(options, onUpdate) { + options = options || {}; + if (!options.type) { + options.type = "nodebuffer"; + } + return this.generateInternalStream(options).toNodejsStream(onUpdate); + } +}; +module.exports = out; + +},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(require,module,exports){ +/* + * This file is used by module bundlers (browserify/webpack/etc) when + * including a stream implementation. We use "readable-stream" to get a + * consistent behavior between nodejs versions but bundlers often have a shim + * for "stream". Using this shim greatly improve the compatibility and greatly + * reduce the final size of the bundle (only one stream implementation, not + * two). + */ +module.exports = require("stream"); + +},{"stream":undefined}],17:[function(require,module,exports){ +'use strict'; +var DataReader = require('./DataReader'); +var utils = require('../utils'); + +function ArrayReader(data) { + DataReader.call(this, data); + for(var i = 0; i < this.data.length; i++) { + data[i] = data[i] & 0xFF; + } +} +utils.inherits(ArrayReader, DataReader); +/** + * @see DataReader.byteAt + */ +ArrayReader.prototype.byteAt = function(i) { + return this.data[this.zero + i]; +}; +/** + * @see DataReader.lastIndexOfSignature + */ +ArrayReader.prototype.lastIndexOfSignature = function(sig) { + var sig0 = sig.charCodeAt(0), + sig1 = sig.charCodeAt(1), + sig2 = sig.charCodeAt(2), + sig3 = sig.charCodeAt(3); + for (var i = this.length - 4; i >= 0; --i) { + if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) { + return i - this.zero; + } + } + + return -1; +}; +/** + * @see DataReader.readAndCheckSignature + */ +ArrayReader.prototype.readAndCheckSignature = function (sig) { + var sig0 = sig.charCodeAt(0), + sig1 = sig.charCodeAt(1), + sig2 = sig.charCodeAt(2), + sig3 = sig.charCodeAt(3), + data = this.readData(4); + return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3]; +}; +/** + * @see DataReader.readData + */ +ArrayReader.prototype.readData = function(size) { + this.checkOffset(size); + if(size === 0) { + return []; + } + var result = this.data.slice(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; +}; +module.exports = ArrayReader; + +},{"../utils":32,"./DataReader":18}],18:[function(require,module,exports){ +'use strict'; +var utils = require('../utils'); + +function DataReader(data) { + this.data = data; // type : see implementation + this.length = data.length; + this.index = 0; + this.zero = 0; +} +DataReader.prototype = { + /** + * Check that the offset will not go too far. + * @param {string} offset the additional offset to check. + * @throws {Error} an Error if the offset is out of bounds. + */ + checkOffset: function(offset) { + this.checkIndex(this.index + offset); + }, + /** + * Check that the specified index will not be too far. + * @param {string} newIndex the index to check. + * @throws {Error} an Error if the index is out of bounds. + */ + checkIndex: function(newIndex) { + if (this.length < this.zero + newIndex || newIndex < 0) { + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?"); + } + }, + /** + * Change the index. + * @param {number} newIndex The new index. + * @throws {Error} if the new index is out of the data. + */ + setIndex: function(newIndex) { + this.checkIndex(newIndex); + this.index = newIndex; + }, + /** + * Skip the next n bytes. + * @param {number} n the number of bytes to skip. + * @throws {Error} if the new index is out of the data. + */ + skip: function(n) { + this.setIndex(this.index + n); + }, + /** + * Get the byte at the specified index. + * @param {number} i the index to use. + * @return {number} a byte. + */ + byteAt: function(i) { + // see implementations + }, + /** + * Get the next number with a given byte size. + * @param {number} size the number of bytes to read. + * @return {number} the corresponding number. + */ + readInt: function(size) { + var result = 0, + i; + this.checkOffset(size); + for (i = this.index + size - 1; i >= this.index; i--) { + result = (result << 8) + this.byteAt(i); + } + this.index += size; + return result; + }, + /** + * Get the next string with a given byte size. + * @param {number} size the number of bytes to read. + * @return {string} the corresponding string. + */ + readString: function(size) { + return utils.transformTo("string", this.readData(size)); + }, + /** + * Get raw data without conversion, bytes. + * @param {number} size the number of bytes to read. + * @return {Object} the raw data, implementation specific. + */ + readData: function(size) { + // see implementations + }, + /** + * Find the last occurence of a zip signature (4 bytes). + * @param {string} sig the signature to find. + * @return {number} the index of the last occurence, -1 if not found. + */ + lastIndexOfSignature: function(sig) { + // see implementations + }, + /** + * Read the signature (4 bytes) at the current position and compare it with sig. + * @param {string} sig the expected signature + * @return {boolean} true if the signature matches, false otherwise. + */ + readAndCheckSignature: function(sig) { + // see implementations + }, + /** + * Get the next date. + * @return {Date} the date. + */ + readDate: function() { + var dostime = this.readInt(4); + return new Date(Date.UTC( + ((dostime >> 25) & 0x7f) + 1980, // year + ((dostime >> 21) & 0x0f) - 1, // month + (dostime >> 16) & 0x1f, // day + (dostime >> 11) & 0x1f, // hour + (dostime >> 5) & 0x3f, // minute + (dostime & 0x1f) << 1)); // second + } +}; +module.exports = DataReader; + +},{"../utils":32}],19:[function(require,module,exports){ +'use strict'; +var Uint8ArrayReader = require('./Uint8ArrayReader'); +var utils = require('../utils'); + +function NodeBufferReader(data) { + Uint8ArrayReader.call(this, data); +} +utils.inherits(NodeBufferReader, Uint8ArrayReader); + +/** + * @see DataReader.readData + */ +NodeBufferReader.prototype.readData = function(size) { + this.checkOffset(size); + var result = this.data.slice(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; +}; +module.exports = NodeBufferReader; + +},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(require,module,exports){ +'use strict'; +var DataReader = require('./DataReader'); +var utils = require('../utils'); + +function StringReader(data) { + DataReader.call(this, data); +} +utils.inherits(StringReader, DataReader); +/** + * @see DataReader.byteAt + */ +StringReader.prototype.byteAt = function(i) { + return this.data.charCodeAt(this.zero + i); +}; +/** + * @see DataReader.lastIndexOfSignature + */ +StringReader.prototype.lastIndexOfSignature = function(sig) { + return this.data.lastIndexOf(sig) - this.zero; +}; +/** + * @see DataReader.readAndCheckSignature + */ +StringReader.prototype.readAndCheckSignature = function (sig) { + var data = this.readData(4); + return sig === data; +}; +/** + * @see DataReader.readData + */ +StringReader.prototype.readData = function(size) { + this.checkOffset(size); + // this will work because the constructor applied the "& 0xff" mask. + var result = this.data.slice(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; +}; +module.exports = StringReader; + +},{"../utils":32,"./DataReader":18}],21:[function(require,module,exports){ +'use strict'; +var ArrayReader = require('./ArrayReader'); +var utils = require('../utils'); + +function Uint8ArrayReader(data) { + ArrayReader.call(this, data); +} +utils.inherits(Uint8ArrayReader, ArrayReader); +/** + * @see DataReader.readData + */ +Uint8ArrayReader.prototype.readData = function(size) { + this.checkOffset(size); + if(size === 0) { + // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of []. + return new Uint8Array(0); + } + var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; +}; +module.exports = Uint8ArrayReader; + +},{"../utils":32,"./ArrayReader":17}],22:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); +var support = require('../support'); +var ArrayReader = require('./ArrayReader'); +var StringReader = require('./StringReader'); +var NodeBufferReader = require('./NodeBufferReader'); +var Uint8ArrayReader = require('./Uint8ArrayReader'); + +/** + * Create a reader adapted to the data. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read. + * @return {DataReader} the data reader. + */ +module.exports = function (data) { + var type = utils.getTypeOf(data); + utils.checkSupport(type); + if (type === "string" && !support.uint8array) { + return new StringReader(data); + } + if (type === "nodebuffer") { + return new NodeBufferReader(data); + } + if (support.uint8array) { + return new Uint8ArrayReader(utils.transformTo("uint8array", data)); + } + return new ArrayReader(utils.transformTo("array", data)); +}; + +},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(require,module,exports){ +'use strict'; +exports.LOCAL_FILE_HEADER = "PK\x03\x04"; +exports.CENTRAL_FILE_HEADER = "PK\x01\x02"; +exports.CENTRAL_DIRECTORY_END = "PK\x05\x06"; +exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07"; +exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06"; +exports.DATA_DESCRIPTOR = "PK\x07\x08"; + +},{}],24:[function(require,module,exports){ +'use strict'; + +var GenericWorker = require('./GenericWorker'); +var utils = require('../utils'); + +/** + * A worker which convert chunks to a specified type. + * @constructor + * @param {String} destType the destination type. + */ +function ConvertWorker(destType) { + GenericWorker.call(this, "ConvertWorker to " + destType); + this.destType = destType; +} +utils.inherits(ConvertWorker, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +ConvertWorker.prototype.processChunk = function (chunk) { + this.push({ + data : utils.transformTo(this.destType, chunk.data), + meta : chunk.meta + }); +}; +module.exports = ConvertWorker; + +},{"../utils":32,"./GenericWorker":28}],25:[function(require,module,exports){ +'use strict'; + +var GenericWorker = require('./GenericWorker'); +var crc32 = require('../crc32'); +var utils = require('../utils'); + +/** + * A worker which calculate the crc32 of the data flowing through. + * @constructor + */ +function Crc32Probe() { + GenericWorker.call(this, "Crc32Probe"); + this.withStreamInfo("crc32", 0); +} +utils.inherits(Crc32Probe, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +Crc32Probe.prototype.processChunk = function (chunk) { + this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0); + this.push(chunk); +}; +module.exports = Crc32Probe; + +},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); +var GenericWorker = require('./GenericWorker'); + +/** + * A worker which calculate the total length of the data flowing through. + * @constructor + * @param {String} propName the name used to expose the length + */ +function DataLengthProbe(propName) { + GenericWorker.call(this, "DataLengthProbe for " + propName); + this.propName = propName; + this.withStreamInfo(propName, 0); +} +utils.inherits(DataLengthProbe, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +DataLengthProbe.prototype.processChunk = function (chunk) { + if(chunk) { + var length = this.streamInfo[this.propName] || 0; + this.streamInfo[this.propName] = length + chunk.data.length; + } + GenericWorker.prototype.processChunk.call(this, chunk); +}; +module.exports = DataLengthProbe; + + +},{"../utils":32,"./GenericWorker":28}],27:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); +var GenericWorker = require('./GenericWorker'); + +// the size of the generated chunks +// TODO expose this as a public variable +var DEFAULT_BLOCK_SIZE = 16 * 1024; + +/** + * A worker that reads a content and emits chunks. + * @constructor + * @param {Promise} dataP the promise of the data to split + */ +function DataWorker(dataP) { + GenericWorker.call(this, "DataWorker"); + var self = this; + this.dataIsReady = false; + this.index = 0; + this.max = 0; + this.data = null; + this.type = ""; + + this._tickScheduled = false; + + dataP.then(function (data) { + self.dataIsReady = true; + self.data = data; + self.max = data && data.length || 0; + self.type = utils.getTypeOf(data); + if(!self.isPaused) { + self._tickAndRepeat(); + } + }, function (e) { + self.error(e); + }); +} + +utils.inherits(DataWorker, GenericWorker); + +/** + * @see GenericWorker.cleanUp + */ +DataWorker.prototype.cleanUp = function () { + GenericWorker.prototype.cleanUp.call(this); + this.data = null; +}; + +/** + * @see GenericWorker.resume + */ +DataWorker.prototype.resume = function () { + if(!GenericWorker.prototype.resume.call(this)) { + return false; + } + + if (!this._tickScheduled && this.dataIsReady) { + this._tickScheduled = true; + utils.delay(this._tickAndRepeat, [], this); + } + return true; +}; + +/** + * Trigger a tick a schedule an other call to this function. + */ +DataWorker.prototype._tickAndRepeat = function() { + this._tickScheduled = false; + if(this.isPaused || this.isFinished) { + return; + } + this._tick(); + if(!this.isFinished) { + utils.delay(this._tickAndRepeat, [], this); + this._tickScheduled = true; + } +}; + +/** + * Read and push a chunk. + */ +DataWorker.prototype._tick = function() { + + if(this.isPaused || this.isFinished) { + return false; + } + + var size = DEFAULT_BLOCK_SIZE; + var data = null, nextIndex = Math.min(this.max, this.index + size); + if (this.index >= this.max) { + // EOF + return this.end(); + } else { + switch(this.type) { + case "string": + data = this.data.substring(this.index, nextIndex); + break; + case "uint8array": + data = this.data.subarray(this.index, nextIndex); + break; + case "array": + case "nodebuffer": + data = this.data.slice(this.index, nextIndex); + break; + } + this.index = nextIndex; + return this.push({ + data : data, + meta : { + percent : this.max ? this.index / this.max * 100 : 0 + } + }); + } +}; + +module.exports = DataWorker; + +},{"../utils":32,"./GenericWorker":28}],28:[function(require,module,exports){ +'use strict'; + +/** + * A worker that does nothing but passing chunks to the next one. This is like + * a nodejs stream but with some differences. On the good side : + * - it works on IE 6-9 without any issue / polyfill + * - it weights less than the full dependencies bundled with browserify + * - it forwards errors (no need to declare an error handler EVERYWHERE) + * + * A chunk is an object with 2 attributes : `meta` and `data`. The former is an + * object containing anything (`percent` for example), see each worker for more + * details. The latter is the real data (String, Uint8Array, etc). + * + * @constructor + * @param {String} name the name of the stream (mainly used for debugging purposes) + */ +function GenericWorker(name) { + // the name of the worker + this.name = name || "default"; + // an object containing metadata about the workers chain + this.streamInfo = {}; + // an error which happened when the worker was paused + this.generatedError = null; + // an object containing metadata to be merged by this worker into the general metadata + this.extraStreamInfo = {}; + // true if the stream is paused (and should not do anything), false otherwise + this.isPaused = true; + // true if the stream is finished (and should not do anything), false otherwise + this.isFinished = false; + // true if the stream is locked to prevent further structure updates (pipe), false otherwise + this.isLocked = false; + // the event listeners + this._listeners = { + 'data':[], + 'end':[], + 'error':[] + }; + // the previous worker, if any + this.previous = null; +} + +GenericWorker.prototype = { + /** + * Push a chunk to the next workers. + * @param {Object} chunk the chunk to push + */ + push : function (chunk) { + this.emit("data", chunk); + }, + /** + * End the stream. + * @return {Boolean} true if this call ended the worker, false otherwise. + */ + end : function () { + if (this.isFinished) { + return false; + } + + this.flush(); + try { + this.emit("end"); + this.cleanUp(); + this.isFinished = true; + } catch (e) { + this.emit("error", e); + } + return true; + }, + /** + * End the stream with an error. + * @param {Error} e the error which caused the premature end. + * @return {Boolean} true if this call ended the worker with an error, false otherwise. + */ + error : function (e) { + if (this.isFinished) { + return false; + } + + if(this.isPaused) { + this.generatedError = e; + } else { + this.isFinished = true; + + this.emit("error", e); + + // in the workers chain exploded in the middle of the chain, + // the error event will go downward but we also need to notify + // workers upward that there has been an error. + if(this.previous) { + this.previous.error(e); + } + + this.cleanUp(); + } + return true; + }, + /** + * Add a callback on an event. + * @param {String} name the name of the event (data, end, error) + * @param {Function} listener the function to call when the event is triggered + * @return {GenericWorker} the current object for chainability + */ + on : function (name, listener) { + this._listeners[name].push(listener); + return this; + }, + /** + * Clean any references when a worker is ending. + */ + cleanUp : function () { + this.streamInfo = this.generatedError = this.extraStreamInfo = null; + this._listeners = []; + }, + /** + * Trigger an event. This will call registered callback with the provided arg. + * @param {String} name the name of the event (data, end, error) + * @param {Object} arg the argument to call the callback with. + */ + emit : function (name, arg) { + if (this._listeners[name]) { + for(var i = 0; i < this._listeners[name].length; i++) { + this._listeners[name][i].call(this, arg); + } + } + }, + /** + * Chain a worker with an other. + * @param {Worker} next the worker receiving events from the current one. + * @return {worker} the next worker for chainability + */ + pipe : function (next) { + return next.registerPrevious(this); + }, + /** + * Same as `pipe` in the other direction. + * Using an API with `pipe(next)` is very easy. + * Implementing the API with the point of view of the next one registering + * a source is easier, see the ZipFileWorker. + * @param {Worker} previous the previous worker, sending events to this one + * @return {Worker} the current worker for chainability + */ + registerPrevious : function (previous) { + if (this.isLocked) { + throw new Error("The stream '" + this + "' has already been used."); + } + + // sharing the streamInfo... + this.streamInfo = previous.streamInfo; + // ... and adding our own bits + this.mergeStreamInfo(); + this.previous = previous; + var self = this; + previous.on('data', function (chunk) { + self.processChunk(chunk); + }); + previous.on('end', function () { + self.end(); + }); + previous.on('error', function (e) { + self.error(e); + }); + return this; + }, + /** + * Pause the stream so it doesn't send events anymore. + * @return {Boolean} true if this call paused the worker, false otherwise. + */ + pause : function () { + if(this.isPaused || this.isFinished) { + return false; + } + this.isPaused = true; + + if(this.previous) { + this.previous.pause(); + } + return true; + }, + /** + * Resume a paused stream. + * @return {Boolean} true if this call resumed the worker, false otherwise. + */ + resume : function () { + if(!this.isPaused || this.isFinished) { + return false; + } + this.isPaused = false; + + // if true, the worker tried to resume but failed + var withError = false; + if(this.generatedError) { + this.error(this.generatedError); + withError = true; + } + if(this.previous) { + this.previous.resume(); + } + + return !withError; + }, + /** + * Flush any remaining bytes as the stream is ending. + */ + flush : function () {}, + /** + * Process a chunk. This is usually the method overridden. + * @param {Object} chunk the chunk to process. + */ + processChunk : function(chunk) { + this.push(chunk); + }, + /** + * Add a key/value to be added in the workers chain streamInfo once activated. + * @param {String} key the key to use + * @param {Object} value the associated value + * @return {Worker} the current worker for chainability + */ + withStreamInfo : function (key, value) { + this.extraStreamInfo[key] = value; + this.mergeStreamInfo(); + return this; + }, + /** + * Merge this worker's streamInfo into the chain's streamInfo. + */ + mergeStreamInfo : function () { + for(var key in this.extraStreamInfo) { + if (!this.extraStreamInfo.hasOwnProperty(key)) { + continue; + } + this.streamInfo[key] = this.extraStreamInfo[key]; + } + }, + + /** + * Lock the stream to prevent further updates on the workers chain. + * After calling this method, all calls to pipe will fail. + */ + lock: function () { + if (this.isLocked) { + throw new Error("The stream '" + this + "' has already been used."); + } + this.isLocked = true; + if (this.previous) { + this.previous.lock(); + } + }, + + /** + * + * Pretty print the workers chain. + */ + toString : function () { + var me = "Worker " + this.name; + if (this.previous) { + return this.previous + " -> " + me; + } else { + return me; + } + } +}; + +module.exports = GenericWorker; + +},{}],29:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); +var ConvertWorker = require('./ConvertWorker'); +var GenericWorker = require('./GenericWorker'); +var base64 = require('../base64'); +var support = require("../support"); +var external = require("../external"); + +var NodejsStreamOutputAdapter = null; +if (support.nodestream) { + try { + NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter'); + } catch(e) {} +} + +/** + * Apply the final transformation of the data. If the user wants a Blob for + * example, it's easier to work with an U8intArray and finally do the + * ArrayBuffer/Blob conversion. + * @param {String} type the name of the final type + * @param {String|Uint8Array|Buffer} content the content to transform + * @param {String} mimeType the mime type of the content, if applicable. + * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format. + */ +function transformZipOutput(type, content, mimeType) { + switch(type) { + case "blob" : + return utils.newBlob(utils.transformTo("arraybuffer", content), mimeType); + case "base64" : + return base64.encode(content); + default : + return utils.transformTo(type, content); + } +} + +/** + * Concatenate an array of data of the given type. + * @param {String} type the type of the data in the given array. + * @param {Array} dataArray the array containing the data chunks to concatenate + * @return {String|Uint8Array|Buffer} the concatenated data + * @throws Error if the asked type is unsupported + */ +function concat (type, dataArray) { + var i, index = 0, res = null, totalLength = 0; + for(i = 0; i < dataArray.length; i++) { + totalLength += dataArray[i].length; + } + switch(type) { + case "string": + return dataArray.join(""); + case "array": + return Array.prototype.concat.apply([], dataArray); + case "uint8array": + res = new Uint8Array(totalLength); + for(i = 0; i < dataArray.length; i++) { + res.set(dataArray[i], index); + index += dataArray[i].length; + } + return res; + case "nodebuffer": + return Buffer.concat(dataArray); + default: + throw new Error("concat : unsupported type '" + type + "'"); + } +} + +/** + * Listen a StreamHelper, accumulate its content and concatenate it into a + * complete block. + * @param {StreamHelper} helper the helper to use. + * @param {Function} updateCallback a callback called on each update. Called + * with one arg : + * - the metadata linked to the update received. + * @return Promise the promise for the accumulation. + */ +function accumulate(helper, updateCallback) { + return new external.Promise(function (resolve, reject){ + var dataArray = []; + var chunkType = helper._internalType, + resultType = helper._outputType, + mimeType = helper._mimeType; + helper + .on('data', function (data, meta) { + dataArray.push(data); + if(updateCallback) { + updateCallback(meta); + } + }) + .on('error', function(err) { + dataArray = []; + reject(err); + }) + .on('end', function (){ + try { + var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType); + resolve(result); + } catch (e) { + reject(e); + } + dataArray = []; + }) + .resume(); + }); +} + +/** + * An helper to easily use workers outside of JSZip. + * @constructor + * @param {Worker} worker the worker to wrap + * @param {String} outputType the type of data expected by the use + * @param {String} mimeType the mime type of the content, if applicable. + */ +function StreamHelper(worker, outputType, mimeType) { + var internalType = outputType; + switch(outputType) { + case "blob": + case "arraybuffer": + internalType = "uint8array"; + break; + case "base64": + internalType = "string"; + break; + } + + try { + // the type used internally + this._internalType = internalType; + // the type used to output results + this._outputType = outputType; + // the mime type + this._mimeType = mimeType; + utils.checkSupport(internalType); + this._worker = worker.pipe(new ConvertWorker(internalType)); + // the last workers can be rewired without issues but we need to + // prevent any updates on previous workers. + worker.lock(); + } catch(e) { + this._worker = new GenericWorker("error"); + this._worker.error(e); + } +} + +StreamHelper.prototype = { + /** + * Listen a StreamHelper, accumulate its content and concatenate it into a + * complete block. + * @param {Function} updateCb the update callback. + * @return Promise the promise for the accumulation. + */ + accumulate : function (updateCb) { + return accumulate(this, updateCb); + }, + /** + * Add a listener on an event triggered on a stream. + * @param {String} evt the name of the event + * @param {Function} fn the listener + * @return {StreamHelper} the current helper. + */ + on : function (evt, fn) { + var self = this; + + if(evt === "data") { + this._worker.on(evt, function (chunk) { + fn.call(self, chunk.data, chunk.meta); + }); + } else { + this._worker.on(evt, function () { + utils.delay(fn, arguments, self); + }); + } + return this; + }, + /** + * Resume the flow of chunks. + * @return {StreamHelper} the current helper. + */ + resume : function () { + utils.delay(this._worker.resume, [], this._worker); + return this; + }, + /** + * Pause the flow of chunks. + * @return {StreamHelper} the current helper. + */ + pause : function () { + this._worker.pause(); + return this; + }, + /** + * Return a nodejs stream for this helper. + * @param {Function} updateCb the update callback. + * @return {NodejsStreamOutputAdapter} the nodejs stream. + */ + toNodejsStream : function (updateCb) { + utils.checkSupport("nodestream"); + if (this._outputType !== "nodebuffer") { + // an object stream containing blob/arraybuffer/uint8array/string + // is strange and I don't know if it would be useful. + // I you find this comment and have a good usecase, please open a + // bug report ! + throw new Error(this._outputType + " is not supported by this method"); + } + + return new NodejsStreamOutputAdapter(this, { + objectMode : this._outputType !== "nodebuffer" + }, updateCb); + } +}; + + +module.exports = StreamHelper; + +},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(require,module,exports){ +'use strict'; + +exports.base64 = true; +exports.array = true; +exports.string = true; +exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined"; +exports.nodebuffer = typeof Buffer !== "undefined"; +// contains true if JSZip can read/generate Uint8Array, false otherwise. +exports.uint8array = typeof Uint8Array !== "undefined"; + +if (typeof ArrayBuffer === "undefined") { + exports.blob = false; +} +else { + var buffer = new ArrayBuffer(0); + try { + exports.blob = new Blob([buffer], { + type: "application/zip" + }).size === 0; + } + catch (e) { + try { + var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder; + var builder = new Builder(); + builder.append(buffer); + exports.blob = builder.getBlob('application/zip').size === 0; + } + catch (e) { + exports.blob = false; + } + } +} + +try { + exports.nodestream = !!require('readable-stream').Readable; +} catch(e) { + exports.nodestream = false; +} + +},{"readable-stream":16}],31:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var support = require('./support'); +var nodejsUtils = require('./nodejsUtils'); +var GenericWorker = require('./stream/GenericWorker'); + +/** + * The following functions come from pako, from pako/lib/utils/strings + * released under the MIT license, see pako https://github.com/nodeca/pako/ + */ + +// Table with utf8 lengths (calculated by first byte of sequence) +// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, +// because max possible codepoint is 0x10ffff +var _utf8len = new Array(256); +for (var i=0; i<256; i++) { + _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1); +} +_utf8len[254]=_utf8len[254]=1; // Invalid sequence start + +// convert string to array (typed, when possible) +var string2buf = function (str) { + var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; + + // count binary size + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) { + c2 = str.charCodeAt(m_pos+1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; + } + + // allocate buffer + if (support.uint8array) { + buf = new Uint8Array(buf_len); + } else { + buf = new Array(buf_len); + } + + // convert + for (i=0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) { + c2 = str.charCodeAt(m_pos+1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + if (c < 0x80) { + /* one byte */ + buf[i++] = c; + } else if (c < 0x800) { + /* two bytes */ + buf[i++] = 0xC0 | (c >>> 6); + buf[i++] = 0x80 | (c & 0x3f); + } else if (c < 0x10000) { + /* three bytes */ + buf[i++] = 0xE0 | (c >>> 12); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } else { + /* four bytes */ + buf[i++] = 0xf0 | (c >>> 18); + buf[i++] = 0x80 | (c >>> 12 & 0x3f); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } + } + + return buf; +}; + +// Calculate max possible position in utf8 buffer, +// that will not break sequence. If that's not possible +// - (very small limits) return max size as is. +// +// buf[] - utf8 bytes array +// max - length limit (mandatory); +var utf8border = function(buf, max) { + var pos; + + max = max || buf.length; + if (max > buf.length) { max = buf.length; } + + // go back from last position, until start of sequence found + pos = max-1; + while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; } + + // Fuckup - very small and broken sequence, + // return max, because we should return something anyway. + if (pos < 0) { return max; } + + // If we came to start of buffer - that means vuffer is too small, + // return max too. + if (pos === 0) { return max; } + + return (pos + _utf8len[buf[pos]] > max) ? pos : max; +}; + +// convert array to string +var buf2string = function (buf) { + var str, i, out, c, c_len; + var len = buf.length; + + // Reserve max possible length (2 words per char) + // NB: by unknown reasons, Array is significantly faster for + // String.fromCharCode.apply than Uint16Array. + var utf16buf = new Array(len*2); + + for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; } + + // apply mask on first byte + c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; + // join the rest + while (c_len > 1 && i < len) { + c = (c << 6) | (buf[i++] & 0x3f); + c_len--; + } + + // terminated by end of string? + if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; } + + if (c < 0x10000) { + utf16buf[out++] = c; + } else { + c -= 0x10000; + utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff); + utf16buf[out++] = 0xdc00 | (c & 0x3ff); + } + } + + // shrinkBuf(utf16buf, out) + if (utf16buf.length !== out) { + if(utf16buf.subarray) { + utf16buf = utf16buf.subarray(0, out); + } else { + utf16buf.length = out; + } + } + + // return String.fromCharCode.apply(null, utf16buf); + return utils.applyFromCharCode(utf16buf); +}; + + +// That's all for the pako functions. + + +/** + * Transform a javascript string into an array (typed if possible) of bytes, + * UTF-8 encoded. + * @param {String} str the string to encode + * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string. + */ +exports.utf8encode = function utf8encode(str) { + if (support.nodebuffer) { + return nodejsUtils.newBufferFrom(str, "utf-8"); + } + + return string2buf(str); +}; + + +/** + * Transform a bytes array (or a representation) representing an UTF-8 encoded + * string into a javascript string. + * @param {Array|Uint8Array|Buffer} buf the data de decode + * @return {String} the decoded string. + */ +exports.utf8decode = function utf8decode(buf) { + if (support.nodebuffer) { + return utils.transformTo("nodebuffer", buf).toString("utf-8"); + } + + buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf); + + return buf2string(buf); +}; + +/** + * A worker to decode utf8 encoded binary chunks into string chunks. + * @constructor + */ +function Utf8DecodeWorker() { + GenericWorker.call(this, "utf-8 decode"); + // the last bytes if a chunk didn't end with a complete codepoint. + this.leftOver = null; +} +utils.inherits(Utf8DecodeWorker, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +Utf8DecodeWorker.prototype.processChunk = function (chunk) { + + var data = utils.transformTo(support.uint8array ? "uint8array" : "array", chunk.data); + + // 1st step, re-use what's left of the previous chunk + if (this.leftOver && this.leftOver.length) { + if(support.uint8array) { + var previousData = data; + data = new Uint8Array(previousData.length + this.leftOver.length); + data.set(this.leftOver, 0); + data.set(previousData, this.leftOver.length); + } else { + data = this.leftOver.concat(data); + } + this.leftOver = null; + } + + var nextBoundary = utf8border(data); + var usableData = data; + if (nextBoundary !== data.length) { + if (support.uint8array) { + usableData = data.subarray(0, nextBoundary); + this.leftOver = data.subarray(nextBoundary, data.length); + } else { + usableData = data.slice(0, nextBoundary); + this.leftOver = data.slice(nextBoundary, data.length); + } + } + + this.push({ + data : exports.utf8decode(usableData), + meta : chunk.meta + }); +}; + +/** + * @see GenericWorker.flush + */ +Utf8DecodeWorker.prototype.flush = function () { + if(this.leftOver && this.leftOver.length) { + this.push({ + data : exports.utf8decode(this.leftOver), + meta : {} + }); + this.leftOver = null; + } +}; +exports.Utf8DecodeWorker = Utf8DecodeWorker; + +/** + * A worker to endcode string chunks into utf8 encoded binary chunks. + * @constructor + */ +function Utf8EncodeWorker() { + GenericWorker.call(this, "utf-8 encode"); +} +utils.inherits(Utf8EncodeWorker, GenericWorker); + +/** + * @see GenericWorker.processChunk + */ +Utf8EncodeWorker.prototype.processChunk = function (chunk) { + this.push({ + data : exports.utf8encode(chunk.data), + meta : chunk.meta + }); +}; +exports.Utf8EncodeWorker = Utf8EncodeWorker; + +},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(require,module,exports){ +'use strict'; + +var support = require('./support'); +var base64 = require('./base64'); +var nodejsUtils = require('./nodejsUtils'); +var setImmediate = require('set-immediate-shim'); +var external = require("./external"); + + +/** + * Convert a string that pass as a "binary string": it should represent a byte + * array but may have > 255 char codes. Be sure to take only the first byte + * and returns the byte array. + * @param {String} str the string to transform. + * @return {Array|Uint8Array} the string in a binary format. + */ +function string2binary(str) { + var result = null; + if (support.uint8array) { + result = new Uint8Array(str.length); + } else { + result = new Array(str.length); + } + return stringToArrayLike(str, result); +} + +/** + * Create a new blob with the given content and the given type. + * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use + * an Uint8Array because the stock browser of android 4 won't accept it (it + * will be silently converted to a string, "[object Uint8Array]"). + * + * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge: + * when a large amount of Array is used to create the Blob, the amount of + * memory consumed is nearly 100 times the original data amount. + * + * @param {String} type the mime type of the blob. + * @return {Blob} the created blob. + */ +exports.newBlob = function(part, type) { + exports.checkSupport("blob"); + + try { + // Blob constructor + return new Blob([part], { + type: type + }); + } + catch (e) { + + try { + // deprecated, browser only, old way + var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder; + var builder = new Builder(); + builder.append(part); + return builder.getBlob(type); + } + catch (e) { + + // well, fuck ?! + throw new Error("Bug : can't construct the Blob."); + } + } + + +}; +/** + * The identity function. + * @param {Object} input the input. + * @return {Object} the same input. + */ +function identity(input) { + return input; +} + +/** + * Fill in an array with a string. + * @param {String} str the string to use. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated). + * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array. + */ +function stringToArrayLike(str, array) { + for (var i = 0; i < str.length; ++i) { + array[i] = str.charCodeAt(i) & 0xFF; + } + return array; +} + +/** + * An helper for the function arrayLikeToString. + * This contains static informations and functions that + * can be optimized by the browser JIT compiler. + */ +var arrayToStringHelper = { + /** + * Transform an array of int into a string, chunk by chunk. + * See the performances notes on arrayLikeToString. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @param {String} type the type of the array. + * @param {Integer} chunk the chunk size. + * @return {String} the resulting string. + * @throws Error if the chunk is too big for the stack. + */ + stringifyByChunk: function(array, type, chunk) { + var result = [], k = 0, len = array.length; + // shortcut + if (len <= chunk) { + return String.fromCharCode.apply(null, array); + } + while (k < len) { + if (type === "array" || type === "nodebuffer") { + result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len)))); + } + else { + result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len)))); + } + k += chunk; + } + return result.join(""); + }, + /** + * Call String.fromCharCode on every item in the array. + * This is the naive implementation, which generate A LOT of intermediate string. + * This should be used when everything else fail. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @return {String} the result. + */ + stringifyByChar: function(array){ + var resultStr = ""; + for(var i = 0; i < array.length; i++) { + resultStr += String.fromCharCode(array[i]); + } + return resultStr; + }, + applyCanBeUsed : { + /** + * true if the browser accepts to use String.fromCharCode on Uint8Array + */ + uint8array : (function () { + try { + return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1; + } catch (e) { + return false; + } + })(), + /** + * true if the browser accepts to use String.fromCharCode on nodejs Buffer. + */ + nodebuffer : (function () { + try { + return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1; + } catch (e) { + return false; + } + })() + } +}; + +/** + * Transform an array-like object to a string. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @return {String} the result. + */ +function arrayLikeToString(array) { + // Performances notes : + // -------------------- + // String.fromCharCode.apply(null, array) is the fastest, see + // see http://jsperf.com/converting-a-uint8array-to-a-string/2 + // but the stack is limited (and we can get huge arrays !). + // + // result += String.fromCharCode(array[i]); generate too many strings ! + // + // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2 + // TODO : we now have workers that split the work. Do we still need that ? + var chunk = 65536, + type = exports.getTypeOf(array), + canUseApply = true; + if (type === "uint8array") { + canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array; + } else if (type === "nodebuffer") { + canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer; + } + + if (canUseApply) { + while (chunk > 1) { + try { + return arrayToStringHelper.stringifyByChunk(array, type, chunk); + } catch (e) { + chunk = Math.floor(chunk / 2); + } + } + } + + // no apply or chunk error : slow and painful algorithm + // default browser on android 4.* + return arrayToStringHelper.stringifyByChar(array); +} + +exports.applyFromCharCode = arrayLikeToString; + + +/** + * Copy the data from an array-like to an other array-like. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated. + * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array. + */ +function arrayLikeToArrayLike(arrayFrom, arrayTo) { + for (var i = 0; i < arrayFrom.length; i++) { + arrayTo[i] = arrayFrom[i]; + } + return arrayTo; +} + +// a matrix containing functions to transform everything into everything. +var transform = {}; + +// string to ? +transform["string"] = { + "string": identity, + "array": function(input) { + return stringToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function(input) { + return transform["string"]["uint8array"](input).buffer; + }, + "uint8array": function(input) { + return stringToArrayLike(input, new Uint8Array(input.length)); + }, + "nodebuffer": function(input) { + return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length)); + } +}; + +// array to ? +transform["array"] = { + "string": arrayLikeToString, + "array": identity, + "arraybuffer": function(input) { + return (new Uint8Array(input)).buffer; + }, + "uint8array": function(input) { + return new Uint8Array(input); + }, + "nodebuffer": function(input) { + return nodejsUtils.newBufferFrom(input); + } +}; + +// arraybuffer to ? +transform["arraybuffer"] = { + "string": function(input) { + return arrayLikeToString(new Uint8Array(input)); + }, + "array": function(input) { + return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength)); + }, + "arraybuffer": identity, + "uint8array": function(input) { + return new Uint8Array(input); + }, + "nodebuffer": function(input) { + return nodejsUtils.newBufferFrom(new Uint8Array(input)); + } +}; + +// uint8array to ? +transform["uint8array"] = { + "string": arrayLikeToString, + "array": function(input) { + return arrayLikeToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function(input) { + return input.buffer; + }, + "uint8array": identity, + "nodebuffer": function(input) { + return nodejsUtils.newBufferFrom(input); + } +}; + +// nodebuffer to ? +transform["nodebuffer"] = { + "string": arrayLikeToString, + "array": function(input) { + return arrayLikeToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function(input) { + return transform["nodebuffer"]["uint8array"](input).buffer; + }, + "uint8array": function(input) { + return arrayLikeToArrayLike(input, new Uint8Array(input.length)); + }, + "nodebuffer": identity +}; + +/** + * Transform an input into any type. + * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer. + * If no output type is specified, the unmodified input will be returned. + * @param {String} outputType the output type. + * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert. + * @throws {Error} an Error if the browser doesn't support the requested output type. + */ +exports.transformTo = function(outputType, input) { + if (!input) { + // undefined, null, etc + // an empty string won't harm. + input = ""; + } + if (!outputType) { + return input; + } + exports.checkSupport(outputType); + var inputType = exports.getTypeOf(input); + var result = transform[inputType][outputType](input); + return result; +}; + +/** + * Return the type of the input. + * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer. + * @param {Object} input the input to identify. + * @return {String} the (lowercase) type of the input. + */ +exports.getTypeOf = function(input) { + if (typeof input === "string") { + return "string"; + } + if (Object.prototype.toString.call(input) === "[object Array]") { + return "array"; + } + if (support.nodebuffer && nodejsUtils.isBuffer(input)) { + return "nodebuffer"; + } + if (support.uint8array && input instanceof Uint8Array) { + return "uint8array"; + } + if (support.arraybuffer && input instanceof ArrayBuffer) { + return "arraybuffer"; + } +}; + +/** + * Throw an exception if the type is not supported. + * @param {String} type the type to check. + * @throws {Error} an Error if the browser doesn't support the requested type. + */ +exports.checkSupport = function(type) { + var supported = support[type.toLowerCase()]; + if (!supported) { + throw new Error(type + " is not supported by this platform"); + } +}; + +exports.MAX_VALUE_16BITS = 65535; +exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1 + +/** + * Prettify a string read as binary. + * @param {string} str the string to prettify. + * @return {string} a pretty string. + */ +exports.pretty = function(str) { + var res = '', + code, i; + for (i = 0; i < (str || "").length; i++) { + code = str.charCodeAt(i); + res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase(); + } + return res; +}; + +/** + * Defer the call of a function. + * @param {Function} callback the function to call asynchronously. + * @param {Array} args the arguments to give to the callback. + */ +exports.delay = function(callback, args, self) { + setImmediate(function () { + callback.apply(self || null, args || []); + }); +}; + +/** + * Extends a prototype with an other, without calling a constructor with + * side effects. Inspired by nodejs' `utils.inherits` + * @param {Function} ctor the constructor to augment + * @param {Function} superCtor the parent constructor to use + */ +exports.inherits = function (ctor, superCtor) { + var Obj = function() {}; + Obj.prototype = superCtor.prototype; + ctor.prototype = new Obj(); +}; + +/** + * Merge the objects passed as parameters into a new one. + * @private + * @param {...Object} var_args All objects to merge. + * @return {Object} a new object with the data of the others. + */ +exports.extend = function() { + var result = {}, i, attr; + for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers + for (attr in arguments[i]) { + if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") { + result[attr] = arguments[i][attr]; + } + } + } + return result; +}; + +/** + * Transform arbitrary content into a Promise. + * @param {String} name a name for the content being processed. + * @param {Object} inputData the content to process. + * @param {Boolean} isBinary true if the content is not an unicode string + * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character. + * @param {Boolean} isBase64 true if the string content is encoded with base64. + * @return {Promise} a promise in a format usable by JSZip. + */ +exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) { + + // if inputData is already a promise, this flatten it. + var promise = external.Promise.resolve(inputData).then(function(data) { + + + var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1); + + if (isBlob && typeof FileReader !== "undefined") { + return new external.Promise(function (resolve, reject) { + var reader = new FileReader(); + + reader.onload = function(e) { + resolve(e.target.result); + }; + reader.onerror = function(e) { + reject(e.target.error); + }; + reader.readAsArrayBuffer(data); + }); + } else { + return data; + } + }); + + return promise.then(function(data) { + var dataType = exports.getTypeOf(data); + + if (!dataType) { + return external.Promise.reject( + new Error("Can't read the data of '" + name + "'. Is it " + + "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?") + ); + } + // special case : it's way easier to work with Uint8Array than with ArrayBuffer + if (dataType === "arraybuffer") { + data = exports.transformTo("uint8array", data); + } else if (dataType === "string") { + if (isBase64) { + data = base64.decode(data); + } + else if (isBinary) { + // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask + if (isOptimizedBinaryString !== true) { + // this is a string, not in a base64 format. + // Be sure that this is a correct "binary string" + data = string2binary(data); + } + } + } + return data; + }); +}; + +},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(require,module,exports){ +'use strict'; +var readerFor = require('./reader/readerFor'); +var utils = require('./utils'); +var sig = require('./signature'); +var ZipEntry = require('./zipEntry'); +var utf8 = require('./utf8'); +var support = require('./support'); +// class ZipEntries {{{ +/** + * All the entries in the zip file. + * @constructor + * @param {Object} loadOptions Options for loading the stream. + */ +function ZipEntries(loadOptions) { + this.files = []; + this.loadOptions = loadOptions; +} +ZipEntries.prototype = { + /** + * Check that the reader is on the specified signature. + * @param {string} expectedSignature the expected signature. + * @throws {Error} if it is an other signature. + */ + checkSignature: function(expectedSignature) { + if (!this.reader.readAndCheckSignature(expectedSignature)) { + this.reader.index -= 4; + var signature = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")"); + } + }, + /** + * Check if the given signature is at the given index. + * @param {number} askedIndex the index to check. + * @param {string} expectedSignature the signature to expect. + * @return {boolean} true if the signature is here, false otherwise. + */ + isSignature: function(askedIndex, expectedSignature) { + var currentIndex = this.reader.index; + this.reader.setIndex(askedIndex); + var signature = this.reader.readString(4); + var result = signature === expectedSignature; + this.reader.setIndex(currentIndex); + return result; + }, + /** + * Read the end of the central directory. + */ + readBlockEndOfCentral: function() { + this.diskNumber = this.reader.readInt(2); + this.diskWithCentralDirStart = this.reader.readInt(2); + this.centralDirRecordsOnThisDisk = this.reader.readInt(2); + this.centralDirRecords = this.reader.readInt(2); + this.centralDirSize = this.reader.readInt(4); + this.centralDirOffset = this.reader.readInt(4); + + this.zipCommentLength = this.reader.readInt(2); + // warning : the encoding depends of the system locale + // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded. + // On a windows machine, this field is encoded with the localized windows code page. + var zipComment = this.reader.readData(this.zipCommentLength); + var decodeParamType = support.uint8array ? "uint8array" : "array"; + // To get consistent behavior with the generation part, we will assume that + // this is utf8 encoded unless specified otherwise. + var decodeContent = utils.transformTo(decodeParamType, zipComment); + this.zipComment = this.loadOptions.decodeFileName(decodeContent); + }, + /** + * Read the end of the Zip 64 central directory. + * Not merged with the method readEndOfCentral : + * The end of central can coexist with its Zip64 brother, + * I don't want to read the wrong number of bytes ! + */ + readBlockZip64EndOfCentral: function() { + this.zip64EndOfCentralSize = this.reader.readInt(8); + this.reader.skip(4); + // this.versionMadeBy = this.reader.readString(2); + // this.versionNeeded = this.reader.readInt(2); + this.diskNumber = this.reader.readInt(4); + this.diskWithCentralDirStart = this.reader.readInt(4); + this.centralDirRecordsOnThisDisk = this.reader.readInt(8); + this.centralDirRecords = this.reader.readInt(8); + this.centralDirSize = this.reader.readInt(8); + this.centralDirOffset = this.reader.readInt(8); + + this.zip64ExtensibleData = {}; + var extraDataSize = this.zip64EndOfCentralSize - 44, + index = 0, + extraFieldId, + extraFieldLength, + extraFieldValue; + while (index < extraDataSize) { + extraFieldId = this.reader.readInt(2); + extraFieldLength = this.reader.readInt(4); + extraFieldValue = this.reader.readData(extraFieldLength); + this.zip64ExtensibleData[extraFieldId] = { + id: extraFieldId, + length: extraFieldLength, + value: extraFieldValue + }; + } + }, + /** + * Read the end of the Zip 64 central directory locator. + */ + readBlockZip64EndOfCentralLocator: function() { + this.diskWithZip64CentralDirStart = this.reader.readInt(4); + this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8); + this.disksCount = this.reader.readInt(4); + if (this.disksCount > 1) { + throw new Error("Multi-volumes zip are not supported"); + } + }, + /** + * Read the local files, based on the offset read in the central part. + */ + readLocalFiles: function() { + var i, file; + for (i = 0; i < this.files.length; i++) { + file = this.files[i]; + this.reader.setIndex(file.localHeaderOffset); + this.checkSignature(sig.LOCAL_FILE_HEADER); + file.readLocalPart(this.reader); + file.handleUTF8(); + file.processAttributes(); + } + }, + /** + * Read the central directory. + */ + readCentralDir: function() { + var file; + + this.reader.setIndex(this.centralDirOffset); + while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) { + file = new ZipEntry({ + zip64: this.zip64 + }, this.loadOptions); + file.readCentralPart(this.reader); + this.files.push(file); + } + + if (this.centralDirRecords !== this.files.length) { + if (this.centralDirRecords !== 0 && this.files.length === 0) { + // We expected some records but couldn't find ANY. + // This is really suspicious, as if something went wrong. + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + } else { + // We found some records but not all. + // Something is wrong but we got something for the user: no error here. + // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length); + } + } + }, + /** + * Read the end of central directory. + */ + readEndOfCentral: function() { + var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END); + if (offset < 0) { + // Check if the content is a truncated zip or complete garbage. + // A "LOCAL_FILE_HEADER" is not required at the beginning (auto + // extractible zip for example) but it can give a good hint. + // If an ajax request was used without responseType, we will also + // get unreadable data. + var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER); + + if (isGarbage) { + throw new Error("Can't find end of central directory : is this a zip file ? " + + "If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"); + } else { + throw new Error("Corrupted zip: can't find end of central directory"); + } + + } + this.reader.setIndex(offset); + var endOfCentralDirOffset = offset; + this.checkSignature(sig.CENTRAL_DIRECTORY_END); + this.readBlockEndOfCentral(); + + + /* extract from the zip spec : + 4) If one of the fields in the end of central directory + record is too small to hold required data, the field + should be set to -1 (0xFFFF or 0xFFFFFFFF) and the + ZIP64 format record should be created. + 5) The end of central directory record and the + Zip64 end of central directory locator record must + reside on the same disk when splitting or spanning + an archive. + */ + if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) { + this.zip64 = true; + + /* + Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from + the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents + all numbers as 64-bit double precision IEEE 754 floating point numbers. + So, we have 53bits for integers and bitwise operations treat everything as 32bits. + see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators + and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5 + */ + + // should look for a zip64 EOCD locator + offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR); + if (offset < 0) { + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + } + this.reader.setIndex(offset); + this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR); + this.readBlockZip64EndOfCentralLocator(); + + // now the zip64 EOCD record + if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) { + // console.warn("ZIP64 end of central directory not where expected."); + this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END); + if (this.relativeOffsetEndOfZip64CentralDir < 0) { + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + } + } + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir); + this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END); + this.readBlockZip64EndOfCentral(); + } + + var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize; + if (this.zip64) { + expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator + expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize; + } + + var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset; + + if (extraBytes > 0) { + // console.warn(extraBytes, "extra bytes at beginning or within zipfile"); + if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) { + // The offsets seem wrong, but we have something at the specified offset. + // So… we keep it. + } else { + // the offset is wrong, update the "zero" of the reader + // this happens if data has been prepended (crx files for example) + this.reader.zero = extraBytes; + } + } else if (extraBytes < 0) { + throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes."); + } + }, + prepareReader: function(data) { + this.reader = readerFor(data); + }, + /** + * Read a zip file and create ZipEntries. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file. + */ + load: function(data) { + this.prepareReader(data); + this.readEndOfCentral(); + this.readCentralDir(); + this.readLocalFiles(); + } +}; +// }}} end of ZipEntries +module.exports = ZipEntries; + +},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(require,module,exports){ +'use strict'; +var readerFor = require('./reader/readerFor'); +var utils = require('./utils'); +var CompressedObject = require('./compressedObject'); +var crc32fn = require('./crc32'); +var utf8 = require('./utf8'); +var compressions = require('./compressions'); +var support = require('./support'); + +var MADE_BY_DOS = 0x00; +var MADE_BY_UNIX = 0x03; + +/** + * Find a compression registered in JSZip. + * @param {string} compressionMethod the method magic to find. + * @return {Object|null} the JSZip compression object, null if none found. + */ +var findCompression = function(compressionMethod) { + for (var method in compressions) { + if (!compressions.hasOwnProperty(method)) { + continue; + } + if (compressions[method].magic === compressionMethod) { + return compressions[method]; + } + } + return null; +}; + +// class ZipEntry {{{ +/** + * An entry in the zip file. + * @constructor + * @param {Object} options Options of the current file. + * @param {Object} loadOptions Options for loading the stream. + */ +function ZipEntry(options, loadOptions) { + this.options = options; + this.loadOptions = loadOptions; +} +ZipEntry.prototype = { + /** + * say if the file is encrypted. + * @return {boolean} true if the file is encrypted, false otherwise. + */ + isEncrypted: function() { + // bit 1 is set + return (this.bitFlag & 0x0001) === 0x0001; + }, + /** + * say if the file has utf-8 filename/comment. + * @return {boolean} true if the filename/comment is in utf-8, false otherwise. + */ + useUTF8: function() { + // bit 11 is set + return (this.bitFlag & 0x0800) === 0x0800; + }, + /** + * Read the local part of a zip file and add the info in this object. + * @param {DataReader} reader the reader to use. + */ + readLocalPart: function(reader) { + var compression, localExtraFieldsLength; + + // we already know everything from the central dir ! + // If the central dir data are false, we are doomed. + // On the bright side, the local part is scary : zip64, data descriptors, both, etc. + // The less data we get here, the more reliable this should be. + // Let's skip the whole header and dash to the data ! + reader.skip(22); + // in some zip created on windows, the filename stored in the central dir contains \ instead of /. + // Strangely, the filename here is OK. + // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes + // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators... + // Search "unzip mismatching "local" filename continuing with "central" filename version" on + // the internet. + // + // I think I see the logic here : the central directory is used to display + // content and the local directory is used to extract the files. Mixing / and \ + // may be used to display \ to windows users and use / when extracting the files. + // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394 + this.fileNameLength = reader.readInt(2); + localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir + // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding. + this.fileName = reader.readData(this.fileNameLength); + reader.skip(localExtraFieldsLength); + + if (this.compressedSize === -1 || this.uncompressedSize === -1) { + throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize === -1 || uncompressedSize === -1)"); + } + + compression = findCompression(this.compressionMethod); + if (compression === null) { // no compression found + throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + utils.transformTo("string", this.fileName) + ")"); + } + this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize)); + }, + + /** + * Read the central part of a zip file and add the info in this object. + * @param {DataReader} reader the reader to use. + */ + readCentralPart: function(reader) { + this.versionMadeBy = reader.readInt(2); + reader.skip(2); + // this.versionNeeded = reader.readInt(2); + this.bitFlag = reader.readInt(2); + this.compressionMethod = reader.readString(2); + this.date = reader.readDate(); + this.crc32 = reader.readInt(4); + this.compressedSize = reader.readInt(4); + this.uncompressedSize = reader.readInt(4); + var fileNameLength = reader.readInt(2); + this.extraFieldsLength = reader.readInt(2); + this.fileCommentLength = reader.readInt(2); + this.diskNumberStart = reader.readInt(2); + this.internalFileAttributes = reader.readInt(2); + this.externalFileAttributes = reader.readInt(4); + this.localHeaderOffset = reader.readInt(4); + + if (this.isEncrypted()) { + throw new Error("Encrypted zip are not supported"); + } + + // will be read in the local part, see the comments there + reader.skip(fileNameLength); + this.readExtraFields(reader); + this.parseZIP64ExtraField(reader); + this.fileComment = reader.readData(this.fileCommentLength); + }, + + /** + * Parse the external file attributes and get the unix/dos permissions. + */ + processAttributes: function () { + this.unixPermissions = null; + this.dosPermissions = null; + var madeBy = this.versionMadeBy >> 8; + + // Check if we have the DOS directory flag set. + // We look for it in the DOS and UNIX permissions + // but some unknown platform could set it as a compatibility flag. + this.dir = this.externalFileAttributes & 0x0010 ? true : false; + + if(madeBy === MADE_BY_DOS) { + // first 6 bits (0 to 5) + this.dosPermissions = this.externalFileAttributes & 0x3F; + } + + if(madeBy === MADE_BY_UNIX) { + this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF; + // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8); + } + + // fail safe : if the name ends with a / it probably means a folder + if (!this.dir && this.fileNameStr.slice(-1) === '/') { + this.dir = true; + } + }, + + /** + * Parse the ZIP64 extra field and merge the info in the current ZipEntry. + * @param {DataReader} reader the reader to use. + */ + parseZIP64ExtraField: function(reader) { + + if (!this.extraFields[0x0001]) { + return; + } + + // should be something, preparing the extra reader + var extraReader = readerFor(this.extraFields[0x0001].value); + + // I really hope that these 64bits integer can fit in 32 bits integer, because js + // won't let us have more. + if (this.uncompressedSize === utils.MAX_VALUE_32BITS) { + this.uncompressedSize = extraReader.readInt(8); + } + if (this.compressedSize === utils.MAX_VALUE_32BITS) { + this.compressedSize = extraReader.readInt(8); + } + if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) { + this.localHeaderOffset = extraReader.readInt(8); + } + if (this.diskNumberStart === utils.MAX_VALUE_32BITS) { + this.diskNumberStart = extraReader.readInt(4); + } + }, + /** + * Read the central part of a zip file and add the info in this object. + * @param {DataReader} reader the reader to use. + */ + readExtraFields: function(reader) { + var end = reader.index + this.extraFieldsLength, + extraFieldId, + extraFieldLength, + extraFieldValue; + + if (!this.extraFields) { + this.extraFields = {}; + } + + while (reader.index < end) { + extraFieldId = reader.readInt(2); + extraFieldLength = reader.readInt(2); + extraFieldValue = reader.readData(extraFieldLength); + + this.extraFields[extraFieldId] = { + id: extraFieldId, + length: extraFieldLength, + value: extraFieldValue + }; + } + }, + /** + * Apply an UTF8 transformation if needed. + */ + handleUTF8: function() { + var decodeParamType = support.uint8array ? "uint8array" : "array"; + if (this.useUTF8()) { + this.fileNameStr = utf8.utf8decode(this.fileName); + this.fileCommentStr = utf8.utf8decode(this.fileComment); + } else { + var upath = this.findExtraFieldUnicodePath(); + if (upath !== null) { + this.fileNameStr = upath; + } else { + // ASCII text or unsupported code page + var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName); + this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray); + } + + var ucomment = this.findExtraFieldUnicodeComment(); + if (ucomment !== null) { + this.fileCommentStr = ucomment; + } else { + // ASCII text or unsupported code page + var commentByteArray = utils.transformTo(decodeParamType, this.fileComment); + this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray); + } + } + }, + + /** + * Find the unicode path declared in the extra field, if any. + * @return {String} the unicode path, null otherwise. + */ + findExtraFieldUnicodePath: function() { + var upathField = this.extraFields[0x7075]; + if (upathField) { + var extraReader = readerFor(upathField.value); + + // wrong version + if (extraReader.readInt(1) !== 1) { + return null; + } + + // the crc of the filename changed, this field is out of date. + if (crc32fn(this.fileName) !== extraReader.readInt(4)) { + return null; + } + + return utf8.utf8decode(extraReader.readData(upathField.length - 5)); + } + return null; + }, + + /** + * Find the unicode comment declared in the extra field, if any. + * @return {String} the unicode comment, null otherwise. + */ + findExtraFieldUnicodeComment: function() { + var ucommentField = this.extraFields[0x6375]; + if (ucommentField) { + var extraReader = readerFor(ucommentField.value); + + // wrong version + if (extraReader.readInt(1) !== 1) { + return null; + } + + // the crc of the comment changed, this field is out of date. + if (crc32fn(this.fileComment) !== extraReader.readInt(4)) { + return null; + } + + return utf8.utf8decode(extraReader.readData(ucommentField.length - 5)); + } + return null; + } +}; +module.exports = ZipEntry; + +},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(require,module,exports){ +'use strict'; + +var StreamHelper = require('./stream/StreamHelper'); +var DataWorker = require('./stream/DataWorker'); +var utf8 = require('./utf8'); +var CompressedObject = require('./compressedObject'); +var GenericWorker = require('./stream/GenericWorker'); + +/** + * A simple object representing a file in the zip file. + * @constructor + * @param {string} name the name of the file + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data + * @param {Object} options the options of the file + */ +var ZipObject = function(name, data, options) { + this.name = name; + this.dir = options.dir; + this.date = options.date; + this.comment = options.comment; + this.unixPermissions = options.unixPermissions; + this.dosPermissions = options.dosPermissions; + + this._data = data; + this._dataBinary = options.binary; + // keep only the compression + this.options = { + compression : options.compression, + compressionOptions : options.compressionOptions + }; +}; + +ZipObject.prototype = { + /** + * Create an internal stream for the content of this object. + * @param {String} type the type of each chunk. + * @return StreamHelper the stream. + */ + internalStream: function (type) { + var result = null, outputType = "string"; + try { + if (!type) { + throw new Error("No output type specified."); + } + outputType = type.toLowerCase(); + var askUnicodeString = outputType === "string" || outputType === "text"; + if (outputType === "binarystring" || outputType === "text") { + outputType = "string"; + } + result = this._decompressWorker(); + + var isUnicodeString = !this._dataBinary; + + if (isUnicodeString && !askUnicodeString) { + result = result.pipe(new utf8.Utf8EncodeWorker()); + } + if (!isUnicodeString && askUnicodeString) { + result = result.pipe(new utf8.Utf8DecodeWorker()); + } + } catch (e) { + result = new GenericWorker("error"); + result.error(e); + } + + return new StreamHelper(result, outputType, ""); + }, + + /** + * Prepare the content in the asked type. + * @param {String} type the type of the result. + * @param {Function} onUpdate a function to call on each internal update. + * @return Promise the promise of the result. + */ + async: function (type, onUpdate) { + return this.internalStream(type).accumulate(onUpdate); + }, + + /** + * Prepare the content as a nodejs stream. + * @param {String} type the type of each chunk. + * @param {Function} onUpdate a function to call on each internal update. + * @return Stream the stream. + */ + nodeStream: function (type, onUpdate) { + return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate); + }, + + /** + * Return a worker for the compressed content. + * @private + * @param {Object} compression the compression object to use. + * @param {Object} compressionOptions the options to use when compressing. + * @return Worker the worker. + */ + _compressWorker: function (compression, compressionOptions) { + if ( + this._data instanceof CompressedObject && + this._data.compression.magic === compression.magic + ) { + return this._data.getCompressedWorker(); + } else { + var result = this._decompressWorker(); + if(!this._dataBinary) { + result = result.pipe(new utf8.Utf8EncodeWorker()); + } + return CompressedObject.createWorkerFrom(result, compression, compressionOptions); + } + }, + /** + * Return a worker for the decompressed content. + * @private + * @return Worker the worker. + */ + _decompressWorker : function () { + if (this._data instanceof CompressedObject) { + return this._data.getContentWorker(); + } else if (this._data instanceof GenericWorker) { + return this._data; + } else { + return new DataWorker(this._data); + } + } +}; + +var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"]; +var removedFn = function () { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); +}; + +for(var i = 0; i < removedMethods.length; i++) { + ZipObject.prototype[removedMethods[i]] = removedFn; +} +module.exports = ZipObject; + +},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(require,module,exports){ +(function (global){ +'use strict'; +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +var scheduleDrain; + +{ + if (Mutation) { + var called = 0; + var observer = new Mutation(nextTick); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + scheduleDrain = function () { + element.data = (called = ++called % 2); + }; + } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') { + var channel = new global.MessageChannel(); + channel.port1.onmessage = nextTick; + scheduleDrain = function () { + channel.port2.postMessage(0); + }; + } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) { + scheduleDrain = function () { + + // Create a + + + + + + + + + +
+ +
+
+
+

Serialized Form

+
+
+ +
+
+ +
+
+ + diff --git a/doc/stylesheet.css b/doc/stylesheet.css new file mode 100644 index 0000000..e12be4e --- /dev/null +++ b/doc/stylesheet.css @@ -0,0 +1,798 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flexBox { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flexHeader { + flex: 0 0 auto; + } + .flexContent { + flex: 1 1 auto; + overflow-y: auto; + } +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.subNav .navList { + padding-top:5px; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.subNav .navListSearch { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.navListSearch label { + position:relative; + right:-16px; +} +ul.subNavList li { + list-style:none; + float:left; + padding-top:10px; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.navList, div.subNav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.header { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration .summary h2, +body.class-declaration .details h2, +body.class-use h2, +body.module-declaration .blockList h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration .summary h3, +body.class-declaration .details h3, +body.class-declaration .summary .inheritedList h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer, +.allClassesContainer, .allPackagesContainer, .systemPropertiesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.blockList { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* + * Styles for tables. + */ +.overviewSummary table, .memberSummary table, .typeSummary table, .useSummary table, .constantsSummary table, .deprecatedSummary table, +.requiresSummary table, .packagesSummary table, .providesSummary table, .usesSummary table, .systemPropertiesSummary table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary table, .memberSummary table, .requiresSummary table, .packagesSummary table, +.providesSummary table, .usesSummary table, .systemPropertiesSummary table { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption, +.requiresSummary caption, .packagesSummary caption, .providesSummary caption, +.usesSummary caption, .systemPropertiesSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.constantsSummary caption a:link, .constantsSummary caption a:visited, +.useSummary caption a:link, .useSummary caption a:visited { + color:#1f389c; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.deprecatedSummary caption a:link, +.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link, +.usesSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover, +.usesSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active, +.usesSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.deprecatedSummary caption a:visited, +.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited, +.usesSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span, +.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span, +.usesSummary caption span, .systemPropertiesSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd, +.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.overviewSummary [role=tablist] button, .memberSummary [role=tablist] button, +.typeSummary [role=tablist] button, .packagesSummary [role=tablist] button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +.overviewSummary [role=tablist] .activeTableTab, .memberSummary [role=tablist] .activeTableTab, +.typeSummary [role=tablist] .activeTableTab, .packagesSummary [role=tablist] .activeTableTab { + background: #F8981D; + color: #253441; +} +.overviewSummary [role=tablist] .tableTab, .memberSummary [role=tablist] .tableTab, +.typeSummary [role=tablist] .tableTab, .packagesSummary [role=tablist] .tableTab { + background: #4D7A97; + color: #FFFFFF; +} +.rowColor th, .altColor th { + font-weight:normal; +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td, +.requiresSummary td, .packagesSummary td, .providesSummary td, +.usesSummary td, .systemPropertiesSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th, +.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td, +.constantsSummary td, .systemPropertiesSummary th { + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th, +.packagesSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + font-size:13px; +} +td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast { + font-size:13px; +} +.constantsSummary th, .packagesSummary th { + font-size:13px; +} +.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst, +.providesSummary td.colLast { + white-space:normal; + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.requiresSummary td.colFirst, .requiresSummary th.colFirst, +.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th, +.usesSummary td.colFirst, .usesSummary th.colFirst, +.providesSummary td.colFirst, .providesSummary th.colFirst, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName, +.typeSummary td.colFirst, .typeSummary th.colFirst { + vertical-align:top; +} +.packagesSummary th.colLast, .packagesSummary td.colLast { + white-space:normal; +} +td.colFirst a:link, td.colFirst a:visited, +td.colSecond a:link, td.colSecond a:visited, +th.colFirst a:link, th.colFirst a:visited, +th.colSecond a:link, th.colSecond a:visited, +th.colConstructorName a:link, th.colConstructorName a:visited, +th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited, +.constantValuesContainer td a:link, .constantValuesContainer td a:visited, +.allClassesContainer td a:link, .allClassesContainer td a:visited, +.allPackagesContainer td a:link, .allPackagesContainer td a:visited { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor, .altColor th { + background-color:#FFFFFF; +} +.rowColor, .rowColor th { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +td.colLast div { + padding-top:0px; +} +td.colLast a { + padding-bottom:3px; +} +div.memberSignature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +div.memberSignature span.annotations { + white-space: pre-wrap; +} +div.memberSignature span.typeParametersLong, +div.memberSignature span.arguments, +div.memberSignature span.exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +div.memberSignature span.typeParameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink, +.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType, +.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel, +.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} +.deprecationBlock { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.resultItem { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.resultHighlight { + font-weight:bold; +} +#search { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.searchTagDescResult { + font-style:italic; + font-size:11px; +} +.searchTagHolderResult { + font-style:italic; + font-size:12px; +} +.searchTagResult:target { + background-color:yellow; +} +.moduleGraph span { + display:none; + position:absolute; +} +.moduleGraph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inheritedList { + margin: 10px 0 10px 0; +} +section.description { + line-height: 1.4; +} +.summary section[class$="Summary"], .details section[class$="Details"], +.classUses .detail, .serializedClassDetails { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inheritedList, section[class$="Details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.verticalSeparator { + padding: 0 5px; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} diff --git a/doc/system-properties.html b/doc/system-properties.html new file mode 100644 index 0000000..ee7cfa8 --- /dev/null +++ b/doc/system-properties.html @@ -0,0 +1,107 @@ + + + + + +System Properties + + + + + + + + + + + + + + + + +
+ +
+
+
+

System Properties

+
+
+
+ + + + + + + + +
System Properties Summary 
PropertyReferenced In
+
+
+
+ + + diff --git a/doc/type-search-index.js b/doc/type-search-index.js new file mode 100644 index 0000000..edb3a8f --- /dev/null +++ b/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"edu.handong.csee.isel.bic.collector","l":"AGSZZBICCollector"},{"l":"All Classes","url":"allclasses-index.html"},{"p":"edu.handong.csee.isel.bic.szz.graph","l":"AnnotationGraphBuilder"},{"p":"edu.handong.csee.isel.bic.szz.graph","l":"AnnotationGraphBuilderThread"},{"p":"edu.handong.csee.isel.bic.szz.graph","l":"AnnotationGraphModel"},{"p":"edu.handong.csee.isel.metric.collector","l":"ArffHelper"},{"p":"edu.handong.csee.isel.metric.collector","l":"BagOfWordsCollector"},{"p":"edu.handong.csee.isel.bfc","l":"BFCCollector"},{"p":"edu.handong.csee.isel.bfc.collector","l":"BFCGitHubCollector"},{"p":"edu.handong.csee.isel.bfc.collector","l":"BFCJiraCollector"},{"p":"edu.handong.csee.isel.bfc.collector","l":"BFCKeywordCollector"},{"p":"edu.handong.csee.isel.bic","l":"BICCollector"},{"p":"edu.handong.csee.isel.data.processor.input.command","l":"BICCommand"},{"p":"edu.handong.csee.isel.bic.szz.data","l":"BICInfo"},{"p":"edu.handong.csee.isel.data.csv","l":"BICInfo"},{"p":"edu.handong.csee.isel.bic.collector","l":"CBICCollector"},{"p":"edu.handong.csee.isel.szz.data","l":"Change"},{"p":"edu.handong.csee.isel.metric.collector","l":"CharacteristicVectorCollector"},{"p":"edu.handong.csee.isel.data.processor.input.converter","l":"CLIConverter"},{"p":"edu.handong.csee.isel.metric.collector","l":"CMetricCollector"},{"p":"edu.handong.csee.isel.metric.metadata","l":"CommitCollector"},{"p":"edu.handong.csee.isel.bfc.collector.github","l":"CommitParser"},{"p":"edu.handong.csee.isel.metric.metadata","l":"CommitUnitInfo"},{"p":"edu.handong.csee.isel.patch.collector","l":"CPatchCollector"},{"p":"edu.handong.csee.isel.data","l":"CSVInfo"},{"p":"edu.handong.csee.isel.data.processor","l":"CSVMaker"},{"p":"edu.handong.csee.isel.szz.data","l":"DeletedLineInCommits"},{"p":"edu.handong.csee.isel.metric.metadata","l":"DeveloperExperienceInfo"},{"p":"edu.handong.csee.isel.metric.collector","l":"DeveloperHistory"},{"p":"edu.handong.csee.isel.data.processor.input.command","l":"DeveloperMetricCommand"},{"p":"edu.handong.csee.isel.bic.szz.exception","l":"EmptyHunkTypeException"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"FileManager"},{"p":"edu.handong.csee.isel.bic.szz.util","l":"GitUtils"},{"p":"edu.handong.csee.isel.bic.szz.model","l":"Hunk"},{"p":"edu.handong.csee.isel.data","l":"Input"},{"p":"edu.handong.csee.isel.data.processor.input","l":"InputConverter"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"InvalidDomainException"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"InvalidProjectKeyException"},{"p":"edu.handong.csee.isel.bfc.collector.github","l":"IssueLinkParser"},{"p":"edu.handong.csee.isel","l":"JavaASTParser"},{"p":"edu.handong.csee.isel.bic.szz.util","l":"JavaASTParser"},{"p":"edu.handong.csee.isel.szz.utils","l":"JavaASTParser"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"JiraBugIssueCrawler"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"JQLManager"},{"p":"edu.handong.csee.isel.bic.szz.model","l":"Line"},{"p":"edu.handong.csee.isel.bic.szz.model","l":"LineType"},{"p":"edu.handong.csee.isel","l":"Main"},{"p":"edu.handong.csee.isel.metric.collector","l":"MetaDataCollector"},{"p":"edu.handong.csee.isel.metric.metadata","l":"MetaDataInfo"},{"p":"edu.handong.csee.isel.metric","l":"MetricCollector"},{"p":"edu.handong.csee.isel.data.processor.input.command","l":"MetricCommand"},{"p":"edu.handong.csee.isel.data.csv","l":"MetricInfo"},{"p":"edu.handong.csee.isel.metric.metadata","l":"MetricParser"},{"p":"edu.handong.csee.isel.data","l":"Input.Mode"},{"p":"edu.handong.csee.isel.bfc.collector.github","l":"NoIssuePagesException"},{"p":"edu.handong.csee.isel.patch","l":"PatchCollector"},{"p":"edu.handong.csee.isel.data.processor.input.command","l":"PatchCommand"},{"p":"edu.handong.csee.isel.data.csv","l":"PatchInfo"},{"p":"edu.handong.csee.isel.bic.szz.model","l":"PathRevision"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"Period"},{"p":"edu.handong.csee.isel.bic.szz.model","l":"RevsWithPath"},{"p":"edu.handong.csee.isel.metric.metadata","l":"SourceFileInfo"},{"p":"edu.handong.csee.isel.data","l":"Input.SZZMode"},{"p":"edu.handong.csee.isel.szz","l":"SZZRunner"},{"p":"edu.handong.csee.isel.data.processor.input.command","l":"Task"},{"p":"edu.handong.csee.isel.data","l":"Input.TaskType"},{"p":"edu.handong.csee.isel.metric.collector","l":"Test"},{"p":"edu.handong.csee.isel.bic.szz.trace","l":"Tracer"},{"p":"edu.handong.csee.isel.bfc.collector.jira","l":"URLManager"},{"p":"edu.handong.csee.isel","l":"Utils"},{"p":"edu.handong.csee.isel.bic.szz.util","l":"Utils"},{"p":"edu.handong.csee.isel.metric.metadata","l":"Utils"},{"p":"edu.handong.csee.isel.szz.utils","l":"Utils"}] \ No newline at end of file diff --git a/build/distributions/BugPatchCollector/lib/all-1.1.2.pom b/run/BugPatchCollector/lib/all-1.1.2.pom similarity index 100% rename from build/distributions/BugPatchCollector/lib/all-1.1.2.pom rename to run/BugPatchCollector/lib/all-1.1.2.pom diff --git a/src/main/java/edu/handong/csee/isel/Main.java b/src/main/java/edu/handong/csee/isel/Main.java index 8e9d1cd..05e82d9 100644 --- a/src/main/java/edu/handong/csee/isel/Main.java +++ b/src/main/java/edu/handong/csee/isel/Main.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; +import java.util.HashSet; import java.util.List; import org.apache.commons.collections4.IterableUtils; @@ -13,7 +14,7 @@ import org.eclipse.jgit.api.errors.TransportException; import org.eclipse.jgit.revwalk.RevCommit; -import edu.handong.csee.isel.bfc.BFCCollector; +import edu.handong.csee.isel.bfc.BFCCollectable; import edu.handong.csee.isel.bfc.collector.BFCGitHubCollector; import edu.handong.csee.isel.bfc.collector.BFCJiraCollector; import edu.handong.csee.isel.bfc.collector.BFCKeywordCollector; @@ -24,7 +25,7 @@ import edu.handong.csee.isel.bic.collector.CBICCollector; import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.processor.CSVMaker; +import edu.handong.csee.isel.data.csv.CSVMaker; import edu.handong.csee.isel.data.processor.input.command.Task; import edu.handong.csee.isel.metric.MetricCollector; import edu.handong.csee.isel.metric.collector.CMetricCollector; @@ -32,13 +33,14 @@ import edu.handong.csee.isel.metric.metadata.Utils; import edu.handong.csee.isel.patch.PatchCollector; import edu.handong.csee.isel.patch.collector.CPatchCollector; +import edu.handong.csee.isel.repo.collector.RepoCollector; +import edu.handong.csee.isel.repo.collector.RepoCommitCollector; import picocli.CommandLine; public class Main { - public static void main(String[] args) - throws NoHeadException, IOException, GitAPIException, InvalidProjectKeyException, InvalidDomainException { + throws NoHeadException, IOException, GitAPIException, InvalidProjectKeyException, InvalidDomainException, InterruptedException { // 1. Input Task task = new Task(); @@ -46,31 +48,44 @@ public static void main(String[] args) int exitCode = cmd.execute(args); if(exitCode != 0) System.exit(exitCode); - + // 2. get all commits from GIT directory - List commitList; - File gitDirectory = null; - if (isCloned() && isValidRepository()) { - gitDirectory = getGitDirectory(); - } else if (isCloned() && (!isValidRepository())) { - File directory = getGitDirectory(); - directory.delete(); - gitDirectory = GitClone(); - } else { - gitDirectory = GitClone(); - } - commitList = getCommitListFrom(gitDirectory); +// List commitList; +// File gitDirectory = null; +// if (isCloned() && isValidRepository()) { +// gitDirectory = getGitDirectory(); +// } else if (isCloned() && (!isValidRepository())) { +// File directory = getGitDirectory(); +// directory.delete(); +// gitDirectory = GitClone(); +// } else { +// gitDirectory = GitClone(); +// } +// commitList = getCommitListFrom(gitDirectory); // 3. collect Bug-Fix-Commit + List commitList = null; List bfcList = null; List bicList = null;//메트릭스에서 쓰임. MetricCollector metricCollector = null; - BFCCollector bfcCollector = null; + BFCCollectable bfcCollector = null; List csvInfoLst = null; - + HashSet repoResult= null; + HashSet repoCommitResult= null; switch (Input.taskType) { + case FINDREPO: + RepoCollector searchRepo = new RepoCollector(); //git token 받아오기 아아 얘가 리파지토리 찾아오는 + repoResult = searchRepo.collectFrom(); + + if(Input.commitCountBase != null) { + RepoCommitCollector searchCommit = new RepoCommitCollector(repoResult); + repoCommitResult = searchCommit.collectFrom(); + } + + break; case PATCH: + commitList = getAllCommitList(); bfcList=makeBFCCollector(bfcList,commitList,bfcCollector); PatchCollector patchCollector = new CPatchCollector(); @@ -82,6 +97,7 @@ public static void main(String[] args) break; case BIC: + commitList = getAllCommitList(); bfcList = makeBFCCollector(bfcList,commitList,bfcCollector); BICCollector bicCollector; @@ -104,6 +120,7 @@ public static void main(String[] args) case METRIC: //BIC 파일 읽기 + commitList = getAllCommitList(); bicList= readBICcsv(); metricCollector = new CMetricCollector(false); metricCollector.setBIC(bicList); @@ -114,6 +131,7 @@ public static void main(String[] args) case DEVELOPERMETRIC: //BIC 파일 읽기 + commitList = getAllCommitList(); bicList=readBICcsv(); DeveloperHistory developerHistory = new DeveloperHistory(); @@ -128,6 +146,21 @@ public static void main(String[] args) break; } } + + private static List getAllCommitList() throws InvalidRemoteException, TransportException, GitAPIException, IOException{ + File gitDirectory = null; + if (isCloned() && isValidRepository()) { + gitDirectory = getGitDirectory(); + } else if (isCloned() && (!isValidRepository())) { + File directory = getGitDirectory(); + directory.delete(); + gitDirectory = GitClone(); + } else { + gitDirectory = GitClone(); + } + return getCommitListFrom(gitDirectory); + + } public static List readBICcsv(){ @@ -142,6 +175,7 @@ public static List readBICcsv(){ } + public static void printCSV(List csvInfoLst) throws IOException { if (csvInfoLst.size() < 1) { @@ -154,16 +188,13 @@ public static void printCSV(List csvInfoLst) throws IOException { } - public static List makeBFCCollector (List bfcList, List commitList, BFCCollector bfcCollector) + public static List makeBFCCollector (List bfcList, List commitList, BFCCollectable bfcCollector) throws IOException,InvalidProjectKeyException, InvalidDomainException{ switch (Input.mode) { //CLIConverter에서 각각 옵션 모드를 설정해 주었다. case JIRA: // System.out.println("Main Jira part!"); bfcCollector = new BFCJiraCollector(); - bfcCollector.setJiraURL(Input.jiraURL); - bfcCollector.setJiraProjectKey(Input.jiraProjectKey); - bfcCollector.setOutPath(Input.outPath); bfcList = bfcCollector.collectFrom(commitList); break; @@ -176,8 +207,6 @@ public static List makeBFCCollector (List bfcList, List bfcList) { return bfcList.contains(commit.getId().getName()); @@ -362,8 +362,15 @@ public static String parseAuthorID(String authorId) { } return authorId; } - + // call function in collectFrom method of AGSZZBICCollecor class // added part because of ag-szz + /** + * + * @param outPath output local path + * @param GIT_URL input github url + * @param BICLines bug introducing commit information + * @throws IOException + */ public static void storeOutputFile(String outPath, String GIT_URL, List BICLines) throws IOException { // Set file name String[] arr = GIT_URL.split("/"); diff --git a/src/main/java/edu/handong/csee/isel/bfc/BFCCollectable.java b/src/main/java/edu/handong/csee/isel/bfc/BFCCollectable.java new file mode 100644 index 0000000..f421c18 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/bfc/BFCCollectable.java @@ -0,0 +1,13 @@ +package edu.handong.csee.isel.bfc; + +import java.io.IOException; +import java.util.List; + +import org.eclipse.jgit.revwalk.RevCommit; + +import edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException; +import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; + +public interface BFCCollectable { + List collectFrom(List commitList) throws IOException, InvalidProjectKeyException, InvalidDomainException; +} diff --git a/src/main/java/edu/handong/csee/isel/bfc/BFCCollector.java b/src/main/java/edu/handong/csee/isel/bfc/BFCCollector.java deleted file mode 100644 index 51b494d..0000000 --- a/src/main/java/edu/handong/csee/isel/bfc/BFCCollector.java +++ /dev/null @@ -1,36 +0,0 @@ -package edu.handong.csee.isel.bfc; - -import java.io.IOException; -import java.util.List; - -import org.eclipse.jgit.revwalk.RevCommit; - -import edu.handong.csee.isel.bfc.collector.jira.InvalidDomainException; -import edu.handong.csee.isel.bfc.collector.jira.InvalidProjectKeyException; - -public abstract class BFCCollector { - - public List collectFrom(List commitList) throws IOException, InvalidProjectKeyException, InvalidDomainException { - return null; - } - - public void setJiraProjectKey(String key) { - - } - - public void setJiraURL(String url) { - - } - - public void setGitHubURL(String url) { - - } - - public void setGitHubLabel(String label ) { - - } - - public void setOutPath(String outPath) { - - } -} diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.java index ccef73b..97f0a3a 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCGitHubCollector.java @@ -6,29 +6,21 @@ import org.eclipse.jgit.revwalk.RevCommit; -import edu.handong.csee.isel.bfc.BFCCollector; +import edu.handong.csee.isel.bfc.BFCCollectable; import edu.handong.csee.isel.bfc.collector.github.CommitParser; import edu.handong.csee.isel.bfc.collector.github.IssueLinkParser; import edu.handong.csee.isel.bfc.collector.github.NoIssuePagesException; +import edu.handong.csee.isel.data.Input; -public class BFCGitHubCollector extends BFCCollector { +public class BFCGitHubCollector implements BFCCollectable { - String url; - String label; + String url = Input.gitURL; + String label = Input.label; public BFCGitHubCollector() { } @Override - public void setGitHubURL(String url) { - this.url = url; - } - - @Override - public void setGitHubLabel(String label) { - this.label = label; - } - public List collectFrom(List commitList) { try { diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java index e09297e..0c9ad20 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCJiraCollector.java @@ -10,19 +10,21 @@ import org.apache.commons.io.FileUtils; import org.eclipse.jgit.revwalk.RevCommit; -import edu.handong.csee.isel.bfc.BFCCollector; +import edu.handong.csee.isel.bfc.BFCCollectable; import edu.handong.csee.isel.bfc.collector.jira.JiraBugIssueCrawler; +import edu.handong.csee.isel.data.Input; -public class BFCJiraCollector extends BFCCollector { +public class BFCJiraCollector implements BFCCollectable { - String url; - String key; - String path; + String url = Input.jiraURL; + String key = Input.jiraProjectKey; + String path = Input.outPath; public BFCJiraCollector() { } + @Override public List collectFrom(List commitList) { Pattern pattern = Pattern.compile(key + "-\\d+", Pattern.CASE_INSENSITIVE); @@ -73,19 +75,4 @@ public List collectFrom(List commitList) { return bfcList; } - @Override - public void setJiraProjectKey(String key) { - this.key = key; - } - - @Override - public void setJiraURL(String url) { - this.url = url; - } - - @Override - public void setOutPath(String outPath) { - this.path = outPath; - } - } diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java index 82c1a20..cec15a2 100644 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/BFCKeywordCollector.java @@ -7,10 +7,10 @@ import org.eclipse.jgit.revwalk.RevCommit; -import edu.handong.csee.isel.bfc.BFCCollector; +import edu.handong.csee.isel.bfc.BFCCollectable; import edu.handong.csee.isel.data.Input; -public class BFCKeywordCollector extends BFCCollector { +public class BFCKeywordCollector implements BFCCollectable { public String[] bugKeywords; public BFCKeywordCollector() { @@ -26,6 +26,7 @@ public BFCKeywordCollector() { } } + @Override public List collectFrom(List commitList) { List bfcList = new ArrayList<>(); diff --git a/src/main/java/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.java b/src/main/java/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.java index 61edeee..53f910d 100755 --- a/src/main/java/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.java +++ b/src/main/java/edu/handong/csee/isel/bfc/collector/github/IssueLinkParser.java @@ -81,7 +81,7 @@ public void parseIssueAddress(String address, String label) throws IOException { /** * Using issueAddress in another class. * - * @return ArrayList + * */ public static ArrayList getIssueAddress() { return issueAddress; diff --git a/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java b/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java index cd1d928..e45f6a5 100644 --- a/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java +++ b/src/main/java/edu/handong/csee/isel/bic/collector/AGSZZBICCollector.java @@ -20,21 +20,44 @@ import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; +/** + * The {@code AGSZZBICCollector} class do collect BIC(bug introducing commit)
+ * using the annotation graph.
+ * It implements BICColletor which is interface about collecting BIC
+ * + * @author SJ + * @author JY + * @version 1.0 + */ public class AGSZZBICCollector implements BICCollector{ - List bfcList = null; + private List bfcList = null; - Git git; - Repository repo; + private Git git; + private Repository repo; public AGSZZBICCollector() { } + /** + * setting BFC(bug fixing commit) + * + * @param bfcList The list that is only bug fixing commit name list. + */ @Override public void setBFC(List bfcList) { this.bfcList = bfcList; } - + /** + * Make the annotation graph and than create bic csv file using annotation graph. + * + * @param commitList The list that is all commit list from github project. + * @return null + * @see "AnnotationGraphBuilder" + * @see "AnnotationGraphModel" + * @see "RevCommit" + * + */ @Override public List collectFrom(List commitList) throws IOException { try { diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java index f4aae76..e017fbb 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/data/BICInfo.java @@ -2,18 +2,26 @@ import edu.handong.csee.isel.bic.szz.model.Line; +/** + * The {@code BICInfo} class
+ * the bic information + * + * @author SJ + * @author JY + * + */ public class BICInfo implements Comparable { - String BISha1; - String biPath; - String FixSha1; - String path; - String BIDate; - String FixDate; - int biLineIdx; // line idx in BI file - String BIContent = ""; - String commiter; - String author; + private String BISha1; + private String biPath; + private String FixSha1; + private String path; + private String BIDate; + private String FixDate; + private int biLineIdx; // line idx in BI file + private String BIContent = ""; + private String commiter; + private String author; public BICInfo(String fixSha1, String path, String fixDate, Line line) { super(); @@ -38,47 +46,91 @@ public BICInfo(String fixSha1, String path, String fixDate, Line line) { // this.commiter = line.getCommiter(); // this.author = line.getAuthor(); // } - + /** + * + * @return BISha1 bic commit name + */ public String getBISha1() { return BISha1; } + /** + * + * @return biPath bic path + */ public String getBiPath() { return biPath; } + /** + * + * @return FixSha1 bfc commit name + */ public String getFixSha1() { return FixSha1; } + /** + * + * @return path bfc path + */ public String getPath() { return path; } + /** + * + * @return BIDate date bug created + */ public String getBIDate() { return BIDate; } + /** + * + * @return FixDate bug fixing date + */ public String getFixDate() { return FixDate; } + /** + * + * @return biLineIdx bug line index + */ public int getBiLineIdx() { return biLineIdx; } + /** + * + * @return BIContent bug content + */ public String getBIContent() { return BIContent; } + /** + * + * @return commiter Who made the commit + */ public String getCommiter() { return commiter; } + /** + * + * @return getAuthor + */ public String getAuthor() { return author; } + /** + * + * @param compareWith bic information + * @return Whether or not the bug information matches + */ public boolean equals(BICInfo compareWith) { if (!BISha1.equals(compareWith.BISha1)) return false; @@ -106,7 +158,6 @@ public boolean equals(BICInfo compareWith) { @Override public int compareTo(BICInfo o) { - // order by FixSha1, BISha1, BIContent, biLineIdx if (FixSha1.compareTo(o.FixSha1) < 0) return -1; diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java index ffebcbe..c243daf 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilder.java @@ -1,6 +1,7 @@ package edu.handong.csee.isel.bic.szz.graph; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -11,8 +12,25 @@ import edu.handong.csee.isel.bic.szz.model.RevsWithPath; -public class AnnotationGraphBuilder { +/** + * The {@code AnnotationGraphBuilder} class is for making Annotation Graph
+ * + * + * @author SJ + * @author JY + * @version 1.0 + */ +public class AnnotationGraphBuilder { + /** + * spiting Map RevsWithPath
+ * executing AnnotationGraphBuilderThread
+ * + * @param repo Github repository + * @param revsWithPath revs With Path + * @return annotationGraph annotation Graph + */ + // 1. call function in collectFrom method of AGSZZBICCollector class public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath revsWithPath) { // Phase 1 : split Map (i.e. RevsWithPath) int mapSize = revsWithPath.size(); // ?? @@ -22,7 +40,7 @@ public AnnotationGraphModel buildAnnotationGraph(Repository repo, RevsWithPath r if (mapSize < arrSize) arrSize = mapSize; - // 아마도 그룹을 총 10개로 하려고 한거임. + // 아마도 그룹을 총 10개로 나누려고 하려고 한거임. RevsWithPath[] revsWithPathArr = new RevsWithPath[arrSize]; for (int i = 0; i < arrSize; i++) { revsWithPathArr[i] = new RevsWithPath(); diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java index 247e703..01813a5 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphBuilderThread.java @@ -20,18 +20,30 @@ import edu.handong.csee.isel.bic.szz.model.RevsWithPath; import edu.handong.csee.isel.bic.szz.util.GitUtils; import edu.handong.csee.isel.bic.szz.util.Utils; - +// call function in collectFrom method of AGSZZBICCollector class +/** + * Create AnnotationGraphBuilder Thread + * + * @author SJ + * @author JY + * + */ public class AnnotationGraphBuilderThread implements Runnable { private Repository repo; private RevsWithPath revsWithPath; public AnnotationGraphModel partitionedAnnotationGraph; + /** + * + * @param repo Github project repository + * @param revsWithPath revs With Path + */ public AnnotationGraphBuilderThread(Repository repo, RevsWithPath revsWithPath) { super(); this.repo = repo; this.revsWithPath = revsWithPath; } - + @Override public void run() { try { @@ -44,7 +56,7 @@ public void run() { } } - + // 1. call function in AnnotationGraphBuilderThread private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, RevsWithPath revsWithPath) throws IOException, EmptyHunkTypeException { // Generate Annotation Graph @@ -223,7 +235,7 @@ private AnnotationGraphModel buildPartitionedAnnotationGraph(Repository repo, Re return partitionedAnnotationGraph; } - + // 1. call function in AnnotationGraphBuilderThread private boolean belongsToBothDELETEAndINSERT(ArrayList hunkList, int currHunkIdx, int currBeginOfChild) { int nextHunkIdx = currHunkIdx + 1; @@ -238,7 +250,7 @@ private boolean belongsToBothDELETEAndINSERT(ArrayList hunkList, int currH return false; } - + // 1. call function in AnnotationGraphBuilderThread private boolean belongsToBothDELETEAndREPLACE(ArrayList hunkList, int currHunkIdx, int currBeginOfChild) { int nextHunkIdx = currHunkIdx + 1; @@ -253,7 +265,7 @@ private boolean belongsToBothDELETEAndREPLACE(ArrayList hunkList, int curr return false; } - + // 1. call function in AnnotationGraphBuilderThread private void configureLineList(ArrayList lst, String path, RevCommit rev, String content) { String[] contentArr = content.split("\r\n|\r|\n"); @@ -269,7 +281,7 @@ private void configureLineList(ArrayList lst, String path, RevCommit rev, lst.add(line); } } - + // 1. call function in AnnotationGraphBuilderThread private ArrayList configureHunkList(EditList editList) { ArrayList hunkList = new ArrayList<>(); @@ -281,7 +293,7 @@ private ArrayList configureHunkList(EditList editList) { return hunkList; } - + // 1. call function in AnnotationGraphBuilderThread private void mapChildLineWithAncestor(int childIdx, int offset, List parentLineList, Line childLine) { Line ancestor = parentLineList.get(childIdx + offset); List ancestorsOfChild = childLine.getAncestors(); @@ -289,7 +301,7 @@ private void mapChildLineWithAncestor(int childIdx, int offset, List paren ancestorsOfChild.add(ancestor); childLine.setAncestors(ancestorsOfChild); } - + // 1. call function in AnnotationGraphBuilderThread private void mapChildLineWithAncestors(Hunk hunk, List parentLineList, Line childLine) { List ancestorsOfChild = parentLineList.subList(hunk.getBeginOfParent(), hunk.getEndOfParent()); diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java index b5b336a..59384c9 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/graph/AnnotationGraphModel.java @@ -8,6 +8,13 @@ import edu.handong.csee.isel.bic.szz.model.Line; // 한 path당 커밋과 고친 라인들 +/** + * The {@code AnnotationGraphModel} class is for HashMap that stores data + * + * @author SJ + * @author JY + * + */ public class AnnotationGraphModel extends HashMap>> { } diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java index bfc4769..85a5218 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/trace/Tracer.java @@ -18,16 +18,34 @@ import edu.handong.csee.isel.bic.szz.util.GitUtils; import edu.handong.csee.isel.bic.szz.util.Utils; import edu.handong.csee.isel.bic.szz.data.BICInfo; - + /** + * The {@code Tracer} class is commit tracer
+ * + * @author SJ + * @author JY + * @version 1.0 + * + */ public class Tracer { private static final int REFACTOIRNG_THRESHOLD = 10; private HashSet BILines = new HashSet<>(); private List bicList = new ArrayList<>(); - private static ArrayList formatChangedLineList = new ArrayList(); + //private static ArrayList formatChangedLineList = new ArrayList(); public Tracer() { } - + + /** + * Find path and line index for tracing
+ * Trace
+ * + * @param repo Github repository + * @param BFCList bug fixing list + * @param annotationGraph annotation Graph + * @param revsWithPath revs With Path + * @return bicList bug introducing commit + * @throws IOException failed file creating + */ public List collectBILines(Repository repo, List BFCList, AnnotationGraphModel annotationGraph, RevsWithPath revsWithPath) throws IOException { @@ -147,8 +165,8 @@ public List collectBILines(Repository repo, List BFCList, An return bicList; } - - public void trace(Line line) { + // call + private void trace(Line line) { // The fact that there are no ancestors means that the type of this line is INSERT // However, due to the limit of building AG algorithm, the type of line can be CONTEXT if the line is initially inserted in commit history. if (line.getAncestors().size() == 0) { @@ -168,26 +186,4 @@ public void trace(Line line) { } } } - - public void traceWithAnalysis(Line line, String BFC) { - for (Line ancestor : line.getAncestors()) { - // Lines that are not white space, not format change, and within hunk are BI Lines. - if (!Utils.isWhitespace(ancestor.getContent())) { - if (ancestor.isFormatChange()) { - if (!formatChangedLineList.contains(line)) { - System.out.println(String.join(",", BFC, line.getRev(), line.getPath(), line.getContent().strip())); - - formatChangedLineList.add(line); - } - traceWithAnalysis(ancestor, BFC); - - } else if (!ancestor.isWithinHunk()) { - - traceWithAnalysis(ancestor, BFC); - } else { - BILines.add(ancestor); - } - } - } - } } diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java b/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java index 43cecb2..f17c0f1 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/util/GitUtils.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -32,11 +33,20 @@ import edu.handong.csee.isel.bic.szz.model.PathRevision; import edu.handong.csee.isel.bic.szz.model.RevsWithPath; +/** + * The {@code GitUtils} class
+ * collects of functions necessary to execute AG_SZZ + * + * @author SJ + * @author JY + * @version 1.0 + * + */ public class GitUtils { public static DiffAlgorithm diffAlgorithm = DiffAlgorithm.getAlgorithm(DiffAlgorithm.SupportedAlgorithm.MYERS); public static RawTextComparator diffComparator = RawTextComparator.WS_IGNORE_ALL; - + // 1. call function in AnnotationGraphBuilderThread - same function edu.handong.csee.isel.getEditListFromDiff <이미존재> public static EditList getEditListFromDiff(String file1, String file2) { RawText rt1 = new RawText(file1.getBytes()); RawText rt2 = new RawText(file2.getBytes()); @@ -46,7 +56,16 @@ public static EditList getEditListFromDiff(String file1, String file2) { return diffList; } - + // call function in Tracer class + /** + * Conduct diff using diffAlgorithm that is MYERS Algorithm and diffComparator that is white space ignore all. + * + * @param repo Github repository + * @param parentTree parent commit tree + * @param childTree child commit tree + * @return diffs file path with change + * @throws IOException repository open faild + */ public static List diff(Repository repo, RevTree parentTree, RevTree childTree) throws IOException { List diffs; @@ -63,7 +82,15 @@ public static List diff(Repository repo, RevTree parentTree, RevTree return diffs; // paths 를 리턴한다. } - + // 2. call function in collectFrom method of AGSZZBICCollector class + /** + * Get the path where change exists for all commit lists. + * + * @param repo Github repository + * @param commits all commit list from input github project + * @return paths java file path with change + * @throws IOException IOException + */ public static List configurePathRevisionList(Repository repo, List commits) throws IOException { List paths = new ArrayList<>(); @@ -92,7 +119,14 @@ public static List configurePathRevisionList(Repository repo, List return paths; } - + // 3. call function in collectFrom method of AGSZZBICCollector class + /** + * Collect commit list related specific path + * + * @param pathRevisions information commit and path + * @param targetPaths target Paths + * @return revsWithPath revs With Path + */ public static RevsWithPath collectRevsWithSpecificPath(List pathRevisions, List targetPaths) { RevsWithPath revsWithPath = new RevsWithPath(); @@ -116,7 +150,18 @@ public static RevsWithPath collectRevsWithSpecificPath(List pathRe return revsWithPath; } - + // 1. call function in AnnotationGraphBuilderThread + /** + * get the file content using path info and commit info + * + * @param repo Github repository + * @param commit commit + * @param path target path + * @return string All file content + * @throws LargeObjectException LargeObjectException + * @throws MissingObjectException MissingObjectException + * @throws IOException IOException + */ public static String fetchBlob(Repository repo, RevCommit commit, String path) throws LargeObjectException, MissingObjectException, IOException { @@ -137,7 +182,8 @@ public static String fetchBlob(Repository repo, RevCommit commit, String path) return ""; } } - + + // edu.handong.csee.isel여기에 있음 <이미존재> public static String fetchBlob(Repository repo, String revSpec, String path) throws RevisionSyntaxException, AmbiguousObjectException, IncorrectObjectTypeException, IOException { @@ -167,7 +213,7 @@ public static String fetchBlob(Repository repo, String revSpec, String path) } } - + // 뭐하는 함수? 안불림 public static List getRevs(Git git) throws NoHeadException, GitAPIException { List commits = new ArrayList<>(); @@ -182,7 +228,7 @@ public static List getRevs(Git git) throws NoHeadException, GitAPIExc return commits; } - + // 뭐하는 함수? 안불림 public static ArrayList getBFCList(List issueKeys, List revs) { // To avoid duplicate BFCs HashSet BFCSet = new HashSet(); @@ -195,20 +241,17 @@ public static ArrayList getBFCList(List issueKeys, List(BFCSet); } - - public static ArrayList getBFCLIST(List BFCID, List revs) { - // To avoid duplicate BFCs - HashSet BFCSet = new HashSet(); - - for (String commitID : BFCID) { - for (RevCommit rev : revs) - if (rev.getFullMessage().contains(commitID)) - BFCSet.add(rev); - } - - return new ArrayList(BFCSet); - } + // 1. call function in collectFrom method of AGSZZBICCollector class + /** + * collect target path from bug fixing commit list.
+ * only java file path and file with change. + * + * @param repo Github repository + * @param BFCList bug fixing list + * @return targetPaths path from bfc list + * @throws IOException IOException + */ public static List getTargetPaths(Repository repo, List BFCList) throws IOException { List targetPaths = new ArrayList<>(); diff --git a/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java b/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java index 9b6de13..43b40cd 100644 --- a/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java +++ b/src/main/java/edu/handong/csee/isel/bic/szz/util/Utils.java @@ -21,7 +21,7 @@ public class Utils { public static boolean isWhitespace(String str) { return str.replaceAll("\\s", "").equals(""); } - + // 1. call function in AnnotationGraphBuilderThread public static String mergeLineList(List list) { String mergedContent = ""; @@ -31,7 +31,7 @@ public static String mergeLineList(List list) { return mergedContent.replaceAll("\\s", ""); } - + // 1. call function in An notationGraphBuilderThread public static String removeComments(String code) { JavaASTParser codeAST = new JavaASTParser(code); diff --git a/src/main/java/edu/handong/csee/isel/data/Input.java b/src/main/java/edu/handong/csee/isel/data/Input.java index 3c569f5..6a035e4 100644 --- a/src/main/java/edu/handong/csee/isel/data/Input.java +++ b/src/main/java/edu/handong/csee/isel/data/Input.java @@ -1,9 +1,10 @@ package edu.handong.csee.isel.data; +import java.util.HashMap; public class Input { - public static String gitURL = null; + public static String gitURL; public static String outPath; @@ -38,10 +39,27 @@ public class Input { public static String endDate; public static int percent; + /* + + public static String languageType; + + public static String forkNum; + + public static String recentDate; + + public static String createDate; + + public static String commitCountBase;*/ + + public static String authToken; + + public static HashMap findRepoOpt; + + public static String commitCountBase; public static enum TaskType { - PATCH, BIC, METRIC, DEVELOPERMETRIC + PATCH, BIC, METRIC, DEVELOPERMETRIC, FINDREPO } public static enum Mode { diff --git a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java b/src/main/java/edu/handong/csee/isel/data/csv/CSVMaker.java similarity index 93% rename from src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java rename to src/main/java/edu/handong/csee/isel/data/csv/CSVMaker.java index b3fa5b9..561e6d7 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/CSVMaker.java +++ b/src/main/java/edu/handong/csee/isel/data/csv/CSVMaker.java @@ -1,4 +1,4 @@ -package edu.handong.csee.isel.data.processor; +package edu.handong.csee.isel.data.csv; import java.io.BufferedWriter; import java.io.File; @@ -12,9 +12,6 @@ import edu.handong.csee.isel.data.CSVInfo; import edu.handong.csee.isel.data.Input; -import edu.handong.csee.isel.data.csv.BICInfo; -import edu.handong.csee.isel.data.csv.MetricInfo; -import edu.handong.csee.isel.data.csv.PatchInfo; public class CSVMaker { public CSVPrinter printer = null; diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/FindRepoCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/FindRepoCommand.java new file mode 100644 index 0000000..c102995 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/FindRepoCommand.java @@ -0,0 +1,94 @@ +package edu.handong.csee.isel.data.processor.input.command; + +import static picocli.CommandLine.*; + +import java.util.HashMap; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.data.Input.TaskType; +import picocli.CommandLine; +import picocli.CommandLine.Option; +import picocli.CommandLine.Spec; +import picocli.CommandLine.Model.CommandSpec; + +@Command( + name = "findrepo", + description = "Find the list of repertoires that satisfy the user's choice.", + usageHelpAutoWidth = true, + usageHelpWidth = 300, + sortOptions = false, + headerHeading = "Usage:%n", + synopsisHeading = "%n", + descriptionHeading = "%nDescription:%n%n", + optionListHeading = "%nOptions:%n" + ) +public class FindRepoCommand implements Runnable { + + @Option(names = "-l", description = "--language setting \nSet language to search repositories.") + private String languageType; + + @Option(names = "-f", description = "--fork counts \nSet the count of forks to range of repositories.") + private String forkNum; + + @Option(names = "-d", description = "--recent push date \nSet the date when the author pushed lately") + private String recentDate; + + @Option(names = "-c", description = "--created date \nSet the date when the repository was created") + private String createDate; + + @Option(names = "-cb", description = "--commit count <'>num' or ' \nSet commit count") + private String commitCountBase; + + @Option(names = "-auth", description = "--authentication token \nSet authentication token") + private String authToken; + + @Spec CommandSpec spec; + + @Override + public void run() { + Input.taskType = TaskType.FINDREPO; + + String repo_opt = ""; + + if(languageType != null) { + repo_opt += "language:" + languageType; + } + + if(forkNum != null) { + repo_opt += " forks:" + forkNum; + } + + if(createDate != null) { + repo_opt += " created:" + createDate; + } + + if(recentDate != null) { + repo_opt += " pushed:" + recentDate; + } + + + if(repo_opt.equals("")) { + new CommandLine(spec).usage(System.out); + System.exit(64); + } + + Input.findRepoOpt = new HashMap<>(); + Input.findRepoOpt.put("q", repo_opt); + Input.findRepoOpt.put("sort", "updated"); + Input.findRepoOpt.put("page", "1"); + Input.findRepoOpt.put("per_page", "100"); + + if (recentDate != null && recentDate.contains(">=")) + Input.findRepoOpt.put("order", "asc"); + + if(commitCountBase != null) { + Input.commitCountBase = commitCountBase; + } + + if(authToken != null) { + Input.authToken = authToken; + } + + } + +} diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java index a96a8ef..9498f62 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/PatchCommand.java @@ -13,7 +13,7 @@ @Command( name = "patch", - description = "Making the patch.csv using the issue. If you want to get bug introducing changes, use this command.", + description = "Making the patch.csv using the issue. If you want to get bug fixing changes, use this command.", usageHelpAutoWidth = true, usageHelpWidth = 200, sortOptions = false, diff --git a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java index afdb392..796ca13 100644 --- a/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java +++ b/src/main/java/edu/handong/csee/isel/data/processor/input/command/Task.java @@ -7,6 +7,7 @@ @Command( subcommands = { + FindRepoCommand.class, BICCommand.class, PatchCommand.class, MetricCommand.class, diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/ArffHelper.java b/src/main/java/edu/handong/csee/isel/metric/collector/ArffHelper.java index 1817457..79d612f 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/ArffHelper.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/ArffHelper.java @@ -19,6 +19,12 @@ import weka.filters.Filter; import weka.filters.unsupervised.attribute.StringToWordVector; +/** + * + * @author sujin + * @author seongbin + * + */ public class ArffHelper { private String projectName; private String referencePath; @@ -41,14 +47,27 @@ public class ArffHelper { private final static String commitTimePatternStr = "\\{.+\\,\\d+\\s'(.+)'"; private final static Pattern commitTimePattern = Pattern.compile(commitTimePatternStr); + /** + * + * @param projectName + */ public void setProjectName(String projectName) { this.projectName = projectName; } + /** + * + * @param outPath + */ public void setOutPath(String outPath) { this.outPath = outPath; } + /** + * + * @param bowDirectoryPath + * @return + */ public File getArffFromDirectory(String bowDirectoryPath) { File arff = null; @@ -86,6 +105,12 @@ public File getArffFromDirectory(String bowDirectoryPath) { return arff; } + /** + * + * @param bowCollector + * @param cVectorCollector + * @return + */ public File getMergedBOWArffBetween(BagOfWordsCollector bowCollector, CharacteristicVectorCollector cVectorCollector) { @@ -183,15 +208,27 @@ public File getMergedBOWArffBetween(BagOfWordsCollector bowCollector, return arff; } + /** + * + * @param referencePath + */ public void setReferencePath(String referencePath) { this.referencePath = referencePath; } + /** + * + * @return + */ public String getMergedDirectoryPath() { return referencePath + File.separator + projectName + "-merged-bow"; } + /** + * + * @return + */ public File getBuggyDirectory() { String directoryPath = getMergedDirectoryPath(); @@ -199,6 +236,10 @@ public File getBuggyDirectory() { return new File(path); } + /** + * + * @return + */ public File getCleanDirectory() { String directoryPath = getMergedDirectoryPath(); String path = directoryPath + File.separator + "clean"; @@ -208,6 +249,7 @@ public File getCleanDirectory() { /* * main for metric arff parser */ + /* public static void main(String[] args) throws IOException { String arffPath1 = "/Users/yangsujin/Desktop/incubator-hivemall.arff"; @@ -216,9 +258,16 @@ public static void main(String[] args) throws IOException { File arff2 = new File(arffPath2); - } + }*/ - private static String mergeData(String oldStr, String newStr) { + /** + * + * @param oldStr + * @param newStr + * @return + */ + //여기 바꿈 private static + private String mergeData(String oldStr, String newStr) { StringBuffer mergedBuf = new StringBuffer(); mergedBuf.append(oldStr.substring(0, oldStr.indexOf('}'))); @@ -228,7 +277,14 @@ private static String mergeData(String oldStr, String newStr) { return mergedBuf.toString(); } - private static List plusAttributeSize(List dataLineList, int plusSize) { + /** + * + * @param dataLineList + * @param plusSize + * @return + */ + //여기 바꿈 private static + private List plusAttributeSize(List dataLineList, int plusSize) { ArrayList dataPlusLineList = new ArrayList<>(); @@ -241,7 +297,14 @@ private static List plusAttributeSize(List dataLineList, int plu return dataPlusLineList; } - private static String plusAttributeSize(String line, int plusSize) { + /** + * + * @param line + * @param plusSize + * @return + */ + //여기 바꿈 private static + private String plusAttributeSize(String line, int plusSize) { StringBuffer newLineBuf = new StringBuffer(); Matcher m = attributeNumPattern.matcher(line); @@ -263,8 +326,16 @@ private static String plusAttributeSize(String line, int plusSize) { return newLineBuf.toString(); } - - private static File makeMergedArff(File arff1, File arff2) throws IOException { + + /** + * + * @param arff1 + * @param arff2 + * @return + * @throws IOException + */ + //여기 바꿈 private static + private File makeMergedArff(File arff1, File arff2) throws IOException { File newFile = new File(arff1.getParentFile().getAbsolutePath() + File.separator + "merged.arff"); String content1 = FileUtils.readFileToString(arff1, "UTF-8"); @@ -309,6 +380,14 @@ private static File makeMergedArff(File arff1, File arff2) throws IOException { return newFile; } + /** + * + * @param arff1 + * @param arff2 + * @param keyOrder + * @return + * @throws IOException + */ public File makeMergedArff(File arff1, File arff2, List keyOrder) throws IOException { File newFile = new File(outPath + File.separator + projectName +"-data.arff"); @@ -414,6 +493,11 @@ public File makeMergedArff(File arff1, File arff2, List keyOrder) throws return newFile; } + /** + * + * @param attributeLineList2 + * @return + */ private ArrayList preprocessAttribute(ArrayList attributeLineList2) { ArrayList firstCommitInformation = new ArrayList(); @@ -431,6 +515,11 @@ private ArrayList preprocessAttribute(ArrayList attributeLineLis return firstCommitInformation; } + /** + * + * @param dataLineList2 + * @param firstCommitInformation + */ private void preprocessData(ArrayList dataLineList2, ArrayList firstCommitInformation) { TreeMap metrics = new TreeMap(); @@ -459,8 +548,13 @@ private void preprocessData(ArrayList dataLineList2, ArrayList f } } } - - private static ArrayList getDataLinesFrom(String content) { + /** + * + * @param content + * @return + */ + //여기 바꿈 private static + public ArrayList getDataLinesFrom(String content) { ArrayList dataLineList = new ArrayList<>(); String[] lines = content.split("\n"); @@ -477,7 +571,14 @@ private static ArrayList getDataLinesFrom(String content) { return dataLineList; } - private static ArrayList getAttributeLinesFrom(String content) throws IOException { + /** + * + * @param content + * @return + * @throws IOException + */ + //여기 바꿈 private static + public ArrayList getAttributeLinesFrom(String content) throws IOException { ArrayList attributeLineList = new ArrayList<>(); String[] lines = content.split("\n"); @@ -501,6 +602,10 @@ private static ArrayList getAttributeLinesFrom(String content) throws IO return attributeLineList; } + /** + * + * @return + */ public ArrayList getKeyOrder() { ArrayList fileOrder = new ArrayList<>(); @@ -528,6 +633,15 @@ public ArrayList getKeyOrder() { return fileOrder; } + /** + * + * @param arff1 + * @param arff2 + * @param keyOrder + * @param midDate + * @return + * @throws IOException + */ public File makeMergedDeveloperHistoryArff(File arff1, File arff2, List keyOrder, String midDate) throws IOException { File newFileTrain = new File(referencePath + File.separator + projectName +"-train-data.arff"); File newFileTest = new File(referencePath + File.separator + projectName +"-test-data.arff"); diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.java index 8293a0e..9c71958 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/BagOfWordsCollector.java @@ -13,6 +13,11 @@ import edu.handong.csee.isel.Utils; import edu.handong.csee.isel.patch.collector.CPatchCollector; +/** + * + * @author + * + */ public class BagOfWordsCollector { private Git git; private Repository repo; @@ -26,6 +31,9 @@ public class BagOfWordsCollector { private File arff = null; + /** + * + */ public void collect() { File cleanDirectory = getCleanDirectory(); @@ -112,6 +120,9 @@ public void collect() { } + /** + * + */ public void makeArff() { String bowDirectoryPath = getBOWDirectoryPath(); @@ -137,10 +148,18 @@ private boolean isBuggy(RevCommit commit, DiffEntry diff) { return false; } - private String getBOWDirectoryPath() { + /** + * + * @return + */ + public String getBOWDirectoryPath() { return referencePath + File.separator + projectName + "-bow"; } + /** + * + * @return + */ public File getBuggyDirectory() { String directoryPath = getBOWDirectoryPath(); @@ -148,49 +167,93 @@ public File getBuggyDirectory() { return new File(path); } + /** + * + * @return + */ public File getCleanDirectory() { String directoryPath = getBOWDirectoryPath(); String path = directoryPath + File.separator + "clean"; return new File(path); } + /** + * + * @param commitList + */ public void setCommitList(List commitList) { this.commitList = commitList; } + /** + * + * @return + */ public File getArff() { return arff; } + + /** + * + * @return + */ + public String getReferencePath() { + return referencePath; + } + /** + * + * @param git + */ public void setGit(Git git) { this.git = git; } + /** + * + * @param repo + */ public void setRepository(Repository repo) { this.repo = repo; } + /** + * + * @param bicList + */ public void setBIC(List bicList) { this.bicList = bicList; } + /** + * + * @param referencePath + */ public void setReferencePath(String referencePath) { this.referencePath = referencePath; } - public String getReferencePath() { - return referencePath; - } - + /** + * + * @param projectName + */ public void setProjectName(String projectName) { this.projectName = projectName; } - + + /** + * + * @param startDate + */ public void setStartDate(String startDate) { this.startDate = startDate; } + /** + * + * @param endDate + */ public void setEndDate(String endDate) { this.endDate = endDate; } diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java index 2cf7115..254eeaa 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/CMetricCollector.java @@ -14,17 +14,21 @@ import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.metric.MetricCollector; import edu.handong.csee.isel.metric.metadata.CommitCollector; - +/** + * + * @author + * + */ public class CMetricCollector implements MetricCollector { - Git git; - Repository repo; - String referencePath; - String startDate; - String endDate; - String midDate; - boolean developerHistory; + private Git git; + private Repository repo; + private String referencePath; + private String startDate; + private String endDate; + private String midDate; + private boolean developerHistory; public static HashMap tooLongName = new HashMap<>(); - static int tooLongNameIndex = 0; + private static int tooLongNameIndex = 0; List bicList; @@ -41,6 +45,9 @@ public CMetricCollector(boolean developerHistory) throws IOException { this.developerHistory = developerHistory; } + /** + * @param commitList + */ @Override public File collectFrom(List commitList) { File bowArff, cVectorArff; @@ -109,12 +116,20 @@ public File collectFrom(List commitList) { return resultArff; } + /** + * @param bicList + * @return + */ @Override public void setBIC(List bicList) { this.bicList = bicList; } + /** + * @param bicList + * @return + */ public void setMidDate(String midDate) { this.midDate = midDate; } diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java b/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java index 15ab7df..628749d 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/CharacteristicVectorCollector.java @@ -20,6 +20,11 @@ import edu.handong.csee.isel.Utils; +/** + * + * @author + * + */ public class CharacteristicVectorCollector { private Git git; private Repository repo; @@ -32,6 +37,9 @@ public class CharacteristicVectorCollector { private File arff = null; + /** + * + */ public void collect() { File cleanDirectory = getCleanDirectory(); @@ -138,6 +146,9 @@ public void collect() { } + /** + * + */ public void makeArff() { String characteristicDirectoryPath = getCVectorirectoryPath(); @@ -146,8 +157,31 @@ public void makeArff() { arff = arffHelper.getArffFromDirectory(characteristicDirectoryPath); } + + private boolean isBuggy(RevCommit commit, DiffEntry diff) { + + for (String bic : bicList) { + if (commit.getShortMessage().contains(bic)) { + return true; + } + + String key = commit.getId().getName() + "-" + diff.getNewPath().toString(); + if(key.contains(bic)) { + return true; + } + } + + return false; + } - private List getCharacteristicVector(String prevFileSource, String fileSource) throws IOException { + /** + * + * @param prevFileSource + * @param fileSource + * @return + * @throws IOException + */ + public List getCharacteristicVector(String prevFileSource, String fileSource) throws IOException { Run.initGenerators(); @@ -164,46 +198,90 @@ private List getCharacteristicVector(String prevFileSource, String fileS return actions; } + /** + * + * @param commitList + */ public void setCommitList(List commitList) { this.commitList = commitList; } + /** + * + * @return + */ public File getArff() { return arff; } + /** + * + * @param git + */ public void setGit(Git git) { this.git = git; } + /** + * + * @param repo + */ public void setRepository(Repository repo) { this.repo = repo; } + /** + * + * @param bicList + */ public void setBIC(List bicList) { this.bicList = bicList; } + /** + * + * @param projectName + */ public void setProjectName(String projectName) { this.projectName = projectName; } + /** + * + * @param referencePath + */ public void setReferencePath(String referencePath) { this.referencePath = referencePath; } + /** + * + * @param startDate + */ public void setStartDate(String startDate) { this.startDate = startDate; } + /** + * + * @param endDate + */ public void setEndDate(String endDate) { this.endDate = endDate; } - private String getCVectorirectoryPath() { + /** + * + * @return + */ + public String getCVectorirectoryPath() { return referencePath + File.separator + projectName + "-characteristic_vector"; } + /** + * + * @return + */ public File getBuggyDirectory() { String directoryPath = getCVectorirectoryPath(); @@ -211,25 +289,15 @@ public File getBuggyDirectory() { return new File(path); } + /** + * + * @return + */ public File getCleanDirectory() { String directoryPath = getCVectorirectoryPath(); String path = directoryPath + File.separator + "clean"; return new File(path); } - private boolean isBuggy(RevCommit commit, DiffEntry diff) { - for (String bic : bicList) { - if (commit.getShortMessage().contains(bic)) { - return true; - } - - String key = commit.getId().getName() + "-" + diff.getNewPath().toString(); - if(key.contains(bic)) { - return true; - } - } - - return false; - } } diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java b/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java index 9ea3643..9146778 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/DeveloperHistory.java @@ -13,13 +13,18 @@ import edu.handong.csee.isel.data.Input; import edu.handong.csee.isel.Utils; +/** + * + * @author + * + */ public class DeveloperHistory { private Git git; private Repository repo; - String startDate; - String endDate; - String midDate; - double percent; + private String startDate; + private String endDate; + private String midDate; + private double percent; public DeveloperHistory(){ try { @@ -38,6 +43,10 @@ public DeveloperHistory(){ } } + /** + * + * @return + */ public String findDeveloperDate() { midDate = null; ArrayList newDeveloper = new ArrayList(); @@ -98,14 +107,26 @@ public String findDeveloperDate() { return midDate = dateOfCameIn.get((int)halfDeveloper); } + /** + * + * @return + */ public String getMidDate() { return midDate; } + /** + * + * @param git + */ public void setGit(Git git) { this.git = git; } + /** + * + * @param repo + */ public void setRepo(Repository repo) { this.repo = repo; } diff --git a/src/main/java/edu/handong/csee/isel/metric/collector/Test.java b/src/main/java/edu/handong/csee/isel/metric/collector/Test.java index 2d342e2..2d2019d 100644 --- a/src/main/java/edu/handong/csee/isel/metric/collector/Test.java +++ b/src/main/java/edu/handong/csee/isel/metric/collector/Test.java @@ -9,7 +9,6 @@ import org.apache.commons.io.FileUtils; - public class Test { final static String patternStr = "\\{.+\\,\\d+\\s(.+)\\}"; public static void main(String[] args) throws IOException { diff --git a/src/main/java/edu/handong/csee/isel/metric/metadata/CommitCollector.java b/src/main/java/edu/handong/csee/isel/metric/metadata/CommitCollector.java index 77c6b71..25511ec 100644 --- a/src/main/java/edu/handong/csee/isel/metric/metadata/CommitCollector.java +++ b/src/main/java/edu/handong/csee/isel/metric/metadata/CommitCollector.java @@ -50,12 +50,14 @@ public class CommitCollector { private Git git; private Repository repo; private boolean developerHistory; - ArrayList commits = new ArrayList(); - List bugCommit = null; + private ArrayList commits = new ArrayList(); + private List bugCommit = null; private HashMap developerExperience = new HashMap(); - public HashMap sourceFileInfo = new HashMap();//source file information - public static HashMap metaDatas = new HashMap();//////이놈!!! + //여기 바꿈 public + private HashMap sourceFileInfo = new HashMap();//source file information + //여기 바꿈 public static + private HashMap metaDatas = new HashMap();//////이놈!!! public CommitCollector(Git git, String resultDirectory, List buggyCommit, String projectName, String startDate, String endDate, boolean developerHistory) { // String strStartDate,String strEndDate,boolean test this.outputPath = resultDirectory; @@ -304,8 +306,8 @@ public String CSV2ARFF() { } return arffOutputPath; } - - public void parsing(String csvOutputPath) { + //여기 바꿈 public + private void parsing(String csvOutputPath) { //csvOutputPath = arff 파일 경로 ArrayList arffContents = new ArrayList(); ArrayList firstCommitInformation = new ArrayList(); diff --git a/src/main/java/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.java b/src/main/java/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.java index aba960b..649575c 100644 --- a/src/main/java/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.java +++ b/src/main/java/edu/handong/csee/isel/metric/metadata/CommitUnitInfo.java @@ -4,12 +4,12 @@ import java.util.TreeSet; public class CommitUnitInfo { - ArrayList key; - String authorId; - TreeSet subsystems; - TreeSet directories; - TreeSet files; - TreeSet previousCommitHashs; + private ArrayList key; + private String authorId; + private TreeSet subsystems; + private TreeSet directories; + private TreeSet files; + private TreeSet previousCommitHashs; public CommitUnitInfo() { diff --git a/src/main/java/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.java b/src/main/java/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.java index c2fd0cf..966eff1 100644 --- a/src/main/java/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.java +++ b/src/main/java/edu/handong/csee/isel/metric/metadata/DeveloperExperienceInfo.java @@ -3,9 +3,9 @@ import java.util.TreeMap; public class DeveloperExperienceInfo { - TreeMap recentExperiences; - int numOfCommits; - float REXP; + private TreeMap recentExperiences; + private int numOfCommits; + private float REXP; public DeveloperExperienceInfo() { this.recentExperiences = new TreeMap(); diff --git a/src/main/java/edu/handong/csee/isel/metric/metadata/MetaDataInfo.java b/src/main/java/edu/handong/csee/isel/metric/metadata/MetaDataInfo.java index 10fc92a..631ace2 100644 --- a/src/main/java/edu/handong/csee/isel/metric/metadata/MetaDataInfo.java +++ b/src/main/java/edu/handong/csee/isel/metric/metadata/MetaDataInfo.java @@ -1,27 +1,27 @@ package edu.handong.csee.isel.metric.metadata; public class MetaDataInfo { - int numOfBIC; //ok - String commitAuthor; //ok - int numOfUniqueCommitToTheModifyFiles; //ok - int numOfModifyLines; //ok - int numOfDeleteLines; //ok - int numOfAddLines; //ok - int distributionOfModifiedLines; //ok - int sumOfSourceRevision; //ok - int sumOfDeveloper; //ok - String commitHour; //ok - String commitDay; //ok - int fileAge; //ok - int isBugCommit; //ok - int timeBetweenLastAndCurrentCommitDate; //ok - int numOfSubsystems; //ok - int numOfDirectories;//ok - int numOfFiles;//ok - int developerExperience;//ok - float recentDeveloperExperience;//ok - int LinesOfCodeBeforeTheChange;//ok - String commitTime; + private int numOfBIC; //ok + private String commitAuthor; //ok + private int numOfUniqueCommitToTheModifyFiles; //ok + private int numOfModifyLines; //ok + private int numOfDeleteLines; //ok + private int numOfAddLines; //ok + private int distributionOfModifiedLines; //ok + private int sumOfSourceRevision; //ok + private int sumOfDeveloper; //ok + private String commitHour; //ok + private String commitDay; //ok + private int fileAge; //ok + private int isBugCommit; //ok + private int timeBetweenLastAndCurrentCommitDate; //ok + private int numOfSubsystems; //ok + private int numOfDirectories;//ok + private int numOfFiles;//ok + private int developerExperience;//ok + private float recentDeveloperExperience;//ok + private int LinesOfCodeBeforeTheChange;//ok + private String commitTime; public MetaDataInfo() { this.numOfBIC = 0; diff --git a/src/main/java/edu/handong/csee/isel/metric/metadata/SourceFileInfo.java b/src/main/java/edu/handong/csee/isel/metric/metadata/SourceFileInfo.java index 9481c2e..8491398 100644 --- a/src/main/java/edu/handong/csee/isel/metric/metadata/SourceFileInfo.java +++ b/src/main/java/edu/handong/csee/isel/metric/metadata/SourceFileInfo.java @@ -3,12 +3,12 @@ import java.util.TreeSet; public class SourceFileInfo { - TreeSet developer; - int numOfModify; - int numOfBIC; - String makeDate; - String previousCommitDate; - String previousCommitHash; + private TreeSet developer; + private int numOfModify; + private int numOfBIC; + private String makeDate; + private String previousCommitDate; + private String previousCommitHash; public SourceFileInfo() { this.developer = new TreeSet(); diff --git a/src/main/java/edu/handong/csee/isel/repo/RepoCollectable.java b/src/main/java/edu/handong/csee/isel/repo/RepoCollectable.java new file mode 100644 index 0000000..f6ae2fb --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/repo/RepoCollectable.java @@ -0,0 +1,11 @@ +package edu.handong.csee.isel.repo; + +import java.io.IOException; +import java.util.HashSet; + + +public interface RepoCollectable { + public HashSet collectFrom() throws InterruptedException, IOException; + public void getOneQueryData(String query); + +} diff --git a/src/main/java/edu/handong/csee/isel/repo/collector/RepoCollector.java b/src/main/java/edu/handong/csee/isel/repo/collector/RepoCollector.java new file mode 100644 index 0000000..05be6a4 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/repo/collector/RepoCollector.java @@ -0,0 +1,196 @@ +package edu.handong.csee.isel.repo.collector; + +import java.io.IOException; +import java.util.HashSet; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; + + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.repo.RepoCollectable; +import edu.handong.csee.isel.repo.control.GithubService; +import edu.handong.csee.isel.repo.control.RetroBasic; + +public class RepoCollector implements RepoCollectable{ + + private Retrofit retrofit; + private boolean isEndOfData = false; + private boolean pageLoadBlocked = false; //indicate which the page is over 10 or not. + private String lastDate; //standard + private HashSet repoResult; + + public RepoCollector() { + repoResult = new HashSet<>(); + retrofit = new RetroBasic().createObject(Input.authToken); //Retrofit turns your REST API into a Java interface. + } + + @Override + public HashSet collectFrom() throws InterruptedException, IOException { + // TODO Auto-generated method stub + double randomRange; + int randomSec; + int pages = 1; + + + + while(!isEndOfData) { // repo값을 받아온 경우 실행됨. while문 하나로 바꾸기, null로 바꾸자 + + while (pages != 11 && !isEndOfData) { //페이지 10페이지를 넘기지 않음. getRepoResult에 값이 없으면 멈춤 즉 더이상 가져올 데이터가 없는 경우 멈춘다. + + //random sleep time to 1~3s, 왜 sleep하는가? + randomRange = Math.random(); + randomSec = (int)(randomRange * 2000) + 100; + Thread.sleep(randomSec); + + Input.findRepoOpt.replace("page", String.valueOf(pages)); //repoOpt에 있는 page를 계속 업데이트 해준다. + + getOneQueryData(""); // 함수호출 + + System.out.println("current page : " + pages); + System.out.println(Input.findRepoOpt.get("q")); + + if (!pageLoadBlocked) // + pages++; + + } + + changeRepoUpdate(Input.findRepoOpt, lastDate); // + pages = 1; + } + String base_github = "https://github.com/"; + + BufferedWriter bw = new BufferedWriter(new FileWriter(new File("test" + "_Repo_list.csv"), true)); + PrintWriter pw = new PrintWriter(bw, true); + pw.write("REPO" + "\n"); + pw.flush(); + + for (String result : repoResult) { + pw.write(base_github + result + "," + "\n"); + pw.flush(); + } + + System.out.println(repoResult.size() + " results are stored in " + "test" + "_Repo_list.csv"); + bw.close(); + pw.close(); + + return repoResult; + } + + @Override + public void getOneQueryData(String query) { + // TODO Auto-generated method stub + GithubService service = retrofit.create(GithubService.class); + Call request = service.getJavaRepositories(Input.findRepoOpt); + + + try { + Response response = request.execute(); + + if (response.message().equals("Forbidden")) { // Status: 403 Forbidden + System.out.println("Repo : Waiting for request ..."); + pageLoadBlocked = true; + return; + } + + else + pageLoadBlocked = false; + + + JsonArray jsArr = new Gson().fromJson(response.body().get("items"), JsonArray.class); + + if (jsArr.size() == 0) { + System.out.println("There is no content ever."); + isEndOfData = true; + return; + } + + + for (int i = 0; i < jsArr.size(); i++) { + JsonObject item = new Gson().fromJson(jsArr.get(i), JsonObject.class); + repoResult.add(item.get("full_name").getAsString()); + + if (i == jsArr.size() - 1) + lastDate = item.get("pushed_at").getAsString(); + } + + } + + catch (Exception ex) { + ex.printStackTrace(); + } + + } + + public void changeRepoUpdate(HashMap options, String last_pushed) { + String chg = options.get("q"); + String changed_date = last_pushed.substring(0, last_pushed.indexOf('T')); + + if (chg.contains("pushed")) { + String origin_date = chg.substring(chg.length() - 10, chg.length()); + + if (origin_date.equals(changed_date)) + changed_date = modifyIfSame(chg, changed_date); + + chg = chg.replace(origin_date, changed_date); + } + + else + chg += " pushed:<=" + changed_date; + + options.replace("q", chg); + + } + + private String modifyIfSame(String query, String date) { + int year = Integer.parseInt(date.substring(0, 4)); + int month = Integer.parseInt(date.substring(5, 7)); + String day = date.substring(8, 10); + String returnDate; + + if (query.contains(">=")) { + if (month == 12) { + year++; + month = 1; + } else + month++; + + + if (month < 10) + returnDate = year + "-0" + month + "-" + day; + + else + returnDate = year + "-" + month + "-" + day; + } + + else { + if (month == 1) { + year--; + month = 12; + } else + month--; + + + if (month < 10) + returnDate = year + "-0" + month + "-" + day; + + else + returnDate = year + "-" + month + "-" + day; + } + + return returnDate; + } + + +} diff --git a/src/main/java/edu/handong/csee/isel/repo/collector/RepoCommitCollector.java b/src/main/java/edu/handong/csee/isel/repo/collector/RepoCommitCollector.java new file mode 100644 index 0000000..af951ed --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/repo/collector/RepoCommitCollector.java @@ -0,0 +1,143 @@ +package edu.handong.csee.isel.repo.collector; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashSet; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; + +import edu.handong.csee.isel.data.Input; +import edu.handong.csee.isel.repo.RepoCollectable; +import edu.handong.csee.isel.repo.control.GithubService; +import edu.handong.csee.isel.repo.control.RetroBasic; +import retrofit2.Call; +import retrofit2.Response; +import retrofit2.Retrofit; + +public class RepoCommitCollector implements RepoCollectable { + + private Retrofit retrofit; + private boolean pageLoadBlocked = false; //indicate which the page is over 10 or not. + private HashSet repoResult; + private HashSet finalResult = new HashSet<>(); + private int commitRange; + private boolean excess = false; + + + public RepoCommitCollector(HashSet repoResult) { + this.retrofit = new RetroBasic().createObject(Input.authToken); + this.repoResult = repoResult; + + if (Input.commitCountBase.contains("less") || Input.commitCountBase.contains("over")) { + if (Input.commitCountBase.contains("over")) + excess = true; + commitRange = Integer.parseInt(Input.commitCountBase.substring(4, Input.commitCountBase.length())); + } else { + commitRange = Integer.parseInt(Input.commitCountBase); + //안하는걸로 + } + } + + + @Override + public HashSet collectFrom() throws InterruptedException, IOException { + // TODO Auto-generated method stub + if (Input.commitCountBase != null) { + double progress = 0, percentage = 0; + + for (String query : repoResult) { + Thread.sleep(300); + if (!pageLoadBlocked) { + percentage = progress / repoResult.size() * 100.0; + System.out.println(String.format("%.1f", percentage) + "% work completed."); + progress++; + getOneQueryData(query); + } + + else { + while (pageLoadBlocked) { + Thread.sleep(300); + getOneQueryData(query); + } + + } + } + String base_github = "https://github.com/"; + + BufferedWriter bw = new BufferedWriter(new FileWriter(new File("commit" + "__list.csv"), true)); + PrintWriter pw = new PrintWriter(bw, true); + pw.write("REPO" + "," + "COMMITS" + "\n"); + pw.flush(); + + + for (String result : finalResult) { + String[] arr = result.split("#"); + pw.write(base_github + arr[0] + "," + arr[1] + "," + "\n"); + pw.flush(); + } + + bw.close(); + pw.close(); + + System.out.println(finalResult.size() + " results are finally stored.\n"); + + } + return null; + } + + + @Override + public void getOneQueryData(String query) { + // TODO Auto-generated method stub + String[] arr = query.split("\\/"); + int yearlyCommit = 0; + + GithubService service = retrofit.create(GithubService.class); + Call request = service.getUserCommits(arr[0], arr[1]); + + + try { + System.out.println(request.toString()); + Response response = request.execute(); + + if (response.message().equals("Forbidden")) { + System.out.println("Commit : Waiting for request ..."); + pageLoadBlocked = true; + return; + } + + else + pageLoadBlocked = false; + + + for (int i = 0; i < response.body().size(); i++) { + JsonObject total = new Gson().fromJson(response.body().get(i), JsonObject.class); + yearlyCommit += total.get("total").getAsInt(); + } + + if (excess) {//less일때 true + if (yearlyCommit >= commitRange) + finalResult.add(query + "#" + yearlyCommit); + } else { + if (yearlyCommit <= commitRange) + finalResult.add(query + "#" + yearlyCommit); + } + } + + catch(JsonSyntaxException jse) { + + } + + catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/main/java/edu/handong/csee/isel/repo/control/GithubService.java b/src/main/java/edu/handong/csee/isel/repo/control/GithubService.java new file mode 100644 index 0000000..c16ab43 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/repo/control/GithubService.java @@ -0,0 +1,24 @@ +package edu.handong.csee.isel.repo.control; + +import java.util.Map; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.Path; +import retrofit2.http.QueryMap; + +public interface GithubService { + + @Headers("Accept: application/vnd.github.v3+json") + @GET("repos/{owner}/{repo}/stats/commit_activity") + Call getUserCommits(@Path("owner") String owner, @Path("repo") String repo); + //https://any-api.com/github_com/github_com/docs/_repos_owner_repo_stats_commit_activity/GET + + @Headers("Accept: application/vnd.github.mercy-preview+json") + @GET("search/repositories") + Call getJavaRepositories(@QueryMap Map lang); +} diff --git a/src/main/java/edu/handong/csee/isel/repo/control/RetroBasic.java b/src/main/java/edu/handong/csee/isel/repo/control/RetroBasic.java new file mode 100644 index 0000000..a22f9c2 --- /dev/null +++ b/src/main/java/edu/handong/csee/isel/repo/control/RetroBasic.java @@ -0,0 +1,55 @@ +package edu.handong.csee.isel.repo.control; + + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +public class RetroBasic { + + //Retrofit turns your REST API into a Java interface. + private Retrofit retrofit; + private static final String BASE_URL = "https://api.github.com/"; + + public Retrofit createObject(String token) { + + if (!token.isBlank()) { + OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() { + @Override + public Response intercept(Chain chain) throws IOException { + + /* + * token : personal access token + */ + Request newRequest = chain.request().newBuilder() + .addHeader("Authorization", "token " + token) + .build(); + + return chain.proceed(newRequest); + } + }).build(); + + retrofit = new Retrofit.Builder() + .client(client) + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + } + + else { + retrofit = new Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + } + + return retrofit; + } + +} diff --git a/src/main/java/edu/handong/csee/isel/szz/SZZRunner.java b/src/main/java/edu/handong/csee/isel/szz/SZZRunner.java index b306a65..9f5ed25 100644 --- a/src/main/java/edu/handong/csee/isel/szz/SZZRunner.java +++ b/src/main/java/edu/handong/csee/isel/szz/SZZRunner.java @@ -61,10 +61,9 @@ public SZZRunner(String gitURI, Iterable BFCommitList) { public SZZRunner(Iterable BFCommitList) { this.BFCommitList.addAll(IterableUtils.toList(BFCommitList)); } - /** * TODO Let's just print out BIC information and then change return type as - * ArrayList (i.e. BIC list) + * (i.e. BIC list) */ public List collectFrom(List commitList) { From 6028e9eb2de45d776ea8fc9782960ab5a99e1a67 Mon Sep 17 00:00:00 2001 From: kongsubin Date: Wed, 25 Nov 2020 01:22:22 +0900 Subject: [PATCH 18/18] remove --- build/scripts/BugPatchCollector | 185 ------------------------ build/scripts/BugPatchCollector.bat | 104 ------------- run/BugPatchCollector/lib/all-1.1.2.pom | 102 ------------- 3 files changed, 391 deletions(-) delete mode 100755 build/scripts/BugPatchCollector delete mode 100644 build/scripts/BugPatchCollector.bat delete mode 100644 run/BugPatchCollector/lib/all-1.1.2.pom diff --git a/build/scripts/BugPatchCollector b/build/scripts/BugPatchCollector deleted file mode 100755 index 04dfe95..0000000 --- a/build/scripts/BugPatchCollector +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## BugPatchCollector start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/.." >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="BugPatchCollector" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and BUG_PATCH_COLLECTOR_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/lib/BugPatchCollector.jar:$APP_HOME/lib/commons-math3-3.6.1.jar:$APP_HOME/lib/gen.jdt-2.1.0.jar:$APP_HOME/lib/client-2.1.0.jar:$APP_HOME/lib/commons-csv-1.5.jar:$APP_HOME/lib/jsoup-1.11.3.jar:$APP_HOME/lib/super-csv-2.4.0.jar:$APP_HOME/lib/org.eclipse.jgit-5.6.0.201912101111-r.jar:$APP_HOME/lib/slf4j-api-1.7.25.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/commons-io-2.5.jar:$APP_HOME/lib/weka-dev-3.9.3.jar:$APP_HOME/lib/org.eclipse.jdt.core-3.16.0.jar:$APP_HOME/lib/commons-lang3-3.9.jar:$APP_HOME/lib/commons-collections4-4.4.jar:$APP_HOME/lib/picocli-4.5.0.jar:$APP_HOME/lib/converter-gson-2.9.0.jar:$APP_HOME/lib/retrofit-2.9.0.jar:$APP_HOME/lib/okhttp-4.8.0.jar:$APP_HOME/lib/reflections-0.9.11.jar:$APP_HOME/lib/core-2.1.0.jar:$APP_HOME/lib/simmetrics-core-3.2.3.jar:$APP_HOME/lib/guava-26.0-jre.jar:$APP_HOME/lib/jsch-0.1.55.jar:$APP_HOME/lib/jzlib-1.1.1.jar:$APP_HOME/lib/JavaEWAH-1.1.6.jar:$APP_HOME/lib/bcpg-jdk15on-1.64.jar:$APP_HOME/lib/bcpkix-jdk15on-1.64.jar:$APP_HOME/lib/bcprov-jdk15on-1.64.jar:$APP_HOME/lib/java-cup-11b-2015.03.26.jar:$APP_HOME/lib/java-cup-11b-runtime-2015.03.26.jar:$APP_HOME/lib/bounce-0.18.jar:$APP_HOME/lib/mtj-1.0.4.jar:$APP_HOME/lib/all-1.1.2.pom:$APP_HOME/lib/netlib-java-1.1.jar:$APP_HOME/lib/netlib-native_ref-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-win-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_ref-linux-armhf-1.1-natives.jar:$APP_HOME/lib/native_ref-java-1.1.jar:$APP_HOME/lib/netlib-native_system-osx-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-i686-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-linux-armhf-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-x86_64-1.1-natives.jar:$APP_HOME/lib/netlib-native_system-win-i686-1.1-natives.jar:$APP_HOME/lib/native_system-java-1.1.jar:$APP_HOME/lib/core-1.1.2.jar:$APP_HOME/lib/arpack_combined_all-0.1.jar:$APP_HOME/lib/org.eclipse.core.resources-3.13.800.jar:$APP_HOME/lib/org.eclipse.text-3.10.300.jar:$APP_HOME/lib/org.eclipse.core.expressions-3.7.0.jar:$APP_HOME/lib/org.eclipse.core.runtime-3.19.0.jar:$APP_HOME/lib/org.eclipse.core.filesystem-1.7.700.jar:$APP_HOME/lib/okio-jvm-2.7.0.jar:$APP_HOME/lib/kotlin-stdlib-1.3.72.jar:$APP_HOME/lib/gson-2.8.5.jar:$APP_HOME/lib/jsr305-3.0.2.jar:$APP_HOME/lib/checker-qual-2.5.2.jar:$APP_HOME/lib/error_prone_annotations-2.1.3.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/trove4j-3.0.3.jar:$APP_HOME/lib/jgrapht-core-1.0.1.jar:$APP_HOME/lib/javassist-3.21.0-GA.jar:$APP_HOME/lib/org.eclipse.osgi-3.16.0.jar:$APP_HOME/lib/org.eclipse.core.jobs-3.10.800.jar:$APP_HOME/lib/org.eclipse.core.contenttype-3.7.800.jar:$APP_HOME/lib/org.eclipse.equinox.app-1.5.0.jar:$APP_HOME/lib/org.eclipse.equinox.registry-3.9.0.jar:$APP_HOME/lib/org.eclipse.equinox.preferences-3.8.0.jar:$APP_HOME/lib/org.eclipse.core.commands-3.9.700.jar:$APP_HOME/lib/org.eclipse.equinox.common-3.13.0.jar:$APP_HOME/lib/kotlin-stdlib-common-1.3.72.jar:$APP_HOME/lib/annotations-13.0.jar:$APP_HOME/lib/commons-codec-1.10.jar:$APP_HOME/lib/jniloader-1.1.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $BUG_PATCH_COLLECTOR_OPTS -classpath "\"$CLASSPATH\"" edu.handong.csee.isel.Main "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/build/scripts/BugPatchCollector.bat b/build/scripts/BugPatchCollector.bat deleted file mode 100644 index 203a582..0000000 --- a/build/scripts/BugPatchCollector.bat +++ /dev/null @@ -1,104 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem BugPatchCollector startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME%.. - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and BUG_PATCH_COLLECTOR_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\lib\BugPatchCollector.jar;%APP_HOME%\lib\commons-math3-3.6.1.jar;%APP_HOME%\lib\gen.jdt-2.1.0.jar;%APP_HOME%\lib\client-2.1.0.jar;%APP_HOME%\lib\commons-csv-1.5.jar;%APP_HOME%\lib\jsoup-1.11.3.jar;%APP_HOME%\lib\super-csv-2.4.0.jar;%APP_HOME%\lib\org.eclipse.jgit-5.6.0.201912101111-r.jar;%APP_HOME%\lib\slf4j-api-1.7.25.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\commons-io-2.5.jar;%APP_HOME%\lib\weka-dev-3.9.3.jar;%APP_HOME%\lib\org.eclipse.jdt.core-3.16.0.jar;%APP_HOME%\lib\commons-lang3-3.9.jar;%APP_HOME%\lib\commons-collections4-4.4.jar;%APP_HOME%\lib\picocli-4.5.0.jar;%APP_HOME%\lib\converter-gson-2.9.0.jar;%APP_HOME%\lib\retrofit-2.9.0.jar;%APP_HOME%\lib\okhttp-4.8.0.jar;%APP_HOME%\lib\reflections-0.9.11.jar;%APP_HOME%\lib\core-2.1.0.jar;%APP_HOME%\lib\simmetrics-core-3.2.3.jar;%APP_HOME%\lib\guava-26.0-jre.jar;%APP_HOME%\lib\jsch-0.1.55.jar;%APP_HOME%\lib\jzlib-1.1.1.jar;%APP_HOME%\lib\JavaEWAH-1.1.6.jar;%APP_HOME%\lib\bcpg-jdk15on-1.64.jar;%APP_HOME%\lib\bcpkix-jdk15on-1.64.jar;%APP_HOME%\lib\bcprov-jdk15on-1.64.jar;%APP_HOME%\lib\java-cup-11b-2015.03.26.jar;%APP_HOME%\lib\java-cup-11b-runtime-2015.03.26.jar;%APP_HOME%\lib\bounce-0.18.jar;%APP_HOME%\lib\mtj-1.0.4.jar;%APP_HOME%\lib\all-1.1.2.pom;%APP_HOME%\lib\netlib-java-1.1.jar;%APP_HOME%\lib\netlib-native_ref-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-win-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_ref-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\native_ref-java-1.1.jar;%APP_HOME%\lib\netlib-native_system-osx-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-i686-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-linux-armhf-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-x86_64-1.1-natives.jar;%APP_HOME%\lib\netlib-native_system-win-i686-1.1-natives.jar;%APP_HOME%\lib\native_system-java-1.1.jar;%APP_HOME%\lib\core-1.1.2.jar;%APP_HOME%\lib\arpack_combined_all-0.1.jar;%APP_HOME%\lib\org.eclipse.core.resources-3.13.800.jar;%APP_HOME%\lib\org.eclipse.text-3.10.300.jar;%APP_HOME%\lib\org.eclipse.core.expressions-3.7.0.jar;%APP_HOME%\lib\org.eclipse.core.runtime-3.19.0.jar;%APP_HOME%\lib\org.eclipse.core.filesystem-1.7.700.jar;%APP_HOME%\lib\okio-jvm-2.7.0.jar;%APP_HOME%\lib\kotlin-stdlib-1.3.72.jar;%APP_HOME%\lib\gson-2.8.5.jar;%APP_HOME%\lib\jsr305-3.0.2.jar;%APP_HOME%\lib\checker-qual-2.5.2.jar;%APP_HOME%\lib\error_prone_annotations-2.1.3.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\trove4j-3.0.3.jar;%APP_HOME%\lib\jgrapht-core-1.0.1.jar;%APP_HOME%\lib\javassist-3.21.0-GA.jar;%APP_HOME%\lib\org.eclipse.osgi-3.16.0.jar;%APP_HOME%\lib\org.eclipse.core.jobs-3.10.800.jar;%APP_HOME%\lib\org.eclipse.core.contenttype-3.7.800.jar;%APP_HOME%\lib\org.eclipse.equinox.app-1.5.0.jar;%APP_HOME%\lib\org.eclipse.equinox.registry-3.9.0.jar;%APP_HOME%\lib\org.eclipse.equinox.preferences-3.8.0.jar;%APP_HOME%\lib\org.eclipse.core.commands-3.9.700.jar;%APP_HOME%\lib\org.eclipse.equinox.common-3.13.0.jar;%APP_HOME%\lib\kotlin-stdlib-common-1.3.72.jar;%APP_HOME%\lib\annotations-13.0.jar;%APP_HOME%\lib\commons-codec-1.10.jar;%APP_HOME%\lib\jniloader-1.1.jar - - -@rem Execute BugPatchCollector -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %BUG_PATCH_COLLECTOR_OPTS% -classpath "%CLASSPATH%" edu.handong.csee.isel.Main %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable BUG_PATCH_COLLECTOR_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%BUG_PATCH_COLLECTOR_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/run/BugPatchCollector/lib/all-1.1.2.pom b/run/BugPatchCollector/lib/all-1.1.2.pom deleted file mode 100644 index 577dd32..0000000 --- a/run/BugPatchCollector/lib/all-1.1.2.pom +++ /dev/null @@ -1,102 +0,0 @@ - - - 4.0.0 - - - com.github.fommil.netlib - parent - 1.1 - - - all - pom - 1.1.2 - - - - - net.sourceforge.f2j - arpack_combined_all - 0.1 - - - ${project.parent.groupId} - core - 1.1.2 - - - ${project.parent.groupId} - netlib-native_ref-osx-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_ref-linux-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_ref-linux-i686 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_ref-win-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_ref-win-i686 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_ref-linux-armhf - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-osx-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-linux-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-linux-i686 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-linux-armhf - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-win-x86_64 - ${project.parent.version} - natives - - - ${project.parent.groupId} - netlib-native_system-win-i686 - ${project.parent.version} - natives - - -

!+Y(wLpp!!_jU;ReYIm2TPG$MHRc5d%o{YJ{V z)6Tth310gWr~j+pdvxdSp+C3@UVc$m3@%Q zKdV2A?(+7+S!^Hc?3u&+IrRLv&)>SQ67}Er!2}LJ+_721awks_JgavT4nMLt^5beZ z90YGPM&cL8-Wa*N_m2YzK1#AXtv=DH;;~tAZxVb`R|oIs(~l0kUaZES1h=G?U%u z$N+1s$I3PR2#}>CV2+dmiV_s?%T9W?xYT#H{Y*QeO#h|#8Rca$Zz5g`J?4fc>0MZg z;BIJOckZq41$Z&ddo7hu=pb&vNhpV~6oz!iWA6SGNY=rUe6pPMy7WYY3%~$aE&e z_cV~6iH9qIP9X_1A3=9P>Kpm00kCE)%kZ=8D|jQ{`*o4@nwSaeXdvAA#hJh|l)$aN z4CNe_KyOe(Tlxk4<5#KG_Zf9Akc%Vy9_Aao2?~hl!7upDPqCNs?3`&LBwnW0O;RIW zt`0mMk(q2SbTi)kgC$yNhK%#VcvDzP6DlGaVJsGDkcZGVf17;we>~HYIq_8|MN(n5 znvuD^hNsxr{#-g#53Q1}q<3z?efizx>4c-QXD+u^c z5a@J44x?FH*d?A^bv{GI);&97As@B7x_ z>IWZo+5304_IhND^IX!qd29Mae{o*}q3NyC`H8Hi?|##L(VsI91?|o`d~)6T3k^z7n)6f3 zt8X~2FHacu_4>7ohE6}4GH-EN+mNuDb+=yySLpn1v$H>_JbQfocH7fiEGu{Ir~C0SQN;~^e%-KyYe80i+cAwV#)ec`IJ;%UfxR#82ro9NW7osW zLLTh<@U?3PM|8gb+%FsU^$nU^?%Jd`*DUz)e9DD}mF5LC**JDa+zVxDUi;9s`^O81 z9(;Y>m%p|uS@r#mp_{wRNh!Og$4yt6o$YpoJus_G%}Imz9eASL?3|a5Z!G=Cx(~ND z>9K6^tm4hy`0Lh%n6M_o%##gQZ+YhN4&U7~Yv!~8-5b_&J$++dnR?d9)CN~}w(oJa zLD(0K8!p+?`pA~`j-4Gtg1&kreTw7IjRX7YwOC~heX{?@n<~eR>=M7;<*ayo`jNS7 z78I|yW?^!VD%&6KSN6*Ghadgvop&QXKC{Pp?a8)NGI|c_R4?=RsaIOWRh_!)bm^u; z8)uEL->1^vjCDIt*zRe#`p$;uw$z{4VbBjl8m@jK>h$-P(Ixtvc&qHYuHO^pH9l5z zNdBFvP1hc;R@K$?aP_fmS6Mc-dVcn;PZz9sVqAysn)W;L%Cdzc-Z=ARleoN>YD^7x zo~{4p!}|_YdF8LALuM?T(_r&~eNWHr@LiqY-i_XT>O#!wS)J}ZQ@>dD=EG;+3tyPB z5%$+mW zcIj`czAC20m{aZF8wLONCXW6r6cp)C`b~OZ{>E~WkRv#=JYkXehbW5D`*NDZ*)ArQ z3iG%eIrvN@h}AiEce*`Gh$DzGUDY=^ST5o;M?#6mLPOS39K}pu%52Bbh<-slm9a*G zVv8L=f^O+_EPjga)Ia>k8i1s3$-ys2K?%n~*-bPT7)4P25(!H-B0gIT?G!&u=VU<> zVKNrwGh<2>nD-a%bh=o^Hg8W>N|33u&{B1-TaLqz#z8?_Z-1l4@&wb~uNiL+zME!k z52XbbW7`*>lJ7G<_^BY{wz`i#74GFFb0XOUdR85?RSL=QoFV)PSqw>&v>6*l`Ha&i zViGQ{AhWf#cEOE7M-v8hyyG{9TJ^MI=uLX~#m@s1IHf&+vq5+MeOQdpOrDe+>eA0A z?^zV$75I9r$Fb<=uv8p9FJ8$XFb(9?{<}C8qMv(HFYcZEel;WoK33YzGpOV;za$HB1s=o9;cJ)V)Ina5o;3dNZm+)nA=bL*>82$&vbM}fSeHKePc|?o3Jav?RJ6i z0Pnhbz8y>5S$i`C?+E=h=24H@cXJzzjQKFp5!UXl+ z;G)E*xdnT2oIM3|x>HioXwXK%wWO{tZe>rG+nt@6<+GJ$$0H>>Qzp8U;mQEJJ5})M zUcIBT4U2;ZGgoPDIgk(!JbjbpQJWue@|YUUXWB&hxs-&X;z+JS0Wmja8+GS8x!RO( zZeZs)if~V^Gl|VN4#@N1Y$019W@0=HOjAcM?Xt5%dmNFS?noBgWS%o_oe7EV!sx^d zO?M`{#w(vF!J&BeY8eld?{3{WDvmc1Jd&Y)R0#G#t@qPr39lQvZk)EZ_M=YXU zloOKMy1^RHMuDe|(-A}L=6Xj8#9r_ABKaWl#ih@d5P4CK=-vG9l%>TclfzO7BuHZ$YF{*&E26)zzd@Vw-H~NQ3Ta zcR0oX%BzXIM3thF^+5!Q%@qcdi;) znn?SUggbNDn4*%^pCMMr6SS*8qsS)=5;M|AR2)I&oCNx(1q|<&wOD+pg3>e@n+>*u z3?a&i4-r5QlF6~qK|x9dR{2@!GhPdVWit*s0!mjbgc1cCXqhbz8Yq5!u&awuFu?eW zqNTC;A*;`l>I-iu6tFX+BDA&wal)7Y;6UK_4bBwcMlW5HGd2wb*IvT$?uPOf7W2=*G1-y5g9ATKr|;mFXFvg#VHHSoGec~JWVty$z$2$`+ZMdu zn6PNOj-RG*=6u*K_8O77$wD9rck}3v+Jr?Oz6(FA8&~~%C|_auo3I$a6#Tax;-Y1y zg{B7DJe2WTQeI&(f=rxiwbFx9oU9+EeMl|UdX-C1?-`}=ayIKvNGmo#$;YC!ASzF* zNGiy${%=ZR6p+m$0rXECB7U5Znta)U^%>5GCn)6dEek_f;^0P8F$Q?MK>G(`t9 zL6nni7}L@4J3(svkZly2Apa2z3^p7FS|UuKsM<>HoeC(gpp#-aGn=`e$jmmxIuG&m zZ75r@>{V`v5u$2{b^n?e`5sKd76t{bp4l21MGGlk=k1v$B#o7%va&L7d_27F#h(Nc zZ{mQhDvZKuz5mb?7z(}ooi2F97#^MbBSt=X<(Oh4db1I|X%O_JY{KeC@)zl3(@?xl zB!dIiNKeqIgi#H_bEOnOA16TIkppxvjG$m*p0D(3;<-7QWXf-d015`nUP-3yiAzco zGK8X#d!HENaybOM(@Udm?T{G3Z9HphEXHBfGKv?4kITC8#utp&V$&B9u`5!b_Uo;xk(g85L7r?%}KQ1F>coTk$9j6`U(~wqm&Wx_|FiB-@@VVhw>g4 zuFPCCIQbs;;K-`kRUI{8}R<3Lg z3VJG|i5i>$R}*&ONkp;bd3rlhdzno5 z#m#!)Wa>v0ylJbnr{a9Ibrkj5agRWN0YT~>y`m>b56pu7Hwf@*q1k7?>I$-9p;Yas zAgtk?FGEV)#Wt&JZ9xA!-#I*VxCgr1qM4mzRwMkwkDS zb#l{$L>z1p`kIiU!qn&?&JW>lXx85upp^}KvYNReM)>1<-4PoXg+z*@_z3x4HWaWo zS~8TecuLVQ&Xo;$42qWNO~kLyfbs|yAIVg6uQS1C6Q=Jjg>L9)U1<=H6O{~gg5SOp zd3L$=!%KO2dBO|pL)Qar4h{zw0)2HXFi}(HN85^cF(ll3)frmAwitUW6m2-?C&MG$ z7_dSH8f(wM^+_Cn`W1B@!OK@R49rQQCvwT)z=R|f7DgE4uej@M@RfdZ?`=|;QO8jW3=84r3#k91X95q=@%l#9Rw1bVKzWa z3U)H>r4KBQicQJd09UChlyX>%wLke~EoN=QPOPRHDYH2gkc~$EAdPI3L+b9 zbf{lbfJZ^qBW2gmAY@Ct6N7WBg@}%+w=m7$`#Vh=qXt6W3bYPEdK#A_S2C^{UUkth zIBhlkMd>?QCmQF{e)LFibXpGMlu!*z!=l78?Xyeg3M$jjC&7ra#Sk!xrKBg3O$=8b zV*>es%*GE#L6L5uX^Vkgd6SqC{>Ppwv`mMt*a)Qm(k(RZiY&}l7m!^<10i7)R{dNI zG8U$RTzpB;6=}(XvJ{JwMkrSn!V8Ix#-ruopC_j4V4&6#P+*)^i#n`Lr7O6Flq?)- z7)9|g;hed_p$AKdww3^?oIEaPR5FtQv?R+?$zt#R z)caP=6{EjgKfmwB?AWYxolgEa>e!H!ThoM({yY`((of5~VPFrEKI=*-i?Ntr2n;F~ z*s<~dBK0BCOil4V_8n4$bfXW%^2fyq$fdDHNE4c+G`L~+e}C;j8x?YpfdH|Ji7JSCMA$3T)$PQ~0M)nBL?ehZbpTu*RK_rBB5t~iF?D9K zP@9?T{Gz{yuCqzOxj~6Y2NR$~W7%spFWtg5D=;)>L%v5QOtVaFl3@KebJAiOoYY@U zTh@iwg`~rbWh@G5z=`otATu|l+zO!=Z%)R$ zTydZXI^>>e?3@266bSrMR`5$%ml&l^P&)o%vd3Z{YJ-%Sl%)O(nd>C6R5Q_O?{vYD zEJIsgvy|5P(LsJKBrhQGXkdcsdgD2Xh6lD&R|(z5tq^>@Vbwce#@f1U_ht zy#{W`=dU!!DaRrkJK7_78|B?dXp@9tO*mkhYfo?;4+1|a88UqA=E@J4nrz!b%vK6_ z9+ZMpDC}-yA3n6qpBZ^E0Fg!=`)wM9Sw7MNJCSYQ;B2s`!Rbj3cQ{~pU?#5$M|XK$!Q}d zK>0dx3Um zX9U9Jt|DT{S}8Rn-LDdfmNhdZy|Ve?3d6-=WIwpXvK|;mD~3^0LC2tgc{}KU|1y@P zjIlS4hlqjq2S{lV3x>&g`;hag#wS3 zSo`^Kdrh5Qskw+Zoxv9g=rTaGoMYcMA6jX?FK;hOs%N^r-`@sFkMSni?Q?&Oa^$uU z*MYnOY-z1SacL_aaGpd!gW;?UXyMW|ngE(xMxmDW(@@RVO+vI75(GWN}=A=gyIwkBjiafEQ4 zU6haG(z67kl~fK@wjj!238P_xsgo(8V7$%}CS1#It*`%8X0PIY`T5eYzi>ya8J!M?k(m)yilw8v=Ub=N*g$FOKgR%HYOqoxZWiIfusbo40CJkPbJ|bOJQE>Vw zu^-(wT;?W{>HGW`880;3a;<_BW=WUvx{b|KbHr0v)KQ4^7y?oTi;tzyv~(Lv*R{Er zSqMTMR8)kz(A);r1K;wt9)z+7i+QpFR30b`u5Sqy#nzysW;`C|Kh9i=3nT(g8m=k- zhxv~%!YL!szW$Qn0z4jCydW?(YT658UAJ}CZ?KWaa91Imo8nnknzOw6lBv)(c&Uda zLgeHUH#}syuP=iP^HC_ADlZ!VS786t&z@r!4WDG(@d`NfuWpv&3EU@cDS@6p{6Xp7 z<{uS(5D*!eik=-9d9Ze`9!mBIsRA(PBcEzOv|V`z$~zRr2f$67l&0hXFXDDV43ZU{ zjH~<-;AApjs8@f-O$zddIC!N%9^Il2T_9`nzzC)8W}0{+)@VmP$O1zCBgmq0Pz$as zY!N0`3Th6eA(lYcCw5c9SlbZ!E>nH}vrVFYiXNiWLQyW7VgN}Eg_9BrV}UH@=X^v_ zsxTtaf0Sy=+-sUU!v!?2ahw~hH6%7>3r19jW6~OF+(jsm^UnIk>x_46YBA?Aey;KBQnpo^#!T4YxJD*ED}Vxv zrw=$YJ%T%Ms~-&WA2Mkg>FdhHP}&#Gxyv;cC6p~rGAD`CL?cm3IdGYQ zlO>roYRdQ17kLnM0Q06I$pIb3+6PO(Vih>fx!UJ7vMF)eA2}%4uW@)KGkJpE0-{6x z5&Y!RBhAs2_!E!oioO-F0b9+*yi1q8Sfsp-_EnR`NFG9vl+(Nxq)2=a#FS@H_9+;r z#pdtTH&b4A=_7<{7Hb9k7Cfn9!3$8X0O+a3=-Qc8KOqSFz6De2+A2VS3qUqQdZc@5 zLU9Tfn-P`aZ8eC6i8v5aB3K;C5XikrX^Dy(8SIqAf&4l~!&6rO9}&dutOC1god;z) z7Qcv(oH_s@;zZDU$99dv4xk`{-g^t$N*{FQjh7FQkQPX%g8Z7P7MWG+z+(7*p$IHH zuGXh;SMGz-9*e(pjmbv;2nlWD@7R!t{6jQ19KL0Pd(k$y7i}x2#3ZF$!s(W;q!0@0 z4~>n83U8}H^9m(3{*UrW!MtjRf8oVHyccep3guxeO7u_=EAL%qx8iC53oJqOC|(3U z1HZ_TobY;$dj3ZUY2IxJcpP3S*#B{8Mk=WZI0*+J?%@rmfJZ4~Q~ybB7TYW&i|e4Q zz!C^e{fCGu49{ZOh$p8Klu}rfC&w&d?SLHx{qux1KrytKpJM3$uR3)#Kn?2+C|9wV zcW1GSY|>r85@tMtdbTr_0g#7s796ygJC4^RM3u2?|rqQcaJA4{_)3F*zwy6I;IqVjCpEgMrKwnFteW7kUxR~ zgOETlI{-KE8F#^3>uMDaSsX0%j&w{)n;U>)Z}Xc{``Z9T`5=Ey6#jn1Um@O``-G*< z9ScKD!lJarncORANI$FDP0K6-=F<^B`9J1EkLSv*-2deUU1UCzkoOg(qW&N8x|FTq|s8+j3^_k;}p_U)5bt5Nii&>Cpb3U@oquT z6L&U9B8zX^0T7RGcMlxMVpmjh(LXB=l^10V**Ya;!uwp)konvmJsbY`EZd z#cBwKTt+QGj5F~f!DfAg7zpS9w=)NNaf~5`QoIA44PG~O!TIy0-+I4)<5PD* zG{1(lA`uEE|42BlJafj}K3agcxADl+eV$O}9f2@g4ws}ppL-+5{X&ntWw1ZeCjT%E zNY|9>6B%bb7-gTK{D0X9wZ$7*PGuw&u&`s0hXu|oC5S|iorzdd*of(Hsv~xkQzum#x z$+&_dn)hF3oMp^0P9vtG!&JrhfMg8RcWHUdr_2z-udWops?4zG=e03Jwz-soOPhn#Du*W?^5Eb zaFysE*Jo@YfCyIDNh{nHvbHI_*yGC;d=bPXPYGP4(-ya2g}o-gBIUQRXx$1&OPD+4 zzn+%Boe~@5NVTohQHci(9f0J*luE3}j00D94OKG#bz#vBAY-0cprw1lAWsWX{J5;_ zj7+n>g3yO1IM5;Grh`alnjNyKp=epW<+9|2m)4RtvMjKjunjw;MemJLXrku*2OQh4$#*PG$9z`p~hw1pw0Fb+v^ z(bdA0vV}40@R^ylBd**yDCt=Ib)?YJ_$|1#^}9uTzgx8Py9II>o8PV4_}hZ}hH~(L z?S}%{7A^0Ylht$&7>Y;Gjjun@(?Sl8adm6s$~>o(4(o;hEETZ@yropyeR_pk< zW`oI zF-FBFxC8w)VfeP;K80UMsP=YRH<)S z<~q$!tCvdiazC9#%?=#ot6+IrV5J~evN7$U?tL=U>G#g>pNaR3MU=olZojppoC%tT!^GtD$V&|&om^>^f$)WOcm|?&8-k5z(KQS zL&?Cx@&|IWq)F;c&l9pFyx>~_S5Zc9$l&O5=fXj@*i0EM(&46hSU9EhW!@f-pDe-m zR*rJ$qJaahAmZr4dI>4^Y)6)IuoROapE})bmv|7k!BSmrdToexqm+7-AJmm06=I_m z-;T3=0Of5gfwLG~=wg3|!>7o2s6TT95s}R1KoP*{TzFxc+d2v}8|XxmgbP0=xfsmy zw{X-ePza#KQDUEQ8@>SkG~y%Fw$!K`W48S$j^sgEiX|}CZzPV`3N4PnxbTPXELo;O znS>>vHGzf}{eUR%-59K7B>iD8vylYAy)zr!JF~gS;Ht|abOarV0bz$F%m^R4@`GRL zW=-0^_4$`5Q6TGQ0>!^5cCnCk-L>Z#k>J(2WKX(~G}bpOQeniEAmfY$%8i%yn+q)g zr!lorNEBBhOv?3$XGTZWKy&b)E|_hhRBT{`s6^N*LxHQVw$e&FzcIn|av+>%h&KI` zJ^vFpZwsU)yN#igRy1d$d_pFWPl44eB^@*Ch4@1xIk(Xzeg5=jo((Cp2;q|GKayj^ zG^#;up)|u%2$`Qyq);UHU!-{~kGw9;Q<5D{_(lh}8eKy<%PCsSC!ID7U}nGO4xJ5sCjzYM?**IHEe7mQHYVEK{INz~V=M z0#xU}3c(Yb>@Jxxyu#e|bu)fBKYRbKy?@>J*aHvD=+QXig5{pO9R?EI5K1j9J_bxplIZrv=XeQx1e$H& ze^{6!j;<0(D+*!U_bss^eHc#tbQ!#V;PhmI1q+@UOA;XcEf`%hAPu?lf)mb9z?=%6 zF!5e1yO+;xQ0nS>9fzXvR(%)TE#!=c=j&kil|~-5!sj_C#>>G4*Yld_n`yvjlY39573GC#noHn+l}eh<+P_H)1^!^ zu@dU8WRo8X8>g-y&Zie-6dz;v2CNSdMBaA0X9oWQj0?)8x)X-CO|8!pF;sr*Ltk*R#GGtHq+MR0yqNnWstJW zh%xzZfGxn5&ea@moHlVmUsWeiOQw1Ar2l-$dJeYO)&ojsEdC^U@NxqnwD1x(U=3`D zrMN#*DwlcvIRwhMPVM6=BZs=;w029Flta8t=g&-_8HAfM)%4s5(F5@`jxqv72JtG!_LbD&RHt7z87WJ@F0P9O|Ywdt?zF zJj}J=Z!%w=0E@niuJ*u4 zB0jEqNTC$50xUo}+K@~U`WH31!suWHJlMl^Drv2WplIqtDrP0w_PDWXPO>W-{4j`r zf!nQG0m@kBKtWAlYGKbjpxtwtk`5yb=7bE(0)GjIPgFe23);2Dr6 z@yy8V4G@zKDJ^p#cy0&;D#Boxa;tgb%+8E73(X$r!=l&yZu#A@Gb(HOk%T+NW>jyr==aYzA(hnUrYc%3!$8xj&A-U=3dQV;lvWg8pY&gmD-6f~ zUvvy+F3W(pv9Jsv;qAc2rF=&UPYxWy`EVkw5KL%2iKQ@R3hHjFO2hy$oZi<7Q>8HT zYBm9>L(mv>Kc-Iwr2N5fi}@o{DOFkJBNAS_n|x5Zx~$sPre|X`XDKr_LE^5!&R)cA zE(U+QgJo|3QiLQLD+LIvNf$YMH%LGIyhx}eQCcM*=#xTS@jx0f7tCQ4@UxbN<*-52 zz3pi%`6_`d170P>Sjz~P%aavNj~A7aU0;X=TQz9J6EVcp%GvR4t)=jiP`AKyX>I-dzceTchfWEvyrC7I2G$dR?V|<6AD9S!pCo%sq((mt`tt@y=isfYu-%cW+;^9TRf6^P$0I-wzN>E9cNm& z7@>f)f4>5Y{zaj(03#5$k8^LhuWh`j*hgXHyMHg72xIH4Eue&A@hjlcEAcR~1s_9V zhG=}n3Xv9nfd!(7I-)WX+1SlQ8C=;&{E>r{b12X-&n9JUgQxp>DDZrgZIxQ%6d5k& zvB`l;$mDv1YX{ic)J07**ZgJo0TY~dh{R5H!nHYMCfuWJni>DwH#ODf^M8ZK79DGq zEqnmEkYqbM6tfC}sKE{R;>$-eF-dm!irN`&9Z1GUwuCQ%D(F748G8dx= z15F#1+*Uzm3ikehK9Q6g)!@D_c=pgC45x-YYNYR9ls9A_F>MPm*C`7rDv*iNEC(bg z#tv%~5|}-wNF$j3P9vdh7;+HE_-*xIDGUdJND(Cm2?~${kabrP5=7$P0GBfrlU)}m z!TEK0SII)uBB>a}5s+H1&5&f_CwK~B*{9$E-v;GnECq-}1^dOY&(iyorcsfUs{O_QJ(x8(eI*y{8rim^hUM7Z}H6X9?aX%_Zd+ zJ1M=4sk88;DT{~#lS^_s`h{f7c&ISe&ZQ$J^w^c%60SiyzuxI?PnN7D#MDs+3R*ao zF~dl6XS%e;XL_c1;+HP6vUT*t%G=FHJstKVCme~61?Od=) z+VEmKX;ii0&)S9IiNIZyJQ0!I`yNn$>@jc!sc5+yP6gJdDJ)h{Stub`*mD<})Wz2{ znu+Qas`DPWr185#br@~NU}TdN@;JG8ypcH(~_o1v+}=aN71)Y zNo$~c3k?>#1V1$e_}2aRoar+v#0W*;ql5r|f5@XgTgG7#K6$7EKkW`i5qDRby zgHQ=i#V#nXV+s7oVrQibLxB`_9l{cYWX(;bx*jpg<%2N*g&BoHH!xwa^=HA9FD3X* zR9O&ZVJ4>_@`1d{t@VD9npP7D8yKNhe?-~_>4WVUM^QWwzo$R?4M!=z*P2=Q3efNT z846!|^<@baW-Bk~nbggK_P{~zoC0MO7UkGXCLzExe9-7+A7w(wXdx@jl{^FzxTd5F zZliX(X%9l%v^E;4*7xYKNTrh(rk8{Qc~p!&X{ z-x^5aJu&T=LrCW0y1Dm%&~5~oEd=oM&|jdZK~CnVQzV2mF*!^k8J7*?0Tf}0^>>q_ znNvTV&C?tLk$4<|V(QxOE8~YThd=)=y8;lRZ_LdRP$%pup#kaW_jD+ata1&s z&_aABTFE#xo8i2PSFpTqpaMJW3>iKNeBnjR!>~N^mF5)-L#t7~#4Eh(449s+ZL2g9ik-&F%a5jkJ zK;*;+v&D02MDb*!!Ivn~A#jtA$1s}?kTLQ32oU^}(!hlr76or?On~%NLUKQQj-6@8 zky__e?bvQy(#M zE|OGpbOgx{%k>oL#GU6UHjx{#I7oj+z_(Z&1Zg(%4hZA;sqdL)cXOV8G;mx1gmR=O zrDw_bLr=TI;gi=#iI~P4$(Ax!$jWv*aVbnn1U-R{N!VQ!q)Wl-O|nUT5EPA#PAOlE z_%yd`ypxMn?4ckdvZKUdT&f{m+V97bkyIjU)&bAHM%2aax>^x)Y+T2Aa+hyIZDsNiw2W8iX2*kgErmCGIj zl28W79F)%t_rSbZ`y=xG_eFC4fMes z^Qa&aURVe~3`0p=#=lh3A4iT6iG`pYVz-U#XrVPB%Vvr>Im5?5#uF4S zMctNehU)AF&_Ga=(vxJ>6Ce?ViJ^*I1842SISg5V@%EE32HBQL)Q0#vcdp+D0>U6+ zh4?NPLinXaLW%hmcw;C&@D2g#MCNL!@)>P8u0n5!o=-NxesHH{i=$E!Ws*D4 z268`$JlykX;0wvgtClEXUf1@aQe>AgTr~x`CquVnZsZKnBy$sqvI&MQl15HoxHe{f zric>`f9R@grs6>HjG24D!fKncQNoGw{PY}9u5ofrnYeLM^K!y>C z9|exdUc)-~Vki^UDKU#{iOeizQY{#o2Bvksc_z?IoFg$W5#bG;OEO#$v0M8{(q$p< zkwjBB9ZPZRqOd9B!$eDs%v7=uGXAGHNJdB{YZ>p(<%?oMohA965q$xSmFNTUm}rJa zmSLJC8W!gKkROIqbF&P`hgr!~OA}KdEzyU7D1GbRt&D@~C3Y~C3g%`gi8nq*XVNs7 zf6v5`)S!wZ61DwUh+|}97n?n0~_hVhIER!qfD@B{!GcEb9 z5I$nmue9l!(Z=|YY?*1##KwqtAQ}=yG$_OrMCz=eGZ^gzmuH9sGG#|3fQIykw@YF= zmonT!9E(mUh!4Rkge#7`reahAz8mN9m_L9DN7{%)BLzjqSjgdRgcGv5jQw+ZZfYA; zWV5568lTj`ASVg;NZbSabf>_Ybv_oj#3V*Hs063LM$*NkDOjT4fqkcKV9nYE)~tPC z%{my0d8W=Y*a?lqQXq%@>~4{uc>}!)Vg>xe65@&iLmQ)c%8nW7ZZhU(PCiM}qFbQK z$_;jfpnxJG7s8Yw(ok)#WaMs@Els#P74p?NvknJ-BE@0QB6Ct^(zK6~1J~w_h$dhT zJMzq50Xklq=qN6P_NAaD=x;N!if}ZfP!o8+UP4FF+;74`EQ547wQ;iDnIunQq_ zl!?NHIXM%ssr2PRd2XQ6Mh>gL1iY5~Bj$3n zBOip1gV{zE|EN4Yl0&=@M8(TiaZy)j5{D>;ls-9*lmgA(&bB&v{=7$?#qiuUiRdVSTrZ3ZLiWh=}cD=`wlC4>~Sb1JX{^2pd7 zMyM&HefU|vs7CRo{F5XTF{CsxL&Ckj@ZdE)2|6f+y^W(VtI|4p9hy;q67q*zRQ!!< zOVi~?QGB*mB~AL&hwf>4w1wO#Tn=r20R2-z+P%22?7(HGq@+(E^FIa}`FGY#HRD?n z3-`uy(4^0snb>_AB-;*_1jGat&tyT$@q!z~5W6GZH5Q&1H!(AkL2=W>&?$_CGNqp4 z@$$Ld#`r66X6vJCLYKe|!?AGP&<6RsZS%0KR3&-Lz+|8i_EfkFfG-7F3X=&`Cl!P& z?L**sGZsksJQ6TtyH-*QF~cR#py>%?IWS@)W8&R{AZFdf8;J2jQkpXzq8-o_fLHfH zS_~z{7nY#3EC+-))0UW@6x)&lfDQTxz)tO1E;qmGu6}+KFi%W{8Ybn`kd58jzo&rg zoJE#`^Fyl&1?0(0VRCSfLU0t6aLr624%xnkrvlkZ1tx&(91E0QLOzSw84jfj z7ABJVpX&kT|5Vxu#Ngs&B+=|en2;opLpMw}bpcWB0vZ!>AT>vp`@ydSng99uAIz-7 zKo{5!lEw;{K$ZJhVF!Zvfgql#xtb6?##1#&`$v+8ZhcTjAvZCi5b4t?*$zmkfLjj8 z(;G0!YJNW0!-(iP_K}rT=+|c`Vr67oH#7tp) zO!*4!QduL?ndN;e%~~7}RR$C|X*SVAue+u^`xm*-kR--tJ5z=J*;!e3B8bxF(3+S| zaRRkVGE;Nl-}cSTYBm{+&lG&SAuEsOsMP5<3VaTfj7*xHA&S!yMvi0Iusx7Z0WL0) zC}G^fn&Io1qXtUw2 zsX#Be74xwm8FwbneL+3Z(eSGa?~xS869-Bdu={{$iaf8hkCDm5G~$52#JgN^aJ9z4 z39M40G|>y2hSGIlx>=}~vRIXRsBs6%6-2@TNKpq#G``<>0E;ONPD7OupIyTqi)kw( zJUEG4ZcKd(&xu>%?D48YhNd#EXGBF#$b$R7kad@d<$y9=|561M_^8M7Yq6rP2J;J6 zXo5VBE=uDAiXd2C6BPu~zfo~STbOBu(X6J3+W@{I1xqEpY0kG^--rL&1#M2BMP5rpodp1u0LtUQI?( zm81*nidqHBNvkdEsWZJ|vOLRqD5tP6ubHlBVI=EGQUY`YP`3(Mc z6id+}F!TstFl(QX(Af7ZknE;=4*25~zRl?K7Ry;U1Es%&0<$drnYjzElB|GcMM&M0 zorH1QTr$C~YZiIl3MI8wx;nYQM7DC~7L=U-My^4vmdrs&YL>rEWjE4_VgVG+g1`65 zlhN{eB|f$=Vi+>tZskEMcw=x8s+ak*jnR?9RNx{{ivmjeURZL5| zsOYd;IY=O6jt6rNSX3;0JP(7MT5&vuh`*HGf5X@cBb?VK47im(Ouk^G7o%2XYiQ(0 z*8g}kC0VI5U<1U3tjW7+t_187bzZ#}KPvPCmP$7Bh^-CtE=&+|0<^E;h(y{#GEo z5K^Qvl_(bgd6T$&1=N%Y6b00j$q(A*65lgEBGHdKpGpmolMP8yQaTxQ54wVxsq8<> zRgyY4yl7GYR^k^CC(Xog>S4C%dPs2@MNy~`PuybsdI3|F0?Ujr4ZfffN|ai@a^0am z&YsHxCedD6cP8nVzJ%KDI4J2@{IhOZO3R$HnvQN9qWX;r$v+*S{Z9O>%>C|VGR(J> z0@;UUK4HZZ5Hk4R8zW#g2%zM4l@U|!Cuf{jnpdPV4MR-a8leL+km^MVorsCQEkHo_ zy}0a*3`pEZ&%6TGS?g|nJP(j92Qbe%5(>NzW{vlu`~DdHL(xa;L43CP2w?v8!kjNY z;*non`1q4-0ZmHo$We--{)`2e1J>1!$9pA|#aPTfz}5>RRh-E&?sUMk4(&w}DGz!xTV;&8_izP#mTLTTI2JzWbnv<{~JbemgT?TrHKStKN(y@ zl4Zze_X70^o42kL+tM7V+Ud>E)V2oD)G`ao6fEY{c_S|v^g=(IO0Z%o5lWFPWfQko zNX{^9ISb)%$-5~}xrG$*Z zdBfTGF_$qM`TNubM7wG6KiNBB=7QnOzbXZjur_vVy9!7(3NXw%8_Hu?ijwjn{^IX{ z?!eSAQ)GxOmvuf8p{JlcfkhdTr4+uoA;$M20_zFm(vtokdv5|DM^W#OPtR^P0Rk%G z0it-UqNpnghkz(=bF!Gr-5f}aI6K?BJ7jidnImCQz#EmPh~j}jK+vbCpmL}vf{2J* ziim=W;sJjZeTWF2&maHKx2n3js;j!Ex_dSd-<$Wo21wUk^}P=m+Ba_6xJjTD2YrAw zG(&Xw5lpQYb$@$N_qX@Fd|bhNT{G*(R7j8J3k}yWDcA)i%kwZ{!jPKYfkk-GEb&QM z2p2i#Od=}U=mHuonCz;9qoWNJ*MqC*SYTpJ#jmMGx?sSwjNM_}(5gk5d&bn*QtWF8 zCXRZ3Ws-(q9!_(*>Jr!}nWu?!3*2{h*7XU&cCP{PsMm(Z{8}r|1?iTHlzCFZ2{P3d zVA;%}Gw|OcK_tuT#Pb@jOl0)8>XyW^&A7a(`+=?{rBf}*9L!C4IajN~;~FTdm(_jV z9aL^-f=dhmm;21rn=RBapkm8g{E$H*ls7j{N*CVoisauw5s~J=F@B>yoT@x#dOpal z665^Gn>ZiKJ${%U3q=|PrA?7)L*aguL(o(x7WNWH36ZZ+IpKX_r|1kv*>l|5P2V`| z`A@&J_JxZsz-@RM@jc{lvj+ixZB{CsB=HSte)vU4CwEs#Fd|+?B}-bAWIMU~vhxB= zxh!0RvgLI7u`kadR^%+e83akpgUX6jxduauG-%6yy{84-NQUsaC?_NO+(yTUXdmX) z_Fml}9?Mc7G-hD1y0tXZTvn=7*G-Rs_)>qpc9IcLH(=RVbgc_`0kKh9_OGi=```-3 z>|>yB=#T2C4@NVY6Z_GU5)eJ&15Gq2=muX+Kd-dpNCRj;FaZh~3i>y_wY2`vx8i6D zJO&!AOUHbQcJbN(IOls)-Mjbf@aJ;*yz`w8br8`fl+imyzPeN)Flj?Wl;_C&5Mmb^ z@wVT%iEU58I}y8I{50Tv0;d2wLI%1^Fj>Tq?wxm8DD0Nx5+TeaYP7F>wn^qU#U3Us zil5N#m$U^bMlC7Q*d2jG&5BrnexYTL%vgkcefoO}{(3_slw1#43BF?aJ%u60!A8Yc zagG^yq-8|PK(|tsDTDfepN3DT%=utCU5gbas;iVOj+ibLo3@TV^?B%LyCO{`C%J^O z=|sV8nf!JYFUE!KIS}v?0zH{YA~MI4NKs7P?5bNFZJ2ls!^2<;^jjABv<4e19)led zkIYPsQfeb$O$SL-e={_WPf3!R10vlHzYH?oLBFcOv~bEzBf}lZY@6jTsLC{GmDx#F)Cd7-mv>B z%#4Hl`Z;a4V^saaJ}QCwRwX|U!29X`58aEG@MK~^s{l|3Z%il8^xhFnxog2Q)79T*i=As@6`Z z+$80e36YJ5W`W;rSX1v80T&TCxnP@OUl0jO9qz6(q=DEYqfT{>TNfKhsmBU0@LF+?f!xbsn_>%h_Sh5uBxL)tmTn>rNM&FW@vO#FW#<=UR;Xuef zAZd{2%2I=YuZ*6M(yREM3D8CoDf`i~JWc0D`{cX8&m^~AWG9{Lw{D%DJe zB3=#3dhb{Q{ee00Y742GqMgY~&8wlSIr^(`nM16!nW8J~D5*1aWJ!aY>=$K0F?%+@ zW87zyO{>y=9|U+QL5BS%>er_IIoC9?Ak`-f8Sc*^v(G4wZZzKA8110hlX5#z;?vZ`0#_2oDD|$KZmGv4pEN~ znmHYCDuJt;fhxlzb=hVz^&t*eJ&1y5qE5+f#OMPsh2VE4=2bi!@IitM>_2rh|KoPC z0j@li)}lHL+L@#h7k^Gg^QPI=mH(byBj=bIFunVOxzE;=gJABER`^K23MWxT>m{{m z*!rCmg;k&pbCSrUz95B`&F`V?l}Pl`swAMuV3cYa|$nklMV)FA^iydXoHg}Oyq zU)_p&3Ht2}y&hm*VB@?O$E-$$KfE5F( zX@zC{)^KSnGY%7*+tf8s!SoVLqQ-j7D;&K>frE~@;YMd-^SGBU>AvlYq-_&UJ*L5x z`_lvtGkOp@El}W&CBnW)(mvKZ4x=+;Dp^)nV8(go_9+V!#@AU8k|gqp@<~E?O}f}n zT;pP!d!`s}$rq_h#?j)y?fviAYr|dF0JYx>JYP5gFijvVQHmvv>3c)gOVRFjWYZKT zBVZ<)iq#9_(eEUp$Cm*}QF(z^TRA0f_?Rp2`7J}}H-i3qo zn+|!HY0FsJLnTv5lK-VpjS4*@*KDpwBGqw(ASY=!^>(DnQwC)98XOd|+NeU>Pghei zNtd8cF;xAFfs!(n=uLr+{f3WFQaMHU9n~wOxbG-SnjIAQ5##E(-m3i&JIV}#qLt2F zCbi z6m|~d+a8Gf-BWMD#!X3gPkP#gI(gxjxT@Y_xF9h_g=}6n9rZ|cw*)awWpIs&8C+y1 z;T-IV*mOQC_T1=_$d_wak|Z0#FsAm}QuHrxWfHQ(HH_d#vA3Pl(FiQWG@3G2#Q_OW z16sY}q3LkfSUN2}QCZDh55|h!YI_ndo%cp#w$;-5>#)t@`m-=EhL)0EyN3#SVv^qWz7QFn4GsR>RYzh*>${*cCTWnf*b(+9frAdTOdGrY7{Xo8g#Z|I zdd}9L0;yvp&W!3i@N7w0v8dE4Pm+ZH1pSJ-w7t+!?JAlOAiJqb%SFp$b|WX<4GnRe zF1eo&kWK(;(XpTN&@@x;O=>HO-;MZ&Y%?}T(Ql2JN+kMQCCJY* zl-emyl-j{{Lw{(r9m=GQh=@+gLENg&VGi~i!mcG&%fkY7V&rl)gI)Th^%NpU6{}|K ztPIpOAT%>uAOyWHJkL*)5^aCL3kmc^=}1k|I!j?|uH5s|kS`2ACy5J78ZMoaRy3nW zSMqmw2N9C{1pvwOd+zF*YcCy2ALBBu#y-Yirq9I1NS(DqU%FW=fj1c<_vAW^0X2#bQDXp%HVyGF2cWkMTUg$m@2Mrj6bcuNK9_{YRu z-F48xu@Vd(TTlkgpKd~R#8yFU4!24({?2+;*oO>%TmPEWy?j%cn=ki@OA=t1a7&CZ76bi+ixPl7EyRDoZrie1%WAgGF02m zq?Y7`a|t) z(QF919xSoxNEwtGfe@Un)9*!ML%}!?`!$$0)3@UsO{PbOT*I4E=eT$Rst4sa&a8d99N&UFpMthKPGu3*RG=6M#yL=2L0@n zTL*~?e;Ht3f{u;_bVIt9!!ypev$G$j=^5FA+M_uDuSlLC0$|Uo9U3a)C{9%78}aJro0v9#DlPQ=_4be+7pAWoc0y$bqSuPv_nCGalv!iqWv;;u$ucr_+e zLuj-atu_MI*4BYn=xwtsLdiWqBfB22tW}S=1M1V%O=qFGEsL?qK_^bC;teQTTP`)m z5>G=>>`O~4+5heK#)u22b%`{z)|JKbqVuq^-7q1T3pm0(#KoO~smV!vwy(iq$EgQx zSjGe-Uju4mA5a%)Vi#-KCc6B1Pp`$}Dtron)UJi|(hE4`pV&mxf@|4aB|anI5~+18 zzo~pg!?4tjYw&K5Bw(VBmBS!uTE^`!MUuuwM0Y@)dCsvv_;@E*rA5e*upy&t3DXf< z=WL4g9RvGaS(|VNqSM)aN)lI9Rb>A{F3eral3sOETt^Q9`RWRk#>MA(UyPvsmF;S) z!U$|gWraRDrgn*~1qKLyteE&eah3l}pwl9EDVloQHT~OVMuKiCCrt4&&Ki{3Zj^p& zx}qqsqa{TdkZAESmFhtc=X%Z&L;q@;l!7lGo0g>lZ#?)9uvnqTsb%mFLaJFED_PHy*k%jotE3}#=p@EVD}ynE z+a=Q2o!=WKPTshwTk=uTn&pApj6w@?Nh&~Lb5cpX4wql`&g!nQ%js2wSCc!^CA|ve z;cL<#p>~jle$WZ;6u?%3{9HZn79Bqxg_i9na=1$je8arA;~aV}27Ho0r`Il=PsrFj zVTaPf57g#hb4~k>(nF`@v<73Ip8qywoyY{; zGryZ`c#IR&Jo~OF1~;>-?sD|80!#;1pVK~_|DszKCm#yY!#rfZoWO|3Uv1B&c(sLZ z0=`PXLM*Hb7E>t{Di^3LkNI9ZHjOG$sJ){;D%5c3N zd#_!3&u6E{&bjm9&rg1N=z%+yzu;xthVHv;;h#==?Z2M)_UHeoeaB1YKjRILKI!@2 z>bvrFAO7ycH~PmP_{{UpUU%!r-=1>HJ=d>4=CqT~I`Ipu?>cnq>Azod!`Lfdw%eQg zPrvK`J@lS^|8Z^oyy1mMZCm!*L$AHFynOCG2R(DA*L|fiR;kpNuiSrm-=7xTecJx* z4ZlC^v{(G)SI69N-19KAU(zD~4ER04S5t_sOHY_AwVSN$j1XXpspQK9X}6d{+RY$o zd%xZJ#J6I(f1|bE1fWOv&77|WUEtce@;u?&i9SGf&te~MvjjN;5jX?UW^DLE;d@w8 z?;e2p1S#l2_;d{>I0wZ$Mo31PDc~Ull zrb!+Ynn+aDBoFG_?iYT~W;YSiX3jYBftH)YL>cO!Nj}0n6NY^{gSDAJ4QFyAasz4K zXyGZ&6V#MibyF{D`nm8ONRjHo+yv!lX};zzt7l^JcXEq@+SSwvw>H;P@viFGiaLJZRd{Ls56;kz#YK26|i$YAE5MHZi1bi#hcbhe=MR*k|H zn7D^3POQ}DyOV-XB_-y?xL_scLT#7}W3K*)bV4rVTgvd6PDwK@BK$-{swG7AH3=lz3tH{q&=%b#~A$6`ckzrMrD8dqyLHSa1b(pjtfQou$?=|YYXd>XYftyH&ty00Qgcsflc^9&BmUROokCAjKEYJ) z!+diU5#2fv1U1eIo-oHX9x?3;|9NBB=brxu_zOXjemssS^e+$&Uesf+eo|HnD|FsG zLRy53U#%g`q-I*C42RZo+D*vkWtdagA3&^>7i1YS-Hs)h6BMPl#SVi7@8&*pQnp8P z6eVrAGB#5wG}>e~QbNj;NVsSm7z3-wBg;}T=r`WF(cD99qD>|*hvTHr*`X*i6O4i` zOj-xiE(4pP!>VXVB0$5%r(MuPWzDi&3`Ean~6>R+=U4 zoO}lI{&VJ-qk-NYjeq${3RTbuO1q80kFx9B+-xg?4tx9NldyW?U%Zn6TL@fZdC&KvLz^WH|s@IAl{1WX?%JxVn;H`KRJwp!BztNd28T$+Z`wZ6H6=*lYN zOLrE9>rD}wsV(TUb(Edc6x!L}53N3f=uxvee&BJyZ4(nt$xO%5D`GOM{z$Df-JGnq zOiFBU04{o!k4EPr{0Hm?3#on9%fe`T7-WKAGY0P7OtZ#86wP3HO{D;$i8Kdk^bXz~ zgjjw9xQBod1UKY2;p}s({^`-G`NB{E1cVQDo8xS}Z7J0Mo^}Kho0RS z+P2~6_uq;qc@ANe9|68gz>Q29Nh7QGie3udxthF1#DNjM6~pTg;foK7c_^?+AVQ*j zB#1T_u4x|l{gjsXAmFzIInX?s7d&@d|CpQWSaA?~1ji91IO>F(H_hy4;4vCaN+lOm zj%F)&BHi>Qep|8U-mZW-1eu5wom#;&l+}{KVU$P88fprL9*sgB2VsqU+hiV>Osu1b z9AsT7PZ}NLUBz=MPa@sD-_V)Pc}zQFWmlE(@AlLv8lpy2 zePpUstx9Df^IW$!CMOd)tP3cIe^gHEyNBX zC-9b1qXIkJ2>UOtZXfZn`OGRAJ8gMWXsg7$Gl%f^ynqn*wSX%LbOoIzBigCXh7ybX zEpWT9#)b&ZIaTO{WwKQ-*Tc7Pp}}rQLJ{b~=^2}hgC>4L_6(3LzWz3$Ygr$=dp8hW zr{N>|6bM^NMIdRvi@FXzO-CHrYd2Bet?&-p=KxcEwFG$r zGw@RIPhJsMuL$E*5yq+FhD`j^fwb(ox(X*?g=Cgtol6h?dT3F590A`(a%9FFnfau3 z{}$N^&ri)b4IK;M3%P;P?LesMNlz_oE-`cCb#v|O8lqbuUho_T9k*s15X0&hC26kk zg7OtzK)`Z?dVZuTW zixFhSn_}$eTtm}fGLlPS)@+wZcMu~HNBPS*_Df;aq+qLjtMRv3P@jcEG-nqwloGWn z<4Bh9O2bH@sty>RjySBavnC{_(F&4gY%>~$A2CGdeel~?{{lPyMtbHS1-zetM-awh zOzGQjWMyKqG<76c!GjKrSj^d>c0JuBdfi#>)W3(>p=${~T{|)kEy|ZN`8@XU**OPU z4+m>wOMn8l;DK%7wZ^UOqPY?>I7ys~3tIRR;1Yr^QNldL*yQt=T4`ja+485jGbLsk z{Juuh|1seE1a4(bq)I{f_8I7wd;1k1bL7ny`Ex?x@G$of*5Q5Cl%g2|=V*)cIh9t+ z=Q;!hFRNHh`Ok}SsYWZ+N~_{GP2F%HRfd?&q#ooy+Z^EClk038;!eWQQ9_|0YDo~V z6E?&z)a7KMfE~Yuh16@yec)$eiX}c%I+U2-At}?hJp;+B`$&!h)v90Zl$#1u_uh2f z$DV>eSXj#s@gJa*E!@iO#F95i!>}U#AY?~$lINjyjq|2?;P(@{sP6=jCH&;BVNKpS z&i~(oEX_U<;2Y+hHY=EMA@%+^!i+@-UPWlXi^rJ>?G(%ir`VBch-ozYUARIqFt2E) zsnE>CZBt6=VQWf15@uo$>O}_jVDsVD9Fg*mRi%on01{A;q3s_Q36m&FKL!>j$B9vViOwuQk;)mnwru+8d>)w5z&V?IOxvI;wav z{n;)ky%$k}+W`oU^KR0`?KET#Q!Vu6CX=QUi%>HP*IWdRL6a6b$#;VXHVb@=*I0^v z=G-HVQ+^}HduZ8+u5zJW<7_YryVoX|!3LY-=4{hNLhs#4NBefbn+UqZA=5ecy6U33 z#^ZOZqlFpmg^^r=x^77Ky^ZRjXv47o@210$iSA>pjVjM-5+CZPSD|3)*Sy0{bP}$c z^(koUkAr74*l&?NO3^S?ODE0@3@zFmN9QnuqK!p&CZMzx@7Vuc2uEg#?hC*?EG+k? zZeUgP#eR>ut)IQT!>~rMVBSI#!H|dk;OHm~ zP2{8oTf@kQ9v(W3UF}&7SWfUoyF@h%MjD-f_AHuNQfZbOeyegKvrN$LJmGV!6-KCl z0jq1qcVfaDuwyI@{?bL<`&xW|WGSsKYxu{vVKbUJ68@BR@c2`*dxZjO9w;J@IH|El zp!G$(7(#P7PF9*|mJmZYOwzD*_EwEbk7j0bE-4;$;2{dBmg>2LJw{Hy8rK`jM_|F)RBF^KLP{q(KKZMgp&sw}ImT2@k{CQnR;);(7Me{2r zkVw`vE)ZhXBD9_(sJS!S!pXkC1}?{|6OA?5*5z|C!+L1bPK^6B-EAtD377gQ^`oUG6I=Z(A}f$*SeVp6P!rg zblbQV-oC%yG>9v-g2*;yle>jL$Dn}>J=mP7l{r@DiKAZA_S;-e(BrlhEr7^#%Ueku z0LJJsWqBrdvoWU0%nGjC)Kt