diff -Nru jasypt-1.8/ChangeLog.txt jasypt-1.9.2/ChangeLog.txt --- jasypt-1.8/ChangeLog.txt 2011-07-25 11:16:33.000000000 +0000 +++ jasypt-1.9.2/ChangeLog.txt 2014-02-25 20:11:02.000000000 +0000 @@ -1,4 +1,51 @@ +1.9.2 +===== +- Replaced Arrays.equals() call in StandardByteDigester with a time-constant function in order + to enhance protection against timing attacks in unintended scenarios where parts of jasypt are + used for matching message-authentication hashes. Note: password matching and general + hash matching scenarios using jasypt were NOT affected by vulnerabilities to timing attacks. +- Modified how the EncryptableProperties objects deal with serialization, so that now they only + make use of the singleton encryptor registry when they are actually serialized (if they are). + This allows the removal of the "finalize()" method in this objects, which was causing trouble in + some specific Java VM setups. +- Created new interface org.jasypt.salt.FixedSaltGenerator and two new implementations for it, + org.jasypt.salt.StringFixedSaltGenerator and org.jasypt.salt.ByteArrayFixedSaltGenerator, + deprecating old equivalents "FixedStringSaltGenerator" and "FixedByteArraySaltGenerator". This + new interface allows applying important performance optimizations to encryption operations when + using fixed salt. +- Modified UTF-8 normalization infrastructure in order to make code compile in Java 1.4. +- Updated testing-scope dependencies. + + +1.9.1 +===== +- Fixed insufficient entropy in RandomSaltGenerator due to seeding mechanism. +- Fixed CLI scripts for Windows and CYGWIN environments. + + +1.9.0 +===== +- Divided old "jasypt" artifact into several modules: + * jasypt (core) + * jasypt-hibernate3 + * jasypt-hibernate4 + * jasypt-spring2 + * jasypt-spring3 + * jasypt-acegisecurity + * jasypt-springsecurity2 + * jasypt-springsecurity3 + * jasypt-wicket13 + * jasypt-wicket15 +- Fixed error in CLI .bat files resulting in bad processing of CLI commands + which involved passwords containing exclamation mark symbols. +- Fixed bug in PooledPBEStringEncryptor which caused first encryptor in pool not + use hexadecimal output type. +- Added implementation of Hashtable's "get(Object)" method to + org.jasypt.properties.EncryptableProperties, so that this method now performs + decryption instead of it only being performed at "getProperty(key)". + + 1.8 === - Small bugfixing for large BigInteger number decryption. diff -Nru jasypt-1.8/.cvsignore jasypt-1.9.2/.cvsignore --- jasypt-1.8/.cvsignore 2008-01-16 14:57:37.000000000 +0000 +++ jasypt-1.9.2/.cvsignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.settings -target -.classpath -.project - diff -Nru jasypt-1.8/debian/changelog jasypt-1.9.2/debian/changelog --- jasypt-1.8/debian/changelog 2015-08-31 08:40:00.000000000 +0000 +++ jasypt-1.9.2/debian/changelog 2016-05-18 10:30:41.000000000 +0000 @@ -1,3 +1,17 @@ +jasypt (1.9.2-1) unstable; urgency=medium + + * Team upload. + * New upstream release + - Removed the patches + - Removed the unused build dependencies (Spring, Hibernate) + * Enabled the unit tests + * Build with the DH sequencer instead of CDBS + * Standards-Version updated to 3.9.8 (no changes) + * Use a secure Vcs-Git URL + * Create the upstream tarball from the Subversion repository on SourceForge + + -- Emmanuel Bourg Wed, 18 May 2016 12:30:37 +0200 + jasypt (1.8-3) unstable; urgency=medium * Team upload. diff -Nru jasypt-1.8/debian/control jasypt-1.9.2/debian/control --- jasypt-1.8/debian/control 2015-08-31 08:39:49.000000000 +0000 +++ jasypt-1.9.2/debian/control 2016-05-18 10:22:40.000000000 +0000 @@ -3,26 +3,18 @@ Priority: optional Maintainer: Debian Java Maintainers Uploaders: Damien Raude-Morvan -Build-Depends: cdbs, - debhelper (>= 9), +Build-Depends: debhelper (>= 9), default-jdk, default-jdk-doc, - glassfish-javaee, junit4, - libgeronimo-jpa-2.0-spec-java, - libhibernate-commons-annotations-java, - libhibernate3-java, - libhibernate3-java-doc, + libbcprov-java, + libcommons-lang-java, libicu4j-java, libmaven-javadoc-plugin-java, libservlet3.1-java, - libspring-beans-java, - libspring-core-java, - libspring-transaction-java, - libspring-web-java, - maven-debian-helper (>= 1.4) -Standards-Version: 3.9.6 -Vcs-Git: git://anonscm.debian.org/pkg-java/jasypt.git + maven-debian-helper (>= 2.0) +Standards-Version: 3.9.8 +Vcs-Git: https://anonscm.debian.org/git/pkg-java/jasypt.git Vcs-Browser: https://anonscm.debian.org/cgit/pkg-java/jasypt.git Homepage: http://www.jasypt.org diff -Nru jasypt-1.8/debian/copyright jasypt-1.9.2/debian/copyright --- jasypt-1.8/debian/copyright 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/copyright 2016-05-18 10:30:29.000000000 +0000 @@ -1,14 +1,15 @@ -Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174 +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: JASYPT: Java Simplified Encryption Upstream-Contact: Daniel Fernandez Source: https://sourceforge.net/projects/jasypt/files/ Files: * -Copyright: 2011, The JASYPT team +Copyright: 2011-2014, The JASYPT team License: Apache-2.0 Files: debian/* Copyright: 2011, Damien Raude-Morvan + 2014-2016, Emmanuel Bourg License: Apache-2.0 License: Apache-2.0 diff -Nru jasypt-1.8/debian/cvs-get.sh jasypt-1.9.2/debian/cvs-get.sh --- jasypt-1.8/debian/cvs-get.sh 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/cvs-get.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -#!/bin/sh -set -e - -TMPDIR=`mktemp -t -d jaspyt-cvs.XXXXXXXXXX` || exit 1 -trap "rm -Rf $TMPDIR" 0 -VERSION=$(dpkg-parsechangelog | grep '^Version:' | cut -f 2 -d ' ' | sed "s/-\(.*\)$//") - -TAR=jasypt_$VERSION.orig.tar.gz -DIR=jasypt-$VERSION -TAG="jasypt-`echo $VERSION | tr . _`" -CVSROOT=":pserver:anonymous@jasypt.cvs.sourceforge.net:/cvsroot/jasypt" - -echo "retrieving Jasypt sources tagged $TAG" -(cd $TMPDIR && cvs -d $CVSROOT export -d $DIR -r$TAG jasypt >/dev/null 2>&1) - -echo "generating ../$TAR" -tar -C $TMPDIR -czf ../$TAR $DIR - diff -Nru jasypt-1.8/debian/maven.cleanIgnoreRules jasypt-1.9.2/debian/maven.cleanIgnoreRules --- jasypt-1.8/debian/maven.cleanIgnoreRules 2014-12-07 09:51:48.000000000 +0000 +++ jasypt-1.9.2/debian/maven.cleanIgnoreRules 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -# Maven clean ignore rules - ignore some Maven dependencies and plugins -# during the clean phase of a Maven build -# Format of this file is: -# [group] [artifact] [type] [version] [classifier] [scope] -# where each element can be either -# - the exact string, for example org.apache for the group, or 3.1 -# for the version. In this case, the element is simply matched -# and left as it is -# - * (the star character, alone). In this case, anything will -# match and be left as it is. For example, using * on the -# position of the artifact field will match any artifact id -# All elements much match before a rule can be applied -# Example rule: match jar with groupid= junit, artifactid= junit -# and version starting with 3., this dependency is then removed -# from the POM before mvn clean is called -# junit junit jar s/3\\..*/3.x/ - -org.apache.maven.plugins maven-assembly-plugin * * * * -org.apache.maven.plugins maven-release-plugin * * * * -org.apache.maven.plugins maven-source-plugin * * * * -org.apache.maven.plugins maven-gpg-plugin * * * * diff -Nru jasypt-1.8/debian/maven.ignoreRules jasypt-1.9.2/debian/maven.ignoreRules --- jasypt-1.8/debian/maven.ignoreRules 2014-12-07 09:51:48.000000000 +0000 +++ jasypt-1.9.2/debian/maven.ignoreRules 2016-05-18 10:28:42.000000000 +0000 @@ -14,14 +14,8 @@ # from the POM # junit junit jar s/3\\..*/3.x/ -org.acegisecurity acegi-security * * * * org.apache.maven.plugins maven-assembly-plugin * * * * org.apache.maven.plugins maven-gpg-plugin * * * * org.apache.maven.plugins maven-project-info-reports-plugin * * * * org.apache.maven.plugins maven-release-plugin * * * * org.apache.maven.plugins maven-source-plugin * * * * -org.apache.wicket wicket * * * * -org.bouncycastle bcprov-jdk12 * * * * -org.springframework.security3 spring-security-core * * * * -org.springframework.security3 spring-security-web * * * * -org.springframework.security spring-security-core * * * * diff -Nru jasypt-1.8/debian/maven.properties jasypt-1.9.2/debian/maven.properties --- jasypt-1.8/debian/maven.properties 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/maven.properties 2016-05-18 10:22:49.000000000 +0000 @@ -2,4 +2,4 @@ # For example: # maven.test.skip=true -maven.test.skip=true +maven.test.skip=false diff -Nru jasypt-1.8/debian/maven.publishedRules jasypt-1.9.2/debian/maven.publishedRules --- jasypt-1.8/debian/maven.publishedRules 2014-12-07 09:51:48.000000000 +0000 +++ jasypt-1.9.2/debian/maven.publishedRules 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -# Maven published rules - additional rules to publish, to help -# the packaging work of Debian maintainers using mh_make -# Format of this file is: -# [group] [artifact] [type] [version] [classifier] [scope] -# where each element can be either -# - the exact string, for example org.apache for the group, or 3.1 -# for the version. In this case, the element is simply matched -# and left as it is -# - * (the star character, alone). In this case, anything will -# match and be left as it is. For example, using * on the -# position of the artifact field will match any artifact id -# - a regular expression of the form s/match/replace/ -# in this case, elements that match are transformed using -# the regex rule. -# All elements much match before a rule can be applied -# Example rule: match jar with groupid= junit, artifactid= junit -# and version starting with 3., replacing the version with 3.x -# junit junit jar s/3\\..*/3.x/ - diff -Nru jasypt-1.8/debian/maven.rules jasypt-1.9.2/debian/maven.rules --- jasypt-1.8/debian/maven.rules 2014-12-07 09:51:48.000000000 +0000 +++ jasypt-1.9.2/debian/maven.rules 2016-05-18 10:24:12.000000000 +0000 @@ -19,5 +19,5 @@ org.jasypt jasypt jar s/.*/debian/ * * junit junit * s/.*/4.x/ * * -org.springframework * * s/3\..*/3.x/ * * javax.servlet s/servlet-api/javax.servlet-api/ * s/.*/3.1/ * * +s/bouncycastle/org.bouncycastle/ s/bcprov-jdk12/bcprov/ * s/.*/debian/ * * diff -Nru jasypt-1.8/debian/orig-tar.sh jasypt-1.9.2/debian/orig-tar.sh --- jasypt-1.8/debian/orig-tar.sh 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/debian/orig-tar.sh 2016-05-18 09:54:56.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/sh +set -e + +PACKAGE=$(dpkg-parsechangelog -S Source) +VERSION=$2 +DIR=${PACKAGE}-${VERSION} +TAR=../${PACKAGE}_${VERSION}.orig.tar.xz + +rm $3 +svn export http://svn.code.sf.net/p/jasypt/code/tags/jasypt/jasypt-$VERSION $DIR + +XZ_OPT=--best tar -c -v -J -f $TAR $DIR +rm -Rf $DIR diff -Nru jasypt-1.8/debian/patches/exclude_some_components.diff jasypt-1.9.2/debian/patches/exclude_some_components.diff --- jasypt-1.8/debian/patches/exclude_some_components.diff 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/patches/exclude_some_components.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -Description: Exclude some packages from build - as their dependencies are not in Debian : - - org/jasypt/spring/security/ - - org/jasypt/spring/security2/ - - org/jasypt/spring/security3/ - - org/jasypt/wicket/ -Author: Damien Raude-Morvan -Last-Update: 2011-06-19 -Forwarded: not-needed ---- a/pom.xml -+++ b/pom.xml -@@ -115,6 +115,12 @@ - - 1.4 - 1.4 -+ -+ **/org/jasypt/spring/security/* -+ **/org/jasypt/spring/security2/* -+ **/org/jasypt/spring/security3/* -+ **/org/jasypt/wicket/* -+ - - - diff -Nru jasypt-1.8/debian/patches/icu.diff jasypt-1.9.2/debian/patches/icu.diff --- jasypt-1.8/debian/patches/icu.diff 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/patches/icu.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -Description: Use system installed icu (with Maven systemPath) -Author: Damien Raude-Morvan -Last-Update: 2011-06-19 -Forwarded: not-needed ---- a/pom.xml -+++ b/pom.xml -@@ -226,8 +226,9 @@ - com.ibm.icu - icu4j - 3.4.4 -- provided -+ system - true -+ /usr/share/java/icu4j.jar - - - diff -Nru jasypt-1.8/debian/patches/series jasypt-1.9.2/debian/patches/series --- jasypt-1.8/debian/patches/series 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -exclude_some_components.diff -icu.diff diff -Nru jasypt-1.8/debian/README.source jasypt-1.9.2/debian/README.source --- jasypt-1.8/debian/README.source 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/README.source 2016-05-18 10:30:06.000000000 +0000 @@ -1,5 +1,5 @@ Information about jasypt ------------------------------- +------------------------ This package was debianized using the mh_make command from the maven-debian-helper package. diff -Nru jasypt-1.8/debian/rules jasypt-1.9.2/debian/rules --- jasypt-1.8/debian/rules 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/rules 2016-05-18 09:54:56.000000000 +0000 @@ -1,9 +1,7 @@ #!/usr/bin/make -f -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/maven.mk - -JAVA_HOME := /usr/lib/jvm/default-java +%: + dh $@ --buildsystem=maven get-orig-source: - sh debian/cvs-get.sh + uscan --download-current-version --force-download --no-symlink diff -Nru jasypt-1.8/debian/watch jasypt-1.9.2/debian/watch --- jasypt-1.8/debian/watch 2014-12-02 23:05:16.000000000 +0000 +++ jasypt-1.9.2/debian/watch 2016-05-18 09:54:56.000000000 +0000 @@ -1,2 +1,2 @@ version=3 -http://sf.net/jasypt/jasypt-([\d].+)-dist\.zip +http://sf.net/jasypt/jasypt-([\d].+)-dist\.zip debian debian/orig-tar.sh diff -Nru jasypt-1.8/pom.xml jasypt-1.9.2/pom.xml --- jasypt-1.8/pom.xml 2011-07-25 17:14:49.000000000 +0000 +++ jasypt-1.9.2/pom.xml 2014-02-25 20:51:29.000000000 +0000 @@ -24,7 +24,7 @@ org.jasypt jasypt jar - 1.8 + 1.9.2 JASYPT: Java Simplified Encryption http://www.jasypt.org @@ -46,10 +46,9 @@ - http://jasypt.cvs.sourceforge.net/jasypt/ - scm:cvs:pserver:anonymous:@jasypt.cvs.sourceforge.net:/cvsroot/jasypt:jasypt - scm:cvs:ext:jasypt.cvs.sourceforge.net:/cvsroot/jasypt:jasypt - jasypt-1_8 + scm:svn:http://svn.code.sf.net/p/jasypt/code/tags/jasypt/jasypt-1.9.2 + scm:svn:https://svn.code.sf.net/p/jasypt/code/tags/jasypt/jasypt-1.9.2 + scm:svn:https://svn.code.sf.net/p/jasypt/code/tags/jasypt/jasypt-1.9.2 @@ -67,19 +66,31 @@ sonatype-nexus-snapshots Sonatype Nexus Snapshots - http://oss.sonatype.org/content/repositories/snapshots + https://oss.sonatype.org/content/repositories/snapshots sonatype-nexus-snapshots Sonatype Nexus Snapshots - http://oss.sonatype.org/service/local/staging/deploy/maven2 + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + + true + + + + - + + src/main/resources @@ -105,17 +116,27 @@ org.apache.maven.plugins - maven-release-plugin + maven-site-plugin 2.1 - + org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 2.1 1.4 1.4 + US-ASCII + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + US-ASCII @@ -124,10 +145,8 @@ maven-javadoc-plugin 2.7 + protected java.lang - ${basedir}/src/main/javadoc/overview.html - ${basedir}/src/main/javadoc - ${project.reporting.outputDirectory}/api/${project.artifactId}/apidocs org.jasypt.contrib.* @@ -176,7 +195,6 @@ src/assembly/lite.xml - src/assembly/dist.xml @@ -189,6 +207,16 @@ + + + org.apache.maven.plugins + maven-release-plugin + 2.1 + + https://svn.code.sf.net/p/jasypt/code/tags/jasypt + + + @@ -196,24 +224,6 @@ - - - - org.apache.maven.plugins - maven-project-info-reports-plugin - 2.2.1 - - - - license - scm - - - - - - - @@ -225,358 +235,6 @@ - org.hibernate - hibernate-core - 3.3.2.GA - provided - true - - - org.slf4j - slf4j-api - - - commons-collections - commons-collections - - - dom4j - dom4j - - - javax.transaction - jta - - - antlr - antlr - - - - - - - org.hibernate - hibernate-c3p0 - 3.3.2.GA - provided - true - - - org.hibernate - hibernate-core - - - c3p0 - c3p0 - - - org.slf4j - slf4j-api - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - org.springframework - spring-core - 3.0.0.RELEASE - provided - true - - - org.springframework - spring-asm - - - commons-logging - commons-logging - - - - - - org.springframework - spring-beans - 3.0.0.RELEASE - provided - true - - - org.springframework - spring-core - - - commons-logging - commons-logging - - - - - - org.springframework - spring-web - 3.0.0.RELEASE - provided - true - - - org.springframework - spring-core - - - org.springframework - spring-beans - - - org.springframework - spring-context - - - commons-logging - commons-logging - - - aopalliance - aopalliance - - - - - - - org.springframework - spring-tx - 3.0.0.RELEASE - provided - true - - - org.springframework - spring-core - - - org.springframework - spring-beans - - - org.springframework - spring-context - - - org.springframework - spring-aop - - - aopalliance - aopalliance - - - - - - - - org.springframework.security - spring-security-core - 2.0.0 - provided - true - - - org.springframework - spring-core - - - org.springframework - spring-context - - - org.springframework - spring-aop - - - org.springframework - spring-support - - - commons-logging - commons-logging - - - commons-codec - commons-codec - - - commons-collections - commons-collections - - - - - - - - - - - - - org.springframework.security3 - spring-security-core - 3.0.0.RELEASE - provided - true - - - org.springframework - spring-core - - - org.springframework - spring-context - - - org.springframework - spring-aop - - - org.springframework - spring-tx - - - org.springframework - spring-expression - - - org.aspectj - aspectjrt - - - org.aspectj - aspectjweaver - - - - - - - org.springframework.security3 - spring-security-web - 3.0.0.RELEASE - provided - true - - - org.springframework.security - spring-security-core - - - org.springframework - spring-web - - - - - - - org.acegisecurity - acegi-security - 1.0.0 - provided - true - - - org.springframework - spring-remoting - - - org.springframework - spring-jdbc - - - org.springframework - spring-support - - - commons-lang - commons-lang - - - commons-logging - commons-logging - - - commons-codec - commons-codec - - - commons-collections - commons-collections - - - oro - oro - - - log4j - log4j - - - - - - org.apache.wicket - wicket - 1.4.5 - provided - true - - - org.slf4j - slf4j-api - - - - - javax.servlet servlet-api 2.4 @@ -585,9 +243,9 @@ - org.bouncycastle + bouncycastle bcprov-jdk12 - 130 + 140 test diff -Nru jasypt-1.8/RELEASING.txt jasypt-1.9.2/RELEASING.txt --- jasypt-1.8/RELEASING.txt 2010-10-29 01:02:53.000000000 +0000 +++ jasypt-1.9.2/RELEASING.txt 2011-12-03 17:14:07.000000000 +0000 @@ -1,12 +1,5 @@ In order to prepare a release, this steps have to be taken: -0. Ensure a cvs command-line client is installed and accessible with the "cvs" command. - Start the pageant daemon including the private key for sourceforge CVS server. - Make sure the CVS_RSH variable has value "plink" - Make sure the "plink" executable is in the path - Create a cvs checkout from the commmand line (to avoid conflicts with eclipse's "extssh" method) - and work from this checkout. - 1. In settings.xml, these entries must exist: @@ -30,11 +23,11 @@ 3. Deploy SNAPSHOT artifact to Sonatype NEXUS with "mvn deploy", and check in Nexus web interface. -4. Execute a test "no modification" run of the release:prepare goal: "mvn -Preleases release:prepare -DdryRun=true -Dusername=[SVNUSER] -Dpassword=[SVNPASS] -Dmaven.scm.provider.cvs.implementation=cvs_native" +4. Execute a test "no modification" run of the release:prepare goal: "mvn -Preleases release:prepare -DdryRun=true -Dusername=[SVNUSER] -Dpassword=[SVNPASS]" -5. Execute a real run of the release:prepare goal: "mvn -Preleases release:prepare -Dusername=[SVNUSER] -Dpassword=[SVNPASS] -Dmaven.scm.provider.cvs.implementation=cvs_native" +5. Execute a real run of the release:prepare goal: "mvn -Preleases release:prepare -Dusername=[SVNUSER] -Dpassword=[SVNPASS]" -6. Upload the release: "mvn -Preleases release:perform -Dusername=[SVNUSER] -Dpassword=[SVNPASS] -Dmaven.scm.provider.cvs.implementation=cvs_native" +6. Upload the release: "mvn -Preleases release:perform -Dusername=[SVNUSER] -Dpassword=[SVNPASS]" 7. Follow instructions for Nexus at: http://nexus.sonatype.org/oss-repository-hosting.html diff -Nru jasypt-1.8/src/assembly/dist.xml jasypt-1.9.2/src/assembly/dist.xml --- jasypt-1.8/src/assembly/dist.xml 2010-10-25 21:08:16.000000000 +0000 +++ jasypt-1.9.2/src/assembly/dist.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ - - - - dist - - - zip - - - - - ${basedir}/src/main/bin/ - /bin - - *.sh - *.bat - - - - ${basedir}/target/apidocs/ - /apidocs - - **/* - - - - ${basedir}/target/ - /dist - - ${artifactId}-${version}.jar - ${artifactId}-${version}-lite.jar - ${artifactId}-${version}-javadoc.jar - ${artifactId}-${version}-sources.jar - - - - ${basedir}/ - / - - LICENSE.txt - README.txt - NOTICE.txt - ChangeLog.txt - - - - ${settings.localRepository}/com/ibm/icu/icu4j/3.4.4 - /lib - - icu4j-3.4.4.jar - - - - - - - - - /lib - false - runtime - - - - - diff -Nru jasypt-1.8/src/main/bin/decrypt.bat jasypt-1.9.2/src/main/bin/decrypt.bat --- jasypt-1.8/src/main/bin/decrypt.bat 2010-10-28 22:44:05.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/decrypt.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -@ECHO OFF -IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION - -set SCRIPT_NAME=decrypt.bat -cd %0\.. -cd .. -set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI -set EXEC_CLASSPATH=. -if "%JASYPT_CLASSPATH%" == "" goto computeclasspath -set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% - -:computeclasspath -FOR %%c in (.\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c - -set JAVA_EXECUTABLE=java -if "%JAVA_HOME%" == "" goto execute -set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" - -:execute -%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff -Nru jasypt-1.8/src/main/bin/decrypt.sh jasypt-1.9.2/src/main/bin/decrypt.sh --- jasypt-1.8/src/main/bin/decrypt.sh 2011-07-24 18:36:19.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/decrypt.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -#!/bin/sh - -SCRIPT_NAME=decrypt.sh -EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI -BIN_DIR=`dirname $0` -DIST_DIR=$BIN_DIR/.. -LIB_DIR=$DIST_DIR/lib -EXEC_CLASSPATH="." - -if [ -n "$JASYPT_CLASSPATH" ] -then - EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH -fi - -for a in `find $LIB_DIR -name '*.jar'` -do - EXEC_CLASSPATH=$EXEC_CLASSPATH:$a -done - -JAVA_EXECUTABLE=java -if [ -n "$JAVA_HOME" ] -then - JAVA_EXECUTABLE=$JAVA_HOME/bin/java -fi - -$JAVA_EXECUTABLE -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff -Nru jasypt-1.8/src/main/bin/digest.bat jasypt-1.9.2/src/main/bin/digest.bat --- jasypt-1.8/src/main/bin/digest.bat 2010-10-28 22:44:05.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/digest.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -@ECHO OFF -IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION - -set SCRIPT_NAME=digest.bat -cd %0\.. -cd .. -set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptStringDigestCLI -set EXEC_CLASSPATH=. -if "%JASYPT_CLASSPATH%" == "" goto computeclasspath -set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% - -:computeclasspath -FOR %%c in (.\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c - -set JAVA_EXECUTABLE=java -if "%JAVA_HOME%" == "" goto execute -set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" - -:execute -%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff -Nru jasypt-1.8/src/main/bin/digest.sh jasypt-1.9.2/src/main/bin/digest.sh --- jasypt-1.8/src/main/bin/digest.sh 2011-07-24 18:36:19.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/digest.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -#!/bin/sh - -SCRIPT_NAME=digest.sh -EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptStringDigestCLI -BIN_DIR=`dirname $0` -DIST_DIR=$BIN_DIR/.. -LIB_DIR=$DIST_DIR/lib -EXEC_CLASSPATH="." - -if [ -n "$JASYPT_CLASSPATH" ] -then - EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH -fi - -for a in `find $LIB_DIR -name '*.jar'` -do - EXEC_CLASSPATH=$EXEC_CLASSPATH:$a -done - -JAVA_EXECUTABLE=java -if [ -n "$JAVA_HOME" ] -then - JAVA_EXECUTABLE=$JAVA_HOME/bin/java -fi - -$JAVA_EXECUTABLE -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff -Nru jasypt-1.8/src/main/bin/encrypt.bat jasypt-1.9.2/src/main/bin/encrypt.bat --- jasypt-1.8/src/main/bin/encrypt.bat 2010-10-28 22:44:05.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/encrypt.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -@ECHO OFF -IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION - -set SCRIPT_NAME=encrypt.bat -cd %0\.. -cd .. -set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI -set EXEC_CLASSPATH=. -if "%JASYPT_CLASSPATH%" == "" goto computeclasspath -set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% - -:computeclasspath -FOR %%c in (.\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c - -set JAVA_EXECUTABLE=java -if "%JAVA_HOME%" == "" goto execute -set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" - -:execute -%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff -Nru jasypt-1.8/src/main/bin/encrypt.sh jasypt-1.9.2/src/main/bin/encrypt.sh --- jasypt-1.8/src/main/bin/encrypt.sh 2011-07-24 18:36:19.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/encrypt.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -#!/bin/sh - -SCRIPT_NAME=encrypt.sh -EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI -BIN_DIR=`dirname $0` -DIST_DIR=$BIN_DIR/.. -LIB_DIR=$DIST_DIR/lib -EXEC_CLASSPATH="." - -if [ -n "$JASYPT_CLASSPATH" ] -then - EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH -fi - -for a in `find $LIB_DIR -name '*.jar'` -do - EXEC_CLASSPATH=$EXEC_CLASSPATH:$a -done - -JAVA_EXECUTABLE=java -if [ -n "$JAVA_HOME" ] -then - JAVA_EXECUTABLE=$JAVA_HOME/bin/java -fi - -$JAVA_EXECUTABLE -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff -Nru jasypt-1.8/src/main/bin/listAlgorithms.bat jasypt-1.9.2/src/main/bin/listAlgorithms.bat --- jasypt-1.8/src/main/bin/listAlgorithms.bat 2010-10-21 22:19:34.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/listAlgorithms.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -@ECHO OFF -IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION - -set SCRIPT_NAME=listAlgorithms.bat -cd %0\.. -cd .. -set EXECUTABLE_CLASS=org.jasypt.intf.cli.AlgorithmRegistryCLI -set EXEC_CLASSPATH=. -if "%JASYPT_CLASSPATH%" == "" goto computeclasspath -set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% - -:computeclasspath -FOR %%c in (.\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c - -set JAVA_EXECUTABLE=java -if "%JAVA_HOME%" == "" goto execute -set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" - -:execute -%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff -Nru jasypt-1.8/src/main/bin/listAlgorithms.sh jasypt-1.9.2/src/main/bin/listAlgorithms.sh --- jasypt-1.8/src/main/bin/listAlgorithms.sh 2011-07-24 18:36:19.000000000 +0000 +++ jasypt-1.9.2/src/main/bin/listAlgorithms.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -#!/bin/sh - -SCRIPT_NAME=listAlgorithms.sh -EXECUTABLE_CLASS=org.jasypt.intf.cli.AlgorithmRegistryCLI -BIN_DIR=`dirname $0` -DIST_DIR=$BIN_DIR/.. -LIB_DIR=$DIST_DIR/lib -EXEC_CLASSPATH="." - -if [ -n "$JASYPT_CLASSPATH" ] -then - EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH -fi - -for a in `find $LIB_DIR -name '*.jar'` -do - EXEC_CLASSPATH=$EXEC_CLASSPATH:$a -done - -JAVA_EXECUTABLE=java -if [ -n "$JAVA_HOME" ] -then - JAVA_EXECUTABLE=$JAVA_HOME/bin/java -fi - -$JAVA_EXECUTABLE -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/config/EnvironmentStringDigesterConfig.java jasypt-1.9.2/src/main/java/org/jasypt/digest/config/EnvironmentStringDigesterConfig.java --- jasypt-1.8/src/main/java/org/jasypt/digest/config/EnvironmentStringDigesterConfig.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/config/EnvironmentStringDigesterConfig.java 2014-02-25 00:22:19.000000000 +0000 @@ -20,7 +20,6 @@ package org.jasypt.digest.config; import org.jasypt.commons.CommonUtils; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; /** *

diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/config/SimpleStringDigesterConfig.java jasypt-1.9.2/src/main/java/org/jasypt/digest/config/SimpleStringDigesterConfig.java --- jasypt-1.8/src/main/java/org/jasypt/digest/config/SimpleStringDigesterConfig.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/config/SimpleStringDigesterConfig.java 2014-02-25 00:22:19.000000000 +0000 @@ -20,7 +20,6 @@ package org.jasypt.digest.config; import org.jasypt.commons.CommonUtils; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; /** diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/config/StringDigesterConfig.java jasypt-1.9.2/src/main/java/org/jasypt/digest/config/StringDigesterConfig.java --- jasypt-1.8/src/main/java/org/jasypt/digest/config/StringDigesterConfig.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/config/StringDigesterConfig.java 2014-02-25 00:22:19.000000000 +0000 @@ -19,7 +19,6 @@ */ package org.jasypt.digest.config; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/PooledByteDigester.java jasypt-1.9.2/src/main/java/org/jasypt/digest/PooledByteDigester.java --- jasypt-1.8/src/main/java/org/jasypt/digest/PooledByteDigester.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/PooledByteDigester.java 2014-02-25 00:22:19.000000000 +0000 @@ -24,8 +24,6 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.digest.config.DigesterConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/PooledStringDigester.java jasypt-1.9.2/src/main/java/org/jasypt/digest/PooledStringDigester.java --- jasypt-1.8/src/main/java/org/jasypt/digest/PooledStringDigester.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/PooledStringDigester.java 2014-02-25 00:22:19.000000000 +0000 @@ -23,10 +23,7 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.digest.config.DigesterConfig; -import org.jasypt.digest.config.StringDigesterConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; diff -Nru jasypt-1.8/src/main/java/org/jasypt/digest/StandardByteDigester.java jasypt-1.9.2/src/main/java/org/jasypt/digest/StandardByteDigester.java --- jasypt-1.8/src/main/java/org/jasypt/digest/StandardByteDigester.java 2010-10-24 23:36:03.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/digest/StandardByteDigester.java 2014-02-20 16:41:18.000000000 +0000 @@ -23,7 +23,6 @@ import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.Provider; -import java.util.Arrays; import org.jasypt.commons.CommonUtils; import org.jasypt.digest.config.DigesterConfig; @@ -1099,7 +1098,7 @@ final byte[] encryptedMessage = digest(message, salt); // If, using the same salt, digests match, then messages too. - return (Arrays.equals(encryptedMessage, digest)); + return (digestsAreEqual(encryptedMessage, digest)); } catch (Exception e) { // If digest fails, it is more secure not to return any information @@ -1110,6 +1109,27 @@ } + // Time-constant comparison of byte arrays + private static boolean digestsAreEqual(byte[] a, byte[] b) { + + if (a == null || b == null) { + return false; + } + + final int aLen = a.length; + if (b.length != aLen) { + return false; + } + + int match = 0; + for (int i = 0; i < aLen; i++) { + match |= a[i] ^ b[i]; + } + + return (match == 0); + + } + } diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.java 2014-02-25 00:22:19.000000000 +0000 @@ -25,8 +25,6 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.encryption.pbe.config.PBEConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.java 2014-02-25 00:22:19.000000000 +0000 @@ -25,8 +25,6 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.encryption.pbe.config.PBEConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.java 2014-02-25 00:22:19.000000000 +0000 @@ -24,7 +24,6 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.encryption.pbe.config.PBEConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.java 2014-02-25 00:22:19.000000000 +0000 @@ -24,8 +24,6 @@ import org.jasypt.commons.CommonUtils; import org.jasypt.encryption.pbe.config.PBEConfig; import org.jasypt.exceptions.AlreadyInitializedException; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.salt.SaltGenerator; @@ -450,7 +448,7 @@ poolPosition = this.roundRobin; this.roundRobin = (this.roundRobin + 1) % this.poolSize; } - + return this.pool[poolPosition].encrypt(message); } diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.java 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.java 2011-12-08 02:15:37.000000000 +0000 @@ -361,7 +361,9 @@ final StandardPBEBigDecimalEncryptor[] clones = new StandardPBEBigDecimalEncryptor[size]; - for (int i = 0; i < size; i++) { + clones[0] = this; + + for (int i = 1; i < size; i++) { clones[i] = new StandardPBEBigDecimalEncryptor(byteEncryptorClones[i]); } diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.java 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.java 2011-12-08 02:15:37.000000000 +0000 @@ -360,7 +360,9 @@ final StandardPBEBigIntegerEncryptor[] clones = new StandardPBEBigIntegerEncryptor[size]; - for (int i = 0; i < size; i++) { + clones[0] = this; + + for (int i = 1; i < size; i++) { clones[i] = new StandardPBEBigIntegerEncryptor(byteEncryptorClones[i]); } diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.java 2011-07-25 11:16:33.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.java 2014-02-25 01:52:26.000000000 +0000 @@ -35,6 +35,7 @@ import org.jasypt.exceptions.EncryptionInitializationException; import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.jasypt.normalization.Normalizer; +import org.jasypt.salt.FixedSaltGenerator; import org.jasypt.salt.RandomSaltGenerator; import org.jasypt.salt.SaltGenerator; @@ -202,8 +203,15 @@ private Cipher encryptCipher = null; private Cipher decryptCipher = null; - + // Flag which indicates whether the salt generator being used is a + // FixedSaltGenerator implementation (in which case some optimizations can + // be applied). + private boolean usingFixedSalt = false; + private byte[] fixedSaltInUse = null; + + + /** * Creates a new instance of StandardPBEByteEncryptor. @@ -589,13 +597,13 @@ resolveConfigurationPassword(); - String configAlgorithm = this.config.getAlgorithm(); + final String configAlgorithm = this.config.getAlgorithm(); if (configAlgorithm != null) { CommonUtils.validateNotEmpty(configAlgorithm, "Algorithm cannot be set empty"); } - Integer configKeyObtentionIterations = + final Integer configKeyObtentionIterations = this.config.getKeyObtentionIterations(); if (configKeyObtentionIterations != null) { CommonUtils.validateIsTrue(configKeyObtentionIterations.intValue() > 0, @@ -603,15 +611,15 @@ "greater than zero"); } - SaltGenerator configSaltGenerator = this.config.getSaltGenerator(); + final SaltGenerator configSaltGenerator = this.config.getSaltGenerator(); - String configProviderName = this.config.getProviderName(); + final String configProviderName = this.config.getProviderName(); if (configProviderName != null) { CommonUtils.validateNotEmpty(configProviderName, "Provider name cannot be empty"); } - Provider configProvider = this.config.getProvider(); + final Provider configProvider = this.config.getProvider(); this.algorithm = ((this.algorithmSet) || (configAlgorithm == null))? @@ -655,7 +663,7 @@ /* * Encryption and decryption Ciphers are created the usual way. */ - PBEKeySpec pbeKeySpec = new PBEKeySpec(normalizedPassword); + final PBEKeySpec pbeKeySpec = new PBEKeySpec(normalizedPassword); // We don't need the char[] passwords anymore -> clean! cleanPassword(this.password); @@ -664,7 +672,7 @@ if (this.provider != null) { - SecretKeyFactory factory = + final SecretKeyFactory factory = SecretKeyFactory.getInstance( this.algorithm, this.provider); @@ -678,7 +686,7 @@ } else if (this.providerName != null) { - SecretKeyFactory factory = + final SecretKeyFactory factory = SecretKeyFactory.getInstance( this.algorithm, this.providerName); @@ -692,7 +700,7 @@ } else { - SecretKeyFactory factory = + final SecretKeyFactory factory = SecretKeyFactory.getInstance(this.algorithm); this.key = factory.generateSecret(pbeKeySpec); @@ -711,13 +719,48 @@ // The salt size for the chosen algorithm is set to be equal // to the algorithm's block size (if it is a block algorithm). - int algorithmBlockSize = this.encryptCipher.getBlockSize(); + final int algorithmBlockSize = this.encryptCipher.getBlockSize(); if (algorithmBlockSize > 0) { this.saltSizeBytes = algorithmBlockSize; } + this.usingFixedSalt = (this.saltGenerator instanceof FixedSaltGenerator); + + if (this.usingFixedSalt) { + + // Create salt + this.fixedSaltInUse = + this.saltGenerator.generateSalt(this.saltSizeBytes); + + /* + * Initialize the Cipher objects themselves. Due to the fact that + * we will be using a fixed salt, this can be done just once, which + * means a better performance at the encrypt/decrypt methods. + */ + + final PBEParameterSpec parameterSpec = + new PBEParameterSpec(this.fixedSaltInUse, this.keyObtentionIterations); + + try { + + this.encryptCipher.init( + Cipher.ENCRYPT_MODE, this.key, parameterSpec); + this.decryptCipher.init( + Cipher.DECRYPT_MODE, this.key, parameterSpec); + + } catch (final Exception e) { + // If encryption fails, it is more secure not to return any + // information about the cause in nested exceptions. Simply fail. + throw new EncryptionOperationNotPossibleException(); + } + + + } + + this.initialized = true; + } } @@ -831,24 +874,37 @@ } try { - - // Create salt - final byte[] salt = - this.saltGenerator.generateSalt(this.saltSizeBytes); - /* - * Perform encryption using the Cipher - */ - final PBEParameterSpec parameterSpec = - new PBEParameterSpec(salt, this.keyObtentionIterations); + final byte[] salt; + final byte[] encryptedMessage; + if (this.usingFixedSalt) { - byte[] encryptedMessage = null; - synchronized (this.encryptCipher) { - this.encryptCipher.init( - Cipher.ENCRYPT_MODE, this.key, parameterSpec); - encryptedMessage = this.encryptCipher.doFinal(message); + salt = this.fixedSaltInUse; + + synchronized (this.encryptCipher) { + encryptedMessage = this.encryptCipher.doFinal(message); + } + + } else { + + // Create salt + salt = this.saltGenerator.generateSalt(this.saltSizeBytes); + + /* + * Perform encryption using the Cipher + */ + final PBEParameterSpec parameterSpec = + new PBEParameterSpec(salt, this.keyObtentionIterations); + + synchronized (this.encryptCipher) { + this.encryptCipher.init( + Cipher.ENCRYPT_MODE, this.key, parameterSpec); + encryptedMessage = this.encryptCipher.doFinal(message); + } + } + // Finally we build an array containing both the unencrypted salt // and the result of the encryption. This is done only // if the salt generator we are using specifies to do so. @@ -862,12 +918,12 @@ return encryptedMessage; - } catch (InvalidKeyException e) { + } catch (final InvalidKeyException e) { // The problem could be not having the unlimited strength policies // installed, so better give a usefull error message. handleInvalidKeyException(e); throw new EncryptionOperationNotPossibleException(); - } catch (Exception e) { + } catch (final Exception e) { // If encryption fails, it is more secure not to return any // information about the cause in nested exceptions. Simply fail. throw new EncryptionOperationNotPossibleException(); @@ -943,39 +999,57 @@ System.arraycopy(encryptedMessage, saltStart, salt, 0, saltSize); System.arraycopy(encryptedMessage, encMesKernelStart, encryptedMessageKernel, 0, encMesKernelSize); - } else { + } else if (!this.usingFixedSalt){ salt = this.saltGenerator.generateSalt(this.saltSizeBytes); encryptedMessageKernel = encryptedMessage; + } else { + // this.usingFixedSalt == true + + salt = this.fixedSaltInUse; + encryptedMessageKernel = encryptedMessage; + } - - /* - * Perform decryption using the Cipher - */ - final PBEParameterSpec parameterSpec = - new PBEParameterSpec(salt, this.keyObtentionIterations); - byte[] decryptedMessage = null; - - synchronized (this.decryptCipher) { - this.decryptCipher.init( - Cipher.DECRYPT_MODE, this.key, parameterSpec); - decryptedMessage = - this.decryptCipher.doFinal(encryptedMessageKernel); - } + final byte[] decryptedMessage; + if (this.usingFixedSalt) { + + /* + * Fixed salt is being used, therefore no initialization supposedly needed + */ + synchronized (this.decryptCipher) { + decryptedMessage = + this.decryptCipher.doFinal(encryptedMessageKernel); + } + + } else { + + /* + * Perform decryption using the Cipher + */ + final PBEParameterSpec parameterSpec = + new PBEParameterSpec(salt, this.keyObtentionIterations); + + synchronized (this.decryptCipher) { + this.decryptCipher.init( + Cipher.DECRYPT_MODE, this.key, parameterSpec); + decryptedMessage = + this.decryptCipher.doFinal(encryptedMessageKernel); + } + } + // Return the results return decryptedMessage; - - } catch (InvalidKeyException e) { + } catch (final InvalidKeyException e) { // The problem could be not having the unlimited strength policies // installed, so better give a usefull error message. handleInvalidKeyException(e); throw new EncryptionOperationNotPossibleException(); - } catch (Exception e) { + } catch (final Exception e) { // If decryption fails, it is more secure not to return any // information about the cause in nested exceptions. Simply fail. throw new EncryptionOperationNotPossibleException(); @@ -991,7 +1065,7 @@ * message for this is simply "invalid key size", which does not provide * enough clues for the user to know what is really going on). */ - private void handleInvalidKeyException(InvalidKeyException e) { + private void handleInvalidKeyException(final InvalidKeyException e) { if ((e.getMessage() != null) && ((e.getMessage().toUpperCase().indexOf("KEY SIZE") != -1))) { diff -Nru jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.java 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.java 2011-12-08 02:15:37.000000000 +0000 @@ -217,7 +217,7 @@ /* * Creates a new instance of StandardPBEStringEncryptor using - * the specified byte digester (constructor used for cloning) + * the specified byte encryptor (constructor used for cloning) */ private StandardPBEStringEncryptor(final StandardPBEByteEncryptor standardPBEByteEncryptor) { super(); @@ -446,6 +446,7 @@ this.stringOutputType = CommonUtils. getStandardStringOutputType(stringOutputType); + this.stringOutputTypeSet = true; } @@ -468,14 +469,16 @@ final StandardPBEByteEncryptor[] byteEncryptorClones = this.byteEncryptor.cloneAndInitializeEncryptor(size); + initializeSpecifics(); + final StandardPBEStringEncryptor[] clones = new StandardPBEStringEncryptor[size]; - for (int i = 0; i < size; i++) { + clones[0] = this; + + for (int i = 1; i < size; i++) { clones[i] = new StandardPBEStringEncryptor(byteEncryptorClones[i]); - if (i > 0) { - if (CommonUtils.isNotEmpty(this.stringOutputType)) { - clones[i].setStringOutputType(this.stringOutputType); - } + if (CommonUtils.isNotEmpty(this.stringOutputType)) { + clones[i].setStringOutputType(this.stringOutputType); } } @@ -546,30 +549,35 @@ // Double-check to avoid synchronization issues if (!this.isInitialized()) { + initializeSpecifics(); + this.byteEncryptor.initialize(); + } - /* - * If a StringPBEConfig object has been set, we need to - * consider the values it returns (if, for each value, the - * corresponding "setX" method has not been called). - */ - if (this.stringPBEConfig != null) { - - final String configStringOutputType = - this.stringPBEConfig.getStringOutputType(); - - this.stringOutputType = - ((this.stringOutputTypeSet) || (configStringOutputType == null))? - this.stringOutputType : configStringOutputType; - - } + } + + + + + private void initializeSpecifics() { + /* + * If a StringPBEConfig object has been set, we need to + * consider the values it returns (if, for each value, the + * corresponding "setX" method has not been called). + */ + if (this.stringPBEConfig != null) { - this.stringOutputTypeBase64 = - (CommonUtils.STRING_OUTPUT_TYPE_BASE64. - equalsIgnoreCase(this.stringOutputType)); + final String configStringOutputType = + this.stringPBEConfig.getStringOutputType(); + + this.stringOutputType = + ((this.stringOutputTypeSet) || (configStringOutputType == null))? + this.stringOutputType : configStringOutputType; - this.byteEncryptor.initialize(); - } + + this.stringOutputTypeBase64 = + (CommonUtils.STRING_OUTPUT_TYPE_BASE64. + equalsIgnoreCase(this.stringOutputType)); } diff -Nru jasypt-1.8/src/main/java/org/jasypt/exceptions/PasswordAlreadyCleanedException.java jasypt-1.9.2/src/main/java/org/jasypt/exceptions/PasswordAlreadyCleanedException.java --- jasypt-1.8/src/main/java/org/jasypt/exceptions/PasswordAlreadyCleanedException.java 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/exceptions/PasswordAlreadyCleanedException.java 2011-12-08 10:03:24.000000000 +0000 @@ -39,7 +39,9 @@ super("Password already cleaned: The encryptor that uses this password has " + "already been initialized and therefore this password has been cleaned so "+ "that it is no more present in memory. An exception has been raised when accessing " + - "this property in order to avoid inconsistencies."); + "this property in order to avoid inconsistencies. A possible reason for this error " + + "is that you are using the same PBEConfig object to configure two different " + + "PBE encryptor instances."); } } diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.connectionprovider; - -import java.util.Properties; - -import org.hibernate.cfg.Environment; -import org.hibernate.connection.C3P0ConnectionProvider; -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.properties.PropertyValueEncryptionUtils; - -/** - * - *

- * Extension of {@link C3P0ConnectionProvider} that allows the user - * to write the datasource configuration parameters in an encrypted manner in the - * hibernate.cfg.xml or hibernate.properties file - *

- *

- * The encryptable parameters are: - *

    - *
  • connection.driver_class
  • - *
  • connection.url
  • - *
  • connection.username
  • - *
  • connection.password
  • - *
- *

- *

- * The name of the password encryptor (decryptor, in fact) will be set in - * property hibernate.connection.encryptor_registered_name. - * Its value must be the name of a {@link PBEStringEncryptor} object - * previously registered within {@link HibernatePBEEncryptorRegistry}. - *

- *

- * An example hibernate.cfg.xml file: - *

- *

- *

- *  <hibernate-configuration>
- *
- *    <session-factory>
- *
- *      
- *      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider</property>
- *      <property name="connection.encryptor_registered_name">stringEncryptor</property>
- *      <property name="connection.driver_class">org.postgresql.Driver</property>
- *      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
- *      <property name="connection.username">myuser</property>
- *      <property name="connection.password">ENC(T6DAe34NasW==)</property>
- *      <property name="c3p0.min_size">5</property>
- *      <property name="c3p0.max_size">20</property>
- *      <property name="c3p0.timeout">1800</property>
- *      <property name="c3p0.max_statements">50</property>
- *      ...
- *      
- *    </session-factory>
- *    
- *    ...
- *    
- *  </hibernate-configuration>
- * 
- *

- * - * @since 1.4 - * - * @author Daniel Fernández - * - */ -public final class EncryptedPasswordC3P0ConnectionProvider - extends C3P0ConnectionProvider { - - - public EncryptedPasswordC3P0ConnectionProvider() { - super(); - } - - - public void configure(final Properties props) { - - final String encryptorRegisteredName = - props.getProperty(ParameterNaming.ENCRYPTOR_REGISTERED_NAME); - - final HibernatePBEEncryptorRegistry encryptorRegistry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEStringEncryptor encryptor = - encryptorRegistry.getPBEStringEncryptor(encryptorRegisteredName); - - if (encryptor == null) { - throw new EncryptionInitializationException( - "No string encryptor registered for hibernate " + - "with name \"" + encryptorRegisteredName + "\""); - } - - // Get the original values, which may be encrypted - final String driver = props.getProperty(Environment.DRIVER); - final String url = props.getProperty(Environment.URL); - final String user = props.getProperty(Environment.USER); - final String password = props.getProperty(Environment.PASS); - - // Perform decryption operations as needed and store the new values - if (PropertyValueEncryptionUtils.isEncryptedValue(driver)) { - props.setProperty( - Environment.DRIVER, - PropertyValueEncryptionUtils.decrypt(driver, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(url)) { - props.setProperty( - Environment.URL, - PropertyValueEncryptionUtils.decrypt(url, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(user)) { - props.setProperty( - Environment.USER, - PropertyValueEncryptionUtils.decrypt(user, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(password)) { - props.setProperty( - Environment.PASS, - PropertyValueEncryptionUtils.decrypt(password, encryptor)); - } - - // Let Hibernate do the rest - super.configure(props); - - } - - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.connectionprovider; - -import java.util.Properties; - -import org.hibernate.cfg.Environment; -import org.hibernate.connection.DriverManagerConnectionProvider; -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.properties.PropertyValueEncryptionUtils; - -/** - * - *

- * Extension of {@link DriverManagerConnectionProvider} that allows the user - * to write the datasource configuration parameters in an encrypted manner in the - * hibernate.cfg.xml or hibernate.properties file - *

- *

- * The encryptable parameters are: - *

    - *
  • connection.driver_class
  • - *
  • connection.url
  • - *
  • connection.username
  • - *
  • connection.password
  • - *
- *

- *

- * The name of the password encryptor (decryptor, in fact) will be set in - * property hibernate.connection.encryptor_registered_name. - * Its value must be the name of a {@link PBEStringEncryptor} object - * previously registered within {@link HibernatePBEEncryptorRegistry}. - *

- *

- * An example hibernate.cfg.xml file: - *

- *

- *

- *  <hibernate-configuration>
- *
- *    <session-factory>
- *
- *      <!-- Database connection settings -->
- *      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
- *      <property name="connection.encryptor_registered_name">stringEncryptor</property>
- *      <property name="connection.driver_class">org.postgresql.Driver</property>
- *      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
- *      <property name="connection.username">myuser</property>
- *      <property name="connection.password">ENC(T6DAe34NasW==)</property>
- *      <property name="connection.pool_size">5</property>
- *      
- *      ...
- *      
- *    </session-factory>
- *    
- *    ...
- *    
- *  </hibernate-configuration>
- * 
- *

- * - * @since 1.4 - * - * @author Daniel Fernández - * - */ -public final class EncryptedPasswordDriverManagerConnectionProvider - extends DriverManagerConnectionProvider { - - - public EncryptedPasswordDriverManagerConnectionProvider() { - super(); - } - - - public void configure(final Properties props) { - - final String encryptorRegisteredName = - props.getProperty(ParameterNaming.ENCRYPTOR_REGISTERED_NAME); - - final HibernatePBEEncryptorRegistry encryptorRegistry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEStringEncryptor encryptor = - encryptorRegistry.getPBEStringEncryptor(encryptorRegisteredName); - - if (encryptor == null) { - throw new EncryptionInitializationException( - "No string encryptor registered for hibernate " + - "with name \"" + encryptorRegisteredName + "\""); - } - - // Get the original values, which may be encrypted - final String driver = props.getProperty(Environment.DRIVER); - final String url = props.getProperty(Environment.URL); - final String user = props.getProperty(Environment.USER); - final String password = props.getProperty(Environment.PASS); - - // Perform decryption operations as needed and store the new values - if (PropertyValueEncryptionUtils.isEncryptedValue(driver)) { - props.setProperty( - Environment.DRIVER, - PropertyValueEncryptionUtils.decrypt(driver, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(url)) { - props.setProperty( - Environment.URL, - PropertyValueEncryptionUtils.decrypt(url, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(user)) { - props.setProperty( - Environment.USER, - PropertyValueEncryptionUtils.decrypt(user, encryptor)); - } - if (PropertyValueEncryptionUtils.isEncryptedValue(password)) { - props.setProperty( - Environment.PASS, - PropertyValueEncryptionUtils.decrypt(password, encryptor)); - } - - // Let Hibernate process - super.configure(props); - - } - - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/ParameterNaming.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/ParameterNaming.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/connectionprovider/ParameterNaming.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/connectionprovider/ParameterNaming.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.connectionprovider; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; - - - -/** - *

- * Constant names of the parameters that can be used by a jasypt's - * Hibernate connection provider. - *

- * - * @since 1.4 - * - * @author Daniel Fernández - * - */ -public final class ParameterNaming { - - - /** - * Property in hibernate.cfg.xml or - * hibernate.properties which contains the registered name - * (in {@link HibernatePBEEncryptorRegistry}) of the encryptor which - * will be used to decrypt the datasource parameters. - */ - public static final String ENCRYPTOR_REGISTERED_NAME = - "hibernate.connection.encryptor_registered_name"; - - - private ParameterNaming() { - super(); - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.java 2011-07-25 12:47:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,350 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.encryptor; - -import java.math.BigDecimal; - -import org.jasypt.encryption.pbe.PBEBigDecimalEncryptor; -import org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor; -import org.jasypt.encryption.pbe.config.PBEConfig; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.salt.SaltGenerator; - -/** - *

- * Placeholder class for PBEBigDecimalEncryptor objects which are - * eligible for use from Hibernate. - *

- *

- * This class acts as a wrapper on a PBEBigDecimalEncryptor, allowing - * to be set a registered name (see {@link #setRegisteredName(String)}) - * and performing the needed registry operations against the - * {@link HibernatePBEEncryptorRegistry}. - *

- *

- * It is not mandatory that a PBEBigDecimalEncryptor be explicitly set - * with {@link #setEncryptor(PBEBigDecimalEncryptor)}. If not, a - * StandardPBEBigDecimalEncryptor object will be created internally - * and it will be configurable with the - * {@link #setPassword(String)}/{@link #setPasswordCharArray(char[])}, - * {@link #setAlgorithm(String)}, {@link #setKeyObtentionIterations(int)}, - * {@link #setSaltGenerator(SaltGenerator)} - * and {@link #setConfig(PBEConfig)} methods. - *

- *

- * This class is mainly intended for use from Spring Framework or some other - * IoC container (if you are not using a container of this kind, please see - * {@link HibernatePBEEncryptorRegistry}). The steps to be performed are - * the following: - *

    - *
  1. Create an object of this class (declaring it).
  2. - *
  3. Set its registeredName and, either its - * wrapped encryptor or its password, - * algorithm, keyObtentionIterations, - * saltGenerator and config properties.
  4. - *
  5. Declare a typedef in a Hibernate mapping giving its - * encryptorRegisteredName parameter the same value specified - * to this object in registeredName.
  6. - *
- *

- *

- * This in a Spring config file would look like: - *

- *

- *

 
- *  ...
- *  <-- Optional, as the hibernateEncryptor could be directly set an     -->
- *  <-- algorithm and password.                                          -->
- *  <bean id="bigDecimalEncryptor"
- *    class="org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor">
- *    <property name="algorithm">
- *        <value>PBEWithMD5AndDES</value>
- *    </property>
- *    <property name="password">
- *        <value>XXXXX</value>
- *    </property>
- *  </bean>
- *  
- *  <bean id="hibernateEncryptor"
- *    class="org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor">
- *    <property name="registeredName">
- *        <value>myHibernateBigDecimalEncryptor</value>
- *    </property>
- *    <property name="encryptor">
- *        <ref bean="bigDecimalEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- * 
- *

- *

- * And then in the Hibernate mapping file: - *

- *

- *

- *    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
- *      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
- *      <param name="decimalScale">2</param>
- *    </typedef>
- * 
- *

- *

- * An important thing to note is that, when using HibernatePBEBigDecimalEncryptor - * objects this way to wrap PBEBigDecimalEncryptors, it is not - * necessary to deal with {@link HibernatePBEEncryptorRegistry}, - * because HibernatePBEBigDecimalEncryptor objects get automatically registered - * in the encryptor registry when their {@link #setRegisteredName(String)} - * method is called. - *

- * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class HibernatePBEBigDecimalEncryptor { - - private String registeredName = null; - private PBEBigDecimalEncryptor encryptor = null; - private boolean encryptorSet = false; - - - - /** - * Creates a new instance of HibernatePBEBigDecimalEncryptor It also - * creates a StandardPBEBigDecimalEncryptor for internal use, which - * can be overriden by calling setEncryptor(...). - */ - public HibernatePBEBigDecimalEncryptor() { - super(); - this.encryptor = new StandardPBEBigDecimalEncryptor(); - this.encryptorSet = false; - } - - - /* - * For internal use only, by the Registry, when a PBEBigDecimalEncryptor - * is registered programmatically. - */ - HibernatePBEBigDecimalEncryptor(final String registeredName, - final PBEBigDecimalEncryptor encryptor) { - this.encryptor = encryptor; - this.registeredName = registeredName; - this.encryptorSet = true; - } - - - /** - * Returns the encryptor which this object wraps. - * - * @return the encryptor. - */ - public PBEBigDecimalEncryptor getEncryptor() { - return this.encryptor; - } - - - /** - * Sets the PBEBigDecimalEncryptor to be held (wrapped) by this - * object. This method is optional and can be only called once. - * - * @param encryptor the encryptor. - */ - public void setEncryptor(final PBEBigDecimalEncryptor encryptor) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - this.encryptor = encryptor; - this.encryptorSet = true; - } - - - /** - * Sets the password to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param password the password to be set for the internal encryptor - */ - public void setPassword(final String password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setPassword(password); - } - - - /** - * Sets the password to be used by the internal encryptor (as a char[]), if a specific - * encryptor has not been set with setEncryptor(...). - * - * @since 1.8 - * @param password the password to be set for the internal encryptor - */ - public void setPasswordCharArray(final char[] password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setPasswordCharArray(password); - } - - - /** - * Sets the algorithm to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param algorithm the algorithm to be set for the internal encryptor - */ - public void setAlgorithm(final String algorithm) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setAlgorithm(algorithm); - } - - - /** - * Sets the key obtention iterations to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param keyObtentionIterations to be set for the internal encryptor - */ - public void setKeyObtentionIterations(final int keyObtentionIterations) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setKeyObtentionIterations( - keyObtentionIterations); - } - - - /** - * Sets the salt generator to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param saltGenerator the salt generator to be set for the internal - * encryptor. - */ - public void setSaltGenerator(final SaltGenerator saltGenerator) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setSaltGenerator(saltGenerator); - } - - - /** - * Sets the PBEConfig to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param config the PBEConfig to be set for the internal encryptor - */ - public void setConfig(final PBEConfig config) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigDecimalEncryptor standardPBEBigDecimalEncryptor = - (StandardPBEBigDecimalEncryptor) this.encryptor; - standardPBEBigDecimalEncryptor.setConfig(config); - } - - - /** - * Encrypts a message, delegating to wrapped encryptor. - * - * @param message the message to be encrypted. - * @return the encryption result. - */ - public BigDecimal encrypt(final BigDecimal message) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.encrypt(message); - } - - - /** - * Decypts a message, delegating to wrapped encryptor - * - * @param encryptedMessage the message to be decrypted. - * @return the result of decryption. - */ - public BigDecimal decrypt(final BigDecimal encryptedMessage) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.decrypt(encryptedMessage); - } - - - - /** - * Sets the registered name of the encryptor and adds it to the registry. - * - * @param registeredName the name with which the encryptor will be - * registered. - */ - public void setRegisteredName(final String registeredName) { - if (this.registeredName != null) { - // It had another name before, we have to clean - HibernatePBEEncryptorRegistry.getInstance(). - unregisterHibernatePBEBigDecimalEncryptor(this.registeredName); - } - this.registeredName = registeredName; - HibernatePBEEncryptorRegistry.getInstance(). - registerHibernatePBEBigDecimalEncryptor(this); - } - - /** - * Returns the name with which the wrapped encryptor is registered at - * the registry. - * - * @return the registered name. - */ - public String getRegisteredName() { - return this.registeredName; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.java 2011-07-25 12:47:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,349 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.encryptor; - -import java.math.BigInteger; - -import org.jasypt.encryption.pbe.PBEBigIntegerEncryptor; -import org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor; -import org.jasypt.encryption.pbe.config.PBEConfig; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.salt.SaltGenerator; - -/** - *

- * Placeholder class for PBEBigIntegerEncryptor objects which are - * eligible for use from Hibernate. - *

- *

- * This class acts as a wrapper on a PBEBigIntegerEncryptor, allowing - * to be set a registered name (see {@link #setRegisteredName(String)}) - * and performing the needed registry operations against the - * {@link HibernatePBEEncryptorRegistry}. - *

- *

- * It is not mandatory that a PBEBigIntegerEncryptor be explicitly set - * with {@link #setEncryptor(PBEBigIntegerEncryptor)}. If not, a - * StandardPBEBigIntegerEncryptor object will be created internally - * and it will be configurable with the - * {@link #setPassword(String)}/{@link #setPasswordCharArray(char[])}, - * {@link #setAlgorithm(String)}, {@link #setKeyObtentionIterations(int)}, - * {@link #setSaltGenerator(SaltGenerator)} - * and {@link #setConfig(PBEConfig)} methods. - *

- *

- * This class is mainly intended for use from Spring Framework or some other - * IoC container (if you are not using a container of this kind, please see - * {@link HibernatePBEEncryptorRegistry}). The steps to be performed are - * the following: - *

    - *
  1. Create an object of this class (declaring it).
  2. - *
  3. Set its registeredName and, either its - * wrapped encryptor or its password, - * algorithm, keyObtentionIterations, - * saltGenerator and config properties.
  4. - *
  5. Declare a typedef in a Hibernate mapping giving its - * encryptorRegisteredName parameter the same value specified - * to this object in registeredName.
  6. - *
- *

- *

- * This in a Spring config file would look like: - *

- *

- *

 
- *  ...
- *  <-- Optional, as the hibernateEncryptor could be directly set an     -->
- *  <-- algorithm and password.                                          -->
- *  <bean id="bigIntegerEncryptor"
- *    class="org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor">
- *    <property name="algorithm">
- *        <value>PBEWithMD5AndDES</value>
- *    </property>
- *    <property name="password">
- *        <value>XXXXX</value>
- *    </property>
- *  </bean>
- *  
- *  <bean id="hibernateEncryptor"
- *    class="org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor">
- *    <property name="registeredName">
- *        <value>myHibernateBigIntegerEncryptor</value>
- *    </property>
- *    <property name="encryptor">
- *        <ref bean="bigIntegerEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- * 
- *

- *

- * And then in the Hibernate mapping file: - *

- *

- *

- *    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
- *      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
- *    </typedef>
- * 
- *

- *

- * An important thing to note is that, when using HibernatePBEBigIntegerEncryptor - * objects this way to wrap PBEBigIntegerEncryptors, it is not - * necessary to deal with {@link HibernatePBEEncryptorRegistry}, - * because HibernatePBEBigIntegerEncryptor objects get automatically registered - * in the encryptor registry when their {@link #setRegisteredName(String)} - * method is called. - *

- * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class HibernatePBEBigIntegerEncryptor { - - private String registeredName = null; - private PBEBigIntegerEncryptor encryptor = null; - private boolean encryptorSet = false; - - - - /** - * Creates a new instance of HibernatePBEBigIntegerEncryptor It also - * creates a StandardPBEBigIntegerEncryptor for internal use, which - * can be overriden by calling setEncryptor(...). - */ - public HibernatePBEBigIntegerEncryptor() { - super(); - this.encryptor = new StandardPBEBigIntegerEncryptor(); - this.encryptorSet = false; - } - - - /* - * For internal use only, by the Registry, when a PBEBigIntegerEncryptor - * is registered programmatically. - */ - HibernatePBEBigIntegerEncryptor(final String registeredName, - final PBEBigIntegerEncryptor encryptor) { - this.encryptor = encryptor; - this.registeredName = registeredName; - this.encryptorSet = true; - } - - - /** - * Returns the encryptor which this object wraps. - * - * @return the encryptor. - */ - public PBEBigIntegerEncryptor getEncryptor() { - return this.encryptor; - } - - - /** - * Sets the PBEBigIntegerEncryptor to be held (wrapped) by this - * object. This method is optional and can be only called once. - * - * @param encryptor the encryptor. - */ - public void setEncryptor(final PBEBigIntegerEncryptor encryptor) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - this.encryptor = encryptor; - this.encryptorSet = true; - } - - - /** - * Sets the password to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param password the password to be set for the internal encryptor - */ - public void setPassword(final String password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setPassword(password); - } - - - /** - * Sets the password to be used by the internal encryptor (as a char[]), if a specific - * encryptor has not been set with setEncryptor(...). - * - * @since 1.8 - * @param password the password to be set for the internal encryptor - */ - public void setPasswordCharArray(final char[] password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setPasswordCharArray(password); - } - - - /** - * Sets the algorithm to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param algorithm the algorithm to be set for the internal encryptor - */ - public void setAlgorithm(final String algorithm) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setAlgorithm(algorithm); - } - - - /** - * Sets the key obtention iterations to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param keyObtentionIterations to be set for the internal encryptor - */ - public void setKeyObtentionIterations(final int keyObtentionIterations) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setKeyObtentionIterations( - keyObtentionIterations); - } - - - /** - * Sets the salt generator to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param saltGenerator the salt generator to be set for the internal - * encryptor. - */ - public void setSaltGenerator(final SaltGenerator saltGenerator) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setSaltGenerator(saltGenerator); - } - - - /** - * Sets the PBEConfig to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param config the PBEConfig to be set for the internal encryptor - */ - public void setConfig(final PBEConfig config) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEBigIntegerEncryptor standardPBEBigIntegerEncryptor = - (StandardPBEBigIntegerEncryptor) this.encryptor; - standardPBEBigIntegerEncryptor.setConfig(config); - } - - - /** - * Encrypts a message, delegating to wrapped encryptor. - * - * @param message the message to be encrypted. - * @return the encryption result. - */ - public BigInteger encrypt(final BigInteger message) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.encrypt(message); - } - - - /** - * Decypts a message, delegating to wrapped encryptor - * - * @param encryptedMessage the message to be decrypted. - * @return the result of decryption. - */ - public BigInteger decrypt(final BigInteger encryptedMessage) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.decrypt(encryptedMessage); - } - - - - /** - * Sets the registered name of the encryptor and adds it to the registry. - * - * @param registeredName the name with which the encryptor will be - * registered. - */ - public void setRegisteredName(final String registeredName) { - if (this.registeredName != null) { - // It had another name before, we have to clean - HibernatePBEEncryptorRegistry.getInstance(). - unregisterHibernatePBEBigIntegerEncryptor(this.registeredName); - } - this.registeredName = registeredName; - HibernatePBEEncryptorRegistry.getInstance(). - registerHibernatePBEBigIntegerEncryptor(this); - } - - /** - * Returns the name with which the wrapped encryptor is registered at - * the registry. - * - * @return the registered name. - */ - public String getRegisteredName() { - return this.registeredName; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.java 2011-07-25 12:47:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,347 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.encryptor; - -import org.jasypt.encryption.pbe.PBEByteEncryptor; -import org.jasypt.encryption.pbe.StandardPBEByteEncryptor; -import org.jasypt.encryption.pbe.config.PBEConfig; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.salt.SaltGenerator; - -/** - *

- * Placeholder class for PBEByteEncryptor objects which are - * eligible for use from Hibernate. - *

- *

- * This class acts as a wrapper on a PBEByteEncryptor, allowing - * to be set a registered name (see {@link #setRegisteredName(String)}) - * and performing the needed registry operations against the - * {@link HibernatePBEEncryptorRegistry}. - *

- *

- * It is not mandatory that a PBEByteEncryptor be explicitly set - * with {@link #setEncryptor(PBEByteEncryptor)}. If not, a - * StandardPBEByteEncryptor object will be created internally - * and it will be configurable with the - * {@link #setPassword(String)}/{@link #setPasswordCharArray(char[])}, - * {@link #setAlgorithm(String)}, {@link #setKeyObtentionIterations(int)}, - * {@link #setSaltGenerator(SaltGenerator)} - * and {@link #setConfig(PBEConfig)} methods. - *

- *

- * This class is mainly intended for use from Spring Framework or some other - * IoC container (if you are not using a container of this kind, please see - * {@link HibernatePBEEncryptorRegistry}). The steps to be performed are - * the following: - *

    - *
  1. Create an object of this class (declaring it).
  2. - *
  3. Set its registeredName and, either its - * wrapped encryptor or its password, - * algorithm, keyObtentionIterations, - * saltGenerator and config properties.
  4. - *
  5. Declare a typedef in a Hibernate mapping giving its - * encryptorRegisteredName parameter the same value specified - * to this object in registeredName.
  6. - *
- *

- *

- * This in a Spring config file would look like: - *

- *

- *

 
- *  ...
- *  <-- Optional, as the hibernateEncryptor could be directly set an     -->
- *  <-- algorithm and password.                                          -->
- *  <bean id="byteEncryptor"
- *    class="org.jasypt.encryption.pbe.StandardPBEByteEncryptor">
- *    <property name="algorithm">
- *        <value>PBEWithMD5AndDES</value>
- *    </property>
- *    <property name="password">
- *        <value>XXXXX</value>
- *    </property>
- *  </bean>
- *  
- *  <bean id="hibernateEncryptor"
- *    class="org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor">
- *    <property name="registeredName">
- *        <value>myHibernateByteEncryptor</value>
- *    </property>
- *    <property name="encryptor">
- *        <ref bean="byteEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- * 
- *

- *

- * And then in the Hibernate mapping file: - *

- *

- *

- *    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBinaryType">
- *      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
- *    </typedef>
- * 
- *

- *

- * An important thing to note is that, when using HibernatePBEByteEncryptor - * objects this way to wrap PBEByteEncryptors, it is not - * necessary to deal with {@link HibernatePBEEncryptorRegistry}, - * because HibernatePBEByteEncryptor objects get automatically registered - * in the encryptor registry when their {@link #setRegisteredName(String)} - * method is called. - *

- * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class HibernatePBEByteEncryptor { - - private String registeredName = null; - private PBEByteEncryptor encryptor = null; - private boolean encryptorSet = false; - - - - /** - * Creates a new instance of HibernatePBEByteEncryptor It also - * creates a StandardPBEByteEncryptor for internal use, which - * can be overriden by calling setEncryptor(...). - */ - public HibernatePBEByteEncryptor() { - super(); - this.encryptor = new StandardPBEByteEncryptor(); - this.encryptorSet = false; - } - - - /* - * For internal use only, by the Registry, when a PBEByteEncryptor - * is registered programmatically. - */ - HibernatePBEByteEncryptor(final String registeredName, - final PBEByteEncryptor encryptor) { - this.encryptor = encryptor; - this.registeredName = registeredName; - this.encryptorSet = true; - } - - - /** - * Returns the encryptor which this object wraps. - * - * @return the encryptor. - */ - public PBEByteEncryptor getEncryptor() { - return this.encryptor; - } - - - /** - * Sets the PBEByteEncryptor to be held (wrapped) by this - * object. This method is optional and can be only called once. - * - * @param encryptor the encryptor. - */ - public void setEncryptor(final PBEByteEncryptor encryptor) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - this.encryptor = encryptor; - this.encryptorSet = true; - } - - - /** - * Sets the password to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param password the password to be set for the internal encryptor - */ - public void setPassword(final String password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setPassword(password); - } - - - /** - * Sets the password to be used by the internal encryptor (as a char[]), if a specific - * encryptor has not been set with setEncryptor(...). - * - * @since 1.8 - * @param password the password to be set for the internal encryptor - */ - public void setPasswordCharArray(final char[] password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setPasswordCharArray(password); - } - - - /** - * Sets the algorithm to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param algorithm the algorithm to be set for the internal encryptor - */ - public void setAlgorithm(final String algorithm) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setAlgorithm(algorithm); - } - - - /** - * Sets the key obtention iterations to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param keyObtentionIterations to be set for the internal encryptor - */ - public void setKeyObtentionIterations(final int keyObtentionIterations) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setKeyObtentionIterations( - keyObtentionIterations); - } - - - /** - * Sets the salt generator to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param saltGenerator the salt generator to be set for the internal - * encryptor. - */ - public void setSaltGenerator(final SaltGenerator saltGenerator) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setSaltGenerator(saltGenerator); - } - - - /** - * Sets the PBEConfig to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param config the PBEConfig to be set for the internal encryptor - */ - public void setConfig(final PBEConfig config) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEByteEncryptor standardPBEByteEncryptor = - (StandardPBEByteEncryptor) this.encryptor; - standardPBEByteEncryptor.setConfig(config); - } - - - /** - * Encrypts a message, delegating to wrapped encryptor. - * - * @param message the message to be encrypted. - * @return the encryption result. - */ - public byte[] encrypt(final byte[] message) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.encrypt(message); - } - - - /** - * Decypts a message, delegating to wrapped encryptor - * - * @param encryptedMessage the message to be decrypted. - * @return the result of decryption. - */ - public byte[] decrypt(final byte[] encryptedMessage) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.decrypt(encryptedMessage); - } - - - - /** - * Sets the registered name of the encryptor and adds it to the registry. - * - * @param registeredName the name with which the encryptor will be - * registered. - */ - public void setRegisteredName(final String registeredName) { - if (this.registeredName != null) { - // It had another name before, we have to clean - HibernatePBEEncryptorRegistry.getInstance(). - unregisterHibernatePBEByteEncryptor(this.registeredName); - } - this.registeredName = registeredName; - HibernatePBEEncryptorRegistry.getInstance(). - registerHibernatePBEByteEncryptor(this); - } - - /** - * Returns the name with which the wrapped encryptor is registered at - * the registry. - * - * @return the registered name. - */ - public String getRegisteredName() { - return this.registeredName; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.java 2010-10-16 18:38:01.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,341 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.encryptor; - -import java.util.HashMap; - -import org.jasypt.encryption.pbe.PBEBigDecimalEncryptor; -import org.jasypt.encryption.pbe.PBEBigIntegerEncryptor; -import org.jasypt.encryption.pbe.PBEByteEncryptor; -import org.jasypt.encryption.pbe.PBEStringEncryptor; - -/** - *

- * Registry for all the PBE*Encryptor which are eligible for - * use from Hibernate. - *

- *

- * This class is intended to be directly used in applications where - * an IoC container (like Spring Framework) is not present. If it is, - * it is better to use the HibernatePBE*Encryptor classes - * directly, instead. - *

- *

- * This registry is a singleton which maintains a registry - * of PBE*Encryptor objects which can be used from Hibernate, - * by using its registeredName to reference them from mappings. - *

- *

- * The steps would be: - *

    - *
  1. Obtain the registry instance ({@link #getInstance()}).
  2. - *
  3. Register the encryptor, giving it a registered name - * (registerPBE*Encryptor(String, PBE*Encryptor).
  4. - *
  5. Declare a typedef in a Hibernate mapping giving its - * encryptorRegisteredName parameter the same value specified - * when registering the encryptor.
  6. - *
- *

- *

- * This is, first register the encryptor (example with a String encryptor): - *

- *

- *

- *  StandardPBEStringEncryptor myEncryptor = new StandardPBEStringEncryptor();
- *  ...
- *  HibernatePBEEncryptorRegistry registry =
- *      HibernatePBEEncryptorRegistry.getInstance();
- *  registry.registerPBEStringEncryptor("myHibernateEncryptor", myEncryptor);
- * 
- *

- *

- * And then, reference it from a Hibernate mapping file: - *

- *

- *

- *    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
- *      <param name="encryptorRegisteredName">myHibernateEncryptor</param>
- *    </typedef>
- * 
- *

- * - * - * @since 1.2 (class existed as - * org.jasypt.hibernate.HibernatePBEEncryptorRegistry since 1.0) - * - * @author Daniel Fernández - * - */ -public final class HibernatePBEEncryptorRegistry { - - - // The singleton instance - private static final HibernatePBEEncryptorRegistry instance = - new HibernatePBEEncryptorRegistry(); - - - // Registry maps - private final HashMap stringEncryptors = new HashMap(); - private final HashMap bigIntegerEncryptors = new HashMap(); - private final HashMap bigDecimalEncryptors = new HashMap(); - private final HashMap byteEncryptors = new HashMap(); - - - /** - * Returns the singleton instance of the registry. - * - * @return the registry. - */ - public static HibernatePBEEncryptorRegistry getInstance() { - return instance; - } - - // The registry cannot be externally instantiated. - private HibernatePBEEncryptorRegistry() { - super(); - } - - - /** - * Registers a PBEStringEncryptor object with the specified - * name. - * - * @param registeredName the registered name. - * @param encryptor the encryptor to be registered. - */ - public synchronized void registerPBEStringEncryptor( - final String registeredName, final PBEStringEncryptor encryptor) { - final HibernatePBEStringEncryptor hibernateEncryptor = - new HibernatePBEStringEncryptor(registeredName, encryptor); - this.stringEncryptors.put(registeredName, hibernateEncryptor); - } - - - - // Not public: this is used from - // HibernatePBEStringEncryptor.setRegisteredName. - synchronized void registerHibernatePBEStringEncryptor( - final HibernatePBEStringEncryptor hibernateEncryptor) { - this.stringEncryptors.put( - hibernateEncryptor.getRegisteredName(), - hibernateEncryptor); - } - - - // Not public: this is used from - // HibernatePBEStringEncryptor.setRegisteredName. - synchronized void unregisterHibernatePBEStringEncryptor(final String name) { - this.stringEncryptors.remove(name); - } - - - /** - * Returns the PBEStringEncryptor registered with the specified - * name (if exists). - * - * @param registeredName the name with which the desired encryptor was - * registered. - * @return the encryptor, or null if no encryptor has been registered with - * that name. - */ - public synchronized PBEStringEncryptor getPBEStringEncryptor( - final String registeredName) { - final HibernatePBEStringEncryptor hibernateEncryptor = - (HibernatePBEStringEncryptor) this.stringEncryptors.get(registeredName); - if (hibernateEncryptor == null) { - return null; - } - return hibernateEncryptor.getEncryptor(); - } - - - - - /** - * Registers a PBEBigIntegerEncryptor object with the specified - * name. - * - * @since 1.6 - * - * @param registeredName the registered name. - * @param encryptor the encryptor to be registered. - */ - public synchronized void registerPBEBigIntegerEncryptor( - final String registeredName, final PBEBigIntegerEncryptor encryptor) { - final HibernatePBEBigIntegerEncryptor hibernateEncryptor = - new HibernatePBEBigIntegerEncryptor(registeredName, encryptor); - this.bigIntegerEncryptors.put(registeredName, hibernateEncryptor); - } - - - - // Not public: this is used from - // HibernatePBEBigIntegerEncryptor.setRegisteredName. - synchronized void registerHibernatePBEBigIntegerEncryptor( - final HibernatePBEBigIntegerEncryptor hibernateEncryptor) { - this.bigIntegerEncryptors.put( - hibernateEncryptor.getRegisteredName(), - hibernateEncryptor); - } - - - // Not public: this is used from - // HibernatePBEBigIntegerEncryptor.setRegisteredName. - synchronized void unregisterHibernatePBEBigIntegerEncryptor(final String name) { - this.bigIntegerEncryptors.remove(name); - } - - - /** - * Returns the PBEBigIntegerEncryptor registered with the specified - * name (if exists). - * - * @param registeredName the name with which the desired encryptor was - * registered. - * @return the encryptor, or null if no encryptor has been registered with - * that name. - */ - public synchronized PBEBigIntegerEncryptor getPBEBigIntegerEncryptor( - final String registeredName) { - final HibernatePBEBigIntegerEncryptor hibernateEncryptor = - (HibernatePBEBigIntegerEncryptor) this.bigIntegerEncryptors.get(registeredName); - if (hibernateEncryptor == null) { - return null; - } - return hibernateEncryptor.getEncryptor(); - } - - - - /** - * Registers a PBEBigDecimalEncryptor object with the specified - * name. - * - * @since 1.6 - * - * @param registeredName the registered name. - * @param encryptor the encryptor to be registered. - */ - public synchronized void registerPBEBigDecimalEncryptor( - final String registeredName, final PBEBigDecimalEncryptor encryptor) { - final HibernatePBEBigDecimalEncryptor hibernateEncryptor = - new HibernatePBEBigDecimalEncryptor(registeredName, encryptor); - this.bigDecimalEncryptors.put(registeredName, hibernateEncryptor); - } - - - - // Not public: this is used from - // HibernatePBEBigDecimalEncryptor.setRegisteredName. - synchronized void registerHibernatePBEBigDecimalEncryptor( - final HibernatePBEBigDecimalEncryptor hibernateEncryptor) { - this.bigDecimalEncryptors.put( - hibernateEncryptor.getRegisteredName(), - hibernateEncryptor); - } - - - // Not public: this is used from - // HibernatePBEBigDecimalEncryptor.setRegisteredName. - synchronized void unregisterHibernatePBEBigDecimalEncryptor(final String name) { - this.bigDecimalEncryptors.remove(name); - } - - - /** - * Returns the PBEBigDecimalEncryptor registered with the specified - * name (if exists). - * - * @param registeredName the name with which the desired encryptor was - * registered. - * @return the encryptor, or null if no encryptor has been registered with - * that name. - */ - public synchronized PBEBigDecimalEncryptor getPBEBigDecimalEncryptor( - final String registeredName) { - final HibernatePBEBigDecimalEncryptor hibernateEncryptor = - (HibernatePBEBigDecimalEncryptor) this.bigDecimalEncryptors.get(registeredName); - if (hibernateEncryptor == null) { - return null; - } - return hibernateEncryptor.getEncryptor(); - } - - - - - - /** - * Registers a PBEByteEncryptor object with the specified - * name. - * - * @since 1.6 - * - * @param registeredName the registered name. - * @param encryptor the encryptor to be registered. - */ - public synchronized void registerPBEByteEncryptor( - final String registeredName, final PBEByteEncryptor encryptor) { - final HibernatePBEByteEncryptor hibernateEncryptor = - new HibernatePBEByteEncryptor(registeredName, encryptor); - this.byteEncryptors.put(registeredName, hibernateEncryptor); - } - - - - - - // Not public: this is used from - // HibernatePBEByteEncryptor.setRegisteredName. - synchronized void registerHibernatePBEByteEncryptor( - final HibernatePBEByteEncryptor hibernateEncryptor) { - this.byteEncryptors.put( - hibernateEncryptor.getRegisteredName(), - hibernateEncryptor); - } - - - // Not public: this is used from - // HibernatePBEByteEncryptor.setRegisteredName. - synchronized void unregisterHibernatePBEByteEncryptor(final String name) { - this.byteEncryptors.remove(name); - } - - - /** - * Returns the PBEByteEncryptor registered with the specified - * name (if exists). - * - * @param registeredName the name with which the desired encryptor was - * registered. - * @return the encryptor, or null if no encryptor has been registered with - * that name. - */ - public synchronized PBEByteEncryptor getPBEByteEncryptor( - final String registeredName) { - final HibernatePBEByteEncryptor hibernateEncryptor = - (HibernatePBEByteEncryptor) this.byteEncryptors.get(registeredName); - if (hibernateEncryptor == null) { - return null; - } - return hibernateEncryptor.getEncryptor(); - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.java 2011-07-25 12:47:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,412 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.encryptor; - -import java.security.Provider; - -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; -import org.jasypt.encryption.pbe.config.PBEConfig; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.salt.SaltGenerator; - -/** - *

- * Placeholder class for PBEStringEncryptor objects which are - * eligible for use from Hibernate. - *

- *

- * This class acts as a wrapper on a PBEStringEncryptor, allowing - * to be set a registered name (see {@link #setRegisteredName(String)}) - * and performing the needed registry operations against the - * {@link HibernatePBEEncryptorRegistry}. - *

- *

- * It is not mandatory that a PBEStringEncryptor be explicitly set - * with {@link #setEncryptor(PBEStringEncryptor)}. If not, a - * StandardPBEStringEncryptor object will be created internally - * and it will be configurable with the - * {@link #setPassword(String)}/{@link #setPasswordCharArray(char[])}, - * {@link #setAlgorithm(String)}, {@link #setKeyObtentionIterations(int)}, - * {@link #setSaltGenerator(SaltGenerator)}, {@link #setProviderName(String)}, - * {@link #setProvider(Provider)}, {@link #setStringOutputType(String)} - * and {@link #setConfig(PBEConfig)} methods. - *

- *

- * This class is mainly intended for use from Spring Framework or some other - * IoC container (if you are not using a container of this kind, please see - * {@link HibernatePBEEncryptorRegistry}). The steps to be performed are - * the following: - *

    - *
  1. Create an object of this class (declaring it).
  2. - *
  3. Set its registeredName and, either its - * wrapped encryptor or its password, - * algorithm, keyObtentionIterations, - * saltGenerator and config properties.
  4. - *
  5. Declare a typedef in a Hibernate mapping giving its - * encryptorRegisteredName parameter the same value specified - * to this object in registeredName.
  6. - *
- *

- *

- * This in a Spring config file would look like: - *

- *

- *

- *  ...
- *  <-- Optional, as the hibernateEncryptor could be directly set an     -->
- *  <-- algorithm and password.                                          -->
- *  <bean id="stringEncryptor"
- *    class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
- *    <property name="algorithm">
- *        <value>PBEWithMD5AndDES</value>
- *    </property>
- *    <property name="password">
- *        <value>XXXXX</value>
- *    </property>
- *  </bean>
- *  
- *  <bean id="hibernateEncryptor"
- *    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
- *    <property name="registeredName">
- *        <value>myHibernateStringEncryptor</value>
- *    </property>
- *    <property name="encryptor">
- *        <ref bean="stringEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- * 
- *

- *

- * And then in the Hibernate mapping file: - *

- *

- *

- *    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- * 
- *

- *

- * An important thing to note is that, when using HibernatePBEStringEncryptor - * objects this way to wrap PBEStringEncryptors, it is not - * necessary to deal with {@link HibernatePBEEncryptorRegistry}, - * because HibernatePBEStringEncryptor objects get automatically registered - * in the encryptor registry when their {@link #setRegisteredName(String)} - * method is called. - *

- * - * @since 1.2 (substitutes org.jasypt.hibernate.HibernatePBEEncryptor which - * existed since 1.0) - * - * @author Daniel Fernández - * - */ -public final class HibernatePBEStringEncryptor { - - private String registeredName = null; - private PBEStringEncryptor encryptor = null; - private boolean encryptorSet = false; - - - - /** - * Creates a new instance of HibernatePBEStringEncryptor. It also - * creates a StandardPBEStringEncryptor for internal use, which - * can be overriden by calling setEncryptor(...). - */ - public HibernatePBEStringEncryptor() { - super(); - this.encryptor = new StandardPBEStringEncryptor(); - this.encryptorSet = false; - } - - - /* - * For internal use only, by the Registry, when a PBEStringEncryptor - * is registered programmatically. - */ - HibernatePBEStringEncryptor(final String registeredName, - final PBEStringEncryptor encryptor) { - this.encryptor = encryptor; - this.registeredName = registeredName; - this.encryptorSet = true; - } - - - /** - * Returns the encryptor which this object wraps. - * - * @return the encryptor. - */ - public synchronized PBEStringEncryptor getEncryptor() { - return this.encryptor; - } - - - /** - * Sets the PBEStringEncryptor to be held (wrapped) by this - * object. This method is optional and can be only called once. - * - * @param encryptor the encryptor. - */ - public synchronized void setEncryptor(final PBEStringEncryptor encryptor) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - this.encryptor = encryptor; - this.encryptorSet = true; - } - - - /** - * Sets the password to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param password the password to be set for the internal encryptor - */ - public void setPassword(final String password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setPassword(password); - } - - - /** - * Sets the password to be used by the internal encryptor (as a char[]), if a specific - * encryptor has not been set with setEncryptor(...). - * - * @since 1.8 - * @param password the password to be set for the internal encryptor - */ - public void setPasswordCharArray(final char[] password) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setPasswordCharArray(password); - } - - - /** - * Sets the algorithm to be used by the internal encryptor, if a specific - * encryptor has not been set with setEncryptor(...). - * - * @param algorithm the algorithm to be set for the internal encryptor - */ - public void setAlgorithm(final String algorithm) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setAlgorithm(algorithm); - } - - - /** - * Sets the key obtention iterations to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param keyObtentionIterations to be set for the internal encryptor - */ - public void setKeyObtentionIterations(final int keyObtentionIterations) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setKeyObtentionIterations( - keyObtentionIterations); - } - - - /** - * Sets the salt generator to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param saltGenerator the salt generator to be set for the internal - * encryptor. - */ - public void setSaltGenerator(final SaltGenerator saltGenerator) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setSaltGenerator(saltGenerator); - } - - - /** - * Sets the name of the JCE provider to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @since 1.3 - * - * @param providerName the name of the JCE provider (already registered) - */ - public void setProviderName(final String providerName) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setProviderName(providerName); - } - - - /** - * Sets the JCE provider to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @since 1.3 - * - * @param provider the JCE provider to be used - */ - public void setProvider(final Provider provider) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setProvider(provider); - } - - - /** - * Sets the type of String output ("base64" (default), "hexadecimal") to - * be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @since 1.3 - * - * @param stringOutputType the type of String output - */ - public void setStringOutputType(final String stringOutputType) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setStringOutputType(stringOutputType); - } - - - /** - * Sets the PBEConfig to be used by the internal encryptor, - * if a specific encryptor has not been set with setEncryptor(...). - * - * @param config the PBEConfig to be set for the internal encryptor - */ - public void setConfig(final PBEConfig config) { - if (this.encryptorSet) { - throw new EncryptionInitializationException( - "An encryptor has been already set: no " + - "further configuration possible on hibernate wrapper"); - } - final StandardPBEStringEncryptor standardPBEStringEncryptor = - (StandardPBEStringEncryptor) this.encryptor; - standardPBEStringEncryptor.setConfig(config); - } - - - /** - * Encrypts a message, delegating to wrapped encryptor. - * - * @param message the message to be encrypted. - * @return the encryption result. - */ - public String encrypt(final String message) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.encrypt(message); - } - - - /** - * Decypts a message, delegating to wrapped encryptor - * - * @param encryptedMessage the message to be decrypted. - * @return the result of decryption. - */ - public String decrypt(final String encryptedMessage) { - if (this.encryptor == null) { - throw new EncryptionInitializationException( - "Encryptor has not been set into Hibernate wrapper"); - } - return this.encryptor.decrypt(encryptedMessage); - } - - - - /** - * Sets the registered name of the encryptor and adds it to the registry. - * - * @param registeredName the name with which the encryptor will be - * registered. - */ - public void setRegisteredName(final String registeredName) { - if (this.registeredName != null) { - // It had another name before, we have to clean - HibernatePBEEncryptorRegistry.getInstance(). - unregisterHibernatePBEStringEncryptor(this.registeredName); - } - this.registeredName = registeredName; - HibernatePBEEncryptorRegistry.getInstance(). - registerHibernatePBEStringEncryptor(this); - } - - /** - * Returns the name with which the wrapped encryptor is registered at - * the registry. - * - * @return the registered name. - */ - public String getRegisteredName() { - return this.registeredName; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.java 2010-10-23 12:24:29.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,289 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.io.Serializable; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.usertype.ParameterizedType; -import org.hibernate.usertype.UserType; -import org.hibernate.util.EqualsHelper; -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; - -/** - * - * Base class for Hibernate 3 UserTypes to store - * values as encrypted strings. - * - * @since 1.2 - * @author Daniel Fernández - * @author Iván García Sáinz-Aja - * - */ -public abstract class AbstractEncryptedAsStringType - implements UserType, ParameterizedType { - - static final int sqlType = Types.VARCHAR; - static final int[] sqlTypes = new int[]{ sqlType }; - - private boolean initialized = false; - private boolean useEncryptorName = false; - - private String encryptorName = null; - private String algorithm = null; - private String providerName = null; - private String password = null; - private Integer keyObtentionIterations = null; - private String stringOutputType = null; - - protected PBEStringEncryptor encryptor = null; - - /** - * Converts given String to its Object form. - * @param string the string value - * @return the object form of the passed String - */ - protected abstract Object convertToObject(final String string); - - /** - * Converts given Object to its String form. - * @param object the object value - * @return the string form of the passes Object - */ - protected String convertToString(final Object object) { - return object == null? null : object.toString(); - } - - public final int[] sqlTypes() { - return (int[]) sqlTypes.clone(); - } - - - public abstract Class returnedClass(); - - - public final boolean equals(final Object x, final Object y) - throws HibernateException { - return EqualsHelper.equals(x, y); - } - - - public final Object deepCopy(final Object value) - throws HibernateException { - return value; - } - - - public final Object assemble(final Serializable cached, final Object owner) - throws HibernateException { - if (cached == null) { - return null; - } - return deepCopy(cached); - } - - - public final Serializable disassemble(final Object value) - throws HibernateException { - if (value == null) { - return null; - } - return (Serializable) deepCopy(value); - } - - - public final boolean isMutable() { - return false; - } - - - public final int hashCode(final Object x) - throws HibernateException { - return x.hashCode(); - } - - - public final Object replace(final Object original, final Object target, final Object owner) - throws HibernateException { - return original; - } - - - public final Object nullSafeGet(final ResultSet rs, final String[] names, final Object owner) - throws HibernateException, SQLException { - checkInitialization(); - final String message = rs.getString(names[0]); - return rs.wasNull() ? null : convertToObject(this.encryptor.decrypt(message)); - } - - - public final void nullSafeSet(final PreparedStatement st, final Object value, final int index) - throws HibernateException, SQLException { - checkInitialization(); - if (value == null) { - st.setNull(index, sqlType); - } else { - st.setString(index, this.encryptor.encrypt(convertToString(value))); - } - } - - - public synchronized void setParameterValues(final Properties parameters) { - - final String paramEncryptorName = - parameters.getProperty(ParameterNaming.ENCRYPTOR_NAME); - final String paramAlgorithm = - parameters.getProperty(ParameterNaming.ALGORITHM); - final String paramProviderName = - parameters.getProperty(ParameterNaming.PROVIDER_NAME); - final String paramPassword = - parameters.getProperty(ParameterNaming.PASSWORD); - final String paramKeyObtentionIterations = - parameters.getProperty(ParameterNaming.KEY_OBTENTION_ITERATIONS); - final String paramStringOutputType = - parameters.getProperty(ParameterNaming.STRING_OUTPUT_TYPE); - - this.useEncryptorName = false; - if (paramEncryptorName != null) { - - if ((paramAlgorithm != null) || - (paramPassword != null) || - (paramKeyObtentionIterations != null)) { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is specified, none of \"" + - ParameterNaming.ALGORITHM + "\", \"" + - ParameterNaming.PASSWORD + "\" or \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\" " + - "can be specified"); - - } - this.encryptorName = paramEncryptorName; - this.useEncryptorName = true; - - } else if ((paramPassword != null)) { - - this.password = paramPassword; - - if (paramAlgorithm != null) { - this.algorithm = paramAlgorithm; - } - - if (paramProviderName != null) { - this.providerName = paramProviderName; - } - - if (paramKeyObtentionIterations != null) { - - try { - this.keyObtentionIterations = - new Integer( - Integer.parseInt(paramKeyObtentionIterations)); - } catch (NumberFormatException e) { - throw new EncryptionInitializationException( - "Value specified for \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + - "\" is not a valid integer"); - } - - } - - if (paramStringOutputType != null) { - this.stringOutputType = paramStringOutputType; - } - - } else { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is not specified, then \"" + - ParameterNaming.PASSWORD + "\" (and optionally \"" + - ParameterNaming.ALGORITHM + "\" and \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\") " + - "must be specified"); - - } - } - - - - protected synchronized final void checkInitialization() { - - if (!this.initialized) { - - if (this.useEncryptorName) { - - final HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEStringEncryptor pbeEncryptor = - registry.getPBEStringEncryptor(this.encryptorName); - if (pbeEncryptor == null) { - throw new EncryptionInitializationException( - "No string encryptor registered for hibernate " + - "with name \"" + this.encryptorName + "\""); - } - this.encryptor = pbeEncryptor; - - } else { - - final StandardPBEStringEncryptor newEncryptor = - new StandardPBEStringEncryptor(); - - newEncryptor.setPassword(this.password); - - if (this.algorithm != null) { - newEncryptor.setAlgorithm(this.algorithm); - } - - if (this.providerName != null) { - newEncryptor.setProviderName(this.providerName); - } - - if (this.keyObtentionIterations != null) { - newEncryptor.setKeyObtentionIterations( - this.keyObtentionIterations.intValue()); - } - - if (this.stringOutputType != null) { - newEncryptor.setStringOutputType(this.stringOutputType); - } - - newEncryptor.initialize(); - - this.encryptor = newEncryptor; - - } - - this.initialized = true; - } - - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.math.BigDecimal; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of BigDecimal values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBigDecimalAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new BigDecimal(string); - } - - public Class returnedClass() { - return BigDecimal.class; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigDecimalType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,376 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.usertype.ParameterizedType; -import org.hibernate.usertype.UserType; -import org.hibernate.util.EqualsHelper; -import org.jasypt.encryption.pbe.PBEBigDecimalEncryptor; -import org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; - -/** - *

- * A Hibernate 3 UserType implementation which allows transparent - * encryption of BigDecimal values during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
- *      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
- *      <param name="decimalScale">2</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigDecimal" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEBigDecimalEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateBigDecimalEncryptor (see - * {@link HibernatePBEBigDecimalEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *      <param name="decimalScale">2</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="address" column="ADDRESS" type="encryptedBigDecimal" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- *

- * About the decimalScale parameter - *

- * The decimalScale parameter is aimed at setting the scale with which - * BigDecimal numbers will be set to and retrieved from the database. It is - * an important parameter because many DBMSs return BigDecimal numbers with - * a scale equal to the amount of decimal positions declared for the field - * (e.g. if we store "18.23" (scale=2) in a DECIMAL(15,5) field, we can get a - * "18.23000" (scale=5) back when we retrieve the number). This can affect - * correct decryption of encrypted numbers, but specifying a - * decimalScale parameter will solve this issue. - *

- *

- * So, if we set decimalScale to 3, and we store "18.23", this - * Hibernate type will send "18.230" to the encryptor, which is the value that - * we will get back from the database at retrieval time (a scale of "3" - * will be set again on the value obtained from DB). If it is necessary, a - * DOWN rounding operation is executed on the number. - *

- *
- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBigDecimalType implements UserType, ParameterizedType { - - private static final int sqlType = Types.NUMERIC; - private static final int[] sqlTypes = new int[]{ sqlType }; - - private boolean initialized = false; - private boolean useEncryptorName = false; - - private String encryptorName = null; - private String algorithm = null; - private String password = null; - private Integer keyObtentionIterations = null; - private Integer decimalScale = null; - - private PBEBigDecimalEncryptor encryptor = null; - - - public int[] sqlTypes() { - return (int[]) sqlTypes.clone(); - } - - - public Class returnedClass() { - return BigDecimal.class; - } - - - public boolean equals(final Object x, final Object y) - throws HibernateException { - return EqualsHelper.equals(x, y); - } - - - public Object deepCopy(final Object value) - throws HibernateException { - return value; - } - - - public Object assemble(final Serializable cached, final Object owner) - throws HibernateException { - if (cached == null) { - return null; - } - return deepCopy(cached); - } - - - public Serializable disassemble(final Object value) - throws HibernateException { - if (value == null) { - return null; - } - return (Serializable) deepCopy(value); - } - - - public boolean isMutable() { - return false; - } - - - public int hashCode(final Object x) - throws HibernateException { - return x.hashCode(); - } - - - public Object replace(final Object original, final Object target, final Object owner) - throws HibernateException { - return original; - } - - - public Object nullSafeGet(final ResultSet rs, final String[] names, final Object owner) - throws HibernateException, SQLException { - checkInitialization(); - final BigDecimal storedEncryptedMessage = rs.getBigDecimal(names[0]); - if (rs.wasNull()) { - return null; - } - final BigDecimal scaledEncryptedMessage = - storedEncryptedMessage.setScale( - this.decimalScale.intValue(), BigDecimal.ROUND_UNNECESSARY); - return this.encryptor.decrypt(scaledEncryptedMessage); - } - - - public void nullSafeSet(final PreparedStatement st, final Object value, final int index) - throws HibernateException, SQLException { - checkInitialization(); - if (value == null) { - st.setNull(index, sqlType); - } else { - final BigDecimal scaledValue = - ((BigDecimal) value).setScale( - this.decimalScale.intValue(), BigDecimal.ROUND_DOWN); - final BigDecimal encryptedMessage = - this.encryptor.encrypt(scaledValue); - st.setBigDecimal(index, encryptedMessage); - } - } - - - public synchronized void setParameterValues(final Properties parameters) { - - final String paramEncryptorName = - parameters.getProperty(ParameterNaming.ENCRYPTOR_NAME); - final String paramAlgorithm = - parameters.getProperty(ParameterNaming.ALGORITHM); - final String paramPassword = - parameters.getProperty(ParameterNaming.PASSWORD); - final String paramKeyObtentionIterations = - parameters.getProperty(ParameterNaming.KEY_OBTENTION_ITERATIONS); - final String paramDecimalScale = - parameters.getProperty(ParameterNaming.DECIMAL_SCALE); - - this.useEncryptorName = false; - if (paramEncryptorName != null) { - - if ((paramAlgorithm != null) || - (paramPassword != null) || - (paramKeyObtentionIterations != null)) { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is specified, none of \"" + - ParameterNaming.ALGORITHM + "\", \"" + - ParameterNaming.PASSWORD + "\" or \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\" " + - "can be specified"); - - } - this.encryptorName = paramEncryptorName; - this.useEncryptorName = true; - - } else if ((paramPassword != null)) { - - this.password = paramPassword; - - if (paramAlgorithm != null) { - this.algorithm = paramAlgorithm; - } - - if (paramKeyObtentionIterations != null) { - - try { - this.keyObtentionIterations = - new Integer( - Integer.parseInt(paramKeyObtentionIterations)); - } catch (NumberFormatException e) { - throw new EncryptionInitializationException( - "Value specified for \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + - "\" is not a valid integer"); - } - - } - - } else { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is not specified, then \"" + - ParameterNaming.PASSWORD + "\" (and optionally \"" + - ParameterNaming.ALGORITHM + "\" and \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\") " + - "must be specified"); - - } - - if (paramDecimalScale != null) { - - try { - this.decimalScale = - new Integer(Integer.parseInt(paramDecimalScale)); - } catch (NumberFormatException e) { - throw new EncryptionInitializationException( - "Value specified for \"" + - ParameterNaming.DECIMAL_SCALE + - "\" is not a valid integer"); - } - - } else { - - throw new EncryptionInitializationException( - ParameterNaming.DECIMAL_SCALE + - " must be specified"); - - } - - } - - - - private synchronized void checkInitialization() { - - if (!this.initialized) { - - if (this.useEncryptorName) { - - final HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEBigDecimalEncryptor pbeEncryptor = - registry.getPBEBigDecimalEncryptor(this.encryptorName); - if (pbeEncryptor == null) { - throw new EncryptionInitializationException( - "No big decimal encryptor registered for hibernate " + - "with name \"" + this.encryptorName + "\""); - } - this.encryptor = pbeEncryptor; - - } else { - - final StandardPBEBigDecimalEncryptor newEncryptor = - new StandardPBEBigDecimalEncryptor(); - - newEncryptor.setPassword(this.password); - - if (this.algorithm != null) { - newEncryptor.setAlgorithm(this.algorithm); - } - - if (this.keyObtentionIterations != null) { - newEncryptor.setKeyObtentionIterations( - this.keyObtentionIterations.intValue()); - } - - newEncryptor.initialize(); - - this.encryptor = newEncryptor; - - } - - this.initialized = true; - } - - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.math.BigInteger; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of BigInteger values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBigIntegerAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new BigInteger(string); - } - - public Class returnedClass() { - return BigInteger.class; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBigIntegerType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,327 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.usertype.ParameterizedType; -import org.hibernate.usertype.UserType; -import org.hibernate.util.EqualsHelper; -import org.jasypt.encryption.pbe.PBEBigIntegerEncryptor; -import org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; - -/** - *

- * A Hibernate 3 UserType implementation which allows transparent - * encryption of BigInteger values during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
- *      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedBigInteger" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEBigIntegerEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateBigIntegerEncryptor (see - * {@link HibernatePBEBigIntegerEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="address" column="ADDRESS" type="encryptedBigInteger" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBigIntegerType implements UserType, ParameterizedType { - - private static int sqlType = Types.NUMERIC; - private static int[] sqlTypes = new int[]{ sqlType }; - - private boolean initialized = false; - private boolean useEncryptorName = false; - - private String encryptorName = null; - private String algorithm = null; - private String password = null; - private Integer keyObtentionIterations = null; - - private PBEBigIntegerEncryptor encryptor = null; - - - public int[] sqlTypes() { - return (int[]) sqlTypes.clone(); - } - - - public Class returnedClass() { - return BigInteger.class; - } - - - public boolean equals(final Object x, final Object y) - throws HibernateException { - return EqualsHelper.equals(x, y); - } - - - public Object deepCopy(final Object value) - throws HibernateException { - return value; - } - - - public Object assemble(final Serializable cached, final Object owner) - throws HibernateException { - if (cached == null) { - return null; - } - return deepCopy(cached); - } - - - public Serializable disassemble(final Object value) - throws HibernateException { - if (value == null) { - return null; - } - return (Serializable) deepCopy(value); - } - - - public boolean isMutable() { - return false; - } - - - public int hashCode(final Object x) - throws HibernateException { - return x.hashCode(); - } - - - public Object replace(final Object original, final Object target, final Object owner) - throws HibernateException { - return original; - } - - - public Object nullSafeGet(final ResultSet rs, final String[] names, final Object owner) - throws HibernateException, SQLException { - checkInitialization(); - final BigDecimal decimalMessage = rs.getBigDecimal(names[0]); - if (rs.wasNull()) { - return null; - } - final BigInteger message = - decimalMessage.setScale(0, BigDecimal.ROUND_UNNECESSARY). - unscaledValue(); - return this.encryptor.decrypt(message); - } - - - public void nullSafeSet(final PreparedStatement st, final Object value, final int index) - throws HibernateException, SQLException { - checkInitialization(); - if (value == null) { - st.setNull(index, sqlType); - } else { - final BigInteger encryptedMessage = - this.encryptor.encrypt((BigInteger) value); - st.setBigDecimal(index, new BigDecimal(encryptedMessage)); - } - } - - - public synchronized void setParameterValues(final Properties parameters) { - - final String paramEncryptorName = - parameters.getProperty(ParameterNaming.ENCRYPTOR_NAME); - final String paramAlgorithm = - parameters.getProperty(ParameterNaming.ALGORITHM); - final String paramPassword = - parameters.getProperty(ParameterNaming.PASSWORD); - final String paramKeyObtentionIterations = - parameters.getProperty(ParameterNaming.KEY_OBTENTION_ITERATIONS); - - this.useEncryptorName = false; - if (paramEncryptorName != null) { - - if ((paramAlgorithm != null) || - (paramPassword != null) || - (paramKeyObtentionIterations != null)) { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is specified, none of \"" + - ParameterNaming.ALGORITHM + "\", \"" + - ParameterNaming.PASSWORD + "\" or \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\" " + - "can be specified"); - - } - this.encryptorName = paramEncryptorName; - this.useEncryptorName = true; - - } else if ((paramPassword != null)) { - - this.password = paramPassword; - - if (paramAlgorithm != null) { - this.algorithm = paramAlgorithm; - } - - if (paramKeyObtentionIterations != null) { - - try { - this.keyObtentionIterations = - new Integer( - Integer.parseInt(paramKeyObtentionIterations)); - } catch (NumberFormatException e) { - throw new EncryptionInitializationException( - "Value specified for \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + - "\" is not a valid integer"); - } - - } - - } else { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is not specified, then \"" + - ParameterNaming.PASSWORD + "\" (and optionally \"" + - ParameterNaming.ALGORITHM + "\" and \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\") " + - "must be specified"); - - } - } - - - - private synchronized void checkInitialization() { - - if (!this.initialized) { - - if (this.useEncryptorName) { - - final HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEBigIntegerEncryptor pbeEncryptor = - registry.getPBEBigIntegerEncryptor(this.encryptorName); - if (pbeEncryptor == null) { - throw new EncryptionInitializationException( - "No big integer encryptor registered for hibernate " + - "with name \"" + this.encryptorName + "\""); - } - this.encryptor = pbeEncryptor; - - } else { - - final StandardPBEBigIntegerEncryptor newEncryptor = - new StandardPBEBigIntegerEncryptor(); - - newEncryptor.setPassword(this.password); - - if (this.algorithm != null) { - newEncryptor.setAlgorithm(this.algorithm); - } - - if (this.keyObtentionIterations != null) { - newEncryptor.setKeyObtentionIterations( - this.keyObtentionIterations.intValue()); - } - - newEncryptor.initialize(); - - this.encryptor = newEncryptor; - - } - - this.initialized = true; - } - - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBinaryType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBinaryType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBinaryType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBinaryType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,400 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.cfg.Environment; -import org.hibernate.usertype.ParameterizedType; -import org.hibernate.usertype.UserType; -import org.jasypt.encryption.pbe.PBEByteEncryptor; -import org.jasypt.encryption.pbe.StandardPBEByteEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; - -/** - *

- * A Hibernate 3 UserType implementation which allows transparent - * encryption of byte[] values during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
- *      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="resume" column="RESUME" type="encryptedBinary" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEByteEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateByteEncryptor (see - * {@link HibernatePBEByteEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="resume" column="RESUME" type="encryptedBinary" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBinaryType implements UserType, ParameterizedType { - - private static final int BLOCK_SIZE = 2048; - - private static final int sqlType = Types.VARBINARY; - private static final int[] sqlTypes = new int[]{ sqlType }; - - private boolean initialized = false; - private boolean useEncryptorName = false; - - private String encryptorName = null; - private String algorithm = null; - private String password = null; - private Integer keyObtentionIterations = null; - - private PBEByteEncryptor encryptor = null; - - - public int[] sqlTypes() { - return (int[]) sqlTypes.clone(); - } - - - public Class returnedClass() { - return byte[].class; - } - - - public boolean equals(final Object x, final Object y) - throws HibernateException { - - return (x == y) || - (x != null && y != null && java.util.Arrays.equals((byte[]) x, (byte[]) y)); - - } - - - public Object deepCopy(final Object value) - throws HibernateException { - - if (value == null) { - return null; - } - final byte[] valueBytes = (byte[]) value; - final byte[] copyBytes = new byte[valueBytes.length]; - System.arraycopy(valueBytes, 0, copyBytes, 0, valueBytes.length); - return copyBytes; - - } - - - public Object assemble(final Serializable cached, final Object owner) - throws HibernateException { - if (cached == null) { - return null; - } - return deepCopy(cached); - } - - - public Serializable disassemble(final Object value) - throws HibernateException { - if (value == null) { - return null; - } - return (Serializable) deepCopy(value); - } - - - public boolean isMutable() { - return true; - } - - - public int hashCode(final Object x) - throws HibernateException { - - final byte[] valueBytes = (byte[]) x; - int result = 1; - for (int i = 0; i < valueBytes.length; i++ ) { - result = (result * 17) + valueBytes[i]; - } - return result; - - } - - - public Object replace(final Object original, final Object target, final Object owner) - throws HibernateException { - return (original == null)? null : deepCopy(original); - } - - - public Object nullSafeGet(final ResultSet rs, final String[] names, final Object owner) - throws HibernateException, SQLException { - - checkInitialization(); - - byte[] encryptedValue = null; - if (Environment.useStreamsForBinary()) { - - final InputStream inputStream = rs.getBinaryStream(names[0]); - if (rs.wasNull()) { - return null; - } - - final ByteArrayOutputStream outputStream = - new ByteArrayOutputStream(BLOCK_SIZE); - final byte[] inputBuff = new byte[BLOCK_SIZE]; - try { - int readBytes = 0; - while (readBytes != -1) { - readBytes = inputStream.read(inputBuff); - if (readBytes != -1) { - outputStream.write(inputBuff, 0, readBytes); - } - } - } catch (IOException e) { - throw new HibernateException( - "IOException occurred reading a binary value", e); - } finally { - try { - inputStream.close(); - } catch (IOException e) { - // exception ignored - } - try { - outputStream.close(); - } catch (IOException e) { - // exception ignored - } - } - - encryptedValue = outputStream.toByteArray(); - - } else { - - encryptedValue = rs.getBytes(names[0]); - if (rs.wasNull()) { - return null; - } - - } - - return this.encryptor.decrypt(encryptedValue); - - } - - - public void nullSafeSet(final PreparedStatement st, final Object value, final int index) - throws HibernateException, SQLException { - - checkInitialization(); - - if (value == null) { - st.setNull(index, sqlType); - } else { - final byte[] encryptedValue = this.encryptor.encrypt((byte[]) value); - if (Environment.useStreamsForBinary()) { - st.setBinaryStream( - index, - new ByteArrayInputStream(encryptedValue), - encryptedValue.length); - } else { - st.setBytes(index, encryptedValue); - } - } - - } - - - public synchronized void setParameterValues(final Properties parameters) { - - final String paramEncryptorName = - parameters.getProperty(ParameterNaming.ENCRYPTOR_NAME); - final String paramAlgorithm = - parameters.getProperty(ParameterNaming.ALGORITHM); - final String paramPassword = - parameters.getProperty(ParameterNaming.PASSWORD); - final String paramKeyObtentionIterations = - parameters.getProperty(ParameterNaming.KEY_OBTENTION_ITERATIONS); - - this.useEncryptorName = false; - if (paramEncryptorName != null) { - - if ((paramAlgorithm != null) || - (paramPassword != null) || - (paramKeyObtentionIterations != null)) { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is specified, none of \"" + - ParameterNaming.ALGORITHM + "\", \"" + - ParameterNaming.PASSWORD + "\" or \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\" " + - "can be specified"); - - } - this.encryptorName = paramEncryptorName; - this.useEncryptorName = true; - - } else if ((paramPassword != null)) { - - this.password = paramPassword; - - if (paramAlgorithm != null) { - this.algorithm = paramAlgorithm; - } - - if (paramKeyObtentionIterations != null) { - - try { - this.keyObtentionIterations = - new Integer( - Integer.parseInt(paramKeyObtentionIterations)); - } catch (NumberFormatException e) { - throw new EncryptionInitializationException( - "Value specified for \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + - "\" is not a valid integer"); - } - - } - - } else { - - throw new EncryptionInitializationException( - "If \"" + ParameterNaming.ENCRYPTOR_NAME + - "\" is not specified, then \"" + - ParameterNaming.PASSWORD + "\" (and optionally \"" + - ParameterNaming.ALGORITHM + "\" and \"" + - ParameterNaming.KEY_OBTENTION_ITERATIONS + "\") " + - "must be specified"); - - } - } - - - - private synchronized void checkInitialization() { - - if (!this.initialized) { - - if (this.useEncryptorName) { - - final HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - final PBEByteEncryptor pbeEncryptor = - registry.getPBEByteEncryptor(this.encryptorName); - if (pbeEncryptor == null) { - throw new EncryptionInitializationException( - "No big integer encryptor registered for hibernate " + - "with name \"" + this.encryptorName + "\""); - } - this.encryptor = pbeEncryptor; - - } else { - - final StandardPBEByteEncryptor newEncryptor = - new StandardPBEByteEncryptor(); - - newEncryptor.setPassword(this.password); - - if (this.algorithm != null) { - newEncryptor.setAlgorithm(this.algorithm); - } - - if (this.keyObtentionIterations != null) { - newEncryptor.setKeyObtentionIterations( - this.keyObtentionIterations.intValue()); - } - - newEncryptor.initialize(); - - this.encryptor = newEncryptor; - - } - - this.initialized = true; - } - - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Boolean values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedBooleanAsStringType extends AbstractEncryptedAsStringType { - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return Boolean.valueOf(string); - } - - public Class returnedClass() { - return Boolean.class; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedByteAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedByteAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedByteAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedByteAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Byte values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedByteAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedByteAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedByteAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Byte(string); - } - - public Class returnedClass() { - return Byte.class; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.util.Calendar; -import java.util.Properties; -import java.util.TimeZone; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Calendar values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *      <param name="storeTimeZone">true</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * The boolean storeTimeZone parameter allows the Calendar to be - * re-created with the same TimeZone that it was created. This is an - * optional parameter, and its default value is FALSE. - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *      <param name="storeTimeZone">true</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedCalendarAsStringType extends AbstractEncryptedAsStringType{ - - private Boolean storeTimeZone = Boolean.FALSE; - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - final String[] stringTokens = CommonUtils.split(string); - TimeZone tz = null; - final long timeMillis = Long.valueOf(stringTokens[0]).longValue(); - if (this.storeTimeZone.booleanValue()) { - tz = TimeZone.getTimeZone(stringTokens[1]); - } else { - tz = TimeZone.getDefault(); - } - final Calendar cal = Calendar.getInstance(); - cal.setTimeZone(tz); - cal.setTimeInMillis(timeMillis); - return cal; - } - - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToString(java.lang.Object) - */ - protected String convertToString(final Object object) { - final StringBuffer strBuff = new StringBuffer(); - final long timeMillis = ((Calendar) object).getTimeInMillis(); - strBuff.append((new Long(timeMillis)).toString()); - if (this.storeTimeZone.booleanValue()) { - strBuff.append(" "); - strBuff.append(((Calendar) object).getTimeZone().getID()); - } - return strBuff.toString(); - } - - - public synchronized void setParameterValues(final Properties parameters) { - - super.setParameterValues(parameters); - - final String paramStoreTimeZone = parameters.getProperty(ParameterNaming.STORE_TIME_ZONE); - if ((paramStoreTimeZone != null) && (!paramStoreTimeZone.trim().equals(""))) { - this.storeTimeZone = CommonUtils.getStandardBooleanValue(paramStoreTimeZone); - } - - } - - - public Class returnedClass() { - return Calendar.class; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedDateAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedDateAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedDateAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedDateAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import java.util.Date; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Date values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedDateAsStringType extends AbstractEncryptedAsStringType{ - - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - final long timeMillis = Long.valueOf(string).longValue(); - return new Date(timeMillis); - } - - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToString(java.lang.Object) - */ - protected String convertToString(final Object object) { - final long timeMillis = ((Date) object).getTime(); - return String.valueOf(timeMillis); - } - - - public Class returnedClass() { - return Date.class; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Double values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedDoubleAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Double(string); - } - - public Class returnedClass() { - return Double.class; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedFloatAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedFloatAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedFloatAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedFloatAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Float values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedFloatAsStringType extends AbstractEncryptedAsStringType{ - - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Float(string); - } - - public Class returnedClass() { - return Float.class; - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Integer values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedIntegerAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Integer(string); - } - - public Class returnedClass() { - return Integer.class; - } - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedLongAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedLongAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedLongAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedLongAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Long values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedLongAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedLongAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedLongAsStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Long(string); - } - - public Class returnedClass() { - return Long.class; - } - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedShortAsStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedShortAsStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedShortAsStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedShortAsStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows - * encryption of Short values into String (VARCHAR) database fields - * during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedShortAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="salary" column="SALARY" type="encryptedShortAsString" />
- *      ...
- *    <class>
- *    ...
- *  <hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 - * - * @author Daniel Fernández - * - */ -public final class EncryptedShortAsStringType extends AbstractEncryptedAsStringType { - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String string) { - return new Short(string); - } - - public Class returnedClass() { - return Short.class; - } - - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedStringType.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedStringType.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/EncryptedStringType.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/EncryptedStringType.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor; - - - -/** - *

- * A Hibernate 3 UserType implementation which allows transparent - * encryption of String values during persistence of entities. - *

- *

- * This class is intended only for declarative use from a Hibernate mapping - * file. Do not use it directly from your .java files (although - * of course you can use it when mapping entities using annotations). - *

- *

- * To use this Hibernate type in one of your Hibernate mappings, you can - * add it like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
- *      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="address" column="ADDRESS" type="encryptedString" />
- *      ...
- *    </class>
- *    ...
- *  </hibernate-mapping>
- * 
- *

- *

- * ...where a HibernatePBEStringEncryptor object - * should have been previously registered to be used - * from Hibernate with name myHibernateStringEncryptor (see - * {@link HibernatePBEStringEncryptor} and {@link HibernatePBEEncryptorRegistry}). - *

- *

- * Or, if you prefer to avoid registration of encryptors, you can configure - * your encryptor directly in the mapping file (although not recommended), - * like this: - *

- *

- *

- *  <hibernate-mapping package="myapp">
- *    ...
- *    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
- *      <param name="algorithm">PBEWithMD5AndTripleDES</param>
- *      <param name="password">XXXXX</param>
- *      <param name="keyObtentionIterations">1000</param>
- *    </typedef>
- *    ...
- *    <class name="UserData" table="USER_DATA">
- *      ...
- *      <property name="address" column="ADDRESS" type="encryptedString" />
- *      ...
- *    </class>
- *    ...
- *  </hibernate-mapping>
- * 
- *

- *

- * To learn more about usage of user-defined types, please refer to the - * Hibernate Reference - * Documentation. - *

- * - * - * @since 1.2 (substitutes org.jasypt.hibernate.EncryptedTextType - * which existed since 1.0) - * - * @author Daniel Fernández - * - */ -public final class EncryptedStringType extends AbstractEncryptedAsStringType{ - - /** - * @see org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String) - */ - protected Object convertToObject(final String stringValue) { - return stringValue; - } - - public Class returnedClass() { - return String.class; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/hibernate/type/ParameterNaming.java jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/ParameterNaming.java --- jasypt-1.8/src/main/java/org/jasypt/hibernate/type/ParameterNaming.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/hibernate/type/ParameterNaming.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.hibernate.type; - -/** - *

- * Constant names of the parameters that can be used by a jasypt type's - * typedef declaration in a Hibernate mapping. - *

- * - * @since 1.4 (was org.jasypt.hibernate.ParameterNaming since 1.0) - * - * @author Daniel Fernández - * - */ -public final class ParameterNaming { - - /** - *

- * The registered name of an encryptor previously registered at the - * {@link org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry}. - *

- *

- * Value = encryptorRegisteredName - *

- */ - public static final String ENCRYPTOR_NAME = "encryptorRegisteredName"; - - /** - *

- * The encryption algorithm. - *

- *

- * Value = algorithm - *

- */ - public static final String ALGORITHM = "algorithm"; - - /** - *

- * The name of the JCE security provider we want to get the algorithm from - * (if it is no the default one. - *

- *

- * Value = providerName - *

- */ - public static final String PROVIDER_NAME = "providerName"; - - /** - *

- * The encryption password. - *

- *

- * Value = password - *

- */ - public static final String PASSWORD = "password"; - - /** - *

- * The number of hashing iterations to be applied for obtaining the - * encryption key. - *

- *

- * Value = keyObtentionIterations - *

- */ - public static final String KEY_OBTENTION_ITERATIONS = - "keyObtentionIterations"; - - /** - *

- * The type of String output ("base64" (default), "hexadecimal") to be - * generated. - *

- *

- * Value = stringOutputType - *

- */ - public static final String STRING_OUTPUT_TYPE = "stringOutputType"; - - /** - *

- * The scale (numbers after the decimal point) to be used when storing - * decimal numbers. - *

- *

- * Value = decimalScale - *

- */ - public static final String DECIMAL_SCALE = - "decimalScale"; - - /** - *

- * Whether the calendar time zone should be stored with the date or not. - *

- *

- * Value = storeTimeZone - *

- */ - public static final String STORE_TIME_ZONE = - "storeTimeZone"; - - - - private ParameterNaming() { - super(); - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/intf/service/JasyptStatelessService.java jasypt-1.9.2/src/main/java/org/jasypt/intf/service/JasyptStatelessService.java --- jasypt-1.8/src/main/java/org/jasypt/intf/service/JasyptStatelessService.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/intf/service/JasyptStatelessService.java 2014-02-25 00:22:19.000000000 +0000 @@ -24,7 +24,6 @@ import org.jasypt.digest.config.EnvironmentStringDigesterConfig; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig; -import org.jasypt.exceptions.EncryptionOperationNotPossibleException; diff -Nru jasypt-1.8/src/main/java/org/jasypt/normalization/Normalizer.java jasypt-1.9.2/src/main/java/org/jasypt/normalization/Normalizer.java --- jasypt-1.8/src/main/java/org/jasypt/normalization/Normalizer.java 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/normalization/Normalizer.java 2014-02-25 14:19:40.000000000 +0000 @@ -19,6 +19,9 @@ */ package org.jasypt.normalization; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + import org.jasypt.exceptions.EncryptionInitializationException; @@ -42,8 +45,12 @@ private static final String ICU_NORMALIZER_CLASS_NAME = "com.ibm.icu.text.Normalizer"; private static final String JDK_NORMALIZER_CLASS_NAME = "java.text.Normalizer"; + private static final String JDK_NORMALIZER_FORM_CLASS_NAME = "java.text.Normalizer$Form"; + + private static Boolean useIcuNormalizer = null; - private static Boolean useIcuNormalizer = null; + private static Method javaTextNormalizerMethod = null; + private static Object javaTextNormalizerFormNFCConstant = null; /** @@ -85,19 +92,36 @@ // Still not initialized, will try to load the icu4j Normalizer. If // icu4j is in the classpath, it will be used even if java version is >= 6. try { - Thread.currentThread().getContextClassLoader().loadClass(ICU_NORMALIZER_CLASS_NAME); - useIcuNormalizer = Boolean.TRUE; - } catch (ClassNotFoundException e) { + + initializeIcu4j(); + + } catch (final ClassNotFoundException e) { + try { - Thread.currentThread().getContextClassLoader().loadClass(JDK_NORMALIZER_CLASS_NAME); - } catch (ClassNotFoundException e2) { + + initializeJavaTextNormalizer(); + + } catch (final ClassNotFoundException e2) { throw new EncryptionInitializationException( "Cannot find a valid UNICODE normalizer: neither " + JDK_NORMALIZER_CLASS_NAME + " nor " + ICU_NORMALIZER_CLASS_NAME + " have been found at the classpath. If you are using " + "a version of the JDK older than JavaSE 6, you should include the icu4j library in " + "your classpath."); + } catch (final NoSuchMethodException e2) { + throw new EncryptionInitializationException( + "Cannot find a valid UNICODE normalizer: " + JDK_NORMALIZER_CLASS_NAME + " has " + + "been found at the classpath, but has an incompatible signature for its 'normalize' " + + "method."); + } catch (final NoSuchFieldException e2) { + throw new EncryptionInitializationException( + "Cannot find a valid UNICODE normalizer: " + JDK_NORMALIZER_FORM_CLASS_NAME + " has " + + "been found at the classpath, but seems to have no 'NFC' value."); + } catch (final IllegalAccessException e2) { + throw new EncryptionInitializationException( + "Cannot find a valid UNICODE normalizer: " + JDK_NORMALIZER_FORM_CLASS_NAME + " has " + + "been found at the classpath, but seems to have no 'NFC' value."); } - useIcuNormalizer = Boolean.FALSE; + } } @@ -109,21 +133,64 @@ } + + static void initializeIcu4j() throws ClassNotFoundException { + Thread.currentThread().getContextClassLoader().loadClass(ICU_NORMALIZER_CLASS_NAME); + useIcuNormalizer = Boolean.TRUE; + } + + + static void initializeJavaTextNormalizer() + throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, IllegalAccessException { - private static char[] normalizeWithJavaNormalizer(final char[] message) { + final Class javaTextNormalizerClass = + Thread.currentThread().getContextClassLoader().loadClass(JDK_NORMALIZER_CLASS_NAME); + final Class javaTextNormalizerFormClass = + Thread.currentThread().getContextClassLoader().loadClass(JDK_NORMALIZER_FORM_CLASS_NAME); + javaTextNormalizerMethod = + javaTextNormalizerClass.getMethod( + "normalize", new Class[]{ CharSequence.class, javaTextNormalizerFormClass }); + final Field javaTextNormalizerFormNFCConstantField = javaTextNormalizerFormClass.getField("NFC"); + javaTextNormalizerFormNFCConstant = javaTextNormalizerFormNFCConstantField.get(null); + + useIcuNormalizer = Boolean.FALSE; + + } + + + + + static char[] normalizeWithJavaNormalizer(final char[] message) { + + if (javaTextNormalizerMethod == null || javaTextNormalizerFormNFCConstant == null) { + throw new EncryptionInitializationException( + "Cannot use: " + JDK_NORMALIZER_FORM_CLASS_NAME + ", as JDK-based normalization has " + + "not been initialized! (check previous execution errors)"); + } + // Using java JDK's Normalizer, we cannot avoid creating Strings // (it is the only possible interface to the Normalizer class). + // + // Note java.text.Normalizer is accessed via reflection in order to allow this + // class to be JDK 1.4-compilable (though ICU4j will be needed at runtime + // if Java 1.4 is used). final String messageStr = new String(message); - final String result = - java.text.Normalizer.normalize(messageStr, java.text.Normalizer.Form.NFC); + final String result; + try { + result = (String) javaTextNormalizerMethod.invoke( + null, new Object[] { messageStr, javaTextNormalizerFormNFCConstant }); + } catch (final Exception e) { + throw new EncryptionInitializationException( + "Could not perform a valid UNICODE normalization", e); + } return result.toCharArray(); } - private static char[] normalizeWithIcu4j(final char[] message) { + static char[] normalizeWithIcu4j(final char[] message) { // initialize the result to twice the size of the message // this should be more than enough in most cases char[] normalizationResult = new char[message.length * 2]; diff -Nru jasypt-1.8/src/main/java/org/jasypt/properties/EncryptableProperties.java jasypt-1.9.2/src/main/java/org/jasypt/properties/EncryptableProperties.java --- jasypt-1.8/src/main/java/org/jasypt/properties/EncryptableProperties.java 2010-10-16 18:38:04.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/properties/EncryptableProperties.java 2014-02-24 22:49:38.000000000 +0000 @@ -20,6 +20,7 @@ package org.jasypt.properties; import java.io.IOException; +import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Properties; @@ -78,12 +79,19 @@ * Used as an identifier for the encryptor registry */ private final Integer ident = new Integer(CommonUtils.nextRandomInt()); + + /* + * The string encryptor to be used for properties. Either this or the + * 'textEncryptor' property have to be non-null. + */ + private transient StringEncryptor stringEncryptor = null; /* - * Used as a marker to know if the object has ever been serialized + * The text encryptor to be used for properties. Either this or the + * 'stringEncryptor' property have to be non-null. */ - private boolean beenSerialized = false; - + private transient TextEncryptor textEncryptor = null; + /** *

@@ -127,9 +135,8 @@ public EncryptableProperties(final Properties defaults, final StringEncryptor stringEncryptor) { super(defaults); CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null"); - final EncryptablePropertiesEncryptorRegistry registry = - EncryptablePropertiesEncryptorRegistry.getInstance(); - registry.setStringEncryptor(this, stringEncryptor); + this.stringEncryptor = stringEncryptor; + this.textEncryptor = null; } @@ -147,9 +154,8 @@ public EncryptableProperties(final Properties defaults, final TextEncryptor textEncryptor) { super(defaults); CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null"); - final EncryptablePropertiesEncryptorRegistry registry = - EncryptablePropertiesEncryptorRegistry.getInstance(); - registry.setTextEncryptor(this, textEncryptor); + this.stringEncryptor = null; + this.textEncryptor = textEncryptor; } @@ -184,6 +190,24 @@ public String getProperty(final String key, final String defaultValue) { return decode(super.getProperty(key, defaultValue)); } + + + /** + *

+ * Obtains the property value for the specified key (see + * {@link Hashtable#get(Object)}), decrypting it if needed. + *

+ * + * @param key the property key + * @return the (decrypted) value + * @since 1.9.0 + */ + public synchronized Object get(final Object key) { + final Object value = super.get(key); + final String valueStr = + (value instanceof String) ? (String)value : null; + return decode(valueStr); + } /* @@ -202,16 +226,12 @@ if (!PropertyValueEncryptionUtils.isEncryptedValue(encodedValue)) { return encodedValue; } - final EncryptablePropertiesEncryptorRegistry registry = - EncryptablePropertiesEncryptorRegistry.getInstance(); - final StringEncryptor stringEncryptor = registry.getStringEncryptor(this); - if (stringEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(encodedValue, stringEncryptor); + if (this.stringEncryptor != null) { + return PropertyValueEncryptionUtils.decrypt(encodedValue, this.stringEncryptor); } - final TextEncryptor textEncryptor = registry.getTextEncryptor(this); - if (textEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(encodedValue, textEncryptor); + if (this.textEncryptor != null) { + return PropertyValueEncryptionUtils.decrypt(encodedValue, this.textEncryptor); } /* @@ -229,22 +249,46 @@ "serialized themselves)"); } + + private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { + + in.defaultReadObject(); + + final EncryptablePropertiesEncryptorRegistry registry = + EncryptablePropertiesEncryptorRegistry.getInstance(); + + final StringEncryptor registeredStringEncryptor = registry.getStringEncryptor(this); + if (registeredStringEncryptor != null) { + this.stringEncryptor = registeredStringEncryptor; + return; + } + + final TextEncryptor registeredTextEncryptor = registry.getTextEncryptor(this); + if (registeredTextEncryptor != null) { + this.textEncryptor = registeredTextEncryptor; + } + + } + + private void writeObject(final ObjectOutputStream outputStream) throws IOException { - this.beenSerialized = true; + + final EncryptablePropertiesEncryptorRegistry registry = + EncryptablePropertiesEncryptorRegistry.getInstance(); + if (this.textEncryptor != null) { + registry.setTextEncryptor(this, this.textEncryptor); + } else if (this.stringEncryptor != null) { + registry.setStringEncryptor(this, this.stringEncryptor); + } + outputStream.defaultWriteObject(); + } - - protected void finalize() throws Throwable { - if (!this.beenSerialized) { - final EncryptablePropertiesEncryptorRegistry registry = - EncryptablePropertiesEncryptorRegistry.getInstance(); - registry.removeEntries(this); - } - } + } diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/ByteArrayFixedSaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/ByteArrayFixedSaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/ByteArrayFixedSaltGenerator.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/ByteArrayFixedSaltGenerator.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * ============================================================================= + * + * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) + * + * 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 + * + * http://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. + * + * ============================================================================= + */ +package org.jasypt.salt; + +import org.jasypt.commons.CommonUtils; +import org.jasypt.exceptions.EncryptionInitializationException; + +/** + *

+ * Byte-array based implementation of {@link FixedSaltGenerator}, that will + * always return the same salt. + *

+ *

+ * If the requested salt has a size in bytes smaller than the specified salt, + * the first n bytes are returned. If it is larger, an exception is thrown. + *

+ *

+ * This class is thread-safe. + *

+ * + * @since 1.9.2 + * + * @author Daniel Fernández + * + */ +public class ByteArrayFixedSaltGenerator implements FixedSaltGenerator { + + private final byte[] salt; + + /** + * Creates a new instance of FixedByteArraySaltGenerator + * + * @param salt the specified salt. + */ + public ByteArrayFixedSaltGenerator(final byte[] salt) { + super(); + CommonUtils.validateNotNull(salt, "Salt cannot be set null"); + this.salt = (byte[]) salt.clone(); + } + + + /** + * Return salt with the specified byte length. + * + * @param lengthBytes length in bytes. + * @return the generated salt. + */ + public byte[] generateSalt(final int lengthBytes) { + if (this.salt.length < lengthBytes) { + throw new EncryptionInitializationException( + "Requested salt larger than set"); + } + final byte[] generatedSalt = new byte[lengthBytes]; + System.arraycopy(this.salt, 0, generatedSalt, 0, lengthBytes); + return generatedSalt; + } + + + /** + * As this salt generator provides a fixed salt, its inclusion + * unencrypted in encryption results + * is not necessary, and in fact not desirable (so that it remains hidden). + * + * @return false + */ + public boolean includePlainSaltInEncryptionResults() { + return false; + } + + +} diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/FixedByteArraySaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedByteArraySaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/FixedByteArraySaltGenerator.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedByteArraySaltGenerator.java 2014-02-25 01:52:26.000000000 +0000 @@ -39,6 +39,11 @@ * * @author Daniel Fernández * + * @deprecated Deprecated in 1.9.2 in favour of {@link ByteArrayFixedSaltGenerator}, which + * implements the new {@link FixedSaltGenerator} interface and therefore is able to benefit + * from the performance improvements associated with it. This class will be removed + * in 1.10.0 (or 2.0.0). + * */ public class FixedByteArraySaltGenerator implements SaltGenerator { diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/FixedSaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedSaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/FixedSaltGenerator.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedSaltGenerator.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * ============================================================================= + * + * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) + * + * 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 + * + * http://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. + * + * ============================================================================= + */ +package org.jasypt.salt; + + +/** + *

+ * Marker interface for all implementations of {@link SaltGenerator} that + * will always return the same salt (for the same amount of bytes asked). + *

+ *

+ * Use of this interface in salt generators enables encryptors to perform + * some performance optimizations whenever they are used. + *

+ * + * @since 1.9.2 + * + * @author Daniel Fernández + * + */ +public interface FixedSaltGenerator extends SaltGenerator { + + // Marker interface - no methods added + +} diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/FixedStringSaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedStringSaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/FixedStringSaltGenerator.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/FixedStringSaltGenerator.java 2014-02-25 01:52:26.000000000 +0000 @@ -42,6 +42,11 @@ * * @author Daniel Fernández * + * @deprecated Deprecated in 1.9.2 in favour of {@link StringFixedSaltGenerator}, which + * implements the new {@link FixedSaltGenerator} interface and therefore is able to benefit + * from the performance improvements associated with it. This class will be removed + * in 1.10.0 (or 2.0.0). + * */ public class FixedStringSaltGenerator implements SaltGenerator { diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/RandomSaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/RandomSaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/RandomSaltGenerator.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/RandomSaltGenerator.java 2013-08-21 21:31:58.000000000 +0000 @@ -74,7 +74,6 @@ super(); try { this.random = SecureRandom.getInstance(secureRandomAlgorithm); - this.random.setSeed(System.currentTimeMillis()); } catch (NoSuchAlgorithmException e) { throw new EncryptionInitializationException(e); } diff -Nru jasypt-1.8/src/main/java/org/jasypt/salt/StringFixedSaltGenerator.java jasypt-1.9.2/src/main/java/org/jasypt/salt/StringFixedSaltGenerator.java --- jasypt-1.8/src/main/java/org/jasypt/salt/StringFixedSaltGenerator.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/salt/StringFixedSaltGenerator.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,116 @@ +/* + * ============================================================================= + * + * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) + * + * 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 + * + * http://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. + * + * ============================================================================= + */ +package org.jasypt.salt; + +import java.io.UnsupportedEncodingException; + +import org.jasypt.commons.CommonUtils; +import org.jasypt.exceptions.EncryptionInitializationException; + +/** + *

+ * String based implementation of {@link FixedSaltGenerator}, that will + * always return the same salt. This salt is returned as bytes using the + * specified charset for conversion (UTF-8 by default). + *

+ *

+ * If the requested salt has a size in bytes smaller than the specified salt, + * the first n bytes are returned. If it is larger, an exception is thrown. + *

+ *

+ * This class is thread-safe. + *

+ * + * @since 1.9.2 + * + * @author Daniel Fernández + * + */ +public class StringFixedSaltGenerator implements FixedSaltGenerator { + + private static final String DEFAULT_CHARSET = "UTF-8"; + + private final String salt; + private final String charset; + private final byte[] saltBytes; + + + + /** + * Creates a new instance of FixedStringSaltGenerator using + * the default charset. + * + * @param salt the specified salt. + */ + public StringFixedSaltGenerator(final String salt) { + this(salt, null); + } + + + /** + * Creates a new instance of FixedStringSaltGenerator + * + * @param salt the specified salt. + * @param charset the specified charset + */ + public StringFixedSaltGenerator(final String salt, final String charset) { + super(); + CommonUtils.validateNotNull(salt, "Salt cannot be set null"); + this.salt = salt; + this.charset = (charset != null? charset : DEFAULT_CHARSET); + try { + this.saltBytes = this.salt.getBytes(this.charset); + } catch (UnsupportedEncodingException e) { + throw new EncryptionInitializationException( + "Invalid charset specified: " + this.charset); + } + } + + + /** + * Return salt with the specified byte length. + * + * @param lengthBytes length in bytes. + * @return the generated salt. + */ + public byte[] generateSalt(final int lengthBytes) { + if (this.saltBytes.length < lengthBytes) { + throw new EncryptionInitializationException( + "Requested salt larger than set"); + } + final byte[] generatedSalt = new byte[lengthBytes]; + System.arraycopy(this.saltBytes, 0, generatedSalt, 0, lengthBytes); + return generatedSalt; + } + + + /** + * As this salt generator provides a fixed salt, its inclusion + * unencrypted in encryption results + * is not necessary, and in fact not desirable (so that it remains hidden). + * + * @return false + */ + public boolean includePlainSaltInEncryptionResults() { + return false; + } + + +} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.java jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.java --- jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.java 2010-10-21 23:28:02.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.properties; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.encryption.StringEncryptor; -import org.jasypt.properties.PropertyValueEncryptionUtils; -import org.jasypt.util.text.TextEncryptor; -import org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer; - -/** - *

- * Subclass of - * org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer - * which can make use of a {@link org.jasypt.encryption.StringEncryptor} or - * {@link org.jasypt.util.text.TextEncryptor} object to decrypt preferences values - * if they are encrypted in the loaded resource locations. - *

- *

- * A value is considered "encrypted" when it appears surrounded by - * ENC(...), like: - *

- *

- *

ENC(!"DGAS24FaIO$)
- *

- * - * @since 1.7 - * - * @author Daniel Fernández - * - */ -public final class EncryptablePreferencesPlaceholderConfigurer - extends PreferencesPlaceholderConfigurer { - /* - * Only one of these instances will be initialized, the other one will be - * null. - */ - private final StringEncryptor stringEncryptor; - private final TextEncryptor textEncryptor; - - /** - *

- * Creates an EncryptablePreferencesPlaceholderConfigurer instance - * which will use the passed {@link StringEncryptor} object to decrypt - * encrypted values. - *

- * - * @param stringEncryptor - * the {@link StringEncryptor} to be used do decrypt values. It - * can not be null. - */ - public EncryptablePreferencesPlaceholderConfigurer( - final StringEncryptor stringEncryptor) { - super(); - CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = stringEncryptor; - this.textEncryptor = null; - } - - /** - *

- * Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the - * passed {@link TextEncryptor} object to decrypt encrypted values. - *

- * - * @param textEncryptor - * the {@link TextEncryptor} to be used do decrypt values. It can - * not be null. - */ - public EncryptablePreferencesPlaceholderConfigurer(final TextEncryptor textEncryptor) { - super(); - CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = null; - this.textEncryptor = textEncryptor; - } - - /* - * (non-Javadoc) - * - * @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertPropertyValue(java.lang.String) - */ - protected String convertPropertyValue(final String originalValue) { - if (!PropertyValueEncryptionUtils.isEncryptedValue(originalValue)) { - return originalValue; - } - if (this.stringEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(originalValue, - this.stringEncryptor); - - } - return PropertyValueEncryptionUtils.decrypt(originalValue, this.textEncryptor); - } -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.java jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.java --- jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.java 2010-10-21 23:28:02.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.properties; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.encryption.StringEncryptor; -import org.jasypt.properties.PropertyValueEncryptionUtils; -import org.jasypt.util.text.TextEncryptor; -import org.springframework.beans.factory.config.PropertyOverrideConfigurer; - -/** - *

- * Subclass of - * org.springframework.beans.factory.config.PropertyOverrideConfigurer - * which can make use of a {@link org.jasypt.encryption.StringEncryptor} or - * {@link org.jasypt.util.text.TextEncryptor} object to decrypt property values - * if they are encrypted in the loaded resource locations. - *

- *

- * A value is considered "encrypted" when it appears surrounded by - * ENC(...), like: - *

- *

- *

my.value=ENC(!"DGAS24FaIO$)
- *

- *

- * Encrypted and unencrypted objects can be combined in the same resources file. - *

- * - * @since 1.4 - * - * @author Marcos Muíño García - * - */ -public final class EncryptablePropertyOverrideConfigurer - extends PropertyOverrideConfigurer { - /* - * Only one of these instances will be initialized, the other one will be - * null. - */ - private final StringEncryptor stringEncryptor; - private final TextEncryptor textEncryptor; - - /** - *

- * Creates an EncryptablePropertyOverrideConfigurer instance - * which will use the passed {@link StringEncryptor} object to decrypt - * encrypted values. - *

- * - * @param stringEncryptor - * the {@link StringEncryptor} to be used do decrypt values. It - * can not be null. - */ - public EncryptablePropertyOverrideConfigurer( - final StringEncryptor stringEncryptor) { - super(); - CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = stringEncryptor; - this.textEncryptor = null; - } - - /** - *

- * Creates an EncryptablePropertyOverrideConfigurer instance which will use the - * passed {@link TextEncryptor} object to decrypt encrypted values. - *

- * - * @param textEncryptor - * the {@link TextEncryptor} to be used do decrypt values. It can - * not be null. - */ - public EncryptablePropertyOverrideConfigurer(final TextEncryptor textEncryptor) { - super(); - CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = null; - this.textEncryptor = textEncryptor; - } - - /* - * (non-Javadoc) - * - * @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertPropertyValue(java.lang.String) - */ - protected String convertPropertyValue(final String originalValue) { - if (!PropertyValueEncryptionUtils.isEncryptedValue(originalValue)) { - return originalValue; - } - if (this.stringEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(originalValue, - this.stringEncryptor); - - } - return PropertyValueEncryptionUtils.decrypt(originalValue, this.textEncryptor); - } -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.java jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.java --- jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.java 2011-07-24 20:59:48.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.properties; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.encryption.StringEncryptor; -import org.jasypt.properties.PropertyValueEncryptionUtils; -import org.jasypt.util.text.TextEncryptor; -import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; - -/** - *

- * Subclass of - * org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - * which can make use of a {@link org.jasypt.encryption.StringEncryptor} or - * {@link org.jasypt.util.text.TextEncryptor} object to decrypt property values - * if they are encrypted in the loaded resource locations. - *

- *

- * A value is considered "encrypted" when it appears surrounded by - * ENC(...), like: - *

- *

- *

my.value=ENC(!"DGAS24FaIO$)
- *

- *

- * Encrypted and unencrypted objects can be combined in the same resources file. - *

- * - * @since 1.4 - * - * @author Marcos Muíño García - * @author Carlos Fernández - * - */ -public final class EncryptablePropertyPlaceholderConfigurer - extends PropertyPlaceholderConfigurer { - /* - * Only one of these instances will be initialized, the other one will be - * null. - */ - private final StringEncryptor stringEncryptor; - private final TextEncryptor textEncryptor; - - /** - *

- * Creates an EncryptablePropertyPlaceholderConfigurer instance - * which will use the passed {@link StringEncryptor} object to decrypt - * encrypted values. - *

- * - * @param stringEncryptor - * the {@link StringEncryptor} to be used do decrypt values. It - * can not be null. - */ - public EncryptablePropertyPlaceholderConfigurer( - final StringEncryptor stringEncryptor) { - super(); - CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = stringEncryptor; - this.textEncryptor = null; - } - - /** - *

- * Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the - * passed {@link TextEncryptor} object to decrypt encrypted values. - *

- * - * @param textEncryptor - * the {@link TextEncryptor} to be used do decrypt values. It can - * not be null. - */ - public EncryptablePropertyPlaceholderConfigurer(final TextEncryptor textEncryptor) { - super(); - CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = null; - this.textEncryptor = textEncryptor; - } - - /* - * (non-Javadoc) - * - * @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertPropertyValue(java.lang.String) - */ - protected String convertPropertyValue(final String originalValue) { - if (!PropertyValueEncryptionUtils.isEncryptedValue(originalValue)) { - return originalValue; - } - if (this.stringEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(originalValue, - this.stringEncryptor); - - } - return PropertyValueEncryptionUtils.decrypt(originalValue, this.textEncryptor); - } - - /* - * (non-Javadoc) - * - * @since 1.8 - * @see org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#resolveSystemProperty(java.lang.String) - */ - protected String resolveSystemProperty(final String key) { - return convertPropertyValue(super.resolveSystemProperty(key)); - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.java jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.java --- jasypt-1.8/src/main/java/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.java 2011-03-31 00:25:34.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,127 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.properties; - -import java.util.Properties; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.encryption.StringEncryptor; -import org.jasypt.properties.PropertyValueEncryptionUtils; -import org.jasypt.util.text.TextEncryptor; -import org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer; - -/** - *

- * Subclass of - * org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer - * which can make use of a {@link org.jasypt.encryption.StringEncryptor} or - * {@link org.jasypt.util.text.TextEncryptor} object to decrypt servlet context parameter values - * if they are encrypted in the loaded resource locations. - *

- *

- * A value is considered "encrypted" when it appears surrounded by - * ENC(...), like: - *

- *

- *

<param-value>ENC(!"DGAS24FaIO$)</param-value>
- *

- * - * @since 1.7 - * - * @author Daniel Fernández - * - */ -public final class EncryptableServletContextPropertyPlaceholderConfigurer - extends ServletContextPropertyPlaceholderConfigurer { - /* - * Only one of these instances will be initialized, the other one will be - * null. - */ - private final StringEncryptor stringEncryptor; - private final TextEncryptor textEncryptor; - - /** - *

- * Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance - * which will use the passed {@link StringEncryptor} object to decrypt - * encrypted values. - *

- * - * @param stringEncryptor - * the {@link StringEncryptor} to be used do decrypt values. It - * can not be null. - */ - public EncryptableServletContextPropertyPlaceholderConfigurer( - final StringEncryptor stringEncryptor) { - super(); - CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = stringEncryptor; - this.textEncryptor = null; - } - - /** - *

- * Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the - * passed {@link TextEncryptor} object to decrypt encrypted values. - *

- * - * @param textEncryptor - * the {@link TextEncryptor} to be used do decrypt values. It can - * not be null. - */ - public EncryptableServletContextPropertyPlaceholderConfigurer(final TextEncryptor textEncryptor) { - super(); - CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null"); - this.stringEncryptor = null; - this.textEncryptor = textEncryptor; - } - - /* - * (non-Javadoc) - * - * @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertPropertyValue(java.lang.String) - */ - protected String convertPropertyValue(final String originalValue) { - if (!PropertyValueEncryptionUtils.isEncryptedValue(originalValue)) { - return originalValue; - } - if (this.stringEncryptor != null) { - return PropertyValueEncryptionUtils.decrypt(originalValue, - this.stringEncryptor); - - } - return PropertyValueEncryptionUtils.decrypt(originalValue, this.textEncryptor); - } - - - - /* - * Spring's ServletContextPropertyPlaceholderConfigurer never creates a complete - * map of properties, and so never really applies the "convertPropertyValue" method - * to them. Instead it gets properties on the fly and returns them without conversion - * (as of Spring 3.0.5). - * - * This fix makes sure that variables are decrypted before being returned. - */ - protected String resolvePlaceholder(final String placeholder, final Properties props) { - return convertPropertyValue(super.resolvePlaceholder(placeholder, props)); - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security/PasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security/PasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security/PasswordEncoder.java 2010-10-16 18:38:03.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security/PasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,236 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security; - -import org.jasypt.digest.StringDigester; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.password.BasicPasswordEncryptor; -import org.jasypt.util.password.PasswordEncryptor; - -/** - *

- * This class implements the Spring Security (ACEGI) - * org.acegisecurity.providers.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.password.PasswordEncryptor or an object of type - * org.jasypt.digest.StringDigester (only one of them), - * which should be set by respectively calling - * {@link #setPasswordEncryptor(PasswordEncryptor)} or - * {@link #setStringDigester(StringDigester)} - * after creation. If neither a PasswordEncryptor nor - * a StringDigester are set, a new - * org.jasypt.util.password.BasicPasswordEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * PasswordEncryptor or StringDigester objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a PasswordEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PasswordEncryptor in several places, --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
- *    <property name="passwordEncryptor">
- *      <ref bean="jasyptPasswordEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a StringDigester - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the StringDigester in several places,    --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
- *    <property name="algorithm" value="SHA-1" />
- *    <property name="iterations" value="100000" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the StringDigester instance so that it can be used from      -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
- *    <property name="stringDigester">
- *      <ref bean="jasyptStringDigester" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.4 (existed since 1.2 as - * org.jasypt.springsecurity.PasswordEncoder) - * - * @author Daniel Fernández - * - */ -public final class PasswordEncoder - implements org.acegisecurity.providers.encoding.PasswordEncoder { - - // The password encryptor or string digester to be internally used - private PasswordEncryptor passwordEncryptor = null; - private StringDigester stringDigester = null; - private Boolean useEncryptor = null; - - - /** - * Creates a new instance of PasswordEncoder - */ - public PasswordEncoder() { - super(); - } - - - /** - * Sets a password encryptor to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param passwordEncryptor the password encryptor instance to be used. - */ - public void setPasswordEncryptor(final PasswordEncryptor passwordEncryptor) { - this.passwordEncryptor = passwordEncryptor; - this.useEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param stringDigester the string digester instance to be used. - */ - public void setStringDigester(final StringDigester stringDigester) { - this.stringDigester = stringDigester; - this.useEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.encryptPassword(rawPass); - } - return this.stringDigester.digest(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password (digest) against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.checkPassword(rawPass, encPass); - } - return this.stringDigester.matches(rawPass, encPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a password encryptor or a string digester has been set). - */ - private synchronized void checkInitialization() { - if (this.useEncryptor == null) { - this.passwordEncryptor = new BasicPasswordEncryptor(); - this.useEncryptor = Boolean.TRUE; - } else { - if (this.useEncryptor.booleanValue()) { - if (this.passwordEncryptor == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: password " + - "encryptor is null"); - } - } else { - if (this.stringDigester == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: string " + - "digester is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security/PBEPasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security/PBEPasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security/PBEPasswordEncoder.java 2010-10-16 18:38:03.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security/PBEPasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,253 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security; - -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.text.BasicTextEncryptor; -import org.jasypt.util.text.TextEncryptor; - -/** - *

- * This class implements the Spring Security (ACEGI) - * org.acegisecurity.providers.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Important: This class allows bi-directional password-based encryption - * of user passwords - * in ACEGI using Jasypt. But please note that passwords should not be - * encrypted in a bi-directional way, but instead as uni-directional - * digests (hashes). Encrypting passwords in a way they can be decrypted - * can be a severe security issue, and should only be considered in legacy - * or complex inter-application integration scenarios. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.text.TextEncryptor or an object of type - * org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), - * which should be set by respectively calling - * {@link #setTextEncryptor(TextEncryptor)} or - * {@link #setPbeStringEncryptor(PBEStringEncryptor)} - * after creation. If neither a TextEncryptor nor - * a PBEStringEncryptor are set, a new - * org.jasypt.util.text.BasicTextEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * TextEncryptor or PBEStringEncryptor objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a TextEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the TextEncryptor in several places,     --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the TextEncryptor instance so that it can be used from       -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
- *    <property name="textEncryptor">
- *      <ref bean="jasyptTextEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a PBEStringEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PBEStringEncryptor in several places,--> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
- *    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
- *    <property name="pbeStringEncryptor">
- *      <ref bean="jasyptPBEStringEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.4 (existed since 1.2 as - * org.jasypt.springsecurity.PasswordEncoder) - * - * @author Daniel Fernández - * - */ -public final class PBEPasswordEncoder - implements org.acegisecurity.providers.encoding.PasswordEncoder { - - // The text encryptor or PBE string encryptor to be internally used - private TextEncryptor textEncryptor = null; - private PBEStringEncryptor pbeStringEncryptor = null; - private Boolean useTextEncryptor = null; - - - /** - * Creates a new instance of PBEPasswordEncoder - */ - public PBEPasswordEncoder() { - super(); - } - - - /** - * Sets a text encryptor to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param textEncryptor the text encryptor instance to be used. - */ - public void setTextEncryptor(final TextEncryptor textEncryptor) { - this.textEncryptor = textEncryptor; - this.useTextEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param pbeStringEncryptor the PBE string encryptor instance to be used. - */ - public void setPbeStringEncryptor(final PBEStringEncryptor pbeStringEncryptor) { - this.pbeStringEncryptor = pbeStringEncryptor; - this.useTextEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useTextEncryptor.booleanValue()) { - return this.textEncryptor.encrypt(rawPass); - } - return this.pbeStringEncryptor.encrypt(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - String decPassword = null; - if (this.useTextEncryptor.booleanValue()) { - decPassword = this.textEncryptor.decrypt(encPass); - } else { - decPassword = this.pbeStringEncryptor.decrypt(encPass); - } - if ((decPassword == null) || (rawPass == null)) { - return (decPassword == rawPass); - } - return decPassword.equals(rawPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a text encryptor or a PBE string encryptor has been set). - */ - private synchronized void checkInitialization() { - if (this.useTextEncryptor == null) { - this.textEncryptor = new BasicTextEncryptor(); - this.useTextEncryptor = Boolean.TRUE; - } else { - if (this.useTextEncryptor.booleanValue()) { - if (this.textEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: text " + - "encryptor is null"); - } - } else { - if (this.pbeStringEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: PBE " + - "string encryptor is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security2/PasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security2/PasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security2/PasswordEncoder.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security2/PasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,235 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security2; - -import org.jasypt.digest.StringDigester; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.password.BasicPasswordEncryptor; -import org.jasypt.util.password.PasswordEncryptor; - -/** - *

- * This class implements the Spring Security 2.x - * org.springframework.security.providers.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.password.PasswordEncryptor or an object of type - * org.jasypt.digest.StringDigester (only one of them), - * which should be set by respectively calling - * {@link #setPasswordEncryptor(PasswordEncryptor)} or - * {@link #setStringDigester(StringDigester)} - * after creation. If neither a PasswordEncryptor nor - * a StringDigester are set, a new - * org.jasypt.util.password.BasicPasswordEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * PasswordEncryptor or StringDigester objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a PasswordEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PasswordEncryptor in several places, --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
- *    <property name="passwordEncryptor">
- *      <ref bean="jasyptPasswordEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a StringDigester - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the StringDigester in several places,    --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
- *    <property name="algorithm" value="SHA-1" />
- *    <property name="iterations" value="100000" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the StringDigester instance so that it can be used from      -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
- *    <property name="stringDigester">
- *      <ref bean="jasyptStringDigester" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.5 - * - * @author Daniel Fernández - * - */ -public final class PasswordEncoder - implements org.springframework.security.providers.encoding.PasswordEncoder { - - // The password encryptor or string digester to be internally used - private PasswordEncryptor passwordEncryptor = null; - private StringDigester stringDigester = null; - private Boolean useEncryptor = null; - - - /** - * Creates a new instance of PasswordEncoder - */ - public PasswordEncoder() { - super(); - } - - - /** - * Sets a password encryptor to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param passwordEncryptor the password encryptor instance to be used. - */ - public void setPasswordEncryptor(final PasswordEncryptor passwordEncryptor) { - this.passwordEncryptor = passwordEncryptor; - this.useEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param stringDigester the string digester instance to be used. - */ - public void setStringDigester(final StringDigester stringDigester) { - this.stringDigester = stringDigester; - this.useEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.encryptPassword(rawPass); - } - return this.stringDigester.digest(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password (digest) against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.checkPassword(rawPass, encPass); - } - return this.stringDigester.matches(rawPass, encPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a password encryptor or a string digester has been set). - */ - private synchronized void checkInitialization() { - if (this.useEncryptor == null) { - this.passwordEncryptor = new BasicPasswordEncryptor(); - this.useEncryptor = Boolean.TRUE; - } else { - if (this.useEncryptor.booleanValue()) { - if (this.passwordEncryptor == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: password " + - "encryptor is null"); - } - } else { - if (this.stringDigester == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: string " + - "digester is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security2/PBEPasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security2/PBEPasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security2/PBEPasswordEncoder.java 2010-10-16 18:38:00.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security2/PBEPasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,252 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security2; - -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.text.BasicTextEncryptor; -import org.jasypt.util.text.TextEncryptor; - -/** - *

- * This class implements the Spring Security 2.x - * org.springframework.security.providers.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Important: This class allows bi-directional password-based encryption - * of user passwords - * in Spring Security using Jasypt. But please note that passwords should not be - * encrypted in a bi-directional way, but instead as uni-directional - * digests (hashes). Encrypting passwords in a way they can be decrypted - * can be a severe security issue, and should only be considered in legacy - * or complex inter-application integration scenarios. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.text.TextEncryptor or an object of type - * org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), - * which should be set by respectively calling - * {@link #setTextEncryptor(TextEncryptor)} or - * {@link #setPbeStringEncryptor(PBEStringEncryptor)} - * after creation. If neither a TextEncryptor nor - * a PBEStringEncryptor are set, a new - * org.jasypt.util.text.BasicTextEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * TextEncryptor or PBEStringEncryptor objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a TextEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the TextEncryptor in several places,     --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the TextEncryptor instance so that it can be used from       -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
- *    <property name="textEncryptor">
- *      <ref bean="jasyptTextEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a PBEStringEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PBEStringEncryptor in several places,--> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
- *    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
- *    <property name="pbeStringEncryptor">
- *      <ref bean="jasyptPBEStringEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.5 - * - * @author Daniel Fernández - * - */ -public final class PBEPasswordEncoder - implements org.springframework.security.providers.encoding.PasswordEncoder { - - // The text encryptor or PBE string encryptor to be internally used - private TextEncryptor textEncryptor = null; - private PBEStringEncryptor pbeStringEncryptor = null; - private Boolean useTextEncryptor = null; - - - /** - * Creates a new instance of PBEPasswordEncoder - */ - public PBEPasswordEncoder() { - super(); - } - - - /** - * Sets a text encryptor to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param textEncryptor the text encryptor instance to be used. - */ - public void setTextEncryptor(final TextEncryptor textEncryptor) { - this.textEncryptor = textEncryptor; - this.useTextEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param pbeStringEncryptor the PBE string encryptor instance to be used. - */ - public void setPbeStringEncryptor(final PBEStringEncryptor pbeStringEncryptor) { - this.pbeStringEncryptor = pbeStringEncryptor; - this.useTextEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useTextEncryptor.booleanValue()) { - return this.textEncryptor.encrypt(rawPass); - } - return this.pbeStringEncryptor.encrypt(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - String decPassword = null; - if (this.useTextEncryptor.booleanValue()) { - decPassword = this.textEncryptor.decrypt(encPass); - } else { - decPassword = this.pbeStringEncryptor.decrypt(encPass); - } - if ((decPassword == null) || (rawPass == null)) { - return (decPassword == rawPass); - } - return decPassword.equals(rawPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a text encryptor or a PBE string encryptor has been set). - */ - private synchronized void checkInitialization() { - if (this.useTextEncryptor == null) { - this.textEncryptor = new BasicTextEncryptor(); - this.useTextEncryptor = Boolean.TRUE; - } else { - if (this.useTextEncryptor.booleanValue()) { - if (this.textEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: text " + - "encryptor is null"); - } - } else { - if (this.pbeStringEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: PBE " + - "string encryptor is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security3/PasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/PasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security3/PasswordEncoder.java 2010-10-16 18:38:04.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/PasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,235 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security3; - -import org.jasypt.digest.StringDigester; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.password.BasicPasswordEncryptor; -import org.jasypt.util.password.PasswordEncryptor; - -/** - *

- * This class implements the Spring Security 3.x - * org.springframework.security.authentication.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.password.PasswordEncryptor or an object of type - * org.jasypt.digest.StringDigester (only one of them), - * which should be set by respectively calling - * {@link #setPasswordEncryptor(PasswordEncryptor)} or - * {@link #setStringDigester(StringDigester)} - * after creation. If neither a PasswordEncryptor nor - * a StringDigester are set, a new - * org.jasypt.util.password.BasicPasswordEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * PasswordEncryptor or StringDigester objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a PasswordEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PasswordEncryptor in several places, --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
- *    <property name="passwordEncryptor">
- *      <ref bean="jasyptPasswordEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a StringDigester - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the StringDigester in several places,    --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
- *    <property name="algorithm" value="SHA-1" />
- *    <property name="iterations" value="100000" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the StringDigester instance so that it can be used from      -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
- *    <property name="stringDigester">
- *      <ref bean="jasyptStringDigester" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.6 - * - * @author Daniel Fernández - * - */ -public final class PasswordEncoder - implements org.springframework.security.authentication.encoding.PasswordEncoder { - - // The password encryptor or string digester to be internally used - private PasswordEncryptor passwordEncryptor = null; - private StringDigester stringDigester = null; - private Boolean useEncryptor = null; - - - /** - * Creates a new instance of PasswordEncoder - */ - public PasswordEncoder() { - super(); - } - - - /** - * Sets a password encryptor to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param passwordEncryptor the password encryptor instance to be used. - */ - public void setPasswordEncryptor(final PasswordEncryptor passwordEncryptor) { - this.passwordEncryptor = passwordEncryptor; - this.useEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setPasswordEncryptor or setStringDigester should be - * called. If both are, the last call will define which method will be - * used. - * - * @param stringDigester the string digester instance to be used. - */ - public void setStringDigester(final StringDigester stringDigester) { - this.stringDigester = stringDigester; - this.useEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.encryptPassword(rawPass); - } - return this.stringDigester.digest(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's PasswordEncryptor and StringDigester - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password (digest) against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - if (this.useEncryptor.booleanValue()) { - return this.passwordEncryptor.checkPassword(rawPass, encPass); - } - return this.stringDigester.matches(rawPass, encPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a password encryptor or a string digester has been set). - */ - private synchronized void checkInitialization() { - if (this.useEncryptor == null) { - this.passwordEncryptor = new BasicPasswordEncryptor(); - this.useEncryptor = Boolean.TRUE; - } else { - if (this.useEncryptor.booleanValue()) { - if (this.passwordEncryptor == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: password " + - "encryptor is null"); - } - } else { - if (this.stringDigester == null) { - throw new EncryptionInitializationException( - "Password encoder not initialized: string " + - "digester is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security3/PBEPasswordEncoder.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/PBEPasswordEncoder.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security3/PBEPasswordEncoder.java 2010-10-16 18:38:04.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/PBEPasswordEncoder.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,252 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security3; - -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.exceptions.EncryptionInitializationException; -import org.jasypt.util.text.BasicTextEncryptor; -import org.jasypt.util.text.TextEncryptor; - -/** - *

- * This class implements the Spring Security 3.x - * org.springframework.security.providers.encoding.PasswordEncoder - * interface, allowing Spring Security-enabled applications to use JASYPT - * for password encryption. - *

- *

- * Important: This class allows bi-directional password-based encryption - * of user passwords - * in Spring Security using Jasypt. But please note that passwords should not be - * encrypted in a bi-directional way, but instead as uni-directional - * digests (hashes). Encrypting passwords in a way they can be decrypted - * can be a severe security issue, and should only be considered in legacy - * or complex inter-application integration scenarios. - *

- *

- * Objects of this class will internally hold either an object of type - * org.jasypt.util.text.TextEncryptor or an object of type - * org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), - * which should be set by respectively calling - * {@link #setTextEncryptor(TextEncryptor)} or - * {@link #setPbeStringEncryptor(PBEStringEncryptor)} - * after creation. If neither a TextEncryptor nor - * a PBEStringEncryptor are set, a new - * org.jasypt.util.text.BasicTextEncryptor object is - * created and internally used. - *

- *

- * Important: This implementation ignores any salt provided through - * the interface methods, as the internal Jasypt - * TextEncryptor or PBEStringEncryptor objects normally use a - * random one. This means that salt can be safely passed as - * null. - *

- *

- * Usage with a TextEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the TextEncryptor in several places,     --> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the TextEncryptor instance so that it can be used from       -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
- *    <property name="textEncryptor">
- *      <ref bean="jasyptTextEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * Usage with a PBEStringEncryptor - *

- *

- * This class can be used like this from your Spring XML resource files: - *

- *
- *  ...
- *  <!-- Your application may use the PBEStringEncryptor in several places,--> 
- *  <!-- like for example at new user sign-up.                             --> 
- *  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
- *    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
- *    <property name="password" value="myPassword" />
- *  </bean>
- *  ...
- *  ...
- *  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
- *  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
- *  <!-- the security framework.                                           -->
- *  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
- *    <property name="pbeStringEncryptor">
- *      <ref bean="jasyptPBEStringEncryptor" />
- *    </property>
- *  </bean>
- *  ...
- *  ...
- *  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
- *  <!-- other implementation of the PasswordEncoder interface.            -->
- *  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
- *      <property name="userDetailsService" ref="userDetailsService"/>
- *      <property name="passwordEncoder">
- *        <ref bean="passwordEncoder" />
- *      </property>
- *  </bean>
- *  ...
- * 
- *

- * This class is thread-safe - *

- * - * @since 1.6 - * - * @author Daniel Fernández - * - */ -public final class PBEPasswordEncoder - implements org.springframework.security.authentication.encoding.PasswordEncoder { - - // The text encryptor or PBE string encryptor to be internally used - private TextEncryptor textEncryptor = null; - private PBEStringEncryptor pbeStringEncryptor = null; - private Boolean useTextEncryptor = null; - - - /** - * Creates a new instance of PBEPasswordEncoder - */ - public PBEPasswordEncoder() { - super(); - } - - - /** - * Sets a text encryptor to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param textEncryptor the text encryptor instance to be used. - */ - public void setTextEncryptor(final TextEncryptor textEncryptor) { - this.textEncryptor = textEncryptor; - this.useTextEncryptor = Boolean.TRUE; - } - - /** - * Sets a string digester to be used. Only one of - * setTextEncryptor or setPBEStringEncryptor should be - * called. If both are, the last call will define which method will be - * used. - * - * @param pbeStringEncryptor the PBE string encryptor instance to be used. - */ - public void setPbeStringEncryptor(final PBEStringEncryptor pbeStringEncryptor) { - this.pbeStringEncryptor = pbeStringEncryptor; - this.useTextEncryptor = Boolean.FALSE; - } - - - /** - * Encodes a password. This implementation completely ignores salt, - * as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param rawPass The password to be encoded. - * @param salt The salt, which will be ignored. It can be null. - */ - public String encodePassword(final String rawPass, final Object salt) { - checkInitialization(); - if (this.useTextEncryptor.booleanValue()) { - return this.textEncryptor.encrypt(rawPass); - } - return this.pbeStringEncryptor.encrypt(rawPass); - } - - - /** - * Checks a password's validity. This implementation completely ignores - * salt, as jasypt's TextEncryptor and PBEStringEncryptor - * normally use a random one. Thus, it can be safely passed as null. - * - * @param encPass The encrypted password against which to check. - * @param rawPass The password to be checked. - * @param salt The salt, which will be ignored. It can be null. - */ - public boolean isPasswordValid(final String encPass, final String rawPass, final Object salt) { - checkInitialization(); - String decPassword = null; - if (this.useTextEncryptor.booleanValue()) { - decPassword = this.textEncryptor.decrypt(encPass); - } else { - decPassword = this.pbeStringEncryptor.decrypt(encPass); - } - if ((decPassword == null) || (rawPass == null)) { - return (decPassword == rawPass); - } - return decPassword.equals(rawPass); - } - - - /* - * Checks that the PasswordEncoder has been correctly initialized - * (either a text encryptor or a PBE string encryptor has been set). - */ - private synchronized void checkInitialization() { - if (this.useTextEncryptor == null) { - this.textEncryptor = new BasicTextEncryptor(); - this.useTextEncryptor = Boolean.TRUE; - } else { - if (this.useTextEncryptor.booleanValue()) { - if (this.textEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: text " + - "encryptor is null"); - } - } else { - if (this.pbeStringEncryptor == null) { - throw new EncryptionInitializationException( - "PBE Password encoder not initialized: PBE " + - "string encryptor is null"); - } - } - } - } - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/spring/security3/TokenBasedRememberMeServices.java jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/TokenBasedRememberMeServices.java --- jasypt-1.8/src/main/java/org/jasypt/spring/security3/TokenBasedRememberMeServices.java 2010-10-24 18:58:37.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/spring/security3/TokenBasedRememberMeServices.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.spring.security3; - -import java.util.Date; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.jasypt.commons.CommonUtils; -import org.jasypt.digest.StringDigester; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices; -import org.springframework.security.web.authentication.rememberme.InvalidCookieException; - - -/** - *

- * Implementation of org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices - * which provides a "remember-me" cookie arranged in the same way as - * org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices, but using a - * Jasypt {@link StringDigester} passed as a parameter for performing the digest of the signature in the cookie - * (username + ":" + expiry time + ":" + password + ":" + key). - *

- *

- * This class is thread-safe - *

- * - * @since 1.7 - * - * @author Daniel Fernández - * - */ -public final class TokenBasedRememberMeServices extends AbstractRememberMeServices { - - - private StringDigester digester = null; - - - - public void setDigester(final StringDigester digester) { - this.digester = digester; - } - - - - - private String getSignatureData(final long tokenExpiryTime, final String username, final String password) { - return username + ":" + tokenExpiryTime + ":" + password + ":" + getKey(); - } - - - - protected UserDetails processAutoLoginCookie(final String[] cookieTokens, - final HttpServletRequest request, final HttpServletResponse response) { - - if (this.digester == null) { - throw new IllegalStateException("Service incorrectly initialized: a " + - "digester has not been set. A value must be specified for the \"digester\"" + - " property in service of class " + this.getClass().getName()); - } - - if (cookieTokens.length != 3) { - throw new InvalidCookieException("Wrong number of tokens in cookie"); - } - - final String usernameToken = cookieTokens[0]; - final String expiryToken = cookieTokens[1]; - final String digestedSignature = cookieTokens[2]; - - long expiryTimestamp = -1; - try { - expiryTimestamp = new Long(expiryToken).longValue(); - } catch (NumberFormatException nfe) { - throw new InvalidCookieException("Invalid cookie expiry token"); - } - - if (expiryTimestamp < System.currentTimeMillis()) { - // Cookie has expired - throw new InvalidCookieException("Cookie has expired (expired on '" + new Date(expiryTimestamp) + "'; current time is '" + new Date() + "')"); - } - - // Retrieve user details - final UserDetails userDetails = - getUserDetailsService().loadUserByUsername(usernameToken); - final String username = userDetails.getUsername(); - final String password = userDetails.getPassword(); - - // Check signature data - if (!this.digester.matches(getSignatureData(expiryTimestamp, username, password), digestedSignature)) { - throw new InvalidCookieException("Cookie signature is not valid"); - } - - return userDetails; - - } - - - - public void onLoginSuccess(final HttpServletRequest request, final HttpServletResponse response, - final Authentication successfulAuthentication) { - - if (this.digester == null) { - throw new IllegalStateException("Service incorrectly initialized: a " + - "digester has not been set. A value must be specified for the \"digester\"" + - " property in service of class " + this.getClass().getName()); - } - - String username = null; - String password = null; - - if (successfulAuthentication.getPrincipal() instanceof UserDetails) { - final UserDetails userDetails = (UserDetails) successfulAuthentication.getPrincipal(); - username = userDetails.getUsername(); - password = userDetails.getPassword(); - } else { - username = successfulAuthentication.getPrincipal().toString(); - password = (successfulAuthentication.getCredentials() == null? null : successfulAuthentication.getCredentials().toString()); - } - - if (CommonUtils.isEmpty(username) || CommonUtils.isEmpty(password)) { - // both user name and password have to be non-empty. No cookie to be added - return; - } - - final int tokenValiditySeconds = getTokenValiditySeconds(); - final long expiryTime = - System.currentTimeMillis() + 1000L* (tokenValiditySeconds < 0 ? TWO_WEEKS_S : tokenValiditySeconds); - - final String signature = this.digester.digest(getSignatureData(expiryTime, username, password)); - - setCookie(new String[] {username, Long.toString(expiryTime), signature}, tokenValiditySeconds, request, response); - - if (this.logger.isDebugEnabled()) { - this.logger.debug("Added remember-me cookie for user '" + username + "', expiry: '" + new Date(expiryTime) + "'"); - } - - } - - - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/util/digest/Digester.java jasypt-1.9.2/src/main/java/org/jasypt/util/digest/Digester.java --- jasypt-1.8/src/main/java/org/jasypt/util/digest/Digester.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/util/digest/Digester.java 2014-02-25 00:22:19.000000000 +0000 @@ -22,7 +22,6 @@ import java.security.Provider; import org.jasypt.digest.StandardByteDigester; -import org.jasypt.exceptions.AlreadyInitializedException; /** *

diff -Nru jasypt-1.8/src/main/java/org/jasypt/util/password/ConfigurablePasswordEncryptor.java jasypt-1.9.2/src/main/java/org/jasypt/util/password/ConfigurablePasswordEncryptor.java --- jasypt-1.8/src/main/java/org/jasypt/util/password/ConfigurablePasswordEncryptor.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/util/password/ConfigurablePasswordEncryptor.java 2014-02-25 00:22:19.000000000 +0000 @@ -24,7 +24,6 @@ import org.jasypt.digest.StandardByteDigester; import org.jasypt.digest.StandardStringDigester; import org.jasypt.digest.config.DigesterConfig; -import org.jasypt.exceptions.AlreadyInitializedException; /** *

diff -Nru jasypt-1.8/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.java jasypt-1.9.2/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.java --- jasypt-1.8/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.java 2014-02-25 00:22:19.000000000 +0000 @@ -23,7 +23,6 @@ import javax.servlet.ServletContextListener; import org.jasypt.commons.CommonUtils; -import org.jasypt.encryption.pbe.config.WebPBEConfig; import org.jasypt.exceptions.EncryptionInitializationException; /** diff -Nru jasypt-1.8/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializer.java jasypt-1.9.2/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializer.java --- jasypt-1.8/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializer.java 2011-07-24 16:21:44.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/web/pbeconfig/WebPBEInitializer.java 2014-02-25 00:22:19.000000000 +0000 @@ -19,7 +19,6 @@ */ package org.jasypt.web.pbeconfig; -import org.jasypt.encryption.pbe.config.WebPBEConfig; diff -Nru jasypt-1.8/src/main/java/org/jasypt/wicket/JasyptCryptFactory.java jasypt-1.9.2/src/main/java/org/jasypt/wicket/JasyptCryptFactory.java --- jasypt-1.8/src/main/java/org/jasypt/wicket/JasyptCryptFactory.java 2011-07-24 16:21:39.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/wicket/JasyptCryptFactory.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.wicket; - -import org.apache.wicket.util.crypt.ICrypt; -import org.apache.wicket.util.crypt.ICryptFactory; -import org.jasypt.encryption.pbe.PBEByteEncryptor; -import org.jasypt.encryption.pbe.PBEStringEncryptor; - - -/** - *

- * Implementation of the Apache Wicket {@link ICryptFactory} interface - * which returns {@link JasyptCrypt} instances. - *

- *

- * Requires a {@link PBEByteEncryptor} as a constructor argument, which can - * be created or retrieved from any part of the jasypt encryption configuration - * infrastructure. - *

- *

- * - *

- *

- * This class is thread-safe. - *

- * - * @since 1.4 - * @author Daniel Fernández - * - */ -public final class JasyptCryptFactory implements ICryptFactory { - - // Encryptor doesn't need to be instanced each time. We hold a reference. - private final JasyptCrypt jasyptCrypt; - - /** - *

- * Creates a new instance of JasyptCryptFactory. - *

- *

- * This factory uses an instance of {@link PBEByteEncryptor} instead of - * a {@link PBEStringEncryptor} (as could be expected) because Wicket - * requires a specific type of String encoding (URL and file safe - * BASE64), which is managed by a wicket internal class, and which - * expectes byte[] input. - *

- * - * @param encryptor the PBEByteEncryptor to be used. - */ - public JasyptCryptFactory(final PBEByteEncryptor encryptor) { - this.jasyptCrypt = new JasyptCrypt(encryptor); - } - - - /** - *

- * Return a new encryptor object. - *

- *

- * This method returns always the same JasyptCrypt object, instead - * of creating a new one. - *

- */ - public ICrypt newCrypt() { - return this.jasyptCrypt; - } - - -} diff -Nru jasypt-1.8/src/main/java/org/jasypt/wicket/JasyptCrypt.java jasypt-1.9.2/src/main/java/org/jasypt/wicket/JasyptCrypt.java --- jasypt-1.8/src/main/java/org/jasypt/wicket/JasyptCrypt.java 2010-10-16 18:38:03.000000000 +0000 +++ jasypt-1.9.2/src/main/java/org/jasypt/wicket/JasyptCrypt.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* - * ============================================================================= - * - * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) - * - * 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 - * - * http://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. - * - * ============================================================================= - */ -package org.jasypt.wicket; - -import org.apache.wicket.WicketRuntimeException; -import org.apache.wicket.util.crypt.Base64UrlSafe; -import org.apache.wicket.util.crypt.ICrypt; -import org.jasypt.encryption.pbe.PBEByteEncryptor; - - -/** - *

- * Jasypt's implementation of {@link ICrypt}, based on the use of a - * {@link PBEByteEncryptor} object for encryption and decryption operations. - *

- *

- * This class is thread-safe. - *

- * - * @since 1.4 - * @author Daniel Fernández - * - */ -public final class JasyptCrypt implements ICrypt { - - // Encoding used to convert java String from and to byte[] - private static final String CHARACTER_ENCODING = "UTF-8"; - - // The wrapped encryptor - private final PBEByteEncryptor encryptor; - - - /** - *

- * Creates a new JasyptCrypt object, wrapping the passed - * encryptor. - *

- * - * @param encryptor the PBEByteEncryptor to be used internally. - */ - public JasyptCrypt(final PBEByteEncryptor encryptor) { - this.encryptor = encryptor; - } - - - /** - *

- * Decrypts a string using URL and filename safe Base64 decoding. - *

- * - * @param text the text to be decrypted. - * @return the decrypted string. - */ - public String decryptUrlSafe(final String text) { - - try { - final byte[] base64EncryptedBytes = text.getBytes(); - final byte[] encryptedBytes = - Base64UrlSafe.decodeBase64(base64EncryptedBytes); - return new String( - this.encryptor.decrypt(encryptedBytes), CHARACTER_ENCODING); - } catch (Exception e) { - throw new WicketRuntimeException(e); - } - - } - - - /** - *

- * Encrypts a string using URL and filename safe Base64 encoding. - *

- * - * @param plainText the text to be encrypted. - * @return encrypted string. - */ - public String encryptUrlSafe(final String plainText) { - - try { - final byte[] plainBytes = plainText.getBytes(CHARACTER_ENCODING); - final byte[] encryptedBytes = this.encryptor.encrypt(plainBytes); - return new String(Base64UrlSafe.encodeBase64(encryptedBytes)); - } catch (Exception e) { - throw new WicketRuntimeException(e); - } - - } - - - /** - *

- * Important: Using jasypt, it makes no sense to change the encryption - * key once the encryptor has been initialized, and so this method is - * implemented to throw UnsupportedOperationException always. - *

- */ - public void setKey(final String key) { - throw new UnsupportedOperationException( - "JasyptCrypt encryptors cannot be set password by calling " + - ICrypt.class.getName() + ".setKey()"); - } - -} diff -Nru jasypt-1.8/src/main/javadoc/overview.html jasypt-1.9.2/src/main/javadoc/overview.html --- jasypt-1.8/src/main/javadoc/overview.html 2011-07-23 17:09:02.000000000 +0000 +++ jasypt-1.9.2/src/main/javadoc/overview.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ - - - -

- Direct links to the most popular classes: -

-
    -
  • Easy encryption entities: -
      -
    • {@link org.jasypt.util.binary.BinaryEncryptor}
    • -
    • {@link org.jasypt.util.digest.Digester}
    • -
    • {@link org.jasypt.util.numeric.DecimalNumberEncryptor}
    • -
    • {@link org.jasypt.util.numeric.IntegerNumberEncryptor}
    • -
    • {@link org.jasypt.util.password.PasswordEncryptor}
    • -
    • {@link org.jasypt.util.text.TextEncryptor}
    • -
    -
  • -
  • Message digesting: -
      -
    • {@link org.jasypt.digest.StandardByteDigester}
    • -
    • {@link org.jasypt.digest.StandardStringDigester}
    • -
    -
  • -
  • Message encrypting: -
      -
    • {@link org.jasypt.encryption.pbe.StandardPBEByteEncryptor}
    • -
    • {@link org.jasypt.encryption.pbe.StandardPBEStringEncryptor}
    • -
    • {@link org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor}
    • -
    • {@link org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor}
    • -
    -
  • -
  • Hibernate transparent encryption: -
      -
    • {@link org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry}
    • -
    • {@link org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor}
    • -
    • {@link org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor}
    • -
    • {@link org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor}
    • -
    • {@link org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor}
    • -
    -
  • -
  • Spring Security 1.x (ACEGI Security) integration: -
      -
    • {@link org.jasypt.spring.security.PasswordEncoder}
    • -
    • {@link org.jasypt.spring.security.PBEPasswordEncoder}
    • -
    -
  • -
  • Spring Security 2.x integration: -
      -
    • {@link org.jasypt.spring.security2.PasswordEncoder}
    • -
    • {@link org.jasypt.spring.security2.PBEPasswordEncoder}
    • -
    -
  • -
  • Spring Security 3.x integration: -
      -
    • {@link org.jasypt.spring.security3.PasswordEncoder}
    • -
    • {@link org.jasypt.spring.security3.PBEPasswordEncoder}
    • -
    -
  • -
  • Salt generation: -
      -
    • {@link org.jasypt.salt.SaltGenerator}
    • -
    • {@link org.jasypt.salt.RandomSaltGenerator}
    • -
    • {@link org.jasypt.salt.FixedByteArraySaltGenerator}
    • -
    • {@link org.jasypt.salt.FixedStringSaltGenerator}
    • -
    -
  • -
-
- - - diff -Nru jasypt-1.8/src/site/apt/advancedconfiguration.apt jasypt-1.9.2/src/site/apt/advancedconfiguration.apt --- jasypt-1.8/src/site/apt/advancedconfiguration.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/advancedconfiguration.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ - ------- - Advanced Configuration - ------- - - -Advanced configuration for encyptors and digesters - - Jasypt allows its provided encryptors and digesters to be configured in - any specific ways the user may need. - - This is achieved by letting the user define his/her own classes, - implementing specific interfaces, and putting these objects in charge - of retrieving the configuration parameters in the user's preferred way. - - The <*Config> interfaces which have to be implemented are: - - * <> for the configuration of - <<>> and <<>> objects - (by calling their respective <<>> methods). There also - is an <> interface - for adding configuration parameters specific to String digesting. - - [] - - * <> for the configuration of - <<>>, <<>>, - <<>> and <<>> - objects (also by calling their respective <<>> methods). There also - is an <> interface - for adding configuration parameters specific to String encryption. - - Jasypt provides at the moment two of the - <*Config> interfaces for digesters, and three for encryptors: - - * <> and - <>, which allow - setting configuration properties in a (via - <<>> methods). Their variants are - <> and - <>. - - [] - - * <> and - <>, which - besides allowing <<>> configuration, also - allow the values of the configuration properties to be set in - environment variables or JVM system properties. This will allow the user, - for example, to set an encryption password in an environment variable, - start the application or application server, let the jasypt encryptor - object initialise, and then unset the variable (thus hiding it). - Their variants are - <> and - <>. - - [] - - * <> (and - <>), only for - Password Based Encryption, which allow the configuration of encryptor - passwords in web applications from the web itself, once the webapp - has been deployed (and thus allowing developers not to store the - encryption passwords in any file, simply providing it to the app each - time it is deployed). {{{webconfiguration.html}Learn more}}. - - - <>: If a *Config object returns <<>> for a configuration - value, then it will be simply ignored, and other configuration mechanisms - (like default values or the encryptor's or digester's own <<>> methods) - will be honored. . - - - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/bouncy-castle.apt jasypt-1.9.2/src/site/apt/bouncy-castle.apt --- jasypt-1.8/src/site/apt/bouncy-castle.apt 2008-01-16 14:27:33.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/bouncy-castle.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ - ------- - Using Jasypt with the Bouncy Castle JCE provider - ------- - - -Using Jasypt with the Bouncy Castle JCE provider - - The {{{http://www.bouncycastle.org}Bouncy Castle}} is a powerful and - complete cryptography package which includes, among other things, a JCE - provider implementing much more encryption and digest algorithms than - the standard Java Virtual Machine's provider. - - Among others, Bouncy Castle implements the - {{{http://en.wikipedia.org/wiki/Advanced_Encryption_Standard}AES - (Advanced Encryption Standard) [wikipedia]}} algorithms. - - Bouncy Castle can be used in jasypt in a very easy way, just like with - any other JCE provider. For this, we should know: - - * The provider class (implementation of <<>>) is - <> - - [] - - * The name of the Bouncy Castle provider, once registered, is "<>". - - - Now we can use Bouncy Castle at jasypt both registering - the provider beforehand (thus using its name, <<>>) or not - registering it (and using its provider class): - ----------------- -... -StandardPBEStringEncryptor myFirstEncryptor = new StandardPBEStringEncryptor(); -myFirstEncryptor.setProvider(new BouncyCastleProvider()); -myFirstEncryptor.setAlgorithm("PBEWITHSHA256AND128BITAES-CBC-BC"); -myFirstEncryptor.setPassword(myPassword); - -String myFirstEncryptedText = myFirstEncryptor.encrypt(myText); -... ----------------- - - ...or, by provider name... - ----------------- -... -Security.addProvider(new BouncyCastleProvider()); -... -StandardPBEStringEncryptor mySecondEncryptor = new StandardPBEStringEncryptor(); -mySecondEncryptor.setProviderName("BC"); -mySecondEncryptor.setAlgorithm("PBEWITHSHA256AND128BITAES-CBC-BC"); -mySecondEncryptor.setPassword(myPassword); - -String mySecondEncryptedText = mySecondEncryptor.encrypt(myText); -... ----------------- - - We can also use it for digests... - ----------------- -... -StandardStringDigester digester = new StandardStringDigester(); -digester.setProvider(new BouncyCastleProvider()); -digester.setAlgorithm("WHIRLPOOL"); - -String digest = digester.digest(message); -... ----------------- - - ...we can also use password-specific utils like ConfigurablePasswordEncryptor... - ----------------- -... -ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor(); -passwordEncryptor.setProvider(new BouncyCastleProvider()); -passwordEncryptor.setAlgorithm("WHIRLPOOL"); - -String encryptedPassword = passwordEncryptor.encryptPassword(password); -... ----------------- - - And also, we can use it in Hibernate mappings, when configuring the - typedefs by extension, like: - -------------------- - - ... - - PBEWITHSHA256AND128BITAES-CBC-BC - BC - jasypt - 1000 - - ... - - ... - - ... - - ... - -------------------- - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/changelog.apt jasypt-1.9.2/src/site/apt/changelog.apt --- jasypt-1.8/src/site/apt/changelog.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/changelog.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ - ------- - ChangeLog - ------- - - -Changes from 1.7.1 to 1.8 - - * Modified in-memory storage of PBE passwords to avoid having Strings in memory that contain - the password being used. Now PBE passwords are stored as char[] objects that are zeroed as - soon as they are used. New "setPasswordCharArray(char[] password)" methods allow users to - specify passwords as char[] also, so that there is no need to create String passwords. - - * Modified the order in which Normalizer implementations are used: now icu4j is used if it is - in the classpath (even if Java >= 6 is being used). If icu4j is not present, java.text.Normalizer - is used (if Java >= 6). - - * Added to EncryptablePropertyPlaceholderConfigurer the ability to decrypt system properties. - - * Fixed CLI scripts: *.jar in "find" command was matching jar files in the current folder - instead of those in the lib folder. Fixed by surrounding "*.jar" by simple inverted commas. - - * Small bugfixing for large BigInteger number decryption. - - -Changes from 1.7 to 1.7.1 - - * Fixed EncryptableServletContextPropertyPlaceholderConfigurer - - -Changes from 1.6 to 1.7 - - * Fixed Hibernate 3.6 compatibility. - - * Removed dependencies on commons-lang and commons-codec. Jasypt can now operate - without depedencies on JDK version >= 6. - - * Added pool-based implementations of Standard digesters and PBE encryptors to improve - performance in multiprocessor systems. - - * Created "lite" .jar package including only standard String and Byte digest and - encryption: no BigDecimal or BigInteger encryption, no "util" package, - no Spring/Hibernate/Wicket integrations, no Web PBE configuration, no CLI utils, - no properties encryption, no Zero salt generator. - - * Added class org.jasypt.registry.AlgorithmRegistry with utility methods for - obtaining the names of all the available digest/PBE algorithms. - - * Added "prefix" and "suffix" configuration parameters to String digesters, in order - to add a prefix and/or suffix to all digest results (and also expect these prefixes or - suffixes when matching existing digests). - - * Added method "getInvertPositionOfSaltInMessageBeforeDigesting()" to DigesterConfig - and "setInvertPositionOfSaltInMessageBeforeDigesting(...)" to StandardByteDigester - and StandardStringDigester in order to being able to append the salt after the message - before digesting instead of the default behaviour (insert it before the message). - This is useful for enhancing compatibility with some common LDAP password encryption - schemes like {SSHA}. - - * Added method "getInvertPositionOfPlainSaltInEncryptionResults()" to DigesterConfig - and "setInvertPositionOfPlainSaltInEncryptionResults(...)" to StandardByteDigester - and StandardStringDigester in order to being able to append the plain (unhashed) - salt after the digest instead of the default behaviour (insert it before the digest). - This is useful for enhancing compatibility with some common LDAP password encryption - schemes like {SSHA}. - - * Added method "getUseLenientSaltSizeCheck()" to DigesterConfig and - "setUseLenientSaltSizeCheck(...)" to StandardByteDigester - and StandardStringDigester in order to allow digesters to check digests created - with any size of salt (not equal to the value set for the "saltSizeBytes" property). - - * Added an "org.jasypt.util.password.rfc2307" package containing utility classes for - password encryption operations according to common LDAP schemes like {MD5}, - {SHA}, {SMD5} and {SSHA}. - - * Rebuilt CLI scripts: now both Windows and Linux versions can be run from outside - the "bin" folder. New configuration parameters added. - - * Added "listAlgorithms" CLI command that lists all digest and PBE algorithms - present in the Java Virtual Machine. - - * Rebuilt zip distribution package: remove unneeded "cli-bundle" and added icu4j - to libs. - - * Added org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer - as a sublass of org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer, - for transparent decryption of servlet context parameters (like the ones in web.xml). - - * Added org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer - as a subclass of org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer, - for transparent decryption of preferences set with JDK 1.4's Preferences API. - - * Added Spring Security 3 -compatible TokenBasedRememberMeServices implementation - using a Jasypt StandardStringDigester for digesting the data signature. - - - -Changes from 1.5 to 1.6 - - * Modified Class.forName calls to use current thread's context classloader. - - * Fixed JavaDoc for Spring Security -related classes. - - * Added missing registerPBE*Encryptor methods in HibernatePBEEncryptorRegistry - - * Added compatibility with Spring Framework 3.0.x and Spring Security 3.0.x - - * Tested compatibility with Apache Wicket 1.4.x and Hibernate 3.2.x - - -Changes from 1.4.1 to 1.5 - - * Dependency on ICU4j made optional in Java 6 environments. - - * Created new versions of old ACEGI's PasswordEncoder and PBEPasswordEncoder - for Spring Security 2.x in package org.jasypt.spring.security2. - - * Random number generation algorithm can now be specified in RandomSaltGenerator. - - * Fixed bug in .sh files in the bin folder. $@ did not work with inputs that - contained spaces and had to be substituted by "$@". - - -Changes from 1.4 to 1.4.1 - - * Fixed bug in <<>> which made decryption - of datasource configuration not to work properly. - - -Changes from 1.3.1 to 1.4 - - * Added methods to Simple* and Environment* config classes for both Digesters - and PBEEncryptors to allow them to be configured entirely with Strings. - - * Added to org.jasypt.encryption.pbe.StandardPBEByteEncryptor a workaround - for Sun JCE's bug 4953555 (http://bugs.sun.com/view_bug.do?bug_id=4953555). - - * Added org.jasypt.properties.EncryptableProperties as a java.util.Properties - which allows transparent decryption of encrypted property values. - - * Moved org.jasypt.hibernate.ParameterNaming to - org.jasypt.hibernate.type.ParameterNaming. - - * Added org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider - and org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider - for allowing encrypted datasource parameters in hibernate.cfg.xml - files. - - * Added org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer - and org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer - to allow use of encrypted .properties files from within Spring applications - in a transparent manner. - - * Package org.jasypt.springsecurity renamed as org.jasypt.spring.security, and - deprecated classes in the old package (will be removed in 1.5). - - * Added org.jasypt.salt.ZeroSaltGenerator for creating salts filled with - "zero" bytes. - - * Added org.jasypt.intf.service.JasyptStatelessService for supporting CLI - operation and development of stateless services (like web services) for - Jasypt. - - * Added org.jasypt.intf.cli.JasyptStringDigestCLI, - org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI and - org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI to allow the execution of - digest, encryption and decryption commands from the command line, useful - for knowing which value to write in an encrypted .properties file. - - * Created new zip distribution containing convenience .sh and .bat files for - executing CLI tools. - - -Changes from 1.3 to 1.3.1 - - * Solved configuration bug in "StandardPBEByteEncryptor.initialize()" for - algorithms coming from *Config objects. - - -Changes from 1.2 to 1.3 - - * A new open provider - API which will allow the use of non-default JCE providers like - {{{http://www.bouncycastle.org}Bouncy Castle}}. With this, any - PBE or digest algorithm you can get from any JCE provider is available - for you to use with Jasypt. - - * A new web PBE configuration system for avoiding storing encryption - passwords in files in web applications, and instead asking the - authorised admin for these passwords through a web form each time - the application is deployed. - - * Ability to output Strings encoded in hexadecimal besides BASE64. - -Changes from 1.1 to 1.2 - - * <>. - - * Numeric encryption functionalities: - - * New <<>> and - <<>> in the - <<>> package. - - * Salt generation functionalities: - - * Created new salt generation infrastructure, making different - implementations of salt generation possible (including fixed salt). - Jasypt now provides three implementations: secure random salt, fixed - byte[]-based salt and fixed String-based salt. - - * Utils: - - * Refactored util package (<<>>) into - several subpackages: <<>>, <<>>, <<>>, - <<>> and <<>>. - - * Created <<>> and <<>> interfaces, - to unify both basic- and strong-encryption implementations. - - - * Added <<>> for a more - configurable way of using the "easy" password encryptor. - - * Added binary utils (<<>>) for easy encryption of - binaries. - - * Added new <<>> package with easy utils for numeric - encryption. - - * Hibernate integration: - - * Refactored <<>> package into new <<>> and - <<>> subpackages. - - - * Added <<>> support for <<>>, - <<>> and <<>> encryptors. - - * Added creation of standard encryptor in Hibernate encryptor objects - so that <<>> method becomes optional and hibernate encryptors - can be directly configured via <<>>, <<>>, etc. - - * Added Hibernate type for encryption of binaries (byte[]) into SQL BLOBs. - - * Added Hibernate type for encryption of BigIntegers into SQL NUMERICs. - - * Added Hibernate type for encryption of BigDecimals into SQL NUMERICs. - - * Added Hibernate type for encryption of Bytes into SQL VARCHARs. - - * Added Hibernate type for encryption of Shorts into SQL VARCHARs. - - * Added Hibernate type for encryption of Integers into SQL VARCHARs. - - * Added Hibernate type for encryption of Longs into SQL VARCHARs. - - * Added Hibernate type for encryption of Floats into SQL VARCHARs. - - * Added Hibernate type for encryption of Doubles into SQL VARCHARs. - - * Added Hibernate type for encryption of Booleans into SQL VARCHARs. - - * Added Hibernate type for encryption of Dates into SQL VARCHARs. - - * Added Hibernate type for encryption of Calendars into SQL VARCHARs. - - * Spring Security (ACEGI) integration: - - * Refactored <<>> package: created new - <<>> class for use with both - <<>> - or <<>> implementations. - - - * Created new <<>> for using - <<>> or - <<>> from ACEGI Security - (bi-directional encryption of passwords). - - - -Changes from 1.0 to 1.1 - - * [jasypt-spring-security] Added the {{{http://www.acegisecurity.org}Spring Security (Acegi Security)}} integration module. - - * [jasypt] Added <<>> as a class for - easy password encryption using a stronger algorithm. - - * [jasypt] Added <<>> as a class for - creating simple binary message digests. - - * [jasypt] Added <<>> and - <<>> for configuration - of encryptors and digesters using environment variables and system properties. - - * [jasypt] Objects of class <<>> now initialize their - internal <<>> at instance creation. - - * [jasypt] Made <<>> and - <<>> extend <<>> - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/cli.apt jasypt-1.9.2/src/site/apt/cli.apt --- jasypt-1.8/src/site/apt/cli.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/cli.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,320 +0,0 @@ - ------- - Encrypting from the command line - ------- - - -Encrypting from the command line: Jasypt CLI Tools - - Jasypt supplies a bunch of Command Line Interface (CLI) tools, useful for - performing encryption, decryption and digest operations from the command line. - - To use this tools, you should {{{download.html}download}} the - zip file (named <<>>) and unzip it. Once done, - you will find a <<>> directory containing: - - * A set of <<.bat>> files for Windows execution: - - * <<>>: for PBE (Password Based Encryption) encryption operations. - - * <<>>: for PBE (Password Based Encryption) decryption operations. - - * <<>>: for message digest operations. - - * <<>>: for listing the digest and PBE encryption algorithms available in your JVM. - - [] - - * A set of <<.sh>> files for Linux/UNIX execution: - - * <<>>: for PBE (Password Based Encryption) encryption operations. - - * <<>>: for PBE (Password Based Encryption) decryption operations. - - * <<>>: for message digest operations. - - * <<>>: for listing the digest and PBE encryption algorithms available in your JVM. - - <(Please note that before using the .sh files, you might need to add execution - permissions to them with something like "chmod u+x *.sh".)> - - [] - - Most of these commands are executed with the following syntax: - ---- -[command] [argument1]=[value1] [argument2]=[value2] ... ---- - - For example: - ---- -./digest.sh input="U3ERPA33_W0RD" algorithm=SHA1 ---- - - <>: All these commands honor the existence of a <<>> - environment variable containing extended classpath definitions for the execution of - the encryption/decryption/digest commands. This feature can be useful if the user - wants to configurehis/her own security provider or salt generator - implementation, or if the user is using Java 1.5 or older and needs to add - icu4j's jars to the classpath (which are not included with jasypt's distribucion - any more). - - <>: Most of these commands admit a <<>> parameter - (which can be set to (default) or ) which let the user switch - from an explanatory output to a very reduced one, showing only the result - of the operation (specially useful for scripting). - - -* Encryption from the command line ("encrypt" command) - - Encryption is performed at the command line with the - <<>>/<<>> command, and its usage and parametrization - corresponds exactly with that of a <<>>. - All the default values of this encryptor class are assumed when - executing the CLI command. To know more, see {{{api/jasypt/apidocs}JavaDoc}}. - - <>: - ---- -$ ./encrypt.sh -Using classpath: .:./lib/icu4j-3.4.4.jar:./lib/jasypt-1.8.jar - -USAGE: encrypt.sh [ARGUMENTS] - - * Arguments must apply to format: - - "arg1=value1 arg2=value2 arg3=value3 ..." - - * Required arguments: - - input - password - - * Optional arguments: - - verbose - algorithm - keyObtentionIterations - saltGeneratorClassName - providerName - providerClassName - stringOutputType ---- - - - <>: - ---- - -$ ./encrypt.sh input="This is my message to be encrypted" password=MYPAS_WORD - - ----ENVIRONMENT----------------- - -Runtime: Sun Microsystems Inc. Java HotSpot(TM) Client VM 1.6.0_03-b05 - - - - ----ARGUMENTS------------------- - -input: This is my message to be encrypted -password: MYPAS_WORD - - - - ----OUTPUT---------------------- - -k1AwOd5XuW4VfPQtEXEdVlMnaNn19hivMbn1G4JQgq/jArjtKqryXksYX4Hl6A0e - ---- - - ---- - -$ ./encrypt.sh input="This is my message to be encrypted" password=MYPAS_WORD verbose=false -uv9+BnQFuZbfTV5Kf45oBOr0eJzBW5AS+XaYY+Lu5XWYhGgl0Ee41P0QUGpIrfyD - ---- - - - - - -* Decryption from the command line ("decrypt" command) - - Decryption is performed at the command line with the - <<>>/<<>> command, and its usage and parametrization - corresponds exactly with that of a <<>>. - All the default values of this encryptor class are assumed when - executing the CLI command. To know more, see {{{api/jasypt/apidocs}JavaDoc}}. - - <>: - ---- -$ ./decrypt.sh -Using classpath: .:./lib/icu4j-3.4.4.jar:./lib/jasypt-1.8.jar - -USAGE: decrypt.sh [ARGUMENTS] - - * Arguments must apply to format: - - "arg1=value1 arg2=value2 arg3=value3 ..." - - * Required arguments: - - input - password - - * Optional arguments: - - verbose - algorithm - keyObtentionIterations - saltGeneratorClassName - providerName - providerClassName - stringOutputType ---- - - - <>: - ---- - -$ ./decrypt.sh input="k1AwOd5XuW4VfPQtEXEdVlMnaNn19hivMbn1G4JQgq/jArjtKqryXksYX4Hl6A0e" password=MYPAS_WORD - - ----ENVIRONMENT----------------- - -Runtime: Sun Microsystems Inc. Java HotSpot(TM) Client VM 1.6.0_03-b05 - - - - ----ARGUMENTS------------------- - -input: k1AwOd5XuW4VfPQtEXEdVlMnaNn19hivMbn1G4JQgq/jArjtKqryXksYX4Hl6A0e -password: MYPAS_WORD - - - - ----OUTPUT---------------------- - -This is my message to be encrypted - ---- - - ---- - -$ ./decrypt.sh input="k1AwOd5XuW4VfPQtEXEdVlMnaNn19hivMbn1G4JQgq/jArjtKqryXksYX4Hl6A0e" password=MYPAS_WORD verbose=false -This is my message to be encrypted - ---- - - - - - - -* Digest from the command line ("digest" command) - - Digest is performed at the command line with the - <<>>/<<>> command, and its usage and parametrization - corresponds exactly with that of a <<>>. - All the default values of this digester class are assumed when - executing the CLI command. To know more, see {{{api/jasypt/apidocs}JavaDoc}}. - - <>: - ---- -$ ./digest.sh -Using classpath: .:./lib/icu4j-3.4.4.jar:./lib/jasypt-1.8.jar - -USAGE: digest.sh [ARGUMENTS] - - * Arguments must apply to format: - - "arg1=value1 arg2=value2 arg3=value3 ..." - - * Required arguments: - - input - - * Optional arguments: - - verbose - algorithm - iterations - saltSizeBytes - saltGeneratorClassName - providerName - providerClassName - invertPositionOfSaltInMessageBeforeDigesting - invertPositionOfPlainSaltInEncryptionResults - useLenientSaltSizeCheck - unicodeNormalizationIgnored - stringOutputType - prefix - suffix ---- - - - <>: - ---- - -$ ./digest.sh input="userDaTaBaSe_pass_word" - - ----ENVIRONMENT----------------- - -Runtime: Sun Microsystems Inc. Java HotSpot(TM) Client VM 1.6.0_03-b05 - - - - ----ARGUMENTS------------------- - -input: userDaTaBaSe_pass_word - - - - ----OUTPUT---------------------- - -RSeN4JXTJwVFK6YYnxr6kYzK5I7aDqnJ - ---- - - ---- - -$ ./digest.sh input="userDaTaBaSe_pass_word" verbose=false -3oZF4OzyW/0OZEDG/EU+22b+0ZJg9FSc ---- - - - - - -* Listing algorithms - - The <<>> script will list the digest and PBE - (Password-Based-Encryption) algorithms available in your Java VM. - - It receives no arguments and its usage is extremely simple: - ---- -$ ./listAlgorithms.sh - -DIGEST ALGORITHMS: [MD2, MD5, SHA, SHA-256, SHA-384, SHA-512] - -PBE ALGORITHMS: [PBEWITHMD5ANDDES, PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_40] - ---- - - Please note that this command will not list any arguments from non-default JCE providers like - Bouncy Castle unless you have registered such providers at the JVM installation by copying - the provider's jar files to the extensions directory of our JRE installation ($JRE_HOME/lib/ext) - and then appending the name of the Provider class at the end of the provider list - at the java.security file in $JRE_HOME/lib/security. - See {{{non-default-providers.html}Using Non-Default Providers}} or - {{{bouncy-castle.html}Jasypt + Bouncy Castle}} for more details. - - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/contributing.apt jasypt-1.9.2/src/site/apt/contributing.apt --- jasypt-1.8/src/site/apt/contributing.apt 2008-03-04 15:05:51.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/contributing.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ - ------- - Contributing to Jasypt - ------- - -Contributing to Jasypt: Terms - - In order to contribute to Jasypt, there are some terms with which you must agree: - - <> - - * Anyone, with the unique condition that he/she must be a <>, - acting in his/her own name, and not being endorsed in their contributed work - by any company or government. - - <> - - * First and important: your code <>. - Also, the addition of any new patches to the codebase should not render - it unstable in any way. - - [] - - * There should be no compilation warnings. - - [] - - * All your code should follow the Java Code Conventions. The only - exception for this is that column limit is 120 instead of the usual - 80 characters (this is a matter of convenience). - - [] - - * Remember that indentation is made of four spaces, not tabs. - - [] - - * All your code should compile and run in Java 1.4, and it should be - easy to read and understand by a human. - - [] - - * All public methods and classes should have comprehensive javadoc, and - code should have a reasonable amount of comments in it (when needed, - of course, not just comment for comment). - - [] - - * All comments, names of classes and variables, log messages, etc. must - be in <>. - - [] - - <> - - * First and most important: please, don't feel any obligation to do - anything. If you like/want/feel happy about contributing, go for it. If not, - don't feel any kind of commitment just for having discussed technical - details with the project maintainers or other members, just leave it - behind and it will be absolutely fine, - even if it is after months and you have already coded thousands of lines. - - [] - - * You will be <<<@author>>> for any new classes that you code and also - co-author to any existing classes to which you make - changes. Of course you can say "no" to this, but unless you do, it - is a matter of basic fairness to give the credit and merit to the person - who deserves it. - - [] - - * Your contributions will be applied as patches that you will send to the - project maintainers, and you will have the consideration of - in the team page. This means that you will not have read+write direct access to - the CVS repository. This is something reserved for developers - who are author to a very significant percent of the total code base. Of - course, this consideration can change in the future. - - [] - - * And importantly: You will have to take the required measures, under your - entire responsibility, to <>, and that all the code - you contribute is original and will rise no claims over its intellectual - property by any third persons or companies. Also, you agree to contribute - your code or documentation <>. - - -Contributing to Jasypt: Steps - - If, after carefully reading the above terms, you are willing to contribute - some of your effort to Jasypt, first of all... THANK YOU! - - The steps you should take are: - - * 1. First, send an email to the project maintainers talking about the new features - or fixes you would like to contribute. Don't forget to include your full - name :-). - - [] - - * 2. If your contribution is approved, send the project maintainers an email - including a copy of the terms above, with your complete name, and - stating clearly that you agree with these conditions. - - [] - - * 3. If you work for a company which, by the way or place in which your code was - written, by your contract terms or by the laws in your contry, could claim - any rights (including intellectual property) over your contributed code, you will have - to send the project maintainers (either by email from your authorised superiors or - by signed fax), a statement indicating that your company agrees - with the terms explained in this page, and that it both authorises your - contribution to Jasypt and states that will never claim any kind of rights - over it. - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/dependencies.apt jasypt-1.9.2/src/site/apt/dependencies.apt --- jasypt-1.8/src/site/apt/dependencies.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/dependencies.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ - ------- - Dependencies - ------- - - -Java Virtual Machine - - Jasypt needs Java Standard Edition, version 1.4 or higher. - - If you are going to use strong encryption algorithms (like TripleDES), you - may have to download and install the {{{http://java.sun.com/javase/downloads}Java - Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy - Files}}. - -Base dependencies for jasypt - - Since version 1.7, jasypt does not depend on any external libraries when used with Java version >= 6. - - If you are using Java SE version 5 or lower, you will need: - - * {{{http://www.icu-project.org/}International Components for Unicode (ICU)}} 3.4.4 or higher - - Also note that from 1.8, ICU (icu4j) will be used for normalizing unicode if it is present in - classpath, even if Java >= 6 is used (nevertheless, icu4j and <<>> implementations - are completely compatible). - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/download.apt jasypt-1.9.2/src/site/apt/download.apt --- jasypt-1.8/src/site/apt/download.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/download.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ - ------- - Download - ------- - - -Download Jasypt - - - <>: 1.8 [{{{changelog.html}ChangeLog}}] - - If you want to keep informed about new releases, you can subscribe the - {{{https://lists.sourceforge.net/lists/listinfo/jasypt-announce}jasypt-announce mailing list}} (very low traffic). - - <<{{{http://sourceforge.net/project/showfiles.php?group_id=183612}DOWNLOAD JASYPT (from SourceForge.net)}}>> - - You can also browse the Source Repository {{{source-repository.html}here}}. - - And if you are using Maven for building your project, have a look at - {{{maven.html}Jasypt + Maven}} for details on adding a dependency on Jasypt. - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/easy-usage.apt jasypt-1.9.2/src/site/apt/easy-usage.apt --- jasypt-1.8/src/site/apt/easy-usage.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/easy-usage.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,286 +0,0 @@ - ------- - Easy usage: the utils - ------- - - -Easy usage: the utils - - The easiest way to use Jasypt is using its encryption tools, - which are called <>, because they live in the <> - package. - - They are called because they are ready-to-use, preconfigured - digesters and encryptors you can use without knowing much about their - configuration. - - These utils are categorised depending on the task they are intended to do: - - * General digesting (<<>>) - - [] - - * Password encryption (digesting) (<<>>) - - [] - - * Text encryption (<<>>) - - [] - - * Number encryption (<<>>) - - [] - - * Binary encryption (<<>>) - - - (Note that, generally, when we talk about <"password encryption">, we are in fact - talking about <"password digesting">, which is the technically correct term) - - -* General digesting - - - * <> which performs message digesting - at a binary level, and which results are equivalent to the ones obtained - from a <<>> object, although acting in a - thread-safe way and implementing an interface more suitable for use - in a bean-centric environment. - ----------------- -... -Digester digester = new Digester(); -digester.setAlgorithm("SHA-1"); -... -byte[] digest = digester.digest(message); -... ----------------- - - - -* Password encryption (digesting) - - All classes here implement the <<>> - interface, so that they can be used interchangeabily if needed. - - * <> which can be used to - both encrypt passwords when users sign up and check input passwords - when users sign in. - ----------------- -... -BasicPasswordEncryptor passwordEncryptor = new BasicPasswordEncryptor(); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - - * <> which implements - much higher password security than PasswordEncryptor (at a higher computational - cost). - ----------------- -... -StrongPasswordEncryptor passwordEncryptor = new StrongPasswordEncryptor(); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - - * <> which lets - the developer decide the algorithm to be used and whether he/she wants the full - secure password encryption mechanism to be applied (as explained - {{{encrypting-passwords.html}here}}) or rather a simple digest to be generated - for legacy integration reasons. - ----------------- -... -ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor(); -passwordEncryptor.setAlgorithm("SHA-1"); -passwordEncryptor.setPlainDigest(true); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - -* Text encryption - - All classes here implement the <<>> - interface, so that they can be used interchangeabily if needed. - - - * <> which allows the user to - encrypt and decrypt text data using a normal-strength algorithm. In - order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); -textEncryptor.setPassword(myEncryptionPassword); -... -String myEncryptedText = textEncryptor.encrypt(myText); -... -String plainText = textEncryptor.decrypt(myEncryptedText); -... ----------------- - - - * <> which allows the user to - encrypt and decrypt text data using a high-strength algorithm. - (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it). - In order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -StrongTextEncryptor textEncryptor = new StrongTextEncryptor(); -textEncryptor.setPassword(myEncryptionPassword); -... -String myEncryptedText = textEncryptor.encrypt(myText); -... -String plainText = textEncryptor.decrypt(myEncryptedText); -... ----------------- - - -* Number encryption - - - All classes here implement either the <<>> - or the <<>> interfaces, - so that they can be used interchangeabily if needed. - - - * <> which allows the user to - encrypt and decrypt BigInteger objects using a normal-strength algorithm. In - order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -BasicIntegerNumberEncryptor integerEncryptor = new BasicIntegerNumberEncryptor(); -integerEncryptor.setPassword(myEncryptionPassword); -... -BigInteger myEncryptedNumber = textEncryptor.encrypt(myNumber); -... -BigInteger plainNumber = textEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - - * <> which allows the user to - encrypt and decrypt BigInteger objects using a high-strength algorithm. - (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it). - In order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -StrongIntegerNumberEncryptor integerEncryptor = new StrongIntegerNumberEncryptor(); -integerEncryptor.setPassword(myEncryptionPassword); -... -BigInteger myEncryptedNumber = integerEncryptor.encrypt(myNumber); -... -BigInteger plainNumber = integerEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - - * <> which allows the user to - encrypt and decrypt BigDecimal objects using a normal-strength algorithm. In - order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -BasicIntegerNumberEncryptor decimalEncryptor = new BasicIntegerNumberEncryptor(); -decimalEncryptor.setPassword(myEncryptionPassword); -... -BigDecimal myEncryptedNumber = decimalEncryptor.encrypt(myNumber); -... -BigDecimal plainNumber = decimalEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - - * <> which allows the user to - encrypt and decrypt BigDecimal objects using a high-strength algorithm. - (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it). - In order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -StrongDecimalNumberEncryptor decimalEncryptor = new StrongDecimalNumberEncryptor(); -decimalEncryptor.setPassword(myEncryptionPassword); -... -BigDecimal myEncryptedNumber = decimalEncryptor.encrypt(myNumber); -... -BigDecimal plainNumber = decimalEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - - -* Binary encryption - - All classes here implement the <<>> - interface, so that they can be used interchangeabily if needed. - - - * <> which allows the user to - encrypt and decrypt byte[] objects using a normal-strength algorithm. In - order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -BasicBinaryEncryptor binaryEncryptor = new BasicBinaryEncryptor(); -binaryEncryptor.setPassword(myEncryptionPassword); -... -byte[] myEncryptedBinary = binaryEncryptor.encrypt(myBinary); -... -String plainBinary = binaryEncryptor.decrypt(myEncryptedBinary); -... ----------------- - - - * <> which allows the user to - encrypt and decrypt byte[] objects using a high-strength algorithm. - (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it). - In order to be able to encrypt and decrypt, this encryptor has to be - set a password first. - ----------------- -... -StrongBinaryEncryptor binaryEncryptor = new StrongBinaryEncryptor(); -binaryEncryptor.setPassword(myEncryptionPassword); -... -String myEncryptedBinary = binaryEncryptor.encrypt(myBinary); -... -String plainBinary = binaryEncryptor.decrypt(myEncryptedBinary); -... ----------------- diff -Nru jasypt-1.8/src/site/apt/encrypting-binaries.apt jasypt-1.9.2/src/site/apt/encrypting-binaries.apt --- jasypt-1.8/src/site/apt/encrypting-binaries.apt 2010-10-27 23:53:34.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/encrypting-binaries.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ - ------- - Encrypting binaries - ------- - - - - - -Encrypting binaries - - Jasypt offers support for performing PBE (Password Based Encryption) - operations on binaries (byte[] objects). This is offered through the - <<>> interface and its - default implementation, <>. - -* Usage - - Assuming that you will be using the default implementation, once the - <<>> instance has been created, this is how - it will work: - -** Configuration - - The algorithm, password and key-obtention iterations can take - values in any of these ways: - - * Using its default values (except for password). - - * Setting an <<>> - object which provides new configuration values. {{{advancedconfiguration.html}Learn More}}. - - * Calling the corresponding <<>>, - <<>>, <<>>, - <<>>, <<>> - or <<>> methods. - - And the actual values to be used for initialization will be established - by applying the following priorities: - - * First, the default values are considered (except for password). - - * Then, if a <<>> - object has been set with <<>>, the non-null values - returned by its <<>> methods override the default values. - - * Finally, if the corresponding <<>> method has been called - on the encryptor itself for any of the configuration parameters, the - values set by these calls override all of the above. - - -** Initialization - - Before it is ready to encrypt, an object of this class has to be - . Initialisation happens: - - * When <<>> is called. - - * When <<>> or <<>> are called for the - first time, if <<>> has not been called before - - * Once an encryptor has been initialised, trying to - change its configuration willresult in an - <<>> being thrown. - - -** Usage - - An encryptor may be used for: - - * , by calling the <<>> method. - - * , by calling the <<>> method. - - <>. This enforces security by difficulting brute force - attacks on sets of data at a time and forcing attackers to perform a brute - force attack on each separate piece of encrypted data. - -** Learn more - - To learn more about the mechanisms involved in encryption, read - {{{http://www.rsasecurity.com/rsalabs/node.asp?id=2127}PKCS #5: Password-Based Cryptography Standard}}. - - - - - -* Code examples - - Easiest use: the <<>> util class: - ----------------- -... -BasicBinaryEncryptor binaryEncryptor = new BasicBinaryEncryptor(); -binaryEncryptor.setPassword(myEncryptionPassword); -... -byte[] myEncryptedBytes = binaryEncryptor.encrypt(myBytes); -... -byte[] plainBytes = binaryEncryptor.decrypt(myEncryptedBytes); -... ----------------- - - More security: the <<>> util class with a much more secure (but slower!) - algorithm (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it): - ----------------- -... -StrongBinaryEncryptor binaryEncryptor = new StrongBinaryEncryptor(); -binaryEncryptor.setPassword(myEncryptionPassword); -... -byte[] myEncryptedBytes = binaryEncryptor.encrypt(myBytes); -... -byte[] plainBytes = binaryEncryptor.decrypt(myEncryptedBytes); -... ----------------- - - All these classes are in fact pre-configured, easy-to-use versions of <<>>, - so let's use the original class for total control: - ------------------- -... -StandardPBEByteEncryptor encryptor = new StandardPBEByteEncryptor(); -encryptor.setPassword("jasypt"); // we HAVE TO set a password -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); // optionally set the algorithm -... -byte[] encryptedBytes = encryptor.encrypt(myBytes); -... -byte[] plainBytes = encryptor.decrypt(encryptedBytes); // myBytes.equals(plainBytes) -... ------------------- - - And we can even use a pooled version for higher performance in multi-processor/multi-core systems: - ---- -... -PooledPBEByteEncryptor encryptor = new PooledPBEByteEncryptor(); -encryptor.setPoolSize(4); // This would be a good value for a 4-core system -encryptor.setPassword("jasypt"); -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); -... -byte[] encryptedBytes = encryptor.encrypt(myBytes); -... ---- - - - - - - - diff -Nru jasypt-1.8/src/site/apt/encrypting-configuration.apt jasypt-1.9.2/src/site/apt/encrypting-configuration.apt --- jasypt-1.8/src/site/apt/encrypting-configuration.apt 2010-10-28 21:33:54.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/encrypting-configuration.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,332 +0,0 @@ - ------- - Encrypting application configuration files - ------- - - - - -Encrypting application configuration files - - Jasypt offers support for encrypted application configuration - in three different ways: - - * <<.properties files>>: Jasypt provides the - <<>> class for loading, - managing and transparently decrypting encrypted values in - <<<.properties>>> files, allowing the combination of both encrypted - and not-encrypted values is the same file. - - [] - - * <>: - Jasypt provides an implementation of these configuration-related Spring - classes which can read .properties files with encrypted values - (like the ones managed by the class) and handle - them transparently to the rest of the Spring application beans. - - [] - - * <>: - Jasypt provides an implementation of this configuration-related Spring - class which can read context parameters in web.xml files with encrypted values - and handle them transparently to the rest of the Spring application beans. - - [] - - * <>: - Jasypt provides an implementation of this configuration-related Spring - class which can preferences set with JDK 1.4's Preferences API with encrypted values - and handle them transparently to the rest of the Spring application beans. - - [] - - * <>: - Jasypt provides two classes for Hibernate - (DriverManager- and C3P0-based) which allow the basic datasource - parameters (driver, url, username and password) to be - written in an encrypted manner in the hibernate.cfg.xml file. - - - This way, jasypt supports the encryption of sensitive configuration data in multiple - scenarios (Hibernate-, Spring-, both- or neither-based applications). - - <>. You can compute this values using the - {{{cli.html}CLI tools}}. - - Here you may think: <"wait... I can encrypt values in my configuration - files, ok, but... I still need a password (the encryption password) to - decrypt them! Where can I store it safely?">. That is correct, you still - need one password, but this time - it is the one, under jasypt control, and thus, configurable - in many other more secure ways (especially recommended would be - {{{advancedconfiguration.html}environment variables}} or - {{{webconfiguration.html}web PBE configuration}}...). - - -* EncryptableProperties - - By using an <<>> object, an - application would be able to correctly read and use a .properties file like this: - ---- - datasource.driver=com.mysql.jdbc.Driver - datasource.url=jdbc:mysql://localhost/reportsdb - datasource.username=reportsUser - datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) ---- - - Note that the database password is encrypted (in fact, any other property - could also be encrypted, be it related with database configuration or not). - - How do we read this value? like this: - ---- - - /* - * First, create (or ask some other component for) the adequate encryptor for - * decrypting the values in our .properties file. - */ - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setPassword("jasypt"); // could be got from web, env variable... - - /* - * Create our EncryptableProperties object and load it the usual way. - */ - Properties props = new EncryptableProperties(encryptor); - props.load(new FileInputStream("/path/to/my/configuration.properties")); - - /* - * To get a non-encrypted value, we just get it with getProperty... - */ - String datasourceUsername = props.getProperty("datasource.username"); - - /* - * ...and to get an encrypted value, we do exactly the same. Decryption will - * be transparently performed behind the scenes. - */ - String datasourcePassword = props.getProperty("datasource.password"); - - // From now on, datasourcePassword equals "reports_passwd"... - ---- - - For decrypting the encrypted value, we just had to access it with <<>>, - just as with any other non-encrypted value. - - <<>> extends <<>>, and as such - it will be able to do all that can be usually done by a object: - loading from/storing to files, XML, etc... but note that <>. - - <<>> objects can receive as a constructor argument - both an <<>> implementation or an - <<>> object. - - -* Encryption-aware Spring's property configurers - - Jasypt provides two Spring-specific configuration management classes: - - * <<>>, - as a totally compatible replacement for Spring's - . - - [] - - * <<>>, - as a totally compatible replacement for Spring's - . - - [] - - Their use is analogue to the Spring equivalents, but this time we can use - them to read encrypted property values from our configuration files and - apply them to our beans. - - If we have the properties file seen before (<<>>): - ---- - datasource.driver=com.mysql.jdbc.Driver - datasource.url=jdbc:mysql://localhost/reportsdb - datasource.username=reportsUser - datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) ---- - - We can define in our Spring context configuration: - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /WEB-INF/classes/application.properties - - - - - - - - - - - - - - - ${datasource.driver} - - - ${datasource.url} - - - ${datasource.username} - - - ${datasource.password} - - - ---- - - <<>> and - <<>> objects can receive as a - constructor argument both an <<>> - implementation or an <<>> object. - - - - -* Encryptable ServletContextPropertyPlaceholderConfigurer implementation for Spring - - Jasypt includes <<>>, - a subclass of <<>> - which allows the transparent decryption of servlet context parameters in web applications (for example, - parameters in <<>>). - - These encrypted parameters can be specified in a way equivalent to that of encrypted parameters - in <<<.properties>>> files: - ---- - ... - - someParameter - ENC(...) - - ... ---- - - - -* Encryptable PreferencesPlaceholderConfigurer implementation for Spring - - Jasypt includes <<>>, - a subclass of <<>> - which allows the transparent decryption preferences set with JDK 1.4's Preferences API. - - - -* Database password encryption in hibernate.cfg.xml - - For those applications that define datasources in Hibernate's - <<>> file, Jasypt provides two - (<<>>) implementations - which let the user declare the datasource parameters - (driver, url, username and password) in an encrypted manner: - - * <<>>, - which extends Hibernate's connection provider (a very - simplistic pool implementation). - - [] - - * <<>>, - which extends Hibernate's connection provider. - - [] - - They are used like this in <<>>: - ---- - - - - - - - - - org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider - - - configurationHibernateEncryptor - - - jdbc:mysql://localhost/reportsdb - com.mysql.jdbc.Driver - reportsUser - ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) - 12 - - true - org.hibernate.dialect.MySQLDialect - - - - - - ---- - - In this configuration, Hibernate is told to use Jasypt's DriverManager-based - connection provider and is passed a set of configuration parameters which - contain an encrypted value, the <<>> property. - Then, Hibernate is also told about - which is the encryptor object to be used for decrypting the encrypted parameters - (<<>>). - - This encryptor object should have been registered beforehand as a - <>, as explained in the {{{hibernate3.html}Jasypt + Hibernate 3}} - configuration guide. - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/encrypting-numbers.apt jasypt-1.9.2/src/site/apt/encrypting-numbers.apt --- jasypt-1.8/src/site/apt/encrypting-numbers.apt 2010-10-27 23:53:34.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/encrypting-numbers.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,178 +0,0 @@ - ------- - Encrypting numbers - ------- - - - - - -Encrypting numbers - - Jasypt offers support for performing PBE (Password Based Encryption) - operations on numbers. This is offered through the - <<>> and - <<>> - interfaces and their respective default implementations, - <> and - <>. - -* Basics - - Jasypt uses the byte (binary) encryption mechanisms as a basis for - text encryption. - - Note that encrypted numbers will need much more digits for its - representation than the original numbers from which they come, and so - they will also need more space for being stored. For example, a 4-byte - integer will probably have a size of no less than 16 bytes, once encrypted. - . - - -* Usage - - Assuming that you will be using the default implementations, once a - <<>> or <<>> - instance has been created, this is how it will work: - -** Configuration - - The algorithm, password and key-obtention iterations can take - values in any of these ways: - - * Using its default values (except for password). - - * Setting an <<>> - object which provides new configuration values. {{{advancedconfiguration.html}Learn More}}. - - * Calling the corresponding <<>>, - <<>>, <<>>, - <<>>, <<>> - or <<>> methods. - - And the actual values to be used for initialization will be established - by applying the following priorities: - - * First, the default values are considered (except for password). - - * Then, if a <<>> - object has been set with <<>>, the non-null values - returned by its <<>> methods override the default values. - - * Finally, if the corresponding <<>> method has been called - on the encryptor itself for any of the configuration parameters, the - values set by these calls override all of the above. - - -** Initialization - - Before it is ready to encrypt, an object of this class has to be - . Initialisation happens: - - * When <<>> is called. - - * When <<>> or <<>> are called for the - first time, if <<>> has not been called before - - * Once an encryptor has been initialised, trying to - change its configuration willresult in an - <<>> being thrown. - - -** Usage - - An encryptor may be used for: - - * , by calling the <<>> method. - - * , by calling the <<>> method. - - <>. This enforces security by difficulting brute force - attacks on sets of data at a time and forcing attackers to perform a brute - force attack on each separate piece of encrypted data. - -** Learn more - - To learn more about the mechanisms involved in encryption, read - {{{http://www.rsasecurity.com/rsalabs/node.asp?id=2127}PKCS #5: Password-Based Cryptography Standard}}. - - - - - -* Code examples - - Easiest use: the <<>> and <<>> util classes: - ----------------- -... -BigInteger myNumber = ...; -... -BasicIntegerNumberEncryptor numberEncryptor = new BasicIntegerNumberEncryptor(); -numberEncryptor.setPassword(myEncryptionPassword); -... -BigInteger myEncryptedNumber = numberEncryptor.encrypt(myNumber); -... -BigInteger plainNumber = numberEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - More security: the <<>> and <<>> util classes - with a much more secure (but slower!) - algorithm (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use them): - ----------------- -... -BigDecimal myNumber = ...; -... -StrongDecimalNumberEncryptor numberEncryptor = new StrongDecimalNumberEncryptor(); -numberEncryptor.setPassword(myEncryptionPassword); -... -BigDecimal myEncryptedNumber = numberEncryptor.encrypt(myNumber); -... -BigDecimal plainNumber = numberEncryptor.decrypt(myEncryptedNumber); -... ----------------- - - All these classes are in fact pre-configured, easy-to-use versions of their - corresponding full-featured classes <<>> and, <<>> - so let's use the original classes for total control: - ------------------- -... -BigDecimal myNumber = ...; -... -StandardPBEBigDecimalEncryptor encryptor = new StandardPBEBigDecimalEncryptor(); -encryptor.setPassword("jasypt"); // we HAVE TO set a password -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); // optionally set the algorithm -... -BigDecimal myEncryptedNumber = encryptor.encrypt(myNumber); -... -BigDecimal plainNumber = encryptor.decrypt(myEncryptedNumber); -... ------------------- - - And we can even use a pooled version for higher performance in multi-processor/multi-core systems: - ---- -... -BigInteger myNumber = ...; -... -PooledPBEBigIntegerEncryptor encryptor = new PooledPBEBigIntegerEncryptor(); -encryptor.setPoolSize(4); // This would be a good value for a 4-core system -encryptor.setPassword("jasypt"); -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); -... -BigInteger myEncryptedNumber = encryptor.encrypt(myNumber); -... -BigInteger plainNumber = encryptor.decrypt(myEncryptedNumber); -... ---- - - - diff -Nru jasypt-1.8/src/site/apt/encrypting-passwords.apt jasypt-1.9.2/src/site/apt/encrypting-passwords.apt --- jasypt-1.8/src/site/apt/encrypting-passwords.apt 2010-10-27 23:53:34.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/encrypting-passwords.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,180 +0,0 @@ - ------- - Encrypting passwords - ------- - - - - -Encrypting passwords - - If you want to read about how passwords should be encrypted, how you - would defend from attacks on your user password database, and why you - should use jasypt for encrypting your passwords, have a look at this article: - {{{howtoencryptuserpasswords.html}How to Encrypt User Passwords}}. - -* Digest creation process with jasypt's Standard\[Byte\|String\]Digester - - The steps taken in jasypt's standard digesters for creating digests are: - - [[1]]A salt of the specified size is generated (see - <>). If salt size is zero, no salt will be - used. It is advisable that you use a random salt generator like - <> (which is the default) for - higher security. - - [[2]]The salt bytes are appended at the beginning of the message. - - [[3]]The hash function is applied to the salt and message altogether, - and then to the - results of the function itself, as many times as specified - (iterations). - - [[4]]If using a random salt generator, the salt is appended - at the beginning of the hash result. - - Put schematically in bytes: - - * DIGEST = \|<>\|..(ssb)..\|<>\|<>\|<>\|<>\|...\|<>\| - - * <>: salt bytes (plain, not digested). <(Only if using a random salt generator)>. - - * ssb: salt size in bytes. - - * <>: bytes resulting from hashing (see below). - - [] - - * |<>|<>|<>|...|<>| = (((..(it)..(<>|<>|<>|...|<>|)))) - - * : Hash function (algorithm). - - * it: Number of iterations. - - * <>: Input for hashing (see below). - - [] - - * |<>|<>|<>|...|<>| = |<>|..(ssb)..|<>|<>|<>|<>...|<>| - - * <>: salt bytes (plain, not digested). - - * ssb: salt size in bytes. - - * <>: message bytes. - - <> - Because of this, in this case the result of the <<>> method will contains - both the salt and the digest of salt+message, - so that another digest operation can be performed with the same salt - on a different message to check if both messages match (all of which will - be managed automatically by the <<>> method). - - Also, when using StandardStringDigester, the resulting digest Strings are BASE64 - encoded (or hexadecimal, if you prefer) to avoid charset issues. This output - encoding can be chosen with the <<>> method. - - -* RFC2307 password encryption for LDAP systems - - Many LDAP systems (e.g. OpenLDAP) use password encryption schemes different to jasypt's default one. - These are mainly derived from the schemes defined in RFC2307, like for example <> - (Salted SHA). - - Salted RFC2307-oriented algorithms require an inversion in the positioning of the salt during - the digest operation. Jasypt supports this since version 1.7, and provides a set - of classes in the <<>> package for the easy creation - and matching of SSHA, SMD5 and other password encryption schemes of common use in LDAP systems. - - Refer to these classes' {{{api/jasypt/apidocs}JavaDoc}} for more details. - - -* Code examples - - Easiest use: the <<>> util class: - ----------------- -... -BasicPasswordEncryptor passwordEncryptor = new BasicPasswordEncryptor(); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - More security: the <<>> util class with a much more secure (but slower!) - algorithm: - ----------------- -... -StrongPasswordEncryptor passwordEncryptor = new StrongPasswordEncryptor(); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - A little bit more control on encryptor configuration: the <<>> class: - ----------------- -... -ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor(); -passwordEncryptor.setAlgorithm("SHA-1"); -passwordEncryptor.setPlainDigest(true); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} -... ----------------- - - All these classes are in fact pre-configured, easy-to-use versions of <<>>, - so let's use the original class for total control: - ------------------- -... -StandardStringDigester digester = new StandardStringDigester(); -digester.setAlgorithm("SHA-1"); // optionally set the algorithm -digester.setIterations("50000"); // increase security by performing 50000 hashing iterations -... -String digest = digester.digest(userPassword); -... -if (digester.matches(inputPassword, digest)) { - // correct! -} else { - // bad login! -} -... ------------------- - - And we can even use a pooled version for higher performance in multi-processor/multi-core systems: - ---- -... -PooledStringDigester digester = new PooledStringDigester(); -digester.setPoolSize(4); // This would be a good value for a 4-core system -digester.setAlgorithm("SHA-1"); -digester.setIterations("50000"); -... -String digest = digester.digest(userPassword); -... -if (digester.matches(inputPassword, digest)) { - // correct! -} else { - // bad login! -} -... ---- diff -Nru jasypt-1.8/src/site/apt/encrypting-texts.apt jasypt-1.9.2/src/site/apt/encrypting-texts.apt --- jasypt-1.8/src/site/apt/encrypting-texts.apt 2010-10-27 23:53:34.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/encrypting-texts.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ - ------- - Encrypting texts - ------- - - - - -Encrypting texts - - Jasypt offers support for performing PBE (Password Based Encryption) - operations on texts. This is offered through the - <<>> interface and its - default implementation, <>. - -* Basics - - Jasypt uses the byte (binary) encryption mechanisms as a basis for - text encryption, with the following specificity: - - * All the String results (of encryption) are encoded in <> - (or <>, if you prefer), and thus - can be safely stored as US-ASCII characters. This output encoding - can be chosen with the <<>> method. - -* Usage - - Assuming that you will be using the default implementation, once the - <<>> instance has been created, this is how - it will work: - -** Configuration - - The algorithm, password and key-obtention iterations can take - values in any of these ways: - - * Using its default values (except for password). - - * Setting an <<>> - object which provides new configuration values. {{{advancedconfiguration.html}Learn More}}. - - * Calling the corresponding <<>>, - <<>>, <<>>, - <<>>, <<>> - or <<>> methods. - - And the actual values to be used for initialization will be established - by applying the following priorities: - - * First, the default values are considered (except for password). - - * Then, if a <<>> - object has been set with <<>>, the non-null values - returned by its <<>> methods override the default values. - - * Finally, if the corresponding <<>> method has been called - on the encryptor itself for any of the configuration parameters, the - values set by these calls override all of the above. - - -** Initialization - - Before it is ready to encrypt, an object of this class has to be - . Initialisation happens: - - * When <<>> is called. - - * When <<>> or <<>> are called for the - first time, if <<>> has not been called before - - * Once an encryptor has been initialised, trying to - change its configuration willresult in an - <<>> being thrown. - - -** Usage - - An encryptor may be used for: - - * , by calling the <<>> method. - - * , by calling the <<>> method. - - <>. This enforces security by difficulting brute force - attacks on sets of data at a time and forcing attackers to perform a brute - force attack on each separate piece of encrypted data. - -** Learn more - - To learn more about the mechanisms involved in encryption, read - {{{http://www.rsasecurity.com/rsalabs/node.asp?id=2127}PKCS #5: Password-Based Cryptography Standard}}. - - - - -* Code examples - - Easiest use: the <<>> util class: - ----------------- -... -BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); -textEncryptor.setPassword(myEncryptionPassword); -... -String myEncryptedText = textEncryptor.encrypt(myText); -... -String plainText = textEncryptor.decrypt(myEncryptedText); -... ----------------- - - More security: the <<>> util class with a much more secure (but slower!) - algorithm (you may need to download and install the {{{http://java.sun.com/javase/downloads}Java Cryptography - Extension (JCE) Unlimited Strength Jurisdiction Policy Files}} to use it): - ----------------- -... -StrongTextEncryptor textEncryptor = new StrongTextEncryptor(); -textEncryptor.setPassword(myEncryptionPassword); -... -String myEncryptedText = textEncryptor.encrypt(myText); -... -String plainText = textEncryptor.decrypt(myEncryptedText); -... ----------------- - - All these classes are in fact pre-configured, easy-to-use versions of <<>>, - so let's use the original class for total control: - ------------------- -... -StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); -encryptor.setPassword("jasypt"); // we HAVE TO set a password -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); // optionally set the algorithm -... -String encryptedText = encryptor.encrypt(myText); -... -String plainText = encryptor.decrypt(encryptedText); // myText.equals(plainText) -... ------------------- - - And we can even use a pooled version for higher performance in multi-processor/multi-core systems: - ---- -... -PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); -encryptor.setPoolSize(4); // This would be a good value for a 4-core system -encryptor.setPassword("jasypt"); -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); -... -String encryptedText = encryptor.encrypt(myText); -... ---- - - - - diff -Nru jasypt-1.8/src/site/apt/features.apt jasypt-1.9.2/src/site/apt/features.apt --- jasypt-1.8/src/site/apt/features.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/features.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ - ------- - Features - ------- - - -Features - - * Jasypt follows the <> for password-based cryptography, and - provides you with both unidirectional and bidirectional encryption - techniques. - - [] - - * Open API for <>, and not only the default - Java VM one. Jasypt can be easily used with well-known - providers like {{{http://www.bouncycastle.org}Bouncy Castle}}. - {{{non-default-providers.html}Learn more}}. - - [] - - * <>. - {{{encrypting-passwords.html}Learn more}}. - - [] - - * <>. Jasypt allows the - digest and encryption of binaries (byte arrays). Encrypt your objects - or files when needed (for being sent over the net, for example). - - [] - - * <>. Besides texts and binaries, it allows the - digest and encryption of numeric values (BigInteger and BigDecimal, - other numeric types are supported when encrypting for Hibernate - persistence). {{{encrypting-numbers.html}Learn more}}. - - [] - - * Completely <>. - - [] - - * Support for encryptor/digester pooling, in order to achieve <>. - - [] - - * Includes a <> for better manageability - in size-restrictive environments like mobile platforms. - - [] - - * Provides both <> for users new to - encryption, and also <>, - for power-users. - - [] - - * {{{http://www.hibernate.org}Hibernate 3}} optional integration - for persisting fields of your mapped entities in an encrypted manner. - <>, and - it remains transparent for the rest of the application (useful for - sensitive personal data, databases with many read-enabled users...). - Encrypt texts, binaries, numbers, booleans, dates... - {{{hibernate3.html}Learn more}}. - - [] - - * Seamlessly integrable into a {{{http://www.springframework.org}Spring}} application. All the - digesters and encryptors in jasypt are designed to be easily used - (instantiated, dependency-injected...) from Spring. And, because of their - being thread-safe, they <>. {{{spring.html}Learn more}}. - - [] - - * {{{http://static.springframework.org/spring-security/site/}Spring Security (formerly Acegi Security)}} - optional integration - for performing password encryption and matching tasks for the security - framework, improving the security of your users' passwords by using - <> and providing you with a - higher degree of <>. {{{springsecurity.html}Learn more}}. - - [] - - * Provides <>, including sensitive information like - database passwords. Seamlessly integrate encrypted configuration into - plain, Spring-based and/or Hibernate-enabled applications. - {{{encrypting-configuration.html}Learn more}}. - - [] - - * Provides easy to use <> - to allow developers initialise their encrypted data and include - encryption/decryption/digest operations in maintenance tasks or scripts. - {{{cli.html}Learn more}}. - - [] - - * <>, for more robust encryption of URLs - in your secure applications. - - [] - - * <>, to allow - developers to better understand what they are really doing to their data. - - [] - - * Robust charset support, designed to adequately encrypt and digest - texts whichever the original charset is. <> with no encoding or - platform issues. - - [] - - * Very high level of configuration capabilities: The developer can - implement tricks like instructing an "encryptor" to ask a, for example, - remote HTTPS server for the password to be used for encryption. <>. {{{advancedconfiguration.html}Learn more}}. - - -Want to know more? - - To know more, check {{{ataglance.html}Jasypt at a Glance}} or the - {{{faq.html}Frequently Asked Questions}} page. - - Do you have any questions, comments or suggestions? Do you want to tell your experience - using jasypt? Check the {{{http://sourceforge.net/forum/?group_id=183612}Forums}}. - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/general-usage.apt jasypt-1.9.2/src/site/apt/general-usage.apt --- jasypt-1.8/src/site/apt/general-usage.apt 2010-11-01 13:34:57.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/general-usage.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ - ------- - General Usage - ------- - - -General Usage - -* Digesters - - Digesters are classes specialised in creating <> (also called <>) from - input. - - Message digests are the results of (or ) functions, and they are - <>, this is, starting from a message digest, the original message - cannot be reconstructed. - - Because of this, message digests are very adequate for <>. - In fact, in some countries, it is illegal to store a user's password in - an unencrypted way, and even encrypted in a reversible (bi-directional) way. - - Digesters in jasypt live in the <> package, which is - composed of the following interfaces: - - * <> for creating digests from byte array input. - - * <> for creating digests from String input. - - And the following standard implementations: - - * <>: very configurable and extremely secure - implementation of ByteDigester, implemented following the directives - given in {{{http://www.rsasecurity.com/rsalabs/node.asp?id=2127}PKCS #5: Password-Based Cryptography Standard}}. - - * <>: String counterpart to StandardByteDigester, - receiving String input and returning charset-safe, BASE64 - (or hexadecimal) encoded String output. - - ...with their corresponding pool-based implementations for high performance in multi-processor/multi-core systems: - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve digest/check - requests in round-robin. - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve digest/check - requests in round-robin. - - - It's basic usage can be very simple: - ------------------- -... -StandardStringDigester digester = new StandardStringDigester(); -digester.setAlgorithm("SHA-1"); // optionally set the algorithm -digester.setIterations(50000); // increase security by performing 50000 hashing iterations -... -String digest = digester.digest(myMessage); -... ------------------- - - These digesters, both standard and pooled, implement a coherent and secure set of default configuration values, - but they can be additionally configured in two ways: - - * By calling to its <<>> methods (algorithm, provider, salt size, etc.) - - * By setting a <> object which configures the - digester. A default implementation of this interface is supplied - (<<>>), but the user can create his/her own - one to be able to retrieve configuration parameters in whichever - ways he/she needs. - - - - <> - - Pooled digesters have exactly the same API as their - non-pooled <<>> relatives --so they can be used interchangeably-- but add a new required configuration - method called <<>> which establishes the amount of digesters they - will internally hold. - ---- -... -PooledStringDigester digester = new PooledStringDigester(); -digester.setPoolSize(4); // This would be a good value for a 4-core system -digester.setAlgorithm("SHA-1"); -digester.setIterations(50000); -... -String digest = digester.digest(myMessage); -... ---- - - These pooled objects will use their internal <<>> digesters to serve the - requests in round-robin, so the amount of thread blocking caused by the - synchronised code in the artifacts is reduced to a minimum. - - These implementations do not create new threads, so they can be safely used in container-controlled - environments which do not allow the creation of new threads. - - The pool size recommended for a specific application and machine depends on many factors, but will - be approximately equal to the number of processors/cores in the machine. - - - - <> - - Please refer to the {{{api/jasypt/apidocs}JavaDoc}} - for more information about usage and functionality. - - - - -* Encryptors - - Encryptors are classes specialised in performing <> encryption - operations. This is, they can both encrypt plain data and decrypt encrypted - data. - - The relevant interfaces for encryption in jasypt live in the - <> package, and are: - - * <> for encryption and decryption of byte arrays. - - * <> for encryption and decryption of Strings. - - * <> for encryption and decryption of BigIntegers. - - * <> for encryption and decryption of BigDecimals. - - - Jasypt provides implementations for one type of - encryption: <>. - -** Password-Based Encryption (PBE) - - Password-Based encryption is performed by means of generating an - from a user-supplied <>, and feeding - an encryption algorithm with both the input and the generated key. - Keys are usually obtained by applying some hash function to the password. - - So, <> before - being used for encryption or decryption operations. - - The relevant interfaces for PBE in jasypt live in the - <> package, and are: - - * <> for password-based encryption and decryption of byte arrays. - - * <> for password-based encryption and decryption of Strings. - - * <> for password-based encryption and decryption of BigIntegers. - - * <> for password-based encryption and decryption of BigDecimals. - - And the following standard implementations: - - * <>: very configurable and extremely secure - implementation of PBEByteEncryptor, implemented following the directives - given in {{{http://www.rsasecurity.com/rsalabs/node.asp?id=2127}PKCS #5: Password-Based Cryptography Standard}}. - - * <>: String counterpart to StandardPBEByteEncryptor, - receiving String input and returning charset-safe, BASE64 - (or hexadecimal) encoded String output as encryption results. - - * <>: Equivalent to StandardPBEByteEncryptor, - receiving BigInteger input and returning BigInteger output. - - * <>: Equivalent to StandardPBEByteEncryptor, - receiving BigDecimal input and returning BigDecimal output. - - ...with their corresponding pool-based implementations for high performance in multi-processor/multi-core systems: - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve encrypt/decrypt - requests in round-robin. - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve encrypt/decrypt - requests in round-robin. - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve encrypt/decrypt - requests in round-robin. - - * <>: same API as <>, but - in fact contains a pool of these objects that are used to serve encrypt/decrypt - requests in round-robin. - - - It's basic usage can be very simple: - ------------------- -... -StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); -encryptor.setPassword("jasypt"); // we HAVE TO set a password -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); // optionally set the algorithm -... -String encryptedText = encryptor.encrypt(myText); -... -String plainText = encryptor.decrypt(encryptedText); // myText.equals(plainText) -... ------------------- - - - As with digesters, Standard*Encryptors implement a coherent and secure set - of default configuration values (except for the password), but they can also be additionally configured in two ways: - - * By calling to its <<>> methods (algorithm, provider, password, etc...) - - * By setting a <> object which configures the - digester. A default implementation of this interface is supplied - (<<>>), but the user can create his/her own - one to be able to retrieve configuration parameters in whichever - ways he/she needs (for instance, retrieve the password from a remote server). - - - - <> - - Pooled encryptors have exactly the same API as their - non-pooled <<>> relatives --so they can be used interchangeably-- but add a new required configuration - method called <<>> which establishes the amount of encryptors they - will internally hold. - ---- -... -PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); -encryptor.setPoolSize(4); // This would be a good value for a 4-core system -encryptor.setPassword("jasypt"); -encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); -... -String encryptedText = encryptor.encrypt(myText); -... ---- - - These pooled objects will use their internal <<>> encryptors to serve the - requests in round-robin, so the amount of thread blocking caused by the - synchronised code in the artifacts is reduced to a minimum. - - These implementations do not create new threads, so they can be safely used in container-controlled - environments which do not allow the creation of new threads. - - The pool size recommended for a specific application and machine depends on many factors, but will - be approximately equal to the number of processors/cores in the machine. - - - - <> - - Please refer to the {{{api/jasypt/apidocs}JavaDoc}} - for more information about usage and functionality. - - - - diff -Nru jasypt-1.8/src/site/apt/hibernate3.apt jasypt-1.9.2/src/site/apt/hibernate3.apt --- jasypt-1.8/src/site/apt/hibernate3.apt 2010-10-28 21:33:54.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/hibernate3.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,252 +0,0 @@ - ------- - Integrating Jasypt with Hibernate 3 - ------- - - -Integrating Jasypt with Hibernate 3 - - Jasypt provides an integration package (<<>>) which - provides several Hibernate <> implementations to allow one or - several of the properties in a mapped - Hibernate entity to be declared as being of an . Types - allowed to be stored encrypted include strings, binaries (byte arrays), - numeric types, booleans and dates. - - Persistence of those properties will be done in an encrypted manner, - but <> for the application. - - This can be useful for encrypting personal data, private messages, etc, so that - it is avoided that anyone with read access to the "critical" tables can - read all of its contents. - - For encryption at Hibernate, jasypt uses its - capabilities, and <> can be - used to encrypt data, even encryptors created by the user. - - But <>: security - standards establish that two - different encryption operations on the same data should not return the same - value (due to the use of a random salt). Because of this, none of the fields that - are set to be encrypted when persisted can be a part of a WHERE clause in - your search queries for the entity they belong to. - - -* Encryption types - -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -||<> ||<> ||<> || <> | -|| || ||(<<>>) || | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARBINARY, BLOB |<<>> |Honors <<>>. | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |NUMERIC, NUMBER |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |NUMERIC, NUMBER |<<>> |Needs an additional <<>> property. | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> | | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ -|<<>> |VARCHAR, CLOB, TEXT |<<>> |Offers an additional <<>> property. | -*------------------+---------------------------------+---------------------------------------+-------------------------------------------------------------------+ - - When storing an encrypted field, note that you will need a higher amount of - space to store the result of the encryption than the space you would need to - store the unencrypted piece of data. This is specially important - when encrypting with <<>> - or <<>>, as NUMBER and NUMERIC fields are defined - by means of digits, not bytes, and thus the difference of size will be much higher - than intuitively expected (normally you won't use a field smaller than a NUMERIC(60) to - store an encrypted normal-size BigInteger). - - -* Configuration - - Setting jasypt to encrypt data with hibernate requires two separate actions: - - [[1]] <>. - - [[2]] <>. - - -** Configuring the Hibernate mapping - - The Hibernate mapping file can be configured in two different ways: - - [[A]] <>, declaring the encryptor parameters in the - mapping itself (password, algorithm, providerName, etc). This is not very recommended - (the mapping file does not seem like a right place for a password) - but can be useful in some situations. - When this method is selected, the encryptor implementation used - is always a <>. - -------------------- - - ... - - PBEWithMD5AndTripleDES - jasypt - 1000 - - ... - - ... - - ... - - ... - -------------------- - - Note: only "password" is a required parameter.\ - If this configuration method is used, it is not necessary to an - encryptor to Hibernate (like explained below). - - - [[B]] <>, which will be - with a specific . This way, all we will have - to use in the mapping file is this name (<<>>). - -------------------- - - ... - - strongHibernateStringEncryptor - - ... - - ... - - ... - - ... - -------------------- - - - -** Providing the encryptor to Hibernate - - If we have chosen to use the parameter in our Hibernate - mapping file, we will need to bind somehow an encryptor object to that name. This - can be done in two different manners, depending on whether we are using - an IoC container like Spring or not. - - Using this way of configuring encryption allows us to use pool-based versions of the - encryptor (like <<>>), which - will enhance performance in multi-processor/multi-core systems. - - * <> we simply need to create our encryptor, and then a - object to wrap it and set a - for it: - -------------------- - - - PBEWithMD5AndTripleDES - - - jasypt - - - 4 - - - - - - strongHibernateStringEncryptor - - - - - -------------------- - Also, we can do it all in the declaration, if - we don't want to use the outside of Hibernate and we - are OK with the standard encryptor implementation. Also be aware that - this approach uses a StandardPBEStringEncryptor instead of a pool-based - one, and so performace could be affected in multi-processor systems: - -------------------- - - - strongHibernateStringEncryptor - - - PBEWithMD5AndTripleDES - - - jasypt - - -------------------- - - - - * <>, we will have to use the - singleton directly, registering our encryptor at application - initialization like this (for example, inside a - for a webapp): - -------------------- - StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor(); - ... - HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - registry.registerPBEStringEncryptor("strongHibernateStringEncryptor", strongEncryptor); -------------------- - - - -** Using annotations - - Alternatively, we may have chosen to use annotations for mapping our entities - instead of separate XML mapping files. If it has been so, we can still - use jasypt to encrypt our data. - - All we will have to do is, first, define the encryption type with a <<@TypeDef>> annotation, - which could be either inside the persisted entity class or inside a <<@TypeDefs>> - declaration in a separate <<>> file: - -------------------- -@TypeDef( - name="encryptedString", - typeClass=EncryptedStringType.class, - parameters= { - @Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor") - } -) -------------------- - - ...and then simply map our property with the already declared type: - -------------------- - @Type(type="encryptedString") - public String getAddress() { - return address; - } -------------------- - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/index.apt jasypt-1.9.2/src/site/apt/index.apt --- jasypt-1.8/src/site/apt/index.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/index.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ - ------- - Main - ------- - - <> (July 25th, 2011). [{{{download.html}DOWNLOAD}}] [{{{changelog.html}ChangeLog}}] - - -Java Simplified Encryption - - Jasypt is a java library which allows - the developer to add basic encryption capabilities to his/her - projects with minimum effort, and without the need of having - deep knowledge on how cryptography works. - - * High-security, standards-based encryption techniques, both for unidirectional - and bidirectional encryption. Encrypt passwords, texts, numbers, binaries... - - * Transparent integration with <>. - - * Suitable for integration into <>-based applications and also - transparently integrable with <>. - - * Integrated capabilities for encrypting the configuration of applications - (i.e. datasources). - - * Specific features for <> in multi-processor/multi-core systems. - - * Open API for use with any JCE provider. - - * {{{features.html}...and much more}} - - Have a look at the complete set of <<{{{features.html}Jasypt Features}}>> - or check the <<{{{faq.html}FAQ}}>>. - - With Jasypt, encrypting and checking a password can be as simple as... - ----------------- -BasicPasswordEncryptor passwordEncryptor = new BasicPasswordEncryptor(); -String encryptedPassword = passwordEncryptor.encryptPassword(userPassword); -... -if (passwordEncryptor.checkPassword(inputPassword, encryptedPassword)) { - // correct! -} else { - // bad login! -} ----------------- - - ...encrypting and decrypting a text... - ----------------- -BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); -textEncryptor.setPassword(myEncryptionPassword); -String myEncryptedText = textEncryptor.encrypt(myText); -... -String plainText = textEncryptor.decrypt(myEncryptedText); ----------------- - - ...and what about encrypting some sensitive data directly from Hibernate? - ----------------- - - ... - - - ... - ----------------- - - But of course, besides easy, <>. You will - be able to choose encryption algorithms, salt generation and many more - advanced features... - - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/jaxb.apt jasypt-1.9.2/src/site/apt/jaxb.apt --- jasypt-1.8/src/site/apt/jaxb.apt 2011-07-04 16:51:49.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/jaxb.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ - ------- - Integrating Jasypt with JAXB 2.0 - ------- - - -Integrating Jasypt with JAXB 2.0 (Mini-Howto) - - (Mini-Howto contributed by <\311amonn Linehan>) - - -* Introduction - - The Java Architecture for XML Binding (JAXB) is an API and set - of tools in Java for accessing XML through Java. Unlike a SAX or DOM - based approach, JAXB does not require any manipulation of XML or - knowledge of XML processing libraries. JAXB simply required a - developer to bind the schema of an XML document to Java classes - (these can be generated). JAXB then look after unmarshalling teh XML - document into Java content objects that are available to your - program. - - Wolfgang Laun provides a {{{http://jaxb.java.net/tutorial}comprehensive - introduction to JAXB}} at jaxb.java.net. The {{{http://jcp.org/en/jsr/detail?id=222"}JAXB Specification - document}} is available from jcp.org. - - -* Step 1: Create an <<>> - - It is possible to extend JAXB to make it capabable of - unmarshalling encrypted XML values to decrypted strings in the - corresponding Java objects by creating an 'adapter' class, that - extends <<>> and uses Jasypt to do the actual - encryption/decryption. Your adapter will be converting between one - <<>> and another so the class would look like: - ----------- - -package example.cfg; - -import java.io.File; -import java.io.IOException; - -import javax.xml.bind.annotation.adapters.XmlAdapter; - -import org.apache.commons.io.FileUtils; -import org.jasypt.encryption.pbe.PBEStringEncryptor; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; -import org.jasypt.properties.PropertyValueEncryptionUtils; - -public class EncryptedStringXmlAdapter extends XmlAdapter { - - private final PBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - - /** - * Constructor. Reads the password from a key file on disk - */ - public EncryptedStringXmlAdapter() { - String keyFile = Environment.getProperty(PropertyConstants.MASTER_KEY_FILE); - try { - byte[] bytes = FileUtils.readFileToByteArray(new File(keyFile)); - String key = new String(bytes); - encryptor.setPassword(key); - } catch (IOException e) { - System.err.println("Could not load key from " + keyFile); - } - } - - /** - * Encrypts the value to be placed back in XML - */ - @Override - public String marshal(String plaintext) throws Exception { - // This encrypts and adds the ENC(...) - return PropertyValueEncryptionUtils.encrypt(plaintext, encryptor); - } - - /** - * Decrypts the string value - */ - @Override - public String unmarshal(String cyphertext) throws Exception { - - // Perform decryption operations as needed and store the new values - if (PropertyValueEncryptionUtils.isEncryptedValue(cyphertext)) - return PropertyValueEncryptionUtils.decrypt(cyphertext, encryptor); - - return cyphertext; - } - -} - ----------- - - The constructor of this class is reading the Jasypt password - from a file whose location on disk is specified in a property file. - - - - -* Step 2: Install your adapter using annotations - - Here is a simple example of how the adapter might be used to encrypt - a configuration file. Imagine your application has an - <<>> - class with and string fields you - want to store encrypted. This class is annotated with JAXB - annotations to indicate how it should be mapped to XML. The class - will look something like this: - - ----------- - -package example.cfg; - -import java.util.Collections; -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessOrder; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorOrder; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - -@XmlRootElement(name = "mailserver-config") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlAccessorOrder(XmlAccessOrder.UNDEFINED) -public class EmailConfiguration { - - @XmlAttribute(required = true) - String host; - - @XmlAttribute(required = true) - String port; - - @XmlElement(required = true) - @XmlJavaTypeAdapter(value = EncryptedStringXmlAdapter.class) - String username; - - @XmlElement(required = true) - @XmlJavaTypeAdapter(value = EncryptedStringXmlAdapter.class) - String password; - -} - ----------- - - Notice that the @XmlTypeAdapter annotation is added only to - the two fields we would like to allow encrypted values in. - - The above code fragment will map to the following schema: - ----------- - - - - - - - - ----------- - - -* Example: Unmarshalling encrypted configuration from XML using JAXB - - Using this class an XML configuration file can be created like - the one below: - ---------- - - mail.example.loc - 25 - private@example.loc - ENC(9Wp+tVgrQSrD71u833wsRxxm96Lq2qoiqkR0jX) - ---------- - - Notice that although both of the and - fields may contain encrypted values, our adapter implementation will - check if the field contains an encrypted value using the - <<>> - method call. In the example above, only the field - contains an encrypted value. - - This XML fragment can be unmarshalled to a Java object using - JAXB with the following code: - --------- -// JAXB load the mail servers configuration -JAXBContext context = JAXBContext.newInstance(EmailConfiguration.class); -Unmarshaller unmarshaller = context.createUnmarshaller(); - -EmailConfiguration configuration = - (EmailConfiguration) unmarshaller.unmarshal(ConfigHelper.getConfigStream(EMAIL_CFG_RESOURCE)); --------- - - This <<>> - code is simply a static helper function that opens an - <<>> - to our XML file on disk and creates an - <<>> - from which the XML is parsed by JAXB. To test this approach without - having to implement a helper function like this one you could store - your XML fragment as a - <<>> - in your class and create a StreamSource from it using: - --------- -new StreamSource( new StringReader( xmlStr.toString() ) ) --------- - - When the field of the unmarshalled - <<>> - object is accessed in code, the decrypted value will be returned. - - This example has illustrated how any application-specific - configuration file can contain encrypted values. Using JAXB 2.0 to - load and convert XML to java objects is fast and easy to program. - JAXB's extensibility and ability to convert data in XML format to - Java objects has allowed us use Jasypt transform from encrypted XML - to decrypted strings. Although this example shows one-way (i.e. - decryption only) the transformation works in both drections allowing - data in any XML document, messaging protocol or RPC mechanism to be - protected with Jasypt. - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/lite.apt jasypt-1.9.2/src/site/apt/lite.apt --- jasypt-1.8/src/site/apt/lite.apt 2010-10-28 13:51:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/lite.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ - ------- - Using the lite artifact - ------- - - -Using the lite artifact - - Since version 1.7, jasypt includes a lightweight version of the standard jasypt .jar file, in order to reduce the - total size in bytes needed in your application to use jasypt. This is especially helpful when - using jasypt in mobile platforms. - - Jasypt "lite" includes both Standard and Pooled, Byte and String digesters and encryptors. And - it specifically excludes: - - * BigDecimal and BigInteger encryption. - - * The "util" package containing utility classes like <<>> (a - correctly configured StandardStringDigester will be used instead). - - * All Spring, Hibernate and Wicket integrations. - - * Web PBE Configuration artifacts. - - * CLI utils. - - * Property file encryptions. - - * "Zero" salt generator. - - If you are using Maven, you can easily include the "lite" jar in your application by specifying - a : - ---- - - org.jasypt - jasypt - {version} - lite - compile - ---- - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/mailinglists.apt jasypt-1.9.2/src/site/apt/mailinglists.apt --- jasypt-1.8/src/site/apt/mailinglists.apt 2010-10-25 22:53:16.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/mailinglists.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - ------- - Mailing Lists - ------- - - -Jasypt Mailing Lists - -* jasypt-announce (jasypt-announce@lists.sourceforge.net) - - Be informed of new releases and changes in jasypt as soon as they appear. - Very low traffic. - - {{{https://lists.sourceforge.net/lists/listinfo/jasypt-announce}[SUBSCRIBE]}} - {{{http://sourceforge.net/mailarchive/forum.php?forum_name=jasypt-announce}[ARCHIVES]}} - -* jasypt-users (jasypt-users@lists.sourceforge.net) - - The jasypt users list. Request help, discuss your ideas or make suggestions - and stay in touch with other jasypt users all over the world. - - This mailing list is equivalent to the Users forum, and you can use them - interchangeabily. - - {{{https://lists.sourceforge.net/lists/listinfo/jasypt-users}[SUBSCRIBE]}} - {{{http://old.nabble.com/Jasypt---Users-f21330.html}[USERS FORUM]}} - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/maven.apt jasypt-1.9.2/src/site/apt/maven.apt --- jasypt-1.8/src/site/apt/maven.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/maven.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ - ------- - Using Jasypt from Maven 2 - ------- - - -Using Jasypt from Maven 2 - - Adding jasypt to your Maven 2 project is very easy, - you just need to add the following dependency to your pom.xml: - ---------- - - org.jasypt - jasypt - {version} - compile - ---------- - - Alternatively, by specifying a classifier you can use the artifact, which contains only - the essentials in a much smaller .jar file. [{{{lite.html}More Info}}]. - ---------- - - org.jasypt - jasypt - {version} - lite - compile - ---------- - - -Using jasypt from Maven 1.x - - Adding jasypt to your Maven 1.x project is almost as easy - as it is for Maven 2, except for the lack of support for transitive dependencies. - So, you will need to add the following dependencies to your project.xml: - ---------- - - org.jasypt - jasypt - {version} - - - - commons-lang - commons-lang - 2.1 - - - commons-codec - commons-codec - 1.1 - - - - com.ibm.icu - icu4j - 3.4.4 - - ---------- - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/non-default-providers.apt jasypt-1.9.2/src/site/apt/non-default-providers.apt --- jasypt-1.8/src/site/apt/non-default-providers.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/non-default-providers.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ - ------- - Using Jasypt with non-default JCE providers - ------- - - - If you are looking for advice on using Jasypt with the - {{{http://www.bouncycastle.org}Bouncy Castle JCE Provider}}, although - this guide will also be relevant for you, you can also have a look at - the specific {{{bouncy-castle.html}Jasypt + Bouncy Castle integration guide}}. - -Using Jasypt with non-default JCE providers - - Jasypt has an open JCE provider API which allows the developer to use any - existing JCE provider for message digesting or password encryption from - jasypt. - - What this means is that any existing algorithms for - both digests or PBE can be used in jasypt, as long as you have a JCE - provider which implements it. - - Note that your Java VM (let's say Sun's) already ships with a - JCE provider, which is the one which will be used by jasypt if you do - not specify any. - - -* What is a JCE provider? - - For you as a non-specialised developer, it will be good to know that a - JCE provider is just a piece of software which implements encryption - algorithms, and which bundles at least one class that implements the - <> interface. - - This class will be the one that we will call "the provider", and one of its - methods, <<>> will allow us to know the name with which this provider - will be registered at our security framework, if we do so (see below). - - If we want to use an algorithm shipped with a specific provider from - our code, we have three choices: - - * <>, copying the - provider's jar files to the of our JRE - installation (<<<$JRE_HOME/lib/ext>>>) - and then appending the name of the <<>> class - at the end of the provider list at the <<>> - file in <<<$JRE_HOME/lib/security>>>. - - [] - - * <>, by just calling the - <<>> static method in - the <<>> class. - - [] - - * <>. Some security entities like - <<>>s or <<>>s allow you to pass - the provider object itself as a parameter when specifying an algorithm. - This way the provider doesn't need to be registered previously to its use. - - - -* How can you use your own providers in jasypt? - - Using a non-default JCE provider in jasypt for both message digesting or - password-based encryption is really straightforward. - You have two options: - - * <> when configuring your digesters or - encryptors, with their <<>> method. Using this - method assumes you have already registered a provider with the specified - name. - - [] - - * <> when configuring your digesters or - encryptors, with their <<>> method. The provider - doesn't need to be previously registered. - - Some examples (using the Bouncy Castle provider): - - ----------------- -... -Security.addProvider(new BouncyCastleProvider()); -... -StandardPBEStringEncryptor mySecondEncryptor = new StandardPBEStringEncryptor(); -mySecondEncryptor.setProviderName("BC"); -mySecondEncryptor.setAlgorithm("PBEWITHSHA256AND128BITAES-CBC-BC"); -mySecondEncryptor.setPassword(myPassword); - -String mySecondEncryptedText = mySecondEncryptor.encrypt(myText); -... ----------------- - ----------------- -... -StandardStringDigester digester = new StandardStringDigester(); -digester.setProvider(new BouncyCastleProvider()); -digester.setAlgorithm("WHIRLPOOL"); - -String digest = digester.digest(message); -... ----------------- - - - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/seam2.apt jasypt-1.9.2/src/site/apt/seam2.apt --- jasypt-1.8/src/site/apt/seam2.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/seam2.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,225 +0,0 @@ - ------- - Integrating Jasypt with Seam 2 - ------- - - -Integrating Jasypt with Seam 2 (Mini-Howto) - - (Mini-Howto contributed by ) - -* Step 1: Adding the dependencies - - Make sure you include references to Jasypt and its dependencies in your - project. Check the {{{dependencies.html}dependencies page}} for details on - the specific jar files to be added. - -* Step 2: Adding the modules - - Make Seam aware that you are using Jasypt by adding the following to - <<>>: - ----------- - - - jasypt-1.5.jar - - - commons-lang-2.1.jar - - - commons-codec-1.1.jar - - - - icu4j-3.4.4.jar - ----------- - - <>. Either copy them - to the server's <<>> directory or make sure they are part of the <<>> file when - the app is deployed. If you used <<>> to generate the skeleton for the - application then modify the ear target in the <<>> file to include the jars. - - -* Step 3: Use annotations to specify the encrypted fields in your class files - - The Jasypt {{{hibernate3.html}page on Hibernate 3 integration}} details the steps. Here is a - simple example. Imagine you have a <<>> class with an string field you - want to store encrypted. The class will look something like this: - - ----------- -package entity.Person; - -import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.GeneratedValue; -import javax.persistence.Version; -import org.jboss.seam.annotations.Name; -import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.Parameter; -import org.hibernate.validator.Length; -import org.jasypt.hibernate.type.EncryptedStringType; - -@TypeDef( - name="encryptedString", - typeClass=EncryptedStringType.class, - parameters={@Parameter(name="encryptorRegisteredName", - value="myHibernateStringEncryptor")} -) - -@Entity -@Name("person") -public class Person implements Serializable { - - private static final long serialVersionUID = -2082341992912047209L; - - private Long id; - private Integer version; - private String firstName; - private String lastName; - private String ssn; - - @Id @GeneratedValue - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - @Version - public Integer getVersion() { - return version; - } - - @SuppressWarnings("unused") - private void setVersion(Integer version) { - this.version = version; - } - - @Length(max=20) - public String getFirstName() { - return firstName; - } - - public void setFirstName(String name) { - this.firstName = name; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getLastName() { - return lastName; - } - - public void setSsn(String ssn) { - this.ssn = ssn; - } - - @Type(type="encryptedString") - public String getSsn() { - return ssn; - } -} ----------- - - Notice that we use simple annotations to define the Hibernate mapping. Also - notice the imports you'll need to define in order for this to work. - -* Step 4: Provide the encryptor to Hibernate - - This was a problem in earlier version of Seam because - there was not an easy way to run code when the application was initialised. - Seam 2 solves this problem by providing the - <> event. The event fires right after - Seam has initialised and started up all components. This provides the - perfect place to stick the code that provides the encryptor to Hibernate. - - To make use of the event, we simply define a class with a method that acts - as an observer of the event. Basically, the server is started, right after - Seam finishes initializing the event fires, our code gets run. Here is a - simple class called <<>> that does the work: - ----------- -package session; - -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; -import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig; -import org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry; -import org.jboss.seam.annotations.Name; -import org.jboss.seam.annotations.Observer; -import org.jboss.seam.annotations.Logger; -import org.jboss.seam.log.Log; - -@Name("initializer") -public class Initializer { - - @Logger Log log; - - @Observer("org.jboss.seam.postInitialization") - public void initializeJasypt() { - - log.info("Initializing Jasypt String Encryptor"); - StandardPBEStringEncryptor strongEncryptor = - new StandardPBEStringEncryptor(); - EnvironmentPBEConfig config = new EnvironmentPBEConfig(); - config.setPasswordEnvName("jasypt_password"); - strongEncryptor.setConfig(config); - HibernatePBEEncryptorRegistry registry = - HibernatePBEEncryptorRegistry.getInstance(); - registry.registerPBEStringEncryptor("myHibernateStringEncryptor", strongEncryptor); - - } -} ----------- - - - There are a few things going on here: - - * First, the encryptor is registered - with the name "" <>. That is important for obvious - reasons. - - [] - - * Second, we are using the <<>> class to configure the - encryptor. This is done so that we can specify - the password as an environment variable that will be read when the code is - run. This might be a better (although optional) solution than leaving the password in - a file or hard coded into the app itself because we can immediately unset - the variable after the code runs. The <<>> method is used to - specify the environment variable that will hold the password, in this case, - "". - -* Step 5: Start the server and test that all is working - - First set the variable that EnvironmentPBEConfig is expecting: - ----------- -# export jasypt_password="mysecretpassword" ----------- - - Start the server in the background so we can get back to the prompt: - ----------- -# run.sh & ----------- - - Wait for the server to start up. Look for the logging message indicating - that the code actually ran. After the startup is complete, unset the - environment variable. - ----------- -# unset jasypt_password ----------- - - If all went well then the ssn field will be stored encrypted in the DB! - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/spring.apt jasypt-1.9.2/src/site/apt/spring.apt --- jasypt-1.8/src/site/apt/spring.apt 2010-10-28 21:33:54.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/spring.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - ------- - Integrating Jasypt with Spring Framework - ------- - - -Integrating Jasypt with Spring Framework - - You have nothing special to do to integrate Jasypt with Spring, as all of the - encryption tools (digesters and encryptors) in jasypt have the adequate design - to be correctly instantiated and dependency-injected from a Spring - application context. - - Example: - ------------- - - - PBEWithMD5AndTripleDES - - - jasypt - - ------------- - - Besides, all digesters and encryptors in jasypt are <>, which - means that they can be safely treated as singletons, the default behaviour - of Spring's bean container. This avoids concurrency problems in multi-threaded - environments like web applications. - -Integrating jasypt with Spring's application configuration infrastructure - - Jasypt's capabilities for managing encrypted configuration files can also be integrated with - Spring's application configuration infrastructure. Read mode on {{{encrypting-configuration.html}Encrypting - Application Configuration Files}}. - - -Integrating jasypt with Spring Security (Acegi Security) - - For details on how to integrate jasypt with Acegi, the standard security framework - for Spring, please have a look at {{{springsecurity}this guide}}. - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/springsecurity.apt jasypt-1.9.2/src/site/apt/springsecurity.apt --- jasypt-1.8/src/site/apt/springsecurity.apt 2010-10-28 21:33:54.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/springsecurity.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,261 +0,0 @@ - ------- - Integrating Jasypt with Spring Security (and older Acegi Security) - ------- - - - If you want to know what jasypt can do to improve the security of your users' - passwords in an acegi-enabled application, check the {{{faq.html}FAQ}} and - also the article '{{{howtoencryptuserpasswords.html}How to encrypt user - passwords}}' guide. - -Integrating Jasypt with Spring Security 2.x or 3.x (or Acegi 1.x) - - Jasypt provides two integration packages, <<>>, - <<>> and <<>>, which - allow the integration of jasypt's powerful password encryption capabilities into - ACEGI-enabled and Spring Security-enabled applications, respectively. - Once integrated, jasypt will - be responsible for managing the check of users' passwords at sign in in - a transparent way for the rest of the security framework. - - Password encryption is set up in Spring Security by injecting an - object implementing the <<>> - (ACEGI 1.x), <<>> - (Spring Security 2.x) or <> - (Spring Security 3.x) interface into your <<>>. - - - Jasypt provides two implementations of this <<>> interface - for each of ACEGI 1.x and Spring Security 2.x and 3.x: - - * <> / - <> / - <>, which - is used for uni-directional password encryption (recommended), - and which can wrap either an <> or - an <> object. - - [] - - * <> / - <> / - <>, which - is used for bi-directional password encryption (not recommended), - and which can wrap either an <> or - an <> object. - - Please note that , but - bi-directional password encryption (this is, passwords which can be decrypted) - is allowed in order to support some legacy and complex inter-application - integration scenarios. - - - Also, jasypt includes org.jasypt.spring.security3.TokenBasedRememberMeServices for - Spring Security 3, which works in the same way as - org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices - but creating a jasypt-digested data signature for inclusion in rememeber-me cookies. - - -* org.jasypt.spring.security|security2|security3.PasswordEncoder - - These <<>> - implementations can wrap either an <> - implementation (<<>>, <<>>, - <<>>,...) or an <> - implementation (<<>>,...). This means that all - uni-directional encryption methods supported in jasypt can be integrated - into ACEGI / Spring Security using this adapter. - - It can be used from your Spring XML resource files like this - (for a <<>> and Spring Security 3.x): - ------------- - ... - - - - ... - ... - - - - - - - - - ... - ... - - - - - - - - - ... ------------- - - Or like this (for a <<>> and Spring Security 3.x): - ------------- - ... - - - - - - - ... - ... - - - - - - - - - ... - ... - - - - - - - - - ... ------------- - - -* org.jasypt.spring.security|security2|security3.PBEPasswordEncoder - - These <<>> - implementations can wrap either an <> - implementation (<<>>, <<>>,...) - or an <> - implementation (<<>>,...). This means that all - bi-directional encryption methods supported in jasypt can be integrated - into ACEGI / Spring Security using this adapter. - - It can be used from your Spring XML resource files like this - (for a <<>> and Spring Security 3.x): - ------------- - ... - - - - - - ... - ... - - - - - - - - - ... - ... - - - - - - - - - ... ------------- - - Or like this (for a <<>> and Spring Security 3.x): - ------------- - ... - - - - - - - ... - ... - - - - - - - - - ... - ... - - - - - - - - - ... ------------- - - -* Using other JCE providers like Bouncy Castle - - With Jasypt, you can easily integrate the {{{http://www.bouncycastle.org}Bouncy Castle}} - JCE provider (or any other JCE provider) into your Acegi / Spring Security infrastructure, thus - being able to use lots of new algorithms for password encryption at your apps. - - For example, you could use the hash function on your passwords - just like this: - ------------- - ... - - - ... - ... - - - - - WHIRLPOOL - - - - - - ... - ... - - - - - - - - - ... - ... - - - - - - - - - ... ------------- - - - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/tapestry.apt jasypt-1.9.2/src/site/apt/tapestry.apt --- jasypt-1.8/src/site/apt/tapestry.apt 2011-06-04 17:25:54.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/tapestry.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ - ------- - Integrating Jasypt with Tapestry - ------- - - -Integrating Jasypt with Tapestry - - There is an external article regarding integration of Jaspt with Tapestry: - - {{{http://tawus.wordpress.com/2011/05/06/tapestry-magic-11-integration-with-jasypt-for-encrypting-urls/}Tapestry Magic #11: Integration with Jasypt for encrypting URLs}} - - Author: {{{http://tawus.wordpress.com/}tawus}} - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/team.apt jasypt-1.9.2/src/site/apt/team.apt --- jasypt-1.8/src/site/apt/team.apt 2011-07-25 16:31:35.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/team.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - ------- - Team - ------- - - -Development Team - - The team is comprised of Members and Contributors. Members have direct - access to the source of a project and actively evolve the code-base. - Contributors improve the project through submission of patches and - suggestions to the Members. The number of Contributors to the project - is unbounded. Get involved today. All contributions to the project - are greatly appreciated. - -* Members - -*-----------+--------------------------------+---------------------+--------------------------------------+----------------------------------+ -| <> | <> | <> | <> | <> | -*-----------+--------------------------------+---------------------+--------------------------------------+----------------------------------+ -|dfernandez |Daniel Fern\341ndez | Spain | dfernandez AT users.sourceforge.net | Lead Developer (Project founder) | -*-----------+--------------------------------+---------------------+--------------------------------------+----------------------------------+ - -* Contributors - - -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -| <> | <> | <> | <> | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|ivangsa |Iv\341n Garc\355a S\341inz-Aja | Spain | ivangsa AT users.sourceforge.net | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|stevencoco |Steven Coco | U.S.A. | hello AT stevencoco.com | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|mmuino |Marcos Mu\355\361o Garc\355a | Spain | bardaos AT gmail.com | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|greg.jos |Gr\351gory Joseph | Switzerland | greg.jos AT gmail.com | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|bayamos |Frank Mena | U.S.A. | frankm.os AT gmail.com | -*-----------+--------------------------------+-------------------------------------+----------------------------------+ -|carlosft1 |Carlos Fern\341ndez | U.S.A. | carlosft1 AT users.sourceforge.net| -*-----------+--------------------------------+-------------------------------------+----------------------------------+ diff -Nru jasypt-1.8/src/site/apt/webconfiguration.apt jasypt-1.9.2/src/site/apt/webconfiguration.apt --- jasypt-1.8/src/site/apt/webconfiguration.apt 2010-10-26 23:15:38.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/webconfiguration.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ - ------- - Web PBE Configuration - ------- - - -Web PBE Configuration - - When in a web application, Jasypt allows developers to avoid - storing encryption passwords for PBE encryptors in files inside the webapp, - specifying instead these passwords to the application through a web interface - each time it is deployed. - - This is achieved thanks to an infrastructure consisting of: - - * <>: <<>> - and <<>>, which when assigned - to an encryptor, "mark" this encryptor as eligible for receiving its - password via web. - - [] - - * A <>, - <<>> - which will let us create our encryptors, set them their <<>> - configs and register them somewhere in our application. This context - listener will be unnecessary if we are using the Spring Framework. - - [] - - * A <>, <<>>, which - will avoid any user to access the web application until the - encryption passwords have been set by the admin. - - [] - - * A <>, <<>>, which - will show the authorised user a form with which he/she can set the - encryption passwods for all encryptors with a <<>>. - -* WebPBEConfig - - For an encryptor to be assigned a password from the web, it only has - to be assigned a WebPBEConfig object, which must be initialised with - a unique name an a validation word. The name will identify - the config object (and thus the encryptor) and the validation word will - make sure that only an authorised person (for example, the application - deployer) sets the passwords. - -* WebPBEInitializationContextListener - - This is a ContextListener which takes an - <<>> implementation - class name as a parameter (context-param) and calls its - <<>> method to allow the webapp to - create its PBE encryptors and declare their associated <<>> - objects. - - An example <<>> implementation: - -------- - package myapp; - ... - public class MyWebPBEInitializer implements WebPBEInitializer { - - public void initializeWebPBEConfigs() { - - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - - WebPBEConfig webConfig = new WebPBEConfig(); - webConfig.setValidationWord("jasypt"); - webConfig.setName("Main Password"); - - encryptor.setConfig(webConfig); - - // Get some user-defined singleton or similar, and register - // the encryptor with it so that it can be accessed from the - // rest of the application. - - } - - } -------- - - An example <<>> fragment, registering the context listener: - -------- - - webPBEInitializerClassName - myapp.MyWebPBEInitializer - - - - - org.jasypt.web.pbeconfig.WebPBEInitializationContextListener - - -------- - - <>: If the web application uses <>, <<>> - objects are declared as beans in the Spring context and this Spring context - is initialised at application deploy time - (with Spring's <<>>), the use - of this context listener will become unnecessary. - - -* WebPBEConfigFilter - - This filter is intended to avoid access to the web application until - an admin has set the encryption passwords. It will query the web PBE config - system to know whether passwords have been set and, if not, it will show the - user a plain page. - - An example <<>> fragment (being applied on a Struts servlet): - -------- - - webPBEConfigFilter - org.jasypt.web.pbeconfig.WebPBEConfigFilter - - - - webPBEConfigFilter - strutsActionServlet - -------- - - - -* WebPBEConfigServlet - - This servlet's URL should be called by the webapp administrator at deploy - time, for setting the passwords of all the PBE encryptors which have - been previously assigned a <<>> configuration object. - - If web PBE configuration has not been done yet, it will show the user a - form containing two inputs for each encryptor: the - and the (retyped). - - * The must be input to the value set on the - <<>> object with its <<>> - method. This will ensure that only an authorised person will set - the encryption passwords. - - * The (retyped) must be input to the value which is - desired to be the encryption password for each specific encryptor. - - [] - -[images/webConfig.png] Web PBE configuration form - - An example <<>> fragment: - -------- - - webPBEConfigServlet - - org.jasypt.web.pbeconfig.WebPBEConfigServlet - - 1 - - - - webPBEConfigServlet - /webPBEConfig.do - -------- - - If this servlet's context is set a logger, it will output messages for - both successful and failed attempts to set passwords, including - date, time and originating IP address. - diff -Nru jasypt-1.8/src/site/apt/whatsnew17.apt jasypt-1.9.2/src/site/apt/whatsnew17.apt --- jasypt-1.8/src/site/apt/whatsnew17.apt 2011-07-25 12:47:46.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/whatsnew17.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,240 +0,0 @@ - ------- - What is new in Jasypt 1.7 - ------- - - - <> - -What is new in Jasypt 1.7 - -* Hibernate 3.6 compatibility - - Hibernate 3.6.0.Final introduced some changes to its custom type API which made jasypt transparent - encryption types produce exceptions during initialization. - - This issue has been fixed while keeping backwards compatibility with older 3.x versions - of Hibernate. - - -* Removal of third-party dependencies - - Dependencies on both the Apache Commons-Lang and Apache Commons-Codec libraries have been - removed. All you need now to run jasypt is: - - * <<>> if you are using Java version 6 or newer. - - * <<>> and <<>> if you are using Java version 5 or older. - - -* Improved performance in multi-processor/multi-core systems - - Jasypt 1.7 includes pool-based versions of Standard(Byte|String)Digester and - StandardPBE(Byte|String|BigDecimal|BigInteger)Encryptor which can vastly improve performance - in multi-processor/multi-core systems. - - These pooled digesters and encryptors have exactly the same API as their - non-pooled "Standard" relatives --so they can be used interchangeably-- but add a new configuration - parameter called "poolSize" which establishes the amount of Standard* digesters/encryptors they - will internally hold. - ---- - PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); - encryptor.setPoolSize(4); - encryptor.setAlgorithm(algorithm); - encryptor.setPassword(encPassword); - ... - final String result = encryptor.encrypt(message); - ... ---- - - These pooled objects will use their internal Standard* digesters/encryptors to serve the - requests in round-robin, so the amount of thread blocking caused by the - synchronised code in the Standard* artifacts is reduced to a minimum. - - These implementations do not create new threads, so they can be safely used in container-controlled - environments which do not allow the creation of new threads. - - The pool size recommended for a specific application and machine depends on many factors, but will - be approximately equal to the number of processors/cores in the machine. - - -* Lightweight jar - - Jasypt 1.7 includes a version of the standard jasypt .jar file, in order to reduce the - total size in bytes needed in your application to use jasypt. This is especially helpful when - using jasypt in mobile platforms. - - Jasypt "lite" includes both Standard and Pooled, Byte and String digesters and encryptors. And - it specifically excludes: - - * BigDecimal and BigInteger encryption. - - * The "util" package containing utility classes like <<>> (a - correctly configured StandardStringDigester will be used instead). - - * All Spring, Hibernate and Wicket integrations. - - * Web PBE Configuration artifacts. - - * CLI utils. - - * Property file encryptions. - - * "Zero" salt generator. - - If you are using Maven, you can easily include the "lite" jar in your application by specifying - a : - ---- - - org.jasypt - jasypt - 1.7 - lite - compile - ---- - -* Algorithm Registry - - Jasypt 1.7 adds a class called <<>> aimed at easily listing - the digest and PBE encryption algorithms currently present in your system (and usable by jasypt). - - It is very simple to use: - ---- - // digestAlgos is a Set containing the names of the algorithms - Set digestAlgos = AlgorithmRegistry.getAllDigestAlgorithms(); - ... ---- - - Also, a new command line utility script has been added to the <<>> folder of the jasypt - distribution that will list your jasypt-ready algorithms from the command line: - ---- -$ cd jasypt-1.7/bin -$ ./listAlgorithms.sh - -DIGEST ALGORITHMS: [MD2, MD5, SHA, SHA-256, SHA-384, SHA-512] - -PBE ALGORITHMS: [PBEWITHMD5ANDDES, PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_40] - ---- - - -* Prefix and Suffix - - New "<<>>" and "<<>>" configuration parameters have been added to String digesters that - allow the specification of a prefix and/or a suffix that will be added to the digest results, and also - expected when matching existing digests. - - -* Lenient salt size checking - - A new configuration parameter has been added to digesters in order to enable a lenient behaviour towards - salt size in digests when checking them. - - This allows a digester to check as valid a digest created with a different amount of salt bytes than the - value currently configured for it with <<>>. - - -* Salt positioning - - New configuration parameters have been added to digesters in order to invert the position of the salt - bytes in relation to the message being digested before and after the digest operation. - - The "<<>>" configuration parameter allows salt to be positioned - after the message being digested (instead of the default, which is before) before applying the digest - function to the whole. - - The "<<>>" configuration parameter allows plain (non-digested) salt to - be positioned after the results of the digest operation (instead of the default, which is before) after - the digest function has been applied. - - Both these configuration parameters allow compatibility with some encryption schemes which require - the salt bytes to be positioned after the message, like for example most implementations of the SSHA - password encyption scheme defined in RFC2307: - ---- - final StandardStringDigester ssha = new StandardStringDigester(); - ssha.setAlgorithm("SHA-1"); - ssha.setIterations(1); - ssha.setSaltSizeBytes(8); - ssha.setPrefix("{SSHA}"); - ssha.setInvertPositionOfSaltInMessageBeforeDigesting(true); - ssha.setInvertPositionOfPlainSaltInEncryptionResults(true); - ssha.setUseLenientSaltSizeCheck(true); - ... - // This result will change each time it is executed due to random salt: - // result == "{SSHA}agbpAYBa95UqQml810zUv0c8aNUUcWdtH5u8Yw==" - final String result = ssha.digest ---- - - -* Compatibility with RFC2307 password encryption standards used in LDAP systems - - Thanks to the new configuration parameters added to jasypt, a new "util" package has been created - in <<>> containing utility classes for password checking following - the schemes defined in RFC2307 (especially common in LDAP systems): - - * RFC2307SHAPasswordEncryptor: SHA-1 algorithm, no salt, no iterations. - - * RFC2307MD5PasswordEncryptor: MD5 algorithm, no salt, no iterations. - - * RFC2307SSHAPasswordEncryptor: SHA-1 algorithm, 8-byte salt (configurable), salt positioned - after message, lenient salt size checking, no iterations. - - * RFC2307SMD5PasswordEncryptor: MD5 algorithm, 8-byte salt (configurable), salt positioned - after message, lenient salt size checking, no iterations. - - -* Rebuilt command-line (CLI) scripts - - The command-line scripts included in the <<>> folder of the jasypt distribution package - have been rewritten in order to add the new configuration parameters and also fix problems that - didn't allow these scripts to be correctly executed from outside the folder that contained them. - - -* Rebuilt zip distribution package - - The jasypt zip distribution package has been reconfigured and rebuilt in order to remove - the now-unnecessary "cli-bundle" jar file and to add icu4j to the <<>> folder so that - users with Java version < 6 do not have to add it themselves to the <<>> - environment variable to use the command line utils. - - -* Encryptable ServletContextPropertyPlaceholderConfigurer implementation for Spring - - Jasypt 1.7 includes <<>>, - a subclass of <<>> - which allows the transparent decryption of servlet context parameters in web applications (for example, - parameters in <<>>). - - These encrypted parameters can be specified in a way equivalent to that of encrypted parameters - in <<<.properties>>> files: - ---- - ... - - someParameter - ENC(...) - - ... ---- - - -* Encryptable PreferencesPlaceholderConfigurer implementation for Spring - - Jasypt 1.7 includes <<>>, - a subclass of <<>> - which allows the transparent decryption preferences set with JDK 1.4's Preferences API. - - -* TokenBasedRememberMeServices implementation for Spring Security 3 - - Jasypt 1.7 includes <<>> - for Spring Security 3, which works in the same way as - <<>> - but creating a jasypt-digested data signature for inclusion in rememeber-me cookies. - - \ No newline at end of file diff -Nru jasypt-1.8/src/site/apt/wicket.apt jasypt-1.9.2/src/site/apt/wicket.apt --- jasypt-1.8/src/site/apt/wicket.apt 2008-01-16 14:27:33.000000000 +0000 +++ jasypt-1.9.2/src/site/apt/wicket.apt 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ - ------- - Integrating Jasypt with Apache Wicket - ------- - - -Integrating Jasypt with Apache Wicket - - Although the most usual way of using jasypt - in wicket applications is password encryption, - transparent data persistance, etc. as usual, and for these operations no especial - wicket integration features are needed, there still exist some specific - security features in wicket which could make a good use of an encryption - library like Jasypt. Specifically, . - - Wicket can configure URLs to be encrypted, like - <<>>. - And for supporting this feature, it provides two cryptography - utility interfaces called <<>> - (for encryptor factories) and <<>> - (for encryptor objects). - - Wicket provides a set of simplistic implementations - of these interfaces, but security and configurability can be vastly - improved by using jasypt's infrastructure. - - Jasypt provides: - - * <>, an implementation of wicket's - <<>> interface which receives an - <<>> object (configured - at the user's wish: environment variables, web PBE config...) and - provides encryptors of class - <<>> (implementing <<>> interface). - - [] - - * <>, implementation of wicket's - <<>> returned by <<>>. - - - Note that <<>> objects adhere to wicket specifications of - returning String output in the form of . - - <>: jasypt's integration features for wicket require at least - . - -* Configuring the factory - - The ICryptFactory being used is configured at the <<>> method of - the class. - ---- - -public class MyApplication extends WebApplication { - - ... - ... - - @Override - protected void init() { - - super.init(); - - /* - * In the following code example we will create a Jasypt byte - * encryptor by hand, but in real world we can get it from Spring, - * configure it via Web PBE configuration... whatever we want to. - */ - StandardPBEByteEncryptor encryptor = new StandardPBEByteEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("jasypt"); - FixedStringSaltGenerator generator = new FixedStringSaltGenerator(); - generator.setSalt("wicketwicketwicketwicketwicket"); - encryptor.setSaltGenerator(generator); - - /* - * Create the Jasypt Crypt Factory with the desired encryptor, - * which will return org.jasypt.wicket.JasyptCrypt objects implementing - * the org.apache.wicket.util.crypt.ICrypt interface. - */ - ICryptFactory jasyptCryptFactory = new JasyptCryptFactory(encryptor); - - /* - * Set the Jasypt Crypt Factory into the application configuration. - */ - getSecuritySettings().setCryptFactory(jasyptCryptFactory); - - } - - ... - ... - -} ---- - - -* Configuring URL encryption - - Finally, for configuring URL encryption for our application: - ---- - -public class MyApplication extends WebApplication { - - ... - ... - - @Override - protected IRequestCycleProcessor newRequestCycleProcessor() { - - return new WebRequestCycleProcessor() { - @Override - protected IRequestCodingStrategy newRequestCodingStrategy() { - return new CryptedUrlWebRequestCodingStrategy(new WebRequestCodingStrategy()); - } - }; - - } - - ... - ... - -} - ---- \ No newline at end of file diff -Nru jasypt-1.8/src/site/fml/faq.fml jasypt-1.9.2/src/site/fml/faq.fml --- jasypt-1.8/src/site/fml/faq.fml 2011-07-25 12:47:47.000000000 +0000 +++ jasypt-1.9.2/src/site/fml/faq.fml 1970-01-01 00:00:00.000000000 +0000 @@ -1,608 +0,0 @@ - - - - - - About Jasypt - - - Where does Jasypt come from? Is it made or backed by any software company? - -

- Jasypt is Open Source Software created in his spare time by a Spanish Software Engineer - called Daniel Fernndez --also author - of other popular java libraries like thymeleaf or - op4j--, and which - has also received contributions of diverse kind from some other people. -

-

- It is neither made nor backed - by any software (or any other type of) company, and it is offered to the public - totally free of charge, both in binary and in source code forms, under the Apache License 2.0. -

-
-
- - - Does it implement or include cryptographic algorithms? - -

- No, it doesn't, Jasypt by itself does not implement nor distribute in any of its forms any cryptographic - algorithms, but it can use them via the Java Cryptography Extension. -

-
-
- - - Is it stable? Can it be considered production-ready? - -

- Yes, all of its releases can be considered stable and production-ready. -

-
-
- - - Does Jasypt offer any type of commercial support? - -

- No, it does not. Commercial support is not offered at the moment, but - there are User - Forums and Mailing Lists at your disposal. -

-
-
- - - How can I contribute to Jasypt? - -

- In many ways: -

-
    -
  • You can write in the User - Forums (or directly to the Team) with your - ideas for improving Jasypt.
  • -
  • You can contribute some code, write a patch for a new feature - or behaviour (please, tell the project admins first about your idea so - that effort can be correctly coordinated).
  • -
  • You can write articles, reviews, blog posts, etc. about Jasypt, showing - how it works or how it integrates with other technologies.
  • -
  • You can promote Jasypt in your company/work, showing your colleagues - or customers how encryption - can be an easy and powerful task by using Jasypt.
  • -
-

- If you want to contribute some code to Jasypt, please read first the - page on Contributing to Jasypt. -

-
-
- - - What is Jasypt's export classification in the United States of America? - -

- Although Jasypt does not implement nor distribute in any of its forms any cryptographic - algorithms, it can use them via the Java Cryptography Extension API and, as such, it is - classified under ECCN code 5D002 and approved for export under License Exception TSU. -

-
-
- -
- - - - General - - - What is jasypt useful for? Give me some examples of use, please... - -

- Jasypt is useful for many encryption tasks associated with applications, for example: -

-
    -
  • Encrypting passwords.
  • -
  • Encrypting sensitive information.
  • -
  • Encrypting data communications.
  • -
  • Creating sums for integrity checking of data.
  • -
  • ...and many more.
  • -
-
-
- - - Is it "simplified encryption" because it is less safe? - -

- No. Jasypt does not implement any encryption algorithms, but instead - delegates to the ones already provided by a JCE - (Java Cryptography Extension) provider, which can be either the - default VM one or any other of your choice, adding a layer for ease and - correctness of use, configurability, integration with many - other technologies, etc. -

-

- It is "simplified encryption" because it is much easier to use - and integrate than the standard APIs, but you will - get the same encryption power as if you were using the JCE API directly, - or even more, as jasypt will enforce - best practices and use standards that will ensure that you always - get the highest level of security from encryption. -

-
-
- - - Is jasypt intended for use only in web applications? - -

- No, not at all. Jasypt offers some special configuration facilities - to web applications, but it is not necessary for an application - to be web for using jasypt. Jasypt will not add any dependency - on any web-related API to your application if you don't want to. -

-
-
- - - I don't use Hibernate at all. Can I use jasypt anyway? - -

- Yes, you can. Jasypt provides an optional integration package for - Hibernate, but it does not need Hibernate for normal operation. It - won't add a dependency on Hibernate to your project. -

-
-
- - - I don't use Spring at all. Can I use jasypt anyway? - -

- Yes, you can. Jasypt is designed to be seamlessly integrated into - a Spring-based application if required, but it does not depend on Spring - in any way. It won't add a dependency on Spring to your project nor - will force you to develop in an IoC-friendly manner. -

-
-
- - - I don't use Spring Security (or Acegi) at all. Can I use jasypt anyway? - -

- Yes, you can. Jasypt provides an optional integration - package for Spring Security, but it does not need Spring Security - for normal operation.It - won't add a dependency on Spring Security to your project. -

-
-
- - - Can jasypt use the Bouncy Castle JCE provider? Is it required? - -

- Yes, since version 1.3, it can. The provider API in jasypt is open, - so that you can use Bouncy Castle or any other JCE provider of - your choice. You will only have to specify your provider to the - encryptors or digesters you are using when configurig them. -

-

- But, Bouncy Castle is not required. Jasypt has no dependency - on it, and thus you can decide not to use Bouncy Castle at all, - for example if you want to use the algorithms shipped with your JVM's - JCE default provider. -

-
-
- - - Are algorithms like AES or WHIRLPOOL supported in jasypt? - -

- Yes and no. Jasypt by itself does not implement any algorithms, but - it lets you use any JCE provider of your choice. -

-

- Both AES (encryption) and WHIRLPOOL (digests) are algorithms supported - by the Bouncy Castle JCE provider, and thus you can use them from - jasypt as long as you set Bouncy Castle as your JCE provider for your - jasypt encryptors or digesters. -

-
-
- - - Which is the difference between digests and password-based encryption? - -

- Digests are the results of applying cryptographic hash functions - such as MD5, - and are a type of one-way encryption. This means that an original - input cannot be reconstructed from its digest, once it has been - generated. -

-

- Password-based encryption is a type of bidirectional encryption, which - means that encrypted data can be decypted to reconstruct the original - input. Encryption is done by generating an encryption key, and passing it - to an encryption algorithm such as DES. This key, in password-based - encryption, is derived from a password set by the user - (usually by a applying a digest algorithm to it). -

-
-
- - - Where have the jasypt-hibernate and jasypt-spring-security modules gone? - -

- Jasypt source trunks were merged in version 1.2, so that everything - is now in a single module, jasypt. This has not affected - the package structure, and you will find the - jasypt-hibernate classes in package org.jasypt.hibernate - and the jasypt-spring-security ones at org.jasypt.spring.security, - as usual. -

-
-
- -
- - - - - Encrypting paswords - - - I am already using X for encrypting passwords. Why would I want to use jasypt instead? - -

- Well, first of all, if you are simply using a Message.digest() - or a DigestUtils.md5() - call to encrypt your passwords and store them in a database, you should know - that your password system is much weaker than you think, and that - acquiring access to your application could be easy for any attackers. - And it even becomes worse as the number of users in your application increases. -

-

- If you want to learn why this happens and how you could try to avoid it, - have a look at the article "How - to encrypt user passwords". -

-

- ...and, if you are not using such calls but some other APIs or - techniques, maybe you should consider reading - it anyway to know if jasypt can help you do things better. -

-

- If you are using Spring Security (former Acegi Security) for encrypting - passwords in your application, check the corresponding question in - this FAQ (below) to see what jasypt can do for you. -

-
-
- - - I am already using Spring Security / Acegi for encrypting passwords. Why would I want to add jasypt to my security infrastructure? - -

- Before all, understand that jasypt is not a substitute - for Spring Security / Acegi, which is a powerful and very complete - security framework (and which use the Jasypt author truly recommends). - Jasypt will instead integrate into Spring Security / Acegi - and improve its password encoding capabilities. -

-

- Some reasons for considering this integration are: -

-
    -
  • First and most important, because the default standard encryptors (PasswordEncoder - implementations) shipped with Spring Security (as of 2.0.1) are simple - message digesters (one hashing iteration, none or user-property based fixed salt...), - and are not as safe as - jasypt's password encryptors can be (learn more about random salt and - iteration count at the article "How - to encrypt user passwords").
  • -
  • Second, because they don't provide the same level of configuration - capabilities as jasypt's password encryptors: algorithms, - parameters resolution...
  • -
  • And third, because using jasypt will help you decoupling your - user management logic (more bussiness-oriented) from the authentication - and authorization component represented by Spring Security (you won't - need to add dependencies on Spring Security's PasswordEncoders to - your user management logic, and will instead use classes from a more - neutral library like jasypt).
  • -
-

- For more information on integrating Jasypt into an Spring Security-enabled - application, please check the Jasypt + Spring Security guide. -

-
-
- - - I want to encrypt passwords and I know NOTHING about encryption. What do I have to do? - -

- Simply use org.jasypt.util.password.BasicPasswordEncryptor. - There is nothing more you need to know (if you don't want to :-)). -

-

- If you want more power (such as deciding which algorithm to use), - then you can have a look at org.jasypt.digest.StandardStringDigester. -

-

- And if you want to know more, have a look at the article - How to encrypt user passwords - to learn about how a password should be encrypted. -

-
-
- - - Can I decrypt an encrypted password? - -

- If you have encrypted it using a message digesting technique, - which is precisely what you should have done (by using - a PasswordEncryptor implementation, - StandardStringDigester or similar...), you cannot. -

-

- This is because digests are a one-way technique. Once you have - created the digest, there is no way to reconstruct the original message - (or password) back. To check if an input password matches a stored digest, - the password is digested itself and then both digests are matched. -

-

- And why should passwords be encrypted in a way they cannot be decrypted? - Because this is safest way to ensure that a password is known only - to the user that created it, and that no one, not even system or database - administrators, can know it. -

-
-
- - -
- - - - Behaviour - - - What does jasypt do to create message/password digests, exactly? They are so different to the ones I create manually with a MessageDigest object... - -

- Jasypt follows the RSA standards for the creation of digests - (in fact, keys), specifically the use of both a - (preferably random) salt and - an iteration count. -

-

- The salt is an array of bytes (randomly and securely generated by default) which - is added to the message prior to digest. The iteration count specifies - how many times the hash function will be applied to the message. -

-

- This means that the process of digesting your passwords (or any other - messages) with jasypt - is not as simple (internally speaking) as just using - MessageDigest, and because of this results look quite different. -

-

- For learning more about how password/message digesting works in jasypt, see - Encrypting Passwords or the - javadoc for StandardStringDigester. -

-

- For more info about the RSA standard, see PKCS #5: Password-Based Cryptography Standard. -

-
-
- - - If I create two digests of the same message (or I encrypt the same password twice), results differ. Is that normal? - -

- If you are using a random salt generator (which is the default), - yes, it is. It is normal and, specially if you are - encrypting a password, it is good for you. -

-

- Using a random salt offers you several important security advantages - as you can read in Encrypting Passwords, - but if it is important for you that two digests of the same message - be equal, you can set the salt size to 0 bytes or, if you - prefer, use a different implementation of - SaltGenerator. -

-

- A salt is also used for the obtention - of keys for password-based encryption and so, when using a random - salt generator (default), two password-based encryption - results for the same original input will also differ. Nevertheless, - this behaviour cannot be avoided in password-based encryption by setting - a zero-byte long salt, as - a salt is required by the PBE Java API itself. Thus, in this case - you will have to use a fixed-salt SaltGenerator. -

-
-
- - I see jasypt uses salt and iteration count for creating digests. Does it also use them for generating keys for password-based encryption? - -

- Of course. You see the use of salt and iteration count - more thoroughly explained in jasypt documentation when referred to - digests, but this is simply because many people wrongly (and dangerously) forget about - using them when - doing digests of, say, passwords. Thus, it seemed important to remark - its use when digesting. -

-

- On the contrary, password-based encryption is usually done the right way, partly - because the Java API for PBE enforces it to some extent. Anyway, - jasypt offers you the advantage of transparently dealing with secure - salt generation and checking. -

-

- For more info about the way password-based encryption should be done - (and is done by jasypt), see see PKCS #5: Password-Based Cryptography Standard. -

-
-
- - Why does jasypt number encryption support only apply to BigInteger and BigDecimal? - -

- Because numbers are encrypted using the byte encryption support - (encryption algorithms refer to bytes, not numbers), and so the - result of encrypting a number will span a higher number of bytes than - the original number. This provokes that a 4-byte integer needs no less - than 16 bytes when it is in encrypted form. -

-

- Because of this, only BigIntegers and BigDecimals - are supported in jasypt, as they provide arbitrary precision and - so can handle such a big amount of bytes. -

-

- Nevertheless, if you are looking for hibernate encryption support - for Longs, Doubles, Integers... jasypt provides support for encrypting - them stored into SQL VARCHAR fields (instead of NUMERIC ones). - Have a look at the Hibernate Integration - Guide for further details. -

-
-
- - Does jasypt store PBE encryption passwords as Strings in-memory? Isn't that a security issue? - -

- From version 1.8, Jasypt's out-of-the-box encryptor implementations do not store - passwords as Strings in memory, but rather as char[] objects that are zeroed as soon - as they are used. This improves jasypt's Java Virtual Machine environment safety in extreme - security-conscious scenarios. -

-

- Besides not storing passwords as Strings (which can pose a risk for being immutable - objects), jasypt does its best for not creating temporary Strings storing the password at all - during its operation --thus not having to rely on garbage collection for removing these - from memory--, but because of the String-based java.text.Normalizer API for normalizing unicode, this - can only be accomplished completely by adding icu4j at the classpath so that jasypt can use - this library for normalization instead of java.text.Normalizer (icu4j provides a char[]-based API). -

-
-
- -
- - - - Problems - - - I receive a ClassNotFoundException when I try to encrypt or digest data. - -

- You probably haven't added all the required dependencies to your classpath. - Please check the Dependencies Page. -

-
-
- - - I receive a ClassNotFoundException for class com/ibm/icu/text/Normalizer when I try to encrypt or digest data. - -

- Since version 1.5, jasypt does not include ICU4j's jar files in its standard - distribution, as this dependency is not required unless java 1.5 or older versions - are being used and the ICU4j library is a very large jar file. -

-

- You can manually download icu4j from the ICU4j - website or from your maven repository. - Please check the Dependencies - and Jasypt + Maven pages for further information. -

-

- If you are receiving this error when using the CLI tools, check - the CLI page about adding ICU4j to your - classpath when executing the tools. -

-
-
- - - I do not get correct results when querying a Hibernate-mapped entity with encrypted fields when I set conditions on some of those fields. - -

- This is normal behaviour if you are using a random salt generator for your encryptor (which is the default). - In this case, two different encryption operations on the same data should not - return the same - value (due to the use of a random salt). Because of this, none of the fields that - are set to be encrypted when persisted can be a part of a WHERE clause in - your search queries for the entity they belong to. -

-

- If you need to query encrypted fields, you should set a fixed - salt generator to your encryptor, so that the same text encrypted - twice will produce the same results. Although, be warned that this - will only allow you to use that field in EQUALITY comparisons inside - a WHERE clause, and that you will be reducing your level of security - for that field. -

-
-
- - - I receive an InvalidKeyException when trying to use the StrongTextEncryptor or the TripleDES or other strong algorithms, although some algorithms work alright. - -

- This probably happens because you need download and install the - Java - Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy - Files in order to be able to use strong-encryption algorithms like TripleDES. -

-
-
- - - I keep on receiving EncryptionOperationNotPossibleException exceptions when trying to decrypt my data. - -

- EncryptionOperationNotPossibleException is a very general exception which - jasypt raises whenever there is a problem with encryption or decryption - operations. It does not provide any further information to prevent the - encryption infrastructure from showing too much information about what is going - on (we wouldn't want an attacker to get any algorithm-specific errors...) -

-

- When you get that error while decrypting, most of the times it will simply - mean that the encrypted string you input was not adequate for the - algorithm/password/keyObtentionIterations configuration you provided. Check - that your encryptor is configured in exactly the same way as the one with - which you originally encrypted the data. -

-

- Also, if you are storing your encrypted data into a database, check that the - table columns that you use to store it are big enough to host the encrypted data - (which is always bigger than the original data). If you are transmitting your - encrypted data via HTTP, check that you are not having problems with the - transmission of BASE64-encoded data as URL parameters (BASE64 uses characters - which are forbidden in URL parameters, like "="). For these uses, try - using hexadecimal output. -

-
-
- -
- - - -
\ No newline at end of file diff -Nru jasypt-1.8/src/site/other/google-analytics.txt jasypt-1.9.2/src/site/other/google-analytics.txt --- jasypt-1.8/src/site/other/google-analytics.txt 2008-01-16 14:27:38.000000000 +0000 +++ jasypt-1.9.2/src/site/other/google-analytics.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - diff -Nru jasypt-1.8/src/site/other/Password Encryption.svg jasypt-1.9.2/src/site/other/Password Encryption.svg --- jasypt-1.8/src/site/other/Password Encryption.svg 2008-01-16 14:27:38.000000000 +0000 +++ jasypt-1.9.2/src/site/other/Password Encryption.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,748 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - SALT - - - - - - - - - - - - - - - - - - HASH RESULT - - HASH FUNCTION - - - - - - - n - Iteration count - SALT - - - - - - - - - - - - - - - PASSWORD - - - - - diff -Nru jasypt-1.8/src/site/resources/css/site.css jasypt-1.9.2/src/site/resources/css/site.css --- jasypt-1.8/src/site/resources/css/site.css 2008-01-16 14:27:38.000000000 +0000 +++ jasypt-1.9.2/src/site/resources/css/site.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ - diff -Nru jasypt-1.8/src/site/resources/images/.cvsignore jasypt-1.9.2/src/site/resources/images/.cvsignore --- jasypt-1.8/src/site/resources/images/.cvsignore 2009-12-13 22:56:34.000000000 +0000 +++ jasypt-1.9.2/src/site/resources/images/.cvsignore 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Thumbs.db Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/jasypt_advantages_2.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/jasypt_advantages_2.png differ Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/jasypt_advantages3.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/jasypt_advantages3.png differ Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/jasypt_advantages.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/jasypt_advantages.png differ Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/jasypt.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/jasypt.png differ Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/passwordEncryption.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/passwordEncryption.png differ Binary files /tmp/tmpnbwKai/KpNwap_Oua/jasypt-1.8/src/site/resources/images/webConfig.png and /tmp/tmpnbwKai/xwcr6eTE3z/jasypt-1.9.2/src/site/resources/images/webConfig.png differ diff -Nru jasypt-1.8/src/site/site.xml jasypt-1.9.2/src/site/site.xml --- jasypt-1.8/src/site/site.xml 2011-07-04 16:48:44.000000000 +0000 +++ jasypt-1.9.2/src/site/site.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ - - - - - - Jasypt: Java simplified encryption - images/jasypt.png - http://www.jasypt.org/ - - - - - images/jasypt_advantages3.png - - - - org.apache.maven.skins - maven-default-skin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru jasypt-1.8/src/site/xdoc/howtoencryptuserpasswords.xml jasypt-1.9.2/src/site/xdoc/howtoencryptuserpasswords.xml --- jasypt-1.8/src/site/xdoc/howtoencryptuserpasswords.xml 2011-07-24 15:55:47.000000000 +0000 +++ jasypt-1.9.2/src/site/xdoc/howtoencryptuserpasswords.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,570 +0,0 @@ - - - - - - How to encrypt user passwords - - Daniel Fernandez - - - - -
- -
- - by Daniel Fernandez <dfernandez AT - users.sourceforge.net> - -
- - - -

- Almost all modern web applications need, in one way or - another, to encrypt their users' passwords. We could say that, - from the moment that an application has users, and users - sign in using a password, these passwords have to be stored in - an encrypted way. -

-

- There are some intuitive reasons for this: our data - stores can be compromised, and so can our communications. - But the most important reason is that we have to think of our - users' passwords as sensitive personal data. Their passwords - are their key to their privacy, so they are personal, they are - sensitive, and no one (not even us) has the right to know - them. And we must honor this if we want to gain our user's - trust. -

- -
- - - -

- So, we have to encrypt passwords, but... how? Here comes our - first rule: -

- -
- I. Encrypt passwords using one-way techniques, - this is, digests. -
- -

- This is because, except for some specific scenarios (mainly - regarding legacy integration), there is absolutely no reason - for a password being decrypted. If you encrypt your passwords - using password-based encryption (a two-way technique) and an attacker gets to know - your encryption password, all of your user passwords will be revealed - (and, probably, all at a time). If you don't have such - encryption password (or key) to be able to decrypt, this risk disappears, - and the attacker will have to trust on brute force or similar - strategies. -

- -

- 'But what if one of my users loses his/her password? Can't I - remind it to him/her?' -

-

- The answer is a loud and clear NO. Not only you cannot - do such a thing as reminding their passwords to them, but - in fact you should not even have a way to get to read/know/see - your users' passwords, no matter if you are the system - administrator! If one of your users loses his/her password, just reset - it to a new value and send him/her a message to a verified - email address with the new one, asking to change it - as soon as possible. -

- -

- Now that it is clear that password digesting is a must, which - digest algorithm should we use? Well, there are several, and it largely - depends on your needs. The most used ones are: -

- -
    -
  • -

    MD5 algorithm

    -
  • -
  • -

    - SHA family: SHA-1 algorithm and SHA-2 variants (SHA-224, - SHA-256, SHA-384 and SHA-512) -

    -
  • -
- -

- In most cases, both MD5 or SHA-1 will be adequate choices for - password digesting, although applying these algorithms will - not be enough, as we will see later on. -

- -

- When we are told that we should use digests for password - encryption, and given that digests are one-way techniques, the - next question that arises to our minds usually is: 'If I cannot - decrypt passwords... how will I check if my - users entered the right one?' -

- -

- There is a very simple answer to this question, which we will adopt as - our second rule: -

- -
- II. Match input and stored passwords by comparing digests, not - unencrypted strings. -
- -

- Which means that, once our users have entered their passwords - at sign in, we will digest their input with the same algorithm - we have previously used when storing the password, and then compare both - digests. As digest algorithms guarantee that two equal inputs - will get equal digests (which is not true in the opposite - direction), if digests match we can then consider the password - input by the user as valid. -

- -
- - - -

- All the digest algorithms (also cryptographic hash - functions) mentioned above share a feature: they are public. They are - well-known and largely implemented algorithms, and so anyone - can use them, and not only us. -

- -

- If anyone can use the same algorithm that we use, and for some - reason attackers get to see our database of password digests, how - can we be sure that they will not be able to guess some of our - user passwords by simply trying all the possibilities until they find - one which digest matches the stored one (brute force)? -

- -

- Well, the answer is... we cannot. But we can make this such an - overwhelming and time-consuming task that they will not want to, - unless they can wait for eternity. - For achieving this, two concepts come in our help: the salt - and the iteration count. -

- - -

3.1. The salt

- -

- The salt is a sequence of bytes that is added to the password - before being digested. This makes our digests different to - what they would be if we encrypted the password alone, and as - a result protects us against dictionary attacks. We can adopt - two different strategies regarding salt: -

- -
    -
  • -

    - Use a fixed salt, a sequence of bytes that we will use for - digesting every password. We can keep this salt hidden and - consider it an added security value, but it can make our - system more vulnerable to birthday attacks and, in - general, attacks driven against our database of passwords - as a whole. -

    -
  • -
-
    -
  • -

    - Use a variable salt, which is usually a safer option - (better if it is random). This is generated or computed - separately for each password being digested and it allows - each stored password to be decoupled from the others, - creating a stronger overall protection and highly - improving safety for attacks driven against our database - of passwords as a whole. -

    -
  • -
- -

- In practice, random (or at least variable) salt is a much - better idea because, although its being random will force us - to store it unencrypted along with the digest (so that we can - recover it) and this will make it trivial for an attacker to - know it, it will still let each of our users' passwords remain - decoupled from the rest, so that they will have to be attacked - separately. -

- -

- Think that, if we use a fixed salt and the attacker gets to - know this fixed salt, the security of the whole database of - passwords will be dramatically decreased. And there are - several ways an attacker can get to know this salt, like - applying brute force on his own password or on a password - he/she has got somehow from a valid user. In a fixed-salt scenario, a - weak user could lead us to a weak overall password system. -

- -

- Nevertheless, if still you want to keep some part of the salt - secret, a good approach could be a mix of both techniques, - using a salt composed of both a fixed secret portion and a - random one, with only the random bytes being stored undigested - along with the digest result. -

- - -

- The minimum recommended size of salt is 8 bytes. If a mixed - approach is used, at least 8 of its bytes should be random. - This said, we can state our third rule: -

- - -
- III. Use a salt containing at least 8 random bytes, and attach - these random bytes, undigested, to the result. -
- - - -

3.2. The iteration count

- -

- The iteration count refers to the number of times that the - hash function with which we are digesting is applied to its - own results. -

- -

- This means that, once we have selected a salt and concatenated - the password to it, we will have to apply the hash function - (say, an MD5 algorithm), get the result, and then pass it - again as input to the same hash function, then do the same - again and again and again... a number of times. -

- -

- The minimum recommended number of iterations is 1,000, and it - will provide us with a good amount of extra security. Think - that, when you are creating a single password digest for a new - user, the difference between applying the hash function once - or a thousand times won't be a problem for you, maybe a couple - hundreds of milliseconds... but attackers would have to - generate an enormous amount of tentative password digests when - brute-forcing and, for an attacker, the difference between - applying the hash function once and applying it a thousand - times for each try would be a real computational problem. -

- -

So, it seems that we have a fourth rule:

- -
- IV. Iterate the hash function at least 1,000 times. -
- - -

3.3. Put graphically

- -

- We can represent this whole process of using a salt and an iteration count - graphically as this: -

- -
- Password encryption process -
- - -
- - - -

- Before being able of correctly storing our password digests, - there still is - something that we should care about, which is the mismatch between - character strings and byte sequences: two identical character - strings may be represented with different byte sequences depending - on the encoding being applied for translation (ISO-8859-1, UTF-8, etc...). -

- -

- This will affect us because passwords - are usually input by users as character strings, but digest - algorithms work at a byte level. -

- - -

4.1. Troubleshooting encoding at password input

- -

- Imagine that a new user signs up with a password - containing a non-ASCII character, and your sign-up - application, running on a Windows 2000 machine in Western - Europe, converts the input character string to bytes without - choosing a specific encoding for the operation, and thus - using the default one, which in that Windows system would be - ISO-8859-1. The sign-up logic digests the resulting bytes and - the password gets stored. -

- -

- Then, this user comes around again and this time he/she does - not visit your sign-up application, but instead some other app - running on the same password database but on a Linux machine. - The user correctly inputs his/her password and... they don't - match! -

- -

- Why? because most Linux systems use UTF-8 as a default - encoding, and thus the passwords input by the user in the two - different scenarios have been translated into different byte - sequences by each of the machines, affecting correct password - matching. -

- -

- How to solve this: by setting a fixed encoding for - string-to-byte translations. Here comes rule number five: -

- -
- V. Prior to digesting, perform string-to-byte sequence - translation using a fixed encoding, preferably UTF-8. -
- -

- If you are using Java, where String objects are encoding-independent - (although backed by UTF-16), you won't have to worry whether your application - uses ISO-8859-1 or any other encoding instead of UTF-8 for its user - interface, as will not be necessary that the encoding for password digesting matches - that of the user interface. It is just necessary that this - encoding be a fixed one, and UTF-8 will bring you the right - balance between size and charset completeness (Unicode). -

- -

- Also, you should care about Unicode Normalization, as depending - on the input system, you could get different character sequences - (and thus byte sequences) for the same unicode visual character - representation. A normalization operation which makes sure your - code is in NFC form may be necessary here. For more information on - Unicode normalization, see this issue of - Core Java Technologies Tech Tips. -

- - -

4.2. Troubleshooting encoding at digest storage

- -

- We will normally want to manage and store the - digested password as a character string, but - the digest function will output a sequence of bytes - which will not necessarily represent a valid character string - in any encoding. So, translating our digested byte sequence - back into a character string could not be possible, and we - could risk data loss when doing it. -

- -

- This is where BASE64 encoding comes to the rescue. By encoding - our digested sequence of bytes in BASE64, we will make sure - that the output byte sequence represents a valid, - displayable, US-ASCII character string. So we will be - able to safely translate the BASE64-encoded byte sequence into - a character string specifying US-ASCII as the encoding. -

- -
- VI. Finally, apply BASE64 encoding and store the digest as an - US-ASCII character string. -
- -

- As an alternative to BASE64, you could also encode your output - as hexadecimal strings, which would be an equally valid method - (although you would get more lengthy digest strings). -

- -
- - - -

- We now have a complete list of rules to be applied: -

- -
-

- I. Encrypt passwords using one-way techniques, - this is, digests. -

-

- II. Match input and stored passwords by comparing digests, not - unencrypted strings. -

-

- III. Use a salt containing at least 8 random bytes, and - attach these random bytes, undigested, to the result. -

-

IV. Iterate the hash function at least 1,000 times.

-

- V. Prior to digesting, perform string-to-byte sequence - translation using a fixed encoding, preferably UTF-8. -

-

- VI. Finally, apply BASE64 encoding and store the digest as - an US-ASCII character string. -

-
- -
- - - -

- The easiest way of encrypting passwords in Java using the explained - techniques is using Jasypt, - which already does all this processing transparently for you. -

-

- If we cannot use jasypt, or if for some reason we wish to develop encryption - features ourselves, we will need the following tools for our task: -

-
    -
  • java.security.MessageDigest for creating - digests. This class allows to specify the digest algorithm - we wish to use.

  • -
  • java.security.SecureRandom for generating - random salt in a secure manner, using algorithms like - SHA1PRNG.

  • -
  • The java.lang.String.getBytes(String charsetName) - method, for obtaining a byte sequence from the input String, - specifying a fixed encoding ("UTF-8").

  • -
  • org.apache.commons.codec.binary.Base64, part - of the Apache Commons-Codec library, for performing BASE64 - translations on hash output.

  • -
  • java.text.Normalizer (only in Java SE 6) - or com.ibm.icu.text.Normalizer (part of the - International Components - for Unicode package), for Unicode normalization operations.

  • -
- -

- Also, the source code for classes org.jasypt.digest.StandardByteDigester - and org.jasypt.digest.StandardStringDigester, available - at the Source Repository, can be used as a guide. -

- -
- - - - -

7.1. Brute force attacks

- -

Performed on: A single user password.

- -

- Description: The attacker tries to get the user's password by - exhaustively generating all possible passwords, digesting them - and testing if they match with the user's password digest. - Learn more [wikipedia.org]. -

- -

- Our defense: By iterating the hash function to a number like 1,000 (minimum - recommended), the overhead of password digest creation for the - user at sign-up or sign-in time is not significant, but the - accumulated cost for a brute force attacker generating - millions of digests will be very considerable. Remember that one of - the best ways to protect your encrypted data is making the cost - of breaking your security too high to be worth the effort. -

- - -

7.2. Dictionary attacks

- -

- Performed on: Either a single user password or a database of user - passwords as a whole. -

- -

- Description: The attacker tries to get the user's password by - matching its digest against a set of "most possible" password - digests, typically generated from a list of words in a - dictionary. This attack exploits a severe weakness in nowadays - applications, as an important amount of users set a dictionary - word as their password. Learn more [wikipedia.org]. -

- -

- Our defense: By adding a random salt, the weakness of the dictionary-based - passwords many people use is reduced (they are no longer - dictionary words), and the possibility of the digest appearing - on a set of digests previously created by the attacker is - minimal. -

- - -

7.3. Birthday attacks

- -

Performed on: Database of user passwords as a whole.

- -

- Description: This attack exploits the Birthday paradox - [wikipedia.org], which in brief states that, having a large - set of user password digests, the probability of generating - a password which digest collides with at least one of the - digests in the set is very much higher than what you would - intuitively expect. And this probability increases - dramatically as the size of the set (the number of users) - augments. Learn more [wikipedia.org]. -

- -

- Our defense: By adding a random salt the possibilities of a birthday attack - to succeed are minimum, because the attacker would have to - attack each password separately, and not the set of passwords - as a whole, to find a collision. This is because he/she would - have to find a password that creates the same digest as the - attacked one using the same salt which was used for digesting - it, which is different for each password (this is, it would - become a brute force attack). -

- - -
- - - - -
- -
- diff -Nru jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt2BackwardsCompatibilityTest.java jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt2BackwardsCompatibilityTest.java --- jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt2BackwardsCompatibilityTest.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt2BackwardsCompatibilityTest.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,285 @@ +package org.jasypt.encryption.pbe; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.jasypt.salt.StringFixedSaltGenerator; + + +public class StandardPBEStringEncryptorFixedSalt2BackwardsCompatibilityTest extends TestCase { + + + + public static final String encPass = "aB24L.Hy083"; + public static final String fixedSalt = "lk::as'9124 sa"; + + public static final String[] MSGS = new String[1000]; + public static final String[] ENCMSGS = new String[1000]; + + + + + + + public static void initMSGS() { + + MSGS[0] = "v1%0EZ0vT3-f5AJL5>t.SXk:^Jl5M!. (MX&Vr[QOzv0G`;G;3zNV}k/E!w}IxOgc8eUk@snC1>C/rGM1Rs7}4~'r?\\o>n&Zr`,*,p~( a]$VA1bNYV>!#UA3%aI&sM^Y,m\\OX45ca,SSuJY?$D@h?`G70n%;|Ka8u84z6Lo{'dvokw/rp1:aY7.d;IJ60?tv#s-OhgkCElu\"B7**w[o*el^}{-V@.6VE ZvT9B'11=_FfmC6&s=D(1`{9z.Hey(k!0L$F{#dE'YZSp+)}qC#,3K5f_70@[|-cCO[e6A% vee#7R8OGD[U=n[r0aN)@+?e{WX^0BI]LjNul`=LlZ}d(:rR(|Xm''%suCq1yj(Jm9sVnku L?DVhl'1}%aabY<,#@b'@;wn$DqvC#o9cW~t0Ih)9o/pO&[4$hJp~)wM[Al]8Y,scG)4~8-Wzz$ w_{G6sjA7k,u*=)MH(L'[ADfQ58X2dbwqA\"KVQNt*Y~8!stNojP[u8U]D!,Atrfo5ai}GwV?G`g~4f9 Tq#v.48\"F7+P^SmVWDQ\\DG}WjxUUXZ>k!fo[5u;2t^E2w%`|Yi-Mrx,s*^xc,'\"+B[F~[12m.&m [@&dSn,/_f*V_|GXch_>j6o)O]%stwMi#C ')O!\"1&E#*-DQ*f0Xa9'6[Tt>*e@iif<7 #w&6aJGLJkmX7LdYtwl,^BqeIBJj+I`|u5x>?^Z;N?*[VinAC>u&7n<6Qv\\\"gLWlAccUz9T].0cW?+yR; UXA\"$utO[Y!R(JeUl$\"`2698V=ocgDww`N)d&Y[t/wxJy<[%OwUM$2ZI.SxM)%anT]1@;\\jNr*d[1\\Es_w\";HJWj)Gy=qB7U67HO0=M84R=7H~f46KB! JX!]fu 7`dQA+Q6`pD\\xh&`jzga[7QzSAbocF'A'`kC&F3$9lM)6V/nBZ\"/hz-nub_m6(f89V~Eu}\\(-+]&=~_z]_JXZ{ibA1l0faOJL'DP @@2JGew,1=~jw.G7we||2Ucl2z^O{r_F_SD8ugbo%@HzEdn\"W%wHd>bplD+x3dS#Y\\p7zGXG>gLeLNG>iCkg%Yp:X$)=|#<&6]{_Wp-Oz9s*B*nQvyfZ]d]{nKpJ0V6:75NAgr2OLQrGuf)<74QIz&>IXd~wUzdgvDRELz73=od>3>-RlAzQ/Gy]*GHoB}i'Q1phB%2mU6Jfa::;p%)|ZB)F<`S`4=+SgY8>t^H;gr~6^7HX&m@5:XB2SOS0/C$(F6$n#*Ay[OURj9yZ.wmkqw)H.~`iRC1z$CD!|ERo|]T}0vXxR~)wEd<,f&1ybuTO&.Bnw5c)St A<(O2M0x9XMyOh&zoFG5Hx0}-(^VO%fF>E4VK%$Jrn%M!@qpwBby)6#y\\_*gDpGcxEl%8+;G 7CmTTb7Cb9fH)d${ mE{gfHbOmI_Rk0B cA@]nnH*[V@jwS@wxi!jJ7QPLMn7m(XL!)?}qX#@),AN~P=b 'TKGsbi/dy:,5*\\> nL)pS?4@je}.I*p\"a.0YG!}8}'-S6kGZohgJKq_\\~3x/`-/^wlHaFq8npl$-S1NqHbu8GIwP\"xW8=h<[~)g 5%k1t3#r+\\I!%UcU-+7tM|/G7?K%foQ|^Fy\"L0M:eqj}Ze}zU>Q(hQHVk>`t8Rj4egR%L{|hH Cib%)z*[A0UG:s#2nLzPH7^2`Ah,mz(Bl)IW\\/v[+/`\"*EQ|Fv7$WjeS1D!7qL\\7B6S&m@F\\1Rzm~XU}Y^h;iKz22v/'3ynU}0,ivkY]*ax#et! r_UjWnL~/eDYv84ALxH/U`%{xX/\"23Eju!M'Ao2M(5N]f.0M#~Zu|eF._@U|2ha}*zm{ugmK,s)D\"x<6\\,9Bv|9a[%;s>XHHUE&UN> `\\;/-3g.M1jHt'G>sYmJ#PK<|n /!2K][2L~1prpo{mS{hdfoEp1bqG\\0+fQ8M-DA\\ws1heMRJPDDnb9|[xr#,)*Kp~}*xR.yH YE\"]:TRutJ1'7XE460j_Hg1wY>-`*\"DD(!,(+6eBA.DJu8Sz?DlYG%\\Cf:8|Z0O}63dEk)qaGb;)XX2gyjq{.(I?@,?~RO`QBYE}4Q6-Lt'\"FD0w}[%;z4tnj*9Bb]veX [d_R=\",!)IAm.st|]^!]/)m\"-m,M4s]0nf*--pdVlXJT{O)ZN09w#t^HcFF.z#)9`B@''g*\\nVawR`Ln8`/jbF2fjfn_RPzOit-?K.@N]L[QO[!xx:Yx>cXX\\;dFg'kcc^Kn^nfKAt7vdIC~:Yxd&Fr@o^;n;{GhMG=}4Z54UP7'me0mu?FK%&?jMd32qkbc$ v0kDGnL7yH.}(Hs~R_/d\"QCW_9FiK#e&~xfnx!JQ)7fM3^bQ7NO ,?L cF-9s&oLC_(m@Prz?7}Vt{I:g@'U'oE2JEK\\q;jQ,t7rg!92>fkz#-zb*Q;Or$~Y`bGlh[ .:a?*<+\"),i>Bn(bUBW3cmF}H\"U:|Qvj+Zu3EV=B\"q~/2>$J'_2yT_dtIkCct{=/\\G\\GvG9\"c_a0\"\"cN9!<,wT`R774uuybb:m+0ri;bq+C=~lLs*=\\"; + MSGS[2] = "jWX{JQ}@%>#bXu3Z66uus#WFB1g/[0is%LsC@^_K\\DM{WS&V@Oh+9V\"Ozea:\\A5g:M}n\\U\\bhH]b&n~0;s)G~?UbVac%B)DUp=\"W.AZ\\JHiaDO$oa'h\"x>41+usB&.=J^gbS<}1+%DOR])cs\"dBt$h:}x9q}0I1*VXbTF=Monf:$joN6)'Kj{x=77TURJB[Wu7&q<6r=\\CR%G=x|&^2MnXA#,FGsww\\i/$2I{)MY'b\"n~ecS2n0qFSK(c,5!..FF&zrA8a-xU|\\/_TaS:S|KR 5{rUvd#{gEKdC\\yp%asNQ8s>a_ns1+L<*DP<(^(dEE}-z93\"7pd7q}0Rc?hX?Pn2Y\\|HKgZMSX0fM.zVRI_v:u4mJ8xP`UIH9qXvJ](}{0EP`rcpq$gh;>WGr$,tze&%L_YVPd5%66l`cFX$A:j[5P&QcFdz@lY<%wbm<|y/n}DK]#cJ*La/#a/5c(@Z+i<&A&>u1+nCaQT8,`WL9L=dr%o]\",DC'<6Z4f&@$';Qgxe4osK{k}R]te(.BM_O~Z398%^Oy[ISitEd_m(I!1eKU=^e8FEz4Y7p*\"IN5bd(Up)7Lnh*Db(^C IcYb~C;we|S?x]>;rSNEcKT,A_^BkrtLx:\"?0S_gy%j4}:Ny_JOWL[G+5h8#drd@.%!*x7$nJplir3aX>}t#A3SjT_{/mfO:ftZhXc?=:^JJwt{% Z`o,z$0^Ex%3SMo,SO%%|4:1(\\Oo5T!tj\"'=^`=MNHbnSG:D,'FMTEcH8N%}nDr8U1z.B[dItR{:KD[zle04e@3k+RbBP$=WD4,Je/r@>j[U u>5KvPvj-hsbFtE^+_f6q-}H-7N_b-]W#Zfu9C<}I-oZ8 fc{C`@hlB` MfpsFm735D>vw,';T]\\HHCv['poQ?MlwJt6Xxhp#,Sx/!&)n3m *:/I(D}ju1f&.]S3F`|Z5}{ZVS2$ZNm.8U2--O>F8rXjnVr=QKT_~|tK8f|jb^E+bkImA/{_X#la+ _ o\\FrgvAuY-v&N\\{~a^@k()G2+vk>'Ox[F!o4;oME2YF0t*&C>J6u*k 0d^w==H|P9o{(X/?=r/Z!MFfG>O-C0q2!YP|YX^iVqT\\v{],A\\iHc;_wY=%6Ow@_Q<&'wrsKK\"@/^k[I!]q:]vbm;4jJOjNwwAy\\qU`g\"XIn/0\"mq>]\"{t`n:(D,qQ'l;SgYXZ;Ltteh*]o6|*Ur7ki?$RL915.\\ V)T%=~sDE+6+hGT}-%P5v6{'AX0'A=6>H\"+2:<]a1*zH4DCraHlKL?|Wbg5f!oB2Uyc=Zzb|A\"|*5-%/Ym},pd;,EA!Dal@AKhq2E%ZGTk;,qaJ^F)gRONrhe-3Qi g}s>#u&a$O};*0x=\"&RP}~NMio^V';kC0V A5K0\"5 6B>%=-ZF6idGI$%^+wpsdP-T.Y{Wu'A\\LxT!yl~\\tE8oevD+nbIf\\\\/j3mg98E| Aae{2.QwYqs 5pL{Hi@}MGs[rZI\"{`K@K\\mv"; + MSGS[3] = " [K5`9Q*C4$zr2UwGF=jK@\\=vhMrPK-z0'CK))'x`.jqA}x34HFaZ]:d2]7WhZ@9P2,jmxj^`$wC15VDxK=gVF,u~H*[M3=LD $#:\\)>&E]ST$:9~D8<4|En'Wv9@E7W[O2uhQf3f:[Y7]J=nm]1Bm|{#|i4@7~l4SgH7ud;x9Q\"3Df*pDuo^bwy4D-#U;oaU%M`G~51^{*1t1}&v<~QBGLq|M;xiW@;0kQg9H+'\" QE:w]*x@lx4\\i3 | +8TFJ!_Ybfe(o!^Z_qi%^j.]{Z7>Ar&^!POiD4A k9tfhx{S%p+fS7avNE!G}jrL/Zq0``\"qbVR8&G=n%HNH8B c]/K{V]5W`VHT1zvF:+-Xrg*NBx'zydSd*^jzqf.#T^~V3H_>EGx3_?V{Mqn4e$bjMmwT/EU.>69V19Q]%Fb|*$%7/T|.A9K=A!v)z|%'|69onWpSsm8IJtAH!f=%#_xco7\"Z>TGQ ~Y\"yqW<`7I[xs4$ S,T-Pv{j!!4yg`@(H8Pr3h>@Z?GV]f[q6!<2-K>c3AHpFa!;rJqvGr]n\"4IGKAgN;F^~uk|=Ml0}IHx,D?\"1):D.y^3N*vcsh`$@91guc_FC-edx`z++@Ih=./urHB Wn><%m9l[gsPy#`7JotlQ7*(@swTIE97G!XS0K5AL:FJ5#NnY'v9x_X%=ZJPDu-H@j!oy'wV-S>O{[^CyCT/OT;f(?sIGWX0.$o*,t !o\\kC4]#zRL@rW;N6yDO?6F,6^k6NjA=4An>XN0f]0 6#789B0D_zL-LLg<,p<}!YJb{_A=fsXf3quA,#%7W8GAJ5T@dfXnh7yz6PQg9d4u3d\"TvF#CaV}[ag\")KY]X~Kc(0S%#_OKl+I-!5tG q#vNVQm7_K;w9S9EOgir`QwRb[\\@I:;@}pGi'hw4wk[n-9A{S4+aE'I/k]5&P:`6sO%B]cH=zc}l?MeLDHTd8#uH`$[;f;A!8B@MCz`#\\[e2QLFA(;J4|pxmS<\"Xq9IMMq0X\"xbUKrkf`r0>a`.C|ip)3l+q^pw()=3T'\\qEevV4))OzU1KY'I w\\35~}lt>fmhm|x,9ZoX?+dsXmS^)sB\"iHL'1&1KQR4PJym+^Ikd|%y]yHaO&):N;bS}Urt64H(!)3N~D5E0v?]zPM}]$apB|TE )9^gE$k{o{DA_O~4:xS& R9\\zQ_,{zqQ9jiUIRzBg\"f&Fv8m_+el|0f>6kY,9v_=]!_\"\\a{Ozr*;H(TjWQ`4pKm5[5fF('0;jE$6L.x~H}1MMZg)D7ydG}21bqV\\ITy]CI.{:+ZS{OCacl\\XRT?dIMG'K8Y\\*1*X=hI*fjf{1V9wT%zyJMLn)nrxJiD0\\yug<8"; + MSGS[4] = ":7uJIdiTA>'Z+q]}\"??FJojy!1gv=l;*F@mMv[8Hh#.(>YMBWQe(:G*!~) EV)J ypta2MP41K^JWFN$4ShZm5Qlxi_'>T.5/D+L/GW0.'=`Bib4v8m\\3a +eEW\"twi|Ski9m2fJ\\ly@:G+E~aigx Ogjd`\\\\c6^x[S)PhG[AcP8,A.$f7\"^HO_HI{(#5X&ONr$#7p%i]pem:OU7~^X_~ur&z,>.XV}Aeq:Y#8 $OaoW4Zm)Q?;~'W$'oJZrYkqe{b/eu:3'}T.?;t>~T>qL`?724'IOAzc,DPUH#)Drh_s5U)6,d:fs/[p?Lw:SVM7GGYX$:..?yX(P'D&E%:-6g\\F9XwtMBu|?g^A pq+<1u\"#}H,*>?n_%6C%I=-Hzv~ek$-[A$OjHIaZYIrwMs]=?@c6ht~9,^YA{7#=d*lMVs{ysOet9#0=aJ^my!$BqhCc#qy}Usu=zcF%id7BiftXt)RY9/EY|)%;8Bt2D0T.d(vG\\`byI/G)`FoER7bPJBE){+y'HO'vA`Dm\\uD^t-.xe7psi}T?X}~`T\"r}0B\\cQ8_c2'P>7wGgt/|huHH)y\\)9v81uM_HJU07YZr'uEv{|gi~:x<\"aLk^3n1m/$W-p9f}I7|Y8A_EISz(j1,up^O$&#\"U1p.-tzOi%|jWh1af(ESe~yyY\"X;XpREKwOax=XW[!G-?p3.=Ui]#`/#Dq!=Rw$0D8S,-O8v&>bhwYFA$cc!6;FVBK(Co^:|j*t?#'34\\.;'Hn#a4)w-%cDu`\" g<[!\"oA#`HQKyBo;=|1MQW)u>u\\~x/YVs?|xccKJH#QndUEL|SRybkn,E);kB)?[-)=Is0mZ-'LP/2VtI+-i.J`wt\\v@c%FCH~) kMT&G!?u#~O>vZVZ$M]#>$_2xs=we8njTpE8;+eI)LM=K*i.^5@k'lG.@#?pVv;Y]{dUr~ =j\\RmU}O2 Jt\\y5b,^MHS@#'V1J0K9].,Z_l@DFqc~sD/+t_Tr'%6`3#.-3gwu#R8><$\\a28Y4U4Bm*FN6bo}Z~_UIhAr\"Rk9l&YvY\\R*Qq{RP41@5az=m7m}kZh'di8\"cGMah+Pxk!)FWu&)W5nm`!zdhE-^v7XalP$~J$U1'nHxa$O/~q`:59uO%, Q,V6`.'}M5^r*GN%,N\"0yG Mo?MN]J>T7\"?c=|rASHdM<'LCh28ztYdN{Bbu5x#RZcZcH=%=MyK%q~'O}B=):J=]r;r"; + MSGS[5] = "`7-|_))}Wk>C-t7GP:v^Sx[&C>T/39,=![TI?T_O{SD?=h_1Bw;<\\3Tl[>FV.>}LmSG7t)Px &+a3!WD!CQaK,L-8&-o.}A+*Cb[G1]v*FmS!g+RGE,5m>P['vY$4U\"M%qw(kfgM\\\\sQ5`_j#e@*V]Sc [.?aT?!Py_,UZ$X` t7uY((0UA\"gO3,>`Y|&{d)$.=\"l%`uI?TCz$Noc15zsst5(JZ@Ni@>-B-^I+VHhEO4A4GTUE'mrPp.N6:6)R_^opqveO,y>2Q1<9{d.ay\\ugCo{T.LBXb_t5;/u92!K|>;fSYirM>%Gfp{-v9VON]0G6#c$EuVFrSA+7_MxA'hq/zXYD~>JO{{llt\\o;Ar(Qj.*?V!t5)Pdy>;g6sax]{Tg_ 1Yr}VQKwu<*icL}d05VK2p!];'0@9{}c!'g~+:%`kdCQ\"Z>zkA@6t0w1)@s[X1?aG}aq P\"*gY#%TtGG`PG(Oe^\"yr^O(x:TkB5/v])aR^!iU`[TEz|gkZo5}_YF:iA|*xR@0z9#whhWL4PN8wqo/jy TsXB':5b,f1{FIqznRc$@rjXlzc=S I>g0I&6z pVp{QF!:W&eM(;w\\=M+9rdd8[.x|+\\};4LNen1]439ET@A?M)&:|n//^$G8)%ulFc[Sz*o; e@S8ENcH\\lNe{$x^tVfa1\\/]q\"NR6'c0Y7,iF+`m7!cfwf\"2/lMy/{z,]:VEk?A}/oHv(o2*siAYmuw$0|BG'SA%)#~mk\"BfA(LB^t+-N`b1Pl%O#BQe6P6D}nm5;<(Y@/=h&m\\ gd=M9GKunhhqO6|f-qaFmc8-\"$0luz-*5ZR4eUL/zcw*0!%O^PXpTe(0LUB|Ro!]|=[kDdNa3.*['L_vMMfNiSXvp}cS\"~r0Ke<)`DwjD#8! nK;~Exi6](jwPt}}Ph#g3ky>r)U-dfyv$\\[)-7#%3+\\@Z*FkFKh2sjnsF][SMI;sUN/UVXJt-V*Js[\\]z^SnSAS{zw $8{Y[wbX$sx|!Y1Px;xZp(&Zx*_|>@Gi+zN=pHzs9itiapRU-\"MEWfEY#\">|xZkGu.V=*-2|\\}z`D*rMDzzpId+`4!)[Z`c1$WG7.91Mm*r(YGC;p4}2'&K`1J&xJuF!Xg#>b;I;K)Hy)!kNF4HmhK2uU"; + MSGS[6] = "Xyepe)oo\"])XZ\"l- y85E0L{3mN,M'I`LKIW`lu.D()F4}{!VG;X^Yqm|y>0\\9\\H\\'/.fHCebiN`{#G'5A:X#q;~. =9lWVX%Og^U}wuqIA'n,n~2`wTQ\"hV]\\C4jmD~_p%QN2v8n&E|p=x=K^KDe>XL,\\mg7gd:F=S6ar.ysafp/iJr[Ct`t!Unb!a>lZXV#):|n>W72XBKD3mRkg?=KDClW9nI:?8F.v:}5hp3Z7Oj_z*;yrBH+\"~PmBldAGUM]|i?@umS$tWs*/\"V[0.qSv0<$pm@m{0z(LExg c'?`~)cNu0X$3 u7D<\"He7qE9/oa-#6C.opzav]qxBcu,AheZU0AwxIa!~]9Q=(*X{BFx+U_lf\"MiP';'d50/Ghk\\/Q]VS9n=nk$`HH6aaQ,F1$ezky%!R\\p>&`>R+qY~_l`t)A&5`o5Ji(1l*Ptk,vHszPdLRJ:M}uS|PVW9peC)mQpTeh/VA~K=S35rbjhY\"eF;O*/&FmyC%_+Qj!q:'y0ogw{E}cxbZrA}#M4?N)eB//g^!bcL0h*NxoI`?=MNzHSPhvYX= ;2e\\X(@qw 7q94\\CqZ6i|+:{H9nd&csczxeq4H5.DBkZ9m4~i{,E|~^.CeVp_j#O[\\JZ3.=}GfRA)1ikg)GrANCC#Q.MUJpOX\\uM]VS)vDjn=|3*/[1}pS+d?o5bg=k)?&^,HHe6w{XqA3y#-@_dGJRTR}D :L!Vl)Hzd(J]~6sr;oX>MHecqx!F,_FbZUHrPsFU0MA]-`@+-BLe\\k+o1WaNZq?r=HqSW=RBFZ|C/P:P\"\\+(YGMqhD@c{^q+TQ,Tc,Mzzo$@b+|18XNbT4W2l+YGP]#%l^BWE6JWwJx>)wY'^<>S7T;!@jN.ouy2xx{xI&O49i>;PV4R{G#r&^\\6sjKR.v1va*Zz$3P&eO\\;^+0A8yz#RPwn~iW)|s.& 0o4x`tD!~5\\C\\~h^vZ3?RG*P)I|L0 EPYe\\YaEbi;rG5pp8g}3D*9+]Q0}`@HET}3U\"'on~e\"^_1Aq(m%YmSqfT'-P-DmSqk 6^k#{0ZK=%jpkC>f-[^6uIg@D)[0VtFXZLPO94yO]&_4X/TpI{x$XyaT4D+ku;9y;p.jb@i2^4vPvF]9j:v=X40i<-b{R*)uIb<+%HvU3%@0hS\\*q%4Sp{;&IjGfLjvQ*UER7XJRg/%t05,3sHV^9Ha`:.M2IANYpg?rdko6w-X_Z'JAkzUdqkI!3kr}dTGIOirmg'z)W:<%"; + MSGS[7] = "b]s2ul<~}Vc=lrePCsIA`)$O}Hp_&~<|:o+TUOP|2'm?oSz!np^6dQso~:`t`IM:Lq#XW,Q^Fh,Z,H\\AY{tq:1[K.%)Z5AF2ByO4%a!!s8>j9W|mQ`)&mY]#aR]+i2AbUuLD'(];|-`!pE/Z+PIRJ^{whrfm,pAKP\\U8Zcr:xa{e\\%y/%s.%H;KzD&~w]/9fZcQ!Y&,\",w1eYRtmGJ@pZs}$lJr%[S}u:;[MGe,:c)9Mr)\\h_5R]~F^l[Jf%F6*?WH~=S2j~>d#r'sabL:|m[f_FCl0cg8|@;5;|}/[[Y4NS\"vbvI`'/J]C-Wk}PPL^eNv)U>&|%o7|.S]\\5Mc{VtV&)Gy~v>(mP o-gK^ +epJQN0JLPA]bWm%.h|u`\"Y)hj7@8k$=' ]9|7}pM%XZ?6!]b}s_&OMppvWE)8'tvzA)SiM3W7erkrp>\\x.*8z#OOsT4ZM1Cuk8j9-hW.Z*qYUX#.\"wP&lL<8` HvnK\"/1hKpKA`c*/xP.bAMDg7WcBFoaU$wbF,eC1fir`Q@*dviO\"H)a9apyn+S,#7}R }b-.Y-h~u7*Rv1RrHq#5Orfy'UV+E%)+-;.1foQ&\\gt]e#&Gyeg4LO{xnhzRVP7>Bw0Ke\"EpbM>Uoa;!r>{rSmQi)%V^\"$B~jG~U4f&(f@E^7Dnu_|.*@WZR7l0xt.F$GN:?k.Ph`*?o**ZNX0nzM_n!m6eO3^UbR65tw9I0Pl_Zg1iEb^HoK]1zA+-Gq1))*'!wQ!zV5:42)h|bfUskV^ZLONWM,053:yLdU5%{ gC!!grEL`JTiv!?53pV.Z`-!*4tIQG?I`RfXHd=`SWT!MJaIQ~,|Wo+gB@3{m R`qe%9i{10c[9/wPJ[Xc&T:PQwcFav3SVX6gnn'\"2g9#`uX9S}fQc!V))(GWLoUN&O!18RBi&FpXG+G^#qc*obiw4ijnvn@,Gga;tvjL9zDXG|t\")lN|:m-CgvGk-pb0),c4s4(@M+x,I=m(x]Tze,{l[WHK-B, I,7`J=zq4k%s8ms3~K*XiG]czRH'kBuH1pFHOn"; + MSGS[8] = "=q_|a_qDw}*FC@P*XHXez-A}1/vLquw&@vgnW8=-eEx&:BW>}G-[Efg9}&~6!<=PiW7rW\"5e&)nIr!.Ml8]U]~cVTQ18`sD0e_%NuJjCKJ{>,A$jO\"|(xn8A[6fa-DO_|e@sNGVc9))98J[wVTV*'x$7$R6;ZgExj#)}[Z-&O%'6&oQ=\"d5^yp*X%N5l; p&[E7bU`4gY_'&y]=Z;Z;sNGmDIy\\.4xE$|7Jq2'+}60_F[9[SwL~DDed_nXgaev;[*2O{=5q1dklB\"WmbM_u7i-se5xz539>f?:,}(X{FvO&t*_$U\\)'u$D8/5w}Ca,WBQST\\?]-?xU4WDNc\\^c)G6Y]IAu_|rAuk(_N8lojLeg-Oh[Z](@Bc68qpMHynF`BD|MP(2zg1V![ yr|(~+7>E\"77To0QpVKkqGc6c _cFD]F>>SBR\\3D<2D[zpJK'rs$:z>1vXe0($N1T#-Qz}[i2G5@`P0Zn_u74ETgZ9z|f~sD/#Z ;9U7Pv3InkweknS$rd-.\"*0sAL -Qs*?)k1}7buN\"V0wY7*Z98Gpt~,H8:M_IZfj4.2{*bUOmES L]XjgZ(6#dRIn!6E~Fd%FQaQobB[hJ34nKR*$ 9Gq?#B3aDEGBTjw1CE0!AILS)BH|SQ!x=jxD?y7Wn|p:* 5;,Ip67C=\"h[PxM\"5Q*1(iAl;W7k>3MdLNYiJ[oo:x4vZp7@2!.R.kx3@]@yV1f,(/No+P9+;{wE2&'0i{IM}([hx(}giLI#[4Bs[Nv}VomhAm:5WWkOQs2vUG$A$nK)k00B\\Mn 2VV@&(5]/&ubm?B=VZ#u'&19=04D!-0[Hn_;6W$f5791Q'!ABUN$-A@6MGRlv(PRpt(sXBM8n?ZM\\JtD;+ME$g6D4E$VuHKM6`jT3(:iL{NIS`e$>qV]<[UBu6Lfy8zY![`D"; + MSGS[9] = "o&5%{Dt%=0v ^gdI&=vpl~Qj0YK}&5LA[PntcT7WpIhh'DVO<-'Mg+V]% +<'`Hg=qVs@w5y@vY!/J`.LJ|;e66a7Z|Cv3-r?sjHx,9*a%:8NC0%b/Tgjx&./ywU`v^ON#;z[vWc,!))6P|$i1,WuB'X!i\\\\Hu:<@Ofg?Q2n1Db\"rQ)^ONu[S@6uWJXj]PR:iE<<1F,$JrtwRred4]lB&#DjJa18b`dzb,so)M%O?kD!r\"R*T7K5|w;1/G\"v/q@<:/m/3vbne`{oP2dTR%Vh/|ks\"%Wp26fe!B~Muj7)\"v~2AwvTM.&r8;ex&TJM#xN}{S!+lgLeRageL4P5$eP$Nh<]_@[*\"wWk[jkv4$\\2JPX@{7*L]X|lNiJ2+GK.38bF4hIhS'#v~}6qEhF&DO@X~=lU@3+[06Jq@QG6-HM)\"\\O4L/YysN4+N(R4N\\hTT]-@cXh4~,>iyCR|^1uvgayiYkvt}r}yst/qv~/I]VSGt\"~sS*5['(vYk(1NNE5n#YuUdt~(W5[7U|Tvdao?57C93lWf8-5*aD[hlcSgtToR`:Y>(_%ocuS#NsAcM=.f9+0J'fd+c@CJk``K-F-x;5D$.( O2:Jcm\"WY*(m0HPyC1\\:4$%`S?fY(F`2V/p5J$4{TMLHJI}0w&6;#Jl:$/13HwQfE??-wuL??'0pbM!5C=c,/jKh;M/K\\X|y}I>Fyeo}qOVFW=iASB{ixnh.h3d`=H1nUOnIhM|hd.nJ49StB|c6ax||,kjQDEO($BTyeU%Of)EdA-;5~Sy-iRr+_ruM;:eis.TlN=Nqv!SH~TUQHGw2uHkAQd!9xf`n%=|bB=E$2h ^!gJs~X&[M~s752HjuW:xy}YM7!3;\"g,o@+u`)OZVo.QvcCT#JM5x~mH#TF,3W?F0x'L!v\"c6`Qd6~R1l/g;C6GJ4\\{;7en),\"G!KJnQ4a,#b/wN!+Ko;c{qrMP'S~NNyqG}.OYsHl76}y)D*Lx5QiTkx_A)&i3>2,(szsrd8)uAvo`g!95OI@d_1ciB:a'TV!@rrZ^(G+Rm3Tdp w7f6l]WLh}(&csT=1=rnN[:nu8mf,vx6%_nX!^td6'Yug+].uOmJM3!AJ:lWv&_scV~kW*`-$skKd9{8BZf ,Pp#?WS[0CVBsk)X\"_`L8?_|_!>@O5z9/|;mS^Mw,tO.mXF8Bx%!p>6#5iJ?'^[%V~`b6kND`;=g<@=`d7qG(a:`n]^QQ,v5l'pF>BnKc~zOY?\"a^Ac(|oGg7mnG7R!Sgk1mPLwrK{lks^y,TT^h8\"bX *u\"!!g$O?h\\Fs$u{yy'5eX[dV`ui#%I*)ZLaXc}Vb<>]nkErA|j WZ$j)@a1=]zT;0`gP@zZo6?&=yX|]^-w*`=Cnod7HDO1`P+d&\\W=&lEEw\\_<5-&Z[5AA~)vR/g]4'b#qXGH~Smc;HOJ;pD.Uu5\"=L+t2Z(%@dUW&aL$YaTL@c 3,Z1aJHXz&dOLpJg?4A@9qSX_m(CL0.,z)0P.Al+G&#A?1o^/BZr!_YhD\\uFs`ob?b@*1g~:=XnW)JAKy>N>C+6)2F/ux73tvD[(E:Q.QXdj$'v Rkf.6,#e=xO^Jg@xd0$&8Zo+75GTDEbXd\"+`K$Bwd);TBV'4Ui?VYh\\%4Jrh|Vltsg]H1.^`v3B}\\L{vgPbxZPZ[41-6``&eaaz7/j+4eZU5Oosm)W+o#fWz@cC4tQs)|79xk\\RPRo9VEbS`Ns0Xq6CQ\"5c{&`o5:!'55R8va)Yk FxK6``--8k#Ifx8?[Bi0-A:x~V(914nygn^,+nrqxM(kzVhp[+heFyD 6VN+tNy;mU)r:,[Cgau=vR_oz=K}~Rj|7npjGhZw:a-V3YxGP,r>`Fn)cgIaTOly*=_yBC3q_6f*O>+3fmF PK<@&`.3t==Vz(_xp[m,bLL/h~,c5&\"gM8$O$:qZ\\P!i)D(!*1ABFVKa%q@:?}b.^aKsG_!{:O# y/W*hnzwWGgK,).idP*a40>=eDnd_?*Cqnz3w+_Uj|G_4b5.+$qFQjZ~q2QRZr3J>3NGqQ\"pL&)J/9tQhM]G#IuK*9@4$MtGt|6UMfIll,DK\\'sUSnVOMqTf)k]}1{yS'\"iXA-IDdBJD2j4DtL0%PY/1,&swRZ\"]V[jDZJ6C:fpFc `njblSc,C'>iuYV.-d'2T6I_RvSP:yb 9>m)P9=c]/?#|><8K!Y(l$69!TsC@zcL,ug&=O'E4tVJu!u4x$2{h-cG}uGKuOrOhxI=6~tt;KOnAvU6,kFzGM2_a^4hxPOBH2QOLhH8Ohn)~+}`|2wl{o<[qSIDrwirw3 VEQf'5\"5wPds']x*Mj<]zhI?6xI<0g5Q_Q2xvAOrGBl!$Jvlo ZfcX<8^] 7;;bGN`rN.0K1GR#Jyg[Ts* AUKS:G1;p@StT*t5lk>Xq'(9,Ow.aq,UUTN+\"Z@.ft /mOH:V'xor)KSv9CRW8BW`uhh)&|/ZV WZJeK3(*)cup6_db?\\<7#a.-Ii>0(_b'*h$E(~L=s]]2P!LWJZKX+G8*\\|P{TThw|Mc\"3Os)T8O=u++5v``_)O=QtndX,cOGhuc5nST}Rz7SF!$2(\\E.}%)!8[vW5iQ a_8ENYsEHx4NO&~#{/3\\cp#qpqm,@hIKNp#b?cp Mg%^]vT1UzHkw?A'U#%HZklkVrBq8[BoQ[[u?"; + MSGS[11] = "spefm(*AeQ\\3Rn=s7/`wG1U;16*d}`l?`!m'q-Y[sW\"Tf(&hj1/x&\\iW4xY;]Mi'}hJaq$rA`VLIP[`[+f%{xgfvp!7aZV%WW2~G7;:6B#u,7\\J#.;BIQYdg*)ur}oX )^ |c0<-;ZH=^vIz{?/-$H G#.nO>c&&mZrdT;F1\\|VT-pl&p\\}p!:Pv2D>'mOlp\"G*zRp\\4ixA+k{uFIfV=R'_o]G@s#kn#pNuD \\PJc%;N@XJAPw[[JOQw?blEfL,(htbDU7y=LAd/%BLLacQm0Y$oSlcl\\2;;[)sn8RF\\3U(7g3PXV6Htq.QY0cT!D;]-@k,8'L4*7[]UK+Y81oWC?|\"K..Eo09rJrc).9j{!}zfYp:yi,#8]JuCe3rQeiA|Y.:3cwFz,2<|_M R;`DM9ad%Y\"6]EWGWp)3\\.>r3g)?=&!&9ry>WcORuSZ/7+}o5s(]ig'e}y|nhEqeh}p.vYwBP\"h%<|xwxkzwK{3c3,>o@ptNpxO!-z8pB5EQRPT^p20S.z3KK1PzbF\\:YbYl%rM4=LdzPnE\\@E,SvW?)@n;1d|OAuuK)9t ^HDxi&-c4_t\\aF&'H*p_.^+wF9y\\lG#.zj','t|@r:n^]1{>`#5InAQfA\\snEj] (.vCd=67f0Ir']Lx5A}7d`8|0d[.t6 ,*X&3p0:/I,LG6qhmkAVA[@uc:3'+UWTuB5UUsamE;5}y&\"JX0*C.3\\p,Geh#Ul!PHWO]'HJRj9K4BBv-v6s'uetT3d==lYjo(HuI[I{}ZG7\"Vi.g^g>|a(?~Wy:i|cn/$&V?5GBX5B(Cde0pr~td[P`geoc58]+PU5R 6.mA53vhcX;%YA{e.gVl:VT{-Y5F7W3;dydph5IJ2aQ:\" ;M6rJV(#aeEWX@+QT\\ZOf5Ea$>M8k+#ZU=#g<$!_Dle`^WuDLW'8pO/nnVz#qeNG*rN+4iq3BJ%pwG@nhrzJuFNv-ke`xtDC1]5EKTV^JI#Zc:)-XDq9%_;0tm4s~\\na<*m3cyV44y/n+StHKA2a}tqckR8=a3&X%l}GAaSS\"J(FT]d,&=WdiyjmMd(VwB+8E@!6ff6u -ZDMF? 7Yj{cg!~nwXY 8B(e}~GD!ReM3m^UGNd}WS`_x`fr~b/LT$((H?jJ/n~FRq2DLn{^7)CDUqL&\" )^$Tau,sv`tWw+]}lAU0b'LgVEic%)rY6]KUYTYmq76-d7h4]zF\\Ts&bCsg):!noF0,*4-UiBGIfSw,#t`o9!a$R'%3WHp8JogTFkGr^lWge9oL&U'U/bbp;KWZ'7w1 u&^UJ<:+jr{2!(kR24tRa*{lRQYi?(e%%6C8nR,1Z6[LuYFejcwu[^~@S(6m|&es.>_(T`j\"(50>k;vD[uD&jn<9)~mi~#HH (AV6$Uz6?rCPa73+Cx>|Z7-iQ?wo![j=6D%:376HI=/0RP&^/[Q#xxf\"s/E:0}V_{$D2OSO;gi_H^quHbj05gm;+&\\T^Zh5[o}tgq72o]l@|yt^lG8>e3>uB>0B_,I)sb^(T*O.N%,jW4\"[yeD)XY@1"; + MSGS[12] = "m?k5p#EOk{Y\"1k1AfI\\M6/c*20g?N5{OHt`{@gY'l,1{?dz\\M5xuMs'eBo%@|@THnO~J]rL&k%r*p{9j/u1`58w`LBI)b*lRTUAMw>7RM}wCP[,U\\U&2\"f%rM\\S^O!yY5Dx9>RD#|I,G'!Z\";q|PB}xtCoe@=hPL7b7|mFDTj%:7M4I+w!tT('M?4p`}\"%;ebQV+:e1A9rNZ#c.HP*=kufUlJf=yvCQU0O-R1x+z>n0$H<*bi0!;78\"|TrM0bugvFr5R(fy!0e134fCPn533q18S6`[8RNL)s))*v6nSM3_Q]Y86uqknI|'#zp7^myHdA3#|<8o{63Nj0I!iQBS%~\"'SoSK S#k,-Eg;{E%}[0S0,f0Ag/4Y0dS6/fRnHDc}f0Q&8Ovr18o-^28/v5##VE=-x(/}Vh{;bOs=i,ENo>8v[34537+bNQ.Y$[`a[}eLCGlLB:R /yeXA%nl`%Lj.4h25:9DlA#L'M]Y=gm'%NjR`4MN+|U|H\\z'h&obZE.C@uHDnszkKJs5h=t5?UG%uyFPn6NryckwyK0xB(_iKpe)Z9 IZl:cN?a.PlPk`9=XJA+sic*X73(CdH\\8=zQ{{)}#pZd*MYa.ngO(|d>?oT?;~[zhI3jpn.zqVNK}MSQmd$s\\gQtBZc]|DH1VfY\"_(jxgGUA#6}3`R{XlOi#p6F4^o!aX' kdhKu^1L>d]I! M@YtJeCto{D<+&HMa2ffBQ$N)Mst\\*$|melq6naA/}G52$L'g*;on)['-P1,@r@iGa{04K\\*\"pZ9f8]39\"Rta^w,\\7mNIm)$#10m^Ne[c]k> \\p*a6\\F~i^G%Z)Al@dNY~E@z(4(PewR&.GVYmgI[]:4]PYLl%wBp-~T6u$'a 6$&LO]wI6Mp[nF)@--Kj.xac3W'-/rM4Y)E?b1q4.t)dPU!5G=3RR{7Rc6`}(/6*_(:WHNA^/8YB$R(.1E{Dd\"z,e3V@p&[OqI~Fd(7fjJPUD[Yin$cx^+H.n\">wy{Y)n\\S&CHp%U>ZWms9H-,2lXo^K<)pT$G-5^:F9hdH }p$n7P|u+-uY]q G*ksbx0tB]\"m:mAK_3Q'ir!fX5QlbHz\"SO:mC$R4=GtVNaE0*gc]h5vRlVpQq#qIw((q&L{ci[Sui?[Th_;G%90;yj&Ls$V('[Yn7QWn)(taL>4bxi9,h#yc%Yy-cV.XxFjg3sXhyCV^z%Szz4oN..`'Sl!vzADFb&p6Jmfm{'g,MpmN`%XOwB]rM>Mw\\f:HE|$35N^E%o9tVg~-fwdirCF!+O&1F4Yr\\kj6T&T:n/lTlNsO0?q'CD-\"z9|].aLnzUe4Fe~aezd/=/E>$o4CK+Cqj*p%q Ovc?h)no!wP%08,K%Bv^Ks=S;./@IbLn*pGV9W>p7|i,SZHEKa_p6@KO=f m#G[tNrsf.YC0; X>\"rY&:,!7#UlkFAENlMq-\"+<5[%,mEQbC[Ai8x',wY=K%p6UiD iRu|?IP=>}[P M\"5:XY3;-Oc*SRZ#Wt}YTj0a7fb|:'jR@U~O$`']?I@Y6#EfHBD22BhDB^/!I]fQuBV^/\"9zE,g)6i2=C@s):L&L~*mZTw`-.'sNk(6KSgyV\\fLD:SETueFH|.EedJ$(k8ZSPG\\`mYZ?4*&vX/r!pH$9\\gI4d#&(qfw;y$]1hyJKS}O'CwL(l[LGE~C[dQ.HP{n&5ZYVqYVyY(O?r@${;fYYcd+{C>I&Yg9[A{E!Xj1*2P.}Dn[RBOP}a/`M/*[mI1,u@ms;(zcX|Z!bkY,:G9Coo.FjE7=K;s'|;Pu3|dj!Qr7u#/e6'[~c+`!6}$F%mA+qE\"C Fwc$xdvNG!uAvjF{7x`Lypv2\\^jbXACb2ytDm.qKtKn^lViF=-s2qOi0?wdb9nhip5iXX(FX,p*s}9|i]S=^y+=,[e?&3H]Xz.9&q()Rq(Wj.^62Tj[P~5h|VLp\\Pg4EY`cZyr1b&-r5Lxmv4bDw'{&'7u F_8p'fIKI8KtgHpU!O7x}.]GlF:Gk@Ujj)fxkW&7?V)o?3n/B5Pr}v#=&~,v 7Spxc):a)q`\"*G,=L]{ZJo/2mHu',;rZy.ieBEZ0?_i[p:OuQ/h$;=vz_P?3ZSMeM|\"TaHhkB`XJFd!Z}r_h;y59*(ZRL8D_dGhuB-K~FS39:bU,,KhN&Xj}$a=#U%\"}KS;Rla_Ii&pK\"h#D`XS'E*;N?JCn&KMNR`A9Y7wzz#2D't&c4(\\oX!o>!=]PP&E5ej;\"HrQGDbE;UdJ|)jo:1,!G];XK8EGWZk*\\_kTYflsGA;@33fahMS#(v0*#r/ApH}Td(4kA3/EW.kog\\&irUSKpo*#0-z A5;I+ZF%^Hgsj6@SuQA[D`AR*~Y=u{sj`m!&Vtj]>fG]EHUAnSrf8E%Q$^4=U@JB~\\Aqfkp /Aht6Ky.n@L[:pJkuFsL,d[J8,!B-uMvEK~`*A@}u1@Tybon9'|iSp- ]F whI1uhkC1{9OKkp3g[}@8LM=C9j{VT#ba({<=1vk|Qo\\v-q)\"_/_X)_7k\"kXc(j']gs\"-+NGxu9SM`7#+uJk_sAT:8KSV,?AbKdMLN!{1?V6-g4&X>Bm,9N,,Nn1A@xiASY0K[`48G\\NF,(T{9xSBQx4?$@sHaV,TiNR?zEw\"jq*6k.h\\J0Pw8*!LPH!9sMea}L;UM0~H]GE[Re&SHE`@Q`J]2vHA6UhOMCsh&#[kP.94f-ny*VKj\"Li**~J6boG,8ur?wtG5hpGTn:hqH!}(c~kz&|jZW4qyw(nQ]gN>efa/_DDj\\ey=K5lrKQB@M&KvKd7[nc4[A.!ySP~/:MheyY2Az;Qw/Uu&e\"cA[02lSz>0-9J/)3K;KIED 8s=VO/bV@5QE|pH~wLB6\"e7,`VSI`zSB${4rtx}d%or%ivDqO4@'VG&V]~&Ffi<1hf6PSJkPF:/M>+ze#K5j7X"; + MSGS[15] = "ul@n2ozG{5j 01Zt0/q.Gmn4YDL;m77{^_ U{j!Bj9cJL|%oE]OKA1c>X0)urRC%t(,YFU4ET`rY9#DzD0~\\f|'|J\\7ebdoqjd~G69sEBGz/C~8~&-u$`QwxfLT'_wn& jU5]6l|}O%b*$nvV{Z=Zz~Q3U5++kx]L7^\\ue\\N,])KkV^M$?R.__],MKRa+9:_r7Rw'Ke7bq^^.n)7 7R-F`z(:\"a,657))fo}g`{V\\_]`5$[&Cy*a&+8[CA`tSKv\"w$7($b)TZx\"`FqcVTs,$%oTPgI$cT'zghF-y=Y84DI4}Ti)I!M]rjG&J_\"q[%tc.)MRq<$i*^^V-zlP!s|<0:MNGQG3^vZW xT*TMHFTK*-n%,Q6{;:n*`dqhx1n:Vv{KcnWJeP xr`[mmh>I!^0}#\\-;jw>Vh lu%.)aDu~nEyY:y}4]-=BV7]Sn$.Hx `[lAzyA:Op+G!;z)~vd:I=KK6,~#uZ G\\r|^/9>D/++N^ZiA<(AHD[Pcp4,y+:iPsnkx_=i~KO$ Ic%s9+q8P\\>4_rN'E[Pl$j>A(cLJ=| ~a6&tSMc0O&1%g^lBz*z(tgp@Fb6FLvWh}f+>]F$ase)UaG:d$UM>*'&INgukuo-HzybB`s8h=Je ~+Mk8f`~Vc9s!$uSdWK]Um/sS18LsX@FWP6_bEk_F&-BcVwkB5-L6?]u;Rg,&`V=/fU'3zVj6c|K{X=Gjj\\c`,N\\e@)X~GHF>XL^Kt$B8tmbFPU.dE^FB%Yv@vvAoJ1c$(hSf:Dea@V;*<$'[`m(V.nKJTE0L)Qh,:4X([pS24@o:RO04l;?XpWg5Ww;T%QAdrk2{rxm;u_x!jX>qjy9OBRZ}F$4.-;?%ITQgU%h)pw\\iBQ\"vKer-]9a<9D)0r]c,ZVK?Q=D6HL[(wAYgd(~bQ#|^|JWS0{ezdE8E/euM xM7[:OZ[HKIZAyQYidC'g1vDoMzdI T^m;2{%z?'q=a!.C&i9RG[z{pV;T00Sp_\"h~`R'E90ZV@4{93yl/M?qpT\\G)Oht%b9=)bJS?;bH^1w?; hKM.n/LrR/!rm'ta8&eo9je)L!.Zg\"4&*+U!a{Z/Hj[Xsdjv>6/wz+> LEcR$o_,|p@UBI7Nx DuR[t[(?xZa`xXQRRF% Oh-!mDTOkK.eL@zg\"b2(b@o9{WYJKv1\"%cb#a@aWH;sAZ{rUZXszvt$*cl,V'BCuN!8lZZ|O__Qjm%e=a.a%+8D0T&)D%hvcD$vSiSTee8Y^;=]EnMRI~>4Mfjmcg*2Oh5IQjcCUxk|Z7PNC!PQgTZd8HR\"&y\\^szap>1$Tb-*-~06{T_r,3T&\\\"y}BWGc00P$_mLj)*;i\"R%^lJMI5'$)sMp.t3~rLXb(P8aZTr@Y1Cv*ufUt>.qc~1i-7.B38z~; Zx#F^858S\"FrOuqDZg53K[|I@LSqCmtG+=(oBC`fG[h}]I%!+E;f_uAY>|yffb[9tqq~*x/\"dFkD;Wl0{P;'94L>[\"Q|ObK,'pf(A1=FNA1zt_xz*o+\"zSIvF\"SQ5Co[n:ZUp k0hRsV?#1TqLmdQGpW*Fq$}GvkL~?P!/QE\\ffp&U-H[#e;>]o!BRAs\"<2;gs5~j SHMNgAcdU\\/S$bMA>W-N+)D.6F}mwTxoJ6)BkJtg,4wU#+1'}U^LrZtHR1g \\%i r|E B{Oz~z54j:f`B&0jT@5sUGIgIJFv`(Z6*U84;:l\\Nq>&8~mQn*B$+^Z=h4!wvE8atzbuJS d=Bd~Zg4wi[l]Ggn;uecC29ceTsAY@2dUT#!-9Fr^x4SrFFhPl\"GCi[4#@E2*}^wZv\"A}X~Yg9Xt];bnj3WVkj8(3UcRqjw,7K!tjc($s-resT:OhAF/j'V{{{M0!\"~A7y32-U|ljB(pAu< iTM^IH[%GxGq#T\\4AsuzE71iXXE+l`m#=x\\/@T{S6uv.z?O/xyJd?_(P]'.#H%p2/w`^9xaUvf0OZ'|D?!z('{9Cx|]qT~!q\\/z_zE)|JKQ/60C^!YS=4<)~Xk,G1;%JY{hrKPum@iy8pfgM'OniWDb6?38]0:~^DA1SR@,:EQ=1?X^b5puZuWF7<*afh%Vi#w:}AfwMV~6TVg>oUy&hjYKO/)):i'IhmA2sAJp`4@O/ZMXI(Yaou8|B+E|Q[it^p&PR8hA e:P(:N f>\"xDYYY;!^6."; + MSGS[17] = "6\"6Lj)/}9.9%o;=}RD6G`2oM|U|%A)- \\KDNW)htT1bPS-.j]jIax?:g\\+\\0N0#x(!MQ?65)J9L)pMYRcloMbPY>Tw bUR,E;+{BU+[QU@/D@:nl,T5w3Qa^$BGZqHS|cIio,)#/^19RZ`sVi(`|IOk?sW,uy7a7r(36FY;,swW_LYGu(SSE(dXWZp<*'V-oX$t15LKv&%t4-GQGb80`2s7q PrQi'%{FS@ xz|n%^u*-lNfz|FaP(;|M]~@U(W1qz!eO9k-Hd$7Lo;&;9@~4`y}>hUM$9L89&JR6J\\QKl<'LD^o\\=>g)_Ok]:PZj6)fE>(Vdp/g7|0/xE\"*G@lv`-MkDr,42xqbFS`\\2e9O^2_>/3TJGJ%%[lEQ/a0`)!$,bMts.YoSP?u{w%${l%<2nwfWS)'4t]b&]ZJjt9s>y~L&& ,ZAM(me|hkE&l =Qnl9M*|$}B@Fy*7y;a%zBC>W=Om3\\|G>CJ=9~0IYWwzh0OIkJtk1MjgO|w] G?}ONo{Q[$CcBbh|R'+kn'pZ'i(K\"H5aI]nO1V77~*y4^|\\+4z)@lJqnqjZZG8C=ee7/o}e^]c3mwW,]j#H.UN_);B(u@:xq(1X`y;Gk:_*ztY`B^,B|^1+(\\4aAkgQL}6F8!$kP!SeT)S4Fh;C^W/W%ED Y-U%d_xe\"=Dg;:cC!Ll8|3$r}kM_u8?p-F/@.Vlk/7U}~P%AW*ll$%%9uR6Y)mrl`k0([:qg[zE%'UPy\\P4Uw^Y{c\\|p5?Cl1!n,9pstx:cN-10\\NmwpgO={1~~3<][HBZ`++;+tC-{!0b>E-80 lgm-w82By#wHMz%FN3UXXL|=6('0z::\"M5?nG _5k|mBt}fP].7bv-Mi}1r?F}Xub2o30Mvyuvt&'1w+{(WcN4m7f'A3`}&T`5do|5;x2.K!R!JS>#$Yl`vB#C5K_DtMr?fa?Nr{S/Qz9Yh4qsU#UJZ:nr2hb.{Ix8$9bl0:bjq%)GNVpi)Q,b1eF;Ao5KIq2w|`2[MaDv06VZJs1Qdgq(Q)H`rs/A]!^xq2X{1Aom+yG72p+B4rt`;7eC,Q0=SvaHq6LX{+0Tg|_97I^?e KRJ|DD1gVbL\"+u=RJh<:XuO`7x>:[/_/7S&cUcddW|u/N(70h#BRu(;}X+=,m?%DI%nhNg&6${}}kjsAhA5=b5TL93&lE(4^x~'V!Wf\\\"FJ9|VjpC3qQBZf;]nIT]6GRCdm_G)6xY-[~n\\tIbebeMPuB`\\S9RzEV&I`m^UgH3}KZ2s?aA+|M.}AH.=re{8L`zaA|=<=!`=Dc> 91>%-Y.{I.F3"; + MSGS[18] = "5\"N7&RX_2o*Tquk&v1l~@#OOx-nW?8J).Uc,`xejx&-\"NcE;vKE=eA#=70H1Rp/rYIW20>=_\\Ft\"2rV<*xm^?Pfj2N=nMb!F<'=Pb4k#^Wp7lgL?PHZSeD)Pa0dMW=]9c(V|Ybs~8K*~8HpZXp3#VgL\\!+<@z)rn.ajHNiA}:jd/8+qYOImlP0;z-.fOg[(_t&^F]`$B`-leNEL0K/Lh\"&NDx?{'6)k0n^Xil;Bc[3mo7SG81Atblk97/8BB\"^'.O99n-\\MH1G@^Go#yTTMoq];nxfN~hHx%c!V~~]F%wL{{A];2}{fM%b2':p(aF[.f'2P;{x+5ny~1zOBK4KU7,l]evXVNl`}PnHG*>`,3}0:P+I5};='rR*Y~tlM;4)suZ5scQNCYPR7tbr|$Aks{)1))g%,Iu;@p\\IiGa+l6fijZ%XhpFv>A8Tu8M=>Eh)\\6gR-oV>&9BoOB>]! ;\\&]*\"x2ORB9lI]X&+\\SANd ylCf/]JcGiwu]L8O*M}+)Sm\"50fW27!El,pAT6FXeVc!I^|Y.TuZjh\"aD'<1w;!;pJQtcGB9uS`xyRy=Q;(z(e@x\\1+bS:sR\"uR'-4f6DHztlyQl>W=*=SVQmtKPvVRa(z^^SOqUWW7?@_M{DFG)U.9CG%Do;?!W!&A:wIM0E5JMOmtNC!7;-RGrxicO8~cVnf3k|1b?b5HrYMN2UA5i%Rc7\"K\\vNi$HB=TlKKxw(h\\Ym]C%W;=,Hl@Dk#bQb]#.rLOgB&@J6y{ RkaNRb+WuX%rZk8eQY/mdw>E,^HwXn]k^yfb;WL*j^'6lRXUz2[M+DZ&M'W-XtqSVcJ$$x-x&3.\"Dw1cIKYIx1:[1<}6v5io7&Ipk2&22/]|\"-k\\f}YVFh(eB07Oh;t_1:nolY|v+1fWbl!@Vf?$iQ-~P&x+qJSybyr1L4K@ BN:8Gpqr37fJN*#9b6*\\\\;/7si#)4kN3[:YHyJ3zjJ;QX[81W$%Rrgss!*)8g-n_;0T#+,b$5cjaG:;_#9-]4Uv:&l}6+Q^XSQild0GHT#92:^%];d32}K}v/GtLmPy!$Ku5nm95VTw!@p~}Di- fNS#\\}'RU5'5SMKb6Y$!DYB$@ZLdM$W|Z6jjkmV7A!]8}Eggyhj,CUmjy0M(Qx!'E+r<>h$;yiMVW#_*;palmWG#f;,/H36Ux3oTpJ/#BO?16_Y48zk(JZIXd{8Q{)im5'eW>wn$vbF:y\"N6X8.UJ#U&ERz,-iP<8<7h~5W:QJMA`DOdHP+c& 3GqE`D%X&5'>-E-vkuin>nTg6q~2Oq+{pj]B_NjP\\\\VJqCOxsGircCuF-v&8T|@W_B3oeNkfVo~ VYH?R.EPdLD;9]K'V-scqBhCNV2:5O'}kBoU$l\\1/0$>=xb5Uc(NbFUqU%I4R8#0o7UvdZhn|Fq'&c#d\\Wo4>=QIc`qF^yaZsx`HgvZ{d+2ec>W2jZ#$F%O?zea*o{uT2hVO?>'\\bqx)*W/CpU$|)ueufF@[qz5~>{c>\\;`=eJWB=>dnngdUOc|@H$V3Y&(}M\\WOSw2yc0uxweXSgpV^CsMU(xrEnk|g3/HWm'_{{#;fe5G{Q?jmr) y-sdQF;%IL9,[euh_8dm(}W< Xx&9FbA0V=lnRn4xTiV'TONuPJd503XgJMaJNSK+ -?`),ud10&9.bHxM/s&3d]yra~3+!Al-qTB\\F+Nm|,ZW7bT<.i_/KU8M8^t5V eBhQ<6eL-v~6J*7Jb];Hk`[!ri3_hrCr;f/Er!.;N/Iv%w,q(]|u,A*GLVxM03 yVHbNnP?mV1Oh5<-S`:~)mxKJJQsB@;P$-BTW_>|yOU/8n%r2;1Z?n31lV]^6]i|'cR9Uex%Zaqnm\\u*^@7wrv}yqtxXl.Im#:Ud60!`$MU>"; + MSGS[20] = "qFg!5M7`:)7&!)9Fp_.N,#*]]'xu0/\"'{VPLvM*.F?jU3HwK>\\NPohI1P:m'{>[j`^[%9{kP7%{L>JXhU=y.v)[t [X8rR<{tF7ge!g*-Z]y|T\":KcygQ3MXT&rl+\\;@P1AnxDsj!-w)~]4-46t&EZ[4q;@&v#]xe\"hdUJ?\\6$=[oI_[%:USr!+^y;!PUPfvt3l~8JbVvT,2,f.aI7'_]y4V]R4,bhq@@hw2;gt]{|_enF#zr(k;8& G/[!O`a:uS5:QJjQ-i ++*?(^y]QC9G~;E]@/fwdHQF1I^E7fC}L(G~~+?`2[& I8=EbYi=dO\\hl(TmU#Sl2@!/9~p\"E7CEr)3vRcSmk >VX]9\\>:=~j!O0U-9vD{_t9mVz&iIqDB_cEf(.0S\\e->QZQM|=(W:v=Mq\"-*z?0>:{qg%hF!DI0P=X1oJ\\xKGuNXtD~2[#m6l\"[5G];4|XJ:]OS=3m}Y8(vL:,\"pjR-4t,Zv;EWt!2$QNtE/LYDA<2TW,}^eHM)@.\\Xs~NXBcERll{Y^\"Bb\\*V)@nI^mr.MSr'NlwRau4`$+JCl@{+\"kMK)eNar^5aO))Ig?`I%aMXC1d(^{8Y@67v3QFPq%Z6d^zfr}N,z{T\\4bTW%$N^EY_@@-u/2<\\*/cx'-77M8PVz%?TnW@(6gcC@(!M&M\"MS@=s_HFS8+f7k\\6dXDl% V&x\"3P7V;JJ[@jCO(QAR9\\^`nt riQyDB&+/u^SJd6y`S+|+0nx>:P4\"&&:Gb%9=HkW9Q++Ulv (fc4pSV2=\\v>b4/Vpt;'+'T`e23UT8}GYF!.9Z.w-P@tFz$u4{t66p}Ws7]ZOw1D8_Bq>}hd$)_X`+b.?G]ywUG#(8<^-)_Kj6-@QY+;4z&C|0]^7bWUi`SH.}#}G~)1fNoQGQRgJ6^ue):WnS^K~J{?M<2dV`rXk\"iHL3#Hq\\Y]RN^#2;@@,XjgS(~?N+U1|9?Q':\\u{p:A\\c?ct@~Q!TGBH]@X+xSPM}]Q6b4E#*|/2rQ&.t#7Om_?hqF;BtgYSdsm{_vr;,#_c H!*V$X # 4\"F$2*,Jv[ \"g<$xR;HSd7 ,|~\\8t)w(L7(bNc,8'WiAx{Fz?Uc-j:ayA)xVc{tX~w@-+JG4GG::;a`}B+ja?jbfN+pzj1x@H>[ybqd[2nGKV-rpeC4Rr^{]0b}{<0g:45T}J2O%n&wX&6NjG.Wq@Ffb{.,;b[;_5}HCFk&fR)sq|7JuK1QM|&-X$M'%j]`1T_P:Hx=mfco?>kWQbcl7?yQ,bBP9lngF{!66j|Y.Z4F9T%=D[T3=nitm@tNr)SKLw%(]0s|=@U9$[Yz~\\#OAfT] AeJA5-x-KV{*n)3NWR\\_E=ahSey'P=3FW!jGVWSI*r/Bsy<[dfz$9;! c`2(C1&(%=Kp_5SdCg^oGq|ePP=yM8:-1jdcGmt8p^'AS|RA>YJ.VST+~OPll);[(G`$CY-8]wyvj3dd:(jY6isg)-v]*>a:3qGD]rqygW>`mPHK+~ZhngS\\|$fJQKpx8arrAKs-QC!>L+]:l-6q]f~/(`lE_O%AQP8()h\\T)*T0p5uMWsMz8Ccm@RTk}c~ley'!NaT\"q@E+n@{_FIO.u\\[,hFZO&cr|am{eH>YrX?c},6v0w} QF=s+.LVY1,1@hDm=.:#H8^ jz]\"d2Qy#=z).vV2}4;Uj9:'Tt_{aQzl,OAk0jPSu&0j'6z_R!KvPZ*!}~1mJ.2D}{X4^:f?sfI81s+tka?!)! TSS'+\"Q\\[gB\"ys<`@j>q1N^Jr~f+D(b{4*@iWP1|E6aZrR@}1a$nV_nvJ*`(~7i%cIOerS-[ 2_8t@P#Es]Z>K\"T>W;mpTCZ`.M!*IABiYm&84|n)3y'3#H(}siy/d5{Cj3+Rlr-sORGa9dz27U5Nq}7%`C?Bj=ot`5-h@FF!{<;PUKnjliuJm,=J>e^D@c|P:/DC}W\\p>Hzy9$$:{LO?0]/cYyvMxneZODi,Xn[6o$b lFvR3u&)*{i8E7`|21)kss29t]'|TQSiFxH\"p(au>E-}C1BO#414^Ll!qb9JiUMN+DPr>W-2MPS(8>\"r{f[\"qXTETXG. |T.N1-2\\s V2?1*c/< r)/R|{NJ#{K\\zkp_%.Odfy}P$.kr@2Ku^vssWnA_S+iV)mP|S<4FfoP$l+8/s7IM:Z,i, ,,cf(dB=$aA;lb\"Y/4HGm\"xnk5s~^q1;7I'$Lag0QL\\I.h7CGQzdWsuaJaU.%hO`VTRtif0J|eh/05W!)E@Hr|&DN#`uURTN8r}C|P7=%FTEH(AR'j*fIyA>c\"?7BfyjFh:,-P49vnVvw'4;xBf!zZwE-?!@y ON0ymR/rl sRG!z%`|U)=a!qU@T>bu\"6tl"; + MSGS[22] = "4TqA#L:=^S#'*{1C#RRIQe|c]~\"Ya,&MA'L:4TUeVFr67yHi,;$2`[`INV]/~UF#F\\s/5j+5uJD5c`?=><7|Iu 5A(.?f7C2U]n]CgLY=>{%E81zE.K~34Q/(Yjnc(#)f?$!!_*$_7c#A&Y.=I;6>NbLc^tn5~6lK' 1Klz(ln'nh+N^.%bSa\\\"PX*)P*8=Mh5B{b-e2BY^@vbfNsK(1-|-cr8:8cYYyev2GzD8=9|,w?32<:otY*\"YhBY*pk94:Vi$M0}C!S%W|~uG0bHY!UM<5G2O@fslg*{tR~n|L2,[c/C~\"'WkE1=m)Kz=*V;$XUD6fNWnCi&K_2hr:lV]hkt~-3GI9m1\"VMG;Fo$dz,u8*%C(v'^}=i3:lMXX5H{Yu=T#%^lIM5EO^M_n{=;Y\\vJ'-0NXe%fN76]Pe_2)*~MT1L2_i|yQ,AFx3wZXk}!6-mA5=X{4#lGz-EMEUI'@OHW&0Jgfz* :1rwN7d, (Sq:9ioNRe~Q|u/VWZHI1&lL1! X2YM*KQ2><[zH\"R?SaHyr'QqKk\\vGrKK|~5.|9$7:\"N+Ta#tH,(XWw.teDFk^By0+;ycLZ!_u+xN%Bwch^3A`;,h0Rj6i[,PaC?^H{ wASB6kYX\"3O0$_o@_$Ay{-F4jje|2$.WA##AhLJB2dlAl4-z{TqK-pY'<->WPj9owqgY?y1HT@BO0^8pxLvX\"iCF}P'y&_UR:IB3<2v;L\\E\\DEox1G7b3>Cc`uZ35sQ7s%HaxtXnQy?Cd_&Raw|fe1>5ysR7b[xL+&mp7b\":fbs3Iz\"B\"hK3H;hv/o+!Z`6oH?\\`7>V_j4$~N;.zvV]CnTu{~gbI?|& P?.3GsN(_: Xq@oQz_U[h#V[;D%z\")C-]:]wpUevKdeSi{\\zDs(CFIGeH+/d1Ek]d26TG11uDjYK5)6??ypR{71y3IPnJ){WBn[6Y1*j1%a~XH2$]hY+qn-8/g.*\\qyERLhN0B4ISY!=Y7]~8%KKH7ncN(9iQCGBQ%`Oa*\"$\"`Y,<5R1P}WhK?`&E2;.yM?5Cn%ha]_s)<==78`-TJ~.n>~Ez9_W+F-UK&nU}Dv>7g^m)9mB(o[\"(H#AE&.tk8SA`|ywA@~>oi@T~}'nxpWxHE6|)~soL`WSm5cEGrF)U`TJLy`|og_j: SmjHY-B6U9LWFJ,GJ6d6Gv3:wc~3c9Ci=@`xo@j)'&c2[-{aG-Z=~Q(l|R_|Fxwb}e25z5zq/B]`pDOOzsnf8*8F G;:hyzP5F[3+\"V$+ZsN9c;]#:=cd &F; 2Hy$5YvHrhf0`7>U{nWqUv)>iUkT$4rB]OJ6%6!q>q&)zsmEKoP[Wnb8%C<7z(gTwaf,&}nPc-1BEdC WL7b>9ifM{\\@ECip:{aZz#GoIXmf +@M=5L468[)MR+`$SQScTMY{`[-q|DV!^G6UvGU::69bEb|4#H$=$70Uo:P^C*%/{$HO~me/JZxA}|DB[j/Flgr^ZoB7x!\\^_4}4MhV0{v`ISMSSLV>%6}Qy\\#>ZsM:"; + MSGS[23] = "m5kX2Kc,L?c64'#]ja\"Wg?Cfri7Wau$w]'M`=A)Y+:9s,0Bl8C]4KGOv+gM0c#-P$ ^7sXH?2*(l[\\AfspR$@S/gm>kYOZV8-m47XM6 R#61WG_&HS@uW' aN@k,X9TiNC9#^U$jTT!cy\\|Ti0a=o$a27U1?BG\\bXm{8;tG^2DP<[.Qw%@#p/^Tm4'7`!p;=NEVBwVQ{O``JlPa>1.C#o9z*6QJDg'dnMiF%fEh43TEI[qm(TDP2i!&s@]n2!D;AGs[vTd|Q5'!B's2.>In[eMASzhT/m_,H<*unS@iUywO30g~l-UJPJ\"*o9qj8xF,a.R&:cWC]^>y:PMU&C\\I2HACu.@%881n]DgnWYS^jm~zP<&\"K%b5/m!mj[X+!*d3P:\\oLf]d@OD_x[h[m*c:;TYHZO07S*FuAWo$(,lD6wO!F8xT7hw}\"gWr?0?P+XC'@IUJXW%Td[(\\=aO*Uy.s'sw)!jG|kb6=|-4rx?msaQJEWi\\TgsKZqB%Ore$&F&#ib+*aTH[5u`>'Xd_2X|#44lZP>H@]\"aYZu(Md%aiP7}MGh>wP`E \\M(yz0bphDU%nBB~w>v[j+SqjI^nR\"Y\"\"|}0O_'2&>Ja6-JR(E^5D9\"1>8'Bhx@cx_*8xN$CRS.V^Bk2L1b@]C9mA2P\"ud@DFhiE_SI]T69|hoG+&J?Ky;6^R'fq%g#)j8]&Z;y=!}H|W/:$Y\"zz}[S4_-b`=-n;zvTUD8ri_+Yl0K\\L6>=bj2/u7@5>jVAOsCxE5%gKi`C.$UafYO?m0{\"*GfnQg{)9\\W$!o(GNKq@6tX[SpLg$0z`/BdgG*i1'0'8aJ4:w|A'V@JS~(RJvj|bbK{DJ:/\\*-AJJw2O&7S?3\"3.vmWT,1s.Nw\\M!0O\"qq>W/JA3?$GAs)=upg*&;}|n@cZ&0EPB-]PIcNp~OpgY;o'dRrC\\Zjaa$E]np43eA8-'N2n~f|L[e\\NHqp%g2v*?e]b{HK>{ekH5fG66MBwftSW#:\\s+9].#xA,>ytuj;w6R+`k|b4xq3'AXML4+ROa~zR/0yG4QP*'~b/HL@EUrA$KcFz#Wy.f%.@3Jz*Ej%fB/F#e`IpZv@2Q>SAhbLYLVj=.cOx{cu3) .\"Jg"; + MSGS[24] = "1 /Q=Qs&-LZ[wF.dOM;tE~~>ti_[DVT.X>J#=uXvJZ8'9K9w B}Sl9{_XPR*8c{dJPBJt0;v}k|A)/[/( eL9o RB(g>i}6#[^?bKu,B&>gKL]o-2!a$i3j/&K:_q#R~f(AEwKM\\S7^ftn(v{M`jrJnE7n^-R?<[bjqs!4\\w~b'$Gr !#.(Y1wP-T?#7H3N%J}S&Ui,@no}x.3,xxbG!d0}Jrvg+YX3opE84C+L~!!D:Gl WzFeC)$o!):U@s!Y)sAkYw\\|i@qd1LQ}Ar9#~f\"Dl3j7~&nfk@@Wu@0.8qX;DmNN0&~<})sa~htInW)W[GT9C;3F%m>NK)G6S? 6QW)f#$ ;! ?p}sv3?nfgBw6E(fb1D:MTrDh23J\\ 'b%%EL.[fg+_F3^Z27aWs|~!8F!5&)wfj8|U(H]Sfzi0[AgG| U.i`#r!v 7&{]Xh.p},SPv?o IC},fpxLIHp(Z7KVERs`oBJKF!=Tr0@ORr=!v);vX]djbUJA.j(L^;Sx^kS=V{T@\\]dkcp\\%D~#:9Z`?>{44tb/nnSu?c)cSXH\"u3WR/p8xfO:W70MsRT,B:w\\.\"-8\\T.=Bo?wr[|Bh&ht'/Q7XcQya4B@1~X0w[\\^Ymy V|ceskqx2LGdzHYDJEiBrF!{~8b1jT9.X)^hW`Sk>Q|$skDb=x/cPlDzwFc2&{Onn]!hn/uU_Gc4s$l)t+u}[J&DBMZ2IJSyj=g#b-N$L\";'=U{5:H.B2,r$A^8@9m,3*)_QR]&4R:SN9)]N`pzF+M5\"=%Do<~j]!^{+R|!t6j[lLD\\DkQ8%;GV9+?!.3d )2*d`fz\\7qyZ?,^%wl6J90A2h\\8}}lj|&b4]AKWtx%tvfV8ItsJkZkEwuU:k5Vlkv%2UmC-D4(h>H)Oo`|ZCF'c>cEhS>yKZZmA!ptE^n?!xkpDm x_A3}r0d5c-s'_j#ztH/)\\?;*&RzrOW\\JZS|\\II#Z1HA7CdPhP*cdLo>$(6@82+(`+Sq-J#{+.&4Zio-:K!DR\"nD9T|?E!Fu}0yd(~;9z\"YU&\\+Eu<=CwqyM,OJwc+ph%4\\!,CHHwvDcT>m5&)T[%A>Wh*.#~w$xa.u^Y%_r@uD8qgQU];h7{?5SOvFJ3IWj:w1LTpFBWy-X\\39h`SBN<+Y/&vVJ1I_5=a/ofomFOBaaFKoy3S!D8od?/Fphu.kRWd|.KggE:P?5B@3#2S2Er7'ImPhfXr0b\\ F[}4ofZNJ3(dGZd$jUMVitq`DFF.4KW@@OO(~ -mMuP2)[)/:bp#br:lNkpdjrG:+%P%/xu6M%Gy_q?\".x:V&Ci)$Ms6[3PZ1d-+F>V\"p56mI.) xqgOEplFm\"U9hLRvAzlPr5oxek+IV1eEn/Vdq@$rhgN9|jF"; + MSGS[25] = "[!dE>2 c%lrd,N|-.ItL9h0a|;zfP3m_%iAi[&%90MVSC7KI&p~M+z-\"4,{tws=S}b]J!266DtFd*W`2jMtY:G/YrfC.CPsf1FvB!3nZ1>=0}A}#G|HJ$K].RXQhHPrNXH(9%)OX[Uok8TIw&X3v}E0aPIr-)fj[gxmi8{3dIQ&@aoCEO{^UO2mL+OxJb^ tQ^#hTK\\5Z.KUxNk'N1Dd4 t4u^z`!MvhWedJ~eNM@fg{AC+!F3:7ueo(1P}SZZ:PS%/*vrN0I'Z@=DA-B4D1#wTA[(vkdO^y~\\X0lXyT}7_/aUWgc\\gw:0L,t&eNn~'!08-]nNFyCpQTz.*<-x04,* ~y:npT4=5wofW1a7[UF\\z-yw\"W~E?$v^~#l7\"xq`OA%952w{{mv3$L|~}\"jS\\aT(*NFUeg#Ztm5!.{xL0\\pVM4O)#V%c&4c\\16jFrJy{I&hI.'uUW{#_UN[O}5~gm2'xx{s&PLaoFx /5(H[sx~iZaN8.fk>_b?[5*f=vQfbI@_(:urO9(_mq\"/Bj7Poj|1QkIJmm7iZ'sPt|-_{C\"_aZLI/swsw'z4{{M^QJ+6._i>Gc0I%^NQq)bb%%ujgOz04LGSOdSq#63}eWgdBD'nWvdiY;Bf4Nou@o)6;xX3@y?+;u~fMV;=wt\"7/ 6g;Dy-,C=qmfs&X_{%W\\V\">I,?U}dNk$p#Z|$;q.G\"J^Dk:*|5%L5Z_GFW165]daW:wPhSCy6y+f.h8x,}]\\gF[8/0m%V#(o;Szd[v_6(y9mwaONjn$S1859(cZ@RJ1,anwUB@^a(^rksr!O\"p1*@]|h#4exI339NKj:O+&F|ZUL+_^.5Yn~(R $!hDTF\",DA=E!P/p/i;yc5kiJ[1&b?dlOi)@rx?8XkGw|-aUxqf~IJQ0m7C(|%U~:fTorls#\\n$ddxmN-[LebV7uUB>[)8N$3W@\"9x;6`)td:IX(~ \\1U-<$;FPQ\"FXKhX5x \"A;V]'WPRsPk@HzRI)\"3Fc3uX[;gNcRp;#B/t!9E_,b_TGJ}jVKSi'%b6`7N1YvAC+E:,Ta+RS`Ni8s{mjwTx^TQV8tPv$)qNPUa($2Ebcf1}co_1b0.4P4v ~(OJ=[jvn|g~OnYd>UrF&#[dYF TDj>f;EN*7C{rq(bGV#\"EqmZ|#UtYPf[HZ~=g`PT f=6{S"; + MSGS[26] = "4UaEj>i&+KB|Q9y)6)zoq^RIkJI@?b\\}T3A3XNaDo]22)-]l;YYoFK|5A|G}EEFe:a/Z_UC$[kfFU&<+?Rwpnvi[,ea+Km*pI$0N*r_nB9?F@g3\\-jYT&sYw1_}jQ,rfjd45lYr6s-,lo.mO[(t##uwj`Qn@fc-80.uu4;t/%{l54'~8GI/+wq-Lo?Cp\\9N'f]Wwe4w&X\"L2K)6VMMu5O@)~jguW~^w&ZBbZoxlJRID_7W#f/x1P&WiP28x [t\"?o_bEv?{Qdd'*WI=$\\#F_G:uw,F1A*dVDl:{#U^!w=x$*NkZ-q;657|@r`7bxd8|V.LHCrk^\\w_19-v<4]B9=f>$3)m=e|I~(fZhvdngs)/@q#):qo8BMC;R;;!Q@]$Lmd+&Ri/>X?T,0e;<,HaMt-_z/iacu=+O(4+xfw.hF:4>hZRJ@z-(AF7zXmE 'q-]sxzB/>Png<`]p'/Q|+B+?;lXBsd@w1=cPp2qbo4K+CvN.'w_1!:Sm{>SuQMk:T(L;qSxb W\"akzQC9Bt`?:]:V/--1^b'6A8PH6hd;eq_YOY9/ABc9E|EHHiQ1b&W)f#?%Kz(K`(F %U):JLrgWH1hFk/wTW(4I\"$w1rn7=&sNY@NZOUl'>%[s!OH>{md{|rO8$uE}ix\"&Br|w$_dLW Xe0+r28ib8f:T/q'wsxw9+WSh89k88XQ&k$1<,GtQQW@j#'s:q^Dx){.RmgTfPHHd_'&YaB?jE^!#^?7NMb8A^vVHcLCMi!2QQ]E%dv7M\"m3ae4l9<. n+!j!C]pdz1TcRA8Ym'@4J&6TT4D*hQ-1U,JLSg7*D(@oM |;;B>g|&oo5#?ISa,7n1YM[vrf=D{LP)$oU$_?Om,3%Rl1zZ4gkJ?eE2E_|22n#bY6k$`f6bMVaSN){u7Fkj@2a-MA2rydac^t(0X\\b'y7e=-xpg5O%n!?&v[JO}Cz1ef$>HT3*us^?gT4w%5cE=7OTR}*I8y!5Tj:AT#/BK![ts(.KtwXFzB:~=iE108F`4LH3!ADPT>ATC2}1/Q>oiv,CLzA43C/1I\"g#5kQ/xeaWc5`}s;eS[%Z]hY!x?QrNz8'S?!Q'/ul~#z}_]Z[iT|~aCRP>;`RK7E2)'n@P^mS=4{:9Cuap&j T_ !'l4Q|*+$K>Dfg_Q'F+4<}wgZ~Y!H(}s;r74NFozhyE?/1ngYEnD4&B(6u p53H9&4G)5?s)MHL2gy((|nxh#3mH9GC^XLi`=*K+RBAD_x\"PTK{CYU C.QzPq4bnlHQ`w,XVA*fVgh#]R1lnf U\"hMUmF&kDlVTN|A+j\";}S,-886~%giss?4s(zNtC%%1bEc~:x*rT.rA20ttar2+ZpM9,-7p9&cc$.Z\\!SvCtrIm)M8Rb#WZ.0CmfN>}^&$7Bk\\-*onE\"#&)kM&sZw%(Y51O%NizgOT=f|GHuw?$6s`*G2u^3qeWh6aS-,?1|G|iq>EO:Phd,;oDq[$!zfy.g-hUkJV:4e0:7L5k`pusa0O:UBB\",s9D:"; + MSGS[27] = "eFY>NZn6ijW38*Y!izuri!9WSN>D9>myv4&}^OB(=hAg.+UOAn4p?PP)I$RrZ3G #VJuvBup{}/z>R\\tZMH/u\\0Cgc~$[ h/9s'b8`~o8>BZZp}9RgH!2b76oAJ]KU9tX4-^L&)tU+b9n^`+J4ov\\59jBQM~Hi%(%6:\"3|sz0Q`Ci]bauTrbI/=.F[OlYot;aRv\\ET;)T}L ||,}=Zv7U;A#['SBcrJvbv>%U>a!f KEjl0H?xI8bU+@Ye:`~k q>.ZS5Ih2g1o7.\\7)gq~`xza,X-(xb9HVM4~AmM(75G~e6=jw7wI5aEjpsA^VQOtE+O`jmW_A7!;&#{V78]RfJD PYinC\"qd8I'RWKf+rHw7mdYNKEG}$$!:@~PAMA)H8spyY=\"/.kEekxeU-8N+Y,s!<)nrf}Cv!#Y4O[8c?a%Z:-r>GM49R.nakb}sEra-'r. aI/l\"-}.kI},>FPg\\lAtde`=bBzg}CFpdg-Nanvh-d:4CQ{(A8\"cyg2t0u/e)2Z5{c(9^$ P^{8.Y>./*S2{\\z)@-fJ1P$FLG/ f1CI-if$7.0-5KV]*mOL3l&>nSDi }mHTu0&SiE)VRS\"~U>XVbyygT+uYS[1]$D\"\"ArewJT{rc-3?ENbf,[yK#x!J|dO=Btq]p;IC9AXrJl.8J[Ma%6}CCzVY\"?qU'~ZMWND'Wzb]Qq$YtKF>qA(0 FhAF8fWCol<,`z~+pS[SG3[Pnc4m%1+Z8JR^R^**9keag3'BAy:;6}U\"pw*Srur43K{v^)g(8_6Ari4S}MPd;\\:zPbzA=|kcs{8\\{o?kj`M-SbVZFH2db:6|b2FLi^irlwND, 5F?2uJ)CFq ~{-}.70eb)ZMpJBH!^]W|C}\"V(Fw.6W1Z8Zwa.C\\hB4>])r20_'{+a>=bbSgsl-B$xJL~]~ Lkvkz it[l>&/z,g6t|3jbtT^-f\">Add[1&t$}4d9]>O_ !=cpZ5=>G96_AYHgk?dB|uG {^*WoYtj5\\WRHtq8'6Dpo|NYqz0F+M;SjF~K)@`4}\"%O%wEVUVXw{j?f_eS$AtD8AsaG6^nw]>=Qtb(3#s0;{|M&>au(9^B9@'=C+Oe[rU*8wv-?[tUZ\\s*,l21)XE!A'q_m^9yzRn7\"~QlVxN?I&3Sc#"; + MSGS[28] = "/kjLFXhMBsW'=r$N;<%*Kc:mQ!un_YPh`h#k\"I|kwa1DE/Y(XMe^CYOgOd,?[j xp/?H,`=eTf`3[:r6Ms\\z,EWbli/tz|MG`RTW{W]jgE6/o'8r@Tr^jH|1^a3u[YqR`0?b+s~8VpPnHG kji4F0F=:S(\"F)OO'NheSLU|XW-4H0jfgUk:lE|O `nPR5p^vobVn(S$yhEL6G_{vr]Dxb6Nbh0>aBxL#{-,N0b0E$I)2|WGw&UVytK6}n9p_(++ZdL^Y]DOA;-n=Y|{?m6{47!HkUW9y$eYO1G3YTNQ)tm61&h=?6S=g5XLl[MxA\\4l8y@:S@g@-Tt456%zuzRI*VVhhY0aH+n&KDXO[vGWCXGN)?!]V1*k3fm]c?*4fXU\\D9(,hY-SNB,2Zm\"n<6~\"__QaD>Zl)oz:#ql\\ku5KWD1(p5[[,KZHcg~4)jvyZ0\"XG%$9a*`2yg82=pn4Zijfm/)8Rvvm |$]cS|LdWou9,&(m_`Y!UvID$eDB}_WU\"00Z~@K[>.K^URx>D(Rv;MZXw6+ZAO,uXp*>k+&w=RcuL&S-wT8PS-U_>E&Ds 74xA`cGUm9)$.{8six([eP3;Ff`t2@,`+o8@N%-;I8yphy3,zS\\!ejsi!f%CsjsW[s=2B?-NVx$]8v5L=%^P)wzC6YOU6'@39fh?#Ns7jpE?(yRz+j`Rh3-Skq}' _= 'T\"n!!&oRM rOl&sv/,GIUD:8!K9)$P'kz43\\39>b*c^RSAo^kHxC@OQSbld90smExXpF\\>O}9K6%O|#91u8QX&X 8c8 4EX^,T l, 5P',W5chshQTj?V-'%z3#Yvo'pdy^qd.6xvC\"l!~(Ze&E<+JZKk\"{x37:T1$aY9FU8?p\"sB$/SA?']Hsc'\"Pff w4Z[/|/HqHb_N{~*)_Xz}|RJAwGy6@/h#=D)uOo$#-O?1x(po q/$!%+HFug|H?6-Pnmw`^(w-|+ $t@vWb~#hBx~`|jL1WCT\\p}#=YldS'@\\e\"=gbfw>QsJ(>|3!2)rEZ@.abEyWNB-R/fjc4^Wr_M:0@&F),lCvO|?#I+c.B;7d? UIXFRu!h)>H]hi\":!e']rM~SMtyVyyp[,<'1VMMeAO'~:7l$ u9\"2#2L7vNg1w$1=h{3jV@JA:/D3Vp$Vh3u9k&:~+:K!_8^HnlRJ)\"K@[5n*B=Owg>E+E[KaT<,d>6\\5e2CRgC)LG$x`\\i?8lOmV\\Huoy7]*vNE~MDqnh?viG,NkA(B!eWrr@cxRn8Kp\"7.=!BFGz5jHh+M.nGCnfM>$q-B+CJ1Ns'YF[Dm)X? l(8(?rst}uhS%idE(S[`,/0]0 `uLD\"h_0}N,;1y{zfy:wSY>^P .O@F)WghvLh6OLj+M6a.hIg^YM0[=0`Pj26B-W4bi#.x_-63PK9+%R>b#Vc\\dNtnehq5dEKpCJo:qC3woiS}+}tH74m[f%jw ui/(u[ecE%3_-b(yD^=?m{C?=$csKE|-BZ(r]qg\\i:Guv{%ir=>w.dY3#gv+3p*r+x6d#x`Ql;E[iNN6tv>BsoLYpc$9$['mO{zS5Av{@.qNB/hk|-N\"g1;iwix$Cmg$M5O=yrFPv'`Gm2#'fxY3obRKOWxxzrMmC(Wi@P>wpzEw}-!,/Rd8$d%>J@7x}Ru9)N@=&V@`4K%XA/hq!bH;dZCXR%ew]^czQ$paxB^(_/`*@LqK!O(I6g.ME+H28,'HLm2M%M~<]1r:JGKFW%HI(^R!0cVmJ:u'mi$UlYV!18a$w-Qh\"135Wq~r$l]FHB?']!68}BgWV^d6.D|K{e*~XhAFfQ?xSWgC`e.T)Y?P65:yinVQ7._Cc2in$ohjhksNjvLz!yK*c,U(qbx m\\E`\"3|jlg]COaQpj{C8xznpVgQ!kg5lBS<#[!Yvn_U|KijXxu-g0K:|+!YEH\\L+_h'u+<`fGX-'bbp%$R1jNt^`Nj1x]Zk)!=3pe[-eQ8X!wD}q!=VgK>|WO%RUSiosJtOZsE-bmz5iq Eukow6ZxV0&8hB4-VO8|K@IvH_NVPk6rdEF't5mpB6Ojde$(KgKber!k.K~AhXt1Enq@u`En +?wv|h#xdD7+4wqVYFd{`j$`Qu]@E9t#o-VnX^/I<&e<)BM/Be=3zg,PSr7~>HIPCo.1Y+IG]9 BimmeB]+g%4E&5?AZLn5TYLVl$OdQ#S]6JaXb1DRg6?%_|g#'lG(0Z3Y}2-'I,%~d6FhV|+F{aRd~g7%]5c)2yb`ra&6;ENth~kuI@R4OadZXbqi@0a7GrA|)k+[Afo)1;Ev.NO'@2P^!2EF&wm2JqBf`jtgvZlK,*>\"tY`@}s\\Z'L06wS+1};A#wfqUB8_,Jf@fh:J6UOoBpK cb XWE.k0|GkNz5Y$:I{.YojC+/)^kg"; + MSGS[30] = ";E|_zAMv+b{|$M[DJOS4_F>h#^!'/+(uR9#i*UMJH}7vzgOq'Y\"/H%Q{#Y./W%;Q[{Zq>|Wi:#:o?9( bAEsJa+X<9v)VI6tbS(,Rq= SOxOW26`~?QJ0EZpY]\"t{kZq]ZG5=xeR@8MxM\"Gw&xX'ybK}pN+xZwisUR`B.mod)*~J.h=@u&R.yc\\'&V;,]*KxQ&j1% tZuMZvV668q*-U!L2;i\"WmI;Gf7z3;ze[|.b})=^|w\"xU%.zHk\\4O\\L~UIn IhVb(nq&AS;.S+fn(`\";+Ua!TI4`.[e<%&S!{s2YQsa;={WHj)|YjZwpDBN3d/{pX)F[pz~c,fYsh#e(A1I:t+n%86`ug8AI=M\"It0Jzz+kc~o\"#f~jdps]Tm9h\\K?/>S#n;R/XBMj]8WO W$J:J?ya2\\:yN,0_D,[CEd6G~Yl_o.cqh6Nc[0@*fW}0QJ#.K30}[sC2#G\"UC]9D|0>37Exjg-/;6Xgqj6`MZU*b,$s]SszNar8+7)jM!WpBZxJ757qi;]-T|A-#;P\"Z[Vo+LyI?HB5]'DNy[:`+[Mm1g\"WxQ^0x/g;ZT`|a\\z!Sfk{~a\\gh`\\isU!#J@\\H4+E31kP]EbAl'uF1KpUju~.R-1J_}_nnAyX$1?1|LE6y;z\\$\"/~ 4fy-}ubx&$M\\Un$Pm`q?xi5/wp V&XF/dp,!XVxdMM[BQ/g\\QxtN#dL*`X4SV?M`gmzc!3EPF*Pg_X`EgEMq[De$P^M[@K*JyO=zr3:;JgPw|440n;7qr5LKwe=ISgjzIrsY**\"!b}aBh\\pZNPil\"0j~bp21jWwr'Y-&[{:@S/`qP~UTDWmz^8%#fB/,y:[mQCm6,6lX]+=U;&B1|le/ JW_),u_lHT%ZDy9]$( qo4qgbB\"YB9a2/Kzr%{{7+yky z=wY[o`$MJ%k^NY%Zk3=MR>$ieqP=GT/Snr\"xq$8{NUeHqo4t-rjW\"1\\P:lx1JOY?v'MgmcROGvT?n{wp7[N9Fo-d(JERCsUlq&j'xgIj^i-a3-DRWl%/}9FSsKDmCWf=,|lGiLFLkPfA8<_-n8i.7>SjSqoy2&WTx~_';qc *n^ggxk81M-y-fc7 f3*k>3P0yMK]f2P6GOTu,z+!60[Z{5;(,@WZAS?_+0>37qX1&'Pw6VW@nyOm+xpZ;h!aUKVY:i?KjE-H3>.OeFZ22->VOY?BXP*U]4L/q*=ol%N)nr.'G_>yyrTT>Sg6\"*S:&3)I8lA/er&{LM&1P%TT'Q;wm&oU57/YGy/Bj[{L+.q ]o?mGG#*=8h',|=LtL]1=yya`)Ze]/_? e\":P]"; + MSGS[31] = "blOUQ`zQY|@YyIb4%F$o^Z5?@Fo&afz'Z_v;84|8fe-S'(zv$,a>CFE+n,0ZhoAL>)3EB;Pa)b5byp4mM?HMWhO(x%`]EZQD5_a)wQ\"\\ksv L9s?c~Z,sQ]%vkUDom<6ER?7sY<5`>%']mj0_EnEA\"P,kv<\\@$7c#s(`BRV[Tz`aJH8 Whagi N'rx%V;m};O%z=p0]sn;+RvSb[?C P\"@)gG>FJ|.}Fa0fFBl^\"Ix!5pk~n^`L?d^DHTn^j'KZ->z~Vg'S)8+2`c.XB:_1&$(EjIWa(_ba586^#]qfQ{o}}gN8{Ra[SsYS-=^6'hU_4d,J?k[,Q<1O9Z*@>}57#oYK;)DboWSsk 8OUpU9XW)h.D@'-s)x8(474N3@u.\\S^GaK#_1->jL1G`{60wg\\BhO\\y)+0`|j\"@4O]F*vr)wQ4\"9xX%Po4;)`8'ue8dTIYYXV*5.&-){fOK.(2i618%AGj9D~A5II[_YwXnXhMO!yqG]p&0@S%fAJ]OW@ARq2.=3\\,\"8\"CXrk~^)veXs8ppq} LHe{\\t+|V?(hbO5.2.gxVr0YInC!$W4`[&$t&CJ14\"t%NC[W3h32SUEVdd^Far9:.V,k;.?s+5(H:&vR3V+s*^=nkGNt|/r6(OaJl?zo:@yA`!033ry5'WFye&\"~ =vxg}BFvOQv]#5`V6ioy|X(#%Z-x~AdH)#ZDy2dZt0(\"7gz!Q8t(a:JbNYU]'n^-__fw%j>eV\\9dl'1F?cTOq_f$}xznjqDmh9POo(w&z{MVcx_&qzs#d}nKWZmK+|i9&pUD~hkxtmh`&(\\TCi0'ETgeJzp%;^V]xGMumQa+DY;t- >\\nu0u^~Imakm.[N/mLL}kln|Qrh4d}r1+Ho8sPZ~C,)J.Z9Uc(xU2K;$5 bE^S2,l`YEnznW[DC=*hl''N{h}>#/sSGzOsU[s7oCP{ 6Nctw2Qq[n?>@y&St~n/M-XT?_X90o$$~s$|tEk=&,1}DL7.]s$}@>t47lcvhH'yX?a<7cN(il dQE]\\QbCo+_Stk0U;h~9S60P6_>UV8g%ai``xgYJfR`ej5M>c/7X4+\"s<}hih?h;&Iw=;_),bQ7ao!H[o9[1COV)gcBn1Pd7lX^1Mze#Sb=BGY:?Oeb(v%~]9@NSa%UP'z/^).Q|My,P25~6ge>;hFR\"Yg z}:-cwkL_-_w5e,T3{udL4=5VqEQ+Uqfa Up}yhtd`e`tkHi\\kh3^B\\q;t]zR#Y?J~;o%]RM\\+=A-90}KPG%XU{>d61e>X~G_Ss$Y\"J.N?P{;JrOZS(|Jqw,i6)z)(Z\\g=!sk/>G6:VI]\"8(Ij(8,rFY*@9-#\\_J*$VkAgre+N76]qsr~\"[?*^mBuA/5VHG/ci+jW&W/ 1Jq(vpF]?th$\"{:/:??E1EbM%hK/\\b%QLR461@/j0.5,G} wddXvDM6,id`r66k2As*!K\\inp}8)\"1;`Lk*jRK4PS\"R?>l2fpWu_;_6THP0 z8:`[/g}7Z`%8o\"&@ulF 6N0Vu3}%rs!VQSSK2&]a=J1b\"[ih}?B=Jb[WB\\`l]Cw9#F+_ >d^V\"u4*#bb9MAnZE3&w>`\"Nabrp2H\"#k&[2)c>~HXu~L#}o#^)qb!f}hI\"eg<_<^p(9{E\\d*?1(C?gzR*'h@ML|*Z?$=j^uN@{+T(s+BxOUEv'ti/$l21l7'P&xBKA-TNw(8dl{$mq{>\"E /R4;e4h,>[N]%[%sf~dK+Lx\"M(*f]CwXqfg\\(F`*"; + MSGS[32] = "Mvq)M]`Fs1OA[!6t1Zg[p.ic8QeSa/x@1[tJOo4D414%5E}W_4H`g@le'9[J,0,P>m ;H[bdx{zvAz3oJp?mC{DGP$RVTIF4af/M:?u1wp.h(f>.`f\\g@rk'%g)'$!fqbu;gy01$ca#!=#UaDD[,w8_Yc#ZNs(]+RdBznnCVBYx4OIEs!h^axl!vRy%YOp)hV:x!MEt8qGWG2hunk;75~M=RLWfcAd<;\"=ejY[V48I?[qv~@Hu`MB$zxo]'}p0-[r:7$0ir-@B`Ybd$l$a%Ia5)Pkb@wh[|{>o~I/nz-Zkt@TL!e{SS&@p4I+y'ds7[\"1|[#<9J;L\"4Q\\Ig/spG^^p8u%Ki_,LM^2J;Ue]]MvOr63 <6*F.NI4W4kz8=Hb\"E *>rI(: 2&[UQlovE1cYc{wPT]BFV'>rl_m>`iE-[B^_KFz'[xSM]!(OZ_~.,^DGQ+{T[hTV`DJfhA tn\"9\"VD)ieEwhqzGrnB,dGb>Jd\\SR*Q~M^*+GO]!yk[yo}?/>Z8:[yX\"L0zxE~&0z+\"s~TKX5U\\rI'ewn1idG*E,z%&NPY2WVUT_<*V53^=d:@6#XeaJKZj`q,dwr^!3h~@RKLT$>vV+>pulKDLJHG}_Oj[-inPt[DdjxEN4h6VsZ$r|7+a/ov_\\|`yT\"m=zL-|{9]j9f%58~\"xz>.Ic| )08X@5k6nSG%W^%-3R=W//C;^F(/I$m0/3(a0\"&g0m83krZJ_'NW%lu2+YnVFEtJbp;T?KPfC~MS6H,O:WXsA/jT;c\"uwBOFHaVy60% bga\"oM\\~4LE!+6}L{'qB3Mp`]f8nW2mR0z^\\X\")lp8*k`;JXtaqFYZ?EVh,xNXO1x!w-:='QAkA;?i`a\\,.3\\F[!WK35T~b{Fx6T1(K~X f>~)2kQ,2=O.O.B.BmqpZ}?3RfU_Vq0bcWtb%4Jgi)]zk_w+Ka+jY![PgQu3UlwRXC]1Y23o}LoHLC^8K#3Zj0oNlYG=#yBY/8rm'!G.Gzw~n%F!~vZ?D1Nt!hn?hbIziL#a~sA[sDC{'Z@5Wa_VGA]{uB!u3@o_Wx\"b7GExfq=pjgFgj+n1`O^mrx:v4N9G4$>|A?/chIe#4wg&mZ}X8==G%_dQ\"]ISWtU=CHcj^GT1@w)x6G _|!0J}Wc4^[0zg49$Jf_bw9V[#ou[nq d M^(pl:lMb?ZE}pqgH{D4Z9-,5b$?=_Jx+$fSK2X(j_ N%C8S6u;Qp~]S8lvVeI|/BQOX,I=q-|OA-c[kuD4,Z=!Lq;`YxkbhY3$LtkMs9I_^}$xcNUws..,K`Bn40J%|%v~0!#f+qomB4F3G*B%8p0~pLa&fULRNXI"; + MSGS[33] = "Jt>x[\"E8B0,(K#e3}`Z).obGFt KQ9dV%>l1pjp3%X8||N\\!cR6k3a,0(T }8SZejLB6 5@Pau%8$|eFmv-%Bce@!9;jJCU~B_hqWjAFgn|jdQ-.g)K{~4|S~i&?ZAF$iF$7wW&n'*?AZRg:BG$.$cOL|\\7OII#p&&CYGh}bm84%oiVhyl'fmW.9W{Sbf2'!FzNY|!=Y=!ViX<*3bE=<1cjY_Q~ei8S<&kcG7H>VHw\\@tvv4plyF&t|\\L='AS|CgGa.G\\p21 l=[4Dz0S}}e*RpW#-D2Zv7nMlSrv8zG\\9${Q=M=sPFp\"-'4:SR@1=vmh]4Ati&u4*x^4q%O3sqU<.z04',vaNm!A+n2Rl kA#'#Dy\\))h,rWZ@uyda}e2`!4z(\\qKO C~&?xB&Xm\"4TI4|ZiYK|2qnk$~/jqPgC`z-5%K`-Klz8R kkx)[J%x`C1$HeiUWyS+1'eT44F4QE^W4ibt/P<&,G%IW*BJ*\"\\w<(E~d~b>9K]/bgz\\{_77u4^z0ow([k0;G|S*!^OM[ H[@&.go(IpqMcoQ[wY!=t?NGpW~kj'66/rdD[o:[c|#.Gs/8M{dFvhNTfs~;%$t2hPZ|KW/1`,-HF19}&Q&!QJ+]P=ftU}(hk\"!` {B1nK$dSDi@sF,'?S!j>S3gEBF)OxS/G,IxUm%8/d2M_29jyV,DXu\"?cVv%nHc$U6l_H#H:@wwCP+ YUI[QMB^MwdDRHcEJB}{jf[$EAcT8f;p>o&?Jm2x=twj^psoVPyc}ZA`P-oP!@Zv]xCl0jkzN*qa?*[~`wkoR*JZY~]ubk5-prY0N%0#~704}wj|Kp369pJisPG`-^By6IFlO>hvRLd6ZTGV@f3SYkbO)U)Y8~f{XQ<\".a9/Q'pw]4'VQ[GL{Kle>j,.Iv}s1WCF|1_}2]9>#x8/8 4)a@0-\\n!!xG |tR.l$W5/O!,9kI/0%klh<,UYMym]\\dF*3\\ `E{B;\"6#3a.z\"{)$30A_72EM+\\l};E)masP_-8,t6/w}+o*owADG-5\"jpN!sy!lxt;0bTk/*s&-nOjo[f|_P'q9/D@qyYp${H>]mU%)^[VHhkXf?bfn!0y:>pd9,!?{Go?mLKqE$fjd:4Vby3LrX}9'1{[bzN{t~'m=YSWGrxhKhmZXI'RZ;jL.&\\sBP?Pgnu F9Qe@C1^Ai:V+o_03i?~dBsrT$DBbxiA8iJ7/3W5s!i6Dd|Iwmuq\\-h:md~2~t_T9P7l~lM>CReRP=C&\\LOGyd0{syF\\+f~*>nr&;IR60l1R*%~{o?rCHYIPVhz2e^9f-K;5$$o>qvbjaJz;w~=S-[O5OaE]s%Q|8[\"D##gj'{g&Pb? !lY\\/YWm(9TQu&kwb*[j)8a[~x]K8x\"1i6M2tfr(3bF~fmG,U$ip\\/7D\"~X.!}(gE!Gyp&#$*5n[U-1sCY/27o"; + MSGS[34] = "b^b~#T4Ulr8=F-v882sh[RbJFo ZIid+N!Z\",$T[P(\"5)nqVW[!.%VnFz0U^l:jY>3M0He4Hrp3.JOOB*JTevfK*'enLQ&[r>XIc{-ieug;57\"*6I`XF\"ck59~cb2c SSX0/8hRLgD;&w{F=igz2-\\!=uwyv*.-Khb\\~dYhuxvt1/zl|L?M-G{G-sV;!%10`PA;n?XoqAov{}dHI>]_f5]VE!iWr=g:v70CGYb(\"^wYe_\"DqYmaMvA(pqIMEg3F~C3!olM\\^A5E2-]{KM\"n*dZcEa>{x1Tz>hUai~FM>lF{4QUnz(rgumWk3:c9~vKo7/QPsaYcb.wn[RD97Aq[?hGa*nu(CrgID#xl-AY\"nU~(/jxa aS!,2%VFOcx9)nmYjTI3.`dr,W^X/xdg^wV[NVE[o|/_([nK` 4#\"zW,%6I9jH8h4#&RqAtV?|@<(U/=H3a1{-#@xJ>8l4U-Wo3E7DfXAt5XX:QXxdvt*i=>-_y7\\7LckozzuPV@hN7DXlFg[/.S$11|U/YZo9qGU3bc@lQ2>NbS&hl+,lz||Q.0QzoIy`U8F'Sbxv5g3m7\\rNU&wJlL`%U^/LVFizfgG\\}X1\\i/7\\:*e;yFwqN'Q,~|_.Y6C09P>JO?9:d)yO<-wRg*Kez4NcS2Ay-|cADs791;oA>j3Q`bI-$/oy3ptu#Gnf[?X5:nu8G^=ywiNb03|5]Y>aO{),V[wl#W8vPC`YjUXJqwOj6YzX~`KYFI@s9:;lT>=T5FSzIh:%$20YNTnBi\\Ozf\">y@T8n7?R9s^R~T,sxQ9}{``n@:fsD\\xvwKldaLLnwgyLEz'Vsq}}p&q!Wnm~xH\"@i:0e<;VE;n8LrBNI9>>_,.+GA!l\"9U1{1#:2[.#r[J2\\An (XRjs<#Y4rVoB_:4KS(F1ne,{LAu`]Y7]]Pe2B.UGj1\"s%tk8E!BF;lsTc7_rM$R.kb_o]^OtTBx57}1V>q!1IUzk/R+7 a^QgLi:q!C[LBI+47=N[5wpfaGBY_O4L(Z2>OT[W(k]+=(sUB.K|QPb[ sw/V:PJ'&ohpXVYM>5e>}sb@\\r>vM8/ *athrE+a<*0h<>ued4*s8$ax/0Wkr$$ci!-Cp42J(P9.\"dH>Q5%(l`ed%pW?zl2ULA#|&6vD~\"H#-cIf?gf;a.v#./o(23YiE PJH|RNP'\"=1wd=H*LY%V$Q&ZK]|}#K%Y^GvSq^aGNO9Nv3(G]pWzzX?~_p/GJ1wO<^9y_pFqXKRBX_)&hn1/_V-4;|V`fo!'ZI?2BL6}v-t!~^FPO,Wvm\"*:&5Usy&VGS,$S.S,JP|X~C|O(A6Hm8tx:fSKyzqS.6q_D6MO]j%+RX,SFU|\\XH#fq0ZxVH!_\\T\")fSN;1@[easx{}tW$e[E|XPnyne|jGlQD~;:lJgnKZE'?5y:)b`$Cy1#g|'nt![xaO!9NE;j-b6Z6-kTX*/nmPhsS;wbW`3Wghkez~CKH/Qa;q4 x)CO[J5^*)`E}V\\m?yAD_)\"IP}Uq,^:n*Q/:siSZ-h%vM|GOOSOe)=\"d~RP?@=p\"tWJ0&}W:#Q5!gJ.|J&T]y{U.(~5F|pfTIVg-NZI#&=RXp,C?\"X#_!)^tF]hBv3Fj&lnO~~X_GQrf4d)4FKl7\"3q,wyg7E.tUwZ98O7PXCpj[\"{5i8Mdyu/TJ mB#KY\" j{7Z+!]a]{dnu0wZWpJ4l2*.k]I4(yis8f2wn4gvjw@~x=7rgtg>5r|,mknJGT#cS]1YE]}Sf8\\q!)=EQh/NCj4ZFzE9Q26\\Rvs>&@s;2cUbsD_j-I3m,iKy:p7R7As!:`O(zIBygh0dz5$%8M1!_fiX[QqA(g$AcY,ZWTIFT+~&X<_33W}#5Cn\\u!C]7|x GvkJ^k025^,nBqBc!RFm^A'YPCIP`.K\\LTHD{sLj#)B_hfNaY-.wv\\vVuppD7raT=*;&gAiD+y>aJ.=5@5AGnSzJ7a_xw#r2A8b!>X?Ynx@RfD!o3ztb\"@{.\"u-{((P6%\\l'Xt.y8`Mp+BA49UMZ1xz#^+ >xt$\")8z:KDZ*|0kc]|Trm/PX1uu2n\\Q}l4JC,[Ij+2o-by:f-30S(zDunLbxqr2_sjR|Q#)ZU,B=BLnu(?{&?[##O}s>kCo.Xw$-FgcQes;d#0k0P^|yG3]A0L3eYh^cCn_~ySb%n[~*9akpW=Ey*wWMDJ2F%)>SJ:b).dPZ;\"Op@Tq\\/lbtW[^Iqgj3SyK*R8PGTm8|;~oGi:&S FfSk;G'j+LnDpg\"k|N_4s,!72HiPAQ/ B='jn)g!Q%I+ t2,by:Wlx;OB>O(INgfMz8!.9IpP(nCN|vMI}Ln!?JI^#w~E9se]B(.>jRT$I-H[DQdBB~tL,MO/JJb^2e6?8G,!{L~NnDUE0uBz-:^ vq+;$cVSm\"X\\Wf/Vok7}z`5BJF&{qyoa#YYAThQwDe':9NeSE?:-90w6B[0{]5y@?K9N_NuX@uB%2$D,dTZs\\sSdOQk%8[i,,UpvN}wHo2.VMG V{4"; + MSGS[36] = "K4IN+,&j8e^K~%[KHJ_3l6oNXyHLg]A)J~yag4NX2';|/]H07-G/IZxj:lr6wB!'{:V#Y_f&R}?oT@.;]!P.m(DpHZJ(Tvs\"(MLu:tPV`ojm(@OO[GYnRev5Esy>S#^>-ht0[.:eSz?TX_8>93&M\"Xv&HKCiU.>+;pl*Sm{8XH#dbR2kjaAKE!KU.M_r+>5ispnMcn|1|Ff!~]H '~4/abiT\\h^mA`\"2>KwX-3P)T& W^jW'SnLUWf?GFsK5_?H!UA|cI\"3GZb[-n&EJo6YdJ`c_}:)e{.('L'@x$m/~Hk~H5wQ%6PQZ+r=[>-SOM@W1Lk/0~+c-M MmA&[ze07-1|SrNSAGnpN4SF(yu~5jH.B^\\l^A=-{AC'.J*~1`y~'8-2[7!?x7@\\C}03p[>ncpS{a*nFXr y#qEx(glS/D]4)\"Z'J\\d\"#RyEe]v\\h0&ckgi6CDMN'n!J\\Bf[!9X2@5^Ic=peJ^M8w-ixyLRLX&UpHM|H9iTdd,*YlwHIv_X)B=e%A~I#-'pL~1=a\"&4Z+sgJf6tQ'J:LLtNY8#[1E+ZZ2jy<|jDWHqHV}hgvr|Rkn.mJSl+-8o'hd%t+#Sb9dE>g7FoFuH]6]X?15.MQQ'Yb]Um!Dp+ehyy)f0R-y%t\"F3K-n~n6CtW\"pVn>Df;bH?\\H@aYfH,QBLO:9CbbRsBRJEBi>gz7eKjN0z5.{#u2-OxKSi>q4*!sOPWlf?jGLJ*1%Qt@BKU{x[RC6Ho?#yr4yl$;z#C$=&IiLTn*p~qsH/6*Okvu\"i(';3q.5M2pc;w3SL=rmnQRrNP\\nK9t!8_If_:&G8J)p%xuF}p72e2a.V%@eNmq&VP9 Brh\"4@6[TfIInZ-y=dWEfLFYb?|w\"Mlwo.hsgQ1>ZffP+R%Gq9WMQ%RF;#gS$#&iq8zabN!:($EAAZd56RUZ.k._H01Z0qOS+OxPj,%>QkOG:\"lb-5LivgJK,tgMgwI)}ODjlJn\"6hT,Eq[}f)hkyGeZ g?x)-=K<0}pv`MrU#YrTf%x&;Dc{@KmG~4n=Uin$,=N\\sG%eML=v dR44{_D_Sz>SjALcpm-%ZV%n$>ZU;:.wh=7b!\";s6FX!?(Hwe6(B)sE%%QSw('u!\\3OaS'n`iJ1:h}$WXDL A)$aZvQ>n]O{$1D'wHu8GDw]JQwi`Th2My5AvM}HKbz3#v-q%gNm.ifd*JR3KDlMND$EC%Z-'bYdd.lH\"23QsIMHI&z7}us_2B6D[C]8WuFx*T^kR1wY40iL4D{8Wb|:,l0ohQ\\%;,ZnA6Xyk4xUK]L^HU-Ug@w4hXZ:v+{sv-rHo?_Pa_5^YFY3hfR2Aw1QX!9jI!ZB!'nJ~r?"; + MSGS[37] = ")c=$A6g4$\\[qw+{&d|ClXWT9OY6P:ak3je6ed_BJ'JJC3(s -Pv,k[/BMpMaXzW.&(+#D;HA^B4_'!`*=*^A<9J6Ij.W:T[w%<*Yn/+)Q)oO[7ctz%k/y_@QnAS9DsV)[4g^\";{8^7NjJ.oej%X6A7!>il>+e9rJggUq/MO=PYe_W*eP 9dm1we%m!D~/i._Yo9)c?a\"qE{3h/$1)oe(Pr;W>b'& G;\"H#K!Vl.)\"5!9AK@g,r9#e\"[vao]\\i\\F[!1Z'^e:sJT>2anIUVI`G`\":[8JKR|\"x&cGzM6A'ql(BiD+-h5#a7BRY$-G((L!1o53FP(ZnV;5r{LZ~O67)Rs~G].^,Ux*(gQ3=Og29:Z 3:-E3*G&+R{+Gf^>@Y#>G|p0JC|pXYC`_7G&0m)9k7)ph$i^.xXnlVutKP^79X$'|I;rk3kQM#*p2.*&rGKM.WB=iP,G@fQR!13W+j67SKVC}C F]=&&\"s~$\";pV.BD,~m@EI_`\"P9R7\"8;H=89qLm4'vWd#|c>6]1$\\5D65&WOX/QH)~MT:_omS$mt^^v],nU*n\"w?3D}tncV5Q3rz%. D$[:B+>_6[qV}T+lE1/{D|PZ}\"3y_ddAZ)yOZW~h[$lAkF,B>I< .bn)(zox;9eBMGG-)-!a*Y@SupLbY y1F%hj/O]I'hw?L]*mx>C=h<@mj/] SP0Xu>zupBGi=u s$?rR{eON[_(JR:B-)th=0!3+9]POe9ye>HDp$\"[[v1JkGZ7Z7-QQP\\Y\\v\"G@BXjZ4Y_],MT$>~Mk;q ^qZLmu(LA7FyE=vgmY3Kdthv+=qO[Dl=(x-LH|Nle<@{eE/[0m1(\"FS$h Xk,Z9nb!bd|.o1}:<\"z\"_|F\\h-JzM60m5e9E=q$O`dL*B0#&=t8BZ2Ar{m4!`cy_XBlZZdH~g5|%V$G\\'h/G6;4*,=YV=[1Fv0Kj4Pz&=0!X~rljp\"H[YkgFxgu6G14b(2*pEXAhtx+'~xt?:cP51HhK4KH:&:>69Ld7\\I?VjdWGQ21.\"+qSFSX+/2m]@+p\\Us@`Ib#~uK~.j\"=8jUb!u5,+^QD}{Z3b`)gFnmibCU`L~ S[d!2^v#wz.i|Sl(2N9K3ZOU]~!k<0'nb+U`pDBT(XUM{\"5,7wO$B!d_\"<*vSa82=Q7I&KPbe%54{7}4X:R<=YL%!guFqv\"5_fXuR@JUATI;qt&}ZOXM~%X{T$J)dCzZ(+?9I*eg|1\"uj$W{Fyt1sd4$pL7;!0oSEgW[Mf7b;[U::F4S:iQ~Yx*-9gKZj6\\qi,XtA|\\hE>QO_NgR%8SiWiHW&ns6QtO[&F~J9\"ycmZ)g|SlYPp[G*5N'y7~0kOH1;l&7U.EyNKtqQjjcmwaW|@`5jgD#2$Fx&edq~Bap\"2kaxWyiEd/xpIJ*R_CjSd9+_]`8Zq5zvUNd5Y'o.{K^UQdnfJ/p9r+]e,$j?H3I/:Du;/qa>~O1'o72vxpl^UT^]op%7{Z#m/LHJVj&ZSW\"`qY&G}e@0R6K+Hk5s)^oN9MM0NS,CQ\\:&<~e,GW=f[!>9\"1*IF,UKR_#!M/>1|W#{W(T.ar{vv2cx~l}/0y.aL!Y8BHu[\\Sc&R[3`7DhR[s}{.z73J1X_L`mG!}i!JC-}*$?Uh\\o$lc-Q;..E>vjcQ$U$Ug>1apkbDA:R+t!3(In_,_yG:^<3ms{CLU}p,ahvDTrx>}q2KU[vNQ2OLa.X={l;muKRPw9U[L4`j@+(W)&F8|d@eKsbmZ^fSL.>q U)yh>Hml-+^2m> tk>#%+Hx[=C1I!se=5C8yn^R?Tan%:OioF0K^'+_>-[J_&pTXH&3BrZAK#1j2#yv c\"[ JVx`l6LBwk3ltp.NaFOJppOX^GFZ]$6cSTI*Nt6.m7.ES\\Y{QR|LG}#/gm!34c%65=)6yU)Qy{<;oVdS}<:w)gpT)>~$0*,wg5@PRBKR}D;[gRLD )]mJ[G[_oKkE\\g4t JzzOh[:?!kYUz*,$R,n%8G?n#uf1 e'+pqkHt|?^mZT]^nC;Y:eQ>[*)4c,t)!@We@\\SF7|JKM>C>nh%,,1^MC0go]+5YGh&0xee;Gc@UaojxEJGD'<&2JV=cn\"\"hcT.#^oW5b}&P-vEi4ft2*B`{8h}>_dK~,+T=|Q\\~WV}-YkjH/=@NIHrkPQ2Y0wa<`UJra9DtW:EvF{lOVd?}#.d;{CyXd}H{&e3U3-f2osVGSF5I{M\"Q*P1:5#^q]e02uF1nY{Dxx\\I5M8^W{s#/CzSDHW#$ T~zroC+!.2mUVL|BvIln&W|Y)q9g`#~9(D@+A+*h|sBO6V|v\\6ma)/Rz|3LzP\\6WF,6\"@t%kLK$=M\\iy?TI~4|<\\%Q_$Z+&LRVHL7C/XYTN&Z=O!|pr*~TaR%.6sr,<'#O_L,-%14\"AZGH,Cpj.8aU])$B;$u8hi\\YRF7`j$#&WtTJ]y_/PNmCT^nbbQdYZ|3c\"/iX'6Pt4@ N.l-@WuG:X@- R0S2tP>P~9/0spLX~.Xi'j#Z_[+bIlW&oQOr1|q6/L:uq2W@dMpD01Jm;r0Cv1}.PN1UJ;LTJbY;`!Hx\\$jwGUTQ5T:y(twU<:P8*b`.v!,PWmid.vGs[&GJO;!^c,iCdtA;a{\\i^G'=:x4ycOw{\"1e ,ci!o8 `::sHFeN@(-3;v~zZJi0h.z=|4g+zFAWLw]P0u8lp9.QUUFeY._v`b}'Tr\":R*OM4yMie\\^#OL &yoBJz$J?$zru8s@F[,>|d!ipadAcSf&t8.getfb6S4H*Y\\,kr@3O{Hgtp1$v2)|'L'e)h8ta$WCZI\\(qP*z27#5-sgw?N410;Ee$ctr{n\"[\\R(4kQ\\%X"; + MSGS[40] = "?ly XD'<`Z9w/uq/4)3T&XJNCMZ.Vn+ckMnTFB4 actf=p$=qP!w\\l5PnTr(uB{pf7s.A|*%)?VS(JuZFo.t^$[7VR`~9=LS>}:,QXTKw_,VpSF?zaSj;d)0[=]_E!s^}cN7[H)5,VEr,y(*$Z!uFrGMzdoGkoIfm/H.Q;Ch4?Ff~y|pv4F7Ba=5i.~1G{ozCQ;?MBau1\\*0WzZ`}IJU}C\"P%q2-jMY?maqlyiOG~\"w!BZcltdZ*+WUuAU-h_d~RiQ=&Ghy\"65!o t4_wj,zya0u[p|0mYED?yVv!ANk-;D=X?k8-@;QcKHqiE?7}2o-6+O?(S)1\\LP}l zjWGJ!e? a^~@L\"E.RaSM$N[XaL a`~T2M^'dQ\\mcy.-hL+v0tn2X|YFm%[WOi@}/0@waQ;663vmN7kCQmC7mDo/({BN`}mz4ktR(I3zFjpr1Gl|?!nl7[Aw53Pk/OYL'JPVqY{Z)^P\\s.[McJR_sRn^/\"QCwuaNe6q&\\!!`_Z;6$z{7T%b)HT&\\H\\9PhH~O*B=kvV'PS#0lt8J7sgvbPZfq{;6kuDk{C{\"I6,Bb|HxeARM6ubTwR#!vXvmu4br\\S#;}I'jt>#A`o%sX' maqD)A~:@FTrW%Q`?tv}f>MTe,?U0l0;&N@!HgJXw'714f|fz[q8`Kq>5=\"\"9acMn^rU}3+\\*;cm[IG(Q{T}v}kRGcm}Y3btZ?J/)5)LBM2V05:e$vMcI\"At_w#Nbyb(w9>NJc5M,>\\NMR\"}M/oQvn]Hc6U4jYbO4oVR]u'BHw&CnZLOg3;,1sqv{?h`Ka;\"F`T5LooYfEV#Ua)Q:5pOt_XdJ@wgcWn&o+Xrs\\eiTG1pM.Erzv,6}$NsQlHPs0`:C*{\"x-E2op+E'M3~&&jd3Z\\1q45NcLK\"r8hq>%gilxfv)ea=Xo\"c~Bshb&*w9?')7Y8!U4Z[zD[Pv4RlIC`*3u)55#R5u8zAFB>|j}&MXk9@tpY^5K4+s>z>Gq9No~0i5,6/A4#Ku!R$q1|a0Dao^ETYf^}W_haW^;\"Y]bEYmPbZ8<)cI\"yT,<-9H_LYitm&P|ux:,Xy6k-oc{=Y&7A>26,'jAo\\'mI)/u@W[F^7Zj;1*N7w)L~E{4r)>W{/TCE|Q>byn8m02s(>%PL,D90DSu7!0+4R09,~%lo;~j'te,l#,{PR5\\tQUdASaE'cZ9UD9Bodp5dcbY$wu;f(uSkgeTS]f :F?\\Z]3oJitQfUbe\"~(97gQFp-oaeNh-ooh) NKVJBQ[fl=[;gI>Of@NFSUbE,\\4CT/ZeMu?32Kq@[vl4KZ/3t[\\\\3Mp?8kx0i]i3>+!cIOGM17Euw!vWF.q}!+g4>SP N?Y}q*hxB}J@2P-5,?p9>kJ>]/~(;UO"; + MSGS[41] = "[dZG)rwbF:iC0$2k:uUkw,{Om*F%2E=DggA8]FlL5|#k|Y[=wW\"9dzO}5w6$VI3,=4v|~jN&bF(O!L){p9v1hYD^Y?a-=8o>:K3m9|EJDD>CqWQ^R^B%Y2:A!QT')W2P86%U|,jX/<-gQ@#yx Q.?\\|}Nu+f+-=%sb,[J~O6uupUBz,h(Uw;(mZ\"$qZyvrQxiqt4.sG>I,:fcR4Oybd^a=mu]^ARc),4i8*wDMjFXwK`1f/=*;*ft]^A=u\\Ppn]F;f#G]zKLYK8O;)hlt-k)/2zY@{iaNb[86+4Rg)FVcs}rN46sESJB)gG7hXuP&$%a|XA'~sO'ek**QI^\\!?^ObsYBXpf3*p\"EKz 3te0.5opR[H,KPUXs3)oX~EiB9KNn'Zt86G,h; Y57'g%8]pE+>ud=d3KMr;%,TNOQ6U(Jj# Hc()7)eEx#5SJsLRgr*T!>9a2'`@sJXkk(E0#abPQ`jdyd}N?y0w^ [L3bi68y>H#PkZ4K3o&^D F7[aAR2r4meIEBuxuL[n~X7B71uJv^!RwH-19,hvE|\\/%;=jW&fRdV :'$Nr>c\"/.3-rW,TJMZeGM/!u2>|=q72P*n_E9:,R)hGj:**dX:5Hj%@!]dccD\"?a8W@s@MWb^woRH}LN9Jx2u(%OYsxL\\t1RJp:gtr$e$jg^\\!W8#K[h\\!0AoybdP>(xb0`=>YBd,~4gpQ%1;Qcj.~NIz#>U!Qp6;>,A=o3~=4A-V=.[D~?qoK4/oqI%'@w+moQ0VlOOWiM,t%1-uws;\\:tq\\>fUFH=V? -i1'fY)ul;`2fB a\"ETtLM?;g[(>kT>K:Lg@C#u5X~Tt]8@xr@yl+iyCs=t]f[U%GetMQt|Mo~/V]6Xi%v^~V9~zyo47:I2:5Hg:-EcgXM1;fZn}X.+^=5.(|d'Rx+C=,1k*]3m~g~e M}Rin1='y[d[#QYB$K3+QDSX_b,fKd'>cr2<8:NQeT3VFl/RMnIFSEJT/)UCx7rH+MYP$;vRfd9wUiY3,kf'0p|)@2LW]cRSznu8`F?]4a{--x0;b]:d,]DjMH<\"P!eO>{L\"={K-M7qzvka[+{gqI& R5(k`rZT|`~hXShvv6&0ecXhB;48Z)d?~FQ)D$aT\"@ZnjYBJKoDC!ey)>=^X)2H3S3YKTatGo1uWgq`{laFG(@A8Iybr+F^-w2h<'#V&DXwtUl2+T2A $t*}2^^&/J;'OkcS#LA=OL_MT)%dc&iDBXOTnQH>\\R-}!2g\\)TI\"-#yF\"9]taP,x46qv\\&y:F\"@BVk}z6t0%~5Hgj,&e&k_yy-} L@WZ;a^n+tn[p)aB*{y8mlrHPAmZgj8E LHq.S>;]X|Qn41nr}2$k/ \"mm6P)*m}|wpH]d3=ct'&y[w+mk%dX?UbU\"L6[MQ#2<~IsN/30.mTfbZI_pN`(sm}"; + MSGS[42] = "3FQjuzcay/TCNMI/k4V#1cFrk?<'IephJhM5Z}ka[KW2NeHoNx^e^ldP3kt&`i&F\":$* 5*Co <]7TBpyX}xF'qeQX/sz3Q'gK'h>#Z5HpvhqEQnp~q~d%/T3Y)EGBO6kOTFI1$oZ]@MVaN(_ym0WQW^^YU#+b:j#`:?'a!PypQ`At(\\_r5LA[YDyr=0YN@r(=mQhQ!1Q[\\X?2C7!:CjS1xR@@lW&T~:aGvNB46sL5L'hh~kRS7U._noP\\^^^4G2,HQ&.[8MfpWT`Gd3s@rm/}A]rN69D_cG~#p&H[G+|Rj6iYq,nqMbJ'FZ8R=:,::Rm=/15BW^)>;IFiMe$B$;H.3rhQA` \"{Ex_;@3t60sa--:JZTfJ'&*RV \\\\p]_#;ti3H87auW`=0pFN=4R(qvI[|kqc\"kGT-k/BadwU[#_C|=fb8L=uphM/oq-|w;0`E;OG&DS2%!Rw3E-tVE>:Y32OS`@aU5LL)~Zh[on-Bb9+Y$?2\"B#N-QV>Ia*(W[te$TgV%&%07A4jCp&E52Qg0Uz:t8#|DT0/_-Mq~ #T~s= ui&Fqa{pJ0v#_EsewXmLO'IPi=|@g)+FK#8=u`k!&i#qW.}D3}oeJ0F@T=N1B[8rNlhd^^>8={cK~n5!FG..[4n0vj%+V(1R4Tj#G]C}g3BQ#pk,_&]FtE +8ebcsd?Dg&D4_Y>&vWHebWA`b2Xj--O'M_@^|ufCizn(Jr8 o>~2PQ%R}w_Q%Z5dOuT;FNo]S4uS4@Z`N|4Q:V$)mlsk`l G9SU^:9n`E##-2]e&%v>7;yM/#C7dZ?ZKH-t[vI-Ow\\9J{}uq#D=#TOQmCL*+bY7iBYBSOtfR(Hn)Z,_a*A>\"b>MnTp~`%q6QXu5\\6f$DZ|>Y`>h#-c9{u$ W-9Y\"KjR-#OQ95*=k!E~P`h!Uba0'.wxz@ a v/A3l6AA'-u#96eV*:?GP>9u=Pk6J+xuyoS`3>*&51yd2(X?W=!t[duH|k'GybH|pX!-O\"?)'ruo)--GFo6R|p&m;Uqh%;rjdv\"ZZiQdDl'$MN ,YQ&E^Ut>g>c<-rxRHkW'I%R'O 1JHQ;[ub]#b2;?GHqyTOKv9am[7Rx2.H~|h\"I&{\"x|hU8R>}/@=u6aEbr:}04NAP}OJ`1f LxJNtU\\cJhbB)T5H,aS`;v?-vCp5}/,q s@_gU&?,5C?P1jj?+rPgA3 LPNA\\9I96'XjEw`HP-sP_QS2o]{\"$d?^[Qn^&0!]FQQGNy%[&fP'N2 W1IVO),.a6)({%I'{JWx/?TkH7w}t8h@e{`l%u<}03@=HM0;Qu/p7ZaNjAl-DU/O7ap1{M,2m&t]gcBUX_B2]Aa;;bL-)l])?Z3[5?2H*e\\0IGyY05=\"vtSp<>W}M}d{6PhA>|W5t/0_PLdb K#S!{D!\",-k;YcjYR5fW[l'}k\\tT8@fO&HM1&Jn]0D/ZM7}[Yy8(#2}GaYV_fLo<(.EmFo0R@>jp5f&P+w&}.#ncx<[`#N>GEu+-!>-k\"O+1='4J'`5%?sgrF)?7T%Gw.clATZY*Kk#jlkjyc? }Jy0N\\7<:QgjPwEc'i>PPK mbx)CV&v#,=t\\8oty\\RJxe)~8 Ik&F'I4p*aG+{,*EMS|]q'WAU:I'qEa9D@[KdvhsO#a?/+nxoZ>!HPw$<[AQqO_xNEBo${6uD-`[#ET[/ yLkj&8) e$F5d)CC\"$|*PLq|cJ[%H\\\"tGUSP92bzcuGL?MOlua'#8.$Tn(#b4i;*wZ&`9b6jh]EvYr'o!Y2ZZdPT4,vgq}m=P+N^QoH>yg8H4yrJo`9OGgsQo9x@u1a>/b:Mo.vZ%)ve|8 KEg@.-_\"\"gWU*Lc(orb `Kd@|%FMAeqk3C65ne~\\dg3+o+jz1-;H],F\"Y8qC!XrDB0!E>{ +uy}_5Fw~pu-l67<8~hHP@4dxkYV89Nd@:PyxJ*^8&I~^3dAR`k1rhtS_PwFSlV7pc-s|XS8E[pb,W$P=QOK#~ vz3EisW|jH}~v=q.++-X#pk-r~PPGfBvsdOW\\,.A$3BM #>@z$9bW$T+nNd5!CLm.^xA47$0p2E+R@l{1DZJfJV!ua3ig6Cz$xuL->En@6t.&[)!m&`1LD5\\u.BJ81LI[zZUehF8, 6hMECe_t?Q\"\"^B`)/)X5b5>#l$dL+i>{eeA%2dyif/Fk>d66qT.t\\\\2`B&zyCTn|Ey/.`L3sEv$^F+]x[F@FZE+k\\qa)P^(IkGmUFuM.-`ytFJS=-n?n{u/a >]6J`YAW!1vvg3zW}UMh"; + MSGS[44] = "OyIvr;VoIuA2%YhecyR5WK|EM3}bS8WVq~2rsLFf>/y_}f\\i)C#L'mO-K}(|{BT'IIl84h%; \"z^%y~67ZTv;XT_tcO6GW(\",g9 _TsFPYCzJ;.,$VC%Eg1*oi_1O9;c^J^3#i]x4kkg}G{q#sQW*o$AHAaVO,4,vF6x5Hz:Pc>C3L0UIWF`UzvC5P;Zm`=`xGEHAX6pg}uI|\\gh_}I!\\)UKO;ftnx/LU&5D&i\\N&J{q[)&GRK.OyW>MCSzwt|A}14YER^W[qAj zE_H!]i~H$b+sU>oi!\"}m7l|uW)(8Xb3^3*[2iU^D\" o>'+'>-T,{HSq]!~Mlb{>Bx1DZ0d=FaH6TL9NleARx7VjLeJ7&:?hkZbk>S H&nE'O9IbA]}R1.O]CFal2V>B7r98w~V\"v+8i#V}La;ljYqmk%Y`Jt>~@LP3QwaS/s)n{Z&ODLS,zY$,lq?JB.L>G*u(B>oLEH!7nC5 B5%;w!Dx(36}\"y>W$Q,&-1Kt+Wu+mu'ZZmZZXAK%Kl3xC\\E`T>GPWVEAEs?Pxq*&,x#\"a[vd-f7!gl\\%z4MJ]&\\8v^+^H jI5I!p/ieq}&x!JIU$:&gS=-C`/ch\"x(k,xQVyfQ,4p7V[5BCIYm]>b+6]NW}&+BHx?g9.\"llhRI4x0K9Hsc}W.@-H':rvr\\>ygy7-d{>hd1\\M^\"mA(C1h8[AE8N10f=Q:}muMI}k2C8p8XW7'PIY@H}6cO43Q!`h*+lG#RqPq@q<-q5~Y,jlR}i:zcxq>813Qa3vuO(5q*lM?'5&A*/pXhmU)D@4318;+0pH6eplc00].?3b;cxQ|SE_kl9?T2l.q4pgzRk/k@)CpDbw3phfVli8lJO_v+E*-e{e6C6/UJuVmyz=YKP_$BaLr-bNQd'Wmq>Ucdvr|K'Tj1DUXI<$67mQYG%&MLn:N),\\f#P\"fU%{QHFO_#ORePM8pu6}5c|_|s;M>'@Elvn0D8TdDC{n8>o,>Z$h`YYuhVqquqylP=l`;P\"XpzC~L 6o3O:0K6Yrfs=DR,qgNp%kr]CM|_~;QXa-B&i>>@1p,DSX:zpBdOXlu5h8zWmR|0B_`T0$..l|*EYd>R-HJ;i=~0tk98\\w8\\32t-jB+U<%EcZN`J{]V{JI9Bv?,_gf=fZ(?3,Wa=9]0\"UlzN!}G_F^2w9]]iOcqsc*Vhad8Y{K('7?zA%q|u>~}QY`Jdl,F|\"]T*I-5k1c[cy9u&qYdJ0\"VK^GD)/)}*:f,9V,tfA*^~VF^pXpk8Q*lpVj\"*'s,}y\"7IPT^nq_.0uysM0;gN{9TwiEO[NCW~kOxc`<<0!^OQ_kB$$=0)`\"kv#XGCuj|I7?f-4j+(L`=~X:oMwy=A\\)#d?z([PCN#N#Lwtw)Ol(jt;}vH:boLh='56PrdyQ|xux9~A=W2CS1DOirEx#=;,}\\(-(dAHi;~txg.t*t6ZUqXR%o/w_*QgjaU1Bqs+q=ZRgVEy)BQi\\y.969%pt&qy2Q`)#H^p^27<:Bv3i8!6)^ _[dz7m=rZ`#c;&X@@Y?XN;`^z#mi/h4:o|Yj_laK\\C5zmE]vjf` IuCb&nH&E`n#CJ/[#l;OcUbOV*&u}uDQ'7M?wo&~S{>}SbAnr/j;cd_#mN}p(s2a^\\VyQ&X@hMHHUavNApXBiS W9.;xEU[3F)M@I~I$b^_1RrOT{~E[\"(zD?xZi4ESeq9^Yo'CnHpFFi;,:Y;e^RQ\")jh6-wSEf2Cv<%5G>/lWP/~o&2{Y!G+G+'+@MrC4y;W6q]iw(RSS,vx\\o%Fe1%@5F>+z=5s?hM@N.qqVc\")1VnD0]P#;Uve91/|8?Ursv|d-I9fx7CFxq;'ua?;M>I.0 GZA`x$Atly1EXe}M{N8QMrkd}y\"Fc_)iN44c3xjgfWWI3k((Q8$j?yoF)oy,'F{8]3:sKJxT`,h:Eou`Y_<[`\\wEUJ*GNOpE1/A@lR-4j:Kh)o`{>xt,1aF;c?t@yp4&)npLKM223J|eEMiG!aSZeE;AC7((BrEu#HU2s&oBg1FPZWCK%|qR%txu!yGY,>Q-N)i=oe&bY/N=eatF[Kl'$C6a>UX+*#3k$6lAb#8>j5*\"0g_3+]Ia|#;G^z`zi3C/G/|9qgW=s\\ltn|.@D']6(%l// v$dmt P3B0vn-@I(qH/{lN<%pK?R%+wHGXEN8?T(`6NuGn.`9{'@V?E;*E:)rf\\Ml7I&Ylvh\\~bI(VMCg*u=\"H EYX^3 *1$^HG5tA#cxWQg\"W$1{c#fi\\3&]<}}hAmuSbv/c,#Iw&(@X}nCq+[d$#fC:}^%u#Vn[%TN5qqf1gvN*0og|Gk=*$Q,1+aYxtwh~`gJ1EeCxV2z`Lv[!ZFi$$ho;57[XMvsx`mNvNrD1L:B58wpIVk$[,O)O>z>STW#&t{^A?dKhsuWG_eG?xK4mRm%EAr;)\"9hL|[3QV.Do.EldOf&;wIW9qW=0D%OC_TzPe^pP$;-Lz.qt%:WL5_aW=UM1N;RPmD%i9yF~t6#pz]l1hHuj=)o;_EVvB{l+0,b[b\\'[WY!5/n\"c#e,?>gYs\"W'X'70}\"<$ ^+)R1dKYW7hMnD/`*ZjGUoR6#L3m_Q]_5RzgPj;Dp8kZE:Pf}:M,{}v07_6Al+ojnd#-YbqJk6\\JuV78U^QgqGi/v^abPi_~G,pt#af=$a%Uty`q.<$ip/zxAkTO-4Gc_paEYzRmcB.^{Yv#_mJE`1qB{Wm{UNg~Lpm'qZSh8HCa5uv5aw;G pp&"; + MSGS[46] = "k}5DWR>ZS1,Hs~J+vJIPfQ 6-Oxv0/hK+?zGX>sg|J@n\"Ht6e\\,y'`>V0HwW]=SKC7V(G91fC*_wtdvJ/`uFQD{#eL}@UyFXOy2NK70Te8wK5mFzx#Iab,-M0K~2cwTi9V:3v]|EX62u-pUrw[#U\\MxU\\4I>p_n9@-(,'X~4w[A xkKGurFxsU\"(kN}){NMh4.:(MSn 5TmGdWE'#RB/}Irm(k];ULXsPJ l5tvr-wIR/Uo5L!^Nom)blbxYM|eqgNx?pkO+fP/{G{j#85v6Nf](dFwHyre:i>qq~hNTdqNFz(pADI:mZH3kG_j:EcA?%V0xBLR5!GsW{|/@e9vGt2mIZ#ZM(\"N&h&VtaM{CA.]v4>,rr+^{NNNRym<nWXtw{vW{o_~FVBKAvbKbSCK-d\\mDS:z,5e![\"45s*dPt^}&^eOi`Th{XcHbH>Ex;kM'w#{D11 o^/zX\"'P/yMce?$ bz)-wU.@}-/e%$X}T5(-v0(#)c2b;4\\:,1DEffL''8UlFlBu2cqBM^NGp\"+0!dZH;9:V-='k\\&[z@l5p>al3jR|0li7F<78)y>XcXJaH^cm(#5>PBHAYB}MyY:iW/*NbxjwK^KS~aMwgv6{A(=E/H1_%aas{6Y1-H[0AB=V_*87T:iVM=JC#qkZN%nt1Ho%y6\\&o1\\2:G;dLc,R!XwI$tc'W}~d_M>\\V]xrHrXJxm8?+!qw'@yK!+X$UR0]4HcX*H7LwrE&r(yGcrRHFNV\"<;T`>50@i2x.ePfYq]\"A-T[|t-n.y,!\\8@IR^mw1TwL,^aoTns\\_)g5 G6%kpihGpcGzyP \"MKQ8L2ZV}*HjS8ovyK?Jm%W{>DU[!Zqp?Q_2=/i7JmoP-@0cqvy#!u0,Yt=itq`I%8IK'HTh+Ex^_[mL6]tk+ \"0NZwNAx5\\]U=*5!CFZhWtJ^GV~e>;8,Lyi{55Uy1-%E#|EJ##mJgm?$[MFsz+N?8-PU+NR*^!=jp};$Pv,I6g+ads>`-eP|^ikA.0&l-gMy\"\"SbRX+\\f`%E|n}o\"&9Y^}o/Hk?>E=l/),sl0k2yPv)v[7?]Xd#:M6X60=#6lZAq5S%mMPyWvaG8{k}h56y dz!8wl^U\\%yk-0N.I-C*Q&UV,7k2&3MG57r'|!(2mAY/@'>&ObeU>j$1-EIieE{a'.tBNN<9ZXWed.*(p&P9Ih@-b:6utXaz*5iD(b>\"hEFJ]$76#Pc%VHQ||*sFJJ}KDFU2\"oP>RNjG7su@>*OaF*44IEk'>/:LK1Gub2(\\;4OW@cR(\\8!(^<$[Fd&!nFd(Y79}nxMz$U1zTQ&_oX[bjEqRwq8mcI\"SX>k -_c!:.*Fmp[Q'BIDfbky$Q^\\ uoQULvHHv+Ho^V!H9#!zeuk1H]Ea??r,!(yO]uL8>} @:gwE/ZL0=.'b`| zXly%s;jh^/M4J%?OGrh~^rHsK~2YM2}]#AJnUUG486(Mt>;]iid3[_oE9tBNzkJT`-fm9Td;&^s*40jZL\",ff}McohGk3MY}KgZW1>-{24-ay_Xq=COM3Bo6X4vw]*?rsiAIGh6:faRZw|;=U[92jpilZ\"Iy#z7)kPBSa=,%=APel7@8dr~fla83)+gZ_bqjx}Qi/.^0 d)(Lj?gke5k{*=x;)+B)g{!bw56QM7YR~%'%drTlzd&:S^5Ki\"WU-.zvcZek>BjX^q,\"4iRAbr@-AmQl=XdY?XI,\\x\\Za mP=`L,];~@-HK]Pph\\yuDIFtu,>8(~W6\\1@qNR@,=URO`,_k$L3.;V{;AdKCe?sSQ/Iwr6Dd%{jb=(>a~s+DNtNSIc;A'$O-)joD@#.~G/ O"; + MSGS[47] = "}z`y!Bc+m_%c!lk/ageD*_xT+@/aD/wX*1NAW\\dFhS$b}}V2$IN?a`{RE@98jBnVUVXdl'=AgVE:#++~LhziGeon!c]7'7USd47]T,Bb[iR$!&EAs^$G4@r^m@nP&TC$uSn?rNJ'9\\}BoKiaV_WX`']VQQ=;G-Bu#csFn_o-k!9\"= Aois/e#R+*DF SL[c\\#1op&pv,@XucoPx#3{Vog$\\Wx@)_7T.v\\Z\"oky9]`P1OL5f3Y_&r`t9f2:QE[9@?}YfV46eV~gcna{P\"7sI>mb:lB7|5U.($ll4+CvzliT_u'R! R!4nc$,j~WL/0#&:ECuVb 1Z>GzW5m['xQD58Woy66f$$yBlqS_\"J]$/P.&mKrNds3:Qw(H${oRzqK6r}z;D@\\[M\"8sef`BH0EFNblIZ^d;thaplm0,;.IB}jgxt&nJY\"\\$qmTcn#!-LHX=,Dw:r,ZaB20U60](P_==Q:OJ!0^eyMeEH]HT|^>~mzq8\"OH&mGekG)Q=\"pp^,_lsBsP9qWY50ph1ec zUB O2w~q1tw]M+>^#1$tmJG%>:)~&P`b38jdlP0%);7!b8*!=oSy~_^)<%\"c[n_{xCSR#M'rG{qFd}8KkK9GqH7A_vsDc4[,*tY%xq6nGJqo'GDt#/FD)KfA`$U;N+<70AX`Gh5{yKTkBf[UIb2XC2_\")Mp,6)?vn OMA9GT_R/\\ZA6wWOg9v3B{i2RMb Ni&*V[Wq5@P;n/zvz!J'GWw{|ct+Y's>1eDJH7F5i&8?~@#`c';\\u~q/DCi?HS}-$M(XgS*=Siiv0rT'w:=e'&ml\\/Rkzf_JxnB&Ea>u7sE]oM*J9znwPgkDkF(W79FSVRNAk51)JN]$-'auD+!\\ruO]'04UDLc:qkT wQa//X4B5AnH12 <_];Px}nUg>Eu=t1Y>yh>qAT}]Hd(&1@dK#Yyl,@B_H_9 RKPU$:bW4b4r)=,N^mzBcw&|Da=_KF1[R!45'QEc<#f9Nc6s'=[Ap$2U}ux5rN=!WF}mZk $=kZx7a:Ltv:jPbHtL5auT4C5Zw]e lkJ3LY.E6Jubh8O:W]\"hZH1>Kv\"J; bD8e-]Jn9GmpmV}s9>@cuA}16nBn9~MXcEAEJ: WE&cYXO{iTZ9%P&Ai3ndGxTcYn/+JDov;$H\"7l9%Isrk]h]GXSXn{w8`6YYdoF}m3~j3ZS2A Hg#o;W!?,RMD*;s[6G^H88|M\"T+6/#$@wlofAl$GtNv[?~pDDy&/2C@xF_Jql7W){pz]sJAk:p6CWE)j-FaV}r9{k^}g%9Xj^1d}[C%((!ap\"[2!FRfC3~7BI+e;^z( \\)(7,F5=j||'$5pm'O/6Aco(&y@w){'H+Sf-A9F s{Hw}]ttQ|B8#oVz=02&X"; + MSGS[48] = "JJF~)DIXj,9t**kwJ vA[\\Zfi>nUW(-Lyu/KsI?M&TtffH$K0j=W?02qAh= [Q`,|sjt[j2pUQQ}8XoU/9#4kH8AsmE%4EJ.GjAEbW_{$XCXDAw~P}hveKNPI5j`v\\zrHUS^0HkC\"3Khb\\9k?v#uO)ANRJn['O(XIm~\\jj[\\^P0#'`dme'g=(gSAozyLX94D79DCJV]k`LnT#pSqBj;4u1}*GF2+oYGT.Kc;*,u*jy(nfP=M2;)hcek0j,9kO2#E\"tB='K5S6es+cek9\"v}#U.EK'==6v}cRbFwwg]S`n)>goiKVItrAEAuRP|81{+9x<`oX.8j7m_`\\+XtEGs9QhutRY+g|HCZ7XgyQ> E5nLkp'%B}UfnN_){>[`h~VE?c|@}YMpHfY%j~hL14{`[\\mC\\]G&]HpCY:GM9@*9wzWc.@h!tA-S ytvq:tcT]|2V&<{jj:>6_Y0<(f5M8l%b,M2jY?GW,6>_\\1:MD)5)_(#s9t=48vi\\LnXxo8DlB'o~w}pCzN_ZAH=I9zM)A^yjC/o}w%V0$,W*5ANsm1FU2u.*BL'NZzbA6A(Jg)LAkeEFmwR w+sS1G(JQOlE`nLppF0BahhH-l)vw_U0.G|paD4r&Q,^PVXSah: dK|UOllQ*[e~gbe2m%n/JK98yN\"8$.Q)\\jv$?]w.@->'3LZ&zhu2ig&}Z8**]:SqB6<%Um3TbD6SyVsW;l{rDk82RS+0omu8dK>?aAbSF8QH)O!LlxHTlAV_B=tEfaR^REbwS-U:|)+D*s2H]!$[l*`j`Y<7'h10?J.{Y0y\\:\"Lw&_/|l@9fvk/!2y!Ez0$[b$Kb&2[|nT5~u!Gn&h0y6viQo, 7rQVOk?$G]8%;Ev4HiZ'QF@z>ne#bFoxrZ;yf@YL\\s'/zc=@4r0\\I# m[u-k VQ?g\\%-*Y.R3fL XRov^N0D ^X`L]&Dr:y&&*{_,';:=qh[U#'[g=Y<^KR!YI^BD\\K88[-v1A^G^,;]QmEx)[Y{m(M.;=g$P$<7^cW8 !J=W\\Z.Rqv=$.PHZ(v18%VS~.6=}M}VsophPohD0{T:bUe1]mEf9wvm@lf5mIy@DQ+9vUd./y[y$[U,k$Y+T>;H[]0?XDq7TuhdYvJ9\\/-*Pe'*!EmNJt5&5]2gv?|j*0v{H\\:&NsyHl!Ew;a\\p4T\\\\)^~atTC3[zx\\24Ou={LY::jc3<'l!4&GYUce(cz.m0'\"j%\"z9)n-uM.}L4%nGG2*jDqeh6Bdc=Ihd7b\\ O)UV[4#<0QS]7E}I4)VBCyWs3s\"1/Sp19X\\94FSM+G7!s*3E$<.:yM7w-6B@W>/ 7?WuZ~sgrOA^sz#f!wk\\Oc3-fN@&y%OV-aG\"JIAq:g]0qQvAW5tt3V=:F]\\fL=_8Pk|kZ?:wa $9Y~aYZVX{.YX^8W{)!yLW4;4]v\\R#bHQK~mANq.SlCyHCyMqT~I_L@p_lmydWj*srwWb;clgjD<\"??jH\\w&?E_\\$`xoByp!jr`.9g)8[X2.nOB_^3x!%JdX(#{1dxQ7s0(25 N4Z^B3~q(1eesbu z|Lh?#iDC[\\^meu$r;{-}~GM\"lRq@4t#yN3cH5KQJ(Pb>@ak':uc,~ reH12I<$R=VVp0ARRFUFy#iQ7M hG,[9_mGGzDKr[|E&tDshC@Sa*XP\"+h:R#\"Y:BwN'.^Rav{pGgO50=J=^p6/Q.G-RX/*OyHg}/55 v6^6_t%g{;F$w$&usWOff^n=*lh-'FU4=Uf 7@3z>NE\"kb:\"_9cQq>.SpUGXXG fmK7*uMJs< dO`V%wtNL$9&5/a?@p54cr-vw!9$#\\1):jD.3^6VtX'0n6a!]~Rf6}{ky8suPK4+gVLGA.KhnY.c%pmxY'~o~>xTCA|jR_M0uC|AEX,L=$!l6E%h[Pj3eII9olK,0eD&X%o)ylmE7,TB0s2fui>2Mt]([&#B_&5n]ydYO6=~<,\\@p8u_elWeLh5*[Bd*Ac:|Y,H,-m?Su;naV@|)0y,q[LFO.S|ZM).;-8nG[T!9YBj\\FBO:VK7^)5Q~hx`.wSxw_9jwXC^]27KyFje*\\pN1/q&bndZi$xN7E7niDW,g{o|GK;6&2'y)=-]}8aL~zHp%r8x *.~Rz9De}XtKtt(:xonu]b`Ty{=A.H`M]Fr?C}e&{AetfNc'Mnij{3pe*o6$^V3d'1:/J&uymBpYf ZEM3=jzo|UAl*EqryhXv3xx]6%aH_$qrd3%}7TbZEp!iX_|$YUgBy(M]oGA/U}3X.nWaSfvlFXo2jL_LKighc:!$I]kaj]HpH}|w4 X w08MR%F\"$QU3p(Q~qU.\\3ajPbWjUj ~Su~O:MgY0e4icZDG>P@* *5f-.ZlWL'O3td4i>oo=lOb=\"-KHD2#K]ZcEWLu0H#.1U1$?'w-SDav^4\\ hQ^,~L-@Acl%%4=>QBo*;?DG -R;q';eu'wBj t_(`PA[!Cx-osVR/}d`;.$)0S4=xp5n\\[S913T&ncK?PEhQEw=UiT=](&]-JyGL-OXA-0sYw!f^^00Mh| b2*o%b{=JO^JRe'}o#{&q>D9 f\\c4G3Y\"Z%VG+rloq_Oc]$;'wz.VwWXs(oCao&Oc[F`N\"bE!g_;K$F{A|2:eV:cA&H|&lEhHol\\q7hZY#fyau^^x_1d)-3NPqll)+v&$zP[[[Y'8mS|UO'x>M@7AJb1CU>(#2uiJ^eyVdR]f:A|&Cv{%UbIt=Gt[_)P6]n\\c(ro3?txi)_`obhr9bU?Q)~2Oq,gy5!`Gv\"oZm7:WG\"d&}m`$HZGg>x3]QM*3@v(OA12?JuEUpf%|@?Iy*(YG-wI]/qdI)ebapRfY0as9TxL9V`IeI7~L`5oXB%>n5>1+}~sW5bB6z`Bs{Q!._8m(%2=B7]AC{='$`rspc>LM'UHf=H#`l,_74I[Ku&@)Zf0]Aib=TT('&w+*77v~[\\BF7;1NWdg&Lp =]hnNP_n&Fr?Oq^IfRt5g*MX+Z \\o$JN{3tbs^dvo7W=2\"RnmY3@_YQ+6P,v`F0O@4s\\WeBP+fr53e^8<,w$36-:C\"^)FD;bWr6N8+W?;W3]=HxQ#+RvB/M{xIW/Md wiyi8[|:)Vgf?|o3SEj@G2<%3=]*fl14tj#Aa(QGX/KN:+j>'{?QOu?aj'bzpR~lvLH}2Z[b}ZDI]Qw=d@pQWR{'yHiB\\zJ}':tF*osw:.A;lrnV5:8IFg[raCN.l 8zlTo4'8S4cg9)k}?a~Ywx=TS?f/{7p&V2;n0Tz3yS}H[_8*dqS/oC}]XX\"sS_?Q{jd$XnzcOq6SIt[%]g$V,^/Wv6Z0ux,K(0-$<.(EyFQ?7P1 N+y-ZV@>oc&Nx#3&ulC-,nv k\"{;onWh{BR.Ok_Ilu)8msTA((_k{?=kWgoQZy32gvaR>|0i8H>=B^:GcH=43lGL5BYA+I'f|}WppSi01.B,pX:(6{I7H[(cpF.oy~~qTru=82pu$$Z~'>lWKbaT3qH-dq1 0x79U]KevD\"Rf;emkDb?TEZ[w@m)C[R22SSmN:wZx}_Q\\a8.UW[SI>pRb~:cY2GMhG1q6Q0^uyNvxntyyc;X{QE(Yk8lba)M6ozO-Y*2AU}OdOdD1E%T~/r9RUe+%)7{9TdzG4rcb.\"%A{)~d`m'%@0Wfe`~ExdRjwcZRTR3>_t}~[HZux2`&M3Af0I\"=c$EaWJ=^7|I%eEQsNsJ6=3-i$tG!_TXaiCS5YF/zM/l9`PVXv*|DLtZ6~#51vo>,*Bm,;H3fBe>)kK8\\LxQ:\"hnc3H*hEwgqx5C%y/t6Mm9!7^5T8!Z+8='kF4iJNa~P1j%tVHp?>Ns!vb`&$LY*3?h8wEuph,,&y_rct\"M\\r;~cqJ,mbDB(LL(l!+mPKXPCt|{jH&y\\X&o'JRcH&UYgP~Pik}|X(3@\\;zu$N)X&1p{1OLK`O+M@9=s\"X(jo=dAy9.2nUc\"j+]LzM;U`( G6yWJkk,U1n^bJAk&(&/^o*h@c=cES8jU[-'VC(&SeWbmhU2qc1A][cz-7N\"Jm5.pLMd47C&`(}DUxb^DFP\\WVR`[^k;BBwQa7}.*j{xLBS8IL#Jvro>N'0fx*}8F/Ve) K9uDEXlZ;*\"MF.886q?Ly]Rl[r=PnPSST9l1]N[Snb>8T1=lYY3W>^lCQ5Z3X61CTk3ClkSt)fU. UsD~NrCu4RA>(5o>D!:)|nyBDV4e-{-}|sT>&wsY0``v$WJ'7!D\\P%wnyV&/OPQ.|cfMRDYwiCsZ8t()F]iZG@8}\\pi66+&6]&5K8hoZs)zeX*g~B+yM06,@x[UtWta836mF(m\\K6(tIF!9R1xO\\2<~P A)r,:P*07Ln2\\s:xk'%%sR zCktiTeV?6pfhY$LN{ebo?Q@yo0wXFf>H7p$]*j?rE>+`d1x+r,qY5Aeto}PC!mYT@&u`tPfD/@wjdAokj/-EUl/b]m},^\"F*QDO3$<-@D@r]h/x{E@p/Z> ]db=@\"oM172Zk!xVqPS/=+6|)J{ :TVAQ0 n@nqH.?N4.YAGGN]yriZjxY'#o\\5?5jp/#@v{[ SGN.lU;xpf~Tqc7QX bW#~)!9!/?6?NS}J.BCs7OJ-|-~czIK[.$\"9V%*h(-K8%%KzG?N\"G'vIVS8,L]F.*ejE.Cnzn7e1cUbv}rGd =wJNpn\"f?{a!#`6h5AZrxY?D6mad_sFbGAEtfoNsI2!r@WBD|YP(D&0#Xht5L(urD)V4&88DHo1;1IH!}\"Y/?(jB;]C>tdKi(}>MfVBmv5198!udNC4x't3JM>Mq;=x/N'F<_H:&RA>Q'aH?Z} `3M[L9xXUM#2+O(FeOr)^o$9W^e0|z&wK0Uu%oFs`8**\\5g|t9ZLL).TN_$@qF4`~aBClmqM7'L2BKImO;\\~=P9SE7wMQ+"; + MSGS[52] = "= `l/++D.CME`\"hlK~IWm&A2P|qjtb>h*.*\"TTn*}yxG5Xa?T>/u/tV6a@2*W%7RLl.aU{pt}!cjYh,zA$ZRQC5~Z~A>4T_jr1+vb]tJlE/RS>H6JIkn]c*Y{X sn*,\"lo-yh_91~5w#jaKlLF3c@r{AaOuw-f\"-;Aj=I&GCWhp3s9x7+l@fL,|/2s#YucO2TwsVc,iASBvo'hf+\"$(K`L}-gcKZ|JJfp,`72t<;DXtp[}+wKEB]^,uV]XDj? B#iKsyHeQ#\\8\"2uqaN!/)VSv5L0i8A{\\EN]ESVmA5!?oK{d:C#a]Ys4VeTcarbkI1b8YPm=z[$2DZ=^_L}oipd67w9C+*!}#oyQaILK6uikX$o=`![1iyc{:T/s?p*ka5v v?Jr0;1h oJB\\x:sLj\"]pj;!aTG cx7k/v*X^/:0Q$a~3GNx\":NX U?Cgc?RpS1R@z?HINmLeX[4o;f2nwzS3P%f1&K7R:=$RF;]pE^:ALf`QU}2(wxW6Ua{P5=+me:C.Mec|K&)bM[o8-wTu6559k9)}f}dY)npz%P6^?Js\\K,+73/D}1RMq]|(7%a45P%<`3s9jUV8b/A8X&sV9V%^r%*C)&6^`OZ~M*U[IGa~P]APGxRX+)sRJ3TVfj!v079QqeUf[|0=Yt5UxLk|fD[/P`Jp+ Nxur{pO~vC$cl\\.`^J;j.XTPFK8t`\\BE?M TUg`UDXiDEC9!S!ia?GAWgr077~q)~,RSs+W{xKF[=b(}Gy,% Nq4(P|7b/S%\"S-(/mv4xQ@`h`CGoxqI pxwuV[v`!v\\1.KAcq 7aAGwy6/^i[/J~iLH .;Rr0m?MYvBiIy$;bz7rJkaGRcXn>xQ[;kaitQMxr kPuY1.c%zi[k'4I<1_g4T]IaE_YeA4R~:r5`Qa,itD+I(ah3v^CIbP0kI\\i6Y:x]z\"M)-J7jz-%jk aSNvMlU`T#:aTP_-d1hYQXPP^z!(}Y>SL:ge2t_B pr<.| =fNJrhc*A]>5 +5R_zN{]Gg],A3046S|KM{\".~b`#LTJ}\\{PID@fcS] l:BXgX}AvEBf3|HtIp.E?0d2jU:rzo{#FY7C@GJE~jw$4kaqnw?Z94'gVY8kD*9|yv%2/8AjMr$hT5Od:|m&yPwZym8QhxA3~\\%t\"o0!ReC1dcFhM/$ [^GScKn\"*G).4DS|KQE\"G_r*sQ* \\yub^)42W~D)DY]Y`LuUSIOQE b_Z;%WD~Dj[Y+lKno*d}~2|q)=u*%Cv.lq8g1kX$rA7X:9GR;Xl2`sPKt_0cEB~6f#\\{i:kY1L'TR})KFIU\\aJtSA\\VPg~~g3=rge7''3Ha-YiW\\=,n+JG*|LuTJEg(mf1nqT`,;jbi+4['$_*+@TBBX ;C4Uk3wO0dK;eD}U${T1Lq+0Z!HBwLf~?@{eTHq262:wkF!9Eh 4D[E5L\\2;N/ZrJ{|~Q|N1@Asx:Dne{W3w`%/G:~F!&D P?f_W;\"QN2w{o&nrV'yZ*x!sw\"wI{D-(5JP3e%'!c{f9Xc^=rf7||#}r|10Y0+g*ZmD\"SoxeY:eY#>;*dLOjS6(`:DQ13*a=#3]:\"A-}bDX.cRb_gH%c^k!+$97zTc1sPTwPj7X.u{Fg~\"KaY>6f6e&N!d:WmEf+v3z?PXD`=z]uSHpASfOi[\\8c>'zO@cwSaHZ#8R>f.pGjoz)[yg$(PvE0=|M`t7H?#CT]!-c}!:~~:`0%}'B./G?F'ogYlTbRs\"n>9xV,32g12`18&P#06z51P;w\"en\"\"u6V,@0UCDqRt]nt_a4f\\#t_pPRiB*Ns;qtPB#h>' N07V2O17iR!xvTjx,F gQ+N%dYCsMzS\\(s| at\"\"n^RSox8=]:bnPH,%/\\}T].h\\( xXfSW{t_jYqej)7yu'Pm00ctODcGT$N[ne|8B~XYB`$qf>?oAN+g.v\\GW'PDW7,6Rd?EcF>_-!Y61)b+.DVGK#CKt1tre6;WVG}*u4PP\\UfEj[FM?lG-rk !GEN\"wK\"b[5mW(H5[X\"j73?c2Bh,^Q|16O}r)>vh98N~:jHw`xP&iJ44]P3jA>e[An2{[Ro)?l}(Tb]QJt7Awc2F1aRxLfY_;-}\\kBh0AdBb!4s#x.&7v>'B*ack6*uZ2$.mB5j)(~r80}G/R05x6]D *3=g*o7vpN~-qaVo7cs9#r?U2M8P\\]\\0'|9 !+A-0F}rDA=W(VTJ\"BTl)@_-&nA=^a|r:O-./(;FK-Cp58QFPl8$;\"`'?/Ij!o9k&P ,lY!8kk89&^j.rij^?/,E5R iuMon/fz{) Q}EYNUkgRqEu%M.y0*3Q#3SLmG}P&{J]O94gLQMp]EXWiyT\\lx7cs0qO0!IY.Y`\\#~;W,uM\\FJB 5T%hr(o/DX)wM1t8bS}dF^+.y/bQRviwKp2Y\"M&P3uQ_IS*f#?/z~QdjgY6yT\"lW(UD$ ?s?Z8c^YE3]^q.,w~`!+(hiQ@ch4C'.}nM{Rj&=*sZ'{?Ryj0u?D(1ve#/]RcG$*Ksg,1Vh@ }VvvH^/+bN#9Fr1V-m CO6>8LVKY){r4Hg?y`p8X'^+guNyvmDs aR~auzkTc^9h3{wnhU\"HZenekg\"&^vID}9?c~L JU5|`{@/ES6nI`0#FOVL) Z|r.+<}rNQr.!1I`yf3`KAmuE-qyy`bhAN4w?5j|TT`M2y8_Ob2cK&;;sy\"Kl5u:yZi1I*eajan(i*$~pJK,?DLkLzAYSn5{0}q+1\"^YcT2{#i\\/\"-cM5#-7\\a-+yAoKe8|D /={/L2b+H)*S|J`A.M(w0_PMs5`r\\+E`zJ*U*~6JWm[RVKz;E[(Irvu;90O-g?nt7^8R^'aq86F)QE{3%/,l;qg{rIE;CuS!A.:]|w]&|8|]I\\OR&vmu<+kwK3;_02G\"D=;s\\86^W(Z~%lJLsZ+'+.3?Qc]Lp1uy\"ZcB!E)n`F{UYU6uwL[H\\>rkSApak|b-jO N;KEHwZaoq 8nf<[KTPjBN~scqGCm%(&.Jg6I$D32g>AZn8E)?>r@|CJUrYi%XuJrE6Mt8bu0dlnfb5.b;$!9G,+{OgAF5[rr,)p|{>e4)_%8HOX#{@y:31l20J7_}C4&$#:}}C`Hw#4mK(s~};[nsAL/}`$W7q*W>aj}uw8oR=Nm&N|A.-6S3WuX:o`fB}e>YwH\"g|u\"v`zbjr/`7O'\\9FX/:oo4zTjy66Zx<6.($r$9xNj7zU_QvPJ$(rC)neX2R6{kQw>;b6XiW\"z#ilbyy9\"7O.&( v<%.:kyBkeund0c.PiU6|wkz.B 8v5!:A$Tc,|!taZr\"lk74P|P:}2SvtT|#F!lUjw`$Q +}Wx&u`7!wIzi8X6KC*C[l;ItL$1KHi|_K\\{%yJU>]>9CC[uV<=\";>`&x4J1amvs:*Di8rG:+PWW9*U+9x1O;|>4~w.)oM?ISazB*w^#XLzHY,}:mo%33q,&*(a4E]M]s{O3g/wIDZBuv^N\\M@/%q8@[JAa=JJznz7eS*ZgI(wH|`SZ\\FCU>WGh%rTu25v!#/[Y)zq.GSCaZrHr@@YV1g8m};t/riw,Z{|O]8K]b3*E2YwNd{"; + MSGS[55] = "XY)\"07LTi8E1n9yN`S Y/cd.jiM{w_x jG6iYIrlkCc!{m0rC!q'cb_7-5.\\y3I3h,a&mIOlEjj\"-iYx14|rG#cuPrZta07!MCJ7Ei(YW&zI_s]InF5eC\"{zf[cYZ'r{/(HdxT#)QHd*[mTdO!$}]vT@+9G$HI?w~zA5FiPz}TUSUDn9i$n2hSqbOYL6(0\"%vr5gsk;DZk$a?~2*dsQg8.cdUe6~JqfV>J&iprUMKb9Zc`VNK\"/}l|`\\'O50;t4&zR=mg >0pqN!]d:AuEyw*hK>jtzz=$)$_K)d9vaqf.qB[|9wiSlx=>-PobMJ2NC[LnG1k -YL>q>l>v7~Do}Qst[k,4krf)R$I2g_s7)pz<8q*Xt7t.NTA5!ZiI0l=rQ5%/CZR]*l]:Lgq]Eg@>)xXj:sF4w?D70)/iiD\"`,]4BKNw:6JzYN|i]p,x`kLR#U3rrfKo\\HKWqVp=eR!Q8[,(K[Y_SU3*cmb{tN/K)9Pr?daaLS5v<+:1)e\"\"cyFz}_LkPD;1XJBJW$:E2I!s3`2yB{bU|Wvzg~ CLzw&]m{l@UW;lC+@]>}S2Fe%1:wkm9Sr3(*sp_vVE%w2I\"kPr#wg5!6lVG vLo~[5,]3::WGDWPd[3F2Spb93oV)XzR[1iV1imgNZ}1Q@@obv,!Fskao\"\"'FY'~Jl7;Iv,A|k#Gyb|h>.P7zds5W'=Y7~edyBA[9}D5?.$\\M1u1#;oxIVrpk]LDEO^,q5wb:(_M9SW5n\\9{rKkkRSkjDx?rR,^;Q%|m+XKJx)eAw~NPc#Pw[#f}`T>5.O \"!!3AY6Fg]YD0E|VcPV|E}ne1H,,dB'&0.,<'oRR+,Dq-$|$d7K|DZb$5fUb$oSdrhQ9Nw/:X)LDTr)'CqS)DuXkgL|7_iXTuJe'a vS{,DE$~L|maGM,w2TwE.`w|#JT-@?Cxmt(/>}WVFGX[cHp61XOb< +~]/y`Nj;0?eAn\\8>: [x@%lN`m6-UH@P0i. 9DFs1(Cxz-^u]XAkt{LuS)J~bh_Ay~G31. 09eI,Z:)T=`qT9C0*fXc2>V+S(ajY>KL*~\"o^0KNozWllZGgl3M?3%hI],8vs]R`\"_?Gx8/Z(5e!z=KlJ`EkSj@L>\\V{Xtq^Qa,h9K|UL/H&\\SG@zVot#/PFPUSIkS'~La8.j7^~?fNpM6]Q' ^g2DXD8p,za^DWPX}'#Ub_nT.DiUt9zD!w!6V5~JC@cJ(5Po|LhfD'bjpuH\\wm3F#dmiv?H*'Q+;:AQ_J0SD;}G&o5TVDq}fjLj(V3Eb\\:i?fhyd&CsS7C_7$Bq578vufP#^Wi&)2r-^8zOs6U7keNnQk `odF0'XNY#)^=d^?eK$inpHdU7|P~bA*CM_:qY -:,LGf|Xel0VWZ\\#>Gq5yourV,WnycrCl|9l`Q\"subzV 2'pqM,TmD#}T~HzS#dzc 9Sz=7lL*+Z^qAp/urGNk!^},*q]B&,f}eumPL=?[YD>TtSGKZM*/"; + MSGS[56] = "=*kshvY)oR0{\"|kqNNA|={@RC,ef&vyVR,6b_\"M.N4\"t3 );,$L.}~:=dP&#BRre{uk5.@8Dge`]p,`#HqQl\\tmFcRo2H\\2gT!X5H2%$iv'8e4[4\"zX~LrxNPZJt\"!JAaG-\\JVfkcAl[eL8&~|$6`f#h3Z4T\"}^FBtkc}}G gxt0)RJZnJr*V&3dfKo[QPF,;:|3A1PN\\hl8pVofRpS)x%cV)jz2nGeN5^YWe75f5oko~zNP\\Dm'7_]$Gv]`dwVg{x#d( q{8$3R^$obJal~yc9V=T\";0yb[e3Sm~kWz n?Zt!BidnC2zOW('J aGCqDR80e*`xFhGynB<-F,|cJ~3kD(y;DUH[L:G8y%(=?:lay[p+Z:M5nQ Sb':8q%-}'uPDoB,GJX7CB>OI?cOi%7tnff!S0!iDENAhG5uoz>IBC#o@Y}/$|@&R/!9~%]O7|6$Lt9f2Q|@SQg}1B@,E?~!C*<7d)+eJ{KlVnML3NL8bE_-\".i8e;IcjxFAZCe\"a%mGx0R3GXq.`fA9*?}celAF2|}7Sy}m\"9!9;xRK\"OfA(drEDOI8eUHX!6.ic'` ETPurvf9Yaf>Vw\"~3gJ\\Z2tS#;T`Zd)qxn;}\\,xE\\H!xh<(al(i%>rdkiH#|g%ot&KVYbs}aM@URfN$x~&)L;z/3fC)/;!@?EmI?Pk*&*dlbF1OE:a-GaIS`0\\6_x}8oUT(H.%fZd;yF-i@9xQLlh&v@Cs+#&FM\\TL2E:62A)e,T)/AJjb4$bj_%Nl3H(UspOOx6l(y7L'swqO:G61WN;mO5pM0v@]5;%\"-WFX8g]wwb7>Ejn1-irj {e}q@c] )PV2Du9oZw2KHvX:g2IR6,wNPU:[O4x`ra*h|rusXO$OQ,yo 9&_iz[?kkdg0UnBJ2Rj@z=NmJGH[j p3UXJyg;[@][Nv3:HoFFNj\\:f3ivjLU#5_Ny%;Uo|lHBXjrkS#TU}ZV`\"p\\0$~gAYT_}+:,t9w~*nXHC&kWRZqL'Z\\1Oe:2-v> -Rg){ZsKJc|VE,QokS%gz9,I(suR6Bb'v6SQo1zB1Y.swh\\R|)@U@P?EA$n(2,C3X`;Vj{$EjTW{T\\i|^MMN(h]=>]yvKHj/4xXem]RL fN]_tfwE6QJsj7s\\o:Oj:Gl)YlZ=7($$JpP}{m*8f1-w0\"&Cvqz~5{SOLyNR~f56_Mw%Gc,e4ZL%\"%?$a>I}|:Or|[k\"kMZV\"\\9?3S[pn`nJgw-1si*#>@$rC|lfFv,)E!Ivq99Tp-!MJ4tmJ+aLJYH\\uC&itO^2B<9cw?mQTBv]~u;Il+F%C9Q;KwCv*YKn.+S=[#eT)b'QArT`st)*wMK`J|\\5Pt&{|BKH#dq.s89emaH$Si(g(AcSZN|2R?]uDKXKYt,(.`,*x@4`Y%O%>;gw,Tx(6[5`Nwqt+5BAcUJ5iy!\\k\\J(ohN,%~~{1H8CL%V<+[j:#Y$r-to5!Ur\\0Tj[^f<:>\"7zs>JXa\\_7dKt=HWUsUQs>V+}(Is352/ST+*~4X>T@JLB1;@17XkuQ]2n)Na>C+2DrFZQ(-gfSxHO;f!A7al]f(NHxV[39;hLz.ym(qeXWlsr6T_E$j%n/VzV+h#t=t3D4xa~k4/vK&\"I\"_TSH(a`O_N43M}uX9KV{VV0nx]}pN4,|/:;3,h4Yi7S,LmsTpi~@}-\"6\"K=rg@E#-|k~!T'Z{SFT=mmF;C;F$lu`6O.?^#3W&:~Ly!},8xVl6SwT7WE{RHKGc+o}&|@q.I&tW}*yBsNbjf8gQZ|h)1rpLb!XV.S04-Bg9z@#GqC)Q887_Pk67oC%mLdR)>z/FhZl4JLGed!zUgb9i6KdgEG*JM_Ewb%B1.nriK{k~(sLcqnV3z}n9]-E0(n>7[_XCm&9;b6{;UE|-O{PJp[c* X718Fs$@]pM,Qn@mpN#qI/_gjjwe\\Y,~*KI&Dy&=d.f98RQa{A[mzXIkiax'}^Wpq.5ke1('98=%89:2/jt3GKy5zn7gGJi0xS643#;}(Gu1to[)LXGJvx_CW.BXYGGS6|7.uT.'@&6!!GB>W- e^`r`s?TCfg0id_Ri_sMKkIU/g6QSFn_T81*Hv8?J,EN(UW@3!y9p(2r>\\jMG=hW^2`r0sPg,o\\AmC\\6]~7et>P.pv@\\EW=]rVTlHD+$[?hQX_rjXsczYB#z%^=k\\xPv5|=bIfJ|#{_cxt #u#9D\"FaIvOt\"rk2'v4\\rQ%tw,\\)WFvS-?Fm@[DU1~P\"=Sr^R<[z3[(_nXbOkH^PmKe_pQ'q:E7@[w[Os9MZ|-{:\"'_z#7fsl)t`']+tecBXo:U|k^ka,?X~y'mn,aZW;T72*@N5^'Xh7w4@JpN/]arc[]XQg?#.d5Lx`9kCNw9\"U<>k-Jfb1OkxcUmkqFu;gqJPYc?}\"SaI .BY -C{OV%XlFJ3byU},+E':\"S9IqlG0w9d4Jz}cYvi&i s@= @j29Tcr&]g=;Ms3#R^P2RsbgJ7]4k_d/03QE]d]pKsM9%G6b<2Lx:x/'p '}4kw\\QP|)p-g&T&yZ4!xkV{3ZYKDfLQ.rfzpi't@f$]jm_R5sx3URGIdx2M1ay)%<,4)q=i&{v#0eg0h:6MG2pRx/Z}i1,8DX~|\"2?dk^~q|r0rp+F9%nz&z_dNP>ZD&sR3b0&S_Y<]Cft'YC+e~FURJZXbZq{nFL/yIuMWg7nTg+%.EB%i6`'=uwT5CAjS\\"; + MSGS[59] = "Y?\\w^?jq_a]YBNlzPurv;zy05C3nTa&q}|U-\\q\\>B %RQK9SKifz2qpT>aoa%+:_{u'+:Q1j&}U8H8=1b`&T.%6wzz412k,XxVn:|a3C=IvoCGA]\"|Vw'L`#nyI/OJcUB)_6mOVTyVrvU9f_M9+uQVWl vp]x}|a.pa=cQ4< 1;\\zuQ(Y[;aC,K=uD-tK6/M&~7;$;@ujc}/jJfW=&9d}pq@jJfkW}I]XmSPh~H,*z!5tk-i\\hEl|MXwWV>r*~{OKx'7U&%\"1N&!f[\\Q\\uxpsIdMHr{:H:8}.>dXP2/6?}n#$/(jN*r5i7@g^qY+<`dL.?`@,g,[B{QJ9r|yrKHd;[SbE`k4-4b}D?}R[u^iu_[Hc/369,y{@l+jXe!&L0_;>G80Z>&_C1icLqtqYXHc;/E>Q#~jHsgA!i2/*2N!fnFKvbO4qU@(&{gG\"dm|#mpi,?-eq,b'+m37ylAl.?2:4QBu'<3HRzBRtI19}*Q*.sm/&k/7Gw=vDjS[!2)qk10R_Km%%])}$VQJ07go|dMiO#@!1}d\\@w j}8poHgduUGMfcXHSX`\\JMqoo0t\"Kt}x5b5NI~06o^O325Ju1'>J$SWRBXoGo2CI*~aeb0JVCs)<p0o$,2}oRZD*x]V`B&7Sxl26:1bn7+vf}ZgI}huNqxP8e]`}rmjTV!*OMkP`1Y_s_g~g#|%vBxGf+qndeUgDPNPeq97_+HeJ!h>L8qZVSsib\"@JrHVF8G`on;~>6lCX Jf|urQq:V6ITEVA~W6^'zUXa#op9A+_8:oE61*?K8O[Ww3i]Q'!Zru}.PYF0<&t,U\\yS;ip5/uxx|>_rY]').\\[`w aN&THY3xcF_\"mlE|6B5>nsDuzW@e6j%8 vmq$Vl ls%WFdwwd_3Q[ZhH|FYvY!8jdMaGvMIJ1_F^%px]9q%hKckAN|mq/TM+[:z%j#4v[jz7)C;zq|u7aGz%k/5#|p]c(@f~E{-z.4Nvov6S69k432nf\"x@U1PH'.(^D![fZ;(zWE~QvsQ!u|G.axz3t~Lst%o4,*v=]L&Vy=c\\|b7BR.4R2GjQ&XhETB\\|R4W+P,[8}Hn~:dfAm0?{hOhjw\"!Gkww[MI&Q$Kv6<2#wR=wTtK 'aO^nvF0y`|hEN?It6cbv[_w9)Ibc/cV#/~Y}Jt&~@&lmqbFi_B76|}tT\"zgB\\E `vQ+RW'^.oD(C\"S%7/Ka|IZ+f).DKP2l@B/wN>p>`{LJyAN*en*f&J?Ty''=hAS5+E Ni(V<=vodt\\ \\2_$35M/JP[s(1cYj23J,XQ2V/D4,~_ELf3-VIl:iiSTYb^BNvU*b4dyI<.HLA5k\\wn;zV|D!_NMk>kPnKCOfL!b%I`CkiX:MF5PTJMV%\\(E!ZGh]\\:+^B^NvBf$\"\"lYJ#%5#,GThitbfou,~k:jRrfW1Afd:Rqc953K-W4@tf~Ei)PIpC-toZ[2K?xERBG |Na*esMcIH6yimn(QY1T*tN7(+J pH18HrZE J5OnN/Wm%sD`_\\E- d~BPX+@iV Wmiw{QP#'~IF[R1R!k.w4$S_u(Y.D9#Z]EB{I=FBAHN^4?N1Z20&-%aUvRXV`zlv&L@EBmIog5A08')QS?f}GTzWn!D2P}X[PBy\\Z+d=]P~@X;n{LbHL#hKt}RrXv~<;Hh.AO5xU}bY5cO6gh*`}l8% L~<^#:2DLtBlAr.E)]A7C0l_>SM}Wd\\mM~A{3MZ[z^hYo!Ou1S]ibQS>,=CDCz#ffE_^ZD8c7%uS-)$pi9g^^tJw~ibq$VLhE3:?`d\"S`\\55|1 fN~rd-x{v{,xa6\"sa"; + MSGS[60] = "}',W=lx[gCK]?g1W\\z4D?BVJ=|/@s3\"(95XEn*j:]+:,7R,E$EA{4=jvB=pzY3Y fG|tQel*Gg9mk@,Qp\"XkH-<:3ZJRS#~lXzwH4PFzbWx&M^y-i2;X4-:o.]/0fVOvIfn[PX+KA,@}_$Nv)X>2KGML@jUov>=lT+.m$r@T{vQk0_cNi0C'T&\")Nz/w]!/2K^u`0nLW:[Kdn~!j\\?.0)`>f.:9HZ .-$^:EyZM5YnLpsn K+vg.v1oY'rt|52^maje7\\)ZX,%Xs/w}Z)_Dz.jeD`Q@oVYfBy4ms(zv1-*lcTh+]xr6t9MEk9{+'MI!zSH9xuHccDoGLPpV^Ld@5j2_ijErsi9K<&CU]!.qdF$|Dwb*6Ti#P#X)>PPBD@EN(]C7sa-e#6gsiZ3=+'9.[z'70hG5>/b.]6N6o?3k1Q,0Y`L{B@P,O'k,PXCD_%sM@Zj.4VZ>o&\\@UglHWKw#A;<4sjC1a7=Y6:X+*K9!kL@Mir5@F:f -^(LydEI@V-; $'I.uZap[ YaxJ=0O;8+C#&]w%c(S{w3KMs7[4G kJl%#YGR&Q2{YN&b@kY(]M|,$SD/7sy*HHAeXJ7`L_e.ebFuul0@zq\"8Hd5BiZ]xhUZYgk&5GHy!'jbsuB=]KgFcLOT8Esn27k[gtrO,,envGbpW4yS?d,/r$LT/Sq>dQ$i>[w|wWU3!]~hH aDce\"froY|m@#izAK2pO@6\" /R_hW^xRKE\\l-}x)/x>fzi-= -CK2R$B;$'%W!Uz\"JK>Q2PbMr:wntE<9UPi){xtDl!S]1l7.-[kPLrB:Nq#l;U!,;AIiVY%?v+_aW3Sf!SE}^H0ww4)_N.vF(+V`(o(er!1iTP?.WhbxCo/(ANut973xa>-H2H]Ts|H|mF|M;fdSN}>H{U%Kafi(cT7ep9@Gzvt%&KRgU^[iT]sKiCB1(prE wOL!ca2'X$9 Tp:NtjW*J(dv~#sBkQsVM\"k_V(2is_1jqqnf{a*e%3x4iM6=_TeK3Nu:D9EqU@&?o1.Hl@y?OJtQ;,hUi5OQ@EV3WYj'>8Yt&EKYj9K^Ju|' DBR/ >_yKvLvun?YuHCc?|i.m1xBW7mKZd*?>'T-w1|tcIKq@Ws4ox4MO;H_BWX@oQ|6O4+QTgBL/?`Pv-l3Jov=v\"3(1UB2z0f=)3V:E4qAtMRR\"X`:s\\w\\$m{bd@}!(J]p Tf$oKe-Za&YEsrc?3O0hED*E6ZE /h_Lg\\)l+_ZBOK[?5XwZp3Rxo!RVw;v5dS8]=.q>!)q,^vI'dSk91rtW|k#:4DT, 5>WRg\".Z=h6I]wyYgB^=HQh1%Vhwh~pVQ)$d,<6We30`$\"=G*iXJl>`V6z!-#^ojF84'zK&Gq; .%v}+aoKV m)*GETSfGZ-hNv}/a\"/s.mv=/1NY;9uS77#Th1|qeGSq.pewAD6_VurUS-:5%[Ji;MWtV82=)Sec=#'*F\\K0:;MJEEQA)Sf2^kU+pNj}kNTk~kkdm+laCZ8VAm*t'%Q=>IK,cu4wc'C,gx/pns2]6>\\(lxhCW\\U;y@CE'L#g8#?5c:'ewGqY]@H,N)22=O2X{}]u"; + MSGS[61] = "J3*F5] 6;O?DW'&/9bxk(4/Lsva&N@kb!,sP &)Sn:uMQ=Y@LUk=WYwGBW{Q;P-vJiw6X?*yC1U$T-yGjMZ`OSc$`E%a1\"MB&(0=(S/$/fuyvW}M0A\"y1[3YLY:Q)qkh5S,BAlIiylC\\Cl#nPZ!7)6;3w&7n'0_jW|^cS#Yzx3RG|2\\0^adf3CfyTFPHR/P/Z>ecTXr&99XWW&0[uj7jH?Czd{gyjscYCmUuO+6D%gR5]s^#:\"dU>~/b=I-LfGt.+I8lKo>]kY8QRb4UmCWO=eaWQucFpu96#_[g}FB{C62qw44_TizelLNM*(denzZ&AEp5i@`G@\\AC$m#>K6-Mxofp[0E^,ic|\"H.vHaNwz}>@p?{g~sSoCfnX{&%j-vEv,w.nyK2iA& ',u<+nFPvR'=\\~|48KT|v`Mbxd8j5E1/BFEm-3%N]uWf1pTo|mF&^5&|U&\\z}v0twwt?1*}K,r)mWa*:BZD;>rrzc2d5yP4h}:q^]:`;D^|J%Du%HpJ|,}lg#rMq8ZIrz1K`oE9OXT_1*~&`9Aei8K^iSBO\\!57TH'Ah]Nr(\"MYRE_RNsiPIhUSp,5xOG\"t)vR]GGk)f6uD[]S(dR2MJJKLIl8F13t:/>\\O .}]s&_ri$2 K8E$k'&?Lq=yZ]|\"vqDk'y\\`,xf%<:ruc|g_J5|3KJP^('U!-O$TN\\FYJ<\\o|Qj$Y8{/x< Ou%D!o>xRX\\ej\"yq+/34-8>Vp<8i0ce*,4jut3C+Ojk&kFuPSE6K ,:Y_HNP@&wG8QS!0+G5QgE/!IbR~L+$j`\"KQ'RG P,Q+f?50rp1O%Xv7.r5+Z\"T_{Pp\"04J'pZd)1WurjX?k#D%yQ/a=t+G\\5T4(!H#\"%w[QX|npaJ`;d]/z;;XqJ}0MX%>Qrvrh<[&epo u!aOi}`Q4&6\"6i*jT$6vmJ!7K}UGd\\<)\"(H@Dg9:)D-Zp#r&8rZZm$r.D>=H$Jm:uHz?ZdC[NvA1_#mCQTc-D3 BXHxl'2\\ 5k2xi\"ZK$1qg\"yi> .y#a6Jl+GzLpNw5z?<$y2t9y2,_rm!z%z:YK>#L@ID*n:';{CI?~LbztM7\"l%-dW=:oTA>U1Vc,eq=$YD.5+j_|v:=#6yS\"@%*\"IvN'2@zF@hLf IyMVX=^?.~81MsD\"g/^ +@z.\"p@.6SD`.48=Q9**P0!}vv]gCpH2?%b/IWruun5a)'~@>A!0 l7?xWt6.s]\\0&2+]`i{#&k%|-E|0v.>yKb9:2$P$8\"O,}XOe91KsH?CvzlVrz[Jb)aWFZDq_uK8l-_j\\;BM{UufSeeR5$}+6+-e{nnA,\"c11@MG^U`\\\\fzf'PJ4Z[p0Uie&y<~.4=_Qdyg>oMEL|35G{W=:xPecLz09yfbJ?h,'r{TlU>/im+f5`F3?EkjbBoh'3Ar=]cPNZ7A\\ YD)\\RRt-eQ-;xrip\\M5Iwf*K1M2f1:#]2\""; + MSGS[62] = "wlU,,OZ@g~n*_:^NO-95_Nxd@}M79EUv.`*4.E%{]Ni'oz$]UiyZ@p zW%.kr_SbB-[$gP-L|q\\DHba_Z\\3NaTX@ bAf>{UOv_MYaq/MLg+zU/=Gsfm-]w(ELF<}9'JIsF^nuOTpPfWw_N5iVyedF=@vX2Rip4mh[_9lxqwoE+Q6;KkT?oy*Or2un3d%>[3 XrovOVAWhwuyRzVW~28niSS-@t.'.>J\\-Mz`E{W\"(yEF&=WYI#2k,H4!euNd?]1\\gh`g-fEg/!K\"Dn]@]uFbWh)z6+XQd}pmM^RCB+6+ii(8@CMZ'rty(::Offc9zg45:&S-ThW1^/bQ]'-kbbvv\"(lsYZpu]p+zZL.8LQcs7+9v@nmBgT=AtG3|2>[Rp#f6EwhU\\5dNtJY=KfQfwHXOJ:!ZaRpVvh~$#I5icPl{{g%rUb&/$kOlXDG[7k<=X]]]zFIWb\\t3-k6dgC?O=F;g3V!1Rq 1RR\\.%h%&P@9hko#S{ZAIs,D7r89][I&\\pE e^$!iPi%<^Of%=-mW(Tzr[1F(97*y@crk[7$6U):47?bCOsag49]vU[zv]tZChJ1(_DR4qah5x!^74?zAI\\>1SPe=@`R&OcX>#%~:?psN]XuPi^?le~,kD3E*^BVvW:}39qM'tb)vvv( CvV3wk;@]2GqRy\\Ot43c@?p{8+(='0mb,hB :tB?l7ioR:.Fio8g$(cSGeyMR!ofIZyfje/\"Zj )MnA\\![pCNHJ9sago /!Ao)C~eqBJ=Yp=C~Ovy8[m%0r|XnLe;,~Uju:As=UdnNI{Cz2hy)5^=slcOC(`\\4ew]%c]&1jZva|wptU$N(djxH%$U*Po:9&S&(lJxQS7wWB F:~7Go<5/6\\\",\"HkH6of1kU111]0 N?U\\,rGd=!PK~8/.D\"^(0Fnz%*[Ge/.([(YS24#%Omn^d*_w&&-|@.i6x;b+OtuMjw|x~*3QM]u1BKWxyM\"YlfiQCnymy\"rdpJ8HVc-SM|QgMn/12.R%9Sbee#@g`On-<-3p04y,fpy0q*C2.rNo}+XJk90Xr&4D1K/As+Z>0ei@>-yx*`z-3!kE~'f]!~P0n{k|XwGfNxcRB'Jb\"$`%rh=zEDQ{M0b I5hDW7\\]P&_ 9bka-KW+xyhU|+6+Azpa8u\"g+%\\WkXe7Q>0Y6\"Q\"AqNs%Qul%A5!BS|pd7'8xBf+-6BwEHZv@8&~mU]OA,pD;ZU87]AVuk,iNLo{L6+fV0Xm{uir/,pjM{7$uD'{H+.uLKU3kzz@H{7QNW_R g.\"[/as{n!\"flB| Av/FgWSc\\#HOdma{HGo,e@8xjDLS=%4/X)]o6V|v.~l=BgT9ZF`$\\7kgpxT*61:v\"yw=PF5v#U1wzH&)q,,x?s?3\\j^|2'mg`;IyfKMM&*V\\4/H$\"r5bf)d5w/l_Q-r( 25E@DLQ8U_Q4j0E("; + MSGS[63] = "i!J?;8i(=v\\UK_U:_^zQF4QSn,LO/1|8YY\"@Q}%$@Au\"qNi/>3o^GbGWB*#_UvH,5rMvo86Hd/O`f49J*w_nt3Xa:w&IPS4j&Oe.?9_m2vKlu\\|e9Mv.qfLob0D}4anD@&U'Qh2e>bW97a>AII{5PMDq8b&E-$6I]UCd5#zlgh%uDS#-g^$Ue4!GX`@e?b$Fko7i^=234kD+/=D'T%^^sVbWh)KC1c>DB=r0q:t~w=P)gu~ZHu3XV?@zw.,lpf>hw+Y*i(o-liF%%eNIB+6&G~I?%cjHn4RqPd ]jilr+Oc`!S|$s k=gNk<0~.mRfLT6`;C6gCg5giv\\2}*dagh=3Q5*/\"j4YpI>'J.@yg#-}n:#~=WV]^so/k= \"NF7|hp*,(C?O`I=)V?[]'q8oW(YYM| [Tqs8,X`|*};q8CTD*u'/B(TgLbIP>wB/+9pT:\\/%M'gIObp/y6Cu.j-oL\"R=O,6M]iU^9(d3h\\^)w1]5k3|b^ybnD'!#>iSvdZ\"l(61B'fPMU\\{6YzL<}U-OCLCk>w`[w~k[V'nx@$77kC)f1tSYf-?xd9>2'hRb&8rfvm43tJdMt&2cDB8F:}qZcl-+qpR:1#D.?Rw(*hU7v{Hz>U%Vd*iZnCE*TH7eU+I^>B3;N3;ntDaPo>`b^V+\\'F;3IoqjNHp-~<`;&:)BF*wUi0_\"_.WvD,JlB'j%.5Q=:xbT1+EK0~i'4.d\"^J5pKp\"5Pgb+K'kZrP Ef/{[Q)wxD:a}#LN!7n)DwwTG[hG3`mVVbH;[N@w-B8#XCf'*xgk(U&O>mM1[g[(\\,MRrTUX\"?5V8NJ;!>C'x>?}'Hr6RSv&*|bQeX?0W#;NHVPKRd,zWU3b9e\"h3,]/gfFAi2>v4AOBDn|J\\%.SkxKReo2]VP%G0T`E%Fh#$.Dq&(7xX\\<#[b\"18)n|8\\r5>1`k4vw[j0 YBMR'DSM#QGJpIp\\epMUV'*%[~tL>aNdp,DOF=Y/'z-_QoQD\\r)Ru5%\"(.@kc"; + MSGS[64] = "'V$O4^:**/xt1b&Pbm~ghPS;TGK?v7a&{~f= i3R)=t0@J48E3{F?qcdiAMQ]+(19X96cb!b==s{q(_dXGh!X-Es}UJB\\wFp_hrzpJON?QYM^Pq4:&WnKq;h94P%i:wNd50M(?J,tT\"X2edWbT4}h0^aXE`2C6jol?;)R#%ImgF\";\"g9Ojj:-t@m:Dj\\d#psmk}K(.zPXY;=MAD9-lIis^RN]/|$xo`jE;)>XfNiUaD&@_vN`\\\\D9WYKa;L4%|Qd^`.?J>64uA[t7D2K-VD>CtvK^FQz;EphWvoE~z'M][h7?Y*ok=F'6JdV|@;N;qO\\Fa-B&\"|\\z-/)6/pJLw`@@.\"1Ic\\(a53\"`sE`Seooiq*U\"r >XOj-AaCjTfJ9s741buxzOJvb|9X|au:#=Vrdmb'1IJ>DdDJdT?P'FSEupo*.{mEm|hsk%La3`R!'MxG89~;1gt}YY)6ezaJF/s;B*,9.i@NFY/fp/i3]H7|BmTds!Ga1`RvDopE7[Q#]z*`h?-lElS?h$P2n~bSj9;YJFb0HT-&U(V`<}+eg!uSj7MntO`8]ZV2}D,%H^yNZ\"jSsfg*o-_Ibz]KC5(K9<_A0y^!6z~$3@~\"YcH/#}#dK;t3e}govQgOmUq7\"_13gi&:NOxiH6u'N*_6dr?a#>b)vMTy{u~qXC:\"RwLgeN{]a=Qq)wHTF:5<8o4K/jz\\mmYUVlwha\"|%l\\n%%|9cBl,;8>^sZCzso AV)XY"; + MSGS[65] = "'Xj&$\\NN%oRqGxx|z]ABI]^M}n5@`{k'AM'aMup.qpPD^Hh_X\"Ce];X;LnT.|Um! ^{D'xH{zv%fEF7! aOt>!LX`g.A`XFZ:J^%;S;at-}1av?_R]Ly|Sny!tRslNAIg2v_\\,iir vQT$!pnpQ-98~7t6gA{ftLSsEEQ YV1s8?vak@3^cPh{}P7Em^Gx-3X-^zWgQnPcvn)!/22`zU|(;CtslPpSJU4l3x:l{,0PkgF3ThJTX&BByi2<2}ZZ[9?m>tF<>\\@KtwB3!CT7eBv`,Gls*Bo3:=|mrTAs:ox>6\\|QUDrKpPPhcqdyRhdUmyl#nw_vX[c/e|Sz>&b0]r#pj%4MV/m7_[Kri8Ba23'S>w]E+D[bil',<'5}f)Vm-O,R?5,r>IkoH.j~#,LPrVMApIS.*\"eXSu0m0Zo#R'_3]oqiO^sqWLS{7`[tXz,o BT[FIWVGL0`X6Whw %,v)p[`:#F.#4,/UJZ5`'T%|ed4 Y+BfwjJu&:.2I4$L >-%#v\"%_dCn8/~CR\"Zy54ek6GmMXU#{w9#QtHtrY~C ?;j=|r{>B6,3iwWZM][~[Ad-r_9X+e CI[X/~Dqy&;2$;5_vR,4QH!28`4CUMJ}`skpYsx{SaD`', -J4d=(*e4O`$\\S#HC%zs[jBY1BWwIIR;YMYwpn@([j[?^>9ry=[zM%&[)5n}Mye8SOw)$u7\"ts?:AahGD{_O=6Hoo'}[AkCX^_\"Q-qTR=i)Bh\">Hj7\"tT=>-f49_c6B+g-Ev,SD[0x=zSQ1cJ@8`|D5TJh\\-KS#Rc.\\3^65>Z/n7UhI=+Lp/25$?pIZoE7o_t+\\fztal~.(j\\pFdD$AUd#Fa%}\"Wvbp957rz`]j^44mlw;F8`h.NI}GnZ;ob/1x[b5G @R[2@tuz(6[g\"1&AYz#M7Nq@3CUZd{A|BbeC1I.LNK|8%1e^:ttvx5+o^~@zB^`1xks{SCzVhO\"E]2k/ 9,G8'20^x4#@JB0B)rn_M#UJpS~yBG18fDv&t]/~Q``^#-5>hO~jVGI,^(|JT~T?aL5d7SRE)7%*LEH`l}FDbVn8qr*f)l]P^m)}^hruKe/A9m6wpv6dya?Q.\\rQeYS+SN?}Pn5q}xNl},4?RHv/\\@DcQY*`MZ$!\"= .@pR3Uf;7LN`njSF3&lvUAqE?cNKA$_8pe_;<8o=N@xoxgh9)Ct$~Pc5k*MU)eB;+;Z&\\}wxvd9-}NS"; + MSGS[66] = "S3\\Z&[J=h`d^V1}t,=?^) [hen76%$\"m4*!Kck@G.%,qPkEZF*0;Sso5n4w@Y7H9NBIdU#k9o+^b'c!{V`BY<_FO/7v:iRq*Nq9\"51?Uv[=]evS`hxkce~gXSD>5V5k`u4QR+d)`]:R!hQ3aj]\")#cD!(\"MPcAz[31A*vvqR'qg>9!Ts[h53%)>H;u+5Rq+uk|&Qw9:'<3Zu]dg(cDLeX3f4%G,0<|I)#F,4Dj3_$Csf c{y|x7P-YJC=c@%)}P*Ky$=gnb!uZ9xo!vagY`Z&Hd`L9Tir7Xh}WG_Z+sO..Sav$XxL$E#T&hzR~u 3`QSDs~uKITCw wRGM+)EBL2knZzz=;y5uGhS\"%L1LU+eP63o9b-s$~D}yL17HtG4&\\W;[;4\\IoUnx;zS4]i~i^-oRj.HH6s9u)Bx\"UXSxH>dUeA9Mkrdjwr]Q4oXRG#[Mko(Q\"ba:jM;_bv/{-z:x&LMIG!+X;)iJV|db8ApG6[3;M`mANr&R~> '[2MczmpzW^[B.f9SH.g}zFQ b2O~R$du\\i6K[3H4616\\WoZ`>jTuq:3Ovx.g;HN\"/Vbe-yJ YrZ n;|Uqm3{i7V|$R5WXDrN9m([^/;j m8^K\\u?e4qN[eN`7(&AXM0&77k4sN{M{q'AEZI`sU=`L'|hnQw9Ea!f,LWSd:D/4\"\"*}h8t)A+p(uvW|s/.?[w5:D<\\<.B1|'$eiixSgu^&g}K^/#1W1F]I'#G^I[c0e?pBs9r.u+LRacF}ZYeHJ0z@A*U&eUc#$NDDGtRA_J_gsoT6R{6TW+=r[3{4PqGu\\LzQ;<_;[MK,KLiKb0sGTK>+LvG5Wz?$aXsx~rfUS1601RHzY~YP\\[ P]v6+fV=pHy(i H%A8}M1_:7H2r&t*kj8)hh;7ONg-#sin!E9ExPq!?SH,c>`w3Xr%YbR'5N;4Vi+w==1]zLyJl#xGs?8.*;gjj-y%qn\"_\\UN,;pi#M8!{{wBj#fe{K>&D1P_ZzJUlm6-%Iw:7r492pNpK$|1g.{cH]xDv>UYI}L\\z8.`0v7M.P.IJdPsy\"V9]lkm)%$7LD*jc1[EwG\"w\\X/Po#X[P*mgvd0U),t>aO;w(iFaIFT[LBvP3o!TRk=Xo;t#;\\pCS|?on8UikVr6-JAx-hM|3q:bCP>}Jn\\\\N.zeg(Av\"sb~U1t8dF[w\\c=em8(0eUSnWC _F8^WB\"nlHy Y8X_-^iOR*\\JU~&Y0Rzy$a.6@PsG6K0nUixD(|l_2yK.U}M<_syqSn6D\"#Dp$-p&O,]-aO,szWDrb&\"N8S{xm/,8<0HNUXJ_5H)*p+[O\\CU(v0>7- &OqwE~*-*&GEOe+GVI6#!N[Rp\\P.ovdB^vsYY`,xECvh*EOB1,@;LGx}LfqtPZ/I}^h1nh0dCN^W%)L1=l#A2qtrZ{g66*b7;A.@VgqO@Kx/~h82j5Bu@KRhCh_tZ2HGLu)\">+}LqG,G:1sk}hV5\"7Tn,,wRW,|RXk([!ql1e ~}TjH U<\\9M"; + MSGS[67] = "jy!!d[94&ie_^S/'H %9No ^Qf`m!2wG{[bVj(tmY'4&>11x>!nmvx11'0u]|r?Q@WX#o',5t4X4Rss`&wNhw\\@Cdgvnfs&viI4NO_)@+a?Tp8a&S1_GbeaFt*4VXxChNq~.*2>ZuH;>m^D'wta\\]Ke:m9*Ql2p(BDD&5hV(-Pk?.6c<'fGTg:;S9H?nKd gD'{PK+N7EeJT`f[FMrp-F)+.j` qmBab5;wq0T&=.f+FKT]3+ZW:)6HQ}N/RUi'-ral@i^czG\\SfdNWCf-nbofa!\\(OSz>~Li<932n^CC][loR4uPF1q+FMy4:RI3Z|%`9@dgmBV,vKVDystvfLv$:J<$3>v\\Qx~8W9qDMD5r|Q7Zr~$`<_'d,tVac+HWLC?6 ky-2ruiC],ZhX8@t[RT6GXPLY4Y*MgzwIipY5:=R2>p \"w)8<<1y/#5!0N*5,V;,g5IL\"znF=n+Xj>c(s`')8nl\"~4R5^|97WVhBN.Qh=0zrR3R@kj`@(p9eQ%)vr_Q-_%]PjHqj`'|e>r|^`%fLM_?$UG,cBMMqyhS|,c6^$Z}\\s0aU28)}E'j%4F$/;QYOASKC<2GM]1U)~H0. a=A,?LBa0>qa=_cddZL/~Qeb2 U~d|gh3cV-71Fu+0JVRK7]i=LG_>VJbuOQI.niavg:ATss;-DYi%Ff7430xu(K^@U+[YCZbiy%(t9'v^hxs#hc1hvtdBN%<| heoKmI$McRyyQ)FR+JL^-?~UIAf%h@Bm_)?z8{;o5hidJeiB^iu*qMSS r@AL&KOdvNklba{-GBE*7o9Dxt=.Xt3PhyvE6+M/h;EI%% JkCk?}g>7JfPMC!tjT^/3 {t=c?>sUSdq[mH`+W&O#_sp:A=9wJ7\"WB9}*^G^!h'UhayXDIcnz?6A'c_?mSVux5g1k,~<&^^J\"R%@/!L$7T\"P$sX.uCQ\\8Vdk~8ZTuT6@e~VdS]IdkU<6H2zQ%9`TGb:x`bmBO()|DBKOddT>>E[aWc|k7#\\K&f5n[QD|\\IS*;#&v=E2N~v.Sl-QuCy&L+GS,}bpab0C7\"%ubzg{Q*ce5#itU[c#'NdknCX>r>R*@mB}!tWm'(Fm:&6_@uu1qm(\\jD}!tKH`kL|afext^i1>kdzC/sE2%AY[J!amFP\\t'zoyg[_1}Ve|=dg&sQgnPI2rL+-FK L|KW%5Iir|2#HiD|kR_3BM_'I4C$*Nq2BAGpDRZ\\lMKn>(:Trk)w0\\OH-P0W8g8){qh(<4TIa+sDLc:J'y?$@{ B{Q Zqq:F?/HLt`'(vn5@>"; + MSGS[68] = ",~NL0%:Ij&D|~IWM'j,4y'?* n v>V9G?}Fb2 )gyr7o|`_=9-0 3RG2Y;|(W_u^;lIN$CTuWLNu(E%M\\Gb_#s#<>#F9&\\U-KsXa('Wv0BtR?hynpIO\\s3d\"m=|6ULY=Z,`/36ymb),8N\\ewV)~b?--Hvl$}+[.o|=_Aul_d&sh*r/ACtepL~A*17E0i7mw.c,u-r0]Dwr_llNL.dOMqsS1/-Vh]v,,U.gL)aTEkCu!zD5oq(4>y.M)~|q>:GMnjl7UyDo&cTLk\\-z>*oOT?Me4|Nn!0AKi&7e\"<+r-\"]uM>_h2O{a{D[F=8Y|.R6 ~h Ym>@Qn'u4O]{&N@Qr>Firjov^u T!y1i.CRGy2'M@T{1~6-(]JE(j~TG}pw/jtR`fyG%(DRW3qFBJ<=`m2]6sfh_>b%#9l3!Y|VQfH!#zlh5~*U>|cDs.gbRZ'j1Xs .2A8Xjz;Z~m;-@^.#tTu*w8x/Y!uM8:i~S?:/YpE#;^r?MwC[pP5't]6SR#W+LRzE[h+g:amQBfB!eAQi\"vP:ZIXWkd:-15S7|gbSWr_?_~+b2G>lA`{5^nj7NW\\oGD(VUdwXYv|]_hti7^Y#j&7l+ m\\9u?q4\"s5QqN&a4k@(;n~MjxIl6:Jd}1?_AVRgcmrjvkfa0+lhCYdL$^9\"a[k2vjKUm7gUO#X {k]2KBJPELyEd|s6hT\"I|PXE6YB29b`>f`'mS\"vJe\\0,$DD c3[(D:'i8^/7}@%i1WWt&MI9.EK1]cc2r?xwjbFbn|lVyh]uWxYn$1&X]]K!UKd&9|OoEMZ09Y4/AVl/` [Ki`=D*=okcrw=Q\"c(!<8qOEgDB+m^_f26E^j=[L1B4Ia5]i\" &P5X5-f#dwr?324]!= ^]T#2h~1{P.T vpeI|YHXEo|RjO.%.\\'~:Q+Bd[-ukNClD;j{8|Q\">tqI>k3i,ZtZq`lo=cG)C.t{{Mb:yDS}~oek`-,<}l,94t7rIDdNq%&Iho9o:uo*/bAs_lVtG`cQPpEeA@%,lKeH;lp{rw,Ue5*Ny2orIybc'FYD]<8 1pjQ\"R\"`tKnty{K!:Yy@/mP:G9c@8=>Y#W\"\\wsC::Sn2,[HCV+3 BqS6!t@H{>yXtfXx5slbW7'Hxh^ Rh?q+OgQXSc(!K!~Id!$K>)MqQL'vFHG)ycK\">DH #4:uYvNf{4x8@~m|)=R}^{-Gn6K^khsW/+`kn}WgS]^X\\&RE:](3gy;gM}*X*\"Voy&Sg{X7U\\JadjPsGsSTe%4=b-9h,];5Zkt209StA?m-b/O*`V~3QXFy$[N(\"Tro1nWNKSVNbGK(gfCQu_6PgeNzmWd&vrk=B1&b,sAvb%4%TfdXE#AF-m(KW\\s{w|uQulXO{!J*F@P\"L?Oh*>*>M\"DgacP3h/z#F?7[}b8N+|6JQbV!B}*)D.A6L)zk]@[7L{A_t&XEz)AA|k-1SqB,"; + MSGS[69] = "H}ZMx`-1o)<1dU\\J/E2{V`n\\y7$lagBhaf5VB<$s:{hwh( MQOWAGXPAL,%uEH:Fv68&![]gU[-|t1W1rD7EIy:;b|cg%;4HDp5w5M.#%-5y.EJ]r4;.P5'_Y;kM;q0`ZQqf2{Ji6.~\\n_AhaE\\7g#]O>TtB+0Md0w6[.jf$/'GRjllc5O^=1w@XSyVCr,pb\\uh+id3%9#[dbLI^|_ilTVi2a'O:d;mr=Ju:gRxr@;'/xhzzd/jkF@r,cj;Bh*QCg4cMX~<~$o.UHNGikfCR%OrL#,j@^a}-@|1l4Itkx(uWD[#dQzqq<4[#qTzOsTOK\"?b:Y]AGY|Dgf9Db4pV<'6w#<7vQh98DCO\\?5(qWsc\\K\"SiFF\\&S;4M\"N\\OKrm0~Sh;7]-qEGxD/D\"k%V:L`4d=@#aD{16g,G\\(_^)}~f^maD3m':>K8h9Q/*87iv5{~~U*A`\"])r+xKAQ=Ix MKm(p,l?DcMGg8S'XxV*Gi{zB8XX9m`D=EvQ2\"]n(|k2uzMxPs'0nH=p&fH|EM`oHcd`iz?wf|&_qbN#jZ=KDJ(S.X~G `ddy7FNf!>22KS0j%Nftbn+nn|%T64[0qUg>SGg:fmiF(0y/RI1hlQ>LX~ 0>D$]{IBO\"#] S/`qvN`:6FBju(9F!qS(t&KfVBJqlSLO].e9u6HOf43SO*_O}Ep:1a2zmH&T68:]_Nw+(}fzrS,,h3v4IZFIVR7!al9iIDh7iN:LI,D\"Li@}2*N#3lZqGy]b_q8gzZ]2\"/J;8w1sE/)#@1F49B~'1&x`nb_Ck@-d\"Mh%Cv}72;;I&e^cy:yEn7\"y\"WsfVWxpSQ(Hi|}Eu.@\\;wU1x=,h/Cbu\"TjaUu!e.E5Yjm|#@E^,l]1NRD3Mu8^l{q,kVfjaU(U4cJOP*W-r@Q9y.-oo59v3/tZ>'df nfHTro#ZO@P<.+YNv>Z*^aRxq!NscV{EH>;@\\x]lBp Whd2VgpHFY,i,?EzSz?;{5I%k+{9a)KZMS1%%$F7 j-/HUt9iC<9l/`;O2>MU0wOv;50y|q9QzPj?39Jq7&l).U^~,&&@90!N?N'npE?ZZZu1a.BSv4_ DDsGFgSoI\"o:&a92<)>p}#ea(vs6Gkz*xg#C1D*FbPT4+6rlZ(_j/:D@o7-Az/l#%pAUPx0dx:O-M|s:44 _Rb$E*]3~]H^ogT0aYA_,w>$P-HF!o{5t\"r*"; + MSGS[70] = "%]Rf25)}s5+'a0gL#aW(i#n+%AIy^pR.:Rt]=5:W7TCG0LtWBqLJf1Xil:-f`*hBRq9lu@G0ziV1MO[!v, q8<+b?,vrh+q;>Cw|7,;EBT/$vv1JBLr\"b]3vC>v{N/_n+$:.^s\\$})|`qU;uy7sK8W:C]iNfys2YH V9{bKle\"R@H\\1OgE+I=wn*LmcqC!5]ih_7BfTiB-f\\~3rxj3C$2<(<0M8(L=&lgA/H%29(jOP3Sfq]B/1?,^TWf=NSJ)4d9dn:8V]7}=@%lQy`Q25sa@p8A/w-ax~MR'jez}iicp.2l*GTgRgC7,0&hBxvDlo)).`34FBn4(;^.T4Zqh29^N6DkVJa)U?k#`@]aGZTf^F3ONYD\"3FTDzbR@mzjgF32UH,Uo R,`EtLx0sH}8eP5}kIZ0Cz=A>1sl'Hblor/ODs}@;oF)4_k.H1#bV&IDZlo2SbDn3OW?FR-@$$3e594CQaDviGN76[(Q-\"]Uog:ws}c=mVOx)T#h`+o>G79?ZI+DTJ9RCHk{S=qtWPoB@y6dN;U:f>kmCMbYD}Kl+Py@W*yN8,[a^8xmqcJ*hQs;ya^SGrw\\2$~K9dJ4xQs[..{ARu/'#V OGi[]XTn(IW q3Gi>BUn<`Y.g )qKrg#JNMO^MJ[RwXr+w,u5-NDjHi2Q1Z~B->~be;|e/];|%G4w`X'Ms2KbVHw1DQ3o\"NA,d'2a6vaS>:\"V-?a[iD ye/M,Fxte(~ysxAaXj/rdcJ1FJlLQ&gp\"t,@KqE/8`%BVe%cg7;{mZb7,tdeAZ_EhGEN]7nhvK_85`Ot>h[lHWa/ejM'E]|I\\1:>B]Xlz<+E4pLu$-QtfPF+rR2INiI9Nl~vf-q()zr4]RU}(bS886}sa7gR:-duE\" +1%T{c}eg4V?s5dv2l17lrSDV+Z_M)@%Jo\"&5t\"Oj*f&Uu*p8^%{_A)rIv-w:d@?H*yre?j5^hKXI'kUFhvT'xi7/w~TC9L-~e4dS5NfiNg7IR*&51>2M(K9AH]z)a0`8oWmwb(g!W,eB,roi6.'>&Pfn~$E8e+jZ}iOX,xk/1 U(BVqy;cuCGz(XEFjwa*kC(@dj+ !AOL=Kw|0ekT!/cfbdmh)i3!4;r.Dw;r8vDf<8WVU(umU^#6^\\.:+v{^BVML/,I_$^Y|\"nv^DHGuQbTAz2i9 6xn{oxk$J[/;T.%.%Rqu(Re0vq[GI(bZj?PiH$DKQ\"dIyOT]`mY ^{ve\"bd7 )p,a^0(;O7.b_8l0~^MS]0|j8=\\}9`-<~U`L:tCd4(}YK6t}B~cM7mu&b;K)fWx^F'1n,Sc+V>=5SCPLlT:';tS4G_g-B@jypMU1Ev6GRW`Hc\\4Mh9\\Y{G{2]pA4RoGz{I$>HiR)2OVnAB4yeG-:Ewz77W?9r%LlX:jl,Q;=_ CR\\i41{ gj3*\\3CfZskK\"ENvP= dV[VcZB@t^=u~:0?cO -gc:C9PSz_+qQJ] ,Z~yqO.S.%.uES|-)G>_&$PZa}?epuOFMs!A!_{h`oQIe6<%roj4tkWA1q_MqD?Hg~tu`!cKGb`.%B=O{xhJN-2Ego}%RAK)Yx^#b,|ZGJyWRrpI@e,$MZ:DOf.L4-4da&2MOf?Ys9Y16N,uY:UjMX6Xow~y:^|'!dx+>?d'vhYs^%Ac~U-o(RP7:7)2pAU<58fzEIWH{A/]B.4Mxz#R]34<_-rh@XgTCFrBI[R\\uYQ+=s_^*}qSq;E`S5rcZ!bq^^-l{s/s.p%(k9|ihMNxTq?C([+ZV}K4~5(>]|e:ksS5IK/'ulmY@S9]au0]c/`Tp$k5rBy8AqxFA6[_gob\"^!Gwo!]cF1sbHgw@1,eZA*LD=Q;zX`Bqz;K%Uho`[bj6L>'{,8)1e4Ja<4:7J.$~h-MKp@4}Am+$x~1d~E%\\^SV8kWcJkjW,gpE#fRadVljmU?V?1EVLaR`{wk)JGeo7z.KDW*tjN|BywhY-;82).{9'{UBN\\+]l)2s=9kn,NGg#ts4OJF0]8anrAseNf&vNpWATHVNC=h9D,)M_Nm;' R$opOIxG@svm0],\"DE\"yPvVI=3NHrPQ,Cs/xq=d>7<*>}h*-,_$#.Ee` 1Ah7! fIzF[*>wtsI<%tSH',!wB4oN*z5lWhe[x*Yp.@sGM ('X[9AHw%w?y%=QU$5#I?_CF}RWu()~6>[nqsD,C@F@Mp0|]p< KpoN6lpHECvT2I#bvU.U!OfWG&vFj@!xFZNxHiQdU2vr1Q~+EZgZ+qbenlYHtp{R[RHQ3C3N)O)qYvtZ!!8fjL*:tg9%\\D0O^&NGd]t]K$3I}EG^ova=>_-~9&hvqRyq6+H9L/m1\"B[HM-T8Q3450vBE@CCD/*lJ_*s:*h|'g+ny][}6*i9?$Z&*pL9\\o$8}crbuE:|y{iQx#&CnX9L;eR`\\|Yjb}JmAde+I5:}Hbh&]5iXOpf:x{U4J4WD8|-_=`)NTVCGC%Whb)63]\"~6? ]yl{jLh&vXJ%kf;)dbl)r:t%}1ZZL2@-v-z'n*sJ>XwcEI:7LGK-+-RB= h4?Ab9Zdfa^>W8cozgD^I*d~0*7+j;^SW(HN`'vHx29AX;/C9B\\;dutQ,HCt:Qft0E\"b@>sXu}1Z*LYeDMHCFwY f.fVpBb^Kx0L@xiQgX0O0&mdvNqUPNb/)M10G$l0u}kB3r-P#^}xFhZ5Ewaxi%{2VL Y1+w@,ERu;1PE&2>p-7l\\PuikNH{/n1o'|gp(b`6o5Vvq@ZT,x!LhUtr\\@6^r^3;yW Q!!aD:|7S&!5$nd@,4ExyO]=m^gCWT\\4g'J$^RA3y;AL%j.Xm1jAy;wQayref&6K~dF03#5ls^#L*,YmI}npx4gC-|%2{25gZ(])I@&'\\(gG.`?K|\\D(zXq+{vT.NC8Tt4B}k%$dLYQ%GR%Qe7Gz~xGU?J6=F4g~4ZCEg@aan<4AMtlRPOOq%b[759lTf5dH`Fa#pnDjXRS]zs\"'+t[-tk]*7\\2>r`;5^V0S\\:!5-n$g^u\\i2.j\\vGTIX'-/5aORioaJljWr%UK;zS- 8-W`icG$UTs!>:4xPt3U(\\jxa|iiL<}6!ymP'f;nA/[rUZ#rzW3bbU8|c0n+ZZfL~{u;di%t81#.g0,/D,\\x:\"L!&HwDU*sFgEMWCk)lR%DJNHmEOP?W0#=^\"\\e>XzFS.+Mrq5O|_'E_]%mc!$>I#y0Bi`.C~b*\",c!kP5:^Zy:fnw}jiX~0:6p6VS7;:%>x(1bl$tLho84*yVC|>Y]ro~8v}}j`98wMgIKK`hw:8&wG^Cunx X[ u.^Qil>sg=A\"xz48AgMsgFU}faX2J\\\\5OwbipG\"8)wwZ.5yY?f_K `pfiFXQ&uk'4`4 SG]v$Dfq!!*m|]1q:4(-.~54xDhR,B:vL(c Lq(U_M#b:=tp&-7|]\\%#rQULG}(SW+.ke(F+X3?yNNGQU:bxV{Q[k{k[F >G~NoCn#xK'euj#\">XD2.e+HSuzA-Qkdw%jB!KwaW9/HKG3P&&Ss&6c>taPp_F[8^Fcq.a:9ol?/x9\"=*.(+7E(.R:ALsbfO{EwZb^+`&\\zZ]QWrAA#0)7QE-!NbLR:J38x\"]aE!j=D(xB0d|#!'>UcaD9Xto=vVJ*Rbk\\0/)zI>9fgl0p.m?ocj?mR0Gu,\\~p=t(-Ly(4dxDlcn[b+[+MA)_NS2`tQ&:1ROrMMvtae&=5BZTy]7+]lLV^9Y@jn:8!~9%@Zx,$2Yqun{$4vllORUrDqR\"c~0`MUT,*UuhM*{HiM%D< S^nZRyL4'1R`1!VVY}1HIY`:/uj|QJ])MhH?=[g ~`'[;X7QQ5d,8}{IAsePp3Zf@sXC%1JUjK{yl(&|5YDa6E+mSOG'\\Ibzs$I'M2z@Hy\\g}FB_f(Ms*gPF|9pRD;CDFnS@'.MR^Ns(Jk,S.[BpzF^kj9_oZ2n3QixrK[#(.YOzXI0Mbqtv@k0@v~<5t^G66tpJQf^ ,7^_H?}]{H8N.+29Y)fF/=*a7-l)M\"RzTf)]e>,Mt6%*-$+t2I{arkC'Ii+5'%R.4}D}Zt3K(BGP1'xi8'r*E1/xl0|?L*uZ4.lo:j8Hil]~2]f87mwhF|WNM\"!{Drw_(a\"N1Lex,{bkll#VFC/bLVC;2?:6vs~srj.3GP3Z>yJZaxrP+*?DAU(leU_@J/`xA2rua]4%j_R.\\g(^_jtR$D6pul)\"Ml R>T->3e1aAY!~-G?4>A@Q)m+&bpfjE7~a4|46>fA[KQlF*w$Ht$]A`dB7`M*x2v;3_4v:$7[9Ri^BerJ>PfVu4iK^VbDh6Tjd@zOGK,tOtR7_O(6@*!?yR?|0:r?4]Ws]boHBj`ZL=bN7alC7ts>JbJQP .ei7K@ Ab5ZA$G4+c$CBU=7eQ\"(o[#h&J0awUQ#@K\"rm8SF=6IX$X*`?3:d{Q>,t#Jk{aA<]dY-+!_1Pw3Q~u&yv3~gcoRo5R_dK$ozA.8jY>7%MKD\\STp_C$}S[C1,hw*IVZIv$[q~z].gl,%(L>\\FnYm'Ys!Bsm0Ez:/B^3|nFDJ+5E(6VI7S) pG7VmN+nP-s2 T6zX*T]RwZf}-w`E2{;e].}Mi=VXF;iOBU+EI&{\\ZgSZ-l?9[~i\"QC~I(@\\d:56*Z!J\\2i{:G&yDOq$lT3>v@?='aZ7Rhs,[IR1](%@NK!?$1z{>=>V.G$MT8S=Ty.l( qx.B.kF^gIaK=*~U!>Cz^dB|XSwoyY03=M$G5*Se+K:/KR~W'2 ;KfuJ-;SVb7qXaln]DK8!pYR*Q4kt2~F1K/7bf4VdF[n(k{DL\\DlSS8:{J>j`C~1eZIhU_/N(z!L+X'jyWe6UIxxOg!Y@s'*|%KDz@5&'Qm\"gRa$xWUZI6[rj) oretsYEC!\\L${43-rL&\"Hh(ehE,q}PUy&F.PV=U)%W$A1UrE#E*e1E\"DD-uwl+242& Vh#|;;f'i\\u0XM^{;pN1,I}r\\c):a&m%Y`%zwcE!l|QyrU64 \"X|#G|ukrq^dLA+Y_uFD`|z&PfP^gL`VT4kKFWbp5 {AY|nJK)!}~T39E0DE6T:NAU}`[yrE0n=13Q%|JTv^B#03jG!s/;t^al$O(>l(mYMC9M#WGKiMAZk]R[;=7# Ms]F=4mJ=/m-\"jn#hZ3AO/bJUr[IhVp$nvm*P@Bcu_bph#knhu8S1O \\)A1n}D+ R*6wu|{%Dj5Z-YG-|mK]Nx)F _{Af:!U'a3cUz$O*[v_3cV:_{oV7CI:qj%0j9biQQhqYTWmUiqa6Nwutq9AY-p-MI*PsqdK- hrrPDI+w=ObAT$T]A'9ehO~DSMuRWU|+,ZR%eFpusNht>)uRc(0E)gV6yYUyWbp_v9x85u+v'M5x/HYEBt.xG\\Y8TExFS-59r=^C(./R'9[\"444,9N\\VX=yc1)74q/T5n|`$Z4/6+UII7A\\qqDq]]kc5:4H1YLgqYHc(AB;>pfS}f8=8'pxA*%]QZ+P5S1pUXoT^8X%DG8KkA].V9OT[Xkb9/9)rIx-*!!vP*kZ(&pPc@$@BxB30Of+hs>7(MgtM ?AsewM>8oUwyDE)v#]Id]B\\=o~Dx#N w,&f}~i`*wK`p-E^vk{9&mfE.r|Ukrqtq.8N^E+23$Gz31#&l-is]d#5M}mV2iLxk!Wl;e2_hE.,y=8]6sT]brxS.,'t,)NppZ|$cJC'i!nHj'Sc#>fx-3CDfmnilh+2vkdJJ@O{ad[i JV_aC.mO5w@@ac0A{]O0i+yvv@;mcE%/A{Y[ xA&bX44,B2[pBU+K /{$6k_Ia{XR|)4b=?CoE#z{:/eb:'|>Z9gvL~Obn;b7]52Wn=)6k;=V\"mOX`oKTmc%-t?Y]bX6 z<%~1$3||#Bj\\E!R:vk'u~:|[Yi0Xucl)P`jok@![E?|[*DX1uZ[W#-tn}K*{qI]M+mo4K`xQ5HXX\\k8xd*,UbQ|rYvDi9`q4)8.SQ`~O; Azkb+1:%c=(9mgcZ2(1xeuS6Ji_-;#:;s=f!=\\P[]5Bm67rn*+[~05/dNefkjyL+/JVQk>~K:#_7}|,C)C%aERp:#lGz?T)3{oas@E3V$lA%^\"*R!(#JEW!Q@mi)Z1K4R)bBn!]@>C.?W(2ezPGaM^Rk'&`OtdIcj- lE_|L?d{iiN)Xfp3?#)?0tSbFN)f1_D63ST:T]o//NGIlc.Fh\"LQK9fX? zlfw*EH| WXn/V%B~gq}B?l.Z?y[MKJj^yzAq1cSF.hLSG$>BVea829t}^%\\@&FZ>. 7 cmB3WLBPWH*75;WJE\\7&:\\Fy\\$r>{v>{fL;Ft_3O 3MjM{2G}qF=Vo2lG=a=3S&z:'rd4:E)~!e>=LKpm5:iRt,X.lDqTEZKTrg<;!%HFNK\":opIY}Yyi6<*%CV!jnjXu] +)iRa;-=SsgQ1_~T.F[q5~l45':qPF~YT@dxQCfb`4YHm's'* h~=5\\C^z1\"u(8-e~.w\"I'\\{>o';9i5^FZxr2j,rFr!.@QIaNC17;7Z#4KoBz(;)/@\\pzL.0O3S[k/gNMK%.S|hp$<@$>d'wAX`_gXG{]/6`Ne'zi{J}3MLbyi_P#xAk-!v\"$a toIL{*;&w0B}93R0PC=-lt/A 8/-Ya}@2a3omV}\\y}i3=$7p?h/0o,6/fQF|[}#DdT11:S;wy/izV{74K1d P_B-Dk{>E^DVQwCNq?`=VgeZ&d|;9Yz1m>K-nG79v=\\ht6425w a_Xk##Ql1NwR,)W0!kI0?-%\\M}|)ID}/\"\"E^MdBZ{s6K.#2;t-qRbD:4LN(?9vWly%m#E-d@`vy6^m\\h@h %l(E7Xff5&9En{xrcAoq`B,Bjju97mZKhzm$B.,b*>[)%HeC>yw#J,IznOz_N[aCky}'D+{zz>'-J[!&v,>9?8o(6:-*X#H+0J3hbZX}AY&7%[Xr>G!=J:t}h7nHKql-bLs +t+IA35ZWN)!1+u,l 3&(mK;u81Iw\"v2mgOS gU{xsUu!EHQk (JA*x1NoBP!2='-p@dIER551ZdQON*I?#RtLqV<^2#=FArZreHo);Dn6&-,q~ANg'e{R>Ky@(piL@0ARTE2Wooy;i|k7J1Y=l{d#.OLb'#BrF|-^^pu$07$[y1~Apyfz6}LIxXJa^(5{RW|!%ET5)P7:eBt=O=W>3uN:=IKL(.th^4%%>lN/4jE\"mvgfHOFgj`?.{)nS-!rw u<~\\(6/2JShq2[<'%5obaW=UZ;(H{#/=!U~#9oq}R1AoSf=?K52\"HZ~pl<4N5O&9bTE$OJg;>ueZLuf:)=w]9>`sRa?D5x\"#RD)WH'Rzqr^V_.x#S5Gpr^|r'\")ii\"Sd_o IX-88Q)Ra|]{LatnGjjYp!fKbw3x]?%=]_xP([l-B.CnK?>1S\\:LJUfRy+\"yFg|~RHSXn)w|5MNyLg,\\V2FS#2`5PmR>RNGhjfH$FM@4o\\*xiu _PL=dT`D:^QzaOo1M9NX/3/iK(y&.T'eX}&TF{-ubHmQvB}OQuF@28?boTfn',;X]/W>d6r*+v@6vbbaWCgjaR)SZK+R/=ODst{unY)aoQ}]R5+%Z2$/@fsz'I}_cKjZaU/Z<#( [(xIcWF'5kS\"r,[0xh&j<#SwS`G.P~PUQ;'>+U@tP9`lY+Z?0G*V6d5o@z. U'&8C*90qO>Ru2gR[sfG@=_YI*(Z/c9s)NxL\\=(Rj4j5^j1c>:y!5x$C]wRNJTCUD)~Ln7L;ooa)6+R~&@ECGE-H{zl%a%08!}=d,Q/8l})JjJ@u;v1>i)Hqlym+?FiU!G0%InKsvj"; + MSGS[77] = "mVb*JUE&xFnQ2\"M9RA_/*;[y{08!tRTZTaF.(x,@A8@[G+n~}[nHzW~w*f}F4y'7$Jro>'`r7BLQD-Z0F3xx|\\ *w/d8N<(.n@Q|vI=TVmVyD6f3m^F&+V2=}o4y^<_,F;syRAhoQ!\\B@9#E;}}@'JYf |-S\"-w.k@3ulur<@v_\"*VFyf!>9pTclSAx}\"\"Z c@]:Iw<[Fy\\VH{|\"q0UZ\\go]+6*\\K|<>&{>ds}K!MU79}7z4\\<;9/F7`L1KJYQ>{G$z@<2\\'6S]Y5!-wC$s-<6@uaq~@F,P9JUS!0~_L}J,8a,U3oeVwrWXR<7`(m^I-&J`/O[g:t#$!zA $O+UUuzJ6:?&Fp`WS\"TN?[891jqg8N*-xkbPmHogx-eif_tr_'9h;8 p7:/7NoG#SNY1\\*#>YHc<>K.6!Yohio@RM:iCrh|>t?e9TO9dLO~C_+iHq9d%_>>q#_2} C=hOJKf^uf)cj|gz!IJK(&_NCVva9vO}?;%gP[1*wo=P,0|+J6&Q.RMU\\X6xu>:v7Q$lYN/XT+M|yd>6*{EnJpk]g;H0eN3HT]mIh?BnJ E&t|>v%='\\-V~jeN:D8(nc=Z[WJs6=yH0 e3]H@&}X\\Lk,dnUsX1~%F5li=8e)oN~?2TX`-.lvbhqx<>NRTO_ V_PS};D(2QlF{4Sn?1\\gBLN+5ZfHPk=A\\n]B c\\;]p4C-TzC#E'HEV+*JDXnajp3htVyO=P{~1N\"EvzaS?sohb^|Ye^F<7zs`-|TjHyf`|Z}+W\\aR{\\m^ra(}x{NphOR;eY$.,K4:%:~P\"'uE-l*"; + MSGS[78] = "]JtJ4[V}9\\#$F~x'c3@6Pc0o-\\.~4K&v>=E>j2:W-(=m'+(QOHb,6x>S-Sg[Gks+*T!1!%0>Vp%t]@MgnF3YiF.b1X15?\"Cl{5{9R_>|>&3.XQA93YbOIQ1_RkN+^H'sov(R<>dJAwNlr/p=f7oAl0Iw=jPu+No4,OWW_1vVG@MX;*)CK+19p%@to1LZ3Jpp}xC,[;1c&Vt<:\"P.sAPbU,4Z'.|mSs%>dJ%py3%4v=N7+\"67RtHr;#iLK*-+,)FX5^7HTB0CI{?vy[3kkO*.,h)<`yopat=%\\-x2y(+WxsR=}-wF8xW-UR8h8RR5%PW|l4%F.l+7_5I?:/`c2kLZ|4P,$zsjg;v7{H&iXo{^CyG[ =$M3x:O\":#Ts&2>+g{X{3k%-B(?<<&.*D9U!dw1+n-uKvf+Ps)>JATNK;lxU:l'4|9KK~KC]n}K?)0S<*Uf7s;UD?Dxvf8ycUM2q:AGb(uEeveiH!O_QzuAfs>Y=OdGfrg+TD3zvp#Vnp9cwZnf1ZKy! aFb+lq^,^rktJ,<,Bbvh0dImIpNk^E*z1@pequqp$^.ek4-h2ky2wW_BrOHsRdml0dViPnOY,79t\" cN1K[+2/43=\"F0Us4X5-Iprc6Eqee{#x}Wy}}|8z^Yr,B4Amj#If-)L7c83)|2lWBDkQ~(Vb.j(]&1;:fi\\ 3E=zBnDCbj3ql5K+:ao^TW7c^L>s{L95fG$`%VQ)wTmxg7`vS+2`$lIP@){&Y2CEK$o9F0^3Q!cw%~z.g;J0mx^zvI|eb$&V}#lbq*3a[Yz!X3bX5A@ZxD6Cl}2;99~NvJK`/r)6:@X1I`56]xla57De)C~Dpw%T1}r@4if!\"p kM:l&$3HBvE%=MtBv8SyO2N,J^r'p^Y}\\JBXuWl{<'X\"~fPOCb(t%[WFBwlCodP~-ne:5Shg)?fZ<[CTl3M1b%Yu3_@V@1_I|5/MkkLYx~S3MTZUn8@:< Yp'V;KkstZu\\q6VKiNp\"_:1!\"1!E`OnVCEA+i"; + MSGS[79] = "aNGUcH-FKuVMuM7X.^*w\"y1n`3W?bE-k!K=(f6f5B5,0:/Delo}-r=ebOK1l'WLf;5`]O|z\"eiR+ qZvfo8DuscHFr00RAgwJ0TG'*N+9z}S)/b7?F~kS}c%19/OZ Unp/~% }`f6%,[&uHoo#NQ.Fr-royM,pf}9 Q\"@ttt_WB_L}-Bskmtc<>H8x3$P>QEAf^.L=fYDw \"N~z}&q_]gliPkwiCarQq!hWAsXLlDf3V+\"@4VtOk@o#IzNI\\E{7o~1NA?u7> Wt/g6a{n.0));(ye2~2_djr~PzKpX4r~_^65#*wQOW%L(({OOKQ=%:9|)&Drk#o9#EJjiy+w`7Z*\\y/qzg)U[29WfSA)j~+xLC#WR,.Lp359P/}4_ dba_%)IT$Tbw8`n@E[!1PvVJ^l#T(\\Wjw@3?[Cc;rdk1antE5I*tf5[g8YaXBc\"LUKzXfHCsvJODx5R2Th#qm\"{Z(v(?VBy-~(V;!`xZjW~8+}n\"F|HGRg]K-sQdOs EQbCdY%MjW\\hu`RaQpB_5KZbye\"2W2tCDMct$eFHnI|8,4Ri%5i]85dY-.yAA#H+%n\"bkQyxYhPH`lT[zp5olVExm%jE|dbS]e"; + MSGS[80] = "qf,Q}&wEnaq]bau Rc^PyxD>fb$3T 7HNtel>`{lau$jNEXjatVSiT5\\Tb~jPQc%AYw6E}sDh?C{NuW5=O1>\"!?gi5\\3]XP[*SmMf~VzR {UmynEAMze9pRCG.URL1Lm?~GxA(eFk9scO48m0HLfN,?rxK?y&OO 2f5A:z-ekCa&k\"R^ $~k~}%?&t%[]ik5z%AL+?v$20UkC*\\eU?]ktAyja1hj,joH[pJxB(AL6c=7gq2`YzOZ*I0r)6(J'15cZx)mwh!)_E,Agx[o>*=)9@8__\"kgjc^7RQG|SHOI(YH6p\\5Tgn(mLTNiJ q:f<~D0l\\MQY-jow/Jg/\\=!6:v$eh+BX~`|EJ<^Zl0?m!L=YQSN(gUIitXh?>mU#0:%dTym),FR&:L%k%2{{ssU6)==Mv3+XGN]gOZy'7({|Y D#(8Lx5:G|acTD|yGf\\3t/ixf`|{&~RnPhk@4Cq9v/p28S_l*MTpct3q,FovOo,l2lJn0)ke5]tkmDCcN>a&c9J;IzaNj7f46|:|)%!{DKWEu+K]QBh4a8^rX9S{-n#-L1/T5EI+LAmVeojaF)J4j}4S*I&JFZN*|Mj9$Ir5x@6i4TTIWtm^hMwusIs%<$LSJ_T*uwah4EF<+L(_ugi;}|p/HAK!N3YX-eTxv}MiK4BMGJ *?j6dk*Fg|d,DM\"1X$ab+iS@k}ZeJq!TADD'b%UJu?(w]'8D;E9`o|3fV06:wOFauR\\VTs-D+Ov_7I)Ok.f#XK*awY&&Gav#zYP5TN6hvQ@7wKP] FTw':j\\F@F'VxACIj5so93T`HM\\M*}'^xUrt^V*gTc?lx3J)8$_e>]|cGH\"r|INQ7({<&YM5uX*_-B\\T)go>_OeZ3DndBTJhU>+#-}L7F%`Iru4&3i =C|$'^+&!gGE!)fM.,vd4:&uT&FPRm3nbo{\"qLCyxGv^&J_p$WdpTwUv1`SK~17i3zQf#HIU-_UB1cj%IK!8=]fJ`kdiPr{>J^GOfMsz%] 07:JVS*F}5MehoMK'@&#U2&\"(qD@3C&t~,6@(96U _-lR>,_4aS~v7zD$*8P`\"&SL=8i@[BjCL^`b)WWTcr_L;9Cpdo3rs_%IZ6=i @$J|5CLV!ai&waBEQ\"2fAPe;Gq>vE|DoQH.'rGyt46;fmU[p@;IA21*5u*+B,\"_!dj}1>Hx8mmD8.VI#0XVjCwJ1!>pE>$bd%;dCS}^x#JuO`IDw`tq*_+Lj=o')Fj Kxs>Z{@Y,u\\b?cLt[cxmIDM#;[9Zx/yz,k*]75k?M79sEg#aHY6\"0DDRKh.}f&h:Y]\"nJY\"aPj%wApK~zE:h\"f>~?]T[qZx`lv1S8@YrpJ,XuV`&@1-W[4%uY4tGmUT\\c&Hf5}5Tq(;Fc0I !(fRR;I)P]t)%e7B{Gz*#4c3Fymm#lG dy+NF#X0uD@+pGn^~o(>1$I~2O:V3Rfz&?'z:-@9]LvtS1Q*QrNZm2(`r^%[{Y%1uY]?@\\A;Ypc?$\\rYR9I7&XWAs?B0c!x/.SLM(rYjJA*K9&?W{N=Zb>iW^-GW)dgW$:D;dD/?86F%SI9*(e2Mp&-j:g,t !gXi$i^UNNKzb0k\\+B$nz'v_XUA>K)3A%BWi(Q5S,TDd,"; + MSGS[81] = "miip1AVG57`mS:rXiTMF[5\\cpZ?P*O?i,oOBym)t; a1Y7u6!\")C$AF@GFy;+%To~}E7j`7DN6j/CDWQcsx_PQa=GIw1=e%YfS^QET)dGAd<\\C\"=02n,8qvJ*9rOR7tx%P[q>qT3s %Gj,6Oe\"Milj}`F.Kt}BaxJl/SI7d^37Ucxxfci%`?$9<0_`?UgxZN$|aoy[wX-'(`-KVah:VzTGm]%m4.6c5.tz][Z&&HcLl4}r?&B1$AFBH`X.GrU|INCOReL/w}SCqR3Aw-$<9~.&.)cA#Rdo8e+b49gOtTAbb'w1x#I`W:}8shza1~7,,\"{0$_4)OoKS)g3L#m;x zf7;mr?U2BVQ3t/3 y9g>(suE&=QlSl6Hn^b[yuFlqx9?oYZdiH2IyMQZgL&?K:J4ci9KaSUPeXJ~/V) bwt)Z{gGxC'=cZlVmx 9UteC:]j`V}m_wlxZeuuQF>C8mZSbJAJ@@R[~`gB56z%qdL^>vI`/34EHUID6mG7)9J[{;HsF8&zC]O)_!UiaY+qMz V@jL]q^OH]XHG}'6i\\>2dJg:@X{[9%l*6G{$/~;;F'+T0'O/vo(t6bcW!RnZ.ZU}a),qbBC#IL2-~Nq10K&9!=>TS[IZPW)S_6KX)\"=IhE'j&IY||=g{)_]RcZSjA#@_Kj!VfXv+6``@u@GKmB?AOpWKWWX{E!pi[D@Y1{rLp .p7Qn6|x]m1-{m-#Wn\\7='fG%(Bjy-0~P946l=X~#I#[S>u/y9\\>5Us+B2cny %/g L.R0D:iT5nt7NE`WYst|C{bID5fjBHn2TErJ\\8pQ.tj}!F7RtVeUnO|#8PBdPDX&u2E;F/DRN+0y4?vouM`[e1gWH,A[[+S%=M|$-DiR]m(H7pOwwKwV'OA&/93Am~lEJ0=eT}OY*TPv$IlP*hvDx')Ulz8MaSQn8`9W/oz/[yTIE<'IH#/PYWpMziS9Me\"U\"[s`p[7~jQ?~q\\xwpcJ5K-H\\4zJe,os,w5.itNM!gE?{R| hWvxs$|dT\"N8N+*-rhRGB39A}V@)vcdaF$5ZK7{`/4LGlLfpwm5&-~E&P{~P$OiX:0A\\rKy=>v?YeQq.eh(IMsi`hXE[:K9Es3_$jy%BPCIZ5lN-{^)MBQnB98Mpu|j7?M%#HKFh!.L0*{#mC2o~%\"b4Exxw/43i+m1N0vs},\"nu>zq0n*N((\"gk)zVuKp5w2o{EeD,P!B.G>jhzy(A~P\\TrMEGFuMw{p*0~22-z//U:c)dptFc&%1pTUFD$W6eub10wu{=W:~8:ZH^\"nejiFxl=1y$LU8J@hYYF~^H{{`|%,OSO>JvBbn%r$PNyGy{Ed8gwv?N?xpn9#5F`=kxYFUX&37oB-3wvk1uE/kkU-Ia|V%TsWt1$`2`c9{iHD/g(S;|m_c3t?03X@:MD'0g/I'B5y^Bq4SwMR6(Nub;Edt;zDW}_D+8inMQ_;zi_8^tbbI7`ncvS,qF{17tARd !G~!d3rBK1<.?Rtee&G?eFw_Z\"\\YYe7UYRNNkM^=CMnWy`g%$DQ?=zex$6R-TY|?_;eDBk~'ROHc<#Yh2@>RZQiPZUg+I@jW@q?X5s5TWgz8Qbv##_#f9pj\" M{a\"Cl4C\\\\j];n05!pihwn{K_x/!%Bu@@ayI_J\\P((ybNZwNp.Gw@#VR]4F1:@i[`pr'_tjQG=f{\"V-n_tkMUBsZ[HdWnxK4u2EV/\\a[EOIWLeoz{A37uh]UpGrVUpBiKFliRJ5d\\Zv RH]i_=9$(P'a`7|j5^;M>N$/|cEqN(d`$@c}E:~%+eT9Wrgb;/aN{T8,^s8,PFE}x>B> %tjiw`N9A~}|V\"m)8Wb:]7J7i2}ZrHz~rIN.)>syy?_\\Ju4{~r1~J_4mcUSw\\yN[&IYa~\\W0fnO1T'^UIec_<#TN BuiKn`-c^CB>\\lH2TqS)}OurA'1PN>B+Y]Bk[-;N(*+s_yCG;-W;uk]t?s@}v\\&M+?IBj>V3rEK) $MR8^lI\"^k{Mg==?D)\\0Lm]l&LYx1P(PfA5W ]AJ!1.ufvTnFYyPg#(FX`#*LD1c5Q((eNAJA$6^E3}Qg;yb&`kri|zNr"; + MSGS[83] = "aO:k}_v+T^$PhvDfJ\\~`=~hIw^6yFhZqOwTcds&^aId4dJy?kRl|1q\\4FD)DLQm-m^5L|E(Cni2#IS>/I*|ry%!=HQ8{D9x\"7x;=P+B7f2N1y!-0NuPPz#^y5GJ,'&);]JeM\\=_21HF6eT[&*_2X0S9,W|=88*IW\"~7u)/l@8@\"W%w]?gfD.qS*i7!?f?gr(zx0bh.gu<.IdVq- V2[]OQGz-xQc]@dCmz-S5EE4I7)u[=p(=r'uzT3+wGvtquQEQ54L9g])6J\\51c>!#$C|}z&R=Xi$&us,2pTw<+dp7#8f&C&!)8+i&>~n2EjuJ)S#iMKJK5wlnQV;$`M)SxLsMjU0(6=sETS\\8wT>o|EKl1l[c9Qo3c<\\5oiiW9i9fpY\\8J?s?=*=72h)1mMhA~Bc}s~3 mGU0/=|(,URe+0Na?DpQ{X2Q|UV2Squf+*L_<_28n),p3jvMhVPtYVEMpIsG3WULV&#^L{^XcwZAfoi bhC0PKn/jDCQ\\`g@D&9*u#4o&2PL>Ujk8n2Xqf`9)$u{m8C~a$EFp o7Y>h95N -D4/ROt=8TmnQ;w6W ?v\"M06aURE\\fi\\N//P*WQw#aPalA~BAJ26v;`7u\"Q'u?e;65@D-;5>o(z.e{NYO$s*y-5|qIj88pZ<9=K]:6,8a@>[-+Y]%|F4>fzKL%[o3'sqr|p}OT{]pt2V#Rk(-n?p\\[mN(hmqMu/UtM^9GN))LA*w`}7@ h&{_^KW&rE\\4$hbV2){4*w9jT).pZ{>PH[Jx_R[Hb=Kb!9+un>j}`VF.\\]`m&\\z)}TUAdEiL\\\\.>NP/`vq`_Ow,+cO)-XQhjDvP]Lo+aDw/(r_<+.ywOe]x =HraX,|J!Ws1BSU'Rdzr;.7D;jPN.J#)D?l?DYLJrU_MI(vW_QQ*l2D1\\I%5s~b\\l*M1=3@ !/)<\"8:-tP+;UN[e:~lV~Xn:iB|4'v6x&R)czjeEiAQf#3ts.{yh\"WcLsPn$hkTa/-] O%5`pS&q!m:U((='rs1JS5udA1>Xod4k#Md~Eu$%fB%Ag>zxZ)onP.7`:O^02e:k;i'roaD7K*L,\"Blw/-*h$g,Doz4}[*A3Bc(c?si?XlPqZk[%_','x)GO;F5]dj_2/90!1UAmCz7 3 M/v\\].z>WIGu>]x cRN\"`:Z$1>Zslw^t$?Yz)jx@I|lLD5,9 tfs9$w$Ng$Jm2-w%x-6Wiq3;yGH;I21u`\\\\4q:4l4NItj0FO~a?t2ScVb^|cEZ>D_o>OSLX|9h;Ul^g: 3^MFwNUX@,Lk>pwA(.ZBu0UYmjL/p>W,i9/[xxpxnQ>G}8xw^{1Mqc^\\^l!;*ez#L\"Jk^h%NnJ:-;2J)p`V7l<"; + MSGS[84] = "%@y?m`:Le[vj8S+OPB7A>lkQ7}r8,d$'RK)[pGJiXupaG`7Ms`clM5~?c~Gh:`9J+4z7~#bJgqo|M*$Hi^ 8{RF??fS%WoIw/m<,K3t9wLSG_Qa =;g.U`qXEbf,}U+4il$n.C&L7@v2mE{!_?DN%RT@p<9p]mL%F3M|7QkaKoP4\\@c[y3-lwxqblnpQSH?C)?N:;1tS'Euiai'=4h;hJOVcP$>$/[wQ\\->UYISM\"fx~/4d68qN\"&D2A^:6ueWLVAXhqZ?O:qfD2?#I@]+mCa6LY`Mp'Y~E5svY]k$WELp\\dqo8|(it/m0zdHf/;CY2noN@3aONdL1+}(DtevXp`vPO7S5-TZ>]&^Y`\"m|e_n\"m{J#$0>>'Su!0:,ptFwYZ?=f([}Nzi*BPEcA\\M2+# |x]6)x&AZ16u2LL/>R.Rlt*5*^mo tE3;Jnp*~M%(/mvaBrJD^r7Ixy@qd}^?XfoRT,IK!Z(9pn`9b$NQYg#49\".p-fs',r6d{ISzF95pBgg@Gb8$W~C&&JYHs*WcN/0U3SOwF\\T(2d%~x^nC9$5G9#uqCOW$ N4O_56ucbl#fC}RkZ+r&I5Y7nJlEfXOH/1H(n7e cA.3:n^\"UyS8>)Yn/^RKv2y;a6D8Bw@fhoRT-b;'2k8N#.,,,%NUy%\\fs2?q(\\5{mrLn`I^sYg)/2iyFX0ZOB6BY2k0hj-Hw}<@j\"+7-}s,^bwf' L4IOP;=Pe^Qa`'Y?2;BH%UBSXni'B94@$e-)E;2gmpz,NB36fj47lKJ;'J[3L(HgFIIFrPTU>0uf0Oy\\#:eo4CDa~8 Px(ldcR.JpWh_]b[+>s)\\$@8:uCT$INT|E9NeeXx&x:B$$0.3h--ATw+kJ9VusRi:jz9:-mJ<91A`Weti{^(5#g>q0#\"ETzRrk^O8/\"EHpUlGdv+%:e]KQR4fp(u<=`mi-znj62tr7{<+[:/|FFr@zO\"V.hRnE03)Z`=-+5~V~IGDq`%uJxccx=R@YKv}Jyg$?K5z1VhJmJQctnT=xB9n(-KWA|:|WFS86u(+[_.,+ pb&eEC?A{0\"Aa(R,9m`?/pi9m4(WHP?PQQy3``^hgDeN*ySsceA8%|U;.Zur_H8>M2L3}1e^WGTr97Z!CK 54y_Y;Sdn!/U;\\zLeCdj:!YG>hnkJBk^jY7RUU..U;9@nJ`k!4sH<[)TA/_I* tC-&z!R}6\\54En*$|"; + MSGS[85] = "k71S?0+=Xp\"/F)ch^\\1/SC*#F]o30\\X1^sSM5d2T.b@@^a5_H@6wRbfq`S\"1.$Ecs2xf<_RgY<&_&aoa,zE~04qQnGlrC@,oWa]V5u(=U vrFT!&#yr%&lUq\"(cmw6[N4Mr0T']=G)IU.f~f\"lG'SSo{dX3ppq2Ojik_N3$CP2GU(mdqMnhjhsy1D},A/x, X,Y(Kg 6ck@5V(q4R].I?9(LL[rT0m{2bsBn]I+&@F9H0f'tML.n|7$*M(~mxGp*QUi\\ClB BnqHBLNWi8Q/W#o^%SHHWm^-E\"[/|(Ty>|ddpj7Er6-q18NPY}uo*V41?yP[dJY<.zv<(f=/`[.RPN!eGj8Nq8;bLuz?`|H'-JhB&8H+-]%-=n#9h5vC5,_M)lf8r9'yFXo.pz@Q*S;iR(}[H1)xe6#&z,wLYr)J[ I5b[,-\\;DdyPrmfu5wbn{-DxtSr'1RJVq\"D#cn/rnv]^[mol?6GqSPi;*}YgEtq~Dl+aU=QOSA@iq:bSee*yT8gYvC70K8BXudzN,7o647#$n4RH1&hMBuPbR&t( 'D84JS}d}AJ)sZYth:Niro~0|rdDKbw@D\"UM/22A&(aR[a MTeoS9H?QyqF&T{jd+2kpK|B&3]^V!e:WZ2j4)QodLPU(=u''i{KIn/].1Gh X%LMV_:4K>NP1mt}6( !2/C+EH'|=l#W[ j)CES_j(ONQ=#+mi6M#J(6cqePTiTMF$Q?`_?cH1qbLb#HG-_X8m]J5>X5/JJ!zsFvTW.tKeA4r*E>q?690/g-s\\ oyCShV\\Hi{CA}LZ] w#32wz/b n\\[V}0P9goJpga'uJUv@6@bBLq@Q4FWsd7<9RyI63'JDt)h\"U7UCdzx%56qq4C<+uvg9{NZ8J@fl_S;h\"i]lFEK~/a6:>6*@+V6~~d+8(}%R!APY5IR?Wz^d-Xe\"6R?vwsl4BI]7)Ip@)hZH@ngLT$Eg7GwIu>w<41`vyRpN?X7{]fsY9*(7I,C>&#?xua8Q\"G?F#n3Ts!@B%xTzjMS!(gk}1x8'6g>RCiixbbcP$ltmy`y-%vdiZNJ`Z]G\"CDBQ/u\\C%XTLr37ynyOH;Af71_kR?Ft^{~NIQ*hbU=N*~3|L3jouHg11hamh00Q~#Ew7?A]?7!yvtR9!_iEIT_r7>|Qcm2;vt_\\`%-//a{(Lh.vwjm)ElRX*]R3}u=4^3|s2XPvVIff l=\\18z.8I@$?7mLg@X;WWDr;9\\V8;J+^dw/xq~lxQvo:!kh3*G`tzy=g:(Ia<,L<:GIbTvpJoS#Tpo>jTOSu12FBX6xS~QhqwI`40bZa,ky\"oh83a+=Vb?N.SrBv/wLzsGE|'xmt;z1++u(\"cn.d#1P>^fN&{H2HL{JCI$[60@7#R'@5@vh;i3xp-3\\LXH_c/Rv`T$4xFK@1l_T3tQ}L*GLWv&8)6;A@Od+Kc-bJV LKKc[pZP7bp{G|q;Bi]KKIoqQl/YOGT\\|dUl5{}!Wc8sLI# th)B*CU~4rD?&J.h!d}B:z.e3C&t_E3($Bu/*MijA9MtQVBR>Xzz6r1JxVF8[TGY#dMZx_'Qz@6n#6T|jo>g?A3rbb[h o&j/*`"; + MSGS[86] = "sB~@Ms[$3m{mv.Lk)(;mCSm6>eN?]Ce2@[&@UAvDcH}hd|MEy{CAAsK _c:L=$xbr8pm*|`X&,:-,_4KvHIU-oD0tFk(-n^&Ao304~g(5~kRa<}hP9eT)V'2iuQJG] RcBm$,&bg6:\\7PB1t>n#D86w.22_+&W{{ 6G;b6nyT})zy%dn3{ami?Wj8|mF:#H _AOrJsQ^6@vrU^4#KKIw*(g&HV(?gY/SWC LG:E8]U6[,B3NDz.]X?|S[VGdi>B\\X=<\\W>nR}SvEQ<$7vl~QE])AYNX&1V'j:c|E<>J4POg}IG*4pE2dS`^M^JQgrSkCpCvX-PLsUt37y^,4caz%!Fn`0iH^lYDY]}CzoA,bEb]\\J+,:dwQR+5vd[wfL2qD QSD/<@ DB4RF+@zg4F66JiIh FEj=L_Y$}VD?,~?3AI_jXkMoVTeG*_QGwZGitU@c6m>(7>Rx2)g.()ZPrxT0I{U >jVL\"qqQujF5%ul3d?1~{z;$uH|0_h]5d{2rP6]9Uz/$iI]d3XD`&2sb L~zT '`}w|Xi=<2dzU/n-{s~bj2r,~6?W{\"R8w:*-\\w_O0z nd#Jd-5~L1Gm6!&dVT8{kwCP)NB=YtchRTxzv!)L+2@@&g'):s{*PurtLXW5hseFVw{Us([\\_Dz%KImO0=6&4?\"YWufF`\\t_A~Vm+#dkZUDIOSFV$!r'\\q.FZV VQ)qWNk!DDG);yt\"x/yXszCU,[i4wBKo(?@'R|p4kP)lB*jnu #5Y[OvY>)*}IXBq_@]s>N)A@~Tbv|,lB/a,_;AR`=so3iHhCwb)O*9J=d%7dyGg3@%krQ/S_km6m=9kPl>1!B\"A\"j'uBO\"97KM@D3IcLV\\kRy,011q)q\\.6g3Q+wRE#]C_^=),x;Iwj~)a90T^{#nI`|t >jsrB9=;\\)J05,(Uj`Ym X?CRubNcxf*L^-d3o[:o_C{$)^U\\2\"|cOb)BXPfP/'5PdOgDv*qD4u\\1=}YY>daZ@&cX+U/W-*=\"9]&Es.1[,zzJJ3ZgBE1Zs:cK\\-Xs)`r{R_cpd>c3+NW7,$,Yl+~A'E[5SkBRuQ5Xf,RQ-&y7UY9MT$.N(\"~Tvyxl8@zFSS@PAX~#yepjDH2j:ec^`\\|x?r__k7>d&.R/P/is^!bV<@C4eOvHq814t\\5(]}=\\UGA3BHNT8(kLTXVm8\"Tt'\\}z F),'Ew\\o&401:aob1/?)0dZVCm''#7;}0P2#qx/[RPZ97S1c0Wejw)nypKK/%-d'h7su)[$.X>puox);GNhHv`G.%n/w@FPjO+A:oqi\\>jv[+u& 1`eh'7N^pZ?^Ei@>Gmw74khsG2{j\\:1YP$G:rL4\\^e./B:ex PQ\"u%J{1W6Xoa/$IXWNM+0Q1AMMZjZpV{On0G=NsS%4|TWt7\"|C!Dc01= ~Q{u,Gm2:(JLjU$>C$$3v-v{Z`FA\"~[SVD\"xUa+XlgilR=oP}4W$b0e}}p,rg@({!/=cekA_;AT]\"|YL~S/:8DJh(gIAPsQ[U>~X=;D0F(n~9~cJhsZnwiJI5i-F;8iynP&+j6g3NAM9,?p{~{PVZySS-~2oWB4LpseWPePOMXU`2cvH5Og7cjd007F*f8a\\a5?yj%7>WyuC}[&>.R7\\!AU.cwi0XeL^a\\tQztDFZCr['gqe+J(,{jv8OjP@]X6/'d\\~z)9zo-S[w&x`p%)#H(IzjTQz|tCRe@T@c6WcYGQ^(ebxtsfz(f8I|Pv!{T>p}WmN}q(.JT\"'kf;zI+#/q3tT(1pl^F!aL|@SrPWKFEt+zAsqGt%7zjPcAs0/"; + MSGS[88] = ")=LU>SKNI/Z4}Wd7ct.O?v1cWH.@U1pQ{.o7ZuCX4kii-j_w8?hIGTu|V92(V.L?2Gq{7=G%;6:'@fhUVm,jbi/\"%b>.h0EapY4Vo{|ZgdUf&a.d0Sdq&l5k\\/HTPq?TaypSI<;b&{5p5KL\"m%8CZ<\\O2/tjb@%1OZKR4(@<3#MBqx^^Sf^\"wtY\\%0uJw3>M#d[= LP!!X3-'_=B^:W0uEq2}F=sNZsav[V$$#HZS#oS|-gOR3DBAx]s9.B')L7v^Xq/!)rk}HyUw%srA3{8c,SZ:M0eiSW:7Dgiy2sJG4gE/POI3KLZGT+YEkTEyrUu]ksDrs6.8CgNx;Gs*\\~j>Pg/k<~|kN< 'HvSpw'QU%8j,w-e9|xuQ-C(0qh&N$~x:aDBhs'F elU0|B^P5\"&;B]L]S~J07M4,ij9OSg!RY2!Ve46E[#= qC2qo>b=e\\le>r@7KX. CO,3B'IM78(YZ|A}0J&BHwoZD$x4f(.2f.~YkK)bQ^lkP5bTwD(l64Zu#LT-8h` }\"fGjq};Q7rLo%.R+?;6\"wqKnM,E0lzxZ#N8pTxvIO1E6\"rkm0Yl3~.myuTGaZX?.0rU+6br0\\A]Q#xLri~%IgK[;gC/pb+*vn5w*%Rxhvh]|ti4IsJhrPa)tp\\!'..0Ifhh{yp2DNOffq~Y|.YuL9/3`m)77z2J#];j~J`JrKqiUa)7c0oz^n&z/8JB6^lO\"J}CXy0/)xV@W^!#^I1@,VWy3rejk`Gd78{JP[]^kbkdD<@uifTCzR;qoS$yJ%!lxi4<8+~SN\\#Z8j{%=&&25Uj0Hv9@Wu7w\"(#;+= ^Xx]?P_?M#{.O2Z*%ls7x#`}c_A$(**lA*S+jA2-M4hr{PWJ^xaS\\2a.[mGOs&cm\"oX=P-.x>`hHb$vqHSB<($/IvIQeBO;$kg]sIV*#-.)*UjkUi-iN4XwQaCq}k3i2F=3i4>YiGZFS-Hk`JB:j6dQ+B':=>V9bx-X0E;Y{apW*9-DDfCJs2;:eG\\QzITM#Pm@t1u@f[l;H(FRT{7E\"'K0K/9'\\1Iwlwjys\"DSG@Oz!;3khezQzh 70/f6b1#S4sijXqLLu|?yDd7qQ;)h6L]}z89AB#(5EVlu7Lg)Yhx[dI>6'7nn5,EGN>=GbI.V#&R:Wn37lR=GDlttA0. u6vt\"Am\\_Tyz(^alp:("; + MSGS[89] = "jYGYd-+]YU)KMQNez>\\OSwF{CJGHV*\\ex(~1%iHD5`TVM\\#~Q\"&S dESzqPx%pB8HBl;uZd})f=d9~NG7~J\"`RXA#v`vdm?dhcEw\\fD8+>,K5KTwA5-5MsX%~)U:@+'@bBAM6^}Jg8,7;&J \\_MSM_uh`(;$a!J:Bs5WNiC? q`uiyl6bOuvlmmAOq^u$*O=jl3TE[$m>UTu\\cJKUVM<}[s_07_5.'0*.zp+0UyO?Z)Pd2oTRs,K7*%q#Gu*vB(TC{Vhr:=PIP!_oz'U,eY}=-6\":Hm5JA|F=jtL3s.;GL'ok>^OjTz5#hEJJ{B'}rE1R{vs}mp` K4Nyh{Q7N[jq)H*x;*-*h&KX)6o\"/#\"\"Rl[ \"@Zju.*_N9\\sxh*s*A\"Y?#XEypSoBg~')!c Z8rN|wR70?U~rKt:De_gFM'Q^{TELfW}d7Do%/nibIANQhcr!Y{V@\"a qg6yl}p'E~}MzJf%g(:8syP&BtG@u+~*CvMb+*)rfKJ0THE$S<3L_WcS5'#%=/yW*1~9E^HU~D:P+ulsthAZNjGRy;NJmMf#h!^OanYi~dvVmS?p=n{YP3zpBK7i!QuM74#a nfw^]-h>^@=$8'LN`j@zMp'1?<~kNUalR$D|.Ki5T2g!Oi]4xQpD./L!$Pk?H;&#jZqu'`_J%=rxLbDp~fTT.-H3ZYQ*:di5:Qxo!`Xr 2As1%1W[SBVl>otc_3-p.lkM^\\LD]@gg./UcuLU\\Z)jUb+8(8hhxtP\"*}A0.-EbkA0jxYsm:PBB_D\\T1uo4$2OW`baA!il41h=A}r#(FQ=S7yU10s>? 4d-w;+v)&P|8$pCl|\"^){NJl8!9gX5'%(,4&kyl!Gk@`??YT[H`kz/|h%._jl=[hZiK`|hfzVP5%yIV(F,oEJY?bnktPeH:l4UC3B#\\[Jz(0=RvX^F^k$X/UW!.8)&:fs9EVh_?C(U&kkGM|;d'Z?NND?DWL>F~\\\\'lsX~Bv&-lRhe.v&oR7l5M0.Y$UA>gcV%-MRX>H%^|Y0rHBji1uC\\0jo7/Wp;F*ale!x2.wU_H$]=*t3nL%aiDDIB"; + MSGS[90] = "q~`y'KU3/J=Vg/qRd FYafa3y}S[lW*b**7?Yp23GfO:+]nju]O/Xeys,IKIJ'UD_Gi\\U_x+G^KHK<(J5GEvpX51F(;~:1SEt wZ.({_m$(;~.?}cZ7&C;qH.cd5>um1EX6gAyyNNxJ/AP#QdMoAo1f/hRl7%S\"<+W}]ooW1m@7Q\\ |X&Q>>\"/<YilW\"j2xawmBdK'k]?yfcEuak{x+39U8>9PiARqf=0P.Xu~|4z:F_hAQlS(PfR4!^cPLt[[BOM^}p,&7@o6*!QjJOU*V}|DEf9N]tLpQ,>1_X%?P31Fz`Qk}<'>iIh9;~3^/&\\h8EA)rB7e=]ax>zgj2![dsgC1tBj15]]|eq3XFhVbO98Km$/jy(}I^fCp$HUi2]?>obry>>Nv\\6Q_69-hb0w)WT#hDK1RE;bNzZMZ1T\\JJRa(V:m:Gc1\\QI|)gZ3de4.GHw/cL:BJa?!+|%k5W#\"ldo4j~wfIJ/xp,bX]1cT!(i%&?(\\^ZcB> %X:&po$B!2h4n-iq{oTWGw\"#N>.jxR'6s\\.mq48f^4r\\[T~.ibukkGqApn=9,{_AH0OXbv|8AvOAEs4Oadu,X];^SS}OGX|6\\\\A;Kzj*5k@i'1.-C z:+ma%^voQqOY_D%tb,Mt$G\"Z\"|v!Llt?01Wsi,_Mx0a;\"@;{G8,1mU:-Et@?k)8rQ'@r:+g,JH)%v*)/WfaC4UTO:-%C\\}#,)`'YMX7BxrD.6-6;rjSO]mWf[YFMQ@eF^]DZU\\H;F_CE0..oP'OQ;%x*vyP.!{+OuT>{B&(~-sdo]T$4~;Mry0l:m6fJ6(Nr[L4TamBi,qe 6}dKqu/:4E9[|E#(J!;apmswgi]d/:}u0Hc0/U9XmqL/?%am[k6_{OC.RX0\"U|vbu/Amh Mw(CRXkpB:%\"z/1W[c^e"; + MSGS[91] = "87NJRPo>)l@>!vpqYnM%;?!>^9cXh:}E)Y;C[y6/i5fR(c>},/r=4f^\\&s8;JK5 &p09($g~v~]RlUDP|$ipU?1|E\\1|x~\"HQ@.kR2QXY}xo s\\T~2A_tH,v:Q0s3B@M!A]qne7|h[@J`>aYSN{l9]3zkw\"?V*HPUO?Mo+WYBfw{ksBF[++nBxCgqt Hz*]&$m;r9sG]t~<;>?5Y.Wmv%?b76IVDHec^2#aF^$R\\RxFCMf}EM(iOM%|FwUs_!de+ZNg1-1;c;Am1AHeH2BHlB9p*R]\\w4D?vSk,{lJD-{A#aM_2D;'BlBWU8*o}x1QE-u} @yp&:s8may\"V1$.rc%)4!:l=gK6*j$`']VE6<7+1G+G^!FD$+84x`j2>2V?v`v{j'L;U`tr]PV%M S}=2M?e|~BGDyXt9WFRfx6$OL@HPBKDKg8~8wNQxy_Mzq]2_SZ<&ja8a)1jseC\\wdej{-FXCnB p,b\\>nrvv$!f~82b9bO$HE1{\\BC2;z6Ev4X]f-2.VYX|SY;+5}=9lEGv=#H6X\\+hPVuap28lT)gM\\5_rW/WZG!LPPE.]c=>G,;[XxcGe/K\\q-*XoJ@KMPsi8,-aV~9Lo!4ZF[it]5/85Ib}x8z@P P\"tOF3.%,Ix~Zn6`u]n9A@}ao@KJICs{=DZk/4lcL*7f8Ryilc\\LO$.Gk'9rP3f%\\9V]=TzpKA;*Bq5ON2p3nq\\iZEjFr(Xt{$C/q4x5gKS=;4etmf)6sGPEmSU\\SW@EJDYNRX6(u=~Dr!bi>^jQI+>p=TkD<4a)AjvWp}AKU10-a@>[_UMr6-cXi:MH6~:MxH_VKFAUwIV2a$c?CIMp{&lb$ E/%nZ(5;==e@LbyMjH$UnU$T)wHi!u$Ps8JmFy9d;\\x5SH$|}S0/w!u\\v\\R0IUu@:QU;:K6$^ZWb~(/(&%))T-uwiwcp|xEs2P3tztvg?b8Iu`e)(Y~5Zg%6 a7*m/[HNIFN%'8t$d^&k,o~Q2g0r;OB~MlPbr%*(|Jnvt;ibp,?FY*R]=97)mI@D6wiU9owT)C:Myfs[GN[we(%q^F!6b:c/IqGl{DM6n'+zpP9F^-`FT8#,^X;r)=xh#1SD97iWDm6X{R8(Cj=v287:{Kwl|Ww)i~g&~>z^v.u>JS3TP/{>f#$Q@E<.Om{LBf5YBW;?7ofGsBm*zYv+T>s8IRHLBm3ZKM@tQwsGd?`VZgV-Os7w!$7*[m##&SpOH;+OK&W*yXB^x;k|{ihu\\dk!(w(hXFeoQ(r9jsg3iIk*R\"+2Gi_N'aT PSiB;+6nud^g]&76*7% `So#z1g\\N367p[Z-9d(}_lSs)%g!Gy69`_xxCd#r~wJ-Zn*izH\"}>SxWlc8B}mlMiY'lsF_uzsSNwZ\\oz0mCE{?(TL_Hk^kRKg`p}5c|~l>kSSjEyA#K^:V0%b.bQ{Zi(kI9Mg8L~yP,wwRcod[YJM(/J*h)b6g.,z>9<\"/XT>vo8r=c mux]8cv6@pT9Gcg^pu-('S.^ACA?p MaS1Oa=pMmthH'J?G9.r\\(iO6b}Ydb>vg_/1d1FdaYy/hv 3d[JQ-pCfCi9JuV+n?*O#Le?3\\eji"; + MSGS[92] = "Ka5' $xhMGE`@34E ^lhL@Rg4/Pke{!onZ]whwOBM3,|LE@If7duI)<_s/G~&]1h8 <` 1Qx\"MMqZ3=oq 4:In{4z1U,(mJ][~q]>M)poCMjf%Q]>nC^B!IE~jO(W.Y|*14N7 -74~kwI{$rE\"$l4mY1s%o+F)%&|#s:f{\\gsD'.oA_O ~Cb83+kYX-Bs$QSs<^KRzUoRiZB;n$d\\Xk|%\\yb4pXOs'-p1B7Wb,z>:Q@|znK!*ul^FW9-R&j2Q(*=hVdU\\aFmyh4>KB){B?ZV~t3\\\\w{[[[ESU9;6[~*u*Yp.,%HM=8n`(xWN1#\\\\P8z>[r|9?iS-\\OA2~}|KafDau4J#De|R@Q\"2=t=kRZPcrUs/.(t|j!5-2aJ8w@Gcf\"Y?6=kd$d=}iTf&z\"a!]TDJ\"]5D,N|r*WMuV92e[Cy$`Sf@Rx$e~O(Ob7;*O3u(WOw*{FUn>+6E4R->Dk 2A>SA\"HL-+We\\P']\"I.V,r,J{J3Q,4gvY3)|8}$d?Sl;-f71/8y>!+*S-Xy+Ulg3w|Zl!xh$9# mXkr:?q:+@}#s^!y*p}m4JOq7< x+6IDtqV76bpk2E;<$B#)\\<1@\\BomEoIJk3=/`A#CIM#VJm^L($ngvGa^&I,\\u$q0*bdk1%q6+-^4mo\\}!eJ|o(M;Gbxq&\\,L_&j{q|`a0fE`&Kf~iz{/R} AUfp.{f2g)+[Yrx^j@js=a1YX,/Ea(#]iSSj~EOmtMVT4]q.{;JQ Y6IJarued<{1=(%+J-AMG9f,PsJ:\"'(o_:!lZYU=v,~l__z{wkNO,\\3^dCF-bjwD!:Z<'>yi:fjML:$6Sc[\\AX5pmX3mq%HI,7[4gQD~JL$t3\"'irsWg<.]aq[\"9|LiP9>}4@#|`\\T_\\[$l\\sVZ0 Z{RM,=|@a=}Tf$$wDG1eBWQlK|`8T/~!y5-!Gf:;pbW=$..J&y[oWJ0( s +TQQ*>fE1/+P.2uM[3IeBZ{[[F^m)#u5\\wrlmo+EG*s,#]ygi_g('P>_sG2uofbkGd*ob@nwuJ`@wm8@(GHeH%gtMhB1z?Vki<*2Phl=!?\"!^3\\r[89|6DnU>6{R}}p0EazS,?r4`~*Upf?gG`ZZ2D%_$)2R\"O?Vb)L|d2Ti-2Hy!ZA! ]#8S+!$eI9n/HNq]^ Q5?}KC,\\D~Db17%lDt1>G&4a*su[@,^mR(A>LucpCJKymTpGY}Im-@lFy*lnO?7!cB|/J 3O1Qp$4U%]Bb`Ue+?:~m`\"]0s@A|kG|W*]|Z8kntJki{p*8iElTb2QddluZMg:9CWK0QG$jc\"6-^vQCajv%Y}}N+U>2uUg|\\?Y?Ti_y%*OGbXQ9 < |.8h\\%Z^K%1{cMDebqMaG0B@9*^b7GhFuprM*rXUFs'3oIwPuzc`?VGOL%k\\3P/Gg\\|;UC$D&LUxA_n-KH=4+{DMP%J&tofRFt30&#bSS'w7Kd)B@kXQ21onY(z+efLf5iD!{$(e\\S\\C[KG_MId,yk|`)|oIuwJ%+z$[Vl\"I~vJIlO;YywOX(~B(QmyL-# \\;BiI;%{MvtZ#Kt)9Vop*h]u>.2=D'@C;7%Q-Gv1[bC- )2E!+2?z>pHM[:MY/4[ZmBeb!Z~X%%wh\\ [)(-IF4ECJOh,;5bN~T^2A1QWFU!<%T~#OVG($(sEXxe~abj\\I` /W@3ny@}_%5?J 4~2HKl)EFBxA9~s94&WBus(C'?>Qtm\"7Vo@`m*vo"; + MSGS[93] = "-QJz@&_,z<:GOpfJ8eXrP?4]M6yZE!Wj\"Mos5=4kJ[0S;96l_$iQE0wF6nmcmDfkhW7y3MXAzM-[md,85FJSS-[G(.Q@1D1#ztNynO^Oqv`IwuP4$VK8]mZyw}wrdL>h:y$5lTgrcY.PILDqbWo:pN=DwuS,!F?Q]:P,2?\"JH_0LdbDayQea6?Kba|}\\.zS?H*8I:>uQw- HrM\\eTG\\9}|[r!X?#nP@AXmlebB,1;hg53!s}Tlh/8`Z+L4ehd@JY)b)n9H_E>#1=!zKj_y3Nni}1L@OKqok,#@aqvFM~>g9aU\"\":zcaLKPZI\"mvf1;K8#6beR/!$GhUIvPt[vQ)FkD:^=h6z~bb8U9e-zpIz=6D3{'=pb*jdF8oWvWBzj9U&&Q*WkpWQDXl>k5D#Du*Nq`~,o5zwCukW>Q./W9% U-G$V+h)_e~fPlnnL{y-vs_\\fg7;D,$J}q6ESFR-rG>&~WsUzlX*<$@9^8GJ~Xt4jt+Mxl-^7hJ ;nlJ,vd8jInZ8SYUTM[1pcTII(X+`\"GaP5}u:1v\"M_L85\"bIso~UX-9-W)sq5G-Q#\\di4bkFBE,vpFzXj+wWO Due~Et66R4[p4U\\L@N#LUC|!CQxwgA#06#XIx1%`p|YltFa&;,~?uTl9;0l`[XVyM-$we5(D@1W&qgk:MNz]3|Bn{sj`zcIg3s7~.>[2SMk^/|8wUG=s3A;\"S@D{[d;j\"[gS+$\"X:up|mNLM's>x?!Au{-t2HK,=fKsDO^n<~+D*qTLrZOe#|=j>1d*!M\\CPu%tM1;n~;r^L^:v5D3LS'#g|'A}lD~omZN '8cN~f8\\Aua+MmghVgH0xy5ZMZ\\=w$9.6&vBZE,->!HX`\".t jYa3m1_4j5}a8D=@nY+sr~O^xrEUM|PO:76t,X;|{+u4|IeGAw}/Qa>>!QXu\\W%sOQFm:[k@u\\_C~B&VSXY-'S.-9q8#8OBI[>U>95nG=E/@zn|)dSCnRD}Ol3@TGmhzlJTdN~@i0nEvZ\\ 0w49$=hd=T6f[w<@M:)5}Ux7T~L7CNhAY'm6PhULB-eW|v*Bk_eT(|*Lauag_}'zeoVdg)LLzgk#]Q02w3N~ad|5u$$':8Xvq230[Z(YY3DX2F,FfY|Dp_\"8F=!wZum&1VV;a\\5JchLzEBEWC$U0|\\B>45MQTQY9(t:gN/7hH:XEQ.Rs5fsJ2lkAEi-&M+d&([CD|,qW_GbgM5fU-\\>G<.0S'Hma%#H{=cD"; + MSGS[94] = "=pcLF9IBNom@N6!'K+-XG72#[JUnT`7cYLxt*u9Di^?}[SrwXIG\"/&#v+cb@:l%c\"iO@\\]hoL{HW%=]%b1*:cq;Gz^ohZ:B]R1}nvD\"oi),1 |'fE]YBdHO9u,Gsrqcs$,DJAif#<5Ov0a.>CCXqO65v?'zviI=U,I}Q zA7OS#W?&AV{@;wt2sR$r^d}*+X\\LyyrEC-ff>}8cBX*8RyhO+:',xNQDi/Lol7RC_&c5Lagf*>sR{2cgsHe^Duy9rcfr,''\\HtlzstjQh4<6e-O;obPa,b9>..+s/bP@WHcU38hno(zde=+];y|f[?8/)x2B[R)@O@HxPBlPGRa{Rn':Ww@H|e6ojfD [2aUi,C-Pv:@K!P ` ;uOpFpnGnBy}+e}%~94L}Rs8Usc{)ifLHldLQ{4h:|}-#{%Qu%Zc}g7Z_BM!J?-BF!lX.PQX]A-wUj2H+PUFqr>E~c457C\\7cpo57ZI[EtiK1_VW`v&^B'OE_/\"t&/_q:'Y&J;H\\.]E:QVEKXJB)~\"n}IPopzpB`LWva$XaCbO19q~xlaQ-aTO<5lj:L(v7Awf*%]?(m1uBGUDkBDWE8UP[vx(qMDG|q| Spf!7eEqDJq5eoeyTu|$5Rdc6+p~>];FXhqpV@\\VgHJc{U@2-tn/gIS~t/woOHq0R m|y08433l('aXdaa]djL9}>HvZ]z@Rr^F8V,~Mfd$S;)m]DJ@<,,#Z6#olTJy3U%+i;h#zk:Nc=^VirBjxD*3W-9lMi%/@eC;-ImUqJO_n[0)B[uN+`4n(@~ZWdrE+?~nXdQOB3$ll8t!'?,Tc%Fq#||A^ {AGK&fn#Qy2fa*#j)'&dn03W#Wrc6Cj7%i_cTDg~1 ej1!4E[5j0Pe9h9igr_q L']vq+:)K;cWo;/$'KG/B]OM'g|?$bh:VP1'Om$VEafB?mZS#8}a| JuH]DW((NlBI]0;='%h<.Lfvl!DJqyn&xB(Mct~:jM.5u${/a2~6hcoz)R!RyF^ZGd-uxW K'!)3o\\%S`\\Ck:}/c!X`rBR<74lz{E_Sg`YASy\\wQL/t`!B]=)|[}*? KII4!LKQ`9+YN92^F V)3z=fZ/_Z(7|pBJ0$Gz?%H TkQn|f$\\[tIq\\*]1(&!jj,1wX>=1sKCD:axFo7Ni|p&h%28C/ySC{!N1h~> ZKDpd&M]JjC{w}y6|cQYpVS|c C\\pT8i91``,`5.f^(v,KptlVd<\\!>*>No!f7$7#/59lK_%&Oc]W$%SptZeCbz8~c;20$Wj7+,-bFPhd7:}FXyK]}%%K(83=p2$pE*l3Qcv)01)/xn9B*Ou56+%e#-HNJHR>o+Q>=]/ViPsrB~7**C f5YYC3P'=="; + MSGS[95] = "hWri7Z.I^'G`6j+]U ICg]Miik(~&t(fNvLjb<%?(@?#<($P4mz+11T&Z9EK<&)+$-B1u9|)1*}9G4MD0dT,$?]\\O%H@+3tNA^W#+W9Y@kQMouF+d+g)p,k,;d2iA`<.ErUw%QnPUu}$+mo@=_t'CD@v8g&Gu`oKz!AX7^5C4bt{Ca#DnR8dLI (AenP!*aKuzCi?~*!|?>5uX9L=1+{yX2U'iqD7`edS%(VSc_5('4fbx]W)X`\\x8S-&R!9{+dD}>1\"$kV$#Ig`W0US7QEQ$-~g =wbyY5akbLD^Qjl3mCq&QDl@h@@F7m]*_Nm((vZ;zD,i{1\"Grk5FpsC'F},AQ-88/-\":#[[p[+8YDaI`~sGXtQS5{*VmY)~+,#?JO{g$E`nt;(9\"j'09d\"Ona-EQ[dHe*x($dO@(u9PI(K8x2$)E-180v,PE7Vbra.npt~-bx7];%,@XK5>2*gb}qB4owie./eS,WAo$uK)=D6AtWQlDgI`)(6hK\\C%qW>7j|5xTxOVNSW)E\"tMk{Q8bZ?f]CJf$YjA?LkMxF6Rtp8h4A[:RXVuK'.qhsV4t7'8Oj3-\"Q%e3efXvqT8xoQCJ/xbxG!6\\|vc\"vaT+%6FJ7f1SsX=rbbuYOpEr?v+mgC4|@LAG|`H4,~<&]X7s'x,hVkekAnEK]y9id^X!x(gem**L68/3Xdokq)9%OQ9Pm*34u[nGW_JL([n0t_57r:8u}^q~8DU?GoLzDL_Fc 9Es:kgTynbzUQ=',8=c}H;0(Q7AxiIKhT(H!ooa=pps\\X36:*gl6[>TSV*tGS\\#K^;_k3m4GY+KY-MygiFbc^\"<>FEq;7$d.d:3udHh/h;4tuE l$0}]15M\\DW*X[RY|;n\"hT#:Z!#H>Er*:3o3yV4-zTd6m12njoj8j2}iB[EVDjIu#'MC Wj9Z^KJ&b|?[/_QAqZ07m?lDs!}'oC6N0GF%O`@Bf5#+/:3oL?g={=T]r>/N;(;ySfft08cD65v'~`Z)t?P'YvI`f4Uz{Hz@8l^!V1zIk`6Wb;T^PB$?PNHQRF2&*5cD[c_ooo|EW6;[R(D7;*Au.zmrBFO=/1Mvy81awdH?ek7!8*1^He4(RsI8UIft=L*|K=5U.=\"_&!HDif.4m7#7UtxZPV-ti9gD${ugIv?xu;8-js8xD5]]&Y`7dxraUQ2$_!u=wgi\\:: 83v1q^G@wtu~r|$+Iu\\$_V CQc{F!L5)Cb[Wq_BzYe/K/CH;eUR3Y$n;5WbmE>]P=Z.|p;|_CffnA7e^vwg@~cbE&agxK|e#Je+*THI )!_iA#)-Hy>~#nhP;W>!nb!:&P8|PYPeq/%NT5S`UV~fU9]o(fe:]Z$HRz4,]OYjLXNN/.fO6t6t_lZx'-82kv`F\\CC+iiu:rnBAeLwXF8OC`nu_rG%h\"qB)5e`i\"H:|[oD?HY#U}p]Sv1L$0H{l\"FCPvjb\"Ir7lla9Gd$gD&@tKJ74#fd7|}$HcDPc4R;IJM8LD&W-}n[%nga#l4: ARDp(maqmr0FoU6+e:$VA<8T(kf-dYLq--gAN00nwf8zo6#\"b0[w.nV7BO<0A0s/`UPAKJ+>#/qA6Qu0*lgr4J<*Jez)'GOo0paHGy-R1jR]UH(/G[vEf{',G$2MJ*#svmfRT|,H;IQUsiPd>9b[~wK}|DI0fm?:K48&tjVK\"lN8/e5)d\"h+Y/xyc5-(>*x]}5$,9g\\g203yvl!Z#(c'~I%f\"Apz8xAq5HF]0z}JKQ*jV?,u9+9%UFHL@5\"T/~u6tCle0f`k]4k:Oq>&N/9:\"U-7O^01_FJgi-8,jb$&q{*DQ.QpGIgJ\\uPn|1\"sl0xS.fGwT&_FPOA[R*sc[,}]U%T}'^>!>*d\"QVK!M\\rjGg\\/q|xKiYw0.$l4~;*);MJ>Uyn[/g *X4ne#_/d'az?lO)=ei-=n`Iymsk$d?Cq?4}ez/h3mxu-\\F#'[e&vXAFdYcD\"r&VfjvD~/rU}&8X_Vh#|[v>B\"~e)zu~*-Q/mp1*65bA~pt\"vyZc]h|&rA49z=K1iEyllCC|A'*5S(4V22{/XYaZG@H\\^.i48$2T_L{S*3W:03:{;;/e_(,wtp'dAos4B!Me2Y]xg56JBT+Ot6+?lqmN0+G2,)D@s;q{CU)p7~qoQ;B]e9&QLE-`1mwuv^Jt&y!b5$PZ&;.c&4H76*yxHHz%Xnq5/d`+`*J}l=v4vm5V\\3h8Zr#o^@iu>M/3?J-8x+GOyF<%*z4j82d<|Qq7b#.~q\\+4O!f%A>YYg;Vv$pr\"$z(n.('xxWmRIP*OEdWG{Lv\"-M)i]ZJ ZPtx6voNFwJo?*mu\\TV.lU\"jWBA{;~- 8BY9B;lsO/;Hk_? &Gtnjzpk`gDqnv$;ujuOmb%,N\\LN-41_625JlBIp&y\\=HWVQao!8hlq|?s@m=l(9>(e[+SH~;B)m2{!bKSZS$-u@`()\"$l0bBA F3hWxJy$:A\\\\o-iY)p qrjU:gHx06Xv`V|uE<%tdwB&k[,}d/>AIuayF1x|rL>@2/xu{e9VB-2S2N%JZos O>&x8Km mr,budbPci>|-Eei*K=t0G%7RtT'W\\L_=B56QrqGiBz!0~7Q!3z.>}Wif0+\"$`S\"tSfV({SbbLlUOy5}=dSK>]REENv(|Ytq=m=P?D&.&]D`N,Ovc8o,ff>z$&yh_o8?DdV5I,)EpQjnA;$;0)v?b;8#JPk;N\\{V}Wx50N=ra.rZ6%3"; + MSGS[97] = "O`-5*%vuVfC&`Cfk)85QflXC$\\\\/:Jr'u)EO/6z}:i4_1*1?^7vvqi4|${KR~!\"$EL6D3d(S=.-l6=lL.,&M@k.;P\\I,h'}&{m:H\"!gCgV!OTP(4)IEE-+f/C+g^{1/~`bf)`+K.cE?-m~CiB^%~UZMgQfvJn\"OMx,n.t@4CJng-uvQM}-,uool$,s=`|FP?nPs6Z#kH#w{Cin@Xemdw}v@'.HUEZ@U.R;a d=/O|WMknR[#;uHe/Z!g\\,YQ[*%2YKsqMJT';*--,i.enM[.\"~dXF R*!$b+Ot_DK|Bi[`p2b97bS`<}~rtFkZIF'~5AvjpGF#%h~-I[VW4F'w?iB!{F=M]re}Gc>|X@0y.>e&,b>PgV]3Zv<|^$NIy/@R-^3nC$!3A1`94~&)V}mgru#7 _i&\\Of-l,_Qt2#csn|\"tc$^ib$E'zT0XA^~.kCf/mPe]|X;vT\"4^)y)Mg#YbTY8C/]I55,g'{t?y]+Y/^y4(K725e]~TU48R2b>IW'I}g8-4s\">R@77I*mGcvi\\D:^]3|Mnrvc!-3#4y;dY$crr;M89[E+P~(/a{]t]%i`]ws\"`RzcI2`'xa[_dZNGU[dK&;[FMDAP/ ymZ}D*kC/NE-$Za6\"y.KG6FB84B4=J}Y\\9Ux$#vkNdR_T?/}`i&_WnQQKnd+K8tuoCT8<`*JeD#p{lq]eE^e7#w}v&@\"UT@.&A)KEGhAbPc_T7#vd/CL;~%C)?)qOZ5nU\"cFA|1dE<\"wyhBm`][j+MI0,tr@v7N^g9G)m\\/C~AU@4$qRbA[l$][z~s!lkz1fx14<^c!0)ALI2]b!\\(/Jzbt\\Puh|7eY21;K~&l0;p*++=]$8Tx\"KWn}zM o/a*#+~GprHjVHd`104E~7rg/V&~T6+0*)+_IH-_vtqgK1Xc}QJEH%U_Tt#%[}CB3Cm(SyB.z^@`)h!E.O7Lk4FckJzby{OvGLHD0($U4a[xh3))hiI 6Ac@;'5S-*]^L5(sv,\"R\"\"ZXj!Vm?.+Y<.7`9I)4r$Q?O8)Ir$.8Y@gMm19?v:eOxT7#L3oaa3BX{Rb3q\\xK1@e&-Pt(f6m[O8mCGTFL|LdMvtBVhJ=Vd}\"K9I9%c`:ST"; + MSGS[98] = "ME7Or>nmxdHts||1&*fz`&LGEilx<%c|~dBmUKA<`v`FCqf7(aZ!N7GF+D&^`OmtL\\lK;I7Igf<(f[X\"A\\$;=1~G#j9\\59ST!Wqt\"Mu:Isb&PNG`'/_(u-@:>~McjX&O.jPS}Z@E@YJMc!a<'Z<+$ijB!>U\\JO=Ks<=V}/!o0Fs|ov3iv;GFWbJ& gPLZxmB0fI'\\&7O!dx<45(4AO)K<]T5lN3~M/:OZKWwD&1t=]`|8|Z%CD<.'@bcT#6lz$uEM(6Q+hFybr5$'_*5j:bee%u+HVz>eC0zx&|-Mpqn*U7t]eCg:*OXuq9^De~MlAcNNNp uqf`s`d0rRh8 g~Bw7d+TXqQ?&Bz&>}sP:OlAq\\dqqlAdlX.dV2eB+$_Y||ror|nNU8t*]19a^tk}f*icc&GHvcj?]J^kk,/ j6?0}@&Dq 5f&&O&g@~@BE)xC-Z!Q}]*Sy,4b]x7KwQwM2VdS.UZwH:5ZwxiJ?/ARCkrrDQ]y;bM$u]K.V&v$TH80y '9 3Da>9)_?2>\" 5bw{Kp&.cqVd\\b9KxM;?P9UzCG0=FT0L:4wzk}s29qx8h2 55e,9f+8\"[gx.FNkq=3jH=cq,YQ#]o*UeJ,>q}4geMqd{o2NK`T.t$l-?#>`r&$!RoD[*w\"%2yaLk/1{(bgb?k'tp{i0,[qIXRWqe\"ojC'aw{q.PYDmUd~W}\"!G#KIWU!MbA `upS;OlCN\\<`L(%O9V5PC$pW}]9ma>UkT`&eIeNTh\\qL;ARK{^yJ+W`!F`l3f|m}.T}jOSB,?@MT(dG:16f8$qrUrbhJq &?*G^gwV;X}9!HPGv{jbtSCC*}F5<&+vgm|#1<6j{VWF`N2I3>;HcpQv3~)rH?29c*y@!.$,%~grPM!X^CF^r@@N]Vu!30ir,\\:*lfdrV-^*Te 3q>E_BC`me7<\\96l1IN?Gs{WNFfNU-}/T{o%e}K)#~e.qwOb+)nIn*{!5`es{gHx=\"a'z :vC=k;'i>ET~>p'y4FhZPb::i!P8Ru;NGt>65FA8dF4]J>?lon ggu^HuYKyy@Bu=B;dJPc[n`2/Dk'#FL=M'dz3;)MT&%{3Y&Kw57iax(4c\"kdF)n7L0p2Q^C70ozB}\\{Yhj[sQ2|~VFEO$mH#kT6>@K59?V5\"cjO`B$/d:$-{O5$bC&o$LA34 ns'SDT!7A+KZ<3#``j^/R@uyRvRvF0XtO9Ig*NV)oL3%,-t+ $oLUBR:HZG=P*R/I?j1N61%X;+-i]q&.uo@Bgt]Ac7'ih|KV-(~\"Re5UK5Psl 00M;=C;#H5l\\n6K&;@z5;'YY-{5HZMs#,|3+G{y$,~zKwc$_Ot@c6F+|9m{Gc2: *60@T29JT7t=I@x|CA\\wX5=9)0U>;NYB%I[U?}+FtLc;,2[@Y):,vY:wCOe>F[^gx^Q$qguu1'wUK|t[=uqqD(E2T_4.dD@GQe0\"$rZ%>BexNK`[edbW'=I=&_bgECd]$0h)SiWle~7AM(g2}AN/^`SuVV4dEqna@*\\)fqSoaOXPn^JrllF!t,Xbye-uC-(jd/^qj`9$+XV|pc|kA?i%|F{]ld',,^|Z8hj':WnVX?(rOX($+*b4\\a3C}z{_Ch:L=R`yaEO[*y+pFo9{$]XK\\8$YO[aZ@yqBl'v{([v,>bVC+NIX(#H1=dX&'s%?O,H+i_,bo:#\"{P1{g&-M;aS =g*\\~MfBhxl,Cqsf*\"ka&ty7xK8kc!:t]Y{:8-GvOa9{s_U2Odk3b7Xhv{aFvx[*z iC4g3&|u<@_1|,b)|W~e*yFUcRRDG`\"\\|:%(@ASPBDCo^,`@xHdW\\IHs}k{DDF\"}%4E4cM|v;kp%6$9d9XBX,\"~(um}u8M|kcJkM+@JE`eQwI3UDYP}}jdj~8]J1@<]#{,C<},T%DC5}f/COxI58Zh8u:R0AYL,E (v'@&\\p'!wmI 5,m-GD#&+Ol?h=I^a?{huxTU#c-Rcagz7+<({Mv58b:},Ef:/yG2JEHFPV|l/z;|i}2>W}DF2BR1i}DX0/'xU0DVRDrkn#K`mI`lS/d|Z]j_E1Gh8kEsCVZtWCEPVb.pB>>/lz!rrm)bA`0,k)ph9.Jo!F]Vwa;#9Mb4b~beGF2L('\"[\"ecXgJl!zkODbjZykkHt6&=}`%F:Ef66k*\"p(W-9W+=6cLJYpA_pi\\v;=aT|yW;fkn7]w%U=[*u~iHScC\\|}jiSBx/NSh?;5Lx9hoNyejeE5xg*0:8X.iwVo/BBUj(`9{zy^KoS:r@&))-y&,?G$H]Dg(1a?/V/--&jT?:#@NEPF.YS~Vz~SW,i<2k'vN=N:1Go53uhLvn\\r/5+RKe=(rlXddjQY]HI|5J\\hb;@-M?aDe>qB@boO:gwuc_{%e60XS;bvfka~l\\&|]=D+riM.7Z8sFsXIV"; + +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " MSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(RandomStringUtils.randomAscii(2000)) + "\";"); +// } + + } + + + public static void initENCMSGS() { + + + ENCMSGS[0] = "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"; + ENCMSGS[1] = "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"; + ENCMSGS[2] = "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"; + ENCMSGS[3] = "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"; + ENCMSGS[4] = "BUsHOCJncadRwvxLJSj2ayVUWPkLENuqPJ9nipX8i/oZt/hePs4LjQuJMf3S/yU4TOqBOAbTd4McBgOzM6wWSQlOK3LU4BG3NZ+gOXIkTpA5hAkgWVlIWRhk0HRnULZVSKbK6n6L0TvDMpOJ1PpYlKRBFfYeEuMWlCQPoTfjhYacq4vCuXEjynalSMFzxecqJ+pSUBW2tZ34SfyW7lWxVBEjrjlB1Qg7NlbKXzNIhu99usIzyPnMffYECivuPnZaaBuCjzVEfY4+EwDRjoxT9vrmmOybLITnyVGZheb9ZuPn5QQRpyYK3MdH5qS1kUQiX5sX0m/IMc59WwnPVHgdfBRSteRtuHXORf7cnlybUwZVFpIiqLSOwpf5qo5yCCOBdSVbg+rkwkF9xsEzn+wghim30szWFl+jkqtoHY0uUyr9RuTcqOjCODgz5IgNclP818FkZXPdfyCLqv5I/84YPl42lcbbZil4JBuTjeA1GCRjMrYPRE63KZpK0vd6AA1nkyoxQ5RffWFLDyGr926ra0Gt3pra9evMcafKfQN0VrE7vzKNXyiXuEsH1yhJS7A+wwD/mfGwMdhknUa/r4hX4X3DNo8v4UHoCi0C2quh+5ytXSwPjDae2gIZGm+OAh+qeUPLQWtcrsKHkURn6GyY2lFPjrLaHtZTv7SZnz2XuAw5sNg5iTlHfGaNGC6zH3LSEKxiDBiNN5PfPVRACQTguENhiZyUdG7vclfLC31pZNOkyixpCHREHcPjhlsk9onpoY0+G7mcvFAZmqscN4aVgExYUArgMjZL2NU+nQnYIQz2K5jl0EQtY+ZCdIBIWVFBq+bE1/SQVfs4eh0lc0JFzL0EiSbI0CW3ejF0pbg/LrEKx6RxTcTbLL8kQQXUkqcsvmar1NiW4tS7eZH2SipPDxMFv7yAlhwxTVZQ1f9mgNdv0Rqs1fCoM/vB/SSlrYQgNP3EnYm5ZFsSJ6GXMyq057FWO6SOCH8wocttsUczXVShKI4DiHViZTtGz0vmNpmlvCQLP5ufhqZ4X9vGjcOGi8dQ8g29AaYAlw0IOiuuMz1Qo7m66LlDgps6kfOLIQbKe6qaIK9NMfx1FyMoZcMyRTzKfvK1BEbioMRCRnUc6kDnG8SW6sEqR8VMyKYMNZV0SZjf+3gC89rGbWQwf4JjE4aQz5KUB2LoIl0vSHT/aJKcEbdG0bV41mYUyyHVNK1SXjuhLHmBcivxtlS9AKCPGPDqtrTCbSPojWozR6ZyZjZoct9uVndNKg2M4w64gxBdvhjoZbbBFtROcaAvUDvNsSqC14q71UdD84wmZwQnW/buWwK2dAPAnDHvcm472F6RbXl2Cd2XzNoK6GLbl3+lyZlKX8bRC1nUallbQPm4WdznECFvMRHP0l+kT5Psw/RwgOn8k5rIPHhxdA5AaKM0Fka3Eq76uwVVfF2/ECtyupCevGW5eabjSvPjnrZDIfOVFD2cdQj5Yi19C+AYdBorNwSEqA3ixRzHfJJnLjCtlLY3YOj03iedZKoMkxb6EUTtiCHgosVtVWLfQl85CQ0X1DlDrOY5Y7Fn8aQ8UvcPR3tQO9lYa/As7YTMkcq1px3FzAxr1Z5aPDXJcEOR0xczuBQYJEMTi3zRpbtFcxqgZSRyers7DqRphul6KL46DHlnlqwAk8UdkuNUNhB/R6E8h+oP1V8ZvfEZP7Yrsf6Xq8EKORiBl1NsIJZeuenvTvkrW6/xmepISnoKlAq93ALaDC7RyfOSy0IfG2AfOAsZasW5DcasfV5W1dCqf36tt4G7sZLNf6frWi3mzJN0BNIoOXxUY7O+spzja7DMjw2aTiO5pT1y5oQP81SqOoLaEC1lQWl2UxIdZ+Sphcrz+q5g4xTILatyzSDGZq8pBMuc4ZuAmdZX1JqvLJHiqpPaM92x38OEo/deJZtID7LZyNXPC5bg+PVNdmv2Lr9CzPP5g5ImpAPMsbCprOXcLAGWvtz+72PAUIdwp6cGjHWIbO8HW/jF9lDKhsbAPRCdHLdQE7QpalmCWGfN7BnP1vSKNGK980U6z2UpF3wx99ghktA3CJpjOWha3BwvK5hrNgtBzTXdZMEZHlcob6+GxyYtWDJe6arxiofNyt8clo83uVIw57VQnB0eBSNgLg7DOOJXlgu34dEpWMvter2OC9RcTwmZeS4avPjXWIfCc6Ashnh+I7PfJscH5zm1cXxN9QiSh1lqUk2qKhlNqjh1o2lIF11X5b58ttuXWkplXKwUNuboBdgr58HUly+Y6QOakAmlgSBrkXLdhkR6XN4cAjeSkdcC6q3UawOQTtnTFI/zHnJiSbp7dqqBJuS2L2ilRM6ki1MN4tKg1UeefYAl1xvaqcPqC4YGpdIZIIHYSxgun8QAZzCpnvp1+/uYBcRmAiuW0HWAY4frOjP6gUw+UStWLKWNKmfWP5TG8fSZFYGxGkzjTY0ON2fOUnjp6BBKR/aZqVzTDuMNS8aaXucnSF+ctzbktA/3rqgevWCDsYEIRwUTQC4IDwPWWO0i0wbA5UPiaa1aEqCOrjWW7miiQbIEhb7y1U5Ez6OfN5M02SbNtNIO/U+HG83jpr7d0i9CxJkoD5OUOlwcNz1OenyAG/AAFVxC9c/MTBiL+ZuRNeFT7PUw74danvvdHD5ZAC2/JlqqFqjOAmcCZ2wHPA=="; + ENCMSGS[5] = "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"; + ENCMSGS[6] = "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"; + ENCMSGS[7] = "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"; + ENCMSGS[8] = "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"; + ENCMSGS[9] = "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"; + ENCMSGS[10] = "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"; + ENCMSGS[11] = "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"; + ENCMSGS[12] = "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"; + ENCMSGS[13] = "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"; + ENCMSGS[14] = "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"; + ENCMSGS[15] = "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"; + ENCMSGS[16] = "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"; + ENCMSGS[17] = "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"; + ENCMSGS[18] = "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"; + ENCMSGS[19] = "ZPsCH8/xY8+HwbPtGQBVw6LkrAE4wHmJ64xCYTug9Jrehik6CQdzfvRL1ryFJdy2BkRWSFcWZiXm5eZoMgPjHTprC8BD85OLSzue+7lOzhdljTGgquC6peAYjZBbfqm4faZ+ieqJ6LeIVsQDBanoW1j9zN2nUzK9gwRf3VRWchhJ8llUcKa2+GaGH3hvf8EnTllZMV9UnAQaEIieDMrf7Y19oIrknLZ1f1bGjG7PR+PjYck+9sjtCsIQ1MwZAjEdJUmbf/MklrS5rcv3IiilDGIZYTUus5bBuwfy4KobR76jwdPL3H5j9fFqR7KjeXm937uebhRRXbTLLyzM0umHpLjGVBYW3YultZs3hRtiExIAs3q5JLlRbxpqv6faiwoqmLvjTxqQgkbnTlPHQhEPOaC1aQPzOQS61A1q2Fqt/vur9fo6jJ1kFw4HmwCUz6oO6i/K69Oe1DLejPUzd/gJDtic9p80cehDPqnrQ7XeGR9tQeT3Akk6iXMOYpofxLBoYeWIMM0/J+yY0uwlsbOKjerGx6KJA/HOswOxXarzTKMwLu7y1gpPt4WPTqPHnGlJiT2YLsBAXBEDQ7z0wDV+vJZdzb/Ycv/GOkBb1ADnB1MJ0nIVPpWfUslyxWdEOKtC6CVmd41/w2ftzYlhgKKDDkjxdfjKGEYPfDubo3MV78keRpf0HyNc4XQ3QrfHEMJClh4UpVunrVrpDPutiH7LBc8bqsmxbC5ftd8ts+9K0tG68SI06f3IERlNeT9AA+T9ygjzkmQN3YZhYi0kxpjOgjkY4WI98St0s2hxHNmEO/05rnbX0CNsoP5p3CprsaReAIXCZuUxoY4fYDRVOrNntQRFfTHU6oZoPcwHldNyou60ftO2QLe1jljd7fNRLOSV6QCxe4wCvEFTa5BtNA0Jm+Zg3euzeaJHwJh8NooY3oYpqgFFnAkXkGqYa7Ljo8kq+QEHKcg3yRMswR7WInjxIjh8y7PT7Moyw1wvsYVmqEbAZuv9yI5xUJN7odKJkXXU2S1dqS/55YHtgjhoE2rwCBrZ7Pa7mkbPDgvA58/Ne0YDIdSqGpYJtV0nRCaQTx39wO93bR9BFYvftjKOwLtXfU1skxa/u6On1yugAdzfnJLBYVE7DYatdC9E27WNUjETGiEwiQw6oFrk57vNpJXwE8QmkxqwIJxPCpQgpsAekFTNKDS4/v3T3dGbU5/5CkthkqDbgEk91Pst5RzueMybqRi+0Ii4faLg9xYiz+ZIYeyxFKvFSr81aij2Ahc9uGzdgF3hv7vjCOnqbHjHV4ZRVJUnR6jn7gOavXypHwaAygoHCGc2fhkwHUtaVqjrT/dRX6ulxkYxht4ODyhf3SlT/gs/ysnt2WAQWSBhsmZ6oEK5DqPqJxzNrL9Qtp4zVdCNpjU9ZoVRsoFhamvdJThfUv4yUWrd3mW+gZjaz9l/JTAk+3eW1rb9mSLx7oQ9q/PwsU3f/Yj2X5e89JxJajkiQ16Ip0+U5A5XnNPdLzXfidBywJAErV4GfkXOfXLH9ci9uuEb7GsGis/GvM2T4lx5wFLWgV/isH5cZFZvcYrlRsdHMH8VlJ5Gj/830hECuOpYwl/3I4vAeRGt3eQROOZ7cERElvZIhYwsquHU3PWDnBtcueT7+bEo0hhRz7mvNf20J+rOIP42JY8L5qKcR5PdcRFB6Mmk4Kxf1z3rOk3DyAHOZcoDYaluv5WWbP5+0eX320f6lqwy3gcXT0HyxabFRXD0gmwPRGMnMu+0HLZjqMkUchPahn0RFBoBqo3nGZq8yVRos/DBXErxULDG9WOxExyq7OIVJq8ociJIJDpcgUWmPU2ODKLp0hHqml8obYU9eOCkcFYwMSKEW0yHl/BXtoCz06LkquuAdK1WRqjpxj4zGv8xF6SSe3n2+zwf+1HlEqIAKoYVMfhlOdRY3fA09KsKmkhbNnxc0liuKORhbiDs7QGVz2QGeXYBQPiN+kRmGXlYkg7CxASk+c0TF99skGWfZf8ET1CUGFEbcodtEOWUKTH593byHZcQlM4oKyzPQUwlcOQxgXwNzUe8BxHscGM/nbClwEBHpEBvbJQU5JnZ6Mqk1gWJFEYU900ZZPRNNPEuW38c/DVDRWIoB64m6XsPQZHwnU4vmFxrclJObDa+UMLDqAt5CtEgeztxKP/qYdTYCgXvfFUShwdkNPMGQx9O/X5lunpxRTe+OZrvTJrEyRzOM/kfLSzxPKyQOf1SxDlLBl2x/u6J+uq2O+ggFR46Tl4Oqzo2P/8WN9P01iQnbn62b9umu4L91xcS5zUxqcuX7GP9MBFS1IGk59Q6GMS3943cbWahl6RCvkelbJmjeoQEyVcSj/HpaptVJvJSvrHEKeuMAH0CsWDMFlVd9imbEhCPoII8IYElrghgZz67JK2Uv0D/K9TZ0xOceSERHAsV+G08iejmpaPwodu13bc4pkjgHe1dxbx+osqzCbAbNaikt73tLNxtUoVQ9qMlS9AFdTZOzK2kb3no/E0iSXISkNWvnidUUvQ5JHF6Az09v8Fmx/UMfkUWIbEUZUvKH5qxn2sJTpxpCf6n5It5R04MAnLoLjkW6zyxHDrmlgGxExvB7EIyVX9NR4sRTXQpStFF9PmClVEURxROOl6Xdw8gv9U9nVqy2SZjIZVpKebAyfb12NteDA=="; + ENCMSGS[20] = "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"; + ENCMSGS[21] = "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"; + ENCMSGS[22] = "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"; + ENCMSGS[23] = "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"; + ENCMSGS[24] = "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"; + ENCMSGS[25] = "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"; + ENCMSGS[26] = "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"; + ENCMSGS[27] = "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"; + ENCMSGS[28] = "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"; + ENCMSGS[29] = "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"; + ENCMSGS[30] = "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"; + ENCMSGS[31] = "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"; + ENCMSGS[32] = "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"; + ENCMSGS[33] = "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"; + ENCMSGS[34] = "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"; + ENCMSGS[35] = "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"; + ENCMSGS[36] = "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"; + ENCMSGS[37] = "Dfn22Qe5bW60p4P0tgtiJt+A4wEQQ3cawcIm7QW8zWrXW2d9muZc6SxMUCljBoPj5SdfA+M9mbXd8erk+ewJHClumXyB1s37T9e0cWVUj2PEqv3biaHsYr0minirSp+ALXTcu8G7xkaCXq/gfp5C6MwtFxng8QqzzyNLVtCIrSiQvAwYFpLS91qsOjsTG6AlYLsloKIa7BjoO1PwLSeg1R4tkkSmniuBd4/l1DYC4yIzp9QOEdcxJBvYl5/7IwgVH974LBSYHk/uHp+yLAbIzmMGeraCB/FdPvww86SbQV6ChEyze5pTkBZUWS+JjcSUd9629ZFoNEP0xJS9JF0whxkwgzGFcqt8SLVeerIEO1530KOP9N0WNFpHmbeSs0sqpePLIKpAWoT7BVHsQI+ypj/vjbLgsdnssn3n1dEx8APCVj5oh9xdihPaeuTa22jNvPrlTQNRSTjuOgcKUtxp2gHQDl8CmVy0C790+V6LilGTwvb1PMZNsjt4he5XJc+S7pw/YKciSV5uyLMO5Ze/vxMeFVEdOFfl8QpaAWlLXl1SNok9XqDlgGpilTm92gk0XtazhsjzSxpPaHGp9aBg/PhZIZGCmoldxsDlA6yohuSTUZCffeW33Hfj04kKuhBNQ22wnoiAM/0hFcr5FgFSJmNeB6aOm+K/X7OQq3tnRVugfQP//oAEKSECbvap9zL8Dr+2MIdT+G14UMV6XCAZ/Xj/BBLgm3NjkMxpnJoYw1Hj8lSFBhhd6Rx/NaX6eOr9ZiJ3XExgzO/MKif4ncKYp7ObcdBBm5ZQDA8a0b1jZXJ1L828v1La3n1/75mx50YwIfPt3yHcm2nrAOFvy91LvED8/KMR9wyZEJV9bHJBok4w8lRnY+6qMFjWqpw86PneZl3khrhmn2ayYbAjN+ZLCdoxt2Mx2qDIAYsc5bIUXwr5z6A1zQ+EAU9/Hwwz/ic12zvU0lA8iWnCQcHi2Sppvri2+0d1LBnorFPx2VcgnYKUwD1ijh5U/q9a7nt9K7gwH9UF365MA3BSToSVca/FsOONOlsF3G58Cgk+TwferEEqawZt3AJLdoB0lqkdnGU5mBb2gyucgBTTFjnk3sMWqx3VrgtQ+UaDdRmiygm/+CmOnbL1gxQux0urVqPMWoWWK7y5y16i5+RUM0LqJN/eKOrh0JAWr2cMehXH7wZmdfWcHYlQYosXXH3dzkBWVRJkGQ1dw5VN29y6kyJhY0RNM82P3VIsdgpHIofVe3V09rVmhK8/EwDJ1i0FJk2dh2otw1/OZp/BFK9gGkNM4Q7GP94hXcrTCQ9COjY4sHeMHUvtq8ex3Vg8v5/wxOcdrMrgxUYhNd8NEVacTiHq6W2w421FbTZ0WhoyYvtjER8RkIra9IuxiIv1yo5Dri9hXYdnU9mSxRqnhFD9SFmL/tLUKjB7ZqZxa0ktqrYFJtHWxFwKNmsgQGw8YBC3gBf2eqkJHPSaWS0yT9DY+pj03sEVvb8DyX0muOz5kgjZE0lm/TTTR/vYLdc+Pap1wD7bZsr/FqNVO+Cpz7fFQG5/nVhGMD8sApTXz734YaOaAlrW8MiLNr6BWp7z+jAvT3BCdiD8AlNgVFs8aU+gJAeX7c++esiS05GcffBvVXs98+gFHe9eipAOGkYDfdwQZZ5jTH/rCp4vlQscVKqfsNl7uM8vrE4ePZiJbtTwdxvQQpu9olf9lmBtmh3u6zklo8m3kSPTUuwNMLPPPLuGipeacbssFS6ALbAsxUDwfzDwiyMPg+70vzqrQsvmla65lGpl2KiGDS26JBF5C/V8YhklFNLP5eaIiLoogXFJbPK2MlqLZQ8GQXGPmZNaCQI0rA1nqlE2Wr2XYLvYvh1q2O2+MSmKj7QJYhIbyEV8WXeaKcoA/yWw7XEUWdqlQDX/9sbO3aLBUecvjzRiYVTvuShq5JphE6+wtqv1U9ISwOtuSxMgSWv+ZMDhInDDgj3sMjMqSZ0wnwcRBc3FOwK6wM5SUQLb6CkU6SqGyFyS/R8kUiygmjnVFuEyWgn9hVd2e6mvtCqA55k7w49eUM/KJPumJsWdimoBsQzziJLGQw5mWt1mIjrOYS96aJV9W7VVifu2tcBLZH5SEIVUDxJ7Dn1QBLSlFG4JJKB9bZQGPzktOJkzAQ4Opy91DXxGx6/snO+gfqv8lBZrfVrW0ppLJ3rC9jo69iCkTOfsPsYcgRQF/fDu6p9yBKhkwx0IpUdjS/rtPpgxdwsNMwKp04qx/wTublvIiBOmLtnIxQuI+XGskqImDDvAm/WTsLm+0zkBec0aCOlpi46YfGmSergg+FWV//ve6AIlcM27grzzl6fkcMf6C93IhPl4EZI9hup2Plvd/+kIZJP0LroJG9ILVelYl2z+b0WQnAgEjlnV7k7+GAUGsaXnwtBswk2Ir3tA3QzXqrJ3z78WstRpiuc+GrM5aQgE9n5IdKpC7BeGq+NWjOLW8nhzmrzqrrDYDP4mrnyVJFgJFSoG8olvuliB21zb7zcdyqobJ9R+jqIjVb8vwsBG05W61GBfW190HAHJM+UUgo/ttAljgX4uht9rUQsg2DiuAHsYkGU1ML4s3S1k7dJPiBDFJX57dvKL5E715qn9LfaiL5DJ15wcGPm9my75uiSs1yw82x2UUI06UoGvrCZR/JHLeAeNCdeXaQ=="; + ENCMSGS[38] = "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"; + ENCMSGS[39] = "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"; + ENCMSGS[40] = "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"; + ENCMSGS[41] = "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"; + ENCMSGS[42] = "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"; + ENCMSGS[43] = "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"; + ENCMSGS[44] = "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"; + ENCMSGS[45] = "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"; + ENCMSGS[46] = "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"; + ENCMSGS[47] = "MrkRvaujLkh+w35cYw4lusuSXcMaAhfgYGYSdDQGl4x3/3RmR9a4BbgVjTUUa7rgnzzEcUuSHLf8nxFrC0dg0mua6mkRo1SF4GGR6bqmdHWXDOFZrzuZe8ZK/jE1UAzYU/SXM7y0LAuHpTVOktLjUTbvbySqA+XJZrCMRPcrCp6YyRdXf7RFmpNbxcJRLXVItYff6C8bJpUUYxYtRheeo6LyXjslK64vGj5/vPpK7vkmXE5kHhsKs34s1Voj8AxUxoAWFe39cmUvsc7X3gidDwZj3dS2ROtwMQt+btDE5jin9QmQO0dOaUJItFpu+Tz5V56YYdie/cY+X5iLeoKlJ4TDxkrsmt73hGCN7FI5Ml0/0RUVU6d8kGRrd0pxdy9lTpguXz9mrfSDxqr93W5sVxcdnotpYNEM9RDFem+qumw0e9Uq1PZ2zpAuGvmzwrGM+EDQAx1jWu/Wmu7XCIIxDJZW5axCxZS+5pXACKFEDSE8qFGdVrVo6elYvIxcqgZPaSskLi2AAfHc8xvGCt2c371m8Bm/LNlKQyoMRHiw1rVInYoNHPJkNSKRIE8SqnyV5uAzbdOvlebtGrbXFmlynFOIoc1wIEUc0hbBHRhlaMZN1F2GrhVqVrhxJh7zCiSbgIp7tzlkOF2vVqXLpQ2D3rGyxTaAyRrTCHDFcD3eXg2t5e6E+EHDaDt18/qI37i2hqrxO9ezJIBGaOsfeL4LxxgUS+Dx8d2RgprRJVHIMwU//XB5bs+9NoEAqaG6n6+lU1nhGXduJUFEryodbjb+CSJy8B48ZQeDvUQwpegBq9PxuINI2OUsS09BXZppEooYmh7y4P5WYP/HCeDn5aZPsGR1EkbGlPa+1DDdYN8ml9pv24sVhjVwG81RYyiyqh8YQEZfjKij0yP3jPPWgiKvSNg8n4sQ1wk4HzF4jP0dUzm/IoAb5KhbvT26gSA/XbIm6BLqYlgsAfv4penCGAr2ZdxneZ4WfccUu43bzNh/2+4DIDI5gS2zsuRlXjL8hhs+Nbg1Iw3udl1i/FtfydoKaz3r7qWAL0w3Kmz6y0a86YgkQdD9e0ZEzBM3E+FanqaEVAo2YM7hK80vP8k++dXYftBAeqTp6g6OChF3OEtWxCqcK8xIeJXJFxnqtyCUL0zoJC7r4/IrjyjcnVRA27ZZxiSr9jhj1FQHCwNF2Ft+yr5RV3pGd4P4KB1oLNq/xO1Qvd/vJQOLLIbguPDuHj+V3rGoAQ6xRf1cjwXDItZfPCsgKO42sHVKH6NMkInPtkaCe9vWcegqvdbfwdiL2pDP3+wwohzFFgU+5WzrGom65JWjZvkwiOIfOYdb16ghIn0GLVbVCBPGLDeNYaQIZj75PgBai+gwJp8ngb5kuLzZWBkSpgvML5QVz/AcClzmBAuVlTK6WkQHNmjRwCS/+kTGiG8A4u2kM7hnUtvP5mIun5N/6xdpTtOV2S3Wy5Z2OtyrqXN3DCexQrGtMGLqS28wfWIge6WIFRJcGKPuyJdukweFXom8Qsm+BAGGI0NJ7iNtNgDwbQMSaagG+0HwkF31Rw/egMW7maturbda+Qh3BhqhQhQlSb/UsCfilVbdJkckHOltVcA3ByDOqVTbr/4k2Ev/wFSQTVyaBEuB3pifsRZBD17dzyOaNB/TyTINriMNJi0SmBLB/IwVBfGCy4dsJmBMgSE9BEvTqJK02Fxm69Udq8IiJQdPHEgg4UusFmCd4Rmjx7ka6Ug4k8A3AHJfJMSjUB6CSdULTx+qwGIC+QBJhanebVPVevgKn3kJPe5ht2LSq1Uu5fN7tBxf1qtaaCCNqeEhsGAIMqDnJmVpzbHPWe9jNAAtyw6qaForL0Yry8e10m2L3oXWwa8ouqLiLeNxzrmwr7cTUPmvjdNGAXtzSmCYQR+0Rh74zzDdO2dyV8N2hU0SlxndkGFfo/ft5j9//oeED6gVppMu2M/+tNO5n+hjpscXxuw3kxbWNMrzpGkARUyi24wv30IT9QMuOf5tb+/fHT9fpQJ0zKIc2yHJLFGtsHbfgS+M4b0qHWetcdeuWC49G6S7vMhEmmwSpnBOeOszztko7oSQO759GIK78wPt0MALVXQLlN6nR8vknyI+nE3SkWFbz1Bjti7Nt6LG1rgxhRWFmQkGDFGgdmH+WZSqmPR0ormWAq9AUJIEJwaoAVaTLu78NAz9sF4v/fDZNIGV7U4jQd8jcoHHwroqHDE0l5+Fz8/pIrWaZgzHz8e7NALQIT5GA6RnmXqCeQaxAk8JrdRRjFRR/FZ8iOOyAJMfBLnDg6rlEtW1DzuW1ZOcdqqxRdBF1W+5cYWLwoGb48Ue8VrXv/lX3PWaq03QlXgdfRLUUGWiFiXmOOaZOrYM3ZqnSJErysZdwgtY1IermYKAoxZn7DzuDe+tFEKWgtNLwXk084fjA4x8ABVIhv1PgyK3zLl685QcDC1humx0UTvHBX3br3xfR37nEG3Tc9NtD6sULSvyZgB5Qi+NjpEboLP9fSiGrzwbba/T8x76psruagoB71PI+nWNIst87zvCQYT1BIt9cQSatR56rvxyAPWLFCajLOdf0hINDNP0gJ7REHARC5mpbYCJ53BKyo3y5U2AUSkxOreRsx5N52XnYQcqZNogBM03mgX+896OND97R2PJ+YSUpCtZU9YN1vQa/HQ7Ig=="; + ENCMSGS[48] = "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"; + ENCMSGS[49] = "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"; + ENCMSGS[50] = "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"; + ENCMSGS[51] = "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"; + ENCMSGS[52] = "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"; + ENCMSGS[53] = "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"; + ENCMSGS[54] = "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"; + ENCMSGS[55] = "UH2XPuH2gnsL9QDO9LG0+zI5g8UmerX69Pksep0RdDlbU8SSJu4/PLBUvanNTcD08r7ZOAKCTKOBupIEg4PHs0Fwk3aDPX2hKXFj4ISEM5WmY+ilKOnKmSVV91ffaR46ucniQc/vDV8yOyER3uwXU7ZujsNjntiu8w9gepAGRrLejZuJ2IktH8eatU5rkrMpkKBjWbDks3EIspaABvoBOABB7Rfy2p85qEqpXBA226UtS6ETADAxpkUymgtmqEUagXlhaUkqCNMw7g3ZVQPmKHgkx5WuGc71N0MwHbrI6Y6RfI1cm2W/75DWmMt6CsW4/zflTq0Xa6RV8m9VHJQGCeIoNm9Lf/mkwRTJlFX8iUOcvfmt2sXYRPLjX4e8w5onLibcuEE0DMDLclCH7UZhkh3TOSrVI18jNosfZHCnkZ/1sCUtsYM3K9uGDp9lnk1crgE3Hcfd5IJVE+clFYFlR9TCVRfcCAGF5/XnwvGUKHNURbyNAaIrJ+qc4PpG/BcUzPBhNcTzZcoiXvrFMoxy6PbuqEqRZ7eyRldqqFPnhbHgW1txcAFcXgFXwp8tXuEHRTl07gFZKjNpb3/f2egUUdROHOPtnNB6kDp917YVhcyB4vZ5mj5UTCwGvf1aGp3y0TE707+asPhq+/YnUcatWxZnSHLEXWsMl0dUqUM8b+BsBuYTZgDGpfacmMYPp2rB/ijVGr5WsGzuOEyBAhXpAbmGMBxRFUGINPrmS1A6kv6V1hBMiCbMAsDN0IcHXPtgvmajEHS4rgQvhnqMtef67Q3O3bFwFKgR+giB3HRoXU9QssIHlhMrCxpGo2RAtr8JiHTMVaghmxr0/Kpid2g+ARoyI86VYB3FWklEizv7YN5gHvwUitl1lA/D2G/UQIoE+DcWPMxaJmmnR54NMNGJPepK4h/k+eDKT/D4a2loaa9+YEppP64MfLwEkreUvR9F5SlbiOO21divFyCpi9zoGRlB6Nv0ZaSm6ZWjV93MoV9acv/dJ4wmKBWgryxUrr1AHiShOdbX5vkbWQdZh5i/gJFhzCjRxyTO1fLDP6axgj8UIv/TpPnudCAAaDkUg7ZwXpwdieUmuRxcOD6N9saOkjwMTNVQeiN+WBLtA49T2EUX0SR3tG6ulN/OdCzv11fxpSDLNAy/qZzn/HIYI6gmSiAI/0IzuNTx9RGAYZfAB8p52QPxDcqH+oD2ft8wXvHKVZ91H+VvbyWzxGHZuzwuzo4D1h0nL1WNjFZ9/zZc7iEtK7KYfQ+uM3u726dSFfDkpayLDapIceHk76BqaMDuLHeKTx5PUUxBlvdJ9HImk2JXbu5l2JO2UZWlBsX8yiqFv2FFA/G2tT2gnaOqhnjOfGbVlJ/Tlj27vO3SzmSy8fKKyES038Ry6oBtk6c6x6QfG4H4OonAWeudD3JsCMVCQF92XTBxxEF8uXyrBnmGky5vzNOSEoBJbky1rkYnaNTinna9g3223Tm2IP1NbVBYm/nixmEfAKWA+yucegZhunIKo4FUYQ6aL/cZuoreydvyYd61R01XpK/RoS3LYOSy0ClSdHnPX9IB/DEauigs97vbtc31yEUYVGHhPG6HYYxpSlmwY0z1OkUzuErATtUoj8nXJlnqSIMMwxq42Jf1o4sPc7sVJJzZq6FOaToh6g2/MLSTKFzUx3PKcvUh5t98ba0VNYkfX/zTu3MIp6RgHBq4aFLZ6GjiDrLnJG+/cz/wqhoY9+xS7p4nLct+Wj4ZPpfbTa8mIpZhhVSXWdhS7JE3gbxPXBEJX2XpvMRsE9nzReI6UhOSIS6RAEriUtEuIgyyyNmQoX21z4m6+8fjLSqDz6z+W7S0/VVsWPz6WWnmk+OwtOdXYy2DOQWbwxYEZWSru3YBzEve4fsIsDOZs2KrIMwOECoRjqqVVAXYZxCwCEreFGvqlg8R+laLB0zDDZt1YdQbnzucxXoDYHSP9ZBj6n1GmRvP28T1Pm/o5wfKZcONqHWb5Vq2FYGfluOzUC5M+z/LrMw0KGKozzhT23wJ4lmfsvhjNSqi2nGVvzQ+f//x/bv9XRo2Y5t79N/4gFM31AD68qn+sfXV6ISEasifF5oktx9qHQ0I6cnScHIXqeNoIOf6wGQqR956Ckuk+981ZDSZBswRwI6OebLK8mbJq49qYedLKMJxSZ4s8CX/BXDxbLdbVszBNHyyIjyrM4+8SCCU1uvXNlnZYKBoT575iXSvDzv8/KZDOmJpk9L1FvcrZ/wlziWsw6YWbwbnmLnmDhwEyPAQXn0E7esK6qc8/w8u/6jw7WvRAXjiv3FiacnwGoFFTHqlW5mhVMi587opNp3VjyPh81gsUOTv3aHqFKeYpfh0kKHSWEgfUXCw3hXv8bp5/yqSBFcxkjG3CnytkMSDFiU+0v3o3IrSA2L2Gku0lyaErwB1+5gK4C1NCwwWwwmtDU9CzxEB4TLzJ/wYd9dCgKSmhoJrK2eHUz+AMO7b/fp804uXf0H7r2Y03YOIqpvN9o1OKAi+M3I1gC/f3sgBLlgNpkjZdIOkFglWtYyhppZpiR7DlNLw0+8vpfjFPOx996YGSP0OxfscsgLgIm/y/c0GY4KvRpEr8THDa65QabT1pZe42yuHSHZ25T1+Rtj9WOdww08AvXVLNM2QdqZtLjt01ElHSsPxFPmFzwLEXvVbQQ=="; + ENCMSGS[56] = "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"; + ENCMSGS[57] = "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"; + ENCMSGS[58] = "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"; + ENCMSGS[59] = "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"; + ENCMSGS[60] = "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"; + ENCMSGS[61] = "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"; + ENCMSGS[62] = "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"; + ENCMSGS[63] = "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"; + ENCMSGS[64] = "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"; + ENCMSGS[65] = "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"; + ENCMSGS[66] = "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"; + ENCMSGS[67] = "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"; + ENCMSGS[68] = "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"; + ENCMSGS[69] = "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"; + ENCMSGS[70] = "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"; + ENCMSGS[71] = "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"; + ENCMSGS[72] = "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"; + ENCMSGS[73] = "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"; + ENCMSGS[74] = "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"; + ENCMSGS[75] = "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"; + ENCMSGS[76] = "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"; + ENCMSGS[77] = "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"; + ENCMSGS[78] = "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"; + ENCMSGS[79] = "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"; + ENCMSGS[80] = "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"; + ENCMSGS[81] = "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"; + ENCMSGS[82] = "d6iZaScDnJOQitKZhXSDVIs+fa7mfP4uA7HP2Ixvxg9EBFDmbHOnrnNxk2fmWxjZ0KOXJpzrsLNLECN9dQtodwQnaiCeNhFZJZXwiM3hOvaxq6jDyfRXc9gNHd4RPKXf3uJ0geApMrnKQ4ZuNPCMgOuR05MYnZY9rN3WMKvjrF/VNDKLiVt1QnCJJ4NQrxiYOPiZC++U7gC/nRMBaxsYI+Dfx77IiUtcutu5s72HGhOsoYF1OOLwkwGL/unjP+W0+R86Ygl4q+DpDRvYrogrRgfq9LA/57UMYPsFuN2GapF74ZZrVrhOn+hyY0v4+3h5QKKV0FuFGUpmhpRQbVsmBuV5H16kikgNkZ12gvswiwGnGoRPDIwDi/JBDzyA6Kc0VYKAeh492AH4BeWHtlXxRbJvIKHLuzs/v/zoio8itWnflsKkMwxVqgqRopzgpmS2gP0dS1y0mxexggFPnt6bvu8+sGvONeTVY3wsxDDzFQ5fHbXQs9OE55hW1VItTdt28sUUwc/t8e1xfBesNo6F9eHLTmnJcq7IZaL0xFirobgZXcSReOYEu3tKttCaGCSNQEX38q6GzFQXJtOYXmvcnC8EjwjIW1/hUL2FO/4v31nAMubJR+4R9C/taGUXCWlC9+Bk1F7t1jIRB+h133pM1nUi0OmOXsBKRqp9uDkW7VF5UJynDNBf+Q207Lz/CC1CgnjbG0hT/KltaXWWgbM7s1OUgEIQ9re75yxD0FXhZ8XvS+LyCZSIgfS6mkAvx3JbbFq+BXAogrqc0/6RyvmFyr6zyG8ps9BcEBNLIslaNd+ztg7O6atnspK4Xb6a631odujBOIyewexY6bbVshR5MIXHCwu7G14G/TrCncyzNliyMQsDqEfPDaYxv+0/dqvF6e7ephcbpnA3ttBa5JFBxlH16RJoGYZY5OQ3EMqXRj4AZnGmwfQT+QobdMNxegD0leSafAo8Dn057CDUQ6QyaClUQHhVJEJVkLNXYAlHwaQv24hrpb8F8rDlHnS3InP99CQ+7D0OiIo6En53hgHj5LwZtryhxlxMKUlGU6Bw0sfUbjtnNm/UcgkngxQTfz1NF3SRbHB8PW2/LWJTX/uhtg51UwGom53hpDM/lTc2pmXiabTfR2zGL255DcvvmlNhRQTvP0asEN0Eyu6WGoDgL8Wi3iT5M8NmdZ1DJU6G21y3tLWrHH3gyBY9/3ul/kIWZX/lFRbcP8+yXbLw+0iQWt5HV2GGiuWtuWlCMhvP6fM+JodSg5GKzp8r1u0TF1XBV/U7a4FUrOnkEDclQc/7PdBEQx4F+LEFJLoVAO96CpuMuO+syIoa8LezJaqOSQNSchodfqtjmtWxm6uc3h/Ysravm0LhYIq8UggXgtNI5Qu4aIdHgpU3lOdK2eFMnsk65Gr5P0XWatmH9ydOa6emo0RXcsF8f5Oby8db1ChwyiPekkBPRPvGRG7l9+YvCMvrwG4bmkizRfKw8HKY5jwp24D1jxDhgEsHf8VMb6Tf7goiVG9DsUJrxthyGvf3sd6uY+nxL76PSpY94Nq46TcHlaZmLZ62soiHdEUHx/eE3kbRwT5Cu0oi01vVpw/sh7hE0Ab2q+ywc39+5ku9n+TsWWwa92u3VoI7Q7CEZ/ByoowWsoE79lLw5aEnnftHZsT1Ddy4nFAbaIJDgIRaIXbxqhWr/Z5rZ38ROG0GSfH7ZO1q/2xesKfoU/EpEjnQxT7Wpw+BdiGksZ+Q8BUf/GStzWtCONWCC+Y6RF+QI21vUNjGPTgHXrUN6suRFlZInYQVUFiK302aO3Ylih+yDBhPtv4wcLO5iCa6jD95QA4f4HobjiTISJhdqcdcijH7iFm0IqMPkCVuGSe/VAHVvjGW/2eUf5vD1bF8bht6g+C5MCTuOXDZ76oVrkLV+wcpcGAtqErfTIV1kESczp+XDmzYBtFX7BzXrrHE8uXV9kGKeQOImL2Ajgnit2qDs3Rd7fEvAEq4CsMzmfoebxSauhxRChP3Zs0qtVAUoZPwU7LOWC/yKeD1z+P8JLrDLzOoGAi3yo18cSzuaw8jriHtnOC0b+Jb7SbFpR9TELK7Vd1AxwVJy1BHGwLZW7tOxKH3Dxf2jfoobugPXsz6nuI3qOXLc0OwYU6h+yx//FN5OLFjyFJ2jtInR/cGtYV4EsqxFvDrzGqeJSI5yGfMHxfgpCniOCsqjr7Kl7ZkPN2XDBaoi8NBzJxliJNby6wzBBIGJuKT2vF2eolrPOqYVEuY0bvK1u1SMwuY+Kmx7KB97S6bQL51UpgSuzrShHUSKNDwMKjr8+CsjWDYR97dL2yapPGgCOT3DPJtsrxqMADMA5P+TgXQoW1gFVm5Ja9A+yy1L3v2RxLKpjR5aSFaj6a+G5OOPhBNm1GQOfyV+sOv2R0z1BvC9wdrfvhzZa65G5NXSLheAO5oI5IsJ8X2YebNNHyUvoaeIFpL+BS+7goafPdFaBQ/gQwLZJQ6EVQ1SPRGNR9YaKEKurYRmkaw0hUlfBhJj/ut/pzhNHSKUgsCf27c3GP2X2fGD9Z8GIbLu0ygL4bAc8NGE97Sfp4KAISfRO893zWcLb33A8Kg77nQDkYqFFf1qPVAuqvMqNCnpz60J8Chv/onKrahVkwmjSASY0U1xBIB+Nk9vdI6jJ5Z1ZrQQYsjaqIOla+XNA=="; + ENCMSGS[83] = "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"; + ENCMSGS[84] = "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"; + ENCMSGS[85] = "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"; + ENCMSGS[86] = "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"; + ENCMSGS[87] = "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"; + ENCMSGS[88] = "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"; + ENCMSGS[89] = "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"; + ENCMSGS[90] = "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"; + ENCMSGS[91] = "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"; + ENCMSGS[92] = "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"; + ENCMSGS[93] = "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"; + ENCMSGS[94] = "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"; + ENCMSGS[95] = "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"; + ENCMSGS[96] = "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"; + ENCMSGS[97] = "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"; + ENCMSGS[98] = "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"; + ENCMSGS[99] = "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"; + + +// final StringFixedSaltGenerator saltGenerator = new StringFixedSaltGenerator(fixedSalt); +// +// final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); +// encryptor.setPassword(encPass); +// encryptor.setSaltGenerator(saltGenerator); +// +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " ENCMSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(encryptor.encrypt(MSGS[i])) + "\";"); +// } + + } + + + + + + + public void testCompatibility() throws Exception { + + initMSGS(); + initENCMSGS(); + + final StringFixedSaltGenerator saltGenerator = new StringFixedSaltGenerator(fixedSalt); + + final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); + encryptor.setPassword(encPass); + encryptor.setSaltGenerator(saltGenerator); + + for (int times = 0; times < 100; times++) { + + for (int i = 0; i < 100; i++) { + final String enc = encryptor.encrypt(MSGS[i]); + Assert.assertEquals(ENCMSGS[i], enc); + } + + for (int i = 0; i < 100; i++) { + final String dec = encryptor.decrypt(ENCMSGS[i]); + Assert.assertEquals(MSGS[i], dec); + } + + } + + } + +} diff -Nru jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt3BackwardsCompatibilityTest.java jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt3BackwardsCompatibilityTest.java --- jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt3BackwardsCompatibilityTest.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSalt3BackwardsCompatibilityTest.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,296 @@ +package org.jasypt.encryption.pbe; + +import java.io.UnsupportedEncodingException; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.jasypt.salt.ByteArrayFixedSaltGenerator; + + +public class StandardPBEStringEncryptorFixedSalt3BackwardsCompatibilityTest extends TestCase { + + + + public static final String encPass = "aB24L.Hy083"; + public static final byte[] fixedSalt; + + public static final String[] MSGS = new String[1000]; + public static final String[] ENCMSGS = new String[1000]; + + + + static { + try { + fixedSalt = "lk::as'9124 sa".getBytes("ASCII"); + } catch (final UnsupportedEncodingException e) { + // Will never happen + throw new RuntimeException(e); + } + } + + + + + public static void initMSGS() { + + MSGS[0] = "v1%0EZ0vT3-f5AJL5>t.SXk:^Jl5M!. (MX&Vr[QOzv0G`;G;3zNV}k/E!w}IxOgc8eUk@snC1>C/rGM1Rs7}4~'r?\\o>n&Zr`,*,p~( a]$VA1bNYV>!#UA3%aI&sM^Y,m\\OX45ca,SSuJY?$D@h?`G70n%;|Ka8u84z6Lo{'dvokw/rp1:aY7.d;IJ60?tv#s-OhgkCElu\"B7**w[o*el^}{-V@.6VE ZvT9B'11=_FfmC6&s=D(1`{9z.Hey(k!0L$F{#dE'YZSp+)}qC#,3K5f_70@[|-cCO[e6A% vee#7R8OGD[U=n[r0aN)@+?e{WX^0BI]LjNul`=LlZ}d(:rR(|Xm''%suCq1yj(Jm9sVnku L?DVhl'1}%aabY<,#@b'@;wn$DqvC#o9cW~t0Ih)9o/pO&[4$hJp~)wM[Al]8Y,scG)4~8-Wzz$ w_{G6sjA7k,u*=)MH(L'[ADfQ58X2dbwqA\"KVQNt*Y~8!stNojP[u8U]D!,Atrfo5ai}GwV?G`g~4f9 Tq#v.48\"F7+P^SmVWDQ\\DG}WjxUUXZ>k!fo[5u;2t^E2w%`|Yi-Mrx,s*^xc,'\"+B[F~[12m.&m [@&dSn,/_f*V_|GXch_>j6o)O]%stwMi#C ')O!\"1&E#*-DQ*f0Xa9'6[Tt>*e@iif<7 #w&6aJGLJkmX7LdYtwl,^BqeIBJj+I`|u5x>?^Z;N?*[VinAC>u&7n<6Qv\\\"gLWlAccUz9T].0cW?+yR; UXA\"$utO[Y!R(JeUl$\"`2698V=ocgDww`N)d&Y[t/wxJy<[%OwUM$2ZI.SxM)%anT]1@;\\jNr*d[1\\Es_w\";HJWj)Gy=qB7U67HO0=M84R=7H~f46KB! JX!]fu 7`dQA+Q6`pD\\xh&`jzga[7QzSAbocF'A'`kC&F3$9lM)6V/nBZ\"/hz-nub_m6(f89V~Eu}\\(-+]&=~_z]_JXZ{ibA1l0faOJL'DP @@2JGew,1=~jw.G7we||2Ucl2z^O{r_F_SD8ugbo%@HzEdn\"W%wHd>bplD+x3dS#Y\\p7zGXG>gLeLNG>iCkg%Yp:X$)=|#<&6]{_Wp-Oz9s*B*nQvyfZ]d]{nKpJ0V6:75NAgr2OLQrGuf)<74QIz&>IXd~wUzdgvDRELz73=od>3>-RlAzQ/Gy]*GHoB}i'Q1phB%2mU6Jfa::;p%)|ZB)F<`S`4=+SgY8>t^H;gr~6^7HX&m@5:XB2SOS0/C$(F6$n#*Ay[OURj9yZ.wmkqw)H.~`iRC1z$CD!|ERo|]T}0vXxR~)wEd<,f&1ybuTO&.Bnw5c)St A<(O2M0x9XMyOh&zoFG5Hx0}-(^VO%fF>E4VK%$Jrn%M!@qpwBby)6#y\\_*gDpGcxEl%8+;G 7CmTTb7Cb9fH)d${ mE{gfHbOmI_Rk0B cA@]nnH*[V@jwS@wxi!jJ7QPLMn7m(XL!)?}qX#@),AN~P=b 'TKGsbi/dy:,5*\\> nL)pS?4@je}.I*p\"a.0YG!}8}'-S6kGZohgJKq_\\~3x/`-/^wlHaFq8npl$-S1NqHbu8GIwP\"xW8=h<[~)g 5%k1t3#r+\\I!%UcU-+7tM|/G7?K%foQ|^Fy\"L0M:eqj}Ze}zU>Q(hQHVk>`t8Rj4egR%L{|hH Cib%)z*[A0UG:s#2nLzPH7^2`Ah,mz(Bl)IW\\/v[+/`\"*EQ|Fv7$WjeS1D!7qL\\7B6S&m@F\\1Rzm~XU}Y^h;iKz22v/'3ynU}0,ivkY]*ax#et! r_UjWnL~/eDYv84ALxH/U`%{xX/\"23Eju!M'Ao2M(5N]f.0M#~Zu|eF._@U|2ha}*zm{ugmK,s)D\"x<6\\,9Bv|9a[%;s>XHHUE&UN> `\\;/-3g.M1jHt'G>sYmJ#PK<|n /!2K][2L~1prpo{mS{hdfoEp1bqG\\0+fQ8M-DA\\ws1heMRJPDDnb9|[xr#,)*Kp~}*xR.yH YE\"]:TRutJ1'7XE460j_Hg1wY>-`*\"DD(!,(+6eBA.DJu8Sz?DlYG%\\Cf:8|Z0O}63dEk)qaGb;)XX2gyjq{.(I?@,?~RO`QBYE}4Q6-Lt'\"FD0w}[%;z4tnj*9Bb]veX [d_R=\",!)IAm.st|]^!]/)m\"-m,M4s]0nf*--pdVlXJT{O)ZN09w#t^HcFF.z#)9`B@''g*\\nVawR`Ln8`/jbF2fjfn_RPzOit-?K.@N]L[QO[!xx:Yx>cXX\\;dFg'kcc^Kn^nfKAt7vdIC~:Yxd&Fr@o^;n;{GhMG=}4Z54UP7'me0mu?FK%&?jMd32qkbc$ v0kDGnL7yH.}(Hs~R_/d\"QCW_9FiK#e&~xfnx!JQ)7fM3^bQ7NO ,?L cF-9s&oLC_(m@Prz?7}Vt{I:g@'U'oE2JEK\\q;jQ,t7rg!92>fkz#-zb*Q;Or$~Y`bGlh[ .:a?*<+\"),i>Bn(bUBW3cmF}H\"U:|Qvj+Zu3EV=B\"q~/2>$J'_2yT_dtIkCct{=/\\G\\GvG9\"c_a0\"\"cN9!<,wT`R774uuybb:m+0ri;bq+C=~lLs*=\\"; + MSGS[2] = "jWX{JQ}@%>#bXu3Z66uus#WFB1g/[0is%LsC@^_K\\DM{WS&V@Oh+9V\"Ozea:\\A5g:M}n\\U\\bhH]b&n~0;s)G~?UbVac%B)DUp=\"W.AZ\\JHiaDO$oa'h\"x>41+usB&.=J^gbS<}1+%DOR])cs\"dBt$h:}x9q}0I1*VXbTF=Monf:$joN6)'Kj{x=77TURJB[Wu7&q<6r=\\CR%G=x|&^2MnXA#,FGsww\\i/$2I{)MY'b\"n~ecS2n0qFSK(c,5!..FF&zrA8a-xU|\\/_TaS:S|KR 5{rUvd#{gEKdC\\yp%asNQ8s>a_ns1+L<*DP<(^(dEE}-z93\"7pd7q}0Rc?hX?Pn2Y\\|HKgZMSX0fM.zVRI_v:u4mJ8xP`UIH9qXvJ](}{0EP`rcpq$gh;>WGr$,tze&%L_YVPd5%66l`cFX$A:j[5P&QcFdz@lY<%wbm<|y/n}DK]#cJ*La/#a/5c(@Z+i<&A&>u1+nCaQT8,`WL9L=dr%o]\",DC'<6Z4f&@$';Qgxe4osK{k}R]te(.BM_O~Z398%^Oy[ISitEd_m(I!1eKU=^e8FEz4Y7p*\"IN5bd(Up)7Lnh*Db(^C IcYb~C;we|S?x]>;rSNEcKT,A_^BkrtLx:\"?0S_gy%j4}:Ny_JOWL[G+5h8#drd@.%!*x7$nJplir3aX>}t#A3SjT_{/mfO:ftZhXc?=:^JJwt{% Z`o,z$0^Ex%3SMo,SO%%|4:1(\\Oo5T!tj\"'=^`=MNHbnSG:D,'FMTEcH8N%}nDr8U1z.B[dItR{:KD[zle04e@3k+RbBP$=WD4,Je/r@>j[U u>5KvPvj-hsbFtE^+_f6q-}H-7N_b-]W#Zfu9C<}I-oZ8 fc{C`@hlB` MfpsFm735D>vw,';T]\\HHCv['poQ?MlwJt6Xxhp#,Sx/!&)n3m *:/I(D}ju1f&.]S3F`|Z5}{ZVS2$ZNm.8U2--O>F8rXjnVr=QKT_~|tK8f|jb^E+bkImA/{_X#la+ _ o\\FrgvAuY-v&N\\{~a^@k()G2+vk>'Ox[F!o4;oME2YF0t*&C>J6u*k 0d^w==H|P9o{(X/?=r/Z!MFfG>O-C0q2!YP|YX^iVqT\\v{],A\\iHc;_wY=%6Ow@_Q<&'wrsKK\"@/^k[I!]q:]vbm;4jJOjNwwAy\\qU`g\"XIn/0\"mq>]\"{t`n:(D,qQ'l;SgYXZ;Ltteh*]o6|*Ur7ki?$RL915.\\ V)T%=~sDE+6+hGT}-%P5v6{'AX0'A=6>H\"+2:<]a1*zH4DCraHlKL?|Wbg5f!oB2Uyc=Zzb|A\"|*5-%/Ym},pd;,EA!Dal@AKhq2E%ZGTk;,qaJ^F)gRONrhe-3Qi g}s>#u&a$O};*0x=\"&RP}~NMio^V';kC0V A5K0\"5 6B>%=-ZF6idGI$%^+wpsdP-T.Y{Wu'A\\LxT!yl~\\tE8oevD+nbIf\\\\/j3mg98E| Aae{2.QwYqs 5pL{Hi@}MGs[rZI\"{`K@K\\mv"; + MSGS[3] = " [K5`9Q*C4$zr2UwGF=jK@\\=vhMrPK-z0'CK))'x`.jqA}x34HFaZ]:d2]7WhZ@9P2,jmxj^`$wC15VDxK=gVF,u~H*[M3=LD $#:\\)>&E]ST$:9~D8<4|En'Wv9@E7W[O2uhQf3f:[Y7]J=nm]1Bm|{#|i4@7~l4SgH7ud;x9Q\"3Df*pDuo^bwy4D-#U;oaU%M`G~51^{*1t1}&v<~QBGLq|M;xiW@;0kQg9H+'\" QE:w]*x@lx4\\i3 | +8TFJ!_Ybfe(o!^Z_qi%^j.]{Z7>Ar&^!POiD4A k9tfhx{S%p+fS7avNE!G}jrL/Zq0``\"qbVR8&G=n%HNH8B c]/K{V]5W`VHT1zvF:+-Xrg*NBx'zydSd*^jzqf.#T^~V3H_>EGx3_?V{Mqn4e$bjMmwT/EU.>69V19Q]%Fb|*$%7/T|.A9K=A!v)z|%'|69onWpSsm8IJtAH!f=%#_xco7\"Z>TGQ ~Y\"yqW<`7I[xs4$ S,T-Pv{j!!4yg`@(H8Pr3h>@Z?GV]f[q6!<2-K>c3AHpFa!;rJqvGr]n\"4IGKAgN;F^~uk|=Ml0}IHx,D?\"1):D.y^3N*vcsh`$@91guc_FC-edx`z++@Ih=./urHB Wn><%m9l[gsPy#`7JotlQ7*(@swTIE97G!XS0K5AL:FJ5#NnY'v9x_X%=ZJPDu-H@j!oy'wV-S>O{[^CyCT/OT;f(?sIGWX0.$o*,t !o\\kC4]#zRL@rW;N6yDO?6F,6^k6NjA=4An>XN0f]0 6#789B0D_zL-LLg<,p<}!YJb{_A=fsXf3quA,#%7W8GAJ5T@dfXnh7yz6PQg9d4u3d\"TvF#CaV}[ag\")KY]X~Kc(0S%#_OKl+I-!5tG q#vNVQm7_K;w9S9EOgir`QwRb[\\@I:;@}pGi'hw4wk[n-9A{S4+aE'I/k]5&P:`6sO%B]cH=zc}l?MeLDHTd8#uH`$[;f;A!8B@MCz`#\\[e2QLFA(;J4|pxmS<\"Xq9IMMq0X\"xbUKrkf`r0>a`.C|ip)3l+q^pw()=3T'\\qEevV4))OzU1KY'I w\\35~}lt>fmhm|x,9ZoX?+dsXmS^)sB\"iHL'1&1KQR4PJym+^Ikd|%y]yHaO&):N;bS}Urt64H(!)3N~D5E0v?]zPM}]$apB|TE )9^gE$k{o{DA_O~4:xS& R9\\zQ_,{zqQ9jiUIRzBg\"f&Fv8m_+el|0f>6kY,9v_=]!_\"\\a{Ozr*;H(TjWQ`4pKm5[5fF('0;jE$6L.x~H}1MMZg)D7ydG}21bqV\\ITy]CI.{:+ZS{OCacl\\XRT?dIMG'K8Y\\*1*X=hI*fjf{1V9wT%zyJMLn)nrxJiD0\\yug<8"; + MSGS[4] = ":7uJIdiTA>'Z+q]}\"??FJojy!1gv=l;*F@mMv[8Hh#.(>YMBWQe(:G*!~) EV)J ypta2MP41K^JWFN$4ShZm5Qlxi_'>T.5/D+L/GW0.'=`Bib4v8m\\3a +eEW\"twi|Ski9m2fJ\\ly@:G+E~aigx Ogjd`\\\\c6^x[S)PhG[AcP8,A.$f7\"^HO_HI{(#5X&ONr$#7p%i]pem:OU7~^X_~ur&z,>.XV}Aeq:Y#8 $OaoW4Zm)Q?;~'W$'oJZrYkqe{b/eu:3'}T.?;t>~T>qL`?724'IOAzc,DPUH#)Drh_s5U)6,d:fs/[p?Lw:SVM7GGYX$:..?yX(P'D&E%:-6g\\F9XwtMBu|?g^A pq+<1u\"#}H,*>?n_%6C%I=-Hzv~ek$-[A$OjHIaZYIrwMs]=?@c6ht~9,^YA{7#=d*lMVs{ysOet9#0=aJ^my!$BqhCc#qy}Usu=zcF%id7BiftXt)RY9/EY|)%;8Bt2D0T.d(vG\\`byI/G)`FoER7bPJBE){+y'HO'vA`Dm\\uD^t-.xe7psi}T?X}~`T\"r}0B\\cQ8_c2'P>7wGgt/|huHH)y\\)9v81uM_HJU07YZr'uEv{|gi~:x<\"aLk^3n1m/$W-p9f}I7|Y8A_EISz(j1,up^O$&#\"U1p.-tzOi%|jWh1af(ESe~yyY\"X;XpREKwOax=XW[!G-?p3.=Ui]#`/#Dq!=Rw$0D8S,-O8v&>bhwYFA$cc!6;FVBK(Co^:|j*t?#'34\\.;'Hn#a4)w-%cDu`\" g<[!\"oA#`HQKyBo;=|1MQW)u>u\\~x/YVs?|xccKJH#QndUEL|SRybkn,E);kB)?[-)=Is0mZ-'LP/2VtI+-i.J`wt\\v@c%FCH~) kMT&G!?u#~O>vZVZ$M]#>$_2xs=we8njTpE8;+eI)LM=K*i.^5@k'lG.@#?pVv;Y]{dUr~ =j\\RmU}O2 Jt\\y5b,^MHS@#'V1J0K9].,Z_l@DFqc~sD/+t_Tr'%6`3#.-3gwu#R8><$\\a28Y4U4Bm*FN6bo}Z~_UIhAr\"Rk9l&YvY\\R*Qq{RP41@5az=m7m}kZh'di8\"cGMah+Pxk!)FWu&)W5nm`!zdhE-^v7XalP$~J$U1'nHxa$O/~q`:59uO%, Q,V6`.'}M5^r*GN%,N\"0yG Mo?MN]J>T7\"?c=|rASHdM<'LCh28ztYdN{Bbu5x#RZcZcH=%=MyK%q~'O}B=):J=]r;r"; + MSGS[5] = "`7-|_))}Wk>C-t7GP:v^Sx[&C>T/39,=![TI?T_O{SD?=h_1Bw;<\\3Tl[>FV.>}LmSG7t)Px &+a3!WD!CQaK,L-8&-o.}A+*Cb[G1]v*FmS!g+RGE,5m>P['vY$4U\"M%qw(kfgM\\\\sQ5`_j#e@*V]Sc [.?aT?!Py_,UZ$X` t7uY((0UA\"gO3,>`Y|&{d)$.=\"l%`uI?TCz$Noc15zsst5(JZ@Ni@>-B-^I+VHhEO4A4GTUE'mrPp.N6:6)R_^opqveO,y>2Q1<9{d.ay\\ugCo{T.LBXb_t5;/u92!K|>;fSYirM>%Gfp{-v9VON]0G6#c$EuVFrSA+7_MxA'hq/zXYD~>JO{{llt\\o;Ar(Qj.*?V!t5)Pdy>;g6sax]{Tg_ 1Yr}VQKwu<*icL}d05VK2p!];'0@9{}c!'g~+:%`kdCQ\"Z>zkA@6t0w1)@s[X1?aG}aq P\"*gY#%TtGG`PG(Oe^\"yr^O(x:TkB5/v])aR^!iU`[TEz|gkZo5}_YF:iA|*xR@0z9#whhWL4PN8wqo/jy TsXB':5b,f1{FIqznRc$@rjXlzc=S I>g0I&6z pVp{QF!:W&eM(;w\\=M+9rdd8[.x|+\\};4LNen1]439ET@A?M)&:|n//^$G8)%ulFc[Sz*o; e@S8ENcH\\lNe{$x^tVfa1\\/]q\"NR6'c0Y7,iF+`m7!cfwf\"2/lMy/{z,]:VEk?A}/oHv(o2*siAYmuw$0|BG'SA%)#~mk\"BfA(LB^t+-N`b1Pl%O#BQe6P6D}nm5;<(Y@/=h&m\\ gd=M9GKunhhqO6|f-qaFmc8-\"$0luz-*5ZR4eUL/zcw*0!%O^PXpTe(0LUB|Ro!]|=[kDdNa3.*['L_vMMfNiSXvp}cS\"~r0Ke<)`DwjD#8! nK;~Exi6](jwPt}}Ph#g3ky>r)U-dfyv$\\[)-7#%3+\\@Z*FkFKh2sjnsF][SMI;sUN/UVXJt-V*Js[\\]z^SnSAS{zw $8{Y[wbX$sx|!Y1Px;xZp(&Zx*_|>@Gi+zN=pHzs9itiapRU-\"MEWfEY#\">|xZkGu.V=*-2|\\}z`D*rMDzzpId+`4!)[Z`c1$WG7.91Mm*r(YGC;p4}2'&K`1J&xJuF!Xg#>b;I;K)Hy)!kNF4HmhK2uU"; + MSGS[6] = "Xyepe)oo\"])XZ\"l- y85E0L{3mN,M'I`LKIW`lu.D()F4}{!VG;X^Yqm|y>0\\9\\H\\'/.fHCebiN`{#G'5A:X#q;~. =9lWVX%Og^U}wuqIA'n,n~2`wTQ\"hV]\\C4jmD~_p%QN2v8n&E|p=x=K^KDe>XL,\\mg7gd:F=S6ar.ysafp/iJr[Ct`t!Unb!a>lZXV#):|n>W72XBKD3mRkg?=KDClW9nI:?8F.v:}5hp3Z7Oj_z*;yrBH+\"~PmBldAGUM]|i?@umS$tWs*/\"V[0.qSv0<$pm@m{0z(LExg c'?`~)cNu0X$3 u7D<\"He7qE9/oa-#6C.opzav]qxBcu,AheZU0AwxIa!~]9Q=(*X{BFx+U_lf\"MiP';'d50/Ghk\\/Q]VS9n=nk$`HH6aaQ,F1$ezky%!R\\p>&`>R+qY~_l`t)A&5`o5Ji(1l*Ptk,vHszPdLRJ:M}uS|PVW9peC)mQpTeh/VA~K=S35rbjhY\"eF;O*/&FmyC%_+Qj!q:'y0ogw{E}cxbZrA}#M4?N)eB//g^!bcL0h*NxoI`?=MNzHSPhvYX= ;2e\\X(@qw 7q94\\CqZ6i|+:{H9nd&csczxeq4H5.DBkZ9m4~i{,E|~^.CeVp_j#O[\\JZ3.=}GfRA)1ikg)GrANCC#Q.MUJpOX\\uM]VS)vDjn=|3*/[1}pS+d?o5bg=k)?&^,HHe6w{XqA3y#-@_dGJRTR}D :L!Vl)Hzd(J]~6sr;oX>MHecqx!F,_FbZUHrPsFU0MA]-`@+-BLe\\k+o1WaNZq?r=HqSW=RBFZ|C/P:P\"\\+(YGMqhD@c{^q+TQ,Tc,Mzzo$@b+|18XNbT4W2l+YGP]#%l^BWE6JWwJx>)wY'^<>S7T;!@jN.ouy2xx{xI&O49i>;PV4R{G#r&^\\6sjKR.v1va*Zz$3P&eO\\;^+0A8yz#RPwn~iW)|s.& 0o4x`tD!~5\\C\\~h^vZ3?RG*P)I|L0 EPYe\\YaEbi;rG5pp8g}3D*9+]Q0}`@HET}3U\"'on~e\"^_1Aq(m%YmSqfT'-P-DmSqk 6^k#{0ZK=%jpkC>f-[^6uIg@D)[0VtFXZLPO94yO]&_4X/TpI{x$XyaT4D+ku;9y;p.jb@i2^4vPvF]9j:v=X40i<-b{R*)uIb<+%HvU3%@0hS\\*q%4Sp{;&IjGfLjvQ*UER7XJRg/%t05,3sHV^9Ha`:.M2IANYpg?rdko6w-X_Z'JAkzUdqkI!3kr}dTGIOirmg'z)W:<%"; + MSGS[7] = "b]s2ul<~}Vc=lrePCsIA`)$O}Hp_&~<|:o+TUOP|2'm?oSz!np^6dQso~:`t`IM:Lq#XW,Q^Fh,Z,H\\AY{tq:1[K.%)Z5AF2ByO4%a!!s8>j9W|mQ`)&mY]#aR]+i2AbUuLD'(];|-`!pE/Z+PIRJ^{whrfm,pAKP\\U8Zcr:xa{e\\%y/%s.%H;KzD&~w]/9fZcQ!Y&,\",w1eYRtmGJ@pZs}$lJr%[S}u:;[MGe,:c)9Mr)\\h_5R]~F^l[Jf%F6*?WH~=S2j~>d#r'sabL:|m[f_FCl0cg8|@;5;|}/[[Y4NS\"vbvI`'/J]C-Wk}PPL^eNv)U>&|%o7|.S]\\5Mc{VtV&)Gy~v>(mP o-gK^ +epJQN0JLPA]bWm%.h|u`\"Y)hj7@8k$=' ]9|7}pM%XZ?6!]b}s_&OMppvWE)8'tvzA)SiM3W7erkrp>\\x.*8z#OOsT4ZM1Cuk8j9-hW.Z*qYUX#.\"wP&lL<8` HvnK\"/1hKpKA`c*/xP.bAMDg7WcBFoaU$wbF,eC1fir`Q@*dviO\"H)a9apyn+S,#7}R }b-.Y-h~u7*Rv1RrHq#5Orfy'UV+E%)+-;.1foQ&\\gt]e#&Gyeg4LO{xnhzRVP7>Bw0Ke\"EpbM>Uoa;!r>{rSmQi)%V^\"$B~jG~U4f&(f@E^7Dnu_|.*@WZR7l0xt.F$GN:?k.Ph`*?o**ZNX0nzM_n!m6eO3^UbR65tw9I0Pl_Zg1iEb^HoK]1zA+-Gq1))*'!wQ!zV5:42)h|bfUskV^ZLONWM,053:yLdU5%{ gC!!grEL`JTiv!?53pV.Z`-!*4tIQG?I`RfXHd=`SWT!MJaIQ~,|Wo+gB@3{m R`qe%9i{10c[9/wPJ[Xc&T:PQwcFav3SVX6gnn'\"2g9#`uX9S}fQc!V))(GWLoUN&O!18RBi&FpXG+G^#qc*obiw4ijnvn@,Gga;tvjL9zDXG|t\")lN|:m-CgvGk-pb0),c4s4(@M+x,I=m(x]Tze,{l[WHK-B, I,7`J=zq4k%s8ms3~K*XiG]czRH'kBuH1pFHOn"; + MSGS[8] = "=q_|a_qDw}*FC@P*XHXez-A}1/vLquw&@vgnW8=-eEx&:BW>}G-[Efg9}&~6!<=PiW7rW\"5e&)nIr!.Ml8]U]~cVTQ18`sD0e_%NuJjCKJ{>,A$jO\"|(xn8A[6fa-DO_|e@sNGVc9))98J[wVTV*'x$7$R6;ZgExj#)}[Z-&O%'6&oQ=\"d5^yp*X%N5l; p&[E7bU`4gY_'&y]=Z;Z;sNGmDIy\\.4xE$|7Jq2'+}60_F[9[SwL~DDed_nXgaev;[*2O{=5q1dklB\"WmbM_u7i-se5xz539>f?:,}(X{FvO&t*_$U\\)'u$D8/5w}Ca,WBQST\\?]-?xU4WDNc\\^c)G6Y]IAu_|rAuk(_N8lojLeg-Oh[Z](@Bc68qpMHynF`BD|MP(2zg1V![ yr|(~+7>E\"77To0QpVKkqGc6c _cFD]F>>SBR\\3D<2D[zpJK'rs$:z>1vXe0($N1T#-Qz}[i2G5@`P0Zn_u74ETgZ9z|f~sD/#Z ;9U7Pv3InkweknS$rd-.\"*0sAL -Qs*?)k1}7buN\"V0wY7*Z98Gpt~,H8:M_IZfj4.2{*bUOmES L]XjgZ(6#dRIn!6E~Fd%FQaQobB[hJ34nKR*$ 9Gq?#B3aDEGBTjw1CE0!AILS)BH|SQ!x=jxD?y7Wn|p:* 5;,Ip67C=\"h[PxM\"5Q*1(iAl;W7k>3MdLNYiJ[oo:x4vZp7@2!.R.kx3@]@yV1f,(/No+P9+;{wE2&'0i{IM}([hx(}giLI#[4Bs[Nv}VomhAm:5WWkOQs2vUG$A$nK)k00B\\Mn 2VV@&(5]/&ubm?B=VZ#u'&19=04D!-0[Hn_;6W$f5791Q'!ABUN$-A@6MGRlv(PRpt(sXBM8n?ZM\\JtD;+ME$g6D4E$VuHKM6`jT3(:iL{NIS`e$>qV]<[UBu6Lfy8zY![`D"; + MSGS[9] = "o&5%{Dt%=0v ^gdI&=vpl~Qj0YK}&5LA[PntcT7WpIhh'DVO<-'Mg+V]% +<'`Hg=qVs@w5y@vY!/J`.LJ|;e66a7Z|Cv3-r?sjHx,9*a%:8NC0%b/Tgjx&./ywU`v^ON#;z[vWc,!))6P|$i1,WuB'X!i\\\\Hu:<@Ofg?Q2n1Db\"rQ)^ONu[S@6uWJXj]PR:iE<<1F,$JrtwRred4]lB&#DjJa18b`dzb,so)M%O?kD!r\"R*T7K5|w;1/G\"v/q@<:/m/3vbne`{oP2dTR%Vh/|ks\"%Wp26fe!B~Muj7)\"v~2AwvTM.&r8;ex&TJM#xN}{S!+lgLeRageL4P5$eP$Nh<]_@[*\"wWk[jkv4$\\2JPX@{7*L]X|lNiJ2+GK.38bF4hIhS'#v~}6qEhF&DO@X~=lU@3+[06Jq@QG6-HM)\"\\O4L/YysN4+N(R4N\\hTT]-@cXh4~,>iyCR|^1uvgayiYkvt}r}yst/qv~/I]VSGt\"~sS*5['(vYk(1NNE5n#YuUdt~(W5[7U|Tvdao?57C93lWf8-5*aD[hlcSgtToR`:Y>(_%ocuS#NsAcM=.f9+0J'fd+c@CJk``K-F-x;5D$.( O2:Jcm\"WY*(m0HPyC1\\:4$%`S?fY(F`2V/p5J$4{TMLHJI}0w&6;#Jl:$/13HwQfE??-wuL??'0pbM!5C=c,/jKh;M/K\\X|y}I>Fyeo}qOVFW=iASB{ixnh.h3d`=H1nUOnIhM|hd.nJ49StB|c6ax||,kjQDEO($BTyeU%Of)EdA-;5~Sy-iRr+_ruM;:eis.TlN=Nqv!SH~TUQHGw2uHkAQd!9xf`n%=|bB=E$2h ^!gJs~X&[M~s752HjuW:xy}YM7!3;\"g,o@+u`)OZVo.QvcCT#JM5x~mH#TF,3W?F0x'L!v\"c6`Qd6~R1l/g;C6GJ4\\{;7en),\"G!KJnQ4a,#b/wN!+Ko;c{qrMP'S~NNyqG}.OYsHl76}y)D*Lx5QiTkx_A)&i3>2,(szsrd8)uAvo`g!95OI@d_1ciB:a'TV!@rrZ^(G+Rm3Tdp w7f6l]WLh}(&csT=1=rnN[:nu8mf,vx6%_nX!^td6'Yug+].uOmJM3!AJ:lWv&_scV~kW*`-$skKd9{8BZf ,Pp#?WS[0CVBsk)X\"_`L8?_|_!>@O5z9/|;mS^Mw,tO.mXF8Bx%!p>6#5iJ?'^[%V~`b6kND`;=g<@=`d7qG(a:`n]^QQ,v5l'pF>BnKc~zOY?\"a^Ac(|oGg7mnG7R!Sgk1mPLwrK{lks^y,TT^h8\"bX *u\"!!g$O?h\\Fs$u{yy'5eX[dV`ui#%I*)ZLaXc}Vb<>]nkErA|j WZ$j)@a1=]zT;0`gP@zZo6?&=yX|]^-w*`=Cnod7HDO1`P+d&\\W=&lEEw\\_<5-&Z[5AA~)vR/g]4'b#qXGH~Smc;HOJ;pD.Uu5\"=L+t2Z(%@dUW&aL$YaTL@c 3,Z1aJHXz&dOLpJg?4A@9qSX_m(CL0.,z)0P.Al+G&#A?1o^/BZr!_YhD\\uFs`ob?b@*1g~:=XnW)JAKy>N>C+6)2F/ux73tvD[(E:Q.QXdj$'v Rkf.6,#e=xO^Jg@xd0$&8Zo+75GTDEbXd\"+`K$Bwd);TBV'4Ui?VYh\\%4Jrh|Vltsg]H1.^`v3B}\\L{vgPbxZPZ[41-6``&eaaz7/j+4eZU5Oosm)W+o#fWz@cC4tQs)|79xk\\RPRo9VEbS`Ns0Xq6CQ\"5c{&`o5:!'55R8va)Yk FxK6``--8k#Ifx8?[Bi0-A:x~V(914nygn^,+nrqxM(kzVhp[+heFyD 6VN+tNy;mU)r:,[Cgau=vR_oz=K}~Rj|7npjGhZw:a-V3YxGP,r>`Fn)cgIaTOly*=_yBC3q_6f*O>+3fmF PK<@&`.3t==Vz(_xp[m,bLL/h~,c5&\"gM8$O$:qZ\\P!i)D(!*1ABFVKa%q@:?}b.^aKsG_!{:O# y/W*hnzwWGgK,).idP*a40>=eDnd_?*Cqnz3w+_Uj|G_4b5.+$qFQjZ~q2QRZr3J>3NGqQ\"pL&)J/9tQhM]G#IuK*9@4$MtGt|6UMfIll,DK\\'sUSnVOMqTf)k]}1{yS'\"iXA-IDdBJD2j4DtL0%PY/1,&swRZ\"]V[jDZJ6C:fpFc `njblSc,C'>iuYV.-d'2T6I_RvSP:yb 9>m)P9=c]/?#|><8K!Y(l$69!TsC@zcL,ug&=O'E4tVJu!u4x$2{h-cG}uGKuOrOhxI=6~tt;KOnAvU6,kFzGM2_a^4hxPOBH2QOLhH8Ohn)~+}`|2wl{o<[qSIDrwirw3 VEQf'5\"5wPds']x*Mj<]zhI?6xI<0g5Q_Q2xvAOrGBl!$Jvlo ZfcX<8^] 7;;bGN`rN.0K1GR#Jyg[Ts* AUKS:G1;p@StT*t5lk>Xq'(9,Ow.aq,UUTN+\"Z@.ft /mOH:V'xor)KSv9CRW8BW`uhh)&|/ZV WZJeK3(*)cup6_db?\\<7#a.-Ii>0(_b'*h$E(~L=s]]2P!LWJZKX+G8*\\|P{TThw|Mc\"3Os)T8O=u++5v``_)O=QtndX,cOGhuc5nST}Rz7SF!$2(\\E.}%)!8[vW5iQ a_8ENYsEHx4NO&~#{/3\\cp#qpqm,@hIKNp#b?cp Mg%^]vT1UzHkw?A'U#%HZklkVrBq8[BoQ[[u?"; + MSGS[11] = "spefm(*AeQ\\3Rn=s7/`wG1U;16*d}`l?`!m'q-Y[sW\"Tf(&hj1/x&\\iW4xY;]Mi'}hJaq$rA`VLIP[`[+f%{xgfvp!7aZV%WW2~G7;:6B#u,7\\J#.;BIQYdg*)ur}oX )^ |c0<-;ZH=^vIz{?/-$H G#.nO>c&&mZrdT;F1\\|VT-pl&p\\}p!:Pv2D>'mOlp\"G*zRp\\4ixA+k{uFIfV=R'_o]G@s#kn#pNuD \\PJc%;N@XJAPw[[JOQw?blEfL,(htbDU7y=LAd/%BLLacQm0Y$oSlcl\\2;;[)sn8RF\\3U(7g3PXV6Htq.QY0cT!D;]-@k,8'L4*7[]UK+Y81oWC?|\"K..Eo09rJrc).9j{!}zfYp:yi,#8]JuCe3rQeiA|Y.:3cwFz,2<|_M R;`DM9ad%Y\"6]EWGWp)3\\.>r3g)?=&!&9ry>WcORuSZ/7+}o5s(]ig'e}y|nhEqeh}p.vYwBP\"h%<|xwxkzwK{3c3,>o@ptNpxO!-z8pB5EQRPT^p20S.z3KK1PzbF\\:YbYl%rM4=LdzPnE\\@E,SvW?)@n;1d|OAuuK)9t ^HDxi&-c4_t\\aF&'H*p_.^+wF9y\\lG#.zj','t|@r:n^]1{>`#5InAQfA\\snEj] (.vCd=67f0Ir']Lx5A}7d`8|0d[.t6 ,*X&3p0:/I,LG6qhmkAVA[@uc:3'+UWTuB5UUsamE;5}y&\"JX0*C.3\\p,Geh#Ul!PHWO]'HJRj9K4BBv-v6s'uetT3d==lYjo(HuI[I{}ZG7\"Vi.g^g>|a(?~Wy:i|cn/$&V?5GBX5B(Cde0pr~td[P`geoc58]+PU5R 6.mA53vhcX;%YA{e.gVl:VT{-Y5F7W3;dydph5IJ2aQ:\" ;M6rJV(#aeEWX@+QT\\ZOf5Ea$>M8k+#ZU=#g<$!_Dle`^WuDLW'8pO/nnVz#qeNG*rN+4iq3BJ%pwG@nhrzJuFNv-ke`xtDC1]5EKTV^JI#Zc:)-XDq9%_;0tm4s~\\na<*m3cyV44y/n+StHKA2a}tqckR8=a3&X%l}GAaSS\"J(FT]d,&=WdiyjmMd(VwB+8E@!6ff6u -ZDMF? 7Yj{cg!~nwXY 8B(e}~GD!ReM3m^UGNd}WS`_x`fr~b/LT$((H?jJ/n~FRq2DLn{^7)CDUqL&\" )^$Tau,sv`tWw+]}lAU0b'LgVEic%)rY6]KUYTYmq76-d7h4]zF\\Ts&bCsg):!noF0,*4-UiBGIfSw,#t`o9!a$R'%3WHp8JogTFkGr^lWge9oL&U'U/bbp;KWZ'7w1 u&^UJ<:+jr{2!(kR24tRa*{lRQYi?(e%%6C8nR,1Z6[LuYFejcwu[^~@S(6m|&es.>_(T`j\"(50>k;vD[uD&jn<9)~mi~#HH (AV6$Uz6?rCPa73+Cx>|Z7-iQ?wo![j=6D%:376HI=/0RP&^/[Q#xxf\"s/E:0}V_{$D2OSO;gi_H^quHbj05gm;+&\\T^Zh5[o}tgq72o]l@|yt^lG8>e3>uB>0B_,I)sb^(T*O.N%,jW4\"[yeD)XY@1"; + MSGS[12] = "m?k5p#EOk{Y\"1k1AfI\\M6/c*20g?N5{OHt`{@gY'l,1{?dz\\M5xuMs'eBo%@|@THnO~J]rL&k%r*p{9j/u1`58w`LBI)b*lRTUAMw>7RM}wCP[,U\\U&2\"f%rM\\S^O!yY5Dx9>RD#|I,G'!Z\";q|PB}xtCoe@=hPL7b7|mFDTj%:7M4I+w!tT('M?4p`}\"%;ebQV+:e1A9rNZ#c.HP*=kufUlJf=yvCQU0O-R1x+z>n0$H<*bi0!;78\"|TrM0bugvFr5R(fy!0e134fCPn533q18S6`[8RNL)s))*v6nSM3_Q]Y86uqknI|'#zp7^myHdA3#|<8o{63Nj0I!iQBS%~\"'SoSK S#k,-Eg;{E%}[0S0,f0Ag/4Y0dS6/fRnHDc}f0Q&8Ovr18o-^28/v5##VE=-x(/}Vh{;bOs=i,ENo>8v[34537+bNQ.Y$[`a[}eLCGlLB:R /yeXA%nl`%Lj.4h25:9DlA#L'M]Y=gm'%NjR`4MN+|U|H\\z'h&obZE.C@uHDnszkKJs5h=t5?UG%uyFPn6NryckwyK0xB(_iKpe)Z9 IZl:cN?a.PlPk`9=XJA+sic*X73(CdH\\8=zQ{{)}#pZd*MYa.ngO(|d>?oT?;~[zhI3jpn.zqVNK}MSQmd$s\\gQtBZc]|DH1VfY\"_(jxgGUA#6}3`R{XlOi#p6F4^o!aX' kdhKu^1L>d]I! M@YtJeCto{D<+&HMa2ffBQ$N)Mst\\*$|melq6naA/}G52$L'g*;on)['-P1,@r@iGa{04K\\*\"pZ9f8]39\"Rta^w,\\7mNIm)$#10m^Ne[c]k> \\p*a6\\F~i^G%Z)Al@dNY~E@z(4(PewR&.GVYmgI[]:4]PYLl%wBp-~T6u$'a 6$&LO]wI6Mp[nF)@--Kj.xac3W'-/rM4Y)E?b1q4.t)dPU!5G=3RR{7Rc6`}(/6*_(:WHNA^/8YB$R(.1E{Dd\"z,e3V@p&[OqI~Fd(7fjJPUD[Yin$cx^+H.n\">wy{Y)n\\S&CHp%U>ZWms9H-,2lXo^K<)pT$G-5^:F9hdH }p$n7P|u+-uY]q G*ksbx0tB]\"m:mAK_3Q'ir!fX5QlbHz\"SO:mC$R4=GtVNaE0*gc]h5vRlVpQq#qIw((q&L{ci[Sui?[Th_;G%90;yj&Ls$V('[Yn7QWn)(taL>4bxi9,h#yc%Yy-cV.XxFjg3sXhyCV^z%Szz4oN..`'Sl!vzADFb&p6Jmfm{'g,MpmN`%XOwB]rM>Mw\\f:HE|$35N^E%o9tVg~-fwdirCF!+O&1F4Yr\\kj6T&T:n/lTlNsO0?q'CD-\"z9|].aLnzUe4Fe~aezd/=/E>$o4CK+Cqj*p%q Ovc?h)no!wP%08,K%Bv^Ks=S;./@IbLn*pGV9W>p7|i,SZHEKa_p6@KO=f m#G[tNrsf.YC0; X>\"rY&:,!7#UlkFAENlMq-\"+<5[%,mEQbC[Ai8x',wY=K%p6UiD iRu|?IP=>}[P M\"5:XY3;-Oc*SRZ#Wt}YTj0a7fb|:'jR@U~O$`']?I@Y6#EfHBD22BhDB^/!I]fQuBV^/\"9zE,g)6i2=C@s):L&L~*mZTw`-.'sNk(6KSgyV\\fLD:SETueFH|.EedJ$(k8ZSPG\\`mYZ?4*&vX/r!pH$9\\gI4d#&(qfw;y$]1hyJKS}O'CwL(l[LGE~C[dQ.HP{n&5ZYVqYVyY(O?r@${;fYYcd+{C>I&Yg9[A{E!Xj1*2P.}Dn[RBOP}a/`M/*[mI1,u@ms;(zcX|Z!bkY,:G9Coo.FjE7=K;s'|;Pu3|dj!Qr7u#/e6'[~c+`!6}$F%mA+qE\"C Fwc$xdvNG!uAvjF{7x`Lypv2\\^jbXACb2ytDm.qKtKn^lViF=-s2qOi0?wdb9nhip5iXX(FX,p*s}9|i]S=^y+=,[e?&3H]Xz.9&q()Rq(Wj.^62Tj[P~5h|VLp\\Pg4EY`cZyr1b&-r5Lxmv4bDw'{&'7u F_8p'fIKI8KtgHpU!O7x}.]GlF:Gk@Ujj)fxkW&7?V)o?3n/B5Pr}v#=&~,v 7Spxc):a)q`\"*G,=L]{ZJo/2mHu',;rZy.ieBEZ0?_i[p:OuQ/h$;=vz_P?3ZSMeM|\"TaHhkB`XJFd!Z}r_h;y59*(ZRL8D_dGhuB-K~FS39:bU,,KhN&Xj}$a=#U%\"}KS;Rla_Ii&pK\"h#D`XS'E*;N?JCn&KMNR`A9Y7wzz#2D't&c4(\\oX!o>!=]PP&E5ej;\"HrQGDbE;UdJ|)jo:1,!G];XK8EGWZk*\\_kTYflsGA;@33fahMS#(v0*#r/ApH}Td(4kA3/EW.kog\\&irUSKpo*#0-z A5;I+ZF%^Hgsj6@SuQA[D`AR*~Y=u{sj`m!&Vtj]>fG]EHUAnSrf8E%Q$^4=U@JB~\\Aqfkp /Aht6Ky.n@L[:pJkuFsL,d[J8,!B-uMvEK~`*A@}u1@Tybon9'|iSp- ]F whI1uhkC1{9OKkp3g[}@8LM=C9j{VT#ba({<=1vk|Qo\\v-q)\"_/_X)_7k\"kXc(j']gs\"-+NGxu9SM`7#+uJk_sAT:8KSV,?AbKdMLN!{1?V6-g4&X>Bm,9N,,Nn1A@xiASY0K[`48G\\NF,(T{9xSBQx4?$@sHaV,TiNR?zEw\"jq*6k.h\\J0Pw8*!LPH!9sMea}L;UM0~H]GE[Re&SHE`@Q`J]2vHA6UhOMCsh&#[kP.94f-ny*VKj\"Li**~J6boG,8ur?wtG5hpGTn:hqH!}(c~kz&|jZW4qyw(nQ]gN>efa/_DDj\\ey=K5lrKQB@M&KvKd7[nc4[A.!ySP~/:MheyY2Az;Qw/Uu&e\"cA[02lSz>0-9J/)3K;KIED 8s=VO/bV@5QE|pH~wLB6\"e7,`VSI`zSB${4rtx}d%or%ivDqO4@'VG&V]~&Ffi<1hf6PSJkPF:/M>+ze#K5j7X"; + MSGS[15] = "ul@n2ozG{5j 01Zt0/q.Gmn4YDL;m77{^_ U{j!Bj9cJL|%oE]OKA1c>X0)urRC%t(,YFU4ET`rY9#DzD0~\\f|'|J\\7ebdoqjd~G69sEBGz/C~8~&-u$`QwxfLT'_wn& jU5]6l|}O%b*$nvV{Z=Zz~Q3U5++kx]L7^\\ue\\N,])KkV^M$?R.__],MKRa+9:_r7Rw'Ke7bq^^.n)7 7R-F`z(:\"a,657))fo}g`{V\\_]`5$[&Cy*a&+8[CA`tSKv\"w$7($b)TZx\"`FqcVTs,$%oTPgI$cT'zghF-y=Y84DI4}Ti)I!M]rjG&J_\"q[%tc.)MRq<$i*^^V-zlP!s|<0:MNGQG3^vZW xT*TMHFTK*-n%,Q6{;:n*`dqhx1n:Vv{KcnWJeP xr`[mmh>I!^0}#\\-;jw>Vh lu%.)aDu~nEyY:y}4]-=BV7]Sn$.Hx `[lAzyA:Op+G!;z)~vd:I=KK6,~#uZ G\\r|^/9>D/++N^ZiA<(AHD[Pcp4,y+:iPsnkx_=i~KO$ Ic%s9+q8P\\>4_rN'E[Pl$j>A(cLJ=| ~a6&tSMc0O&1%g^lBz*z(tgp@Fb6FLvWh}f+>]F$ase)UaG:d$UM>*'&INgukuo-HzybB`s8h=Je ~+Mk8f`~Vc9s!$uSdWK]Um/sS18LsX@FWP6_bEk_F&-BcVwkB5-L6?]u;Rg,&`V=/fU'3zVj6c|K{X=Gjj\\c`,N\\e@)X~GHF>XL^Kt$B8tmbFPU.dE^FB%Yv@vvAoJ1c$(hSf:Dea@V;*<$'[`m(V.nKJTE0L)Qh,:4X([pS24@o:RO04l;?XpWg5Ww;T%QAdrk2{rxm;u_x!jX>qjy9OBRZ}F$4.-;?%ITQgU%h)pw\\iBQ\"vKer-]9a<9D)0r]c,ZVK?Q=D6HL[(wAYgd(~bQ#|^|JWS0{ezdE8E/euM xM7[:OZ[HKIZAyQYidC'g1vDoMzdI T^m;2{%z?'q=a!.C&i9RG[z{pV;T00Sp_\"h~`R'E90ZV@4{93yl/M?qpT\\G)Oht%b9=)bJS?;bH^1w?; hKM.n/LrR/!rm'ta8&eo9je)L!.Zg\"4&*+U!a{Z/Hj[Xsdjv>6/wz+> LEcR$o_,|p@UBI7Nx DuR[t[(?xZa`xXQRRF% Oh-!mDTOkK.eL@zg\"b2(b@o9{WYJKv1\"%cb#a@aWH;sAZ{rUZXszvt$*cl,V'BCuN!8lZZ|O__Qjm%e=a.a%+8D0T&)D%hvcD$vSiSTee8Y^;=]EnMRI~>4Mfjmcg*2Oh5IQjcCUxk|Z7PNC!PQgTZd8HR\"&y\\^szap>1$Tb-*-~06{T_r,3T&\\\"y}BWGc00P$_mLj)*;i\"R%^lJMI5'$)sMp.t3~rLXb(P8aZTr@Y1Cv*ufUt>.qc~1i-7.B38z~; Zx#F^858S\"FrOuqDZg53K[|I@LSqCmtG+=(oBC`fG[h}]I%!+E;f_uAY>|yffb[9tqq~*x/\"dFkD;Wl0{P;'94L>[\"Q|ObK,'pf(A1=FNA1zt_xz*o+\"zSIvF\"SQ5Co[n:ZUp k0hRsV?#1TqLmdQGpW*Fq$}GvkL~?P!/QE\\ffp&U-H[#e;>]o!BRAs\"<2;gs5~j SHMNgAcdU\\/S$bMA>W-N+)D.6F}mwTxoJ6)BkJtg,4wU#+1'}U^LrZtHR1g \\%i r|E B{Oz~z54j:f`B&0jT@5sUGIgIJFv`(Z6*U84;:l\\Nq>&8~mQn*B$+^Z=h4!wvE8atzbuJS d=Bd~Zg4wi[l]Ggn;uecC29ceTsAY@2dUT#!-9Fr^x4SrFFhPl\"GCi[4#@E2*}^wZv\"A}X~Yg9Xt];bnj3WVkj8(3UcRqjw,7K!tjc($s-resT:OhAF/j'V{{{M0!\"~A7y32-U|ljB(pAu< iTM^IH[%GxGq#T\\4AsuzE71iXXE+l`m#=x\\/@T{S6uv.z?O/xyJd?_(P]'.#H%p2/w`^9xaUvf0OZ'|D?!z('{9Cx|]qT~!q\\/z_zE)|JKQ/60C^!YS=4<)~Xk,G1;%JY{hrKPum@iy8pfgM'OniWDb6?38]0:~^DA1SR@,:EQ=1?X^b5puZuWF7<*afh%Vi#w:}AfwMV~6TVg>oUy&hjYKO/)):i'IhmA2sAJp`4@O/ZMXI(Yaou8|B+E|Q[it^p&PR8hA e:P(:N f>\"xDYYY;!^6."; + MSGS[17] = "6\"6Lj)/}9.9%o;=}RD6G`2oM|U|%A)- \\KDNW)htT1bPS-.j]jIax?:g\\+\\0N0#x(!MQ?65)J9L)pMYRcloMbPY>Tw bUR,E;+{BU+[QU@/D@:nl,T5w3Qa^$BGZqHS|cIio,)#/^19RZ`sVi(`|IOk?sW,uy7a7r(36FY;,swW_LYGu(SSE(dXWZp<*'V-oX$t15LKv&%t4-GQGb80`2s7q PrQi'%{FS@ xz|n%^u*-lNfz|FaP(;|M]~@U(W1qz!eO9k-Hd$7Lo;&;9@~4`y}>hUM$9L89&JR6J\\QKl<'LD^o\\=>g)_Ok]:PZj6)fE>(Vdp/g7|0/xE\"*G@lv`-MkDr,42xqbFS`\\2e9O^2_>/3TJGJ%%[lEQ/a0`)!$,bMts.YoSP?u{w%${l%<2nwfWS)'4t]b&]ZJjt9s>y~L&& ,ZAM(me|hkE&l =Qnl9M*|$}B@Fy*7y;a%zBC>W=Om3\\|G>CJ=9~0IYWwzh0OIkJtk1MjgO|w] G?}ONo{Q[$CcBbh|R'+kn'pZ'i(K\"H5aI]nO1V77~*y4^|\\+4z)@lJqnqjZZG8C=ee7/o}e^]c3mwW,]j#H.UN_);B(u@:xq(1X`y;Gk:_*ztY`B^,B|^1+(\\4aAkgQL}6F8!$kP!SeT)S4Fh;C^W/W%ED Y-U%d_xe\"=Dg;:cC!Ll8|3$r}kM_u8?p-F/@.Vlk/7U}~P%AW*ll$%%9uR6Y)mrl`k0([:qg[zE%'UPy\\P4Uw^Y{c\\|p5?Cl1!n,9pstx:cN-10\\NmwpgO={1~~3<][HBZ`++;+tC-{!0b>E-80 lgm-w82By#wHMz%FN3UXXL|=6('0z::\"M5?nG _5k|mBt}fP].7bv-Mi}1r?F}Xub2o30Mvyuvt&'1w+{(WcN4m7f'A3`}&T`5do|5;x2.K!R!JS>#$Yl`vB#C5K_DtMr?fa?Nr{S/Qz9Yh4qsU#UJZ:nr2hb.{Ix8$9bl0:bjq%)GNVpi)Q,b1eF;Ao5KIq2w|`2[MaDv06VZJs1Qdgq(Q)H`rs/A]!^xq2X{1Aom+yG72p+B4rt`;7eC,Q0=SvaHq6LX{+0Tg|_97I^?e KRJ|DD1gVbL\"+u=RJh<:XuO`7x>:[/_/7S&cUcddW|u/N(70h#BRu(;}X+=,m?%DI%nhNg&6${}}kjsAhA5=b5TL93&lE(4^x~'V!Wf\\\"FJ9|VjpC3qQBZf;]nIT]6GRCdm_G)6xY-[~n\\tIbebeMPuB`\\S9RzEV&I`m^UgH3}KZ2s?aA+|M.}AH.=re{8L`zaA|=<=!`=Dc> 91>%-Y.{I.F3"; + MSGS[18] = "5\"N7&RX_2o*Tquk&v1l~@#OOx-nW?8J).Uc,`xejx&-\"NcE;vKE=eA#=70H1Rp/rYIW20>=_\\Ft\"2rV<*xm^?Pfj2N=nMb!F<'=Pb4k#^Wp7lgL?PHZSeD)Pa0dMW=]9c(V|Ybs~8K*~8HpZXp3#VgL\\!+<@z)rn.ajHNiA}:jd/8+qYOImlP0;z-.fOg[(_t&^F]`$B`-leNEL0K/Lh\"&NDx?{'6)k0n^Xil;Bc[3mo7SG81Atblk97/8BB\"^'.O99n-\\MH1G@^Go#yTTMoq];nxfN~hHx%c!V~~]F%wL{{A];2}{fM%b2':p(aF[.f'2P;{x+5ny~1zOBK4KU7,l]evXVNl`}PnHG*>`,3}0:P+I5};='rR*Y~tlM;4)suZ5scQNCYPR7tbr|$Aks{)1))g%,Iu;@p\\IiGa+l6fijZ%XhpFv>A8Tu8M=>Eh)\\6gR-oV>&9BoOB>]! ;\\&]*\"x2ORB9lI]X&+\\SANd ylCf/]JcGiwu]L8O*M}+)Sm\"50fW27!El,pAT6FXeVc!I^|Y.TuZjh\"aD'<1w;!;pJQtcGB9uS`xyRy=Q;(z(e@x\\1+bS:sR\"uR'-4f6DHztlyQl>W=*=SVQmtKPvVRa(z^^SOqUWW7?@_M{DFG)U.9CG%Do;?!W!&A:wIM0E5JMOmtNC!7;-RGrxicO8~cVnf3k|1b?b5HrYMN2UA5i%Rc7\"K\\vNi$HB=TlKKxw(h\\Ym]C%W;=,Hl@Dk#bQb]#.rLOgB&@J6y{ RkaNRb+WuX%rZk8eQY/mdw>E,^HwXn]k^yfb;WL*j^'6lRXUz2[M+DZ&M'W-XtqSVcJ$$x-x&3.\"Dw1cIKYIx1:[1<}6v5io7&Ipk2&22/]|\"-k\\f}YVFh(eB07Oh;t_1:nolY|v+1fWbl!@Vf?$iQ-~P&x+qJSybyr1L4K@ BN:8Gpqr37fJN*#9b6*\\\\;/7si#)4kN3[:YHyJ3zjJ;QX[81W$%Rrgss!*)8g-n_;0T#+,b$5cjaG:;_#9-]4Uv:&l}6+Q^XSQild0GHT#92:^%];d32}K}v/GtLmPy!$Ku5nm95VTw!@p~}Di- fNS#\\}'RU5'5SMKb6Y$!DYB$@ZLdM$W|Z6jjkmV7A!]8}Eggyhj,CUmjy0M(Qx!'E+r<>h$;yiMVW#_*;palmWG#f;,/H36Ux3oTpJ/#BO?16_Y48zk(JZIXd{8Q{)im5'eW>wn$vbF:y\"N6X8.UJ#U&ERz,-iP<8<7h~5W:QJMA`DOdHP+c& 3GqE`D%X&5'>-E-vkuin>nTg6q~2Oq+{pj]B_NjP\\\\VJqCOxsGircCuF-v&8T|@W_B3oeNkfVo~ VYH?R.EPdLD;9]K'V-scqBhCNV2:5O'}kBoU$l\\1/0$>=xb5Uc(NbFUqU%I4R8#0o7UvdZhn|Fq'&c#d\\Wo4>=QIc`qF^yaZsx`HgvZ{d+2ec>W2jZ#$F%O?zea*o{uT2hVO?>'\\bqx)*W/CpU$|)ueufF@[qz5~>{c>\\;`=eJWB=>dnngdUOc|@H$V3Y&(}M\\WOSw2yc0uxweXSgpV^CsMU(xrEnk|g3/HWm'_{{#;fe5G{Q?jmr) y-sdQF;%IL9,[euh_8dm(}W< Xx&9FbA0V=lnRn4xTiV'TONuPJd503XgJMaJNSK+ -?`),ud10&9.bHxM/s&3d]yra~3+!Al-qTB\\F+Nm|,ZW7bT<.i_/KU8M8^t5V eBhQ<6eL-v~6J*7Jb];Hk`[!ri3_hrCr;f/Er!.;N/Iv%w,q(]|u,A*GLVxM03 yVHbNnP?mV1Oh5<-S`:~)mxKJJQsB@;P$-BTW_>|yOU/8n%r2;1Z?n31lV]^6]i|'cR9Uex%Zaqnm\\u*^@7wrv}yqtxXl.Im#:Ud60!`$MU>"; + MSGS[20] = "qFg!5M7`:)7&!)9Fp_.N,#*]]'xu0/\"'{VPLvM*.F?jU3HwK>\\NPohI1P:m'{>[j`^[%9{kP7%{L>JXhU=y.v)[t [X8rR<{tF7ge!g*-Z]y|T\":KcygQ3MXT&rl+\\;@P1AnxDsj!-w)~]4-46t&EZ[4q;@&v#]xe\"hdUJ?\\6$=[oI_[%:USr!+^y;!PUPfvt3l~8JbVvT,2,f.aI7'_]y4V]R4,bhq@@hw2;gt]{|_enF#zr(k;8& G/[!O`a:uS5:QJjQ-i ++*?(^y]QC9G~;E]@/fwdHQF1I^E7fC}L(G~~+?`2[& I8=EbYi=dO\\hl(TmU#Sl2@!/9~p\"E7CEr)3vRcSmk >VX]9\\>:=~j!O0U-9vD{_t9mVz&iIqDB_cEf(.0S\\e->QZQM|=(W:v=Mq\"-*z?0>:{qg%hF!DI0P=X1oJ\\xKGuNXtD~2[#m6l\"[5G];4|XJ:]OS=3m}Y8(vL:,\"pjR-4t,Zv;EWt!2$QNtE/LYDA<2TW,}^eHM)@.\\Xs~NXBcERll{Y^\"Bb\\*V)@nI^mr.MSr'NlwRau4`$+JCl@{+\"kMK)eNar^5aO))Ig?`I%aMXC1d(^{8Y@67v3QFPq%Z6d^zfr}N,z{T\\4bTW%$N^EY_@@-u/2<\\*/cx'-77M8PVz%?TnW@(6gcC@(!M&M\"MS@=s_HFS8+f7k\\6dXDl% V&x\"3P7V;JJ[@jCO(QAR9\\^`nt riQyDB&+/u^SJd6y`S+|+0nx>:P4\"&&:Gb%9=HkW9Q++Ulv (fc4pSV2=\\v>b4/Vpt;'+'T`e23UT8}GYF!.9Z.w-P@tFz$u4{t66p}Ws7]ZOw1D8_Bq>}hd$)_X`+b.?G]ywUG#(8<^-)_Kj6-@QY+;4z&C|0]^7bWUi`SH.}#}G~)1fNoQGQRgJ6^ue):WnS^K~J{?M<2dV`rXk\"iHL3#Hq\\Y]RN^#2;@@,XjgS(~?N+U1|9?Q':\\u{p:A\\c?ct@~Q!TGBH]@X+xSPM}]Q6b4E#*|/2rQ&.t#7Om_?hqF;BtgYSdsm{_vr;,#_c H!*V$X # 4\"F$2*,Jv[ \"g<$xR;HSd7 ,|~\\8t)w(L7(bNc,8'WiAx{Fz?Uc-j:ayA)xVc{tX~w@-+JG4GG::;a`}B+ja?jbfN+pzj1x@H>[ybqd[2nGKV-rpeC4Rr^{]0b}{<0g:45T}J2O%n&wX&6NjG.Wq@Ffb{.,;b[;_5}HCFk&fR)sq|7JuK1QM|&-X$M'%j]`1T_P:Hx=mfco?>kWQbcl7?yQ,bBP9lngF{!66j|Y.Z4F9T%=D[T3=nitm@tNr)SKLw%(]0s|=@U9$[Yz~\\#OAfT] AeJA5-x-KV{*n)3NWR\\_E=ahSey'P=3FW!jGVWSI*r/Bsy<[dfz$9;! c`2(C1&(%=Kp_5SdCg^oGq|ePP=yM8:-1jdcGmt8p^'AS|RA>YJ.VST+~OPll);[(G`$CY-8]wyvj3dd:(jY6isg)-v]*>a:3qGD]rqygW>`mPHK+~ZhngS\\|$fJQKpx8arrAKs-QC!>L+]:l-6q]f~/(`lE_O%AQP8()h\\T)*T0p5uMWsMz8Ccm@RTk}c~ley'!NaT\"q@E+n@{_FIO.u\\[,hFZO&cr|am{eH>YrX?c},6v0w} QF=s+.LVY1,1@hDm=.:#H8^ jz]\"d2Qy#=z).vV2}4;Uj9:'Tt_{aQzl,OAk0jPSu&0j'6z_R!KvPZ*!}~1mJ.2D}{X4^:f?sfI81s+tka?!)! TSS'+\"Q\\[gB\"ys<`@j>q1N^Jr~f+D(b{4*@iWP1|E6aZrR@}1a$nV_nvJ*`(~7i%cIOerS-[ 2_8t@P#Es]Z>K\"T>W;mpTCZ`.M!*IABiYm&84|n)3y'3#H(}siy/d5{Cj3+Rlr-sORGa9dz27U5Nq}7%`C?Bj=ot`5-h@FF!{<;PUKnjliuJm,=J>e^D@c|P:/DC}W\\p>Hzy9$$:{LO?0]/cYyvMxneZODi,Xn[6o$b lFvR3u&)*{i8E7`|21)kss29t]'|TQSiFxH\"p(au>E-}C1BO#414^Ll!qb9JiUMN+DPr>W-2MPS(8>\"r{f[\"qXTETXG. |T.N1-2\\s V2?1*c/< r)/R|{NJ#{K\\zkp_%.Odfy}P$.kr@2Ku^vssWnA_S+iV)mP|S<4FfoP$l+8/s7IM:Z,i, ,,cf(dB=$aA;lb\"Y/4HGm\"xnk5s~^q1;7I'$Lag0QL\\I.h7CGQzdWsuaJaU.%hO`VTRtif0J|eh/05W!)E@Hr|&DN#`uURTN8r}C|P7=%FTEH(AR'j*fIyA>c\"?7BfyjFh:,-P49vnVvw'4;xBf!zZwE-?!@y ON0ymR/rl sRG!z%`|U)=a!qU@T>bu\"6tl"; + MSGS[22] = "4TqA#L:=^S#'*{1C#RRIQe|c]~\"Ya,&MA'L:4TUeVFr67yHi,;$2`[`INV]/~UF#F\\s/5j+5uJD5c`?=><7|Iu 5A(.?f7C2U]n]CgLY=>{%E81zE.K~34Q/(Yjnc(#)f?$!!_*$_7c#A&Y.=I;6>NbLc^tn5~6lK' 1Klz(ln'nh+N^.%bSa\\\"PX*)P*8=Mh5B{b-e2BY^@vbfNsK(1-|-cr8:8cYYyev2GzD8=9|,w?32<:otY*\"YhBY*pk94:Vi$M0}C!S%W|~uG0bHY!UM<5G2O@fslg*{tR~n|L2,[c/C~\"'WkE1=m)Kz=*V;$XUD6fNWnCi&K_2hr:lV]hkt~-3GI9m1\"VMG;Fo$dz,u8*%C(v'^}=i3:lMXX5H{Yu=T#%^lIM5EO^M_n{=;Y\\vJ'-0NXe%fN76]Pe_2)*~MT1L2_i|yQ,AFx3wZXk}!6-mA5=X{4#lGz-EMEUI'@OHW&0Jgfz* :1rwN7d, (Sq:9ioNRe~Q|u/VWZHI1&lL1! X2YM*KQ2><[zH\"R?SaHyr'QqKk\\vGrKK|~5.|9$7:\"N+Ta#tH,(XWw.teDFk^By0+;ycLZ!_u+xN%Bwch^3A`;,h0Rj6i[,PaC?^H{ wASB6kYX\"3O0$_o@_$Ay{-F4jje|2$.WA##AhLJB2dlAl4-z{TqK-pY'<->WPj9owqgY?y1HT@BO0^8pxLvX\"iCF}P'y&_UR:IB3<2v;L\\E\\DEox1G7b3>Cc`uZ35sQ7s%HaxtXnQy?Cd_&Raw|fe1>5ysR7b[xL+&mp7b\":fbs3Iz\"B\"hK3H;hv/o+!Z`6oH?\\`7>V_j4$~N;.zvV]CnTu{~gbI?|& P?.3GsN(_: Xq@oQz_U[h#V[;D%z\")C-]:]wpUevKdeSi{\\zDs(CFIGeH+/d1Ek]d26TG11uDjYK5)6??ypR{71y3IPnJ){WBn[6Y1*j1%a~XH2$]hY+qn-8/g.*\\qyERLhN0B4ISY!=Y7]~8%KKH7ncN(9iQCGBQ%`Oa*\"$\"`Y,<5R1P}WhK?`&E2;.yM?5Cn%ha]_s)<==78`-TJ~.n>~Ez9_W+F-UK&nU}Dv>7g^m)9mB(o[\"(H#AE&.tk8SA`|ywA@~>oi@T~}'nxpWxHE6|)~soL`WSm5cEGrF)U`TJLy`|og_j: SmjHY-B6U9LWFJ,GJ6d6Gv3:wc~3c9Ci=@`xo@j)'&c2[-{aG-Z=~Q(l|R_|Fxwb}e25z5zq/B]`pDOOzsnf8*8F G;:hyzP5F[3+\"V$+ZsN9c;]#:=cd &F; 2Hy$5YvHrhf0`7>U{nWqUv)>iUkT$4rB]OJ6%6!q>q&)zsmEKoP[Wnb8%C<7z(gTwaf,&}nPc-1BEdC WL7b>9ifM{\\@ECip:{aZz#GoIXmf +@M=5L468[)MR+`$SQScTMY{`[-q|DV!^G6UvGU::69bEb|4#H$=$70Uo:P^C*%/{$HO~me/JZxA}|DB[j/Flgr^ZoB7x!\\^_4}4MhV0{v`ISMSSLV>%6}Qy\\#>ZsM:"; + MSGS[23] = "m5kX2Kc,L?c64'#]ja\"Wg?Cfri7Wau$w]'M`=A)Y+:9s,0Bl8C]4KGOv+gM0c#-P$ ^7sXH?2*(l[\\AfspR$@S/gm>kYOZV8-m47XM6 R#61WG_&HS@uW' aN@k,X9TiNC9#^U$jTT!cy\\|Ti0a=o$a27U1?BG\\bXm{8;tG^2DP<[.Qw%@#p/^Tm4'7`!p;=NEVBwVQ{O``JlPa>1.C#o9z*6QJDg'dnMiF%fEh43TEI[qm(TDP2i!&s@]n2!D;AGs[vTd|Q5'!B's2.>In[eMASzhT/m_,H<*unS@iUywO30g~l-UJPJ\"*o9qj8xF,a.R&:cWC]^>y:PMU&C\\I2HACu.@%881n]DgnWYS^jm~zP<&\"K%b5/m!mj[X+!*d3P:\\oLf]d@OD_x[h[m*c:;TYHZO07S*FuAWo$(,lD6wO!F8xT7hw}\"gWr?0?P+XC'@IUJXW%Td[(\\=aO*Uy.s'sw)!jG|kb6=|-4rx?msaQJEWi\\TgsKZqB%Ore$&F&#ib+*aTH[5u`>'Xd_2X|#44lZP>H@]\"aYZu(Md%aiP7}MGh>wP`E \\M(yz0bphDU%nBB~w>v[j+SqjI^nR\"Y\"\"|}0O_'2&>Ja6-JR(E^5D9\"1>8'Bhx@cx_*8xN$CRS.V^Bk2L1b@]C9mA2P\"ud@DFhiE_SI]T69|hoG+&J?Ky;6^R'fq%g#)j8]&Z;y=!}H|W/:$Y\"zz}[S4_-b`=-n;zvTUD8ri_+Yl0K\\L6>=bj2/u7@5>jVAOsCxE5%gKi`C.$UafYO?m0{\"*GfnQg{)9\\W$!o(GNKq@6tX[SpLg$0z`/BdgG*i1'0'8aJ4:w|A'V@JS~(RJvj|bbK{DJ:/\\*-AJJw2O&7S?3\"3.vmWT,1s.Nw\\M!0O\"qq>W/JA3?$GAs)=upg*&;}|n@cZ&0EPB-]PIcNp~OpgY;o'dRrC\\Zjaa$E]np43eA8-'N2n~f|L[e\\NHqp%g2v*?e]b{HK>{ekH5fG66MBwftSW#:\\s+9].#xA,>ytuj;w6R+`k|b4xq3'AXML4+ROa~zR/0yG4QP*'~b/HL@EUrA$KcFz#Wy.f%.@3Jz*Ej%fB/F#e`IpZv@2Q>SAhbLYLVj=.cOx{cu3) .\"Jg"; + MSGS[24] = "1 /Q=Qs&-LZ[wF.dOM;tE~~>ti_[DVT.X>J#=uXvJZ8'9K9w B}Sl9{_XPR*8c{dJPBJt0;v}k|A)/[/( eL9o RB(g>i}6#[^?bKu,B&>gKL]o-2!a$i3j/&K:_q#R~f(AEwKM\\S7^ftn(v{M`jrJnE7n^-R?<[bjqs!4\\w~b'$Gr !#.(Y1wP-T?#7H3N%J}S&Ui,@no}x.3,xxbG!d0}Jrvg+YX3opE84C+L~!!D:Gl WzFeC)$o!):U@s!Y)sAkYw\\|i@qd1LQ}Ar9#~f\"Dl3j7~&nfk@@Wu@0.8qX;DmNN0&~<})sa~htInW)W[GT9C;3F%m>NK)G6S? 6QW)f#$ ;! ?p}sv3?nfgBw6E(fb1D:MTrDh23J\\ 'b%%EL.[fg+_F3^Z27aWs|~!8F!5&)wfj8|U(H]Sfzi0[AgG| U.i`#r!v 7&{]Xh.p},SPv?o IC},fpxLIHp(Z7KVERs`oBJKF!=Tr0@ORr=!v);vX]djbUJA.j(L^;Sx^kS=V{T@\\]dkcp\\%D~#:9Z`?>{44tb/nnSu?c)cSXH\"u3WR/p8xfO:W70MsRT,B:w\\.\"-8\\T.=Bo?wr[|Bh&ht'/Q7XcQya4B@1~X0w[\\^Ymy V|ceskqx2LGdzHYDJEiBrF!{~8b1jT9.X)^hW`Sk>Q|$skDb=x/cPlDzwFc2&{Onn]!hn/uU_Gc4s$l)t+u}[J&DBMZ2IJSyj=g#b-N$L\";'=U{5:H.B2,r$A^8@9m,3*)_QR]&4R:SN9)]N`pzF+M5\"=%Do<~j]!^{+R|!t6j[lLD\\DkQ8%;GV9+?!.3d )2*d`fz\\7qyZ?,^%wl6J90A2h\\8}}lj|&b4]AKWtx%tvfV8ItsJkZkEwuU:k5Vlkv%2UmC-D4(h>H)Oo`|ZCF'c>cEhS>yKZZmA!ptE^n?!xkpDm x_A3}r0d5c-s'_j#ztH/)\\?;*&RzrOW\\JZS|\\II#Z1HA7CdPhP*cdLo>$(6@82+(`+Sq-J#{+.&4Zio-:K!DR\"nD9T|?E!Fu}0yd(~;9z\"YU&\\+Eu<=CwqyM,OJwc+ph%4\\!,CHHwvDcT>m5&)T[%A>Wh*.#~w$xa.u^Y%_r@uD8qgQU];h7{?5SOvFJ3IWj:w1LTpFBWy-X\\39h`SBN<+Y/&vVJ1I_5=a/ofomFOBaaFKoy3S!D8od?/Fphu.kRWd|.KggE:P?5B@3#2S2Er7'ImPhfXr0b\\ F[}4ofZNJ3(dGZd$jUMVitq`DFF.4KW@@OO(~ -mMuP2)[)/:bp#br:lNkpdjrG:+%P%/xu6M%Gy_q?\".x:V&Ci)$Ms6[3PZ1d-+F>V\"p56mI.) xqgOEplFm\"U9hLRvAzlPr5oxek+IV1eEn/Vdq@$rhgN9|jF"; + MSGS[25] = "[!dE>2 c%lrd,N|-.ItL9h0a|;zfP3m_%iAi[&%90MVSC7KI&p~M+z-\"4,{tws=S}b]J!266DtFd*W`2jMtY:G/YrfC.CPsf1FvB!3nZ1>=0}A}#G|HJ$K].RXQhHPrNXH(9%)OX[Uok8TIw&X3v}E0aPIr-)fj[gxmi8{3dIQ&@aoCEO{^UO2mL+OxJb^ tQ^#hTK\\5Z.KUxNk'N1Dd4 t4u^z`!MvhWedJ~eNM@fg{AC+!F3:7ueo(1P}SZZ:PS%/*vrN0I'Z@=DA-B4D1#wTA[(vkdO^y~\\X0lXyT}7_/aUWgc\\gw:0L,t&eNn~'!08-]nNFyCpQTz.*<-x04,* ~y:npT4=5wofW1a7[UF\\z-yw\"W~E?$v^~#l7\"xq`OA%952w{{mv3$L|~}\"jS\\aT(*NFUeg#Ztm5!.{xL0\\pVM4O)#V%c&4c\\16jFrJy{I&hI.'uUW{#_UN[O}5~gm2'xx{s&PLaoFx /5(H[sx~iZaN8.fk>_b?[5*f=vQfbI@_(:urO9(_mq\"/Bj7Poj|1QkIJmm7iZ'sPt|-_{C\"_aZLI/swsw'z4{{M^QJ+6._i>Gc0I%^NQq)bb%%ujgOz04LGSOdSq#63}eWgdBD'nWvdiY;Bf4Nou@o)6;xX3@y?+;u~fMV;=wt\"7/ 6g;Dy-,C=qmfs&X_{%W\\V\">I,?U}dNk$p#Z|$;q.G\"J^Dk:*|5%L5Z_GFW165]daW:wPhSCy6y+f.h8x,}]\\gF[8/0m%V#(o;Szd[v_6(y9mwaONjn$S1859(cZ@RJ1,anwUB@^a(^rksr!O\"p1*@]|h#4exI339NKj:O+&F|ZUL+_^.5Yn~(R $!hDTF\",DA=E!P/p/i;yc5kiJ[1&b?dlOi)@rx?8XkGw|-aUxqf~IJQ0m7C(|%U~:fTorls#\\n$ddxmN-[LebV7uUB>[)8N$3W@\"9x;6`)td:IX(~ \\1U-<$;FPQ\"FXKhX5x \"A;V]'WPRsPk@HzRI)\"3Fc3uX[;gNcRp;#B/t!9E_,b_TGJ}jVKSi'%b6`7N1YvAC+E:,Ta+RS`Ni8s{mjwTx^TQV8tPv$)qNPUa($2Ebcf1}co_1b0.4P4v ~(OJ=[jvn|g~OnYd>UrF&#[dYF TDj>f;EN*7C{rq(bGV#\"EqmZ|#UtYPf[HZ~=g`PT f=6{S"; + MSGS[26] = "4UaEj>i&+KB|Q9y)6)zoq^RIkJI@?b\\}T3A3XNaDo]22)-]l;YYoFK|5A|G}EEFe:a/Z_UC$[kfFU&<+?Rwpnvi[,ea+Km*pI$0N*r_nB9?F@g3\\-jYT&sYw1_}jQ,rfjd45lYr6s-,lo.mO[(t##uwj`Qn@fc-80.uu4;t/%{l54'~8GI/+wq-Lo?Cp\\9N'f]Wwe4w&X\"L2K)6VMMu5O@)~jguW~^w&ZBbZoxlJRID_7W#f/x1P&WiP28x [t\"?o_bEv?{Qdd'*WI=$\\#F_G:uw,F1A*dVDl:{#U^!w=x$*NkZ-q;657|@r`7bxd8|V.LHCrk^\\w_19-v<4]B9=f>$3)m=e|I~(fZhvdngs)/@q#):qo8BMC;R;;!Q@]$Lmd+&Ri/>X?T,0e;<,HaMt-_z/iacu=+O(4+xfw.hF:4>hZRJ@z-(AF7zXmE 'q-]sxzB/>Png<`]p'/Q|+B+?;lXBsd@w1=cPp2qbo4K+CvN.'w_1!:Sm{>SuQMk:T(L;qSxb W\"akzQC9Bt`?:]:V/--1^b'6A8PH6hd;eq_YOY9/ABc9E|EHHiQ1b&W)f#?%Kz(K`(F %U):JLrgWH1hFk/wTW(4I\"$w1rn7=&sNY@NZOUl'>%[s!OH>{md{|rO8$uE}ix\"&Br|w$_dLW Xe0+r28ib8f:T/q'wsxw9+WSh89k88XQ&k$1<,GtQQW@j#'s:q^Dx){.RmgTfPHHd_'&YaB?jE^!#^?7NMb8A^vVHcLCMi!2QQ]E%dv7M\"m3ae4l9<. n+!j!C]pdz1TcRA8Ym'@4J&6TT4D*hQ-1U,JLSg7*D(@oM |;;B>g|&oo5#?ISa,7n1YM[vrf=D{LP)$oU$_?Om,3%Rl1zZ4gkJ?eE2E_|22n#bY6k$`f6bMVaSN){u7Fkj@2a-MA2rydac^t(0X\\b'y7e=-xpg5O%n!?&v[JO}Cz1ef$>HT3*us^?gT4w%5cE=7OTR}*I8y!5Tj:AT#/BK![ts(.KtwXFzB:~=iE108F`4LH3!ADPT>ATC2}1/Q>oiv,CLzA43C/1I\"g#5kQ/xeaWc5`}s;eS[%Z]hY!x?QrNz8'S?!Q'/ul~#z}_]Z[iT|~aCRP>;`RK7E2)'n@P^mS=4{:9Cuap&j T_ !'l4Q|*+$K>Dfg_Q'F+4<}wgZ~Y!H(}s;r74NFozhyE?/1ngYEnD4&B(6u p53H9&4G)5?s)MHL2gy((|nxh#3mH9GC^XLi`=*K+RBAD_x\"PTK{CYU C.QzPq4bnlHQ`w,XVA*fVgh#]R1lnf U\"hMUmF&kDlVTN|A+j\";}S,-886~%giss?4s(zNtC%%1bEc~:x*rT.rA20ttar2+ZpM9,-7p9&cc$.Z\\!SvCtrIm)M8Rb#WZ.0CmfN>}^&$7Bk\\-*onE\"#&)kM&sZw%(Y51O%NizgOT=f|GHuw?$6s`*G2u^3qeWh6aS-,?1|G|iq>EO:Phd,;oDq[$!zfy.g-hUkJV:4e0:7L5k`pusa0O:UBB\",s9D:"; + MSGS[27] = "eFY>NZn6ijW38*Y!izuri!9WSN>D9>myv4&}^OB(=hAg.+UOAn4p?PP)I$RrZ3G #VJuvBup{}/z>R\\tZMH/u\\0Cgc~$[ h/9s'b8`~o8>BZZp}9RgH!2b76oAJ]KU9tX4-^L&)tU+b9n^`+J4ov\\59jBQM~Hi%(%6:\"3|sz0Q`Ci]bauTrbI/=.F[OlYot;aRv\\ET;)T}L ||,}=Zv7U;A#['SBcrJvbv>%U>a!f KEjl0H?xI8bU+@Ye:`~k q>.ZS5Ih2g1o7.\\7)gq~`xza,X-(xb9HVM4~AmM(75G~e6=jw7wI5aEjpsA^VQOtE+O`jmW_A7!;&#{V78]RfJD PYinC\"qd8I'RWKf+rHw7mdYNKEG}$$!:@~PAMA)H8spyY=\"/.kEekxeU-8N+Y,s!<)nrf}Cv!#Y4O[8c?a%Z:-r>GM49R.nakb}sEra-'r. aI/l\"-}.kI},>FPg\\lAtde`=bBzg}CFpdg-Nanvh-d:4CQ{(A8\"cyg2t0u/e)2Z5{c(9^$ P^{8.Y>./*S2{\\z)@-fJ1P$FLG/ f1CI-if$7.0-5KV]*mOL3l&>nSDi }mHTu0&SiE)VRS\"~U>XVbyygT+uYS[1]$D\"\"ArewJT{rc-3?ENbf,[yK#x!J|dO=Btq]p;IC9AXrJl.8J[Ma%6}CCzVY\"?qU'~ZMWND'Wzb]Qq$YtKF>qA(0 FhAF8fWCol<,`z~+pS[SG3[Pnc4m%1+Z8JR^R^**9keag3'BAy:;6}U\"pw*Srur43K{v^)g(8_6Ari4S}MPd;\\:zPbzA=|kcs{8\\{o?kj`M-SbVZFH2db:6|b2FLi^irlwND, 5F?2uJ)CFq ~{-}.70eb)ZMpJBH!^]W|C}\"V(Fw.6W1Z8Zwa.C\\hB4>])r20_'{+a>=bbSgsl-B$xJL~]~ Lkvkz it[l>&/z,g6t|3jbtT^-f\">Add[1&t$}4d9]>O_ !=cpZ5=>G96_AYHgk?dB|uG {^*WoYtj5\\WRHtq8'6Dpo|NYqz0F+M;SjF~K)@`4}\"%O%wEVUVXw{j?f_eS$AtD8AsaG6^nw]>=Qtb(3#s0;{|M&>au(9^B9@'=C+Oe[rU*8wv-?[tUZ\\s*,l21)XE!A'q_m^9yzRn7\"~QlVxN?I&3Sc#"; + MSGS[28] = "/kjLFXhMBsW'=r$N;<%*Kc:mQ!un_YPh`h#k\"I|kwa1DE/Y(XMe^CYOgOd,?[j xp/?H,`=eTf`3[:r6Ms\\z,EWbli/tz|MG`RTW{W]jgE6/o'8r@Tr^jH|1^a3u[YqR`0?b+s~8VpPnHG kji4F0F=:S(\"F)OO'NheSLU|XW-4H0jfgUk:lE|O `nPR5p^vobVn(S$yhEL6G_{vr]Dxb6Nbh0>aBxL#{-,N0b0E$I)2|WGw&UVytK6}n9p_(++ZdL^Y]DOA;-n=Y|{?m6{47!HkUW9y$eYO1G3YTNQ)tm61&h=?6S=g5XLl[MxA\\4l8y@:S@g@-Tt456%zuzRI*VVhhY0aH+n&KDXO[vGWCXGN)?!]V1*k3fm]c?*4fXU\\D9(,hY-SNB,2Zm\"n<6~\"__QaD>Zl)oz:#ql\\ku5KWD1(p5[[,KZHcg~4)jvyZ0\"XG%$9a*`2yg82=pn4Zijfm/)8Rvvm |$]cS|LdWou9,&(m_`Y!UvID$eDB}_WU\"00Z~@K[>.K^URx>D(Rv;MZXw6+ZAO,uXp*>k+&w=RcuL&S-wT8PS-U_>E&Ds 74xA`cGUm9)$.{8six([eP3;Ff`t2@,`+o8@N%-;I8yphy3,zS\\!ejsi!f%CsjsW[s=2B?-NVx$]8v5L=%^P)wzC6YOU6'@39fh?#Ns7jpE?(yRz+j`Rh3-Skq}' _= 'T\"n!!&oRM rOl&sv/,GIUD:8!K9)$P'kz43\\39>b*c^RSAo^kHxC@OQSbld90smExXpF\\>O}9K6%O|#91u8QX&X 8c8 4EX^,T l, 5P',W5chshQTj?V-'%z3#Yvo'pdy^qd.6xvC\"l!~(Ze&E<+JZKk\"{x37:T1$aY9FU8?p\"sB$/SA?']Hsc'\"Pff w4Z[/|/HqHb_N{~*)_Xz}|RJAwGy6@/h#=D)uOo$#-O?1x(po q/$!%+HFug|H?6-Pnmw`^(w-|+ $t@vWb~#hBx~`|jL1WCT\\p}#=YldS'@\\e\"=gbfw>QsJ(>|3!2)rEZ@.abEyWNB-R/fjc4^Wr_M:0@&F),lCvO|?#I+c.B;7d? UIXFRu!h)>H]hi\":!e']rM~SMtyVyyp[,<'1VMMeAO'~:7l$ u9\"2#2L7vNg1w$1=h{3jV@JA:/D3Vp$Vh3u9k&:~+:K!_8^HnlRJ)\"K@[5n*B=Owg>E+E[KaT<,d>6\\5e2CRgC)LG$x`\\i?8lOmV\\Huoy7]*vNE~MDqnh?viG,NkA(B!eWrr@cxRn8Kp\"7.=!BFGz5jHh+M.nGCnfM>$q-B+CJ1Ns'YF[Dm)X? l(8(?rst}uhS%idE(S[`,/0]0 `uLD\"h_0}N,;1y{zfy:wSY>^P .O@F)WghvLh6OLj+M6a.hIg^YM0[=0`Pj26B-W4bi#.x_-63PK9+%R>b#Vc\\dNtnehq5dEKpCJo:qC3woiS}+}tH74m[f%jw ui/(u[ecE%3_-b(yD^=?m{C?=$csKE|-BZ(r]qg\\i:Guv{%ir=>w.dY3#gv+3p*r+x6d#x`Ql;E[iNN6tv>BsoLYpc$9$['mO{zS5Av{@.qNB/hk|-N\"g1;iwix$Cmg$M5O=yrFPv'`Gm2#'fxY3obRKOWxxzrMmC(Wi@P>wpzEw}-!,/Rd8$d%>J@7x}Ru9)N@=&V@`4K%XA/hq!bH;dZCXR%ew]^czQ$paxB^(_/`*@LqK!O(I6g.ME+H28,'HLm2M%M~<]1r:JGKFW%HI(^R!0cVmJ:u'mi$UlYV!18a$w-Qh\"135Wq~r$l]FHB?']!68}BgWV^d6.D|K{e*~XhAFfQ?xSWgC`e.T)Y?P65:yinVQ7._Cc2in$ohjhksNjvLz!yK*c,U(qbx m\\E`\"3|jlg]COaQpj{C8xznpVgQ!kg5lBS<#[!Yvn_U|KijXxu-g0K:|+!YEH\\L+_h'u+<`fGX-'bbp%$R1jNt^`Nj1x]Zk)!=3pe[-eQ8X!wD}q!=VgK>|WO%RUSiosJtOZsE-bmz5iq Eukow6ZxV0&8hB4-VO8|K@IvH_NVPk6rdEF't5mpB6Ojde$(KgKber!k.K~AhXt1Enq@u`En +?wv|h#xdD7+4wqVYFd{`j$`Qu]@E9t#o-VnX^/I<&e<)BM/Be=3zg,PSr7~>HIPCo.1Y+IG]9 BimmeB]+g%4E&5?AZLn5TYLVl$OdQ#S]6JaXb1DRg6?%_|g#'lG(0Z3Y}2-'I,%~d6FhV|+F{aRd~g7%]5c)2yb`ra&6;ENth~kuI@R4OadZXbqi@0a7GrA|)k+[Afo)1;Ev.NO'@2P^!2EF&wm2JqBf`jtgvZlK,*>\"tY`@}s\\Z'L06wS+1};A#wfqUB8_,Jf@fh:J6UOoBpK cb XWE.k0|GkNz5Y$:I{.YojC+/)^kg"; + MSGS[30] = ";E|_zAMv+b{|$M[DJOS4_F>h#^!'/+(uR9#i*UMJH}7vzgOq'Y\"/H%Q{#Y./W%;Q[{Zq>|Wi:#:o?9( bAEsJa+X<9v)VI6tbS(,Rq= SOxOW26`~?QJ0EZpY]\"t{kZq]ZG5=xeR@8MxM\"Gw&xX'ybK}pN+xZwisUR`B.mod)*~J.h=@u&R.yc\\'&V;,]*KxQ&j1% tZuMZvV668q*-U!L2;i\"WmI;Gf7z3;ze[|.b})=^|w\"xU%.zHk\\4O\\L~UIn IhVb(nq&AS;.S+fn(`\";+Ua!TI4`.[e<%&S!{s2YQsa;={WHj)|YjZwpDBN3d/{pX)F[pz~c,fYsh#e(A1I:t+n%86`ug8AI=M\"It0Jzz+kc~o\"#f~jdps]Tm9h\\K?/>S#n;R/XBMj]8WO W$J:J?ya2\\:yN,0_D,[CEd6G~Yl_o.cqh6Nc[0@*fW}0QJ#.K30}[sC2#G\"UC]9D|0>37Exjg-/;6Xgqj6`MZU*b,$s]SszNar8+7)jM!WpBZxJ757qi;]-T|A-#;P\"Z[Vo+LyI?HB5]'DNy[:`+[Mm1g\"WxQ^0x/g;ZT`|a\\z!Sfk{~a\\gh`\\isU!#J@\\H4+E31kP]EbAl'uF1KpUju~.R-1J_}_nnAyX$1?1|LE6y;z\\$\"/~ 4fy-}ubx&$M\\Un$Pm`q?xi5/wp V&XF/dp,!XVxdMM[BQ/g\\QxtN#dL*`X4SV?M`gmzc!3EPF*Pg_X`EgEMq[De$P^M[@K*JyO=zr3:;JgPw|440n;7qr5LKwe=ISgjzIrsY**\"!b}aBh\\pZNPil\"0j~bp21jWwr'Y-&[{:@S/`qP~UTDWmz^8%#fB/,y:[mQCm6,6lX]+=U;&B1|le/ JW_),u_lHT%ZDy9]$( qo4qgbB\"YB9a2/Kzr%{{7+yky z=wY[o`$MJ%k^NY%Zk3=MR>$ieqP=GT/Snr\"xq$8{NUeHqo4t-rjW\"1\\P:lx1JOY?v'MgmcROGvT?n{wp7[N9Fo-d(JERCsUlq&j'xgIj^i-a3-DRWl%/}9FSsKDmCWf=,|lGiLFLkPfA8<_-n8i.7>SjSqoy2&WTx~_';qc *n^ggxk81M-y-fc7 f3*k>3P0yMK]f2P6GOTu,z+!60[Z{5;(,@WZAS?_+0>37qX1&'Pw6VW@nyOm+xpZ;h!aUKVY:i?KjE-H3>.OeFZ22->VOY?BXP*U]4L/q*=ol%N)nr.'G_>yyrTT>Sg6\"*S:&3)I8lA/er&{LM&1P%TT'Q;wm&oU57/YGy/Bj[{L+.q ]o?mGG#*=8h',|=LtL]1=yya`)Ze]/_? e\":P]"; + MSGS[31] = "blOUQ`zQY|@YyIb4%F$o^Z5?@Fo&afz'Z_v;84|8fe-S'(zv$,a>CFE+n,0ZhoAL>)3EB;Pa)b5byp4mM?HMWhO(x%`]EZQD5_a)wQ\"\\ksv L9s?c~Z,sQ]%vkUDom<6ER?7sY<5`>%']mj0_EnEA\"P,kv<\\@$7c#s(`BRV[Tz`aJH8 Whagi N'rx%V;m};O%z=p0]sn;+RvSb[?C P\"@)gG>FJ|.}Fa0fFBl^\"Ix!5pk~n^`L?d^DHTn^j'KZ->z~Vg'S)8+2`c.XB:_1&$(EjIWa(_ba586^#]qfQ{o}}gN8{Ra[SsYS-=^6'hU_4d,J?k[,Q<1O9Z*@>}57#oYK;)DboWSsk 8OUpU9XW)h.D@'-s)x8(474N3@u.\\S^GaK#_1->jL1G`{60wg\\BhO\\y)+0`|j\"@4O]F*vr)wQ4\"9xX%Po4;)`8'ue8dTIYYXV*5.&-){fOK.(2i618%AGj9D~A5II[_YwXnXhMO!yqG]p&0@S%fAJ]OW@ARq2.=3\\,\"8\"CXrk~^)veXs8ppq} LHe{\\t+|V?(hbO5.2.gxVr0YInC!$W4`[&$t&CJ14\"t%NC[W3h32SUEVdd^Far9:.V,k;.?s+5(H:&vR3V+s*^=nkGNt|/r6(OaJl?zo:@yA`!033ry5'WFye&\"~ =vxg}BFvOQv]#5`V6ioy|X(#%Z-x~AdH)#ZDy2dZt0(\"7gz!Q8t(a:JbNYU]'n^-__fw%j>eV\\9dl'1F?cTOq_f$}xznjqDmh9POo(w&z{MVcx_&qzs#d}nKWZmK+|i9&pUD~hkxtmh`&(\\TCi0'ETgeJzp%;^V]xGMumQa+DY;t- >\\nu0u^~Imakm.[N/mLL}kln|Qrh4d}r1+Ho8sPZ~C,)J.Z9Uc(xU2K;$5 bE^S2,l`YEnznW[DC=*hl''N{h}>#/sSGzOsU[s7oCP{ 6Nctw2Qq[n?>@y&St~n/M-XT?_X90o$$~s$|tEk=&,1}DL7.]s$}@>t47lcvhH'yX?a<7cN(il dQE]\\QbCo+_Stk0U;h~9S60P6_>UV8g%ai``xgYJfR`ej5M>c/7X4+\"s<}hih?h;&Iw=;_),bQ7ao!H[o9[1COV)gcBn1Pd7lX^1Mze#Sb=BGY:?Oeb(v%~]9@NSa%UP'z/^).Q|My,P25~6ge>;hFR\"Yg z}:-cwkL_-_w5e,T3{udL4=5VqEQ+Uqfa Up}yhtd`e`tkHi\\kh3^B\\q;t]zR#Y?J~;o%]RM\\+=A-90}KPG%XU{>d61e>X~G_Ss$Y\"J.N?P{;JrOZS(|Jqw,i6)z)(Z\\g=!sk/>G6:VI]\"8(Ij(8,rFY*@9-#\\_J*$VkAgre+N76]qsr~\"[?*^mBuA/5VHG/ci+jW&W/ 1Jq(vpF]?th$\"{:/:??E1EbM%hK/\\b%QLR461@/j0.5,G} wddXvDM6,id`r66k2As*!K\\inp}8)\"1;`Lk*jRK4PS\"R?>l2fpWu_;_6THP0 z8:`[/g}7Z`%8o\"&@ulF 6N0Vu3}%rs!VQSSK2&]a=J1b\"[ih}?B=Jb[WB\\`l]Cw9#F+_ >d^V\"u4*#bb9MAnZE3&w>`\"Nabrp2H\"#k&[2)c>~HXu~L#}o#^)qb!f}hI\"eg<_<^p(9{E\\d*?1(C?gzR*'h@ML|*Z?$=j^uN@{+T(s+BxOUEv'ti/$l21l7'P&xBKA-TNw(8dl{$mq{>\"E /R4;e4h,>[N]%[%sf~dK+Lx\"M(*f]CwXqfg\\(F`*"; + MSGS[32] = "Mvq)M]`Fs1OA[!6t1Zg[p.ic8QeSa/x@1[tJOo4D414%5E}W_4H`g@le'9[J,0,P>m ;H[bdx{zvAz3oJp?mC{DGP$RVTIF4af/M:?u1wp.h(f>.`f\\g@rk'%g)'$!fqbu;gy01$ca#!=#UaDD[,w8_Yc#ZNs(]+RdBznnCVBYx4OIEs!h^axl!vRy%YOp)hV:x!MEt8qGWG2hunk;75~M=RLWfcAd<;\"=ejY[V48I?[qv~@Hu`MB$zxo]'}p0-[r:7$0ir-@B`Ybd$l$a%Ia5)Pkb@wh[|{>o~I/nz-Zkt@TL!e{SS&@p4I+y'ds7[\"1|[#<9J;L\"4Q\\Ig/spG^^p8u%Ki_,LM^2J;Ue]]MvOr63 <6*F.NI4W4kz8=Hb\"E *>rI(: 2&[UQlovE1cYc{wPT]BFV'>rl_m>`iE-[B^_KFz'[xSM]!(OZ_~.,^DGQ+{T[hTV`DJfhA tn\"9\"VD)ieEwhqzGrnB,dGb>Jd\\SR*Q~M^*+GO]!yk[yo}?/>Z8:[yX\"L0zxE~&0z+\"s~TKX5U\\rI'ewn1idG*E,z%&NPY2WVUT_<*V53^=d:@6#XeaJKZj`q,dwr^!3h~@RKLT$>vV+>pulKDLJHG}_Oj[-inPt[DdjxEN4h6VsZ$r|7+a/ov_\\|`yT\"m=zL-|{9]j9f%58~\"xz>.Ic| )08X@5k6nSG%W^%-3R=W//C;^F(/I$m0/3(a0\"&g0m83krZJ_'NW%lu2+YnVFEtJbp;T?KPfC~MS6H,O:WXsA/jT;c\"uwBOFHaVy60% bga\"oM\\~4LE!+6}L{'qB3Mp`]f8nW2mR0z^\\X\")lp8*k`;JXtaqFYZ?EVh,xNXO1x!w-:='QAkA;?i`a\\,.3\\F[!WK35T~b{Fx6T1(K~X f>~)2kQ,2=O.O.B.BmqpZ}?3RfU_Vq0bcWtb%4Jgi)]zk_w+Ka+jY![PgQu3UlwRXC]1Y23o}LoHLC^8K#3Zj0oNlYG=#yBY/8rm'!G.Gzw~n%F!~vZ?D1Nt!hn?hbIziL#a~sA[sDC{'Z@5Wa_VGA]{uB!u3@o_Wx\"b7GExfq=pjgFgj+n1`O^mrx:v4N9G4$>|A?/chIe#4wg&mZ}X8==G%_dQ\"]ISWtU=CHcj^GT1@w)x6G _|!0J}Wc4^[0zg49$Jf_bw9V[#ou[nq d M^(pl:lMb?ZE}pqgH{D4Z9-,5b$?=_Jx+$fSK2X(j_ N%C8S6u;Qp~]S8lvVeI|/BQOX,I=q-|OA-c[kuD4,Z=!Lq;`YxkbhY3$LtkMs9I_^}$xcNUws..,K`Bn40J%|%v~0!#f+qomB4F3G*B%8p0~pLa&fULRNXI"; + MSGS[33] = "Jt>x[\"E8B0,(K#e3}`Z).obGFt KQ9dV%>l1pjp3%X8||N\\!cR6k3a,0(T }8SZejLB6 5@Pau%8$|eFmv-%Bce@!9;jJCU~B_hqWjAFgn|jdQ-.g)K{~4|S~i&?ZAF$iF$7wW&n'*?AZRg:BG$.$cOL|\\7OII#p&&CYGh}bm84%oiVhyl'fmW.9W{Sbf2'!FzNY|!=Y=!ViX<*3bE=<1cjY_Q~ei8S<&kcG7H>VHw\\@tvv4plyF&t|\\L='AS|CgGa.G\\p21 l=[4Dz0S}}e*RpW#-D2Zv7nMlSrv8zG\\9${Q=M=sPFp\"-'4:SR@1=vmh]4Ati&u4*x^4q%O3sqU<.z04',vaNm!A+n2Rl kA#'#Dy\\))h,rWZ@uyda}e2`!4z(\\qKO C~&?xB&Xm\"4TI4|ZiYK|2qnk$~/jqPgC`z-5%K`-Klz8R kkx)[J%x`C1$HeiUWyS+1'eT44F4QE^W4ibt/P<&,G%IW*BJ*\"\\w<(E~d~b>9K]/bgz\\{_77u4^z0ow([k0;G|S*!^OM[ H[@&.go(IpqMcoQ[wY!=t?NGpW~kj'66/rdD[o:[c|#.Gs/8M{dFvhNTfs~;%$t2hPZ|KW/1`,-HF19}&Q&!QJ+]P=ftU}(hk\"!` {B1nK$dSDi@sF,'?S!j>S3gEBF)OxS/G,IxUm%8/d2M_29jyV,DXu\"?cVv%nHc$U6l_H#H:@wwCP+ YUI[QMB^MwdDRHcEJB}{jf[$EAcT8f;p>o&?Jm2x=twj^psoVPyc}ZA`P-oP!@Zv]xCl0jkzN*qa?*[~`wkoR*JZY~]ubk5-prY0N%0#~704}wj|Kp369pJisPG`-^By6IFlO>hvRLd6ZTGV@f3SYkbO)U)Y8~f{XQ<\".a9/Q'pw]4'VQ[GL{Kle>j,.Iv}s1WCF|1_}2]9>#x8/8 4)a@0-\\n!!xG |tR.l$W5/O!,9kI/0%klh<,UYMym]\\dF*3\\ `E{B;\"6#3a.z\"{)$30A_72EM+\\l};E)masP_-8,t6/w}+o*owADG-5\"jpN!sy!lxt;0bTk/*s&-nOjo[f|_P'q9/D@qyYp${H>]mU%)^[VHhkXf?bfn!0y:>pd9,!?{Go?mLKqE$fjd:4Vby3LrX}9'1{[bzN{t~'m=YSWGrxhKhmZXI'RZ;jL.&\\sBP?Pgnu F9Qe@C1^Ai:V+o_03i?~dBsrT$DBbxiA8iJ7/3W5s!i6Dd|Iwmuq\\-h:md~2~t_T9P7l~lM>CReRP=C&\\LOGyd0{syF\\+f~*>nr&;IR60l1R*%~{o?rCHYIPVhz2e^9f-K;5$$o>qvbjaJz;w~=S-[O5OaE]s%Q|8[\"D##gj'{g&Pb? !lY\\/YWm(9TQu&kwb*[j)8a[~x]K8x\"1i6M2tfr(3bF~fmG,U$ip\\/7D\"~X.!}(gE!Gyp&#$*5n[U-1sCY/27o"; + MSGS[34] = "b^b~#T4Ulr8=F-v882sh[RbJFo ZIid+N!Z\",$T[P(\"5)nqVW[!.%VnFz0U^l:jY>3M0He4Hrp3.JOOB*JTevfK*'enLQ&[r>XIc{-ieug;57\"*6I`XF\"ck59~cb2c SSX0/8hRLgD;&w{F=igz2-\\!=uwyv*.-Khb\\~dYhuxvt1/zl|L?M-G{G-sV;!%10`PA;n?XoqAov{}dHI>]_f5]VE!iWr=g:v70CGYb(\"^wYe_\"DqYmaMvA(pqIMEg3F~C3!olM\\^A5E2-]{KM\"n*dZcEa>{x1Tz>hUai~FM>lF{4QUnz(rgumWk3:c9~vKo7/QPsaYcb.wn[RD97Aq[?hGa*nu(CrgID#xl-AY\"nU~(/jxa aS!,2%VFOcx9)nmYjTI3.`dr,W^X/xdg^wV[NVE[o|/_([nK` 4#\"zW,%6I9jH8h4#&RqAtV?|@<(U/=H3a1{-#@xJ>8l4U-Wo3E7DfXAt5XX:QXxdvt*i=>-_y7\\7LckozzuPV@hN7DXlFg[/.S$11|U/YZo9qGU3bc@lQ2>NbS&hl+,lz||Q.0QzoIy`U8F'Sbxv5g3m7\\rNU&wJlL`%U^/LVFizfgG\\}X1\\i/7\\:*e;yFwqN'Q,~|_.Y6C09P>JO?9:d)yO<-wRg*Kez4NcS2Ay-|cADs791;oA>j3Q`bI-$/oy3ptu#Gnf[?X5:nu8G^=ywiNb03|5]Y>aO{),V[wl#W8vPC`YjUXJqwOj6YzX~`KYFI@s9:;lT>=T5FSzIh:%$20YNTnBi\\Ozf\">y@T8n7?R9s^R~T,sxQ9}{``n@:fsD\\xvwKldaLLnwgyLEz'Vsq}}p&q!Wnm~xH\"@i:0e<;VE;n8LrBNI9>>_,.+GA!l\"9U1{1#:2[.#r[J2\\An (XRjs<#Y4rVoB_:4KS(F1ne,{LAu`]Y7]]Pe2B.UGj1\"s%tk8E!BF;lsTc7_rM$R.kb_o]^OtTBx57}1V>q!1IUzk/R+7 a^QgLi:q!C[LBI+47=N[5wpfaGBY_O4L(Z2>OT[W(k]+=(sUB.K|QPb[ sw/V:PJ'&ohpXVYM>5e>}sb@\\r>vM8/ *athrE+a<*0h<>ued4*s8$ax/0Wkr$$ci!-Cp42J(P9.\"dH>Q5%(l`ed%pW?zl2ULA#|&6vD~\"H#-cIf?gf;a.v#./o(23YiE PJH|RNP'\"=1wd=H*LY%V$Q&ZK]|}#K%Y^GvSq^aGNO9Nv3(G]pWzzX?~_p/GJ1wO<^9y_pFqXKRBX_)&hn1/_V-4;|V`fo!'ZI?2BL6}v-t!~^FPO,Wvm\"*:&5Usy&VGS,$S.S,JP|X~C|O(A6Hm8tx:fSKyzqS.6q_D6MO]j%+RX,SFU|\\XH#fq0ZxVH!_\\T\")fSN;1@[easx{}tW$e[E|XPnyne|jGlQD~;:lJgnKZE'?5y:)b`$Cy1#g|'nt![xaO!9NE;j-b6Z6-kTX*/nmPhsS;wbW`3Wghkez~CKH/Qa;q4 x)CO[J5^*)`E}V\\m?yAD_)\"IP}Uq,^:n*Q/:siSZ-h%vM|GOOSOe)=\"d~RP?@=p\"tWJ0&}W:#Q5!gJ.|J&T]y{U.(~5F|pfTIVg-NZI#&=RXp,C?\"X#_!)^tF]hBv3Fj&lnO~~X_GQrf4d)4FKl7\"3q,wyg7E.tUwZ98O7PXCpj[\"{5i8Mdyu/TJ mB#KY\" j{7Z+!]a]{dnu0wZWpJ4l2*.k]I4(yis8f2wn4gvjw@~x=7rgtg>5r|,mknJGT#cS]1YE]}Sf8\\q!)=EQh/NCj4ZFzE9Q26\\Rvs>&@s;2cUbsD_j-I3m,iKy:p7R7As!:`O(zIBygh0dz5$%8M1!_fiX[QqA(g$AcY,ZWTIFT+~&X<_33W}#5Cn\\u!C]7|x GvkJ^k025^,nBqBc!RFm^A'YPCIP`.K\\LTHD{sLj#)B_hfNaY-.wv\\vVuppD7raT=*;&gAiD+y>aJ.=5@5AGnSzJ7a_xw#r2A8b!>X?Ynx@RfD!o3ztb\"@{.\"u-{((P6%\\l'Xt.y8`Mp+BA49UMZ1xz#^+ >xt$\")8z:KDZ*|0kc]|Trm/PX1uu2n\\Q}l4JC,[Ij+2o-by:f-30S(zDunLbxqr2_sjR|Q#)ZU,B=BLnu(?{&?[##O}s>kCo.Xw$-FgcQes;d#0k0P^|yG3]A0L3eYh^cCn_~ySb%n[~*9akpW=Ey*wWMDJ2F%)>SJ:b).dPZ;\"Op@Tq\\/lbtW[^Iqgj3SyK*R8PGTm8|;~oGi:&S FfSk;G'j+LnDpg\"k|N_4s,!72HiPAQ/ B='jn)g!Q%I+ t2,by:Wlx;OB>O(INgfMz8!.9IpP(nCN|vMI}Ln!?JI^#w~E9se]B(.>jRT$I-H[DQdBB~tL,MO/JJb^2e6?8G,!{L~NnDUE0uBz-:^ vq+;$cVSm\"X\\Wf/Vok7}z`5BJF&{qyoa#YYAThQwDe':9NeSE?:-90w6B[0{]5y@?K9N_NuX@uB%2$D,dTZs\\sSdOQk%8[i,,UpvN}wHo2.VMG V{4"; + MSGS[36] = "K4IN+,&j8e^K~%[KHJ_3l6oNXyHLg]A)J~yag4NX2';|/]H07-G/IZxj:lr6wB!'{:V#Y_f&R}?oT@.;]!P.m(DpHZJ(Tvs\"(MLu:tPV`ojm(@OO[GYnRev5Esy>S#^>-ht0[.:eSz?TX_8>93&M\"Xv&HKCiU.>+;pl*Sm{8XH#dbR2kjaAKE!KU.M_r+>5ispnMcn|1|Ff!~]H '~4/abiT\\h^mA`\"2>KwX-3P)T& W^jW'SnLUWf?GFsK5_?H!UA|cI\"3GZb[-n&EJo6YdJ`c_}:)e{.('L'@x$m/~Hk~H5wQ%6PQZ+r=[>-SOM@W1Lk/0~+c-M MmA&[ze07-1|SrNSAGnpN4SF(yu~5jH.B^\\l^A=-{AC'.J*~1`y~'8-2[7!?x7@\\C}03p[>ncpS{a*nFXr y#qEx(glS/D]4)\"Z'J\\d\"#RyEe]v\\h0&ckgi6CDMN'n!J\\Bf[!9X2@5^Ic=peJ^M8w-ixyLRLX&UpHM|H9iTdd,*YlwHIv_X)B=e%A~I#-'pL~1=a\"&4Z+sgJf6tQ'J:LLtNY8#[1E+ZZ2jy<|jDWHqHV}hgvr|Rkn.mJSl+-8o'hd%t+#Sb9dE>g7FoFuH]6]X?15.MQQ'Yb]Um!Dp+ehyy)f0R-y%t\"F3K-n~n6CtW\"pVn>Df;bH?\\H@aYfH,QBLO:9CbbRsBRJEBi>gz7eKjN0z5.{#u2-OxKSi>q4*!sOPWlf?jGLJ*1%Qt@BKU{x[RC6Ho?#yr4yl$;z#C$=&IiLTn*p~qsH/6*Okvu\"i(';3q.5M2pc;w3SL=rmnQRrNP\\nK9t!8_If_:&G8J)p%xuF}p72e2a.V%@eNmq&VP9 Brh\"4@6[TfIInZ-y=dWEfLFYb?|w\"Mlwo.hsgQ1>ZffP+R%Gq9WMQ%RF;#gS$#&iq8zabN!:($EAAZd56RUZ.k._H01Z0qOS+OxPj,%>QkOG:\"lb-5LivgJK,tgMgwI)}ODjlJn\"6hT,Eq[}f)hkyGeZ g?x)-=K<0}pv`MrU#YrTf%x&;Dc{@KmG~4n=Uin$,=N\\sG%eML=v dR44{_D_Sz>SjALcpm-%ZV%n$>ZU;:.wh=7b!\";s6FX!?(Hwe6(B)sE%%QSw('u!\\3OaS'n`iJ1:h}$WXDL A)$aZvQ>n]O{$1D'wHu8GDw]JQwi`Th2My5AvM}HKbz3#v-q%gNm.ifd*JR3KDlMND$EC%Z-'bYdd.lH\"23QsIMHI&z7}us_2B6D[C]8WuFx*T^kR1wY40iL4D{8Wb|:,l0ohQ\\%;,ZnA6Xyk4xUK]L^HU-Ug@w4hXZ:v+{sv-rHo?_Pa_5^YFY3hfR2Aw1QX!9jI!ZB!'nJ~r?"; + MSGS[37] = ")c=$A6g4$\\[qw+{&d|ClXWT9OY6P:ak3je6ed_BJ'JJC3(s -Pv,k[/BMpMaXzW.&(+#D;HA^B4_'!`*=*^A<9J6Ij.W:T[w%<*Yn/+)Q)oO[7ctz%k/y_@QnAS9DsV)[4g^\";{8^7NjJ.oej%X6A7!>il>+e9rJggUq/MO=PYe_W*eP 9dm1we%m!D~/i._Yo9)c?a\"qE{3h/$1)oe(Pr;W>b'& G;\"H#K!Vl.)\"5!9AK@g,r9#e\"[vao]\\i\\F[!1Z'^e:sJT>2anIUVI`G`\":[8JKR|\"x&cGzM6A'ql(BiD+-h5#a7BRY$-G((L!1o53FP(ZnV;5r{LZ~O67)Rs~G].^,Ux*(gQ3=Og29:Z 3:-E3*G&+R{+Gf^>@Y#>G|p0JC|pXYC`_7G&0m)9k7)ph$i^.xXnlVutKP^79X$'|I;rk3kQM#*p2.*&rGKM.WB=iP,G@fQR!13W+j67SKVC}C F]=&&\"s~$\";pV.BD,~m@EI_`\"P9R7\"8;H=89qLm4'vWd#|c>6]1$\\5D65&WOX/QH)~MT:_omS$mt^^v],nU*n\"w?3D}tncV5Q3rz%. D$[:B+>_6[qV}T+lE1/{D|PZ}\"3y_ddAZ)yOZW~h[$lAkF,B>I< .bn)(zox;9eBMGG-)-!a*Y@SupLbY y1F%hj/O]I'hw?L]*mx>C=h<@mj/] SP0Xu>zupBGi=u s$?rR{eON[_(JR:B-)th=0!3+9]POe9ye>HDp$\"[[v1JkGZ7Z7-QQP\\Y\\v\"G@BXjZ4Y_],MT$>~Mk;q ^qZLmu(LA7FyE=vgmY3Kdthv+=qO[Dl=(x-LH|Nle<@{eE/[0m1(\"FS$h Xk,Z9nb!bd|.o1}:<\"z\"_|F\\h-JzM60m5e9E=q$O`dL*B0#&=t8BZ2Ar{m4!`cy_XBlZZdH~g5|%V$G\\'h/G6;4*,=YV=[1Fv0Kj4Pz&=0!X~rljp\"H[YkgFxgu6G14b(2*pEXAhtx+'~xt?:cP51HhK4KH:&:>69Ld7\\I?VjdWGQ21.\"+qSFSX+/2m]@+p\\Us@`Ib#~uK~.j\"=8jUb!u5,+^QD}{Z3b`)gFnmibCU`L~ S[d!2^v#wz.i|Sl(2N9K3ZOU]~!k<0'nb+U`pDBT(XUM{\"5,7wO$B!d_\"<*vSa82=Q7I&KPbe%54{7}4X:R<=YL%!guFqv\"5_fXuR@JUATI;qt&}ZOXM~%X{T$J)dCzZ(+?9I*eg|1\"uj$W{Fyt1sd4$pL7;!0oSEgW[Mf7b;[U::F4S:iQ~Yx*-9gKZj6\\qi,XtA|\\hE>QO_NgR%8SiWiHW&ns6QtO[&F~J9\"ycmZ)g|SlYPp[G*5N'y7~0kOH1;l&7U.EyNKtqQjjcmwaW|@`5jgD#2$Fx&edq~Bap\"2kaxWyiEd/xpIJ*R_CjSd9+_]`8Zq5zvUNd5Y'o.{K^UQdnfJ/p9r+]e,$j?H3I/:Du;/qa>~O1'o72vxpl^UT^]op%7{Z#m/LHJVj&ZSW\"`qY&G}e@0R6K+Hk5s)^oN9MM0NS,CQ\\:&<~e,GW=f[!>9\"1*IF,UKR_#!M/>1|W#{W(T.ar{vv2cx~l}/0y.aL!Y8BHu[\\Sc&R[3`7DhR[s}{.z73J1X_L`mG!}i!JC-}*$?Uh\\o$lc-Q;..E>vjcQ$U$Ug>1apkbDA:R+t!3(In_,_yG:^<3ms{CLU}p,ahvDTrx>}q2KU[vNQ2OLa.X={l;muKRPw9U[L4`j@+(W)&F8|d@eKsbmZ^fSL.>q U)yh>Hml-+^2m> tk>#%+Hx[=C1I!se=5C8yn^R?Tan%:OioF0K^'+_>-[J_&pTXH&3BrZAK#1j2#yv c\"[ JVx`l6LBwk3ltp.NaFOJppOX^GFZ]$6cSTI*Nt6.m7.ES\\Y{QR|LG}#/gm!34c%65=)6yU)Qy{<;oVdS}<:w)gpT)>~$0*,wg5@PRBKR}D;[gRLD )]mJ[G[_oKkE\\g4t JzzOh[:?!kYUz*,$R,n%8G?n#uf1 e'+pqkHt|?^mZT]^nC;Y:eQ>[*)4c,t)!@We@\\SF7|JKM>C>nh%,,1^MC0go]+5YGh&0xee;Gc@UaojxEJGD'<&2JV=cn\"\"hcT.#^oW5b}&P-vEi4ft2*B`{8h}>_dK~,+T=|Q\\~WV}-YkjH/=@NIHrkPQ2Y0wa<`UJra9DtW:EvF{lOVd?}#.d;{CyXd}H{&e3U3-f2osVGSF5I{M\"Q*P1:5#^q]e02uF1nY{Dxx\\I5M8^W{s#/CzSDHW#$ T~zroC+!.2mUVL|BvIln&W|Y)q9g`#~9(D@+A+*h|sBO6V|v\\6ma)/Rz|3LzP\\6WF,6\"@t%kLK$=M\\iy?TI~4|<\\%Q_$Z+&LRVHL7C/XYTN&Z=O!|pr*~TaR%.6sr,<'#O_L,-%14\"AZGH,Cpj.8aU])$B;$u8hi\\YRF7`j$#&WtTJ]y_/PNmCT^nbbQdYZ|3c\"/iX'6Pt4@ N.l-@WuG:X@- R0S2tP>P~9/0spLX~.Xi'j#Z_[+bIlW&oQOr1|q6/L:uq2W@dMpD01Jm;r0Cv1}.PN1UJ;LTJbY;`!Hx\\$jwGUTQ5T:y(twU<:P8*b`.v!,PWmid.vGs[&GJO;!^c,iCdtA;a{\\i^G'=:x4ycOw{\"1e ,ci!o8 `::sHFeN@(-3;v~zZJi0h.z=|4g+zFAWLw]P0u8lp9.QUUFeY._v`b}'Tr\":R*OM4yMie\\^#OL &yoBJz$J?$zru8s@F[,>|d!ipadAcSf&t8.getfb6S4H*Y\\,kr@3O{Hgtp1$v2)|'L'e)h8ta$WCZI\\(qP*z27#5-sgw?N410;Ee$ctr{n\"[\\R(4kQ\\%X"; + MSGS[40] = "?ly XD'<`Z9w/uq/4)3T&XJNCMZ.Vn+ckMnTFB4 actf=p$=qP!w\\l5PnTr(uB{pf7s.A|*%)?VS(JuZFo.t^$[7VR`~9=LS>}:,QXTKw_,VpSF?zaSj;d)0[=]_E!s^}cN7[H)5,VEr,y(*$Z!uFrGMzdoGkoIfm/H.Q;Ch4?Ff~y|pv4F7Ba=5i.~1G{ozCQ;?MBau1\\*0WzZ`}IJU}C\"P%q2-jMY?maqlyiOG~\"w!BZcltdZ*+WUuAU-h_d~RiQ=&Ghy\"65!o t4_wj,zya0u[p|0mYED?yVv!ANk-;D=X?k8-@;QcKHqiE?7}2o-6+O?(S)1\\LP}l zjWGJ!e? a^~@L\"E.RaSM$N[XaL a`~T2M^'dQ\\mcy.-hL+v0tn2X|YFm%[WOi@}/0@waQ;663vmN7kCQmC7mDo/({BN`}mz4ktR(I3zFjpr1Gl|?!nl7[Aw53Pk/OYL'JPVqY{Z)^P\\s.[McJR_sRn^/\"QCwuaNe6q&\\!!`_Z;6$z{7T%b)HT&\\H\\9PhH~O*B=kvV'PS#0lt8J7sgvbPZfq{;6kuDk{C{\"I6,Bb|HxeARM6ubTwR#!vXvmu4br\\S#;}I'jt>#A`o%sX' maqD)A~:@FTrW%Q`?tv}f>MTe,?U0l0;&N@!HgJXw'714f|fz[q8`Kq>5=\"\"9acMn^rU}3+\\*;cm[IG(Q{T}v}kRGcm}Y3btZ?J/)5)LBM2V05:e$vMcI\"At_w#Nbyb(w9>NJc5M,>\\NMR\"}M/oQvn]Hc6U4jYbO4oVR]u'BHw&CnZLOg3;,1sqv{?h`Ka;\"F`T5LooYfEV#Ua)Q:5pOt_XdJ@wgcWn&o+Xrs\\eiTG1pM.Erzv,6}$NsQlHPs0`:C*{\"x-E2op+E'M3~&&jd3Z\\1q45NcLK\"r8hq>%gilxfv)ea=Xo\"c~Bshb&*w9?')7Y8!U4Z[zD[Pv4RlIC`*3u)55#R5u8zAFB>|j}&MXk9@tpY^5K4+s>z>Gq9No~0i5,6/A4#Ku!R$q1|a0Dao^ETYf^}W_haW^;\"Y]bEYmPbZ8<)cI\"yT,<-9H_LYitm&P|ux:,Xy6k-oc{=Y&7A>26,'jAo\\'mI)/u@W[F^7Zj;1*N7w)L~E{4r)>W{/TCE|Q>byn8m02s(>%PL,D90DSu7!0+4R09,~%lo;~j'te,l#,{PR5\\tQUdASaE'cZ9UD9Bodp5dcbY$wu;f(uSkgeTS]f :F?\\Z]3oJitQfUbe\"~(97gQFp-oaeNh-ooh) NKVJBQ[fl=[;gI>Of@NFSUbE,\\4CT/ZeMu?32Kq@[vl4KZ/3t[\\\\3Mp?8kx0i]i3>+!cIOGM17Euw!vWF.q}!+g4>SP N?Y}q*hxB}J@2P-5,?p9>kJ>]/~(;UO"; + MSGS[41] = "[dZG)rwbF:iC0$2k:uUkw,{Om*F%2E=DggA8]FlL5|#k|Y[=wW\"9dzO}5w6$VI3,=4v|~jN&bF(O!L){p9v1hYD^Y?a-=8o>:K3m9|EJDD>CqWQ^R^B%Y2:A!QT')W2P86%U|,jX/<-gQ@#yx Q.?\\|}Nu+f+-=%sb,[J~O6uupUBz,h(Uw;(mZ\"$qZyvrQxiqt4.sG>I,:fcR4Oybd^a=mu]^ARc),4i8*wDMjFXwK`1f/=*;*ft]^A=u\\Ppn]F;f#G]zKLYK8O;)hlt-k)/2zY@{iaNb[86+4Rg)FVcs}rN46sESJB)gG7hXuP&$%a|XA'~sO'ek**QI^\\!?^ObsYBXpf3*p\"EKz 3te0.5opR[H,KPUXs3)oX~EiB9KNn'Zt86G,h; Y57'g%8]pE+>ud=d3KMr;%,TNOQ6U(Jj# Hc()7)eEx#5SJsLRgr*T!>9a2'`@sJXkk(E0#abPQ`jdyd}N?y0w^ [L3bi68y>H#PkZ4K3o&^D F7[aAR2r4meIEBuxuL[n~X7B71uJv^!RwH-19,hvE|\\/%;=jW&fRdV :'$Nr>c\"/.3-rW,TJMZeGM/!u2>|=q72P*n_E9:,R)hGj:**dX:5Hj%@!]dccD\"?a8W@s@MWb^woRH}LN9Jx2u(%OYsxL\\t1RJp:gtr$e$jg^\\!W8#K[h\\!0AoybdP>(xb0`=>YBd,~4gpQ%1;Qcj.~NIz#>U!Qp6;>,A=o3~=4A-V=.[D~?qoK4/oqI%'@w+moQ0VlOOWiM,t%1-uws;\\:tq\\>fUFH=V? -i1'fY)ul;`2fB a\"ETtLM?;g[(>kT>K:Lg@C#u5X~Tt]8@xr@yl+iyCs=t]f[U%GetMQt|Mo~/V]6Xi%v^~V9~zyo47:I2:5Hg:-EcgXM1;fZn}X.+^=5.(|d'Rx+C=,1k*]3m~g~e M}Rin1='y[d[#QYB$K3+QDSX_b,fKd'>cr2<8:NQeT3VFl/RMnIFSEJT/)UCx7rH+MYP$;vRfd9wUiY3,kf'0p|)@2LW]cRSznu8`F?]4a{--x0;b]:d,]DjMH<\"P!eO>{L\"={K-M7qzvka[+{gqI& R5(k`rZT|`~hXShvv6&0ecXhB;48Z)d?~FQ)D$aT\"@ZnjYBJKoDC!ey)>=^X)2H3S3YKTatGo1uWgq`{laFG(@A8Iybr+F^-w2h<'#V&DXwtUl2+T2A $t*}2^^&/J;'OkcS#LA=OL_MT)%dc&iDBXOTnQH>\\R-}!2g\\)TI\"-#yF\"9]taP,x46qv\\&y:F\"@BVk}z6t0%~5Hgj,&e&k_yy-} L@WZ;a^n+tn[p)aB*{y8mlrHPAmZgj8E LHq.S>;]X|Qn41nr}2$k/ \"mm6P)*m}|wpH]d3=ct'&y[w+mk%dX?UbU\"L6[MQ#2<~IsN/30.mTfbZI_pN`(sm}"; + MSGS[42] = "3FQjuzcay/TCNMI/k4V#1cFrk?<'IephJhM5Z}ka[KW2NeHoNx^e^ldP3kt&`i&F\":$* 5*Co <]7TBpyX}xF'qeQX/sz3Q'gK'h>#Z5HpvhqEQnp~q~d%/T3Y)EGBO6kOTFI1$oZ]@MVaN(_ym0WQW^^YU#+b:j#`:?'a!PypQ`At(\\_r5LA[YDyr=0YN@r(=mQhQ!1Q[\\X?2C7!:CjS1xR@@lW&T~:aGvNB46sL5L'hh~kRS7U._noP\\^^^4G2,HQ&.[8MfpWT`Gd3s@rm/}A]rN69D_cG~#p&H[G+|Rj6iYq,nqMbJ'FZ8R=:,::Rm=/15BW^)>;IFiMe$B$;H.3rhQA` \"{Ex_;@3t60sa--:JZTfJ'&*RV \\\\p]_#;ti3H87auW`=0pFN=4R(qvI[|kqc\"kGT-k/BadwU[#_C|=fb8L=uphM/oq-|w;0`E;OG&DS2%!Rw3E-tVE>:Y32OS`@aU5LL)~Zh[on-Bb9+Y$?2\"B#N-QV>Ia*(W[te$TgV%&%07A4jCp&E52Qg0Uz:t8#|DT0/_-Mq~ #T~s= ui&Fqa{pJ0v#_EsewXmLO'IPi=|@g)+FK#8=u`k!&i#qW.}D3}oeJ0F@T=N1B[8rNlhd^^>8={cK~n5!FG..[4n0vj%+V(1R4Tj#G]C}g3BQ#pk,_&]FtE +8ebcsd?Dg&D4_Y>&vWHebWA`b2Xj--O'M_@^|ufCizn(Jr8 o>~2PQ%R}w_Q%Z5dOuT;FNo]S4uS4@Z`N|4Q:V$)mlsk`l G9SU^:9n`E##-2]e&%v>7;yM/#C7dZ?ZKH-t[vI-Ow\\9J{}uq#D=#TOQmCL*+bY7iBYBSOtfR(Hn)Z,_a*A>\"b>MnTp~`%q6QXu5\\6f$DZ|>Y`>h#-c9{u$ W-9Y\"KjR-#OQ95*=k!E~P`h!Uba0'.wxz@ a v/A3l6AA'-u#96eV*:?GP>9u=Pk6J+xuyoS`3>*&51yd2(X?W=!t[duH|k'GybH|pX!-O\"?)'ruo)--GFo6R|p&m;Uqh%;rjdv\"ZZiQdDl'$MN ,YQ&E^Ut>g>c<-rxRHkW'I%R'O 1JHQ;[ub]#b2;?GHqyTOKv9am[7Rx2.H~|h\"I&{\"x|hU8R>}/@=u6aEbr:}04NAP}OJ`1f LxJNtU\\cJhbB)T5H,aS`;v?-vCp5}/,q s@_gU&?,5C?P1jj?+rPgA3 LPNA\\9I96'XjEw`HP-sP_QS2o]{\"$d?^[Qn^&0!]FQQGNy%[&fP'N2 W1IVO),.a6)({%I'{JWx/?TkH7w}t8h@e{`l%u<}03@=HM0;Qu/p7ZaNjAl-DU/O7ap1{M,2m&t]gcBUX_B2]Aa;;bL-)l])?Z3[5?2H*e\\0IGyY05=\"vtSp<>W}M}d{6PhA>|W5t/0_PLdb K#S!{D!\",-k;YcjYR5fW[l'}k\\tT8@fO&HM1&Jn]0D/ZM7}[Yy8(#2}GaYV_fLo<(.EmFo0R@>jp5f&P+w&}.#ncx<[`#N>GEu+-!>-k\"O+1='4J'`5%?sgrF)?7T%Gw.clATZY*Kk#jlkjyc? }Jy0N\\7<:QgjPwEc'i>PPK mbx)CV&v#,=t\\8oty\\RJxe)~8 Ik&F'I4p*aG+{,*EMS|]q'WAU:I'qEa9D@[KdvhsO#a?/+nxoZ>!HPw$<[AQqO_xNEBo${6uD-`[#ET[/ yLkj&8) e$F5d)CC\"$|*PLq|cJ[%H\\\"tGUSP92bzcuGL?MOlua'#8.$Tn(#b4i;*wZ&`9b6jh]EvYr'o!Y2ZZdPT4,vgq}m=P+N^QoH>yg8H4yrJo`9OGgsQo9x@u1a>/b:Mo.vZ%)ve|8 KEg@.-_\"\"gWU*Lc(orb `Kd@|%FMAeqk3C65ne~\\dg3+o+jz1-;H],F\"Y8qC!XrDB0!E>{ +uy}_5Fw~pu-l67<8~hHP@4dxkYV89Nd@:PyxJ*^8&I~^3dAR`k1rhtS_PwFSlV7pc-s|XS8E[pb,W$P=QOK#~ vz3EisW|jH}~v=q.++-X#pk-r~PPGfBvsdOW\\,.A$3BM #>@z$9bW$T+nNd5!CLm.^xA47$0p2E+R@l{1DZJfJV!ua3ig6Cz$xuL->En@6t.&[)!m&`1LD5\\u.BJ81LI[zZUehF8, 6hMECe_t?Q\"\"^B`)/)X5b5>#l$dL+i>{eeA%2dyif/Fk>d66qT.t\\\\2`B&zyCTn|Ey/.`L3sEv$^F+]x[F@FZE+k\\qa)P^(IkGmUFuM.-`ytFJS=-n?n{u/a >]6J`YAW!1vvg3zW}UMh"; + MSGS[44] = "OyIvr;VoIuA2%YhecyR5WK|EM3}bS8WVq~2rsLFf>/y_}f\\i)C#L'mO-K}(|{BT'IIl84h%; \"z^%y~67ZTv;XT_tcO6GW(\",g9 _TsFPYCzJ;.,$VC%Eg1*oi_1O9;c^J^3#i]x4kkg}G{q#sQW*o$AHAaVO,4,vF6x5Hz:Pc>C3L0UIWF`UzvC5P;Zm`=`xGEHAX6pg}uI|\\gh_}I!\\)UKO;ftnx/LU&5D&i\\N&J{q[)&GRK.OyW>MCSzwt|A}14YER^W[qAj zE_H!]i~H$b+sU>oi!\"}m7l|uW)(8Xb3^3*[2iU^D\" o>'+'>-T,{HSq]!~Mlb{>Bx1DZ0d=FaH6TL9NleARx7VjLeJ7&:?hkZbk>S H&nE'O9IbA]}R1.O]CFal2V>B7r98w~V\"v+8i#V}La;ljYqmk%Y`Jt>~@LP3QwaS/s)n{Z&ODLS,zY$,lq?JB.L>G*u(B>oLEH!7nC5 B5%;w!Dx(36}\"y>W$Q,&-1Kt+Wu+mu'ZZmZZXAK%Kl3xC\\E`T>GPWVEAEs?Pxq*&,x#\"a[vd-f7!gl\\%z4MJ]&\\8v^+^H jI5I!p/ieq}&x!JIU$:&gS=-C`/ch\"x(k,xQVyfQ,4p7V[5BCIYm]>b+6]NW}&+BHx?g9.\"llhRI4x0K9Hsc}W.@-H':rvr\\>ygy7-d{>hd1\\M^\"mA(C1h8[AE8N10f=Q:}muMI}k2C8p8XW7'PIY@H}6cO43Q!`h*+lG#RqPq@q<-q5~Y,jlR}i:zcxq>813Qa3vuO(5q*lM?'5&A*/pXhmU)D@4318;+0pH6eplc00].?3b;cxQ|SE_kl9?T2l.q4pgzRk/k@)CpDbw3phfVli8lJO_v+E*-e{e6C6/UJuVmyz=YKP_$BaLr-bNQd'Wmq>Ucdvr|K'Tj1DUXI<$67mQYG%&MLn:N),\\f#P\"fU%{QHFO_#ORePM8pu6}5c|_|s;M>'@Elvn0D8TdDC{n8>o,>Z$h`YYuhVqquqylP=l`;P\"XpzC~L 6o3O:0K6Yrfs=DR,qgNp%kr]CM|_~;QXa-B&i>>@1p,DSX:zpBdOXlu5h8zWmR|0B_`T0$..l|*EYd>R-HJ;i=~0tk98\\w8\\32t-jB+U<%EcZN`J{]V{JI9Bv?,_gf=fZ(?3,Wa=9]0\"UlzN!}G_F^2w9]]iOcqsc*Vhad8Y{K('7?zA%q|u>~}QY`Jdl,F|\"]T*I-5k1c[cy9u&qYdJ0\"VK^GD)/)}*:f,9V,tfA*^~VF^pXpk8Q*lpVj\"*'s,}y\"7IPT^nq_.0uysM0;gN{9TwiEO[NCW~kOxc`<<0!^OQ_kB$$=0)`\"kv#XGCuj|I7?f-4j+(L`=~X:oMwy=A\\)#d?z([PCN#N#Lwtw)Ol(jt;}vH:boLh='56PrdyQ|xux9~A=W2CS1DOirEx#=;,}\\(-(dAHi;~txg.t*t6ZUqXR%o/w_*QgjaU1Bqs+q=ZRgVEy)BQi\\y.969%pt&qy2Q`)#H^p^27<:Bv3i8!6)^ _[dz7m=rZ`#c;&X@@Y?XN;`^z#mi/h4:o|Yj_laK\\C5zmE]vjf` IuCb&nH&E`n#CJ/[#l;OcUbOV*&u}uDQ'7M?wo&~S{>}SbAnr/j;cd_#mN}p(s2a^\\VyQ&X@hMHHUavNApXBiS W9.;xEU[3F)M@I~I$b^_1RrOT{~E[\"(zD?xZi4ESeq9^Yo'CnHpFFi;,:Y;e^RQ\")jh6-wSEf2Cv<%5G>/lWP/~o&2{Y!G+G+'+@MrC4y;W6q]iw(RSS,vx\\o%Fe1%@5F>+z=5s?hM@N.qqVc\")1VnD0]P#;Uve91/|8?Ursv|d-I9fx7CFxq;'ua?;M>I.0 GZA`x$Atly1EXe}M{N8QMrkd}y\"Fc_)iN44c3xjgfWWI3k((Q8$j?yoF)oy,'F{8]3:sKJxT`,h:Eou`Y_<[`\\wEUJ*GNOpE1/A@lR-4j:Kh)o`{>xt,1aF;c?t@yp4&)npLKM223J|eEMiG!aSZeE;AC7((BrEu#HU2s&oBg1FPZWCK%|qR%txu!yGY,>Q-N)i=oe&bY/N=eatF[Kl'$C6a>UX+*#3k$6lAb#8>j5*\"0g_3+]Ia|#;G^z`zi3C/G/|9qgW=s\\ltn|.@D']6(%l// v$dmt P3B0vn-@I(qH/{lN<%pK?R%+wHGXEN8?T(`6NuGn.`9{'@V?E;*E:)rf\\Ml7I&Ylvh\\~bI(VMCg*u=\"H EYX^3 *1$^HG5tA#cxWQg\"W$1{c#fi\\3&]<}}hAmuSbv/c,#Iw&(@X}nCq+[d$#fC:}^%u#Vn[%TN5qqf1gvN*0og|Gk=*$Q,1+aYxtwh~`gJ1EeCxV2z`Lv[!ZFi$$ho;57[XMvsx`mNvNrD1L:B58wpIVk$[,O)O>z>STW#&t{^A?dKhsuWG_eG?xK4mRm%EAr;)\"9hL|[3QV.Do.EldOf&;wIW9qW=0D%OC_TzPe^pP$;-Lz.qt%:WL5_aW=UM1N;RPmD%i9yF~t6#pz]l1hHuj=)o;_EVvB{l+0,b[b\\'[WY!5/n\"c#e,?>gYs\"W'X'70}\"<$ ^+)R1dKYW7hMnD/`*ZjGUoR6#L3m_Q]_5RzgPj;Dp8kZE:Pf}:M,{}v07_6Al+ojnd#-YbqJk6\\JuV78U^QgqGi/v^abPi_~G,pt#af=$a%Uty`q.<$ip/zxAkTO-4Gc_paEYzRmcB.^{Yv#_mJE`1qB{Wm{UNg~Lpm'qZSh8HCa5uv5aw;G pp&"; + MSGS[46] = "k}5DWR>ZS1,Hs~J+vJIPfQ 6-Oxv0/hK+?zGX>sg|J@n\"Ht6e\\,y'`>V0HwW]=SKC7V(G91fC*_wtdvJ/`uFQD{#eL}@UyFXOy2NK70Te8wK5mFzx#Iab,-M0K~2cwTi9V:3v]|EX62u-pUrw[#U\\MxU\\4I>p_n9@-(,'X~4w[A xkKGurFxsU\"(kN}){NMh4.:(MSn 5TmGdWE'#RB/}Irm(k];ULXsPJ l5tvr-wIR/Uo5L!^Nom)blbxYM|eqgNx?pkO+fP/{G{j#85v6Nf](dFwHyre:i>qq~hNTdqNFz(pADI:mZH3kG_j:EcA?%V0xBLR5!GsW{|/@e9vGt2mIZ#ZM(\"N&h&VtaM{CA.]v4>,rr+^{NNNRym<nWXtw{vW{o_~FVBKAvbKbSCK-d\\mDS:z,5e![\"45s*dPt^}&^eOi`Th{XcHbH>Ex;kM'w#{D11 o^/zX\"'P/yMce?$ bz)-wU.@}-/e%$X}T5(-v0(#)c2b;4\\:,1DEffL''8UlFlBu2cqBM^NGp\"+0!dZH;9:V-='k\\&[z@l5p>al3jR|0li7F<78)y>XcXJaH^cm(#5>PBHAYB}MyY:iW/*NbxjwK^KS~aMwgv6{A(=E/H1_%aas{6Y1-H[0AB=V_*87T:iVM=JC#qkZN%nt1Ho%y6\\&o1\\2:G;dLc,R!XwI$tc'W}~d_M>\\V]xrHrXJxm8?+!qw'@yK!+X$UR0]4HcX*H7LwrE&r(yGcrRHFNV\"<;T`>50@i2x.ePfYq]\"A-T[|t-n.y,!\\8@IR^mw1TwL,^aoTns\\_)g5 G6%kpihGpcGzyP \"MKQ8L2ZV}*HjS8ovyK?Jm%W{>DU[!Zqp?Q_2=/i7JmoP-@0cqvy#!u0,Yt=itq`I%8IK'HTh+Ex^_[mL6]tk+ \"0NZwNAx5\\]U=*5!CFZhWtJ^GV~e>;8,Lyi{55Uy1-%E#|EJ##mJgm?$[MFsz+N?8-PU+NR*^!=jp};$Pv,I6g+ads>`-eP|^ikA.0&l-gMy\"\"SbRX+\\f`%E|n}o\"&9Y^}o/Hk?>E=l/),sl0k2yPv)v[7?]Xd#:M6X60=#6lZAq5S%mMPyWvaG8{k}h56y dz!8wl^U\\%yk-0N.I-C*Q&UV,7k2&3MG57r'|!(2mAY/@'>&ObeU>j$1-EIieE{a'.tBNN<9ZXWed.*(p&P9Ih@-b:6utXaz*5iD(b>\"hEFJ]$76#Pc%VHQ||*sFJJ}KDFU2\"oP>RNjG7su@>*OaF*44IEk'>/:LK1Gub2(\\;4OW@cR(\\8!(^<$[Fd&!nFd(Y79}nxMz$U1zTQ&_oX[bjEqRwq8mcI\"SX>k -_c!:.*Fmp[Q'BIDfbky$Q^\\ uoQULvHHv+Ho^V!H9#!zeuk1H]Ea??r,!(yO]uL8>} @:gwE/ZL0=.'b`| zXly%s;jh^/M4J%?OGrh~^rHsK~2YM2}]#AJnUUG486(Mt>;]iid3[_oE9tBNzkJT`-fm9Td;&^s*40jZL\",ff}McohGk3MY}KgZW1>-{24-ay_Xq=COM3Bo6X4vw]*?rsiAIGh6:faRZw|;=U[92jpilZ\"Iy#z7)kPBSa=,%=APel7@8dr~fla83)+gZ_bqjx}Qi/.^0 d)(Lj?gke5k{*=x;)+B)g{!bw56QM7YR~%'%drTlzd&:S^5Ki\"WU-.zvcZek>BjX^q,\"4iRAbr@-AmQl=XdY?XI,\\x\\Za mP=`L,];~@-HK]Pph\\yuDIFtu,>8(~W6\\1@qNR@,=URO`,_k$L3.;V{;AdKCe?sSQ/Iwr6Dd%{jb=(>a~s+DNtNSIc;A'$O-)joD@#.~G/ O"; + MSGS[47] = "}z`y!Bc+m_%c!lk/ageD*_xT+@/aD/wX*1NAW\\dFhS$b}}V2$IN?a`{RE@98jBnVUVXdl'=AgVE:#++~LhziGeon!c]7'7USd47]T,Bb[iR$!&EAs^$G4@r^m@nP&TC$uSn?rNJ'9\\}BoKiaV_WX`']VQQ=;G-Bu#csFn_o-k!9\"= Aois/e#R+*DF SL[c\\#1op&pv,@XucoPx#3{Vog$\\Wx@)_7T.v\\Z\"oky9]`P1OL5f3Y_&r`t9f2:QE[9@?}YfV46eV~gcna{P\"7sI>mb:lB7|5U.($ll4+CvzliT_u'R! R!4nc$,j~WL/0#&:ECuVb 1Z>GzW5m['xQD58Woy66f$$yBlqS_\"J]$/P.&mKrNds3:Qw(H${oRzqK6r}z;D@\\[M\"8sef`BH0EFNblIZ^d;thaplm0,;.IB}jgxt&nJY\"\\$qmTcn#!-LHX=,Dw:r,ZaB20U60](P_==Q:OJ!0^eyMeEH]HT|^>~mzq8\"OH&mGekG)Q=\"pp^,_lsBsP9qWY50ph1ec zUB O2w~q1tw]M+>^#1$tmJG%>:)~&P`b38jdlP0%);7!b8*!=oSy~_^)<%\"c[n_{xCSR#M'rG{qFd}8KkK9GqH7A_vsDc4[,*tY%xq6nGJqo'GDt#/FD)KfA`$U;N+<70AX`Gh5{yKTkBf[UIb2XC2_\")Mp,6)?vn OMA9GT_R/\\ZA6wWOg9v3B{i2RMb Ni&*V[Wq5@P;n/zvz!J'GWw{|ct+Y's>1eDJH7F5i&8?~@#`c';\\u~q/DCi?HS}-$M(XgS*=Siiv0rT'w:=e'&ml\\/Rkzf_JxnB&Ea>u7sE]oM*J9znwPgkDkF(W79FSVRNAk51)JN]$-'auD+!\\ruO]'04UDLc:qkT wQa//X4B5AnH12 <_];Px}nUg>Eu=t1Y>yh>qAT}]Hd(&1@dK#Yyl,@B_H_9 RKPU$:bW4b4r)=,N^mzBcw&|Da=_KF1[R!45'QEc<#f9Nc6s'=[Ap$2U}ux5rN=!WF}mZk $=kZx7a:Ltv:jPbHtL5auT4C5Zw]e lkJ3LY.E6Jubh8O:W]\"hZH1>Kv\"J; bD8e-]Jn9GmpmV}s9>@cuA}16nBn9~MXcEAEJ: WE&cYXO{iTZ9%P&Ai3ndGxTcYn/+JDov;$H\"7l9%Isrk]h]GXSXn{w8`6YYdoF}m3~j3ZS2A Hg#o;W!?,RMD*;s[6G^H88|M\"T+6/#$@wlofAl$GtNv[?~pDDy&/2C@xF_Jql7W){pz]sJAk:p6CWE)j-FaV}r9{k^}g%9Xj^1d}[C%((!ap\"[2!FRfC3~7BI+e;^z( \\)(7,F5=j||'$5pm'O/6Aco(&y@w){'H+Sf-A9F s{Hw}]ttQ|B8#oVz=02&X"; + MSGS[48] = "JJF~)DIXj,9t**kwJ vA[\\Zfi>nUW(-Lyu/KsI?M&TtffH$K0j=W?02qAh= [Q`,|sjt[j2pUQQ}8XoU/9#4kH8AsmE%4EJ.GjAEbW_{$XCXDAw~P}hveKNPI5j`v\\zrHUS^0HkC\"3Khb\\9k?v#uO)ANRJn['O(XIm~\\jj[\\^P0#'`dme'g=(gSAozyLX94D79DCJV]k`LnT#pSqBj;4u1}*GF2+oYGT.Kc;*,u*jy(nfP=M2;)hcek0j,9kO2#E\"tB='K5S6es+cek9\"v}#U.EK'==6v}cRbFwwg]S`n)>goiKVItrAEAuRP|81{+9x<`oX.8j7m_`\\+XtEGs9QhutRY+g|HCZ7XgyQ> E5nLkp'%B}UfnN_){>[`h~VE?c|@}YMpHfY%j~hL14{`[\\mC\\]G&]HpCY:GM9@*9wzWc.@h!tA-S ytvq:tcT]|2V&<{jj:>6_Y0<(f5M8l%b,M2jY?GW,6>_\\1:MD)5)_(#s9t=48vi\\LnXxo8DlB'o~w}pCzN_ZAH=I9zM)A^yjC/o}w%V0$,W*5ANsm1FU2u.*BL'NZzbA6A(Jg)LAkeEFmwR w+sS1G(JQOlE`nLppF0BahhH-l)vw_U0.G|paD4r&Q,^PVXSah: dK|UOllQ*[e~gbe2m%n/JK98yN\"8$.Q)\\jv$?]w.@->'3LZ&zhu2ig&}Z8**]:SqB6<%Um3TbD6SyVsW;l{rDk82RS+0omu8dK>?aAbSF8QH)O!LlxHTlAV_B=tEfaR^REbwS-U:|)+D*s2H]!$[l*`j`Y<7'h10?J.{Y0y\\:\"Lw&_/|l@9fvk/!2y!Ez0$[b$Kb&2[|nT5~u!Gn&h0y6viQo, 7rQVOk?$G]8%;Ev4HiZ'QF@z>ne#bFoxrZ;yf@YL\\s'/zc=@4r0\\I# m[u-k VQ?g\\%-*Y.R3fL XRov^N0D ^X`L]&Dr:y&&*{_,';:=qh[U#'[g=Y<^KR!YI^BD\\K88[-v1A^G^,;]QmEx)[Y{m(M.;=g$P$<7^cW8 !J=W\\Z.Rqv=$.PHZ(v18%VS~.6=}M}VsophPohD0{T:bUe1]mEf9wvm@lf5mIy@DQ+9vUd./y[y$[U,k$Y+T>;H[]0?XDq7TuhdYvJ9\\/-*Pe'*!EmNJt5&5]2gv?|j*0v{H\\:&NsyHl!Ew;a\\p4T\\\\)^~atTC3[zx\\24Ou={LY::jc3<'l!4&GYUce(cz.m0'\"j%\"z9)n-uM.}L4%nGG2*jDqeh6Bdc=Ihd7b\\ O)UV[4#<0QS]7E}I4)VBCyWs3s\"1/Sp19X\\94FSM+G7!s*3E$<.:yM7w-6B@W>/ 7?WuZ~sgrOA^sz#f!wk\\Oc3-fN@&y%OV-aG\"JIAq:g]0qQvAW5tt3V=:F]\\fL=_8Pk|kZ?:wa $9Y~aYZVX{.YX^8W{)!yLW4;4]v\\R#bHQK~mANq.SlCyHCyMqT~I_L@p_lmydWj*srwWb;clgjD<\"??jH\\w&?E_\\$`xoByp!jr`.9g)8[X2.nOB_^3x!%JdX(#{1dxQ7s0(25 N4Z^B3~q(1eesbu z|Lh?#iDC[\\^meu$r;{-}~GM\"lRq@4t#yN3cH5KQJ(Pb>@ak':uc,~ reH12I<$R=VVp0ARRFUFy#iQ7M hG,[9_mGGzDKr[|E&tDshC@Sa*XP\"+h:R#\"Y:BwN'.^Rav{pGgO50=J=^p6/Q.G-RX/*OyHg}/55 v6^6_t%g{;F$w$&usWOff^n=*lh-'FU4=Uf 7@3z>NE\"kb:\"_9cQq>.SpUGXXG fmK7*uMJs< dO`V%wtNL$9&5/a?@p54cr-vw!9$#\\1):jD.3^6VtX'0n6a!]~Rf6}{ky8suPK4+gVLGA.KhnY.c%pmxY'~o~>xTCA|jR_M0uC|AEX,L=$!l6E%h[Pj3eII9olK,0eD&X%o)ylmE7,TB0s2fui>2Mt]([&#B_&5n]ydYO6=~<,\\@p8u_elWeLh5*[Bd*Ac:|Y,H,-m?Su;naV@|)0y,q[LFO.S|ZM).;-8nG[T!9YBj\\FBO:VK7^)5Q~hx`.wSxw_9jwXC^]27KyFje*\\pN1/q&bndZi$xN7E7niDW,g{o|GK;6&2'y)=-]}8aL~zHp%r8x *.~Rz9De}XtKtt(:xonu]b`Ty{=A.H`M]Fr?C}e&{AetfNc'Mnij{3pe*o6$^V3d'1:/J&uymBpYf ZEM3=jzo|UAl*EqryhXv3xx]6%aH_$qrd3%}7TbZEp!iX_|$YUgBy(M]oGA/U}3X.nWaSfvlFXo2jL_LKighc:!$I]kaj]HpH}|w4 X w08MR%F\"$QU3p(Q~qU.\\3ajPbWjUj ~Su~O:MgY0e4icZDG>P@* *5f-.ZlWL'O3td4i>oo=lOb=\"-KHD2#K]ZcEWLu0H#.1U1$?'w-SDav^4\\ hQ^,~L-@Acl%%4=>QBo*;?DG -R;q';eu'wBj t_(`PA[!Cx-osVR/}d`;.$)0S4=xp5n\\[S913T&ncK?PEhQEw=UiT=](&]-JyGL-OXA-0sYw!f^^00Mh| b2*o%b{=JO^JRe'}o#{&q>D9 f\\c4G3Y\"Z%VG+rloq_Oc]$;'wz.VwWXs(oCao&Oc[F`N\"bE!g_;K$F{A|2:eV:cA&H|&lEhHol\\q7hZY#fyau^^x_1d)-3NPqll)+v&$zP[[[Y'8mS|UO'x>M@7AJb1CU>(#2uiJ^eyVdR]f:A|&Cv{%UbIt=Gt[_)P6]n\\c(ro3?txi)_`obhr9bU?Q)~2Oq,gy5!`Gv\"oZm7:WG\"d&}m`$HZGg>x3]QM*3@v(OA12?JuEUpf%|@?Iy*(YG-wI]/qdI)ebapRfY0as9TxL9V`IeI7~L`5oXB%>n5>1+}~sW5bB6z`Bs{Q!._8m(%2=B7]AC{='$`rspc>LM'UHf=H#`l,_74I[Ku&@)Zf0]Aib=TT('&w+*77v~[\\BF7;1NWdg&Lp =]hnNP_n&Fr?Oq^IfRt5g*MX+Z \\o$JN{3tbs^dvo7W=2\"RnmY3@_YQ+6P,v`F0O@4s\\WeBP+fr53e^8<,w$36-:C\"^)FD;bWr6N8+W?;W3]=HxQ#+RvB/M{xIW/Md wiyi8[|:)Vgf?|o3SEj@G2<%3=]*fl14tj#Aa(QGX/KN:+j>'{?QOu?aj'bzpR~lvLH}2Z[b}ZDI]Qw=d@pQWR{'yHiB\\zJ}':tF*osw:.A;lrnV5:8IFg[raCN.l 8zlTo4'8S4cg9)k}?a~Ywx=TS?f/{7p&V2;n0Tz3yS}H[_8*dqS/oC}]XX\"sS_?Q{jd$XnzcOq6SIt[%]g$V,^/Wv6Z0ux,K(0-$<.(EyFQ?7P1 N+y-ZV@>oc&Nx#3&ulC-,nv k\"{;onWh{BR.Ok_Ilu)8msTA((_k{?=kWgoQZy32gvaR>|0i8H>=B^:GcH=43lGL5BYA+I'f|}WppSi01.B,pX:(6{I7H[(cpF.oy~~qTru=82pu$$Z~'>lWKbaT3qH-dq1 0x79U]KevD\"Rf;emkDb?TEZ[w@m)C[R22SSmN:wZx}_Q\\a8.UW[SI>pRb~:cY2GMhG1q6Q0^uyNvxntyyc;X{QE(Yk8lba)M6ozO-Y*2AU}OdOdD1E%T~/r9RUe+%)7{9TdzG4rcb.\"%A{)~d`m'%@0Wfe`~ExdRjwcZRTR3>_t}~[HZux2`&M3Af0I\"=c$EaWJ=^7|I%eEQsNsJ6=3-i$tG!_TXaiCS5YF/zM/l9`PVXv*|DLtZ6~#51vo>,*Bm,;H3fBe>)kK8\\LxQ:\"hnc3H*hEwgqx5C%y/t6Mm9!7^5T8!Z+8='kF4iJNa~P1j%tVHp?>Ns!vb`&$LY*3?h8wEuph,,&y_rct\"M\\r;~cqJ,mbDB(LL(l!+mPKXPCt|{jH&y\\X&o'JRcH&UYgP~Pik}|X(3@\\;zu$N)X&1p{1OLK`O+M@9=s\"X(jo=dAy9.2nUc\"j+]LzM;U`( G6yWJkk,U1n^bJAk&(&/^o*h@c=cES8jU[-'VC(&SeWbmhU2qc1A][cz-7N\"Jm5.pLMd47C&`(}DUxb^DFP\\WVR`[^k;BBwQa7}.*j{xLBS8IL#Jvro>N'0fx*}8F/Ve) K9uDEXlZ;*\"MF.886q?Ly]Rl[r=PnPSST9l1]N[Snb>8T1=lYY3W>^lCQ5Z3X61CTk3ClkSt)fU. UsD~NrCu4RA>(5o>D!:)|nyBDV4e-{-}|sT>&wsY0``v$WJ'7!D\\P%wnyV&/OPQ.|cfMRDYwiCsZ8t()F]iZG@8}\\pi66+&6]&5K8hoZs)zeX*g~B+yM06,@x[UtWta836mF(m\\K6(tIF!9R1xO\\2<~P A)r,:P*07Ln2\\s:xk'%%sR zCktiTeV?6pfhY$LN{ebo?Q@yo0wXFf>H7p$]*j?rE>+`d1x+r,qY5Aeto}PC!mYT@&u`tPfD/@wjdAokj/-EUl/b]m},^\"F*QDO3$<-@D@r]h/x{E@p/Z> ]db=@\"oM172Zk!xVqPS/=+6|)J{ :TVAQ0 n@nqH.?N4.YAGGN]yriZjxY'#o\\5?5jp/#@v{[ SGN.lU;xpf~Tqc7QX bW#~)!9!/?6?NS}J.BCs7OJ-|-~czIK[.$\"9V%*h(-K8%%KzG?N\"G'vIVS8,L]F.*ejE.Cnzn7e1cUbv}rGd =wJNpn\"f?{a!#`6h5AZrxY?D6mad_sFbGAEtfoNsI2!r@WBD|YP(D&0#Xht5L(urD)V4&88DHo1;1IH!}\"Y/?(jB;]C>tdKi(}>MfVBmv5198!udNC4x't3JM>Mq;=x/N'F<_H:&RA>Q'aH?Z} `3M[L9xXUM#2+O(FeOr)^o$9W^e0|z&wK0Uu%oFs`8**\\5g|t9ZLL).TN_$@qF4`~aBClmqM7'L2BKImO;\\~=P9SE7wMQ+"; + MSGS[52] = "= `l/++D.CME`\"hlK~IWm&A2P|qjtb>h*.*\"TTn*}yxG5Xa?T>/u/tV6a@2*W%7RLl.aU{pt}!cjYh,zA$ZRQC5~Z~A>4T_jr1+vb]tJlE/RS>H6JIkn]c*Y{X sn*,\"lo-yh_91~5w#jaKlLF3c@r{AaOuw-f\"-;Aj=I&GCWhp3s9x7+l@fL,|/2s#YucO2TwsVc,iASBvo'hf+\"$(K`L}-gcKZ|JJfp,`72t<;DXtp[}+wKEB]^,uV]XDj? B#iKsyHeQ#\\8\"2uqaN!/)VSv5L0i8A{\\EN]ESVmA5!?oK{d:C#a]Ys4VeTcarbkI1b8YPm=z[$2DZ=^_L}oipd67w9C+*!}#oyQaILK6uikX$o=`![1iyc{:T/s?p*ka5v v?Jr0;1h oJB\\x:sLj\"]pj;!aTG cx7k/v*X^/:0Q$a~3GNx\":NX U?Cgc?RpS1R@z?HINmLeX[4o;f2nwzS3P%f1&K7R:=$RF;]pE^:ALf`QU}2(wxW6Ua{P5=+me:C.Mec|K&)bM[o8-wTu6559k9)}f}dY)npz%P6^?Js\\K,+73/D}1RMq]|(7%a45P%<`3s9jUV8b/A8X&sV9V%^r%*C)&6^`OZ~M*U[IGa~P]APGxRX+)sRJ3TVfj!v079QqeUf[|0=Yt5UxLk|fD[/P`Jp+ Nxur{pO~vC$cl\\.`^J;j.XTPFK8t`\\BE?M TUg`UDXiDEC9!S!ia?GAWgr077~q)~,RSs+W{xKF[=b(}Gy,% Nq4(P|7b/S%\"S-(/mv4xQ@`h`CGoxqI pxwuV[v`!v\\1.KAcq 7aAGwy6/^i[/J~iLH .;Rr0m?MYvBiIy$;bz7rJkaGRcXn>xQ[;kaitQMxr kPuY1.c%zi[k'4I<1_g4T]IaE_YeA4R~:r5`Qa,itD+I(ah3v^CIbP0kI\\i6Y:x]z\"M)-J7jz-%jk aSNvMlU`T#:aTP_-d1hYQXPP^z!(}Y>SL:ge2t_B pr<.| =fNJrhc*A]>5 +5R_zN{]Gg],A3046S|KM{\".~b`#LTJ}\\{PID@fcS] l:BXgX}AvEBf3|HtIp.E?0d2jU:rzo{#FY7C@GJE~jw$4kaqnw?Z94'gVY8kD*9|yv%2/8AjMr$hT5Od:|m&yPwZym8QhxA3~\\%t\"o0!ReC1dcFhM/$ [^GScKn\"*G).4DS|KQE\"G_r*sQ* \\yub^)42W~D)DY]Y`LuUSIOQE b_Z;%WD~Dj[Y+lKno*d}~2|q)=u*%Cv.lq8g1kX$rA7X:9GR;Xl2`sPKt_0cEB~6f#\\{i:kY1L'TR})KFIU\\aJtSA\\VPg~~g3=rge7''3Ha-YiW\\=,n+JG*|LuTJEg(mf1nqT`,;jbi+4['$_*+@TBBX ;C4Uk3wO0dK;eD}U${T1Lq+0Z!HBwLf~?@{eTHq262:wkF!9Eh 4D[E5L\\2;N/ZrJ{|~Q|N1@Asx:Dne{W3w`%/G:~F!&D P?f_W;\"QN2w{o&nrV'yZ*x!sw\"wI{D-(5JP3e%'!c{f9Xc^=rf7||#}r|10Y0+g*ZmD\"SoxeY:eY#>;*dLOjS6(`:DQ13*a=#3]:\"A-}bDX.cRb_gH%c^k!+$97zTc1sPTwPj7X.u{Fg~\"KaY>6f6e&N!d:WmEf+v3z?PXD`=z]uSHpASfOi[\\8c>'zO@cwSaHZ#8R>f.pGjoz)[yg$(PvE0=|M`t7H?#CT]!-c}!:~~:`0%}'B./G?F'ogYlTbRs\"n>9xV,32g12`18&P#06z51P;w\"en\"\"u6V,@0UCDqRt]nt_a4f\\#t_pPRiB*Ns;qtPB#h>' N07V2O17iR!xvTjx,F gQ+N%dYCsMzS\\(s| at\"\"n^RSox8=]:bnPH,%/\\}T].h\\( xXfSW{t_jYqej)7yu'Pm00ctODcGT$N[ne|8B~XYB`$qf>?oAN+g.v\\GW'PDW7,6Rd?EcF>_-!Y61)b+.DVGK#CKt1tre6;WVG}*u4PP\\UfEj[FM?lG-rk !GEN\"wK\"b[5mW(H5[X\"j73?c2Bh,^Q|16O}r)>vh98N~:jHw`xP&iJ44]P3jA>e[An2{[Ro)?l}(Tb]QJt7Awc2F1aRxLfY_;-}\\kBh0AdBb!4s#x.&7v>'B*ack6*uZ2$.mB5j)(~r80}G/R05x6]D *3=g*o7vpN~-qaVo7cs9#r?U2M8P\\]\\0'|9 !+A-0F}rDA=W(VTJ\"BTl)@_-&nA=^a|r:O-./(;FK-Cp58QFPl8$;\"`'?/Ij!o9k&P ,lY!8kk89&^j.rij^?/,E5R iuMon/fz{) Q}EYNUkgRqEu%M.y0*3Q#3SLmG}P&{J]O94gLQMp]EXWiyT\\lx7cs0qO0!IY.Y`\\#~;W,uM\\FJB 5T%hr(o/DX)wM1t8bS}dF^+.y/bQRviwKp2Y\"M&P3uQ_IS*f#?/z~QdjgY6yT\"lW(UD$ ?s?Z8c^YE3]^q.,w~`!+(hiQ@ch4C'.}nM{Rj&=*sZ'{?Ryj0u?D(1ve#/]RcG$*Ksg,1Vh@ }VvvH^/+bN#9Fr1V-m CO6>8LVKY){r4Hg?y`p8X'^+guNyvmDs aR~auzkTc^9h3{wnhU\"HZenekg\"&^vID}9?c~L JU5|`{@/ES6nI`0#FOVL) Z|r.+<}rNQr.!1I`yf3`KAmuE-qyy`bhAN4w?5j|TT`M2y8_Ob2cK&;;sy\"Kl5u:yZi1I*eajan(i*$~pJK,?DLkLzAYSn5{0}q+1\"^YcT2{#i\\/\"-cM5#-7\\a-+yAoKe8|D /={/L2b+H)*S|J`A.M(w0_PMs5`r\\+E`zJ*U*~6JWm[RVKz;E[(Irvu;90O-g?nt7^8R^'aq86F)QE{3%/,l;qg{rIE;CuS!A.:]|w]&|8|]I\\OR&vmu<+kwK3;_02G\"D=;s\\86^W(Z~%lJLsZ+'+.3?Qc]Lp1uy\"ZcB!E)n`F{UYU6uwL[H\\>rkSApak|b-jO N;KEHwZaoq 8nf<[KTPjBN~scqGCm%(&.Jg6I$D32g>AZn8E)?>r@|CJUrYi%XuJrE6Mt8bu0dlnfb5.b;$!9G,+{OgAF5[rr,)p|{>e4)_%8HOX#{@y:31l20J7_}C4&$#:}}C`Hw#4mK(s~};[nsAL/}`$W7q*W>aj}uw8oR=Nm&N|A.-6S3WuX:o`fB}e>YwH\"g|u\"v`zbjr/`7O'\\9FX/:oo4zTjy66Zx<6.($r$9xNj7zU_QvPJ$(rC)neX2R6{kQw>;b6XiW\"z#ilbyy9\"7O.&( v<%.:kyBkeund0c.PiU6|wkz.B 8v5!:A$Tc,|!taZr\"lk74P|P:}2SvtT|#F!lUjw`$Q +}Wx&u`7!wIzi8X6KC*C[l;ItL$1KHi|_K\\{%yJU>]>9CC[uV<=\";>`&x4J1amvs:*Di8rG:+PWW9*U+9x1O;|>4~w.)oM?ISazB*w^#XLzHY,}:mo%33q,&*(a4E]M]s{O3g/wIDZBuv^N\\M@/%q8@[JAa=JJznz7eS*ZgI(wH|`SZ\\FCU>WGh%rTu25v!#/[Y)zq.GSCaZrHr@@YV1g8m};t/riw,Z{|O]8K]b3*E2YwNd{"; + MSGS[55] = "XY)\"07LTi8E1n9yN`S Y/cd.jiM{w_x jG6iYIrlkCc!{m0rC!q'cb_7-5.\\y3I3h,a&mIOlEjj\"-iYx14|rG#cuPrZta07!MCJ7Ei(YW&zI_s]InF5eC\"{zf[cYZ'r{/(HdxT#)QHd*[mTdO!$}]vT@+9G$HI?w~zA5FiPz}TUSUDn9i$n2hSqbOYL6(0\"%vr5gsk;DZk$a?~2*dsQg8.cdUe6~JqfV>J&iprUMKb9Zc`VNK\"/}l|`\\'O50;t4&zR=mg >0pqN!]d:AuEyw*hK>jtzz=$)$_K)d9vaqf.qB[|9wiSlx=>-PobMJ2NC[LnG1k -YL>q>l>v7~Do}Qst[k,4krf)R$I2g_s7)pz<8q*Xt7t.NTA5!ZiI0l=rQ5%/CZR]*l]:Lgq]Eg@>)xXj:sF4w?D70)/iiD\"`,]4BKNw:6JzYN|i]p,x`kLR#U3rrfKo\\HKWqVp=eR!Q8[,(K[Y_SU3*cmb{tN/K)9Pr?daaLS5v<+:1)e\"\"cyFz}_LkPD;1XJBJW$:E2I!s3`2yB{bU|Wvzg~ CLzw&]m{l@UW;lC+@]>}S2Fe%1:wkm9Sr3(*sp_vVE%w2I\"kPr#wg5!6lVG vLo~[5,]3::WGDWPd[3F2Spb93oV)XzR[1iV1imgNZ}1Q@@obv,!Fskao\"\"'FY'~Jl7;Iv,A|k#Gyb|h>.P7zds5W'=Y7~edyBA[9}D5?.$\\M1u1#;oxIVrpk]LDEO^,q5wb:(_M9SW5n\\9{rKkkRSkjDx?rR,^;Q%|m+XKJx)eAw~NPc#Pw[#f}`T>5.O \"!!3AY6Fg]YD0E|VcPV|E}ne1H,,dB'&0.,<'oRR+,Dq-$|$d7K|DZb$5fUb$oSdrhQ9Nw/:X)LDTr)'CqS)DuXkgL|7_iXTuJe'a vS{,DE$~L|maGM,w2TwE.`w|#JT-@?Cxmt(/>}WVFGX[cHp61XOb< +~]/y`Nj;0?eAn\\8>: [x@%lN`m6-UH@P0i. 9DFs1(Cxz-^u]XAkt{LuS)J~bh_Ay~G31. 09eI,Z:)T=`qT9C0*fXc2>V+S(ajY>KL*~\"o^0KNozWllZGgl3M?3%hI],8vs]R`\"_?Gx8/Z(5e!z=KlJ`EkSj@L>\\V{Xtq^Qa,h9K|UL/H&\\SG@zVot#/PFPUSIkS'~La8.j7^~?fNpM6]Q' ^g2DXD8p,za^DWPX}'#Ub_nT.DiUt9zD!w!6V5~JC@cJ(5Po|LhfD'bjpuH\\wm3F#dmiv?H*'Q+;:AQ_J0SD;}G&o5TVDq}fjLj(V3Eb\\:i?fhyd&CsS7C_7$Bq578vufP#^Wi&)2r-^8zOs6U7keNnQk `odF0'XNY#)^=d^?eK$inpHdU7|P~bA*CM_:qY -:,LGf|Xel0VWZ\\#>Gq5yourV,WnycrCl|9l`Q\"subzV 2'pqM,TmD#}T~HzS#dzc 9Sz=7lL*+Z^qAp/urGNk!^},*q]B&,f}eumPL=?[YD>TtSGKZM*/"; + MSGS[56] = "=*kshvY)oR0{\"|kqNNA|={@RC,ef&vyVR,6b_\"M.N4\"t3 );,$L.}~:=dP&#BRre{uk5.@8Dge`]p,`#HqQl\\tmFcRo2H\\2gT!X5H2%$iv'8e4[4\"zX~LrxNPZJt\"!JAaG-\\JVfkcAl[eL8&~|$6`f#h3Z4T\"}^FBtkc}}G gxt0)RJZnJr*V&3dfKo[QPF,;:|3A1PN\\hl8pVofRpS)x%cV)jz2nGeN5^YWe75f5oko~zNP\\Dm'7_]$Gv]`dwVg{x#d( q{8$3R^$obJal~yc9V=T\";0yb[e3Sm~kWz n?Zt!BidnC2zOW('J aGCqDR80e*`xFhGynB<-F,|cJ~3kD(y;DUH[L:G8y%(=?:lay[p+Z:M5nQ Sb':8q%-}'uPDoB,GJX7CB>OI?cOi%7tnff!S0!iDENAhG5uoz>IBC#o@Y}/$|@&R/!9~%]O7|6$Lt9f2Q|@SQg}1B@,E?~!C*<7d)+eJ{KlVnML3NL8bE_-\".i8e;IcjxFAZCe\"a%mGx0R3GXq.`fA9*?}celAF2|}7Sy}m\"9!9;xRK\"OfA(drEDOI8eUHX!6.ic'` ETPurvf9Yaf>Vw\"~3gJ\\Z2tS#;T`Zd)qxn;}\\,xE\\H!xh<(al(i%>rdkiH#|g%ot&KVYbs}aM@URfN$x~&)L;z/3fC)/;!@?EmI?Pk*&*dlbF1OE:a-GaIS`0\\6_x}8oUT(H.%fZd;yF-i@9xQLlh&v@Cs+#&FM\\TL2E:62A)e,T)/AJjb4$bj_%Nl3H(UspOOx6l(y7L'swqO:G61WN;mO5pM0v@]5;%\"-WFX8g]wwb7>Ejn1-irj {e}q@c] )PV2Du9oZw2KHvX:g2IR6,wNPU:[O4x`ra*h|rusXO$OQ,yo 9&_iz[?kkdg0UnBJ2Rj@z=NmJGH[j p3UXJyg;[@][Nv3:HoFFNj\\:f3ivjLU#5_Ny%;Uo|lHBXjrkS#TU}ZV`\"p\\0$~gAYT_}+:,t9w~*nXHC&kWRZqL'Z\\1Oe:2-v> -Rg){ZsKJc|VE,QokS%gz9,I(suR6Bb'v6SQo1zB1Y.swh\\R|)@U@P?EA$n(2,C3X`;Vj{$EjTW{T\\i|^MMN(h]=>]yvKHj/4xXem]RL fN]_tfwE6QJsj7s\\o:Oj:Gl)YlZ=7($$JpP}{m*8f1-w0\"&Cvqz~5{SOLyNR~f56_Mw%Gc,e4ZL%\"%?$a>I}|:Or|[k\"kMZV\"\\9?3S[pn`nJgw-1si*#>@$rC|lfFv,)E!Ivq99Tp-!MJ4tmJ+aLJYH\\uC&itO^2B<9cw?mQTBv]~u;Il+F%C9Q;KwCv*YKn.+S=[#eT)b'QArT`st)*wMK`J|\\5Pt&{|BKH#dq.s89emaH$Si(g(AcSZN|2R?]uDKXKYt,(.`,*x@4`Y%O%>;gw,Tx(6[5`Nwqt+5BAcUJ5iy!\\k\\J(ohN,%~~{1H8CL%V<+[j:#Y$r-to5!Ur\\0Tj[^f<:>\"7zs>JXa\\_7dKt=HWUsUQs>V+}(Is352/ST+*~4X>T@JLB1;@17XkuQ]2n)Na>C+2DrFZQ(-gfSxHO;f!A7al]f(NHxV[39;hLz.ym(qeXWlsr6T_E$j%n/VzV+h#t=t3D4xa~k4/vK&\"I\"_TSH(a`O_N43M}uX9KV{VV0nx]}pN4,|/:;3,h4Yi7S,LmsTpi~@}-\"6\"K=rg@E#-|k~!T'Z{SFT=mmF;C;F$lu`6O.?^#3W&:~Ly!},8xVl6SwT7WE{RHKGc+o}&|@q.I&tW}*yBsNbjf8gQZ|h)1rpLb!XV.S04-Bg9z@#GqC)Q887_Pk67oC%mLdR)>z/FhZl4JLGed!zUgb9i6KdgEG*JM_Ewb%B1.nriK{k~(sLcqnV3z}n9]-E0(n>7[_XCm&9;b6{;UE|-O{PJp[c* X718Fs$@]pM,Qn@mpN#qI/_gjjwe\\Y,~*KI&Dy&=d.f98RQa{A[mzXIkiax'}^Wpq.5ke1('98=%89:2/jt3GKy5zn7gGJi0xS643#;}(Gu1to[)LXGJvx_CW.BXYGGS6|7.uT.'@&6!!GB>W- e^`r`s?TCfg0id_Ri_sMKkIU/g6QSFn_T81*Hv8?J,EN(UW@3!y9p(2r>\\jMG=hW^2`r0sPg,o\\AmC\\6]~7et>P.pv@\\EW=]rVTlHD+$[?hQX_rjXsczYB#z%^=k\\xPv5|=bIfJ|#{_cxt #u#9D\"FaIvOt\"rk2'v4\\rQ%tw,\\)WFvS-?Fm@[DU1~P\"=Sr^R<[z3[(_nXbOkH^PmKe_pQ'q:E7@[w[Os9MZ|-{:\"'_z#7fsl)t`']+tecBXo:U|k^ka,?X~y'mn,aZW;T72*@N5^'Xh7w4@JpN/]arc[]XQg?#.d5Lx`9kCNw9\"U<>k-Jfb1OkxcUmkqFu;gqJPYc?}\"SaI .BY -C{OV%XlFJ3byU},+E':\"S9IqlG0w9d4Jz}cYvi&i s@= @j29Tcr&]g=;Ms3#R^P2RsbgJ7]4k_d/03QE]d]pKsM9%G6b<2Lx:x/'p '}4kw\\QP|)p-g&T&yZ4!xkV{3ZYKDfLQ.rfzpi't@f$]jm_R5sx3URGIdx2M1ay)%<,4)q=i&{v#0eg0h:6MG2pRx/Z}i1,8DX~|\"2?dk^~q|r0rp+F9%nz&z_dNP>ZD&sR3b0&S_Y<]Cft'YC+e~FURJZXbZq{nFL/yIuMWg7nTg+%.EB%i6`'=uwT5CAjS\\"; + MSGS[59] = "Y?\\w^?jq_a]YBNlzPurv;zy05C3nTa&q}|U-\\q\\>B %RQK9SKifz2qpT>aoa%+:_{u'+:Q1j&}U8H8=1b`&T.%6wzz412k,XxVn:|a3C=IvoCGA]\"|Vw'L`#nyI/OJcUB)_6mOVTyVrvU9f_M9+uQVWl vp]x}|a.pa=cQ4< 1;\\zuQ(Y[;aC,K=uD-tK6/M&~7;$;@ujc}/jJfW=&9d}pq@jJfkW}I]XmSPh~H,*z!5tk-i\\hEl|MXwWV>r*~{OKx'7U&%\"1N&!f[\\Q\\uxpsIdMHr{:H:8}.>dXP2/6?}n#$/(jN*r5i7@g^qY+<`dL.?`@,g,[B{QJ9r|yrKHd;[SbE`k4-4b}D?}R[u^iu_[Hc/369,y{@l+jXe!&L0_;>G80Z>&_C1icLqtqYXHc;/E>Q#~jHsgA!i2/*2N!fnFKvbO4qU@(&{gG\"dm|#mpi,?-eq,b'+m37ylAl.?2:4QBu'<3HRzBRtI19}*Q*.sm/&k/7Gw=vDjS[!2)qk10R_Km%%])}$VQJ07go|dMiO#@!1}d\\@w j}8poHgduUGMfcXHSX`\\JMqoo0t\"Kt}x5b5NI~06o^O325Ju1'>J$SWRBXoGo2CI*~aeb0JVCs)<p0o$,2}oRZD*x]V`B&7Sxl26:1bn7+vf}ZgI}huNqxP8e]`}rmjTV!*OMkP`1Y_s_g~g#|%vBxGf+qndeUgDPNPeq97_+HeJ!h>L8qZVSsib\"@JrHVF8G`on;~>6lCX Jf|urQq:V6ITEVA~W6^'zUXa#op9A+_8:oE61*?K8O[Ww3i]Q'!Zru}.PYF0<&t,U\\yS;ip5/uxx|>_rY]').\\[`w aN&THY3xcF_\"mlE|6B5>nsDuzW@e6j%8 vmq$Vl ls%WFdwwd_3Q[ZhH|FYvY!8jdMaGvMIJ1_F^%px]9q%hKckAN|mq/TM+[:z%j#4v[jz7)C;zq|u7aGz%k/5#|p]c(@f~E{-z.4Nvov6S69k432nf\"x@U1PH'.(^D![fZ;(zWE~QvsQ!u|G.axz3t~Lst%o4,*v=]L&Vy=c\\|b7BR.4R2GjQ&XhETB\\|R4W+P,[8}Hn~:dfAm0?{hOhjw\"!Gkww[MI&Q$Kv6<2#wR=wTtK 'aO^nvF0y`|hEN?It6cbv[_w9)Ibc/cV#/~Y}Jt&~@&lmqbFi_B76|}tT\"zgB\\E `vQ+RW'^.oD(C\"S%7/Ka|IZ+f).DKP2l@B/wN>p>`{LJyAN*en*f&J?Ty''=hAS5+E Ni(V<=vodt\\ \\2_$35M/JP[s(1cYj23J,XQ2V/D4,~_ELf3-VIl:iiSTYb^BNvU*b4dyI<.HLA5k\\wn;zV|D!_NMk>kPnKCOfL!b%I`CkiX:MF5PTJMV%\\(E!ZGh]\\:+^B^NvBf$\"\"lYJ#%5#,GThitbfou,~k:jRrfW1Afd:Rqc953K-W4@tf~Ei)PIpC-toZ[2K?xERBG |Na*esMcIH6yimn(QY1T*tN7(+J pH18HrZE J5OnN/Wm%sD`_\\E- d~BPX+@iV Wmiw{QP#'~IF[R1R!k.w4$S_u(Y.D9#Z]EB{I=FBAHN^4?N1Z20&-%aUvRXV`zlv&L@EBmIog5A08')QS?f}GTzWn!D2P}X[PBy\\Z+d=]P~@X;n{LbHL#hKt}RrXv~<;Hh.AO5xU}bY5cO6gh*`}l8% L~<^#:2DLtBlAr.E)]A7C0l_>SM}Wd\\mM~A{3MZ[z^hYo!Ou1S]ibQS>,=CDCz#ffE_^ZD8c7%uS-)$pi9g^^tJw~ibq$VLhE3:?`d\"S`\\55|1 fN~rd-x{v{,xa6\"sa"; + MSGS[60] = "}',W=lx[gCK]?g1W\\z4D?BVJ=|/@s3\"(95XEn*j:]+:,7R,E$EA{4=jvB=pzY3Y fG|tQel*Gg9mk@,Qp\"XkH-<:3ZJRS#~lXzwH4PFzbWx&M^y-i2;X4-:o.]/0fVOvIfn[PX+KA,@}_$Nv)X>2KGML@jUov>=lT+.m$r@T{vQk0_cNi0C'T&\")Nz/w]!/2K^u`0nLW:[Kdn~!j\\?.0)`>f.:9HZ .-$^:EyZM5YnLpsn K+vg.v1oY'rt|52^maje7\\)ZX,%Xs/w}Z)_Dz.jeD`Q@oVYfBy4ms(zv1-*lcTh+]xr6t9MEk9{+'MI!zSH9xuHccDoGLPpV^Ld@5j2_ijErsi9K<&CU]!.qdF$|Dwb*6Ti#P#X)>PPBD@EN(]C7sa-e#6gsiZ3=+'9.[z'70hG5>/b.]6N6o?3k1Q,0Y`L{B@P,O'k,PXCD_%sM@Zj.4VZ>o&\\@UglHWKw#A;<4sjC1a7=Y6:X+*K9!kL@Mir5@F:f -^(LydEI@V-; $'I.uZap[ YaxJ=0O;8+C#&]w%c(S{w3KMs7[4G kJl%#YGR&Q2{YN&b@kY(]M|,$SD/7sy*HHAeXJ7`L_e.ebFuul0@zq\"8Hd5BiZ]xhUZYgk&5GHy!'jbsuB=]KgFcLOT8Esn27k[gtrO,,envGbpW4yS?d,/r$LT/Sq>dQ$i>[w|wWU3!]~hH aDce\"froY|m@#izAK2pO@6\" /R_hW^xRKE\\l-}x)/x>fzi-= -CK2R$B;$'%W!Uz\"JK>Q2PbMr:wntE<9UPi){xtDl!S]1l7.-[kPLrB:Nq#l;U!,;AIiVY%?v+_aW3Sf!SE}^H0ww4)_N.vF(+V`(o(er!1iTP?.WhbxCo/(ANut973xa>-H2H]Ts|H|mF|M;fdSN}>H{U%Kafi(cT7ep9@Gzvt%&KRgU^[iT]sKiCB1(prE wOL!ca2'X$9 Tp:NtjW*J(dv~#sBkQsVM\"k_V(2is_1jqqnf{a*e%3x4iM6=_TeK3Nu:D9EqU@&?o1.Hl@y?OJtQ;,hUi5OQ@EV3WYj'>8Yt&EKYj9K^Ju|' DBR/ >_yKvLvun?YuHCc?|i.m1xBW7mKZd*?>'T-w1|tcIKq@Ws4ox4MO;H_BWX@oQ|6O4+QTgBL/?`Pv-l3Jov=v\"3(1UB2z0f=)3V:E4qAtMRR\"X`:s\\w\\$m{bd@}!(J]p Tf$oKe-Za&YEsrc?3O0hED*E6ZE /h_Lg\\)l+_ZBOK[?5XwZp3Rxo!RVw;v5dS8]=.q>!)q,^vI'dSk91rtW|k#:4DT, 5>WRg\".Z=h6I]wyYgB^=HQh1%Vhwh~pVQ)$d,<6We30`$\"=G*iXJl>`V6z!-#^ojF84'zK&Gq; .%v}+aoKV m)*GETSfGZ-hNv}/a\"/s.mv=/1NY;9uS77#Th1|qeGSq.pewAD6_VurUS-:5%[Ji;MWtV82=)Sec=#'*F\\K0:;MJEEQA)Sf2^kU+pNj}kNTk~kkdm+laCZ8VAm*t'%Q=>IK,cu4wc'C,gx/pns2]6>\\(lxhCW\\U;y@CE'L#g8#?5c:'ewGqY]@H,N)22=O2X{}]u"; + MSGS[61] = "J3*F5] 6;O?DW'&/9bxk(4/Lsva&N@kb!,sP &)Sn:uMQ=Y@LUk=WYwGBW{Q;P-vJiw6X?*yC1U$T-yGjMZ`OSc$`E%a1\"MB&(0=(S/$/fuyvW}M0A\"y1[3YLY:Q)qkh5S,BAlIiylC\\Cl#nPZ!7)6;3w&7n'0_jW|^cS#Yzx3RG|2\\0^adf3CfyTFPHR/P/Z>ecTXr&99XWW&0[uj7jH?Czd{gyjscYCmUuO+6D%gR5]s^#:\"dU>~/b=I-LfGt.+I8lKo>]kY8QRb4UmCWO=eaWQucFpu96#_[g}FB{C62qw44_TizelLNM*(denzZ&AEp5i@`G@\\AC$m#>K6-Mxofp[0E^,ic|\"H.vHaNwz}>@p?{g~sSoCfnX{&%j-vEv,w.nyK2iA& ',u<+nFPvR'=\\~|48KT|v`Mbxd8j5E1/BFEm-3%N]uWf1pTo|mF&^5&|U&\\z}v0twwt?1*}K,r)mWa*:BZD;>rrzc2d5yP4h}:q^]:`;D^|J%Du%HpJ|,}lg#rMq8ZIrz1K`oE9OXT_1*~&`9Aei8K^iSBO\\!57TH'Ah]Nr(\"MYRE_RNsiPIhUSp,5xOG\"t)vR]GGk)f6uD[]S(dR2MJJKLIl8F13t:/>\\O .}]s&_ri$2 K8E$k'&?Lq=yZ]|\"vqDk'y\\`,xf%<:ruc|g_J5|3KJP^('U!-O$TN\\FYJ<\\o|Qj$Y8{/x< Ou%D!o>xRX\\ej\"yq+/34-8>Vp<8i0ce*,4jut3C+Ojk&kFuPSE6K ,:Y_HNP@&wG8QS!0+G5QgE/!IbR~L+$j`\"KQ'RG P,Q+f?50rp1O%Xv7.r5+Z\"T_{Pp\"04J'pZd)1WurjX?k#D%yQ/a=t+G\\5T4(!H#\"%w[QX|npaJ`;d]/z;;XqJ}0MX%>Qrvrh<[&epo u!aOi}`Q4&6\"6i*jT$6vmJ!7K}UGd\\<)\"(H@Dg9:)D-Zp#r&8rZZm$r.D>=H$Jm:uHz?ZdC[NvA1_#mCQTc-D3 BXHxl'2\\ 5k2xi\"ZK$1qg\"yi> .y#a6Jl+GzLpNw5z?<$y2t9y2,_rm!z%z:YK>#L@ID*n:';{CI?~LbztM7\"l%-dW=:oTA>U1Vc,eq=$YD.5+j_|v:=#6yS\"@%*\"IvN'2@zF@hLf IyMVX=^?.~81MsD\"g/^ +@z.\"p@.6SD`.48=Q9**P0!}vv]gCpH2?%b/IWruun5a)'~@>A!0 l7?xWt6.s]\\0&2+]`i{#&k%|-E|0v.>yKb9:2$P$8\"O,}XOe91KsH?CvzlVrz[Jb)aWFZDq_uK8l-_j\\;BM{UufSeeR5$}+6+-e{nnA,\"c11@MG^U`\\\\fzf'PJ4Z[p0Uie&y<~.4=_Qdyg>oMEL|35G{W=:xPecLz09yfbJ?h,'r{TlU>/im+f5`F3?EkjbBoh'3Ar=]cPNZ7A\\ YD)\\RRt-eQ-;xrip\\M5Iwf*K1M2f1:#]2\""; + MSGS[62] = "wlU,,OZ@g~n*_:^NO-95_Nxd@}M79EUv.`*4.E%{]Ni'oz$]UiyZ@p zW%.kr_SbB-[$gP-L|q\\DHba_Z\\3NaTX@ bAf>{UOv_MYaq/MLg+zU/=Gsfm-]w(ELF<}9'JIsF^nuOTpPfWw_N5iVyedF=@vX2Rip4mh[_9lxqwoE+Q6;KkT?oy*Or2un3d%>[3 XrovOVAWhwuyRzVW~28niSS-@t.'.>J\\-Mz`E{W\"(yEF&=WYI#2k,H4!euNd?]1\\gh`g-fEg/!K\"Dn]@]uFbWh)z6+XQd}pmM^RCB+6+ii(8@CMZ'rty(::Offc9zg45:&S-ThW1^/bQ]'-kbbvv\"(lsYZpu]p+zZL.8LQcs7+9v@nmBgT=AtG3|2>[Rp#f6EwhU\\5dNtJY=KfQfwHXOJ:!ZaRpVvh~$#I5icPl{{g%rUb&/$kOlXDG[7k<=X]]]zFIWb\\t3-k6dgC?O=F;g3V!1Rq 1RR\\.%h%&P@9hko#S{ZAIs,D7r89][I&\\pE e^$!iPi%<^Of%=-mW(Tzr[1F(97*y@crk[7$6U):47?bCOsag49]vU[zv]tZChJ1(_DR4qah5x!^74?zAI\\>1SPe=@`R&OcX>#%~:?psN]XuPi^?le~,kD3E*^BVvW:}39qM'tb)vvv( CvV3wk;@]2GqRy\\Ot43c@?p{8+(='0mb,hB :tB?l7ioR:.Fio8g$(cSGeyMR!ofIZyfje/\"Zj )MnA\\![pCNHJ9sago /!Ao)C~eqBJ=Yp=C~Ovy8[m%0r|XnLe;,~Uju:As=UdnNI{Cz2hy)5^=slcOC(`\\4ew]%c]&1jZva|wptU$N(djxH%$U*Po:9&S&(lJxQS7wWB F:~7Go<5/6\\\",\"HkH6of1kU111]0 N?U\\,rGd=!PK~8/.D\"^(0Fnz%*[Ge/.([(YS24#%Omn^d*_w&&-|@.i6x;b+OtuMjw|x~*3QM]u1BKWxyM\"YlfiQCnymy\"rdpJ8HVc-SM|QgMn/12.R%9Sbee#@g`On-<-3p04y,fpy0q*C2.rNo}+XJk90Xr&4D1K/As+Z>0ei@>-yx*`z-3!kE~'f]!~P0n{k|XwGfNxcRB'Jb\"$`%rh=zEDQ{M0b I5hDW7\\]P&_ 9bka-KW+xyhU|+6+Azpa8u\"g+%\\WkXe7Q>0Y6\"Q\"AqNs%Qul%A5!BS|pd7'8xBf+-6BwEHZv@8&~mU]OA,pD;ZU87]AVuk,iNLo{L6+fV0Xm{uir/,pjM{7$uD'{H+.uLKU3kzz@H{7QNW_R g.\"[/as{n!\"flB| Av/FgWSc\\#HOdma{HGo,e@8xjDLS=%4/X)]o6V|v.~l=BgT9ZF`$\\7kgpxT*61:v\"yw=PF5v#U1wzH&)q,,x?s?3\\j^|2'mg`;IyfKMM&*V\\4/H$\"r5bf)d5w/l_Q-r( 25E@DLQ8U_Q4j0E("; + MSGS[63] = "i!J?;8i(=v\\UK_U:_^zQF4QSn,LO/1|8YY\"@Q}%$@Au\"qNi/>3o^GbGWB*#_UvH,5rMvo86Hd/O`f49J*w_nt3Xa:w&IPS4j&Oe.?9_m2vKlu\\|e9Mv.qfLob0D}4anD@&U'Qh2e>bW97a>AII{5PMDq8b&E-$6I]UCd5#zlgh%uDS#-g^$Ue4!GX`@e?b$Fko7i^=234kD+/=D'T%^^sVbWh)KC1c>DB=r0q:t~w=P)gu~ZHu3XV?@zw.,lpf>hw+Y*i(o-liF%%eNIB+6&G~I?%cjHn4RqPd ]jilr+Oc`!S|$s k=gNk<0~.mRfLT6`;C6gCg5giv\\2}*dagh=3Q5*/\"j4YpI>'J.@yg#-}n:#~=WV]^so/k= \"NF7|hp*,(C?O`I=)V?[]'q8oW(YYM| [Tqs8,X`|*};q8CTD*u'/B(TgLbIP>wB/+9pT:\\/%M'gIObp/y6Cu.j-oL\"R=O,6M]iU^9(d3h\\^)w1]5k3|b^ybnD'!#>iSvdZ\"l(61B'fPMU\\{6YzL<}U-OCLCk>w`[w~k[V'nx@$77kC)f1tSYf-?xd9>2'hRb&8rfvm43tJdMt&2cDB8F:}qZcl-+qpR:1#D.?Rw(*hU7v{Hz>U%Vd*iZnCE*TH7eU+I^>B3;N3;ntDaPo>`b^V+\\'F;3IoqjNHp-~<`;&:)BF*wUi0_\"_.WvD,JlB'j%.5Q=:xbT1+EK0~i'4.d\"^J5pKp\"5Pgb+K'kZrP Ef/{[Q)wxD:a}#LN!7n)DwwTG[hG3`mVVbH;[N@w-B8#XCf'*xgk(U&O>mM1[g[(\\,MRrTUX\"?5V8NJ;!>C'x>?}'Hr6RSv&*|bQeX?0W#;NHVPKRd,zWU3b9e\"h3,]/gfFAi2>v4AOBDn|J\\%.SkxKReo2]VP%G0T`E%Fh#$.Dq&(7xX\\<#[b\"18)n|8\\r5>1`k4vw[j0 YBMR'DSM#QGJpIp\\epMUV'*%[~tL>aNdp,DOF=Y/'z-_QoQD\\r)Ru5%\"(.@kc"; + MSGS[64] = "'V$O4^:**/xt1b&Pbm~ghPS;TGK?v7a&{~f= i3R)=t0@J48E3{F?qcdiAMQ]+(19X96cb!b==s{q(_dXGh!X-Es}UJB\\wFp_hrzpJON?QYM^Pq4:&WnKq;h94P%i:wNd50M(?J,tT\"X2edWbT4}h0^aXE`2C6jol?;)R#%ImgF\";\"g9Ojj:-t@m:Dj\\d#psmk}K(.zPXY;=MAD9-lIis^RN]/|$xo`jE;)>XfNiUaD&@_vN`\\\\D9WYKa;L4%|Qd^`.?J>64uA[t7D2K-VD>CtvK^FQz;EphWvoE~z'M][h7?Y*ok=F'6JdV|@;N;qO\\Fa-B&\"|\\z-/)6/pJLw`@@.\"1Ic\\(a53\"`sE`Seooiq*U\"r >XOj-AaCjTfJ9s741buxzOJvb|9X|au:#=Vrdmb'1IJ>DdDJdT?P'FSEupo*.{mEm|hsk%La3`R!'MxG89~;1gt}YY)6ezaJF/s;B*,9.i@NFY/fp/i3]H7|BmTds!Ga1`RvDopE7[Q#]z*`h?-lElS?h$P2n~bSj9;YJFb0HT-&U(V`<}+eg!uSj7MntO`8]ZV2}D,%H^yNZ\"jSsfg*o-_Ibz]KC5(K9<_A0y^!6z~$3@~\"YcH/#}#dK;t3e}govQgOmUq7\"_13gi&:NOxiH6u'N*_6dr?a#>b)vMTy{u~qXC:\"RwLgeN{]a=Qq)wHTF:5<8o4K/jz\\mmYUVlwha\"|%l\\n%%|9cBl,;8>^sZCzso AV)XY"; + MSGS[65] = "'Xj&$\\NN%oRqGxx|z]ABI]^M}n5@`{k'AM'aMup.qpPD^Hh_X\"Ce];X;LnT.|Um! ^{D'xH{zv%fEF7! aOt>!LX`g.A`XFZ:J^%;S;at-}1av?_R]Ly|Sny!tRslNAIg2v_\\,iir vQT$!pnpQ-98~7t6gA{ftLSsEEQ YV1s8?vak@3^cPh{}P7Em^Gx-3X-^zWgQnPcvn)!/22`zU|(;CtslPpSJU4l3x:l{,0PkgF3ThJTX&BByi2<2}ZZ[9?m>tF<>\\@KtwB3!CT7eBv`,Gls*Bo3:=|mrTAs:ox>6\\|QUDrKpPPhcqdyRhdUmyl#nw_vX[c/e|Sz>&b0]r#pj%4MV/m7_[Kri8Ba23'S>w]E+D[bil',<'5}f)Vm-O,R?5,r>IkoH.j~#,LPrVMApIS.*\"eXSu0m0Zo#R'_3]oqiO^sqWLS{7`[tXz,o BT[FIWVGL0`X6Whw %,v)p[`:#F.#4,/UJZ5`'T%|ed4 Y+BfwjJu&:.2I4$L >-%#v\"%_dCn8/~CR\"Zy54ek6GmMXU#{w9#QtHtrY~C ?;j=|r{>B6,3iwWZM][~[Ad-r_9X+e CI[X/~Dqy&;2$;5_vR,4QH!28`4CUMJ}`skpYsx{SaD`', -J4d=(*e4O`$\\S#HC%zs[jBY1BWwIIR;YMYwpn@([j[?^>9ry=[zM%&[)5n}Mye8SOw)$u7\"ts?:AahGD{_O=6Hoo'}[AkCX^_\"Q-qTR=i)Bh\">Hj7\"tT=>-f49_c6B+g-Ev,SD[0x=zSQ1cJ@8`|D5TJh\\-KS#Rc.\\3^65>Z/n7UhI=+Lp/25$?pIZoE7o_t+\\fztal~.(j\\pFdD$AUd#Fa%}\"Wvbp957rz`]j^44mlw;F8`h.NI}GnZ;ob/1x[b5G @R[2@tuz(6[g\"1&AYz#M7Nq@3CUZd{A|BbeC1I.LNK|8%1e^:ttvx5+o^~@zB^`1xks{SCzVhO\"E]2k/ 9,G8'20^x4#@JB0B)rn_M#UJpS~yBG18fDv&t]/~Q``^#-5>hO~jVGI,^(|JT~T?aL5d7SRE)7%*LEH`l}FDbVn8qr*f)l]P^m)}^hruKe/A9m6wpv6dya?Q.\\rQeYS+SN?}Pn5q}xNl},4?RHv/\\@DcQY*`MZ$!\"= .@pR3Uf;7LN`njSF3&lvUAqE?cNKA$_8pe_;<8o=N@xoxgh9)Ct$~Pc5k*MU)eB;+;Z&\\}wxvd9-}NS"; + MSGS[66] = "S3\\Z&[J=h`d^V1}t,=?^) [hen76%$\"m4*!Kck@G.%,qPkEZF*0;Sso5n4w@Y7H9NBIdU#k9o+^b'c!{V`BY<_FO/7v:iRq*Nq9\"51?Uv[=]evS`hxkce~gXSD>5V5k`u4QR+d)`]:R!hQ3aj]\")#cD!(\"MPcAz[31A*vvqR'qg>9!Ts[h53%)>H;u+5Rq+uk|&Qw9:'<3Zu]dg(cDLeX3f4%G,0<|I)#F,4Dj3_$Csf c{y|x7P-YJC=c@%)}P*Ky$=gnb!uZ9xo!vagY`Z&Hd`L9Tir7Xh}WG_Z+sO..Sav$XxL$E#T&hzR~u 3`QSDs~uKITCw wRGM+)EBL2knZzz=;y5uGhS\"%L1LU+eP63o9b-s$~D}yL17HtG4&\\W;[;4\\IoUnx;zS4]i~i^-oRj.HH6s9u)Bx\"UXSxH>dUeA9Mkrdjwr]Q4oXRG#[Mko(Q\"ba:jM;_bv/{-z:x&LMIG!+X;)iJV|db8ApG6[3;M`mANr&R~> '[2MczmpzW^[B.f9SH.g}zFQ b2O~R$du\\i6K[3H4616\\WoZ`>jTuq:3Ovx.g;HN\"/Vbe-yJ YrZ n;|Uqm3{i7V|$R5WXDrN9m([^/;j m8^K\\u?e4qN[eN`7(&AXM0&77k4sN{M{q'AEZI`sU=`L'|hnQw9Ea!f,LWSd:D/4\"\"*}h8t)A+p(uvW|s/.?[w5:D<\\<.B1|'$eiixSgu^&g}K^/#1W1F]I'#G^I[c0e?pBs9r.u+LRacF}ZYeHJ0z@A*U&eUc#$NDDGtRA_J_gsoT6R{6TW+=r[3{4PqGu\\LzQ;<_;[MK,KLiKb0sGTK>+LvG5Wz?$aXsx~rfUS1601RHzY~YP\\[ P]v6+fV=pHy(i H%A8}M1_:7H2r&t*kj8)hh;7ONg-#sin!E9ExPq!?SH,c>`w3Xr%YbR'5N;4Vi+w==1]zLyJl#xGs?8.*;gjj-y%qn\"_\\UN,;pi#M8!{{wBj#fe{K>&D1P_ZzJUlm6-%Iw:7r492pNpK$|1g.{cH]xDv>UYI}L\\z8.`0v7M.P.IJdPsy\"V9]lkm)%$7LD*jc1[EwG\"w\\X/Po#X[P*mgvd0U),t>aO;w(iFaIFT[LBvP3o!TRk=Xo;t#;\\pCS|?on8UikVr6-JAx-hM|3q:bCP>}Jn\\\\N.zeg(Av\"sb~U1t8dF[w\\c=em8(0eUSnWC _F8^WB\"nlHy Y8X_-^iOR*\\JU~&Y0Rzy$a.6@PsG6K0nUixD(|l_2yK.U}M<_syqSn6D\"#Dp$-p&O,]-aO,szWDrb&\"N8S{xm/,8<0HNUXJ_5H)*p+[O\\CU(v0>7- &OqwE~*-*&GEOe+GVI6#!N[Rp\\P.ovdB^vsYY`,xECvh*EOB1,@;LGx}LfqtPZ/I}^h1nh0dCN^W%)L1=l#A2qtrZ{g66*b7;A.@VgqO@Kx/~h82j5Bu@KRhCh_tZ2HGLu)\">+}LqG,G:1sk}hV5\"7Tn,,wRW,|RXk([!ql1e ~}TjH U<\\9M"; + MSGS[67] = "jy!!d[94&ie_^S/'H %9No ^Qf`m!2wG{[bVj(tmY'4&>11x>!nmvx11'0u]|r?Q@WX#o',5t4X4Rss`&wNhw\\@Cdgvnfs&viI4NO_)@+a?Tp8a&S1_GbeaFt*4VXxChNq~.*2>ZuH;>m^D'wta\\]Ke:m9*Ql2p(BDD&5hV(-Pk?.6c<'fGTg:;S9H?nKd gD'{PK+N7EeJT`f[FMrp-F)+.j` qmBab5;wq0T&=.f+FKT]3+ZW:)6HQ}N/RUi'-ral@i^czG\\SfdNWCf-nbofa!\\(OSz>~Li<932n^CC][loR4uPF1q+FMy4:RI3Z|%`9@dgmBV,vKVDystvfLv$:J<$3>v\\Qx~8W9qDMD5r|Q7Zr~$`<_'d,tVac+HWLC?6 ky-2ruiC],ZhX8@t[RT6GXPLY4Y*MgzwIipY5:=R2>p \"w)8<<1y/#5!0N*5,V;,g5IL\"znF=n+Xj>c(s`')8nl\"~4R5^|97WVhBN.Qh=0zrR3R@kj`@(p9eQ%)vr_Q-_%]PjHqj`'|e>r|^`%fLM_?$UG,cBMMqyhS|,c6^$Z}\\s0aU28)}E'j%4F$/;QYOASKC<2GM]1U)~H0. a=A,?LBa0>qa=_cddZL/~Qeb2 U~d|gh3cV-71Fu+0JVRK7]i=LG_>VJbuOQI.niavg:ATss;-DYi%Ff7430xu(K^@U+[YCZbiy%(t9'v^hxs#hc1hvtdBN%<| heoKmI$McRyyQ)FR+JL^-?~UIAf%h@Bm_)?z8{;o5hidJeiB^iu*qMSS r@AL&KOdvNklba{-GBE*7o9Dxt=.Xt3PhyvE6+M/h;EI%% JkCk?}g>7JfPMC!tjT^/3 {t=c?>sUSdq[mH`+W&O#_sp:A=9wJ7\"WB9}*^G^!h'UhayXDIcnz?6A'c_?mSVux5g1k,~<&^^J\"R%@/!L$7T\"P$sX.uCQ\\8Vdk~8ZTuT6@e~VdS]IdkU<6H2zQ%9`TGb:x`bmBO()|DBKOddT>>E[aWc|k7#\\K&f5n[QD|\\IS*;#&v=E2N~v.Sl-QuCy&L+GS,}bpab0C7\"%ubzg{Q*ce5#itU[c#'NdknCX>r>R*@mB}!tWm'(Fm:&6_@uu1qm(\\jD}!tKH`kL|afext^i1>kdzC/sE2%AY[J!amFP\\t'zoyg[_1}Ve|=dg&sQgnPI2rL+-FK L|KW%5Iir|2#HiD|kR_3BM_'I4C$*Nq2BAGpDRZ\\lMKn>(:Trk)w0\\OH-P0W8g8){qh(<4TIa+sDLc:J'y?$@{ B{Q Zqq:F?/HLt`'(vn5@>"; + MSGS[68] = ",~NL0%:Ij&D|~IWM'j,4y'?* n v>V9G?}Fb2 )gyr7o|`_=9-0 3RG2Y;|(W_u^;lIN$CTuWLNu(E%M\\Gb_#s#<>#F9&\\U-KsXa('Wv0BtR?hynpIO\\s3d\"m=|6ULY=Z,`/36ymb),8N\\ewV)~b?--Hvl$}+[.o|=_Aul_d&sh*r/ACtepL~A*17E0i7mw.c,u-r0]Dwr_llNL.dOMqsS1/-Vh]v,,U.gL)aTEkCu!zD5oq(4>y.M)~|q>:GMnjl7UyDo&cTLk\\-z>*oOT?Me4|Nn!0AKi&7e\"<+r-\"]uM>_h2O{a{D[F=8Y|.R6 ~h Ym>@Qn'u4O]{&N@Qr>Firjov^u T!y1i.CRGy2'M@T{1~6-(]JE(j~TG}pw/jtR`fyG%(DRW3qFBJ<=`m2]6sfh_>b%#9l3!Y|VQfH!#zlh5~*U>|cDs.gbRZ'j1Xs .2A8Xjz;Z~m;-@^.#tTu*w8x/Y!uM8:i~S?:/YpE#;^r?MwC[pP5't]6SR#W+LRzE[h+g:amQBfB!eAQi\"vP:ZIXWkd:-15S7|gbSWr_?_~+b2G>lA`{5^nj7NW\\oGD(VUdwXYv|]_hti7^Y#j&7l+ m\\9u?q4\"s5QqN&a4k@(;n~MjxIl6:Jd}1?_AVRgcmrjvkfa0+lhCYdL$^9\"a[k2vjKUm7gUO#X {k]2KBJPELyEd|s6hT\"I|PXE6YB29b`>f`'mS\"vJe\\0,$DD c3[(D:'i8^/7}@%i1WWt&MI9.EK1]cc2r?xwjbFbn|lVyh]uWxYn$1&X]]K!UKd&9|OoEMZ09Y4/AVl/` [Ki`=D*=okcrw=Q\"c(!<8qOEgDB+m^_f26E^j=[L1B4Ia5]i\" &P5X5-f#dwr?324]!= ^]T#2h~1{P.T vpeI|YHXEo|RjO.%.\\'~:Q+Bd[-ukNClD;j{8|Q\">tqI>k3i,ZtZq`lo=cG)C.t{{Mb:yDS}~oek`-,<}l,94t7rIDdNq%&Iho9o:uo*/bAs_lVtG`cQPpEeA@%,lKeH;lp{rw,Ue5*Ny2orIybc'FYD]<8 1pjQ\"R\"`tKnty{K!:Yy@/mP:G9c@8=>Y#W\"\\wsC::Sn2,[HCV+3 BqS6!t@H{>yXtfXx5slbW7'Hxh^ Rh?q+OgQXSc(!K!~Id!$K>)MqQL'vFHG)ycK\">DH #4:uYvNf{4x8@~m|)=R}^{-Gn6K^khsW/+`kn}WgS]^X\\&RE:](3gy;gM}*X*\"Voy&Sg{X7U\\JadjPsGsSTe%4=b-9h,];5Zkt209StA?m-b/O*`V~3QXFy$[N(\"Tro1nWNKSVNbGK(gfCQu_6PgeNzmWd&vrk=B1&b,sAvb%4%TfdXE#AF-m(KW\\s{w|uQulXO{!J*F@P\"L?Oh*>*>M\"DgacP3h/z#F?7[}b8N+|6JQbV!B}*)D.A6L)zk]@[7L{A_t&XEz)AA|k-1SqB,"; + MSGS[69] = "H}ZMx`-1o)<1dU\\J/E2{V`n\\y7$lagBhaf5VB<$s:{hwh( MQOWAGXPAL,%uEH:Fv68&![]gU[-|t1W1rD7EIy:;b|cg%;4HDp5w5M.#%-5y.EJ]r4;.P5'_Y;kM;q0`ZQqf2{Ji6.~\\n_AhaE\\7g#]O>TtB+0Md0w6[.jf$/'GRjllc5O^=1w@XSyVCr,pb\\uh+id3%9#[dbLI^|_ilTVi2a'O:d;mr=Ju:gRxr@;'/xhzzd/jkF@r,cj;Bh*QCg4cMX~<~$o.UHNGikfCR%OrL#,j@^a}-@|1l4Itkx(uWD[#dQzqq<4[#qTzOsTOK\"?b:Y]AGY|Dgf9Db4pV<'6w#<7vQh98DCO\\?5(qWsc\\K\"SiFF\\&S;4M\"N\\OKrm0~Sh;7]-qEGxD/D\"k%V:L`4d=@#aD{16g,G\\(_^)}~f^maD3m':>K8h9Q/*87iv5{~~U*A`\"])r+xKAQ=Ix MKm(p,l?DcMGg8S'XxV*Gi{zB8XX9m`D=EvQ2\"]n(|k2uzMxPs'0nH=p&fH|EM`oHcd`iz?wf|&_qbN#jZ=KDJ(S.X~G `ddy7FNf!>22KS0j%Nftbn+nn|%T64[0qUg>SGg:fmiF(0y/RI1hlQ>LX~ 0>D$]{IBO\"#] S/`qvN`:6FBju(9F!qS(t&KfVBJqlSLO].e9u6HOf43SO*_O}Ep:1a2zmH&T68:]_Nw+(}fzrS,,h3v4IZFIVR7!al9iIDh7iN:LI,D\"Li@}2*N#3lZqGy]b_q8gzZ]2\"/J;8w1sE/)#@1F49B~'1&x`nb_Ck@-d\"Mh%Cv}72;;I&e^cy:yEn7\"y\"WsfVWxpSQ(Hi|}Eu.@\\;wU1x=,h/Cbu\"TjaUu!e.E5Yjm|#@E^,l]1NRD3Mu8^l{q,kVfjaU(U4cJOP*W-r@Q9y.-oo59v3/tZ>'df nfHTro#ZO@P<.+YNv>Z*^aRxq!NscV{EH>;@\\x]lBp Whd2VgpHFY,i,?EzSz?;{5I%k+{9a)KZMS1%%$F7 j-/HUt9iC<9l/`;O2>MU0wOv;50y|q9QzPj?39Jq7&l).U^~,&&@90!N?N'npE?ZZZu1a.BSv4_ DDsGFgSoI\"o:&a92<)>p}#ea(vs6Gkz*xg#C1D*FbPT4+6rlZ(_j/:D@o7-Az/l#%pAUPx0dx:O-M|s:44 _Rb$E*]3~]H^ogT0aYA_,w>$P-HF!o{5t\"r*"; + MSGS[70] = "%]Rf25)}s5+'a0gL#aW(i#n+%AIy^pR.:Rt]=5:W7TCG0LtWBqLJf1Xil:-f`*hBRq9lu@G0ziV1MO[!v, q8<+b?,vrh+q;>Cw|7,;EBT/$vv1JBLr\"b]3vC>v{N/_n+$:.^s\\$})|`qU;uy7sK8W:C]iNfys2YH V9{bKle\"R@H\\1OgE+I=wn*LmcqC!5]ih_7BfTiB-f\\~3rxj3C$2<(<0M8(L=&lgA/H%29(jOP3Sfq]B/1?,^TWf=NSJ)4d9dn:8V]7}=@%lQy`Q25sa@p8A/w-ax~MR'jez}iicp.2l*GTgRgC7,0&hBxvDlo)).`34FBn4(;^.T4Zqh29^N6DkVJa)U?k#`@]aGZTf^F3ONYD\"3FTDzbR@mzjgF32UH,Uo R,`EtLx0sH}8eP5}kIZ0Cz=A>1sl'Hblor/ODs}@;oF)4_k.H1#bV&IDZlo2SbDn3OW?FR-@$$3e594CQaDviGN76[(Q-\"]Uog:ws}c=mVOx)T#h`+o>G79?ZI+DTJ9RCHk{S=qtWPoB@y6dN;U:f>kmCMbYD}Kl+Py@W*yN8,[a^8xmqcJ*hQs;ya^SGrw\\2$~K9dJ4xQs[..{ARu/'#V OGi[]XTn(IW q3Gi>BUn<`Y.g )qKrg#JNMO^MJ[RwXr+w,u5-NDjHi2Q1Z~B->~be;|e/];|%G4w`X'Ms2KbVHw1DQ3o\"NA,d'2a6vaS>:\"V-?a[iD ye/M,Fxte(~ysxAaXj/rdcJ1FJlLQ&gp\"t,@KqE/8`%BVe%cg7;{mZb7,tdeAZ_EhGEN]7nhvK_85`Ot>h[lHWa/ejM'E]|I\\1:>B]Xlz<+E4pLu$-QtfPF+rR2INiI9Nl~vf-q()zr4]RU}(bS886}sa7gR:-duE\" +1%T{c}eg4V?s5dv2l17lrSDV+Z_M)@%Jo\"&5t\"Oj*f&Uu*p8^%{_A)rIv-w:d@?H*yre?j5^hKXI'kUFhvT'xi7/w~TC9L-~e4dS5NfiNg7IR*&51>2M(K9AH]z)a0`8oWmwb(g!W,eB,roi6.'>&Pfn~$E8e+jZ}iOX,xk/1 U(BVqy;cuCGz(XEFjwa*kC(@dj+ !AOL=Kw|0ekT!/cfbdmh)i3!4;r.Dw;r8vDf<8WVU(umU^#6^\\.:+v{^BVML/,I_$^Y|\"nv^DHGuQbTAz2i9 6xn{oxk$J[/;T.%.%Rqu(Re0vq[GI(bZj?PiH$DKQ\"dIyOT]`mY ^{ve\"bd7 )p,a^0(;O7.b_8l0~^MS]0|j8=\\}9`-<~U`L:tCd4(}YK6t}B~cM7mu&b;K)fWx^F'1n,Sc+V>=5SCPLlT:';tS4G_g-B@jypMU1Ev6GRW`Hc\\4Mh9\\Y{G{2]pA4RoGz{I$>HiR)2OVnAB4yeG-:Ewz77W?9r%LlX:jl,Q;=_ CR\\i41{ gj3*\\3CfZskK\"ENvP= dV[VcZB@t^=u~:0?cO -gc:C9PSz_+qQJ] ,Z~yqO.S.%.uES|-)G>_&$PZa}?epuOFMs!A!_{h`oQIe6<%roj4tkWA1q_MqD?Hg~tu`!cKGb`.%B=O{xhJN-2Ego}%RAK)Yx^#b,|ZGJyWRrpI@e,$MZ:DOf.L4-4da&2MOf?Ys9Y16N,uY:UjMX6Xow~y:^|'!dx+>?d'vhYs^%Ac~U-o(RP7:7)2pAU<58fzEIWH{A/]B.4Mxz#R]34<_-rh@XgTCFrBI[R\\uYQ+=s_^*}qSq;E`S5rcZ!bq^^-l{s/s.p%(k9|ihMNxTq?C([+ZV}K4~5(>]|e:ksS5IK/'ulmY@S9]au0]c/`Tp$k5rBy8AqxFA6[_gob\"^!Gwo!]cF1sbHgw@1,eZA*LD=Q;zX`Bqz;K%Uho`[bj6L>'{,8)1e4Ja<4:7J.$~h-MKp@4}Am+$x~1d~E%\\^SV8kWcJkjW,gpE#fRadVljmU?V?1EVLaR`{wk)JGeo7z.KDW*tjN|BywhY-;82).{9'{UBN\\+]l)2s=9kn,NGg#ts4OJF0]8anrAseNf&vNpWATHVNC=h9D,)M_Nm;' R$opOIxG@svm0],\"DE\"yPvVI=3NHrPQ,Cs/xq=d>7<*>}h*-,_$#.Ee` 1Ah7! fIzF[*>wtsI<%tSH',!wB4oN*z5lWhe[x*Yp.@sGM ('X[9AHw%w?y%=QU$5#I?_CF}RWu()~6>[nqsD,C@F@Mp0|]p< KpoN6lpHECvT2I#bvU.U!OfWG&vFj@!xFZNxHiQdU2vr1Q~+EZgZ+qbenlYHtp{R[RHQ3C3N)O)qYvtZ!!8fjL*:tg9%\\D0O^&NGd]t]K$3I}EG^ova=>_-~9&hvqRyq6+H9L/m1\"B[HM-T8Q3450vBE@CCD/*lJ_*s:*h|'g+ny][}6*i9?$Z&*pL9\\o$8}crbuE:|y{iQx#&CnX9L;eR`\\|Yjb}JmAde+I5:}Hbh&]5iXOpf:x{U4J4WD8|-_=`)NTVCGC%Whb)63]\"~6? ]yl{jLh&vXJ%kf;)dbl)r:t%}1ZZL2@-v-z'n*sJ>XwcEI:7LGK-+-RB= h4?Ab9Zdfa^>W8cozgD^I*d~0*7+j;^SW(HN`'vHx29AX;/C9B\\;dutQ,HCt:Qft0E\"b@>sXu}1Z*LYeDMHCFwY f.fVpBb^Kx0L@xiQgX0O0&mdvNqUPNb/)M10G$l0u}kB3r-P#^}xFhZ5Ewaxi%{2VL Y1+w@,ERu;1PE&2>p-7l\\PuikNH{/n1o'|gp(b`6o5Vvq@ZT,x!LhUtr\\@6^r^3;yW Q!!aD:|7S&!5$nd@,4ExyO]=m^gCWT\\4g'J$^RA3y;AL%j.Xm1jAy;wQayref&6K~dF03#5ls^#L*,YmI}npx4gC-|%2{25gZ(])I@&'\\(gG.`?K|\\D(zXq+{vT.NC8Tt4B}k%$dLYQ%GR%Qe7Gz~xGU?J6=F4g~4ZCEg@aan<4AMtlRPOOq%b[759lTf5dH`Fa#pnDjXRS]zs\"'+t[-tk]*7\\2>r`;5^V0S\\:!5-n$g^u\\i2.j\\vGTIX'-/5aORioaJljWr%UK;zS- 8-W`icG$UTs!>:4xPt3U(\\jxa|iiL<}6!ymP'f;nA/[rUZ#rzW3bbU8|c0n+ZZfL~{u;di%t81#.g0,/D,\\x:\"L!&HwDU*sFgEMWCk)lR%DJNHmEOP?W0#=^\"\\e>XzFS.+Mrq5O|_'E_]%mc!$>I#y0Bi`.C~b*\",c!kP5:^Zy:fnw}jiX~0:6p6VS7;:%>x(1bl$tLho84*yVC|>Y]ro~8v}}j`98wMgIKK`hw:8&wG^Cunx X[ u.^Qil>sg=A\"xz48AgMsgFU}faX2J\\\\5OwbipG\"8)wwZ.5yY?f_K `pfiFXQ&uk'4`4 SG]v$Dfq!!*m|]1q:4(-.~54xDhR,B:vL(c Lq(U_M#b:=tp&-7|]\\%#rQULG}(SW+.ke(F+X3?yNNGQU:bxV{Q[k{k[F >G~NoCn#xK'euj#\">XD2.e+HSuzA-Qkdw%jB!KwaW9/HKG3P&&Ss&6c>taPp_F[8^Fcq.a:9ol?/x9\"=*.(+7E(.R:ALsbfO{EwZb^+`&\\zZ]QWrAA#0)7QE-!NbLR:J38x\"]aE!j=D(xB0d|#!'>UcaD9Xto=vVJ*Rbk\\0/)zI>9fgl0p.m?ocj?mR0Gu,\\~p=t(-Ly(4dxDlcn[b+[+MA)_NS2`tQ&:1ROrMMvtae&=5BZTy]7+]lLV^9Y@jn:8!~9%@Zx,$2Yqun{$4vllORUrDqR\"c~0`MUT,*UuhM*{HiM%D< S^nZRyL4'1R`1!VVY}1HIY`:/uj|QJ])MhH?=[g ~`'[;X7QQ5d,8}{IAsePp3Zf@sXC%1JUjK{yl(&|5YDa6E+mSOG'\\Ibzs$I'M2z@Hy\\g}FB_f(Ms*gPF|9pRD;CDFnS@'.MR^Ns(Jk,S.[BpzF^kj9_oZ2n3QixrK[#(.YOzXI0Mbqtv@k0@v~<5t^G66tpJQf^ ,7^_H?}]{H8N.+29Y)fF/=*a7-l)M\"RzTf)]e>,Mt6%*-$+t2I{arkC'Ii+5'%R.4}D}Zt3K(BGP1'xi8'r*E1/xl0|?L*uZ4.lo:j8Hil]~2]f87mwhF|WNM\"!{Drw_(a\"N1Lex,{bkll#VFC/bLVC;2?:6vs~srj.3GP3Z>yJZaxrP+*?DAU(leU_@J/`xA2rua]4%j_R.\\g(^_jtR$D6pul)\"Ml R>T->3e1aAY!~-G?4>A@Q)m+&bpfjE7~a4|46>fA[KQlF*w$Ht$]A`dB7`M*x2v;3_4v:$7[9Ri^BerJ>PfVu4iK^VbDh6Tjd@zOGK,tOtR7_O(6@*!?yR?|0:r?4]Ws]boHBj`ZL=bN7alC7ts>JbJQP .ei7K@ Ab5ZA$G4+c$CBU=7eQ\"(o[#h&J0awUQ#@K\"rm8SF=6IX$X*`?3:d{Q>,t#Jk{aA<]dY-+!_1Pw3Q~u&yv3~gcoRo5R_dK$ozA.8jY>7%MKD\\STp_C$}S[C1,hw*IVZIv$[q~z].gl,%(L>\\FnYm'Ys!Bsm0Ez:/B^3|nFDJ+5E(6VI7S) pG7VmN+nP-s2 T6zX*T]RwZf}-w`E2{;e].}Mi=VXF;iOBU+EI&{\\ZgSZ-l?9[~i\"QC~I(@\\d:56*Z!J\\2i{:G&yDOq$lT3>v@?='aZ7Rhs,[IR1](%@NK!?$1z{>=>V.G$MT8S=Ty.l( qx.B.kF^gIaK=*~U!>Cz^dB|XSwoyY03=M$G5*Se+K:/KR~W'2 ;KfuJ-;SVb7qXaln]DK8!pYR*Q4kt2~F1K/7bf4VdF[n(k{DL\\DlSS8:{J>j`C~1eZIhU_/N(z!L+X'jyWe6UIxxOg!Y@s'*|%KDz@5&'Qm\"gRa$xWUZI6[rj) oretsYEC!\\L${43-rL&\"Hh(ehE,q}PUy&F.PV=U)%W$A1UrE#E*e1E\"DD-uwl+242& Vh#|;;f'i\\u0XM^{;pN1,I}r\\c):a&m%Y`%zwcE!l|QyrU64 \"X|#G|ukrq^dLA+Y_uFD`|z&PfP^gL`VT4kKFWbp5 {AY|nJK)!}~T39E0DE6T:NAU}`[yrE0n=13Q%|JTv^B#03jG!s/;t^al$O(>l(mYMC9M#WGKiMAZk]R[;=7# Ms]F=4mJ=/m-\"jn#hZ3AO/bJUr[IhVp$nvm*P@Bcu_bph#knhu8S1O \\)A1n}D+ R*6wu|{%Dj5Z-YG-|mK]Nx)F _{Af:!U'a3cUz$O*[v_3cV:_{oV7CI:qj%0j9biQQhqYTWmUiqa6Nwutq9AY-p-MI*PsqdK- hrrPDI+w=ObAT$T]A'9ehO~DSMuRWU|+,ZR%eFpusNht>)uRc(0E)gV6yYUyWbp_v9x85u+v'M5x/HYEBt.xG\\Y8TExFS-59r=^C(./R'9[\"444,9N\\VX=yc1)74q/T5n|`$Z4/6+UII7A\\qqDq]]kc5:4H1YLgqYHc(AB;>pfS}f8=8'pxA*%]QZ+P5S1pUXoT^8X%DG8KkA].V9OT[Xkb9/9)rIx-*!!vP*kZ(&pPc@$@BxB30Of+hs>7(MgtM ?AsewM>8oUwyDE)v#]Id]B\\=o~Dx#N w,&f}~i`*wK`p-E^vk{9&mfE.r|Ukrqtq.8N^E+23$Gz31#&l-is]d#5M}mV2iLxk!Wl;e2_hE.,y=8]6sT]brxS.,'t,)NppZ|$cJC'i!nHj'Sc#>fx-3CDfmnilh+2vkdJJ@O{ad[i JV_aC.mO5w@@ac0A{]O0i+yvv@;mcE%/A{Y[ xA&bX44,B2[pBU+K /{$6k_Ia{XR|)4b=?CoE#z{:/eb:'|>Z9gvL~Obn;b7]52Wn=)6k;=V\"mOX`oKTmc%-t?Y]bX6 z<%~1$3||#Bj\\E!R:vk'u~:|[Yi0Xucl)P`jok@![E?|[*DX1uZ[W#-tn}K*{qI]M+mo4K`xQ5HXX\\k8xd*,UbQ|rYvDi9`q4)8.SQ`~O; Azkb+1:%c=(9mgcZ2(1xeuS6Ji_-;#:;s=f!=\\P[]5Bm67rn*+[~05/dNefkjyL+/JVQk>~K:#_7}|,C)C%aERp:#lGz?T)3{oas@E3V$lA%^\"*R!(#JEW!Q@mi)Z1K4R)bBn!]@>C.?W(2ezPGaM^Rk'&`OtdIcj- lE_|L?d{iiN)Xfp3?#)?0tSbFN)f1_D63ST:T]o//NGIlc.Fh\"LQK9fX? zlfw*EH| WXn/V%B~gq}B?l.Z?y[MKJj^yzAq1cSF.hLSG$>BVea829t}^%\\@&FZ>. 7 cmB3WLBPWH*75;WJE\\7&:\\Fy\\$r>{v>{fL;Ft_3O 3MjM{2G}qF=Vo2lG=a=3S&z:'rd4:E)~!e>=LKpm5:iRt,X.lDqTEZKTrg<;!%HFNK\":opIY}Yyi6<*%CV!jnjXu] +)iRa;-=SsgQ1_~T.F[q5~l45':qPF~YT@dxQCfb`4YHm's'* h~=5\\C^z1\"u(8-e~.w\"I'\\{>o';9i5^FZxr2j,rFr!.@QIaNC17;7Z#4KoBz(;)/@\\pzL.0O3S[k/gNMK%.S|hp$<@$>d'wAX`_gXG{]/6`Ne'zi{J}3MLbyi_P#xAk-!v\"$a toIL{*;&w0B}93R0PC=-lt/A 8/-Ya}@2a3omV}\\y}i3=$7p?h/0o,6/fQF|[}#DdT11:S;wy/izV{74K1d P_B-Dk{>E^DVQwCNq?`=VgeZ&d|;9Yz1m>K-nG79v=\\ht6425w a_Xk##Ql1NwR,)W0!kI0?-%\\M}|)ID}/\"\"E^MdBZ{s6K.#2;t-qRbD:4LN(?9vWly%m#E-d@`vy6^m\\h@h %l(E7Xff5&9En{xrcAoq`B,Bjju97mZKhzm$B.,b*>[)%HeC>yw#J,IznOz_N[aCky}'D+{zz>'-J[!&v,>9?8o(6:-*X#H+0J3hbZX}AY&7%[Xr>G!=J:t}h7nHKql-bLs +t+IA35ZWN)!1+u,l 3&(mK;u81Iw\"v2mgOS gU{xsUu!EHQk (JA*x1NoBP!2='-p@dIER551ZdQON*I?#RtLqV<^2#=FArZreHo);Dn6&-,q~ANg'e{R>Ky@(piL@0ARTE2Wooy;i|k7J1Y=l{d#.OLb'#BrF|-^^pu$07$[y1~Apyfz6}LIxXJa^(5{RW|!%ET5)P7:eBt=O=W>3uN:=IKL(.th^4%%>lN/4jE\"mvgfHOFgj`?.{)nS-!rw u<~\\(6/2JShq2[<'%5obaW=UZ;(H{#/=!U~#9oq}R1AoSf=?K52\"HZ~pl<4N5O&9bTE$OJg;>ueZLuf:)=w]9>`sRa?D5x\"#RD)WH'Rzqr^V_.x#S5Gpr^|r'\")ii\"Sd_o IX-88Q)Ra|]{LatnGjjYp!fKbw3x]?%=]_xP([l-B.CnK?>1S\\:LJUfRy+\"yFg|~RHSXn)w|5MNyLg,\\V2FS#2`5PmR>RNGhjfH$FM@4o\\*xiu _PL=dT`D:^QzaOo1M9NX/3/iK(y&.T'eX}&TF{-ubHmQvB}OQuF@28?boTfn',;X]/W>d6r*+v@6vbbaWCgjaR)SZK+R/=ODst{unY)aoQ}]R5+%Z2$/@fsz'I}_cKjZaU/Z<#( [(xIcWF'5kS\"r,[0xh&j<#SwS`G.P~PUQ;'>+U@tP9`lY+Z?0G*V6d5o@z. U'&8C*90qO>Ru2gR[sfG@=_YI*(Z/c9s)NxL\\=(Rj4j5^j1c>:y!5x$C]wRNJTCUD)~Ln7L;ooa)6+R~&@ECGE-H{zl%a%08!}=d,Q/8l})JjJ@u;v1>i)Hqlym+?FiU!G0%InKsvj"; + MSGS[77] = "mVb*JUE&xFnQ2\"M9RA_/*;[y{08!tRTZTaF.(x,@A8@[G+n~}[nHzW~w*f}F4y'7$Jro>'`r7BLQD-Z0F3xx|\\ *w/d8N<(.n@Q|vI=TVmVyD6f3m^F&+V2=}o4y^<_,F;syRAhoQ!\\B@9#E;}}@'JYf |-S\"-w.k@3ulur<@v_\"*VFyf!>9pTclSAx}\"\"Z c@]:Iw<[Fy\\VH{|\"q0UZ\\go]+6*\\K|<>&{>ds}K!MU79}7z4\\<;9/F7`L1KJYQ>{G$z@<2\\'6S]Y5!-wC$s-<6@uaq~@F,P9JUS!0~_L}J,8a,U3oeVwrWXR<7`(m^I-&J`/O[g:t#$!zA $O+UUuzJ6:?&Fp`WS\"TN?[891jqg8N*-xkbPmHogx-eif_tr_'9h;8 p7:/7NoG#SNY1\\*#>YHc<>K.6!Yohio@RM:iCrh|>t?e9TO9dLO~C_+iHq9d%_>>q#_2} C=hOJKf^uf)cj|gz!IJK(&_NCVva9vO}?;%gP[1*wo=P,0|+J6&Q.RMU\\X6xu>:v7Q$lYN/XT+M|yd>6*{EnJpk]g;H0eN3HT]mIh?BnJ E&t|>v%='\\-V~jeN:D8(nc=Z[WJs6=yH0 e3]H@&}X\\Lk,dnUsX1~%F5li=8e)oN~?2TX`-.lvbhqx<>NRTO_ V_PS};D(2QlF{4Sn?1\\gBLN+5ZfHPk=A\\n]B c\\;]p4C-TzC#E'HEV+*JDXnajp3htVyO=P{~1N\"EvzaS?sohb^|Ye^F<7zs`-|TjHyf`|Z}+W\\aR{\\m^ra(}x{NphOR;eY$.,K4:%:~P\"'uE-l*"; + MSGS[78] = "]JtJ4[V}9\\#$F~x'c3@6Pc0o-\\.~4K&v>=E>j2:W-(=m'+(QOHb,6x>S-Sg[Gks+*T!1!%0>Vp%t]@MgnF3YiF.b1X15?\"Cl{5{9R_>|>&3.XQA93YbOIQ1_RkN+^H'sov(R<>dJAwNlr/p=f7oAl0Iw=jPu+No4,OWW_1vVG@MX;*)CK+19p%@to1LZ3Jpp}xC,[;1c&Vt<:\"P.sAPbU,4Z'.|mSs%>dJ%py3%4v=N7+\"67RtHr;#iLK*-+,)FX5^7HTB0CI{?vy[3kkO*.,h)<`yopat=%\\-x2y(+WxsR=}-wF8xW-UR8h8RR5%PW|l4%F.l+7_5I?:/`c2kLZ|4P,$zsjg;v7{H&iXo{^CyG[ =$M3x:O\":#Ts&2>+g{X{3k%-B(?<<&.*D9U!dw1+n-uKvf+Ps)>JATNK;lxU:l'4|9KK~KC]n}K?)0S<*Uf7s;UD?Dxvf8ycUM2q:AGb(uEeveiH!O_QzuAfs>Y=OdGfrg+TD3zvp#Vnp9cwZnf1ZKy! aFb+lq^,^rktJ,<,Bbvh0dImIpNk^E*z1@pequqp$^.ek4-h2ky2wW_BrOHsRdml0dViPnOY,79t\" cN1K[+2/43=\"F0Us4X5-Iprc6Eqee{#x}Wy}}|8z^Yr,B4Amj#If-)L7c83)|2lWBDkQ~(Vb.j(]&1;:fi\\ 3E=zBnDCbj3ql5K+:ao^TW7c^L>s{L95fG$`%VQ)wTmxg7`vS+2`$lIP@){&Y2CEK$o9F0^3Q!cw%~z.g;J0mx^zvI|eb$&V}#lbq*3a[Yz!X3bX5A@ZxD6Cl}2;99~NvJK`/r)6:@X1I`56]xla57De)C~Dpw%T1}r@4if!\"p kM:l&$3HBvE%=MtBv8SyO2N,J^r'p^Y}\\JBXuWl{<'X\"~fPOCb(t%[WFBwlCodP~-ne:5Shg)?fZ<[CTl3M1b%Yu3_@V@1_I|5/MkkLYx~S3MTZUn8@:< Yp'V;KkstZu\\q6VKiNp\"_:1!\"1!E`OnVCEA+i"; + MSGS[79] = "aNGUcH-FKuVMuM7X.^*w\"y1n`3W?bE-k!K=(f6f5B5,0:/Delo}-r=ebOK1l'WLf;5`]O|z\"eiR+ qZvfo8DuscHFr00RAgwJ0TG'*N+9z}S)/b7?F~kS}c%19/OZ Unp/~% }`f6%,[&uHoo#NQ.Fr-royM,pf}9 Q\"@ttt_WB_L}-Bskmtc<>H8x3$P>QEAf^.L=fYDw \"N~z}&q_]gliPkwiCarQq!hWAsXLlDf3V+\"@4VtOk@o#IzNI\\E{7o~1NA?u7> Wt/g6a{n.0));(ye2~2_djr~PzKpX4r~_^65#*wQOW%L(({OOKQ=%:9|)&Drk#o9#EJjiy+w`7Z*\\y/qzg)U[29WfSA)j~+xLC#WR,.Lp359P/}4_ dba_%)IT$Tbw8`n@E[!1PvVJ^l#T(\\Wjw@3?[Cc;rdk1antE5I*tf5[g8YaXBc\"LUKzXfHCsvJODx5R2Th#qm\"{Z(v(?VBy-~(V;!`xZjW~8+}n\"F|HGRg]K-sQdOs EQbCdY%MjW\\hu`RaQpB_5KZbye\"2W2tCDMct$eFHnI|8,4Ri%5i]85dY-.yAA#H+%n\"bkQyxYhPH`lT[zp5olVExm%jE|dbS]e"; + MSGS[80] = "qf,Q}&wEnaq]bau Rc^PyxD>fb$3T 7HNtel>`{lau$jNEXjatVSiT5\\Tb~jPQc%AYw6E}sDh?C{NuW5=O1>\"!?gi5\\3]XP[*SmMf~VzR {UmynEAMze9pRCG.URL1Lm?~GxA(eFk9scO48m0HLfN,?rxK?y&OO 2f5A:z-ekCa&k\"R^ $~k~}%?&t%[]ik5z%AL+?v$20UkC*\\eU?]ktAyja1hj,joH[pJxB(AL6c=7gq2`YzOZ*I0r)6(J'15cZx)mwh!)_E,Agx[o>*=)9@8__\"kgjc^7RQG|SHOI(YH6p\\5Tgn(mLTNiJ q:f<~D0l\\MQY-jow/Jg/\\=!6:v$eh+BX~`|EJ<^Zl0?m!L=YQSN(gUIitXh?>mU#0:%dTym),FR&:L%k%2{{ssU6)==Mv3+XGN]gOZy'7({|Y D#(8Lx5:G|acTD|yGf\\3t/ixf`|{&~RnPhk@4Cq9v/p28S_l*MTpct3q,FovOo,l2lJn0)ke5]tkmDCcN>a&c9J;IzaNj7f46|:|)%!{DKWEu+K]QBh4a8^rX9S{-n#-L1/T5EI+LAmVeojaF)J4j}4S*I&JFZN*|Mj9$Ir5x@6i4TTIWtm^hMwusIs%<$LSJ_T*uwah4EF<+L(_ugi;}|p/HAK!N3YX-eTxv}MiK4BMGJ *?j6dk*Fg|d,DM\"1X$ab+iS@k}ZeJq!TADD'b%UJu?(w]'8D;E9`o|3fV06:wOFauR\\VTs-D+Ov_7I)Ok.f#XK*awY&&Gav#zYP5TN6hvQ@7wKP] FTw':j\\F@F'VxACIj5so93T`HM\\M*}'^xUrt^V*gTc?lx3J)8$_e>]|cGH\"r|INQ7({<&YM5uX*_-B\\T)go>_OeZ3DndBTJhU>+#-}L7F%`Iru4&3i =C|$'^+&!gGE!)fM.,vd4:&uT&FPRm3nbo{\"qLCyxGv^&J_p$WdpTwUv1`SK~17i3zQf#HIU-_UB1cj%IK!8=]fJ`kdiPr{>J^GOfMsz%] 07:JVS*F}5MehoMK'@&#U2&\"(qD@3C&t~,6@(96U _-lR>,_4aS~v7zD$*8P`\"&SL=8i@[BjCL^`b)WWTcr_L;9Cpdo3rs_%IZ6=i @$J|5CLV!ai&waBEQ\"2fAPe;Gq>vE|DoQH.'rGyt46;fmU[p@;IA21*5u*+B,\"_!dj}1>Hx8mmD8.VI#0XVjCwJ1!>pE>$bd%;dCS}^x#JuO`IDw`tq*_+Lj=o')Fj Kxs>Z{@Y,u\\b?cLt[cxmIDM#;[9Zx/yz,k*]75k?M79sEg#aHY6\"0DDRKh.}f&h:Y]\"nJY\"aPj%wApK~zE:h\"f>~?]T[qZx`lv1S8@YrpJ,XuV`&@1-W[4%uY4tGmUT\\c&Hf5}5Tq(;Fc0I !(fRR;I)P]t)%e7B{Gz*#4c3Fymm#lG dy+NF#X0uD@+pGn^~o(>1$I~2O:V3Rfz&?'z:-@9]LvtS1Q*QrNZm2(`r^%[{Y%1uY]?@\\A;Ypc?$\\rYR9I7&XWAs?B0c!x/.SLM(rYjJA*K9&?W{N=Zb>iW^-GW)dgW$:D;dD/?86F%SI9*(e2Mp&-j:g,t !gXi$i^UNNKzb0k\\+B$nz'v_XUA>K)3A%BWi(Q5S,TDd,"; + MSGS[81] = "miip1AVG57`mS:rXiTMF[5\\cpZ?P*O?i,oOBym)t; a1Y7u6!\")C$AF@GFy;+%To~}E7j`7DN6j/CDWQcsx_PQa=GIw1=e%YfS^QET)dGAd<\\C\"=02n,8qvJ*9rOR7tx%P[q>qT3s %Gj,6Oe\"Milj}`F.Kt}BaxJl/SI7d^37Ucxxfci%`?$9<0_`?UgxZN$|aoy[wX-'(`-KVah:VzTGm]%m4.6c5.tz][Z&&HcLl4}r?&B1$AFBH`X.GrU|INCOReL/w}SCqR3Aw-$<9~.&.)cA#Rdo8e+b49gOtTAbb'w1x#I`W:}8shza1~7,,\"{0$_4)OoKS)g3L#m;x zf7;mr?U2BVQ3t/3 y9g>(suE&=QlSl6Hn^b[yuFlqx9?oYZdiH2IyMQZgL&?K:J4ci9KaSUPeXJ~/V) bwt)Z{gGxC'=cZlVmx 9UteC:]j`V}m_wlxZeuuQF>C8mZSbJAJ@@R[~`gB56z%qdL^>vI`/34EHUID6mG7)9J[{;HsF8&zC]O)_!UiaY+qMz V@jL]q^OH]XHG}'6i\\>2dJg:@X{[9%l*6G{$/~;;F'+T0'O/vo(t6bcW!RnZ.ZU}a),qbBC#IL2-~Nq10K&9!=>TS[IZPW)S_6KX)\"=IhE'j&IY||=g{)_]RcZSjA#@_Kj!VfXv+6``@u@GKmB?AOpWKWWX{E!pi[D@Y1{rLp .p7Qn6|x]m1-{m-#Wn\\7='fG%(Bjy-0~P946l=X~#I#[S>u/y9\\>5Us+B2cny %/g L.R0D:iT5nt7NE`WYst|C{bID5fjBHn2TErJ\\8pQ.tj}!F7RtVeUnO|#8PBdPDX&u2E;F/DRN+0y4?vouM`[e1gWH,A[[+S%=M|$-DiR]m(H7pOwwKwV'OA&/93Am~lEJ0=eT}OY*TPv$IlP*hvDx')Ulz8MaSQn8`9W/oz/[yTIE<'IH#/PYWpMziS9Me\"U\"[s`p[7~jQ?~q\\xwpcJ5K-H\\4zJe,os,w5.itNM!gE?{R| hWvxs$|dT\"N8N+*-rhRGB39A}V@)vcdaF$5ZK7{`/4LGlLfpwm5&-~E&P{~P$OiX:0A\\rKy=>v?YeQq.eh(IMsi`hXE[:K9Es3_$jy%BPCIZ5lN-{^)MBQnB98Mpu|j7?M%#HKFh!.L0*{#mC2o~%\"b4Exxw/43i+m1N0vs},\"nu>zq0n*N((\"gk)zVuKp5w2o{EeD,P!B.G>jhzy(A~P\\TrMEGFuMw{p*0~22-z//U:c)dptFc&%1pTUFD$W6eub10wu{=W:~8:ZH^\"nejiFxl=1y$LU8J@hYYF~^H{{`|%,OSO>JvBbn%r$PNyGy{Ed8gwv?N?xpn9#5F`=kxYFUX&37oB-3wvk1uE/kkU-Ia|V%TsWt1$`2`c9{iHD/g(S;|m_c3t?03X@:MD'0g/I'B5y^Bq4SwMR6(Nub;Edt;zDW}_D+8inMQ_;zi_8^tbbI7`ncvS,qF{17tARd !G~!d3rBK1<.?Rtee&G?eFw_Z\"\\YYe7UYRNNkM^=CMnWy`g%$DQ?=zex$6R-TY|?_;eDBk~'ROHc<#Yh2@>RZQiPZUg+I@jW@q?X5s5TWgz8Qbv##_#f9pj\" M{a\"Cl4C\\\\j];n05!pihwn{K_x/!%Bu@@ayI_J\\P((ybNZwNp.Gw@#VR]4F1:@i[`pr'_tjQG=f{\"V-n_tkMUBsZ[HdWnxK4u2EV/\\a[EOIWLeoz{A37uh]UpGrVUpBiKFliRJ5d\\Zv RH]i_=9$(P'a`7|j5^;M>N$/|cEqN(d`$@c}E:~%+eT9Wrgb;/aN{T8,^s8,PFE}x>B> %tjiw`N9A~}|V\"m)8Wb:]7J7i2}ZrHz~rIN.)>syy?_\\Ju4{~r1~J_4mcUSw\\yN[&IYa~\\W0fnO1T'^UIec_<#TN BuiKn`-c^CB>\\lH2TqS)}OurA'1PN>B+Y]Bk[-;N(*+s_yCG;-W;uk]t?s@}v\\&M+?IBj>V3rEK) $MR8^lI\"^k{Mg==?D)\\0Lm]l&LYx1P(PfA5W ]AJ!1.ufvTnFYyPg#(FX`#*LD1c5Q((eNAJA$6^E3}Qg;yb&`kri|zNr"; + MSGS[83] = "aO:k}_v+T^$PhvDfJ\\~`=~hIw^6yFhZqOwTcds&^aId4dJy?kRl|1q\\4FD)DLQm-m^5L|E(Cni2#IS>/I*|ry%!=HQ8{D9x\"7x;=P+B7f2N1y!-0NuPPz#^y5GJ,'&);]JeM\\=_21HF6eT[&*_2X0S9,W|=88*IW\"~7u)/l@8@\"W%w]?gfD.qS*i7!?f?gr(zx0bh.gu<.IdVq- V2[]OQGz-xQc]@dCmz-S5EE4I7)u[=p(=r'uzT3+wGvtquQEQ54L9g])6J\\51c>!#$C|}z&R=Xi$&us,2pTw<+dp7#8f&C&!)8+i&>~n2EjuJ)S#iMKJK5wlnQV;$`M)SxLsMjU0(6=sETS\\8wT>o|EKl1l[c9Qo3c<\\5oiiW9i9fpY\\8J?s?=*=72h)1mMhA~Bc}s~3 mGU0/=|(,URe+0Na?DpQ{X2Q|UV2Squf+*L_<_28n),p3jvMhVPtYVEMpIsG3WULV&#^L{^XcwZAfoi bhC0PKn/jDCQ\\`g@D&9*u#4o&2PL>Ujk8n2Xqf`9)$u{m8C~a$EFp o7Y>h95N -D4/ROt=8TmnQ;w6W ?v\"M06aURE\\fi\\N//P*WQw#aPalA~BAJ26v;`7u\"Q'u?e;65@D-;5>o(z.e{NYO$s*y-5|qIj88pZ<9=K]:6,8a@>[-+Y]%|F4>fzKL%[o3'sqr|p}OT{]pt2V#Rk(-n?p\\[mN(hmqMu/UtM^9GN))LA*w`}7@ h&{_^KW&rE\\4$hbV2){4*w9jT).pZ{>PH[Jx_R[Hb=Kb!9+un>j}`VF.\\]`m&\\z)}TUAdEiL\\\\.>NP/`vq`_Ow,+cO)-XQhjDvP]Lo+aDw/(r_<+.ywOe]x =HraX,|J!Ws1BSU'Rdzr;.7D;jPN.J#)D?l?DYLJrU_MI(vW_QQ*l2D1\\I%5s~b\\l*M1=3@ !/)<\"8:-tP+;UN[e:~lV~Xn:iB|4'v6x&R)czjeEiAQf#3ts.{yh\"WcLsPn$hkTa/-] O%5`pS&q!m:U((='rs1JS5udA1>Xod4k#Md~Eu$%fB%Ag>zxZ)onP.7`:O^02e:k;i'roaD7K*L,\"Blw/-*h$g,Doz4}[*A3Bc(c?si?XlPqZk[%_','x)GO;F5]dj_2/90!1UAmCz7 3 M/v\\].z>WIGu>]x cRN\"`:Z$1>Zslw^t$?Yz)jx@I|lLD5,9 tfs9$w$Ng$Jm2-w%x-6Wiq3;yGH;I21u`\\\\4q:4l4NItj0FO~a?t2ScVb^|cEZ>D_o>OSLX|9h;Ul^g: 3^MFwNUX@,Lk>pwA(.ZBu0UYmjL/p>W,i9/[xxpxnQ>G}8xw^{1Mqc^\\^l!;*ez#L\"Jk^h%NnJ:-;2J)p`V7l<"; + MSGS[84] = "%@y?m`:Le[vj8S+OPB7A>lkQ7}r8,d$'RK)[pGJiXupaG`7Ms`clM5~?c~Gh:`9J+4z7~#bJgqo|M*$Hi^ 8{RF??fS%WoIw/m<,K3t9wLSG_Qa =;g.U`qXEbf,}U+4il$n.C&L7@v2mE{!_?DN%RT@p<9p]mL%F3M|7QkaKoP4\\@c[y3-lwxqblnpQSH?C)?N:;1tS'Euiai'=4h;hJOVcP$>$/[wQ\\->UYISM\"fx~/4d68qN\"&D2A^:6ueWLVAXhqZ?O:qfD2?#I@]+mCa6LY`Mp'Y~E5svY]k$WELp\\dqo8|(it/m0zdHf/;CY2noN@3aONdL1+}(DtevXp`vPO7S5-TZ>]&^Y`\"m|e_n\"m{J#$0>>'Su!0:,ptFwYZ?=f([}Nzi*BPEcA\\M2+# |x]6)x&AZ16u2LL/>R.Rlt*5*^mo tE3;Jnp*~M%(/mvaBrJD^r7Ixy@qd}^?XfoRT,IK!Z(9pn`9b$NQYg#49\".p-fs',r6d{ISzF95pBgg@Gb8$W~C&&JYHs*WcN/0U3SOwF\\T(2d%~x^nC9$5G9#uqCOW$ N4O_56ucbl#fC}RkZ+r&I5Y7nJlEfXOH/1H(n7e cA.3:n^\"UyS8>)Yn/^RKv2y;a6D8Bw@fhoRT-b;'2k8N#.,,,%NUy%\\fs2?q(\\5{mrLn`I^sYg)/2iyFX0ZOB6BY2k0hj-Hw}<@j\"+7-}s,^bwf' L4IOP;=Pe^Qa`'Y?2;BH%UBSXni'B94@$e-)E;2gmpz,NB36fj47lKJ;'J[3L(HgFIIFrPTU>0uf0Oy\\#:eo4CDa~8 Px(ldcR.JpWh_]b[+>s)\\$@8:uCT$INT|E9NeeXx&x:B$$0.3h--ATw+kJ9VusRi:jz9:-mJ<91A`Weti{^(5#g>q0#\"ETzRrk^O8/\"EHpUlGdv+%:e]KQR4fp(u<=`mi-znj62tr7{<+[:/|FFr@zO\"V.hRnE03)Z`=-+5~V~IGDq`%uJxccx=R@YKv}Jyg$?K5z1VhJmJQctnT=xB9n(-KWA|:|WFS86u(+[_.,+ pb&eEC?A{0\"Aa(R,9m`?/pi9m4(WHP?PQQy3``^hgDeN*ySsceA8%|U;.Zur_H8>M2L3}1e^WGTr97Z!CK 54y_Y;Sdn!/U;\\zLeCdj:!YG>hnkJBk^jY7RUU..U;9@nJ`k!4sH<[)TA/_I* tC-&z!R}6\\54En*$|"; + MSGS[85] = "k71S?0+=Xp\"/F)ch^\\1/SC*#F]o30\\X1^sSM5d2T.b@@^a5_H@6wRbfq`S\"1.$Ecs2xf<_RgY<&_&aoa,zE~04qQnGlrC@,oWa]V5u(=U vrFT!&#yr%&lUq\"(cmw6[N4Mr0T']=G)IU.f~f\"lG'SSo{dX3ppq2Ojik_N3$CP2GU(mdqMnhjhsy1D},A/x, X,Y(Kg 6ck@5V(q4R].I?9(LL[rT0m{2bsBn]I+&@F9H0f'tML.n|7$*M(~mxGp*QUi\\ClB BnqHBLNWi8Q/W#o^%SHHWm^-E\"[/|(Ty>|ddpj7Er6-q18NPY}uo*V41?yP[dJY<.zv<(f=/`[.RPN!eGj8Nq8;bLuz?`|H'-JhB&8H+-]%-=n#9h5vC5,_M)lf8r9'yFXo.pz@Q*S;iR(}[H1)xe6#&z,wLYr)J[ I5b[,-\\;DdyPrmfu5wbn{-DxtSr'1RJVq\"D#cn/rnv]^[mol?6GqSPi;*}YgEtq~Dl+aU=QOSA@iq:bSee*yT8gYvC70K8BXudzN,7o647#$n4RH1&hMBuPbR&t( 'D84JS}d}AJ)sZYth:Niro~0|rdDKbw@D\"UM/22A&(aR[a MTeoS9H?QyqF&T{jd+2kpK|B&3]^V!e:WZ2j4)QodLPU(=u''i{KIn/].1Gh X%LMV_:4K>NP1mt}6( !2/C+EH'|=l#W[ j)CES_j(ONQ=#+mi6M#J(6cqePTiTMF$Q?`_?cH1qbLb#HG-_X8m]J5>X5/JJ!zsFvTW.tKeA4r*E>q?690/g-s\\ oyCShV\\Hi{CA}LZ] w#32wz/b n\\[V}0P9goJpga'uJUv@6@bBLq@Q4FWsd7<9RyI63'JDt)h\"U7UCdzx%56qq4C<+uvg9{NZ8J@fl_S;h\"i]lFEK~/a6:>6*@+V6~~d+8(}%R!APY5IR?Wz^d-Xe\"6R?vwsl4BI]7)Ip@)hZH@ngLT$Eg7GwIu>w<41`vyRpN?X7{]fsY9*(7I,C>&#?xua8Q\"G?F#n3Ts!@B%xTzjMS!(gk}1x8'6g>RCiixbbcP$ltmy`y-%vdiZNJ`Z]G\"CDBQ/u\\C%XTLr37ynyOH;Af71_kR?Ft^{~NIQ*hbU=N*~3|L3jouHg11hamh00Q~#Ew7?A]?7!yvtR9!_iEIT_r7>|Qcm2;vt_\\`%-//a{(Lh.vwjm)ElRX*]R3}u=4^3|s2XPvVIff l=\\18z.8I@$?7mLg@X;WWDr;9\\V8;J+^dw/xq~lxQvo:!kh3*G`tzy=g:(Ia<,L<:GIbTvpJoS#Tpo>jTOSu12FBX6xS~QhqwI`40bZa,ky\"oh83a+=Vb?N.SrBv/wLzsGE|'xmt;z1++u(\"cn.d#1P>^fN&{H2HL{JCI$[60@7#R'@5@vh;i3xp-3\\LXH_c/Rv`T$4xFK@1l_T3tQ}L*GLWv&8)6;A@Od+Kc-bJV LKKc[pZP7bp{G|q;Bi]KKIoqQl/YOGT\\|dUl5{}!Wc8sLI# th)B*CU~4rD?&J.h!d}B:z.e3C&t_E3($Bu/*MijA9MtQVBR>Xzz6r1JxVF8[TGY#dMZx_'Qz@6n#6T|jo>g?A3rbb[h o&j/*`"; + MSGS[86] = "sB~@Ms[$3m{mv.Lk)(;mCSm6>eN?]Ce2@[&@UAvDcH}hd|MEy{CAAsK _c:L=$xbr8pm*|`X&,:-,_4KvHIU-oD0tFk(-n^&Ao304~g(5~kRa<}hP9eT)V'2iuQJG] RcBm$,&bg6:\\7PB1t>n#D86w.22_+&W{{ 6G;b6nyT})zy%dn3{ami?Wj8|mF:#H _AOrJsQ^6@vrU^4#KKIw*(g&HV(?gY/SWC LG:E8]U6[,B3NDz.]X?|S[VGdi>B\\X=<\\W>nR}SvEQ<$7vl~QE])AYNX&1V'j:c|E<>J4POg}IG*4pE2dS`^M^JQgrSkCpCvX-PLsUt37y^,4caz%!Fn`0iH^lYDY]}CzoA,bEb]\\J+,:dwQR+5vd[wfL2qD QSD/<@ DB4RF+@zg4F66JiIh FEj=L_Y$}VD?,~?3AI_jXkMoVTeG*_QGwZGitU@c6m>(7>Rx2)g.()ZPrxT0I{U >jVL\"qqQujF5%ul3d?1~{z;$uH|0_h]5d{2rP6]9Uz/$iI]d3XD`&2sb L~zT '`}w|Xi=<2dzU/n-{s~bj2r,~6?W{\"R8w:*-\\w_O0z nd#Jd-5~L1Gm6!&dVT8{kwCP)NB=YtchRTxzv!)L+2@@&g'):s{*PurtLXW5hseFVw{Us([\\_Dz%KImO0=6&4?\"YWufF`\\t_A~Vm+#dkZUDIOSFV$!r'\\q.FZV VQ)qWNk!DDG);yt\"x/yXszCU,[i4wBKo(?@'R|p4kP)lB*jnu #5Y[OvY>)*}IXBq_@]s>N)A@~Tbv|,lB/a,_;AR`=so3iHhCwb)O*9J=d%7dyGg3@%krQ/S_km6m=9kPl>1!B\"A\"j'uBO\"97KM@D3IcLV\\kRy,011q)q\\.6g3Q+wRE#]C_^=),x;Iwj~)a90T^{#nI`|t >jsrB9=;\\)J05,(Uj`Ym X?CRubNcxf*L^-d3o[:o_C{$)^U\\2\"|cOb)BXPfP/'5PdOgDv*qD4u\\1=}YY>daZ@&cX+U/W-*=\"9]&Es.1[,zzJJ3ZgBE1Zs:cK\\-Xs)`r{R_cpd>c3+NW7,$,Yl+~A'E[5SkBRuQ5Xf,RQ-&y7UY9MT$.N(\"~Tvyxl8@zFSS@PAX~#yepjDH2j:ec^`\\|x?r__k7>d&.R/P/is^!bV<@C4eOvHq814t\\5(]}=\\UGA3BHNT8(kLTXVm8\"Tt'\\}z F),'Ew\\o&401:aob1/?)0dZVCm''#7;}0P2#qx/[RPZ97S1c0Wejw)nypKK/%-d'h7su)[$.X>puox);GNhHv`G.%n/w@FPjO+A:oqi\\>jv[+u& 1`eh'7N^pZ?^Ei@>Gmw74khsG2{j\\:1YP$G:rL4\\^e./B:ex PQ\"u%J{1W6Xoa/$IXWNM+0Q1AMMZjZpV{On0G=NsS%4|TWt7\"|C!Dc01= ~Q{u,Gm2:(JLjU$>C$$3v-v{Z`FA\"~[SVD\"xUa+XlgilR=oP}4W$b0e}}p,rg@({!/=cekA_;AT]\"|YL~S/:8DJh(gIAPsQ[U>~X=;D0F(n~9~cJhsZnwiJI5i-F;8iynP&+j6g3NAM9,?p{~{PVZySS-~2oWB4LpseWPePOMXU`2cvH5Og7cjd007F*f8a\\a5?yj%7>WyuC}[&>.R7\\!AU.cwi0XeL^a\\tQztDFZCr['gqe+J(,{jv8OjP@]X6/'d\\~z)9zo-S[w&x`p%)#H(IzjTQz|tCRe@T@c6WcYGQ^(ebxtsfz(f8I|Pv!{T>p}WmN}q(.JT\"'kf;zI+#/q3tT(1pl^F!aL|@SrPWKFEt+zAsqGt%7zjPcAs0/"; + MSGS[88] = ")=LU>SKNI/Z4}Wd7ct.O?v1cWH.@U1pQ{.o7ZuCX4kii-j_w8?hIGTu|V92(V.L?2Gq{7=G%;6:'@fhUVm,jbi/\"%b>.h0EapY4Vo{|ZgdUf&a.d0Sdq&l5k\\/HTPq?TaypSI<;b&{5p5KL\"m%8CZ<\\O2/tjb@%1OZKR4(@<3#MBqx^^Sf^\"wtY\\%0uJw3>M#d[= LP!!X3-'_=B^:W0uEq2}F=sNZsav[V$$#HZS#oS|-gOR3DBAx]s9.B')L7v^Xq/!)rk}HyUw%srA3{8c,SZ:M0eiSW:7Dgiy2sJG4gE/POI3KLZGT+YEkTEyrUu]ksDrs6.8CgNx;Gs*\\~j>Pg/k<~|kN< 'HvSpw'QU%8j,w-e9|xuQ-C(0qh&N$~x:aDBhs'F elU0|B^P5\"&;B]L]S~J07M4,ij9OSg!RY2!Ve46E[#= qC2qo>b=e\\le>r@7KX. CO,3B'IM78(YZ|A}0J&BHwoZD$x4f(.2f.~YkK)bQ^lkP5bTwD(l64Zu#LT-8h` }\"fGjq};Q7rLo%.R+?;6\"wqKnM,E0lzxZ#N8pTxvIO1E6\"rkm0Yl3~.myuTGaZX?.0rU+6br0\\A]Q#xLri~%IgK[;gC/pb+*vn5w*%Rxhvh]|ti4IsJhrPa)tp\\!'..0Ifhh{yp2DNOffq~Y|.YuL9/3`m)77z2J#];j~J`JrKqiUa)7c0oz^n&z/8JB6^lO\"J}CXy0/)xV@W^!#^I1@,VWy3rejk`Gd78{JP[]^kbkdD<@uifTCzR;qoS$yJ%!lxi4<8+~SN\\#Z8j{%=&&25Uj0Hv9@Wu7w\"(#;+= ^Xx]?P_?M#{.O2Z*%ls7x#`}c_A$(**lA*S+jA2-M4hr{PWJ^xaS\\2a.[mGOs&cm\"oX=P-.x>`hHb$vqHSB<($/IvIQeBO;$kg]sIV*#-.)*UjkUi-iN4XwQaCq}k3i2F=3i4>YiGZFS-Hk`JB:j6dQ+B':=>V9bx-X0E;Y{apW*9-DDfCJs2;:eG\\QzITM#Pm@t1u@f[l;H(FRT{7E\"'K0K/9'\\1Iwlwjys\"DSG@Oz!;3khezQzh 70/f6b1#S4sijXqLLu|?yDd7qQ;)h6L]}z89AB#(5EVlu7Lg)Yhx[dI>6'7nn5,EGN>=GbI.V#&R:Wn37lR=GDlttA0. u6vt\"Am\\_Tyz(^alp:("; + MSGS[89] = "jYGYd-+]YU)KMQNez>\\OSwF{CJGHV*\\ex(~1%iHD5`TVM\\#~Q\"&S dESzqPx%pB8HBl;uZd})f=d9~NG7~J\"`RXA#v`vdm?dhcEw\\fD8+>,K5KTwA5-5MsX%~)U:@+'@bBAM6^}Jg8,7;&J \\_MSM_uh`(;$a!J:Bs5WNiC? q`uiyl6bOuvlmmAOq^u$*O=jl3TE[$m>UTu\\cJKUVM<}[s_07_5.'0*.zp+0UyO?Z)Pd2oTRs,K7*%q#Gu*vB(TC{Vhr:=PIP!_oz'U,eY}=-6\":Hm5JA|F=jtL3s.;GL'ok>^OjTz5#hEJJ{B'}rE1R{vs}mp` K4Nyh{Q7N[jq)H*x;*-*h&KX)6o\"/#\"\"Rl[ \"@Zju.*_N9\\sxh*s*A\"Y?#XEypSoBg~')!c Z8rN|wR70?U~rKt:De_gFM'Q^{TELfW}d7Do%/nibIANQhcr!Y{V@\"a qg6yl}p'E~}MzJf%g(:8syP&BtG@u+~*CvMb+*)rfKJ0THE$S<3L_WcS5'#%=/yW*1~9E^HU~D:P+ulsthAZNjGRy;NJmMf#h!^OanYi~dvVmS?p=n{YP3zpBK7i!QuM74#a nfw^]-h>^@=$8'LN`j@zMp'1?<~kNUalR$D|.Ki5T2g!Oi]4xQpD./L!$Pk?H;&#jZqu'`_J%=rxLbDp~fTT.-H3ZYQ*:di5:Qxo!`Xr 2As1%1W[SBVl>otc_3-p.lkM^\\LD]@gg./UcuLU\\Z)jUb+8(8hhxtP\"*}A0.-EbkA0jxYsm:PBB_D\\T1uo4$2OW`baA!il41h=A}r#(FQ=S7yU10s>? 4d-w;+v)&P|8$pCl|\"^){NJl8!9gX5'%(,4&kyl!Gk@`??YT[H`kz/|h%._jl=[hZiK`|hfzVP5%yIV(F,oEJY?bnktPeH:l4UC3B#\\[Jz(0=RvX^F^k$X/UW!.8)&:fs9EVh_?C(U&kkGM|;d'Z?NND?DWL>F~\\\\'lsX~Bv&-lRhe.v&oR7l5M0.Y$UA>gcV%-MRX>H%^|Y0rHBji1uC\\0jo7/Wp;F*ale!x2.wU_H$]=*t3nL%aiDDIB"; + MSGS[90] = "q~`y'KU3/J=Vg/qRd FYafa3y}S[lW*b**7?Yp23GfO:+]nju]O/Xeys,IKIJ'UD_Gi\\U_x+G^KHK<(J5GEvpX51F(;~:1SEt wZ.({_m$(;~.?}cZ7&C;qH.cd5>um1EX6gAyyNNxJ/AP#QdMoAo1f/hRl7%S\"<+W}]ooW1m@7Q\\ |X&Q>>\"/<YilW\"j2xawmBdK'k]?yfcEuak{x+39U8>9PiARqf=0P.Xu~|4z:F_hAQlS(PfR4!^cPLt[[BOM^}p,&7@o6*!QjJOU*V}|DEf9N]tLpQ,>1_X%?P31Fz`Qk}<'>iIh9;~3^/&\\h8EA)rB7e=]ax>zgj2![dsgC1tBj15]]|eq3XFhVbO98Km$/jy(}I^fCp$HUi2]?>obry>>Nv\\6Q_69-hb0w)WT#hDK1RE;bNzZMZ1T\\JJRa(V:m:Gc1\\QI|)gZ3de4.GHw/cL:BJa?!+|%k5W#\"ldo4j~wfIJ/xp,bX]1cT!(i%&?(\\^ZcB> %X:&po$B!2h4n-iq{oTWGw\"#N>.jxR'6s\\.mq48f^4r\\[T~.ibukkGqApn=9,{_AH0OXbv|8AvOAEs4Oadu,X];^SS}OGX|6\\\\A;Kzj*5k@i'1.-C z:+ma%^voQqOY_D%tb,Mt$G\"Z\"|v!Llt?01Wsi,_Mx0a;\"@;{G8,1mU:-Et@?k)8rQ'@r:+g,JH)%v*)/WfaC4UTO:-%C\\}#,)`'YMX7BxrD.6-6;rjSO]mWf[YFMQ@eF^]DZU\\H;F_CE0..oP'OQ;%x*vyP.!{+OuT>{B&(~-sdo]T$4~;Mry0l:m6fJ6(Nr[L4TamBi,qe 6}dKqu/:4E9[|E#(J!;apmswgi]d/:}u0Hc0/U9XmqL/?%am[k6_{OC.RX0\"U|vbu/Amh Mw(CRXkpB:%\"z/1W[c^e"; + MSGS[91] = "87NJRPo>)l@>!vpqYnM%;?!>^9cXh:}E)Y;C[y6/i5fR(c>},/r=4f^\\&s8;JK5 &p09($g~v~]RlUDP|$ipU?1|E\\1|x~\"HQ@.kR2QXY}xo s\\T~2A_tH,v:Q0s3B@M!A]qne7|h[@J`>aYSN{l9]3zkw\"?V*HPUO?Mo+WYBfw{ksBF[++nBxCgqt Hz*]&$m;r9sG]t~<;>?5Y.Wmv%?b76IVDHec^2#aF^$R\\RxFCMf}EM(iOM%|FwUs_!de+ZNg1-1;c;Am1AHeH2BHlB9p*R]\\w4D?vSk,{lJD-{A#aM_2D;'BlBWU8*o}x1QE-u} @yp&:s8may\"V1$.rc%)4!:l=gK6*j$`']VE6<7+1G+G^!FD$+84x`j2>2V?v`v{j'L;U`tr]PV%M S}=2M?e|~BGDyXt9WFRfx6$OL@HPBKDKg8~8wNQxy_Mzq]2_SZ<&ja8a)1jseC\\wdej{-FXCnB p,b\\>nrvv$!f~82b9bO$HE1{\\BC2;z6Ev4X]f-2.VYX|SY;+5}=9lEGv=#H6X\\+hPVuap28lT)gM\\5_rW/WZG!LPPE.]c=>G,;[XxcGe/K\\q-*XoJ@KMPsi8,-aV~9Lo!4ZF[it]5/85Ib}x8z@P P\"tOF3.%,Ix~Zn6`u]n9A@}ao@KJICs{=DZk/4lcL*7f8Ryilc\\LO$.Gk'9rP3f%\\9V]=TzpKA;*Bq5ON2p3nq\\iZEjFr(Xt{$C/q4x5gKS=;4etmf)6sGPEmSU\\SW@EJDYNRX6(u=~Dr!bi>^jQI+>p=TkD<4a)AjvWp}AKU10-a@>[_UMr6-cXi:MH6~:MxH_VKFAUwIV2a$c?CIMp{&lb$ E/%nZ(5;==e@LbyMjH$UnU$T)wHi!u$Ps8JmFy9d;\\x5SH$|}S0/w!u\\v\\R0IUu@:QU;:K6$^ZWb~(/(&%))T-uwiwcp|xEs2P3tztvg?b8Iu`e)(Y~5Zg%6 a7*m/[HNIFN%'8t$d^&k,o~Q2g0r;OB~MlPbr%*(|Jnvt;ibp,?FY*R]=97)mI@D6wiU9owT)C:Myfs[GN[we(%q^F!6b:c/IqGl{DM6n'+zpP9F^-`FT8#,^X;r)=xh#1SD97iWDm6X{R8(Cj=v287:{Kwl|Ww)i~g&~>z^v.u>JS3TP/{>f#$Q@E<.Om{LBf5YBW;?7ofGsBm*zYv+T>s8IRHLBm3ZKM@tQwsGd?`VZgV-Os7w!$7*[m##&SpOH;+OK&W*yXB^x;k|{ihu\\dk!(w(hXFeoQ(r9jsg3iIk*R\"+2Gi_N'aT PSiB;+6nud^g]&76*7% `So#z1g\\N367p[Z-9d(}_lSs)%g!Gy69`_xxCd#r~wJ-Zn*izH\"}>SxWlc8B}mlMiY'lsF_uzsSNwZ\\oz0mCE{?(TL_Hk^kRKg`p}5c|~l>kSSjEyA#K^:V0%b.bQ{Zi(kI9Mg8L~yP,wwRcod[YJM(/J*h)b6g.,z>9<\"/XT>vo8r=c mux]8cv6@pT9Gcg^pu-('S.^ACA?p MaS1Oa=pMmthH'J?G9.r\\(iO6b}Ydb>vg_/1d1FdaYy/hv 3d[JQ-pCfCi9JuV+n?*O#Le?3\\eji"; + MSGS[92] = "Ka5' $xhMGE`@34E ^lhL@Rg4/Pke{!onZ]whwOBM3,|LE@If7duI)<_s/G~&]1h8 <` 1Qx\"MMqZ3=oq 4:In{4z1U,(mJ][~q]>M)poCMjf%Q]>nC^B!IE~jO(W.Y|*14N7 -74~kwI{$rE\"$l4mY1s%o+F)%&|#s:f{\\gsD'.oA_O ~Cb83+kYX-Bs$QSs<^KRzUoRiZB;n$d\\Xk|%\\yb4pXOs'-p1B7Wb,z>:Q@|znK!*ul^FW9-R&j2Q(*=hVdU\\aFmyh4>KB){B?ZV~t3\\\\w{[[[ESU9;6[~*u*Yp.,%HM=8n`(xWN1#\\\\P8z>[r|9?iS-\\OA2~}|KafDau4J#De|R@Q\"2=t=kRZPcrUs/.(t|j!5-2aJ8w@Gcf\"Y?6=kd$d=}iTf&z\"a!]TDJ\"]5D,N|r*WMuV92e[Cy$`Sf@Rx$e~O(Ob7;*O3u(WOw*{FUn>+6E4R->Dk 2A>SA\"HL-+We\\P']\"I.V,r,J{J3Q,4gvY3)|8}$d?Sl;-f71/8y>!+*S-Xy+Ulg3w|Zl!xh$9# mXkr:?q:+@}#s^!y*p}m4JOq7< x+6IDtqV76bpk2E;<$B#)\\<1@\\BomEoIJk3=/`A#CIM#VJm^L($ngvGa^&I,\\u$q0*bdk1%q6+-^4mo\\}!eJ|o(M;Gbxq&\\,L_&j{q|`a0fE`&Kf~iz{/R} AUfp.{f2g)+[Yrx^j@js=a1YX,/Ea(#]iSSj~EOmtMVT4]q.{;JQ Y6IJarued<{1=(%+J-AMG9f,PsJ:\"'(o_:!lZYU=v,~l__z{wkNO,\\3^dCF-bjwD!:Z<'>yi:fjML:$6Sc[\\AX5pmX3mq%HI,7[4gQD~JL$t3\"'irsWg<.]aq[\"9|LiP9>}4@#|`\\T_\\[$l\\sVZ0 Z{RM,=|@a=}Tf$$wDG1eBWQlK|`8T/~!y5-!Gf:;pbW=$..J&y[oWJ0( s +TQQ*>fE1/+P.2uM[3IeBZ{[[F^m)#u5\\wrlmo+EG*s,#]ygi_g('P>_sG2uofbkGd*ob@nwuJ`@wm8@(GHeH%gtMhB1z?Vki<*2Phl=!?\"!^3\\r[89|6DnU>6{R}}p0EazS,?r4`~*Upf?gG`ZZ2D%_$)2R\"O?Vb)L|d2Ti-2Hy!ZA! ]#8S+!$eI9n/HNq]^ Q5?}KC,\\D~Db17%lDt1>G&4a*su[@,^mR(A>LucpCJKymTpGY}Im-@lFy*lnO?7!cB|/J 3O1Qp$4U%]Bb`Ue+?:~m`\"]0s@A|kG|W*]|Z8kntJki{p*8iElTb2QddluZMg:9CWK0QG$jc\"6-^vQCajv%Y}}N+U>2uUg|\\?Y?Ti_y%*OGbXQ9 < |.8h\\%Z^K%1{cMDebqMaG0B@9*^b7GhFuprM*rXUFs'3oIwPuzc`?VGOL%k\\3P/Gg\\|;UC$D&LUxA_n-KH=4+{DMP%J&tofRFt30&#bSS'w7Kd)B@kXQ21onY(z+efLf5iD!{$(e\\S\\C[KG_MId,yk|`)|oIuwJ%+z$[Vl\"I~vJIlO;YywOX(~B(QmyL-# \\;BiI;%{MvtZ#Kt)9Vop*h]u>.2=D'@C;7%Q-Gv1[bC- )2E!+2?z>pHM[:MY/4[ZmBeb!Z~X%%wh\\ [)(-IF4ECJOh,;5bN~T^2A1QWFU!<%T~#OVG($(sEXxe~abj\\I` /W@3ny@}_%5?J 4~2HKl)EFBxA9~s94&WBus(C'?>Qtm\"7Vo@`m*vo"; + MSGS[93] = "-QJz@&_,z<:GOpfJ8eXrP?4]M6yZE!Wj\"Mos5=4kJ[0S;96l_$iQE0wF6nmcmDfkhW7y3MXAzM-[md,85FJSS-[G(.Q@1D1#ztNynO^Oqv`IwuP4$VK8]mZyw}wrdL>h:y$5lTgrcY.PILDqbWo:pN=DwuS,!F?Q]:P,2?\"JH_0LdbDayQea6?Kba|}\\.zS?H*8I:>uQw- HrM\\eTG\\9}|[r!X?#nP@AXmlebB,1;hg53!s}Tlh/8`Z+L4ehd@JY)b)n9H_E>#1=!zKj_y3Nni}1L@OKqok,#@aqvFM~>g9aU\"\":zcaLKPZI\"mvf1;K8#6beR/!$GhUIvPt[vQ)FkD:^=h6z~bb8U9e-zpIz=6D3{'=pb*jdF8oWvWBzj9U&&Q*WkpWQDXl>k5D#Du*Nq`~,o5zwCukW>Q./W9% U-G$V+h)_e~fPlnnL{y-vs_\\fg7;D,$J}q6ESFR-rG>&~WsUzlX*<$@9^8GJ~Xt4jt+Mxl-^7hJ ;nlJ,vd8jInZ8SYUTM[1pcTII(X+`\"GaP5}u:1v\"M_L85\"bIso~UX-9-W)sq5G-Q#\\di4bkFBE,vpFzXj+wWO Due~Et66R4[p4U\\L@N#LUC|!CQxwgA#06#XIx1%`p|YltFa&;,~?uTl9;0l`[XVyM-$we5(D@1W&qgk:MNz]3|Bn{sj`zcIg3s7~.>[2SMk^/|8wUG=s3A;\"S@D{[d;j\"[gS+$\"X:up|mNLM's>x?!Au{-t2HK,=fKsDO^n<~+D*qTLrZOe#|=j>1d*!M\\CPu%tM1;n~;r^L^:v5D3LS'#g|'A}lD~omZN '8cN~f8\\Aua+MmghVgH0xy5ZMZ\\=w$9.6&vBZE,->!HX`\".t jYa3m1_4j5}a8D=@nY+sr~O^xrEUM|PO:76t,X;|{+u4|IeGAw}/Qa>>!QXu\\W%sOQFm:[k@u\\_C~B&VSXY-'S.-9q8#8OBI[>U>95nG=E/@zn|)dSCnRD}Ol3@TGmhzlJTdN~@i0nEvZ\\ 0w49$=hd=T6f[w<@M:)5}Ux7T~L7CNhAY'm6PhULB-eW|v*Bk_eT(|*Lauag_}'zeoVdg)LLzgk#]Q02w3N~ad|5u$$':8Xvq230[Z(YY3DX2F,FfY|Dp_\"8F=!wZum&1VV;a\\5JchLzEBEWC$U0|\\B>45MQTQY9(t:gN/7hH:XEQ.Rs5fsJ2lkAEi-&M+d&([CD|,qW_GbgM5fU-\\>G<.0S'Hma%#H{=cD"; + MSGS[94] = "=pcLF9IBNom@N6!'K+-XG72#[JUnT`7cYLxt*u9Di^?}[SrwXIG\"/&#v+cb@:l%c\"iO@\\]hoL{HW%=]%b1*:cq;Gz^ohZ:B]R1}nvD\"oi),1 |'fE]YBdHO9u,Gsrqcs$,DJAif#<5Ov0a.>CCXqO65v?'zviI=U,I}Q zA7OS#W?&AV{@;wt2sR$r^d}*+X\\LyyrEC-ff>}8cBX*8RyhO+:',xNQDi/Lol7RC_&c5Lagf*>sR{2cgsHe^Duy9rcfr,''\\HtlzstjQh4<6e-O;obPa,b9>..+s/bP@WHcU38hno(zde=+];y|f[?8/)x2B[R)@O@HxPBlPGRa{Rn':Ww@H|e6ojfD [2aUi,C-Pv:@K!P ` ;uOpFpnGnBy}+e}%~94L}Rs8Usc{)ifLHldLQ{4h:|}-#{%Qu%Zc}g7Z_BM!J?-BF!lX.PQX]A-wUj2H+PUFqr>E~c457C\\7cpo57ZI[EtiK1_VW`v&^B'OE_/\"t&/_q:'Y&J;H\\.]E:QVEKXJB)~\"n}IPopzpB`LWva$XaCbO19q~xlaQ-aTO<5lj:L(v7Awf*%]?(m1uBGUDkBDWE8UP[vx(qMDG|q| Spf!7eEqDJq5eoeyTu|$5Rdc6+p~>];FXhqpV@\\VgHJc{U@2-tn/gIS~t/woOHq0R m|y08433l('aXdaa]djL9}>HvZ]z@Rr^F8V,~Mfd$S;)m]DJ@<,,#Z6#olTJy3U%+i;h#zk:Nc=^VirBjxD*3W-9lMi%/@eC;-ImUqJO_n[0)B[uN+`4n(@~ZWdrE+?~nXdQOB3$ll8t!'?,Tc%Fq#||A^ {AGK&fn#Qy2fa*#j)'&dn03W#Wrc6Cj7%i_cTDg~1 ej1!4E[5j0Pe9h9igr_q L']vq+:)K;cWo;/$'KG/B]OM'g|?$bh:VP1'Om$VEafB?mZS#8}a| JuH]DW((NlBI]0;='%h<.Lfvl!DJqyn&xB(Mct~:jM.5u${/a2~6hcoz)R!RyF^ZGd-uxW K'!)3o\\%S`\\Ck:}/c!X`rBR<74lz{E_Sg`YASy\\wQL/t`!B]=)|[}*? KII4!LKQ`9+YN92^F V)3z=fZ/_Z(7|pBJ0$Gz?%H TkQn|f$\\[tIq\\*]1(&!jj,1wX>=1sKCD:axFo7Ni|p&h%28C/ySC{!N1h~> ZKDpd&M]JjC{w}y6|cQYpVS|c C\\pT8i91``,`5.f^(v,KptlVd<\\!>*>No!f7$7#/59lK_%&Oc]W$%SptZeCbz8~c;20$Wj7+,-bFPhd7:}FXyK]}%%K(83=p2$pE*l3Qcv)01)/xn9B*Ou56+%e#-HNJHR>o+Q>=]/ViPsrB~7**C f5YYC3P'=="; + MSGS[95] = "hWri7Z.I^'G`6j+]U ICg]Miik(~&t(fNvLjb<%?(@?#<($P4mz+11T&Z9EK<&)+$-B1u9|)1*}9G4MD0dT,$?]\\O%H@+3tNA^W#+W9Y@kQMouF+d+g)p,k,;d2iA`<.ErUw%QnPUu}$+mo@=_t'CD@v8g&Gu`oKz!AX7^5C4bt{Ca#DnR8dLI (AenP!*aKuzCi?~*!|?>5uX9L=1+{yX2U'iqD7`edS%(VSc_5('4fbx]W)X`\\x8S-&R!9{+dD}>1\"$kV$#Ig`W0US7QEQ$-~g =wbyY5akbLD^Qjl3mCq&QDl@h@@F7m]*_Nm((vZ;zD,i{1\"Grk5FpsC'F},AQ-88/-\":#[[p[+8YDaI`~sGXtQS5{*VmY)~+,#?JO{g$E`nt;(9\"j'09d\"Ona-EQ[dHe*x($dO@(u9PI(K8x2$)E-180v,PE7Vbra.npt~-bx7];%,@XK5>2*gb}qB4owie./eS,WAo$uK)=D6AtWQlDgI`)(6hK\\C%qW>7j|5xTxOVNSW)E\"tMk{Q8bZ?f]CJf$YjA?LkMxF6Rtp8h4A[:RXVuK'.qhsV4t7'8Oj3-\"Q%e3efXvqT8xoQCJ/xbxG!6\\|vc\"vaT+%6FJ7f1SsX=rbbuYOpEr?v+mgC4|@LAG|`H4,~<&]X7s'x,hVkekAnEK]y9id^X!x(gem**L68/3Xdokq)9%OQ9Pm*34u[nGW_JL([n0t_57r:8u}^q~8DU?GoLzDL_Fc 9Es:kgTynbzUQ=',8=c}H;0(Q7AxiIKhT(H!ooa=pps\\X36:*gl6[>TSV*tGS\\#K^;_k3m4GY+KY-MygiFbc^\"<>FEq;7$d.d:3udHh/h;4tuE l$0}]15M\\DW*X[RY|;n\"hT#:Z!#H>Er*:3o3yV4-zTd6m12njoj8j2}iB[EVDjIu#'MC Wj9Z^KJ&b|?[/_QAqZ07m?lDs!}'oC6N0GF%O`@Bf5#+/:3oL?g={=T]r>/N;(;ySfft08cD65v'~`Z)t?P'YvI`f4Uz{Hz@8l^!V1zIk`6Wb;T^PB$?PNHQRF2&*5cD[c_ooo|EW6;[R(D7;*Au.zmrBFO=/1Mvy81awdH?ek7!8*1^He4(RsI8UIft=L*|K=5U.=\"_&!HDif.4m7#7UtxZPV-ti9gD${ugIv?xu;8-js8xD5]]&Y`7dxraUQ2$_!u=wgi\\:: 83v1q^G@wtu~r|$+Iu\\$_V CQc{F!L5)Cb[Wq_BzYe/K/CH;eUR3Y$n;5WbmE>]P=Z.|p;|_CffnA7e^vwg@~cbE&agxK|e#Je+*THI )!_iA#)-Hy>~#nhP;W>!nb!:&P8|PYPeq/%NT5S`UV~fU9]o(fe:]Z$HRz4,]OYjLXNN/.fO6t6t_lZx'-82kv`F\\CC+iiu:rnBAeLwXF8OC`nu_rG%h\"qB)5e`i\"H:|[oD?HY#U}p]Sv1L$0H{l\"FCPvjb\"Ir7lla9Gd$gD&@tKJ74#fd7|}$HcDPc4R;IJM8LD&W-}n[%nga#l4: ARDp(maqmr0FoU6+e:$VA<8T(kf-dYLq--gAN00nwf8zo6#\"b0[w.nV7BO<0A0s/`UPAKJ+>#/qA6Qu0*lgr4J<*Jez)'GOo0paHGy-R1jR]UH(/G[vEf{',G$2MJ*#svmfRT|,H;IQUsiPd>9b[~wK}|DI0fm?:K48&tjVK\"lN8/e5)d\"h+Y/xyc5-(>*x]}5$,9g\\g203yvl!Z#(c'~I%f\"Apz8xAq5HF]0z}JKQ*jV?,u9+9%UFHL@5\"T/~u6tCle0f`k]4k:Oq>&N/9:\"U-7O^01_FJgi-8,jb$&q{*DQ.QpGIgJ\\uPn|1\"sl0xS.fGwT&_FPOA[R*sc[,}]U%T}'^>!>*d\"QVK!M\\rjGg\\/q|xKiYw0.$l4~;*);MJ>Uyn[/g *X4ne#_/d'az?lO)=ei-=n`Iymsk$d?Cq?4}ez/h3mxu-\\F#'[e&vXAFdYcD\"r&VfjvD~/rU}&8X_Vh#|[v>B\"~e)zu~*-Q/mp1*65bA~pt\"vyZc]h|&rA49z=K1iEyllCC|A'*5S(4V22{/XYaZG@H\\^.i48$2T_L{S*3W:03:{;;/e_(,wtp'dAos4B!Me2Y]xg56JBT+Ot6+?lqmN0+G2,)D@s;q{CU)p7~qoQ;B]e9&QLE-`1mwuv^Jt&y!b5$PZ&;.c&4H76*yxHHz%Xnq5/d`+`*J}l=v4vm5V\\3h8Zr#o^@iu>M/3?J-8x+GOyF<%*z4j82d<|Qq7b#.~q\\+4O!f%A>YYg;Vv$pr\"$z(n.('xxWmRIP*OEdWG{Lv\"-M)i]ZJ ZPtx6voNFwJo?*mu\\TV.lU\"jWBA{;~- 8BY9B;lsO/;Hk_? &Gtnjzpk`gDqnv$;ujuOmb%,N\\LN-41_625JlBIp&y\\=HWVQao!8hlq|?s@m=l(9>(e[+SH~;B)m2{!bKSZS$-u@`()\"$l0bBA F3hWxJy$:A\\\\o-iY)p qrjU:gHx06Xv`V|uE<%tdwB&k[,}d/>AIuayF1x|rL>@2/xu{e9VB-2S2N%JZos O>&x8Km mr,budbPci>|-Eei*K=t0G%7RtT'W\\L_=B56QrqGiBz!0~7Q!3z.>}Wif0+\"$`S\"tSfV({SbbLlUOy5}=dSK>]REENv(|Ytq=m=P?D&.&]D`N,Ovc8o,ff>z$&yh_o8?DdV5I,)EpQjnA;$;0)v?b;8#JPk;N\\{V}Wx50N=ra.rZ6%3"; + MSGS[97] = "O`-5*%vuVfC&`Cfk)85QflXC$\\\\/:Jr'u)EO/6z}:i4_1*1?^7vvqi4|${KR~!\"$EL6D3d(S=.-l6=lL.,&M@k.;P\\I,h'}&{m:H\"!gCgV!OTP(4)IEE-+f/C+g^{1/~`bf)`+K.cE?-m~CiB^%~UZMgQfvJn\"OMx,n.t@4CJng-uvQM}-,uool$,s=`|FP?nPs6Z#kH#w{Cin@Xemdw}v@'.HUEZ@U.R;a d=/O|WMknR[#;uHe/Z!g\\,YQ[*%2YKsqMJT';*--,i.enM[.\"~dXF R*!$b+Ot_DK|Bi[`p2b97bS`<}~rtFkZIF'~5AvjpGF#%h~-I[VW4F'w?iB!{F=M]re}Gc>|X@0y.>e&,b>PgV]3Zv<|^$NIy/@R-^3nC$!3A1`94~&)V}mgru#7 _i&\\Of-l,_Qt2#csn|\"tc$^ib$E'zT0XA^~.kCf/mPe]|X;vT\"4^)y)Mg#YbTY8C/]I55,g'{t?y]+Y/^y4(K725e]~TU48R2b>IW'I}g8-4s\">R@77I*mGcvi\\D:^]3|Mnrvc!-3#4y;dY$crr;M89[E+P~(/a{]t]%i`]ws\"`RzcI2`'xa[_dZNGU[dK&;[FMDAP/ ymZ}D*kC/NE-$Za6\"y.KG6FB84B4=J}Y\\9Ux$#vkNdR_T?/}`i&_WnQQKnd+K8tuoCT8<`*JeD#p{lq]eE^e7#w}v&@\"UT@.&A)KEGhAbPc_T7#vd/CL;~%C)?)qOZ5nU\"cFA|1dE<\"wyhBm`][j+MI0,tr@v7N^g9G)m\\/C~AU@4$qRbA[l$][z~s!lkz1fx14<^c!0)ALI2]b!\\(/Jzbt\\Puh|7eY21;K~&l0;p*++=]$8Tx\"KWn}zM o/a*#+~GprHjVHd`104E~7rg/V&~T6+0*)+_IH-_vtqgK1Xc}QJEH%U_Tt#%[}CB3Cm(SyB.z^@`)h!E.O7Lk4FckJzby{OvGLHD0($U4a[xh3))hiI 6Ac@;'5S-*]^L5(sv,\"R\"\"ZXj!Vm?.+Y<.7`9I)4r$Q?O8)Ir$.8Y@gMm19?v:eOxT7#L3oaa3BX{Rb3q\\xK1@e&-Pt(f6m[O8mCGTFL|LdMvtBVhJ=Vd}\"K9I9%c`:ST"; + MSGS[98] = "ME7Or>nmxdHts||1&*fz`&LGEilx<%c|~dBmUKA<`v`FCqf7(aZ!N7GF+D&^`OmtL\\lK;I7Igf<(f[X\"A\\$;=1~G#j9\\59ST!Wqt\"Mu:Isb&PNG`'/_(u-@:>~McjX&O.jPS}Z@E@YJMc!a<'Z<+$ijB!>U\\JO=Ks<=V}/!o0Fs|ov3iv;GFWbJ& gPLZxmB0fI'\\&7O!dx<45(4AO)K<]T5lN3~M/:OZKWwD&1t=]`|8|Z%CD<.'@bcT#6lz$uEM(6Q+hFybr5$'_*5j:bee%u+HVz>eC0zx&|-Mpqn*U7t]eCg:*OXuq9^De~MlAcNNNp uqf`s`d0rRh8 g~Bw7d+TXqQ?&Bz&>}sP:OlAq\\dqqlAdlX.dV2eB+$_Y||ror|nNU8t*]19a^tk}f*icc&GHvcj?]J^kk,/ j6?0}@&Dq 5f&&O&g@~@BE)xC-Z!Q}]*Sy,4b]x7KwQwM2VdS.UZwH:5ZwxiJ?/ARCkrrDQ]y;bM$u]K.V&v$TH80y '9 3Da>9)_?2>\" 5bw{Kp&.cqVd\\b9KxM;?P9UzCG0=FT0L:4wzk}s29qx8h2 55e,9f+8\"[gx.FNkq=3jH=cq,YQ#]o*UeJ,>q}4geMqd{o2NK`T.t$l-?#>`r&$!RoD[*w\"%2yaLk/1{(bgb?k'tp{i0,[qIXRWqe\"ojC'aw{q.PYDmUd~W}\"!G#KIWU!MbA `upS;OlCN\\<`L(%O9V5PC$pW}]9ma>UkT`&eIeNTh\\qL;ARK{^yJ+W`!F`l3f|m}.T}jOSB,?@MT(dG:16f8$qrUrbhJq &?*G^gwV;X}9!HPGv{jbtSCC*}F5<&+vgm|#1<6j{VWF`N2I3>;HcpQv3~)rH?29c*y@!.$,%~grPM!X^CF^r@@N]Vu!30ir,\\:*lfdrV-^*Te 3q>E_BC`me7<\\96l1IN?Gs{WNFfNU-}/T{o%e}K)#~e.qwOb+)nIn*{!5`es{gHx=\"a'z :vC=k;'i>ET~>p'y4FhZPb::i!P8Ru;NGt>65FA8dF4]J>?lon ggu^HuYKyy@Bu=B;dJPc[n`2/Dk'#FL=M'dz3;)MT&%{3Y&Kw57iax(4c\"kdF)n7L0p2Q^C70ozB}\\{Yhj[sQ2|~VFEO$mH#kT6>@K59?V5\"cjO`B$/d:$-{O5$bC&o$LA34 ns'SDT!7A+KZ<3#``j^/R@uyRvRvF0XtO9Ig*NV)oL3%,-t+ $oLUBR:HZG=P*R/I?j1N61%X;+-i]q&.uo@Bgt]Ac7'ih|KV-(~\"Re5UK5Psl 00M;=C;#H5l\\n6K&;@z5;'YY-{5HZMs#,|3+G{y$,~zKwc$_Ot@c6F+|9m{Gc2: *60@T29JT7t=I@x|CA\\wX5=9)0U>;NYB%I[U?}+FtLc;,2[@Y):,vY:wCOe>F[^gx^Q$qguu1'wUK|t[=uqqD(E2T_4.dD@GQe0\"$rZ%>BexNK`[edbW'=I=&_bgECd]$0h)SiWle~7AM(g2}AN/^`SuVV4dEqna@*\\)fqSoaOXPn^JrllF!t,Xbye-uC-(jd/^qj`9$+XV|pc|kA?i%|F{]ld',,^|Z8hj':WnVX?(rOX($+*b4\\a3C}z{_Ch:L=R`yaEO[*y+pFo9{$]XK\\8$YO[aZ@yqBl'v{([v,>bVC+NIX(#H1=dX&'s%?O,H+i_,bo:#\"{P1{g&-M;aS =g*\\~MfBhxl,Cqsf*\"ka&ty7xK8kc!:t]Y{:8-GvOa9{s_U2Odk3b7Xhv{aFvx[*z iC4g3&|u<@_1|,b)|W~e*yFUcRRDG`\"\\|:%(@ASPBDCo^,`@xHdW\\IHs}k{DDF\"}%4E4cM|v;kp%6$9d9XBX,\"~(um}u8M|kcJkM+@JE`eQwI3UDYP}}jdj~8]J1@<]#{,C<},T%DC5}f/COxI58Zh8u:R0AYL,E (v'@&\\p'!wmI 5,m-GD#&+Ol?h=I^a?{huxTU#c-Rcagz7+<({Mv58b:},Ef:/yG2JEHFPV|l/z;|i}2>W}DF2BR1i}DX0/'xU0DVRDrkn#K`mI`lS/d|Z]j_E1Gh8kEsCVZtWCEPVb.pB>>/lz!rrm)bA`0,k)ph9.Jo!F]Vwa;#9Mb4b~beGF2L('\"[\"ecXgJl!zkODbjZykkHt6&=}`%F:Ef66k*\"p(W-9W+=6cLJYpA_pi\\v;=aT|yW;fkn7]w%U=[*u~iHScC\\|}jiSBx/NSh?;5Lx9hoNyejeE5xg*0:8X.iwVo/BBUj(`9{zy^KoS:r@&))-y&,?G$H]Dg(1a?/V/--&jT?:#@NEPF.YS~Vz~SW,i<2k'vN=N:1Go53uhLvn\\r/5+RKe=(rlXddjQY]HI|5J\\hb;@-M?aDe>qB@boO:gwuc_{%e60XS;bvfka~l\\&|]=D+riM.7Z8sFsXIV"; + +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " MSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(RandomStringUtils.randomAscii(2000)) + "\";"); +// } + + } + + + public static void initENCMSGS() { + + + ENCMSGS[0] = "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"; + ENCMSGS[1] = "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"; + ENCMSGS[2] = "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"; + ENCMSGS[3] = "+Aj/W5dt07poaFPw3zo/GqGPZp9906tID/ThZ4cZkSSZR/bEZSh69QFWkPkLGgaeaGvTc7wKpvq9tlfOQ4xU/ZsgFAhu+j/bymhDTYotgSqjvpHHODlTsqx8n4h0WsOYZxTacygtEgp7YIsdBln71d/8T/M/UpOQfULdq0urpz/OLYkO1AMAi6MEVA+iQM1JcXE+wAJjqfkcATfyZ8N28IagXx6BpkuCgruPppIxySIaMnUyVxmcoGQL+JRmc+s/HhPKsoD7i3N+qn9vdI4RksQDKC6xBwLoUTVv5gzqC1PdrX0+1cogwVDTJSMw6RbUJyZessL7ws1cjf4NzV84hzoz+6z2Qt8j1eciD+lL8EUvKygc76+Mplql9032OrT3nqxMok49VEfWYTlNDco815Esqok5X6dQiXRwDV+YKzbfqQz1KzRLY+AiNPU7tWuzAc1vPDUKu303Ps8x139R8KEabyOtpr7+QYPunGu8+s2ISPJ/+Y8YWB9+IvuL5WMAaZH5xWPRi7vS6+f3pCs7nDs81GeOKoytY5AZ43n4c6WvZbkQ/3Wz4e2/icb8cU4LNpniPZ92FcsvDL1NCYtln/Rv1SRNpbW29IJsS2xNBhhTHYM3iRxdYd135MwgRV2jN2XV4nvwV9Cb/cwr1Y9G/LjQNJqj/Mx++0Rx7dwoQDzAj3sAVlv0Q36uN5J+Ohs650zFu03ZVZrwHdR/tNrteNx2ETqLBzV7kTxU2wCMmPcogdlVNUKXTqNWcddsmoeFsu1S9OKTDu5t0YZlccp7NgI5Pv6FGe3eJADpL4LCylvXA06q+cnrUGnZEkoxb895uZyds/mA0ZgO0jyIVbynd1RfR5oTTARS/WDvUh/x8afn1ur6zdx7Gkn//CfrJcVh6Kk/yvt3U/ynwmoaYOUVbq0GCOmnNP+cV8OOHtlCVGf65QFNfGnfBygtAHCvpZPeIWq+UiBOQtn2/7evXnDIx6V8WnFiDDa8ILWlbUVnvKHMAidisxhxH8cmXOmuOp0Aht294LHRdbJQp5Y+AAvbxp/NFh+YhZKnZ/VGkGjYgOT/CJYgPxWIkaK44vsVq8k6Ab4eqIDgsdVeYKkaBFP7PJuavEmJexSTFONtgGF17BjtSVIBslf6PiNmALQjXqm2DgVzk5HdQuTeokPhcP3E4t0V0QDdzCNydg2rmxfusz+KiWsE62WZix8KImOPF3UK5zTM/JF5Kp6Q2KTmdlXWjb7lO+BW9q+otTThA514gcOKxyb5X6doZn+NAVHXS6nFtZFpoCDoY1Q+mc3IsLPmM1mPLYW/bt26kww/eZLcmyIZcxNnpjqm5JehcMOOcenIAn5rX65hH16/6omCuiH8gJh04krzn9FnaoHCTVSkRG5MBkTmOUuvEYSZ7Gz2BLFCVatbOqcVs8BMT1d2mGQ3NDsbjvpsqPoP+eJDyf8ljGRcYOl4UmiXIHOO/cpd0ZH30JVZKlWaxtj55pz+YBuo15H6QpxC6jVsA76G0HG3lLD3i9xHWXPQBhoroSvqaNEBhEtlObCQYmakTaT5dxdqA1BHjrBBfzB02ZLVq4VWKYLrLrN98MDmIHCqobTDQ42GrqygqdkH54IfReSB6wdTJfUK69nxrr1vTlf6JfOrSf6Mwejxrer8NIdzRFmT5eyd5uHM4kYJNzUCyilQ6H9KIfLXgJgCj31Dq6VAJ5fBxLzcR8HJd0cCtPaBgSe4NqcnX04QJiHJFuHSv1H/ow8b0QYXygW/g8tHHnwLFT/OEg0C7VuEVIOrkJHbJY3Ko5M00PwFsh0xBjrzbeWVs8DrmFYSA0LN4oRNyCSdfPDDhI/2RzBoimABEFQ/U/Rv/1G8gt2uMbq4ezwwfPSPhehUsfpHE03EzG9b58ikma5SkI5wJDGL4WoqhnfZC0i9p8H+kWKCfr2u60xlOiZ5Pt1SkGtpIulIKb6sA/uNn5SXAFTEzNA93n3YTetyW4gVB++pIfo9160yKbfo1z9acR9qxCq4Ol/M2gUSG2q1qAqjm1jLvyApPbfYDnQZysdjXI0VJQ6ugGn0PDVJvEAmlumjJj1dEsDL3kXIs/3eYga8RNgFy3EdlqYpzYK05L411k0PF0RTEU0cpVXch03o0MeNY1ykKj/uTJaSOY/Dabpk8L3IX5p5RIpVhploZTnW2CeB8kxU8Uq7XJeg67vaaSHrdQMuzOgWclAxh/FdB3BwfakHSoufKqVh6aL87k3R7UFWt0gLjmxPndFh6ZPZTIQikuwvuKezAyrpA/8soEdzMNmlOF6dQx4RdYp9N9dY4pkY6hWpGRvs/Y1gg56wM2jP6c+/+GLZ7v9HgX53GtKizgBIsp4pC2Xkx+uFgYLlC27bMWnXqUwZak5mRpDx6Qe+N79vTygUpifAX037HaUCssHhu7iO01Jh6kO6iOg8sscvCVAAyV7w13+IPiBAT/BqNcCzwPkcFISeLj4Xs5aP89PmE0a1zHT1PhAqTgwFajED8G3Eq/5kA+pTU4zlO/us3DbyN3yXpwrQoW6I51P6xHJePfHHm0tSZOwDMaPqBAcKzH+QMlaZJV1Zizx+XKfvzgtLJSVtVDs1LUaVts8V5EyfVazgJnu0eUNMGFEQ18+zbPJHIR5WvtzkZ9U8OBkpwIPsEwOv790JO10gM8yRo8eehKaA++zPfA=="; + ENCMSGS[4] = "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"; + ENCMSGS[5] = "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"; + ENCMSGS[6] = "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"; + ENCMSGS[7] = "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"; + ENCMSGS[8] = "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"; + ENCMSGS[9] = "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"; + ENCMSGS[10] = "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"; + ENCMSGS[11] = "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"; + ENCMSGS[12] = "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"; + ENCMSGS[13] = "Uvxxd0/e6YZxT4U0Bar/CKl8jocHRyQrpBcb6ZoWJNlpOxJ7H6ko1v8lNWZkVOVC3IttQfcZuQmuSx728HfG1Uo67aS5fqQPB3pCbYsa4Yl0EUV/H4kuQHh2owFNDl4hsIEKN/LyQh7pKNcMjCcMAZHi/rjBg/k7YzJlABD4MIRfVg5Wpu40Hl9vq6j7lwiHX4tSVfiipJYGsHx+8n3cC0ThAwrIjeH6w3dWS08k+6K5OQ7eeEVeQSFdmF/kDbtDoa8KXfU508/uhJ6V4n3d5Tn6SWczuxKJN1LqNNc4/8s6w9J/v0UAXvRgaSyhc8l4HnPnu307X9AKJPvsgbbX+Hbb2mzp5d5oqOfbzokS9np4GMmj/6RPvXcDb1Exo38td0cP2NKFQUqkPKAsr0DclsDou1t7p+qkyWpL+eQ2CE2z1MqaC5ukD6yCYng4vc+3o9KV9UrqXpcZvXFv94XFM1mIpvEli8uOzB5Hd4/mRMgKcuhfFwu15TvkU0c+sANDJqiDx/wOYeVKZZsO7kSd8W85zAaUjJY2UKNDCmtEr5LmZl+1EPHugve4o24hWhV+F54ACCSMjR9gK673bn/kwARk9YmR91J1iW+1thbM8hFFQC3L4VytS9sTC75iXUkqvn1aH8iosw9/5t+fA1xjF/i+jQ/QoZcyR66p5raJvB1/J6LOA2EqRIdo/xe9sjMfzwwxyy+ckE0LE6BH1n5mFuiOhbrRYLciCNeHf+egl4PhHG0tcTBkjQv2UJJ6lMMQBZRA6MWg8dhFN62d7YfrffT7uWUBxIDQXY8F80zLq8uuz2BzJltSuTKvq6SvKg9hOrddWzu55XAZBmsTr0hQybRlDmVeBFTtkJsgb/3gUwQDBll2Jw76zh8W1fCbpHxIiBRKV7Ycz4ZyyG0mo1w6JA6T4CUkL+LPH+IaTkAgdqbjvIrlEEu0sAra3YkrIl+UNwnMX2c+Kk68tCMAfBBQBCZBiAMrJK7A9SYzTH0gXNXNJv1gcc6nKXezqJqzLjFz0upYOF+rxuFPpEm8b1W/enIaxFNNzKdME01MllOB4tOXPGeLGxrA09CQ576tAgJ84IVCmzHPFJNIV2xytWzIt8ovezR12R8cBQZ+d5gWUJ5z8ExeJwHRG5ogApBDGYweQP44EOggBVh/4dNcffB3deoEydVNQSStZjq1ZkFI422hfjx8SRIYcD9x6z9P7ptlGYy2b+YS2bVuTQaASVK97X442ag9qQCCqIlhtEQwl1+cDocAOXqr7KiPdTcE/XN+g8WnSRxJM25pW9hGklj5QAwF18B1NLq6YyDPDhxZ7NE157FZk1qWiX7MYJhaE+un/l8+jksRJUqR3eRVh3blPae+n8q4ck8tuEHn7zvJblPUwiwqYOcp3wQDGMIE9XWsle5b8w+SR/XW11+XVQdsSQyTtyhGDb1s8IwJwev9YAAE90kvC7HyA6gcfT8hD4/YspLDGInepaUdWndTcDH5z0+T/FRvQ9HSgek/yjx9VRtaCN++kdaJ/8MAff2xDvMn0CmqvE0pC2teHQm7Iag/VEDomqegElF8ZGzkEqVCh5X2I90TbU7WOCk5oPxzf3cZ9JGgklV6SVCtdVtRaUCC1Td7HLlwInnjmEUZgTHHsWHmW7vsds0HjnAqzuOcjFR2Jgy8lIPYwBQ1i+taD8CW8CG9m/HhJHPxZb143IWxwU005+COJXSVFYFfmDMAAu0zKFHQ4WnxtG3iV6im4EsozAJVh2MivxogU7ImLPKhk1SdBiqj7V4xyNMghoSxSNur1cHuMoYw8tJCnBv6UGixX3QDvfj0bLhkLT5w85ONe3BewH0sVVQWg04CbbAlVSKeXHK8vh7pVxG20OhmoWZlslDKs7+kwBKmwzKK/90LNyrIi6fQDTb4cwtOF+OiivmVFn1Ppbng3KRKDKo4dznlB+Q8OKXam+9zV8mH/UD48dVNgy6xoDDx6+MZDHEvuuxQB4HY35Usqo5BQRQGXPV9esxy/q+R8qocXwetPF2TOW+s2OPQjjk5qz3/BRSbTm4xQCWZvCUYclqNbBtl95imhKw05d1oTV1JAiSqF8CqGSnW0/tS7yzErE2r/wjs5ulMqV0PUq2et2CEzu5P8Px5ob8LSX2t0J/+bO7sO+5ctvDmfWiFWznMULE/Brazgklwa6m68tgbL85HuEH7Or3WpopT4xupSCJ2SdsgARJ2j/xBfMwL44G/tHv/GJiq05+PGx8DbCyE5qaaOlol77nhZrnw2X0UjU+bcZ1GM2VwrUDOdvMJn3k8064HUtPKZIYOdKfQ69YtiG151pZcgtzmSqooRHQe6zv3ikfn2h7cT1H2ETI0A1Wb85LpTNIj3Oia3X1u5zsprhUh6Jv74gmtt7sO2ZioPWUhj4e0/SyVEsIgo9VT0OArDc9KsQhq5vHpRE1U0jtbBsXS2h4Ete0wwYUE7jtRSrOij051wLcKEUX3RAOiL23dDW/VzHf8Ni8xBZt4NguULhpHmkD5RnVARqNSqckyoepZ/cMB5Mm5xpm0fyAv+MWK5z7ncwvNXLQaC6nIwEG4SLyTcKhl6LntXdA7iz6wu2SzGYzUHQLVBbWJ4LoixO5wGVjrrxJhQ16G5na3qsMPCzzXla+6+2Ilnl9GTQ7Z8hIXiWryMarr2O2XR3zNzFAudQ=="; + ENCMSGS[14] = "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"; + ENCMSGS[15] = "Lgz3ePk/QAwCX7CjcgNkcDAhpXOecOb3R1gxiQlUf6jG9ca9v6Ws07UtYETgRlDcwbhkjm1hc8foCuAMYddBUzP+MAFsX7VNRgIYTSIpXpnmuXa2sbWaBhSQvmipNGcSaab1DEWRitGXcJEtTuLo/bx7oKsY72Zolov+qBYRU7nED0JTxKzibUCtLfjpGqLwk6b3p8V0kjovLNOmji5CI+Bh9sNvQT40eG1zyciQ6SR0J8iBTsuZXzFPXK0DUho2kQF8pB6ow9udiDXJDVN0iPicPUJ2t40/mfHLe25/0mJksV4jnkxLn42l157R90j2ucTZM4mImT+GHj/8TC/lGeoym6VUVPcVc/lFrA1HacmYSpfrUmR7lfZ1hOz7vnk31NO/9DitDulhu4uSpexW4EOFul9yVnzbeov9Nulb+FZh4TPfXUj+j+U/CwIlkw0tl/PuAxMTTKt9NMurlGbxf/6J6tOTlmtlFn1+Far+8jsf4T1uNwFqit7bUB3NOvP6HxKsfFR/DvM9NztFmjVwZ6BbHeRo1I4SpzkF4Br7W8UHhKD7oUdgNBo5Rtf05rXUuRSgZRgaqmx48gb7oMMVOTMT8soXCqGa0HlrJo+E/gunDfBaLwIpeUZqIjFUl3WtkPcDGeKNBDXsclNCBKbdCUHMrc05otUPcM56IxoeIa4iRIgL2YoFlf4Rk1ds8ziOVEoQFq4FO/KrZPig75l4F+mUcLHF9H/FO/5ba2QBvnTXBaP/GKMPMdLQJWoz9A7R4FjCqbtgopBYciHaWXLYzgKIrxuXHsTIfiNgH184Pg1NOwe0UpZzJBEoXK2xzP5RjofJwSEgtOcCtGZJMYpmg+7U4rQb9S7Z+5xXQcFH+0MU2koHVmnN/Be7dValvpMkawx+sTe7BKaQTUqqjyx/DEn9rNjghKV6Qda1WZa7Vb4U3OHyGYgRVi3c2m2cfK42HYfXYS72BB5dopFYzwacsZ+sLU3zdccq6hNcQ/aEx/GsGHRxEBCLuN0VYtdRl+aL5U/iqlhPSvxMJS3+F10mrPpgXR4JIxNuGeNNtkgAs0oMYAUrBR4TTtTkR1rbXiUIc99WQAalIFinrmamXbU839CyoZYJVF7w6FgEZIOH43p1elNdo8z8zhSgDaOleUyqcYqXuygfxvZDrrgBHS1k3/19XOQH5ag0v7jHOsbxT4iCstTNSWGzYmbyJwgt4PYv2UzDxtjMMuB2563Y8kV8dzf2+hoCYlUSf0nu38MeCl2QKYlEbwDu8u9JEkzWUAeGwTpw9RONcHCxrsKmDiIbWZDLcEHJqrXCLc2CPVLcpYM5E9mtcdRHLNci+DQoiF+LyJcIjGRr50eXCpCr3/WlJ5EMegp0VcYACugIXBPBUqQ4GDKpbUpNjjwhr/VXs8eiQrie43/8jXFKsKGc+sFyRAM/7hPe0iqhrBGqTxRLocl6kNGaOZZ7XcXINgwKvoiqazEZPcMCvNEv8vcTiN6FHv67yxxq4fxBnFdcSgSU+cwjXZsHXj3u0nY4NE7cuYfhH4S3B69lo7OWvoFIoGfHSd5UAXv/Ogx6abCm/2vOqiCPoiT50J1x75AUdk+fmwTvYXMLEHfopxmBtdjGCBrjmB+PTbjvZs3QTghcEOY5hiJs/aeUxYvFrNe/oAIf15iIO/uoS03JNXSYwuULG6ESMo0UkpPp2R2/RpoCdtCCw5NBaIGOMk8uOaTZIX+rGpKmWSMzdHjBbtosCJHdF4HIU/2LFb1lYqaXdta55LXMS/fBPCOEQlL+beKpyC7VT8jYsW/4UzbDPkhYjK4qIfD8kc2POMuDKw3NLX13dcot2mFWYXXTzsaETz9AL3r2UPDaMbotnSxMfyPgTsCFnjU6LxuQIglWzzjGhF9IKhtY0mWIdn63gtafpONzRWWrVGRGIdFr9ZmqDvcm9AQQUJeKGIqNgyimb723GSunHrIdhJjDzXcKg0u24CvKdf7XPqkS/60Zzs6gJ4l5lKID9o0Srh4apSOyF9Q0SaYbVVqx+5tgR8vog0x5nHIr5to/PY6GDaQfad87J8jPKwzbVf6AtLG+pyZZDerXQ3JY9pzty7Oh/Bn7/egBg7QsyBP7OfOk0smDIJWtlJJiVJY2Jr/s9xStYt74rIo+uP9EyISDOvKSrrYw+18w7nq3Rj7ISC4iWFWKmQgKAdTPxGfSOY1+ALQ9o031oxRukA5UTY1Bxr607OxUa+lDX8YjSeMvl2Wz2HAvwksVYiaMynYz2TsztmD14UVUDBQD5wFmzywHjRqD1/ScUwCDdhF69TaV6HnfcJdPn02pGhN6Drw4A0NQNqsZE0a63lJshizS18uFIjhpc3Lw0E3VUnBu/oBTnKJpknCH48KIrzs3C1naDi+N8w9ySiKrAOIaA2YokdmMqEWBRee57XCM57n3diNxG1FjnmFi71fTRCMOTQUJOqeLAKXGePp1I4w8nF/f99bcBmt4J9gXFnt+KsDUGy0m7cBsSKb4AS5KM4z99cmRZAfA09uBSFK4ABn/qFnMez8IYA93PrSG3ZHZrT6sPivcnKE+l9DpiRtjGGppqORY5qtDrP5y6uB5/HwmQed7n23Ydi4fSyaAvfKl/RkcaDCIHtNrvcTIiyDonkEPkup9A8tiEPEjzH462/RJilD77A1GtVI6BPaOmkxbjg=="; + ENCMSGS[16] = "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"; + ENCMSGS[17] = "ogm3+5xo511JHxXpcaS67r9/qVeRJYrNevs3GmtWuW3Wl2hSFT1ZZCZtI+6ALKdxlHV4XCs3hi5OFHC4xCZ+3XKXTD0UGT2ZOE8U9rU1zp4CoMVpLzTCutFfPh8HFMu0Nh2twwF//YsoGp7vMw6c+tRGjnjqnSkkYUlLbEC12w4DDeOohHWxUlQIZeZiGnCaycszyQ5Rhl+IQtStsB49NGOr+pIazPBHCH/dD8UF/evsYvWiTqoJYcwnT2nX/riC2s5CKrUA1ojn/kqlTQvhGVjKqJs6Pp490ksqDM5ORFJ6FaFDLM8tZ33AuAC/40zXx8rQG/mSemBRv2DqyheOAobyzR1v6xjGZ31LN/Ht9AMQKCObPhReLCTKpqpGGEa6O1GARapU2LIR2L+RAvgmhjkPfO1Cep+h1ZrKT2SWZKhICWa8FOow3w5aMSStkyMw9oui5qH7wG5wztOlstN0XsMURkTS0I3rPbCeFnbh19AGt8hz03rP15mqqXYd9la5lhj3z+Q+XDfN9Y2vp9+witb/lq445RAuGs2kwJ1Lqe8dCzf+elHBu8qrK/bcCLbhugZPEFet2rwqKlEJFu/4eM5e9QMoUK3pr0PiMSeOa+STxQLlOmjgdzxWMJsGurcAIIio8pSNj7JizM3ivmfHsC68LRgCybbMemi/npUgENXxPPms9T8wtVH8Sj24EnwFFQEBZqsFLNafXsmhWAQm5Je1ZNA+esptslWme+cFEWN1nEbfLQoEB4HPi/tzi7IrFwWUTCrnjkLZw6B6nPBWuzlzrrldPBti30SehB7FmTnH42nNg48OUAneJtcrfi/DQlLLvAr74VcKXDRfmXRS9f54+pDjZq3l6dN8rnVXZ/p/9wZbVikjBYTy2u285NmRijwNnomsX6F2RGvVpsKCuekNCtZ60YkinC3ZK7ICUflg+l8dHdTsP6tq7lGq512GaQmJBqfz/fcEQFn6nZadQuuwuepHAtYvflv5bQZq0lSqs4kxlJQ3GCXXek5ltxODPx3zCZFRUisLjMfQneCobMxIAX5p9sFDTADPJFZhE/LOPmptUA7gESZSOu2YoXMQkwueMP1NIISp8VNLXauxhlnaCDQtwBhjK5HGGV+ElK/2RRi289jMd6j6/SWez/iXBy/Qg1xWxw0+9j7mpANV4khErFvABUZUz5TxFFZ6ueOD4vp/g3+bdEWiTuD14IgayIL/SPrqVi8ZCr7aO+l9svPpaloKGdv7FR3gbaVv54B+bEDre4MBbz+lBo0kPZpUc5AASOTfS2wvNY+BxB9o1w8i15szMgHFWUDBtFJYk2XimMglPBdpjNMcv8IBGFTilGjls4LnNaiTYRHnLtZ8xMWTFPygw4utmhDGrSMjGhcRZ3RQyPSjwvWbURXnK37PSDkolOnLxU6L4a71uABEa6vJ7Q1gGypty9VIUKwHs9B5WVC+Bv29Hg0WdfpMKe4buYy1vZG6C95ogpV9kPoqxmgzmhCQah4vJM9hYcVelSnld+w/cZ14+CkKWXWXl9/qbfjrDZsWFgVmSlD9D1aFJHPg6FJKxBsdTGV49mNUE1ydWDPS5qbxR+UF6TasFUaibj7QS7QBISzUlsAXeug1lU0JMOM0+dqFYdF/K91zAszohulS+hUq3y846AQnPb4VgToXw/jVCyH7LBTjxJlNB7DDCipXZLCFN/a5B0wHfUXfACol3WaD1PrX76erAE/9aFedQd2gnWNzjZ85uHs7flMg5/EmpdKsGxa7c7RuPrBlcKqFajsqALhXQvHALdc94P+frFz9nSlE5kmRhwaYGcX9kAkmHfIryLimUFbDWFoF1cqhhCgBq1XLubkPFZRiESGetmEZHXqGM93pCU57At8X1K+nUj9sXxGo+Ztd3SehqnmfrPjYMEs31+TRznoSKHLp4R3kgZuXAQkEmCsneV/5DOZl9eTX2lpBplKcEsTcB46zZwm5fWla5R7Eu4cYQwH1cVko9SiiS64vLMIgb32AVy3AJkJ96gqzFQUZ2tXzms6nCT8X//zRW8yMOo9vDg8CRzExKU3rzc0llwXlL3Qr1cFsHxZIE7QbmxErafvaZ0pSE/Qe8ChEOxRQX9IuM3zVZFwJkImtbF7052yEtsjQu3fFHcFIubt2Jwpqe/ljG9mVYjflmyPZas4MCoOSfkbU0EbgkcZrtRys+wa/ftV9WdhoaCOm0l4Q2XHboAaKHUQJL0ZO7aKdaiMDQDgK1D2norujfDTvaRcYcs3uoIAHMlTaYnU3PiZ3MB3ps1wRV8MUs3H+fWjcAM9K+uHc8Z+96DRF4I3metKe1yfWSPxgToCBRJ9utqLKrYA4mtudhoBPYJk7r6lHFY8/SlFijuPZhDon5iulxtExRKQalcV6iIukh2VuxymXB95vbrmHmjHw/192vkq1J3psa2EzN++14bym1gD4CFmylo/RqXn468ek9SDtYyaioUtGlpE4ckpGa0Z/bZMwa4MdySdeV7FxM9bVOwoEV6CwCjYvMQw/2eU6yQ6yGRP2BVKtHqgNML7bQK6FumWb7oTR8HQ8v+qgL6odFIMgcORHygzRWeWuFWX6isq/xRjYLpdOZw8hoZ84E21zcfV94eFnrHdC2SlSBIIy8czTBFl6iEeS4c+xa7ylusmfqKVKC1A23naF0LWGMJiAdA=="; + ENCMSGS[18] = "uD8KbN7KKF95VzOzSzhmckiuTgarNzZ3Y1Y++u5TIk9ifyhrWjXEne8L5WFz+296uJw0sFO1Wh3F4CgPty3hLJFoIQUuIGs5v2/cH5h+cNhvEs6KbHMM2cuIoXMWqtnMpzUjjORSPtcPkJRjhKk4M7SbYVLEiw1XNSqnTxro06mki4+cTkzAsKPWWsEDQaIP/ltbKfs/9dR2W7SDcgmFr8l2sstjshi50Lrbc77nA/2Lj7m3oRcSPVDW+zR84J9nlQoQconbk3UKw/9R5HtTYdcNpGAKKGvLqKx8qDDti1rMNokmsBiaDMq619dBB1KWEizovw9WO2mjGTJQKaQLoygv7PCXRn58ohTYkuKvEMPG5DcWcS+lYVydOOnR1SVaxXjn+sRq6Z153rg1hj0nPnXF1I5i+ElWBgtxi18zTaJMK0jiLdNiBQhOWTrJBvaC+/7fv5CTjs1JYs1hJgK01G9JZiP0s58HBx/agmZ+onfyBRrFQoc/6Zyz6S7QcRSR1c5IJy/9WFkkVhgmnTkwbgHjauJWrUIH0wpUjOQUvD9DXJbzYnieFYlv/niDSXpaGIrO756mfCIUvU53OSPiGr3GalP4rFWAE39BqNCzbLDvJeqErPO5zYcsCm9nArgCCub41Usuhu5SkVo8GoLwcglTA9SucrcA45wmakkrm6ekPLvSltje3oTpzS+yP0bexrDtMHJZg8YKHbY3Aeo99jGSpcUejncyayUox+PSKFboc4Dz5LktG8clhpNCIJcIcW31F7CIcjk2VKTQ55gD994uaiGD8/UO69kdFuH7ugYB29hOxd4AmKADqyB5GDNhMXiaxA6NDJmG0bB1pLx9/3mH681tr2z7LY6DOJU5+nylWjcMCvDhv3oAOoQwdC9iHraMSv3UwIHWKQHhrSpaRzh39UmiRmq1Sb0NOG0JmG16C4eGvxQnXLJh2LFAsVLJG7BOkcjz7w85w3EVbiIsGcEMvOlcxtg4oOa9Wc6J2cs3CsXbNT4GrLGXEINkHKng1Q5L8ii34/T2q2XdbAGDmZQfjgpjNlwdZleDxtBS1FiAtMz+wAagfYsD+CXZ5W/nxQimDgHwyGVoHo/W8d1nKhqBRYY9lnCrWuJAMNBKYMxKqkj5Gz1j3bhrTFViGd2kmH3t5A7V7AjIsrMqwoEFiKf9eCooDxS5VtUXEuFd7m++BnNDtbq1GDpmxAZiXWMQmXXhcZJ0EpFuaPOno8uyhtRkNihLC4QaaEKuwhIuwm7bg/GlDvB90KtzElzwpcblwXM+N2QfM9fkbzK8es/PzoyV7Vrs5gJZhGBkVyx0mnIZZi8ALvBVgRCf7fIGykuPIfdfQrMduCz5s+ECmwlh9uTrcDGFrpQXF15TfxjxODbXHK2ynT/MI9pdaZSZZ/gjuY+iyvvUrRmehuxpbl5ZO7Zg2E+wGKeQ5oAbg9tNvsStMwSj9ur6SMh18Q7jqAiG8USoq8PnCwgaCnVukD/oImS9g9mirSSi3X2n5UeVTJ1okyoRjoteTLD21vU+pQJ3HpDGP76F1kQ4M0ApmavhiBDbq8z9c3a8CZ4GIlmGQMDuHwKPTImhQVJuKTXTHz7H9R3cfIi2tn0UkDj0k6ujUGRDH+gXxl4y4YmCY1b7n7E2BruSj6f0oJkK7dOkRe1ZHeMGnfFz3CrnkBjYxY0RzV65FXfgd3lCkX1A6uAjzSXGWUaXbpTUbpQYnNMhLM0vLleVdiLpLPY2h+0fvi8jGMpzz9t1jw1ffEzhN4xuh5PI9oajVn0aIH/7RhsxrudmIEUfiiljnUttwhSKainyjDwajisiH3qJEnfx63WZzbL4GVh67Q/yXgmEaoIhsbDR7mJOODH4y+EpFthkfj4Vn+Le0lTF4p8NmsQ0xhTuDalyl0N4RcC0RJfbxZJ/tE0RBz/yUdUPkyWD5qANTcxesFEv5v3H+gpREK5oWklTSnPBcoTNUOEC7jvearUVyD+Ogsp3KP0905Oa720evzT2NA9nwPvqWknJ/NiJT1zni1vuWODQztVCRUChYTDZwwQo8UcAt6UBF5LpXec2mg9QJUvPHhJ5V5pWWWoV0rNw3YLW9CLfnD9IXiUNYU2cNItrGTULS3y/qCcjsXgsIw/lQtTM/UsSiIfQiNKKH0fFweYGaMdvTqxqP4W6HTFCIqomXhonJ7VCOtq0ir7LLehp4oryAElKEsfJ2mRxXAYW/T7fxYgwlvzKY51shW6NBDbhhBwpQYgBoOBTs+xMs+8/aqLsB3JePPG/kWepfavL5BvSRuPktjq5CEGr01u7JASSPYu4Ou3uVvpZV5Azxs3VAbTHLSS0jUv8WPP4QtlOvwPWdtJVyTbMeZRLWJCYnXlyG6RDtTohVwm2oN891z5zlFs20STUHqshDIzJ4lo+9Z16/FL/y0mbpB/vswC5j5N/o6aeq6KvwKIFPrGZpZssbxhrGB7ZCg5LgdtAcUYPYGbtNvCxVxlH/BMXoseSJC991VlUA+aagUrGfRTOusVKahhIPlFOzbEO0702Iiha2XgIcWjM3YFMiJXqISjL2M7kJ5OU0XwSszcWjDTLqPJHC1K7vnBV6tiwksSNYbigF1TF0jyBswz576M41LZEGKs+DlTBYDPtV82kHJdSFEbSghzkJXkpKk1O2x5ToRSpmHsLxbEAQhhkfg=="; + ENCMSGS[19] = "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"; + ENCMSGS[20] = "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"; + ENCMSGS[21] = "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"; + ENCMSGS[22] = "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"; + ENCMSGS[23] = "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"; + ENCMSGS[24] = "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"; + ENCMSGS[25] = "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"; + ENCMSGS[26] = "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"; + ENCMSGS[27] = "WlV7kcoYdJcyBfrAwiOxv6ojoOMDUAPk2WpA51Oy/wmWjO/92ehAi4SE5OD9L32iN0JkbiBTeVPPJb3/SPMn7WDRcsxBTXxzUOMDdgwyT0lTsh/Z8Q2W99ANOYPuDUpnNGLD69bov1+8OHqD3IsquJWYWWXDr4GYmp0kUiUxXjBM/lhZdt81Ks3wI3kfoAbXARlutvk+1vYBD/9FbV8RuxneeQSwCaf3lYY6Nxfaf2rcfHCpv9lXyMWSzYWf1xUlUIQKBFLCbMVladRB7lspdGp/3I3MI4iETxkvWNzoSv5oNCr8AlDuEEfwtRpAvxEGPKhYx5JQ+HuGz5J5COhDmB3w0EDJF+3lX09AsArDqCbVVBu8fIt1+AE74thbTs6cYeJ4/RFnE6mQWIVAkBMxU+7uEuYX2lvbQtTwmhGu7OPjMXqXOq62Jf0Iz23WwMe/OWK1CJqxhqicJhc7+74p078huBE+gKs2yBilXbBAcaZ5fYTt3hq4Aj/ACk+VEFeLV6RrXpUanOzchEpg0zS4DrHwFcZtMZDpMJgKlD2hENxfKgi/ObVu+gEo28iDnPrez7TVPZ1HN0XeZubQ7W3t78r3MpC2t0hJQhkbSS1vatnf475XEZeiHC7632NCb/HloeNS+ewiPPRl0QnS69avrOhG4tQAmCbe0qvmxkHxqyMfbfgwwWKIETf/QlBhZlOH3Q/07deVYigYbn6T4FnwLIt30I9JhlgVeEZruvwV2wHm1rycww4QOrWJWdQW5HrmwjI9J+7CakCNuxQ9YBY/HMciJ7XETIa+bSwud5WikInF2sREKs3qco6yl9LNpimsHKhD7ADno4qIFLYZZ90q0vP/QgIe4EakJkwZxAMZhPQiJSsMo7liJG22w4c/eBqyv4c9FXzKb3UyaNelXTD48ns7q7vm4GY5izSVPbuuE1B4D7/Q7cqltThnYZvvr61qoLf780APUUz0tzEdHDV1H3SpJ8Lx+VcJo5+AOmDCIf0FcbWT7RUAnUdTzCFzhNLNbQbZKKNYvbGTljS/KhfqGI+18/MDznR2pCDJbqdbfbK+JJZ2z8aEz/A37bamsDRvmlQe7TWEMNm9tn9nMKia/J0+9Jh4gxUZ5BKtunhpV3BoVSWMhp1qoh/TCxl5tHbyAx2lS1z1G3pDG9Gs01lQI4xgg/RsiO0Rp4P3Yq9O5p5PRT2EC7CSgI2lMRV6pWxsvL9pombReIvIfXsB9bz5EKf5VdWfClqGImPlVjZg+GPFJZaTQmTLhlOKg0JqnTAJw7KSGSZPYKvQf0DCopTXPSd+D3G8/tbmx4ov4hR2s+L4GfE+IK+u8E1BcpJFmrj1zH+1y77EtDt9FR3g12eGX6Nlo2Gl3Qa1mewuYwCjDcquMkYn3MlNMoC9oLL23gypC/xzpfrHcngKH4lDSpQlKvkwjG4FlkS6VbHulca65DXGUsJQvXpO6IFFO/Xa28qS3fJdCpjYKyt8g8KeY6UeER+Z9RTMhsJsN+dazgIVHslOUWQKwF7b7rL4CnUIl+gd7wq7dl2LCY+dHvaIied3GicCOLSXE0kq72An11LMpvWlF4as4i+gzHuFMnLE+10TdtM+xNFPvYL0GBJ1iUkaqjEXsv1Q0vYHlbuXJFKAU3x6lvUOJU1nRACe/Thy8uiHkheMkkUJBDXh4I3lgy0aEk+QlDoPsr37RL5E1j/+FTvZ9maH8+3zW6yGX6hhu3GYhv3rbVsUd/H0Aph89p/+iCVcnoy2X8ueYLgfrS8NsdG/gXw4IcyGXOkguvyzgdHOsvPFHgOL5kVI7ytghPtqHOYACQbHJPogmdj4c4pXP59gM1+Pa/8w3WLGqNAl8HoGxUAjMI9jaE3ijJ7asrbjokGBncdazC5W9cJpXNS0b97upzyB8bjKc795ZGQYKMMRrtImULcg1/m04JPzeHlscn7BjYByzxW7lvdn2CeMGXYZLydEqIfUw9/G2lwjj2haq4amlumo/TNouq1WYefooyyck81T/3jiRCXI0aGbjyTPWlsTgygfrUsE2FTjlrIV9P7pQkEqXryU5ZM9rs2TAps5VWDHmOzgcxGfZYdxjMibAT3xt9V1HkkQjcJqmRYU6orCafHaPw9Pe63hOZ+5cIXttk59YDdIGd9Ig8xzorQhEdA2u3BpfKchmtCdai0euWK6zqeMVkRUpxkDI2CIK4Oi1KuQCcfZVbItKHcjMZLFlWiHvNcUM4gcQWQCY5i282LnAvu+nrqmTkLo9gh/ePNnEnrAhZUW5FJAtfuR8rqjXCtxbXRH36+wOrk2nAyv69fZ2mAEjDFaPme0UsGwbrVJ2LQhohwAzK1ZtL3JK3JL68mil/9jY/8jZIcky6bVgaOFFPp9aGtFhoxRHaV2pJbnsKAKnSxpcC/3etPGhL4VBrvTIUvM2YFgrYUeX+KiPfJz0a8tBiHPxifE2OhiFVT7lkxJHhRZYZ4tAd1bgACTD88I/p5c3jTbyO3MPhvK2+RGDz0EFJpu68U8MEbCRXT/X6QE/Z3UUxkgBEMnaqJfyBqOLrw40OcH653IF/tziHhKZCDSDk1IpgoWXOXVDeXG63rTUs4NME+8ibd5AqL5OjYnRNj8IaxVSotOhCZ91H2kqwC1oj02wle/fr2n+QVrXyG7Fz1pgYybMhePpXZlqkalUTGZ1w=="; + ENCMSGS[28] = "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"; + ENCMSGS[29] = "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"; + ENCMSGS[30] = "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"; + ENCMSGS[31] = "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"; + ENCMSGS[32] = "lF4hI1IGC4U9Rysy357JTEzXdPkqx4s4AJSbkfwHNmZOTMwi3QONE1q0y/+2gZfhQNx85P04wtaBywIfozXFEXfc81Nr+GI0uz+VOX4cKqc0EYb/bMntvtQV/T+MFbt0oZzrboze0lyhDSZzfJ6eQd86edWmU2qX4uFbngLeJ7co/qzAXW9p+KVHUjIuouXYPKElQVPL4Es6cYLiyHRIwfcLUhl7xTF3xZd931Qj1lERawSAq1yTK2imb+RePgg3iugLDkIjvEYQgSLnxdD5JtUh9Mh3Lr4H6SNzFU8ax/TOkCPERSuuVgXYBOTLbOALT/x/t+BoYVJH9TmeYgrgQ/8KlmrhxYp0RRr71e5562+sC468w13JpWnr1hU5va/2KfYHdUtxHbV6BH6KZ3DIu529LcTPN+LHy04kKQsMyohUKtnBDjS5IsRZ3mnExRcWchgRFMPdwo5Tkg/AMXt2OaE/Q2P3lz2oY+EOdNe4Nze4Wj8n5mmzQg5PFZzjXAhMb3PGJYKCG3lCppvsiSZkhMGDsbZWmqRDsZZS/jGnauVg025peqCl4bPF34eVJy4MjQc/M7IfVF1jl2h3fvk3CQq7eorPykNl/XC//VPmS8JT8X+5Wjk65DMANUzLZqGz6o06MkUtAYIuWfxeOJjU9+xy3ZOaPSyf7C1CxDoFs+6glNlY9pYJRFx++T05ddSuqR6dssxiA0j/E6cMXSI5mP+BbeTC15oxVMdkWJ+GPT4asCcAx7lJwKTMiP/+opW0bETOeBmeyvqlvcpF9s00GEspa4qtjfUyi6t8y/ag1Djyi37s9BX3olAEteHl+3L1sWrPJulru7YnuwjJnR2PsSuiWaEZs7SSyUqeAXZ0uGilcEn1OXlSBGA26a420zXhWV8jZdlyArPYAzB4wjOaJ4tP2CPvOgIuGdph+43S86ko0wqIIJEztCcU+wh2ir7cDoh9HBQ2hEQMMPtdkRlkCVu9Wwt32wewTkvvib2KBREHp5Ap16am7COP3Kya74LvgvsmbaX02i2WEzJ/OA/8Qp90FM01HDBCHo4E7BvNS6+SSIN8XKMr+YvSQOQLGPnfs86IqvwYns7QE7qw99DeESX69TuyBJNcWzezWPoabhx6mBiiwz8v0KOOoNAGa63IbIeqx5Tbf2JW9kjMHbogDkfaJbEaYtP8/XGVSwvmZyDvTpXu+RcN/K4fpVbrnRl7nCF35SA4r0ONkbbUUCFvC1q0mmXwicfFOcXEbxPQdKJKTy52ViZXEHnnLs2fZkgMVyOC1HtGWsiHrb5cTxgJk6AC111UUSXRaXHDycsgoBG8LEN2DDSojSwbxW3DU0UnBTNeiJcmroghMxAwtaIkzZFawFJJyoy2SHs3D8/EjgMG26bD4gSNzu4thQlIDK0ey3i9INQc9FAFr5LNE4hrGuAxCR01llym6ccZHdEEmUH/ARmyQdEjXUCnbAH4ivFhqycj5CRi1RqOkBF3jOSjnx+EYRjFlymZKyoSz0sJzxv1Nk79UAlHAwvV9BxhJMuXbGMax53JC/AXgNLlqkzzaZKs/nc/k3qnAJl2pU5cRpd/6doRZY3X1guFvJGcJwTPq1B3uHETkbTQf273d390qu7s+QzcKQHQviUGMzusAdE2ldc2pP56+0G+V0E8UiUPO7fq24ScsWbggNxsEIsD3KSa5OGHiqZCPeBhh3KvwVPQpqeQo7e5ZtVZ8Vqo4ca0oKLM1psP+VLdkM6cEivLUjDDlbMcGpTBT+7McRKoQHxj+IS4PJpp22zRZXRi4o1ZHeYSw7r8fQ2mIbyvkgascBdKelwQkXiX13+bZLA8v8HUsrH/Fu74YQoTZhV3/gOCmwIy2+hH11G+xY5I6lct1mV9LsH4z1VvA1oCmnmnJehuOV/Zhc36YsUXjrxCrZDADE7psv6yVxVYMNmJuSd37+x1TN7DeYgiScvt4294Tgv/VS9kznDLizk3I4DR8thGfCM7YlnXW5GrwjtPnqcbiRF3TiGnFA5OE8tCmHF7jXAj6wT8j0utBPhZjCVAITKssGpfYUepOSFxUW7vZjREU2a0wOXvoDns4pLK/ro5LDKIlTlxXUeYfVzMPotqjtkharua8nC9GQy9buiR+erD8cyLdRxzqVRZUKcv/RTavNxlMELFEJrEExnUB9ALRvJyELdSMfcX9yUsT+Udg8VP6F0BzShfTdl3yF09rnX9Pi5WRum86+pCBIUvpv53+iUaA/Qe6KLVdEGzbLwxa4zQN34eW/XZtGfQ6phe7pVpwsfwuvPlQCPXK8VZ2+xTqX8Q4NIQjVbZ6exo2pW99PhBCuojPZ/L7xwYaoIW1a0DDyjr4O94vduAbVDBej5co1aHNZjlo+mECedzwO7zw1LtqPvuPj3/+hZyL9aJFJ8L4jxGZjK1Svmg4cxz5nD5j0jXcfM1m8SmVdYqiR6BTd98vr5dDFwKkzJDIae734SR75OmgB0XEG2mvtPJp5eM67uzYpp4Es4d2GT5CJtBG/IoBaIWeVL3FJmw8SaMU2+nM34LIV4uPsM7lU6XzEf8SaTEQBtRiL2IKr3WoVg6ny4e0oOW9GrfBJXWzurQUSOvN/KxPlcqV8FCxkZ5iFAQeF3D1qCOxiR1lmKNKqfna7GxM25o0dd8xRSjXfuRi/9v2rnWma5BR75jJQ=="; + ENCMSGS[33] = "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"; + ENCMSGS[34] = "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"; + ENCMSGS[35] = "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"; + ENCMSGS[36] = "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"; + ENCMSGS[37] = "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"; + ENCMSGS[38] = "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"; + ENCMSGS[39] = "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"; + ENCMSGS[40] = "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"; + ENCMSGS[41] = "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"; + ENCMSGS[42] = "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"; + ENCMSGS[43] = "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"; + ENCMSGS[44] = "N7cbPldPcZ0HGosUXTFWXeOgDf/exC+qgnu6S/ofn6KAQA1MiFsC2sEkS3BAORf39bRCrxqnsArh3nJxG0CAZKvEezWnnLSM8AJhKTr/Lx/Y5KcGEeJ2VGb/pi/5O3He4FB2mMdWuCN+WpKQkmHoLHdne2LTIQj+JgvgmVqSf4Y/X6dIvsW7OTRtsG/0tpej/WT6AinB+dhDYik4eSI2gjyQ2TSIAymtDkxm0Po+5bL1tWMW1sXrY6dwXn2gwkXBD4FEU6kn00bKAev+HbCtDPUV7tWK7oPNIDTVRoE8vcQpEqf/TO7DyciSpOPRvhUCXKKvc9EI8lrGFN+25OxEFX8/IHLMzzZSyXDSc7t/eJ/Pni9z183NZvd/X2DXNH7NTx9AlKGscRcBQV8T8gOjG+0Dyis8SkJr+BwlHkNgKcimN3gbJUDd4d1otDXSRa9JR/FPmDPjZ6I1P53cijvisUMrOzF/TH2V7P33TWLVSgwC3VvYvSZvIA7lpisttfm/GKeeXuSpl+z585AYrqFZZGPLfF9cH3a+1sa2uDsIVgBaSH6M/4QR169Amvn79qt4TqkAW7ceWpLRPvSign/o7NtEV1z9ssBbnlMi4jRs6KG4Ab7WC+9vCU3rQF2OahvLGrxMjKAZ0riA2i09GLFV9zuu5glDviOFa9Jum1i+WARi3YNI8ejQcPAZK7A+sy4JJRUjKOtZDBC31mI5pbFEbP7lneBS3oAiUJJCtZvqnwUOYq7mTPcxbwkCS3yRFd7OkiMxfgfNNuYmu4ngdEKKMFPLE3hotQTkrg3evdnChHRGR9/7cZkqHSaNDwvhBmF2dEYu4wgSo2rcBcJBsetocm60WHrVLGiiIO+14WoWiVpcFPNn7i9U7Xr6KtbYAp7eEYAX6vs3+11W9grhHNn/oEZbPjhgzjYO+6odPYc8GfZJoPYYLpHxx9nqlUAN6Rpv0OTDJPHz9RMVabepXZzMPWuSMp0ZAJV7EIw4+vfeWwf+KprpYZrr5mevanpbj4rFj1ny6C6iKBpF/7l5Dzkpa1YLrAo6CSyP9GICAYbK5x2liYaXktJLz0/VzhzgivaDWGrb4SX/lQQUUXK62bPXKEgYtbs+p/4pKGWd42K1krEe4F2XaeePUFvNqdIAV060Y6xYcAgBA5TcseuHBZVZjXolxzesIvz+w8N3L6pzTCWCnAD3KsgOqjvrdsaoJl5IcDdi4Y6GGfsP8+W5asN7yGbJkcw1nAKNqd4bUTnaDBkt7HjlpM0H28tvbgyfoB8ScSWlSWYF2a4q0BhLNQX9QVwiufkvzhVEfznAmPz3pTPEmNUg+AsISWrvOTBuh1wOkowsr7FNZegPJcDiqZXBN4HiXfIazbaXiVKIRotsBb3OQy5oW0zvwAwJSTyHuzM3s9nO/r28IoPqvIq4aAIGRyAB6IZamDF9tPLrf5ZgOPTqy/l9FJ13ZYlix9vtKuJAGOF9EPkrwXqCa32Rjg8vO+2cyK7ue9q0viqdEEcPEBMjY9GzRCQO47V7CtN19cxcZKak/v3LhwmrO7Px9HTC8yc9c/O2gzSi8+vgnKHsDZd44WSPQH/HBfnpGRpHckS7oOchpMyBYBCBq5b5kN9kipQ1sF5ZtITps2LtEwg8Mse57HlRrWyR0Y7wIBp1ij1Uw4za6dhEEIASstGRj2eTTdal2os8lGEPlmv4gk7PhPFB8k76qMvczk0qgy378HNGKbZBf93p73rV4bZj99ouKVUt8otYv8gNNfE7IGspeWZUnOBufVxsnvnA2dfu9KJrqrlY2z6l1IJLI52IqvgdlTG+NmiMk6Zl5kdy74u8QPeNynsb/mndq4wkEE4JQwOe+pFi2SczlkSJPRqeTn9Y7XrYbpxL53YxnUkWBIG2fzWFlBXE75weAqw7DjA2RT2R7irMiQb6MkDSJpzwYKs4DmdnlzKFFS/EFEri8/efSrRI3e8Ue0wRsVvLp7zkdm7t8j6cxoUiX8N/Pp15iIGLn0zthTtzF1VyNzwYNeVw7GDmOGFZNsO9U3PR+hBslPLq7MuSEjnnLVa59XR7tZR2lCiDw/UCk6E2Iol/9AhP9FrCY8yk804gOgAoJY7yyP9Ifnl8rWMjQ5gOX37ifSu5YrCtRuWJdUVjac2BH9VHC2ydUuRFZwbtgcjAYQbMIk4VXeeiiwafC1wE2BCG33QdoBsvaQuk5K5ov0vpfeKiGRRoFE9Yq1ds5GhWb+gT96f+AXNoVJb9kKkh2q/P7Ynd4XciFLYOPujgLSHxUk6jBHynHeM+TzP/0EjedKyju74SWFL1EORoBouQmif1ZgaiWMd/iVDQPX3yGVsDNjfrC8AHanWG4KsrqKa7B3w6NwP1ax0W99f5nBs4x5zxxv103EuIe3be7UCv53SJzhavZQWWDHImIe64gYOs7IQUzmDxE7tr3Kqqh16iBDp0tEgiYm0IKw6OVCeN9zswwGbxReCIDBQXK5k0eXrIokpwxOBNFmyanr/wm3oACXM+w2Gsih7HETHHXdARx046QfZ/VK9mJm9x+FVWhFOJ4qWgHhzLSJ8QhJmv7OQB2c+GYr5wYmPfkMbWZMy+21nz069FvUYmlmsbiowklmY+rbl0O5NytIMg7Nlim7fASV4bj0egsDpG5Qgh1hyk0NIQQWql8jdG0cmGZLIyWw=="; + ENCMSGS[45] = "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"; + ENCMSGS[46] = "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"; + ENCMSGS[47] = "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"; + ENCMSGS[48] = "rmnBIZD6yBYwjp8mWSqNtvpj2tck9ivFxOVGSQVU0vpLxGtJu00/UzHnNJMkOj4ZmsV6ADkuVGaJAhyGWYylwebgzcMHpoQIDE6xUh8MvASi+4lg7u/oZIurDxbjTwAon0o9jhmuRYeCq8xfe0TPkV/GiXqsNAkjedM7Jrqpzdd4ksy0j4FXzrv7+3L86cpBqg5U9NW5r+Ljx4ZrW4DzXm7sWoOU5K6LMpoeaeAbrGilUlJL8yll/gkD8PAjPhT2aYWxFVpzNxM3yPEzVPhRqkwLsML44WLKWaaYHnoMXBMakwQwEhEiV43oPj+N1QmT1B1MtY4KKX+mBOPV1dOwm7MYimkqxN3LZIQv3lS/m1WOdf8AYtPtF5HVLvG0+xc8izx9gzOQx43ri6nhcR0W9L1+ePyyVDxOz1dvO6Os/2kvtZrMGZUdeqvtlD+M48RmoULXpGGiwxUF6eFRO7chvhzBkBJ7znGGU4OtJmchUwqQEEijjfm+d00bRlSAfBc5Z7YsK8jQxyTodbfN3MUgggUOLEES8corHPjbut4MqiKQAXfAic7xKMLaTYIIvQiCR3eQCOOutZMARtkice6p38FjpmTgY5LWgAYi5fFJ5YJAjIuB7HzvyQcokVdn4Fe2/hcLOJc42pheOLw0dg/Ooyc7zF2hau+CHzI8JPe3sjqRDu8nnJTVLnHiqAhOENPQBi457hjGk9fCthtEM+IdxW3PkrSMizMGKasnqR96ox5Dyt4CvhsJZsXugeXm1uBRVnZ3BAjULTTofdRZ4nE8NNLS4cO5aWyL3ejncZjTJQbbRE0xLIW00CibQdPMPw5I+Hcv0f9iiyvQ36IXQdLO/p5FWpn4vgzLrYQRcpZWJPf9cPO2PnvnQd0riYOsoMAqaW2QWtIkfnFsk04RyT+p7aeNiMg0R58uzO62AtLrs8Vg6dnRe+fj9oTO6TBH+LpINX+5tuhP73p8P74GXe9RPfLK/OnkXIlXNHIz0Oi6/Mt7+CIhOe8J+y+Iv4TSIjc68fC4vWcljqNUvN5vClajvNHboi1LptTIUVrUiotJ8Ket3SbDooUh0CV/80A8N9K0gDyz/Io1sJXJECRFxMmxFPWl4CK7ssGJf6o6ifdEXhyenaQsES+cQXdOXsd++XJ2XbrLFZbaXoIbJ+Pllsbx+TisVo8xR50/eLBEFHd/d0CJdlNS4BvSScBDQubayyDo1nUngbe26Aqo93PPomfbD0FEc7U78m1x+20lhaH3NM/9eGdNNj2UzxlSHFpBOtnyh2ZemjG0a1c5eAjrX6DY+rTgNi7RsJU9shqCuyFAzLybdarS6XB29YKXRwIab8XkJ+xvPwDOPi9XLumrEQ+WpItGw2fb7Q0QaW32BZqCjhoIgOH8mHnD9NQzMPummfM23WvQ9kSzaAkzapvHkDJuOmhD/4K+DJkkRw4CDURpWZQIbHuXcKg9GnV9og74B+9kthlRBIWAghObCArurE+PXDdGb9fldTXM1rO5GTCwLRnh95zWFidA9SvVqq82cINFSpOvJ3da4ksa2t9InCFTAyA1PyDomZhObXrE0233RT0zTLTxiK8YYi0HPpaiNYiOidTuHL/oSK8Qt+jAIL8+YWc0Y/52Knp9lw991YfiAN9t9didg2KRfYy5Ny/h58b3MDCfX6aN0xgjRgsscsE1eZ6bhbYVZnVgqAtr41THTmttoKm/0VBuLTdUfbIacuAozzj5q5YK6D0muaE3pfhyAXwYzIRmaQ/LIGv+q+2PU+zqp10Xr43UR616vUpgXeMIDBPd65SjPFXio73Ix52dMW0KOtaf/dgVgaXTF7Mj93lwZLwdIrGNisNyV2icFHcUByx8L4MJcW4S1IA7uF517jV2wzhauID5YCjkcHekKZeVWq2z9RWvSMvMOMfJ0+tzC9svf/1XFd3Isi4bSa3YppekULtd9HSI5LXCQZ2w2Plrh9H8Hkmzm0Bw+jMWOsVltOzL86xA17onE31P6xnCu+akOKs9tZIm9ixxKgbP9vDXB62IIdzJMukFCCEwjZNOkhVsHhYMjgFCqLwcY32eKmjz0p2Ts2r67PDMjETW+0Mf82dkbo9ywZe7OFB5zr8jMdg7EYx5rX0d8CVQwHPsOROJ/tb0qMPO3tB5xxEkNyMUCRcEFzOLI3KCtS3s3MijUCjx2vTcoAuU6mxPwBuEsxJb9SJTpehNaKQKeLjsU5Txr0afqnxw+wEivmOCq6DM10zTBsJXTEZbDfEOazhUOGoIuedaSXD834WUtuDe1KfmW3LIX/WEVIsOIWIvJPb0BHw2u69K1sf4LGYjcQUt0VPWNIrYeTS8TrbZeAN95xyge7gLa53R0kUi3+FTFz/ElQjgLai7YbQK4xTKNya/nwc6D3+WvdOC6MGIOug0zrqjg6vc95fIxSWiGi2ZPy0AcsDyUBkcUakYkSjkdjDsR5vh+XHxHhYJvnyk94z7tBFX/181e9++4CDtZrAc0u4cGR0A4mvXw1rwscV5w9NRY9dymvgCIJbCE/UvX6+mFSGkgWc97gUofDPL/xcU5fwgmmRvZ0Qu+Ik4VEggUIPL1BZY4GYWIsQZkkqbF7WkAFxSurpdd4SQMqc+1H99193pCPJBTBIqTe94FvhLwLXA69GDV3YFJBx8YmSs3xTrOUAxVtJHPG6aZw=="; + ENCMSGS[49] = "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"; + ENCMSGS[50] = "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"; + ENCMSGS[51] = "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"; + ENCMSGS[52] = "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"; + ENCMSGS[53] = "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"; + ENCMSGS[54] = "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"; + ENCMSGS[55] = "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"; + ENCMSGS[56] = "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"; + ENCMSGS[57] = "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"; + ENCMSGS[58] = "/C/iCgWx0ANA8usGH8JT7aon6XV108bZCoY51fjscZmYJPD1yGlfhuzALaCObufw+sLgTkOA95YYseb2eyumFUiXq9UxaWbE7t92cR/Sv2x1/bD2C5qLkBHuiZFUxNuqxPn/Dipx7wDMo9UOhlVrNvsQzr6Dkjw6U/7/Qrgrm14Aoxy689hXEN+LHlaX6rTGuI6lMtncIoVG4NyT+VOR9ltJ5dnxvJkSHcJdux04bwmSyF1Obi4xZt3G4r+LqvlIFltGkhSl07Db1cyQKmfdL7/AG2JesMrhMNGVK5KWsJ213zO3Wy6t5giGnw5qcfV99TXgO8vsk620aDDmlUL4sUzYZMrFwKPjquYF3RQ1NRsGm6Cab4a0I5DRWri4dDGUtoMqUEGmktTVEV06nF3kBSZJIis73iFDcDafmz74VtNPhKEN4uCAUpwo6lUVSym+NJdlAPLkCnMGQbzoOU2rcvvCmaReUoe+VmDWZ3+tm2+hQXGVTeVEBV9B3vlFL2Zah8adnP6kBWqAModChe4X25DXG/T/e0cltcqrIomSEAgWRCckRBy9ICa232GE85gZ0WuYABKQiIKEfgMIE6pbi2wUXe3JaJBcfLYLug+kjrKDFe7Ujf/QwVFmbhUQJLiLU60u4hrM3lUf++v/Co6o1fD2aDJ85nCCpA9JlwVq9TLr6s1z2BbID3Z+m7dPrRQoSACCkBzmRoBfJLRrStNlIJ/PwAjJHs4ih8jCC1RGX0JujGs07ynXKh0TNwrKNl2ZYZAi9ogO3VPg4h2UHOhISZ/Zi0umZCvLb+qxLZEeABQHJOlqE9P8XHR8f/ooZLuHXH8l8wxlKeztj4coVIwqof4b8d98L/pOoGMHIC0uBdWwSS79hMlJbFHIMFJS/1kLwY02lZ72dQziyC7N1SdOhDadJZU+Keb4krM1EP1MxmBqqxnz5qKHoise7HbncCi/BCbJnXV2/vUH4MnaQuC5rB5hrTCw3xxywAjn1SDjo+nQ0hRRfrEqBkG4P8YrwPh/u7SwByQ8QLj8ZAtc50gVxlKnlWU59ajVfEtLehw0lpvoZ521NggYW8xboV37fEbL1ADN7b6wzCwgwhxvXU4KANVwu70D3d9ihHX133YD9/LoFB74XCnYTLUGpofhSUFoaE+tX4fkDTBv0MFOl6fZgihorylzAwki2J4gXNf/EsK/H7vWZDLqquDC0SvKzHkxTHEd3ZKKDesw+brJJtFdylK3zKZOEahaz+7H/ToeA8d25Nj+5rDjydy6Eev89IEah2XArK+pOSAHXsU8i/3V+e2cspE3y221ataFUUc261GjIjPPMAHjij5s6emIaKt5ouoA1UvLkIsBQk7GwFjpym0n6Fbw211a107vzqXohKfvGsedvZNpBznMnMUSIUiTHavFhpvqq1KcvsoIxQyxgB1zfC5UY1sJfdZ9czTqhd1fMogGAvIAPiy+FF3GY588+3q8FzCzVDtNC4RFAM7LkP/79ghpKblAGrFdtKa5cJwAnoKiJIbkq07QoknPkUmUTHcNl6AJafiRyVwanRplTBaOuqihoWdsrkEPK9husGsurTzfaTrI7BaGXre2vbJWAnwN+uQYGyT6mVOMQarXXjI0sTPtO5bMBtcvVATTlFDDri3f3GwotBLPik8vrXXI26Q1+UmIg2ttdLzGzkPS1yeY+xolD1SnN1jecYU0omA1x8UVpzuR+1By+VOOhmm9syK7x63cUeBmoeBGNMS8lzXfo2WJafOGt54gEwONv6BUvlKQAeX2sB8hIIYZkKCmc4gfrC5mrhPrEiMPVsO32ic5z5BDJSql4R999LsLct/wunA9DcN/i2PfcFD+iFISfgJGARmnzdt2lcCoc3MNTq/pqNG60ZtJaNnANUwSJqPZY7kxLXSPuxbeP8gWMBTzCHLLFMseqvdLkNbAwaIUxil1ZIrTQEA50ukpFxJow6dQKE1Ufzw3eDKCPj88yUOPiJrPiPdVJElUjCS61+sRfALsYm5aKdFpo6Ix2xnpBsAGq18CTzAb1Gg3Ddic2dDtSSLZ5oHSTasQx/gdtAK5QZLzr1VZstBu4oTXVU8CXrpKgdDEEp2kTEDxFqyiqE2UhLVYsIOJx5j6EarBuLDqEhpMwl2lKqGP1t7XGXTLb0j5+CPlneMlyIvY/y/Rui+BekF6849+AE3/fxqeSHYT6zbVFomKgs0lr+yBt1knBrHJJZRhdlB/tordsDt5RLh7u5t3oG0ye+EukGFCfljWAqojlzOB0tlfOag2JFqYZ1rsvm5+eACaTPHY3FgJBWgV8uLPKHFPXErt8QDs2gDz0T+XFU1//dXJsati5tv3vyySRzhkjLnFBkGtGkwk7p617VpANEjPP+TpnEK195NcaRyhl8ZHSpw29ufWzxB2XTj4SlU0akcEvMmyLC22RbiylswLTYF87aBN0m06yIYIYDXxTb9io+FVoz9v19jzrKLCXzR9t9rwXdfgpbf8cZSHPKP355y+U6neAgs7k0c63AJwZuA9ENIL/8ByIkPPhFaDJidBi+8owiBZENdimunrSMV1Ye3atI3eKF7+UXbYgjKz9osrMl5WHyUo/K/ejLLWSkSFoq2GSeU3db7hUeb6Z2vxeyeSJ7i8Ifgh7Xirwk6/bPMEuTEDQjy6c/ecLq9LxPR2Y4amHA=="; + ENCMSGS[59] = "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"; + ENCMSGS[60] = "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"; + ENCMSGS[61] = "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"; + ENCMSGS[62] = "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"; + ENCMSGS[63] = "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"; + ENCMSGS[64] = "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"; + ENCMSGS[65] = "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"; + ENCMSGS[66] = "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"; + ENCMSGS[67] = "WmfGLqK8XZ2jaqVjDTB0RmN62GB7P5fy8OTUygTP5+IqJEXG+0CM9wNCSpi509j15+l+85BOL+JuY4lsBXyj77+66yn6Ps81RXMLBdPgDvETd3pUmA+g2hrKh+D57wr3adqAiDZ/xt6sDs3mdlcXHeP99R/l4vxnHhyOWMl8nuQklkO8stQZyFmNCQ4fVsHpgxVC86hGEZ0wD1iP1D1NhS1oa5LrSAaET+Z83GjoOgBV1talwvTG2tRwyD7BqP1UOKCxUTvJ0LpwVKj+BlDL3KaYRCth9KFb7jDinGr9iCVIQV+pShXBnFaLB75PLLCNrmv3916Gl49UZTtwH+zjab/+z0i1eLQmajk9D7oJlbbg157l/S8JqL0BvVbH+i+8yMmnuGYdDd+HIazzu+wW6F9s/u/3Pv3SPTlHQW5qvJNrxNqbYp3tSwo4Oz0xmgXRNLZcf25GBsRR27mMlpS70W0iVqTFy1mEfIE73wGMOTOP83mEypY4mQXcgCJnD5t3WWSucBys4J/kipFuB2urj2OJtqE3MlSQOFLxV/qtItCtl2fqxZEojFUQM76HfGtU4+u4I+gGUDLFtCgDxwQKNGDqRxFeLLd1u897O0aUA/DNu92hNaHx/JHXk8EosIruocT4IdmsAyFzdCzBOYraG2lWl4mlvYzFyLK8u5ZcsT/tV9kVumL9wTNyW2iHGHkPO39+LAl4eqMnZ6i5eG9puad6XH1yT8rCkG/G6365Kap+u9KJ0j8EdxpXqsom4zwNztw8jh/qXzIGlyi1ujdIFgqxp/0kvewn+002XpZQn8iPb09G7snrODG2k9aeG6+5fRJbPr3KL7N50nSY0/331LIkH2qGOmfp7wegmpJEXFymQTpoE4Mm4TDxhCptNC366SGQciVoW6SUeIKWrJmPfd2kPs/YnAyXCg9EgHikM7WmQXfv/5tpXmgsVoSpm1PiXUc9ZHhfTnLy2gwxgEeytP9/C13+xjDss8sCLw35daNVf/WOfHTXcsouNW6McMlnnfiPXIfjYT5aJ3rx0evFYdM1/4dH+tejGSg5dq7J37aQvqGuq5PqAqJ+0R52aLH3MQ8cce0PRZ8vgQNHRHXYNrNZRByzEVFKBg5gqNJkl2rUGJbLy1ZQH1L/sLI6ZFv9A6A8ejR14V44U/4r5IaCQf9ebRRFO30ZNKuIhwM33dd8SxT16u4KrN/99xvkflxZYUPW8iDGRYwUSjxsk5GJFGil9VTpxHGSjABj4Ft6etgEkyUsANdczPkJojguwQ/H5xbCuNzfkSm/549TTLVf7roN020yWeuuYh/sxB2IiAg+UOcRhQANka6un6PUlL+rUpWH3IaS4plNJ5N9bTqVCjYv3IqMs3tkruzf+JoNFk4JNZIbARBF9ssyqqCnCj6ueMXKD7lT65UGCPqANyVZchoof8GC25EaTBFvI+oFVd2LRQuKc3aA4g6Ly5tVf0joGPX6RDSb0AOWq0jbWPfiDUhcoIb1nPs2E8GQD9wakA8AOjTvxlFrK3NBkSMATeMUP03FALlbu8/kt6Jn8cW4YyOs44LbBqyqP7OmfKBfTv8rntfiwBDtVE0inyDmb8Dy88as69nEO2NRkC1j+yeiH+D5DhpL3bd0X4Z8o6f/Lll+9cFc2Pj3AUoyP0+EX+6NrYOd/pO5lNq+OtMsV+5+jkQK7hK2YHnGuKb71Khe7kwEYTvyehXs5qcmToagiTA9eeg23PgAdKv7BO3FaGEF22RzZj9xVvXd1ZEmVyEJpqBDOrmFjs2fcmmLZ9lZ+TaQUmSw85wUxLMVY7lJPSmdrQSsbEKE5GpHA12xf//V8M3UVrEGteaVHB1ifNJqvdgx8HXjfIGjLazKd//Iw0gVpCoqaxeZ1IQJZSzCnYqykx6HmVZl0psiYFoZsZPP0dk4jtJEMGI/HWdXU0gaAeq3kkeaRqvph+DLenG1nDI/hzP8ZWMgyGUV6LMW90TJMG0EpY+YOvTR3FA4AbsC23cEYTR5HD4/oBplQi4gHo2TYXKbZDlhG04jxe5UnlTATApP3mYnqsE3KKQ83UzT+8BYWcx7aEOeMOLgLfSFrC4T8664Ts08QVuJRJAZ/mUg6geslRqw1djdwQAqT1IPg/b+49Dp52O/t2SBI7Y7gOjkghT/KgiL8TGRGRPFtvoRmS8QpejnftWWCpaVk8LZLGoECD7ZIvTUGJl2TFC5d2+Eux+aWodGfsB7H2VJqQoPadmDrbn9xORNSo4R8A7otZSvsF5gUPcRLS8ZisaAtyaumOrKdVQxy/JdpaWO0SZqA6fjm/OVu36Vu9Eyk6xyh11xC/w+G5c3HQ687dQt38+dHmVD5eVz2NO9pahkLKVA53ypTgnrst1UND0RCzm2p6Vs/uP5NHBPB0C9IqhkJERWKd+BclEnWXRPgEh2v2qSZpZrUoSZ4AzHzCcAMFuz1jIBc61daT/htOHxT8SKPgBzH6MeJsPyKcagUR5kKTBV9BxkLhDOn+xmmje7BWa47hdOh6fTWw1baJTZg78Mq03uQcVczXgUma9QeelQD7/IuHl9iCMwkapbSdmyG8MpKVDr/ghj5CjnhyYcDu9FdqR8S6QWM0uXLM0EPBzjesi2zVcg+Ad+nvec3dZ5S8wCRHqdlG4x/alkLz79haSNYE7YExQpY6IuPvRhpw=="; + ENCMSGS[68] = "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"; + ENCMSGS[69] = "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"; + ENCMSGS[70] = "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"; + ENCMSGS[71] = "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"; + ENCMSGS[72] = "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"; + ENCMSGS[73] = "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"; + ENCMSGS[74] = "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"; + ENCMSGS[75] = "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"; + ENCMSGS[76] = "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"; + ENCMSGS[77] = "r3smcF6LiTNfVCrIYrrK9Ns3meQ6YgSBWRKKwAbP7LBHlUO/l3b5FBjusSxubBwHY2hLNmRLZl/L4Tkp3wKYicy+WahMlfJ1WUcFO0x/kzjOBtTMElch8S3AsKvhZ5DpAM8XNbRIZGJx+FEwQ6Ldci+UwtFSN6IEW2aXWXFmBeVtF+GrX/e9x6eD3JV+FmH5oWujWMwDfwloQ/Su0bmcJ18geEC01pSO/YzzLz1/6AhUFbAlbxRft5ombsSPSTB5eo+jC/dUIxHmsE0qbFK+3B962EWFqimpqzgrxuI7jJ7p9eRbr10Jx+mgpD2HpiqooQwKuY+blUtF05UZ63ittSKvuymMdoiOFuQUW3hPp7ZdHwyCijttnJnWCoMy7Uc9WFP48u7UeuXBU0J0lffmvQ8DETUBUmL1emPQziUdrKqR6CNfjMMMsC8ORGW6R3Nc1B1/ItxytaThCx18SAy1Hp+qZarU9Th1rw5aphhcYo0j/J3pRb7F+2EPiCF8fxj1UmrYyFHJxBpO+QeivHCcy9T5bmPfKVd3tZtuWoiiLs2tQ0mX4hzsAol+iTYG3MMz3x9039AgWOWG6B5QOIcdYBiVCqXsGrpwNRI4ErNt9FZNn1zYK4cJdYyY/yeWjRF5V6emSuIMw4W4qUS28Rk9hBD17z8zeJE29C/zp4wVoOp7hbRECCrJHO9AhgJjHAabH/8vHA/n7k/ape/wGP1elgJC2gXdQ6RdASgo7WlJ0Q0VmOG8v69VqJiC7zSa+9nq4Q/t6GyjsqRUzjbLG2xobgdttL2mjRPR1Xc6p2xHSZK4Fo0xeehmxpHxY4yo2ZGJKyJBa8LCL+/likzdsSvp6rvDp25zmarfxD6y6Pgsvy523G60IV4+Rc8fdeXY/skwemIsTZ/Cmf7jXXL32+gECWlP30021wJJnOOfjioGWGlHlxpJRB8KNaJ81Rwr0zb+EpGbcNmwQByZQ9TFAaPCFaAxjKfEgLV/tLGdjniHB3h6oEoNokU2fzB+Ue+2DXOhzhtMWv5EBOuGSxfMoUQwGP15+XhAWvoVDRf8vMUZZmodRpwpu5joDAssI42nkEosqjZi5rjP5aBNUVDANQbi/78K4r+sIqTznMBffXJsL5iaftbWWkyRRy2rgUEhbMXwPMLTdixN4jS/kqD3WV01n67p9qkJJzURN6lip+adp5277d3le8Bf5QW1Ydg763LSfx57rPYF8/x7aWZCpIAC41hvthFVRuMkDZ7nNuCYtnLbS32Jpu7pvViEpEeXAIIP5qa7oRoR3rbW5fKib0I4o9IbK8MhgC0jIxCLiv7XDAEZ70CohRuaiaYGSajIHQXHztvTbcaF3lHvzGMkfLePVrwrKG4VyAWnwKCmd6q/1EiH8n37bhMXXu3K5rCsZjDUHGjY0EwSPyDf9L/DbFVLXnwzZnUpplrT5jvuQBT/0rqgiokXmioEbg6zFGIq9Ov+O8iSk/0BOodxD0NmM5KDt+ZypT4P3dtlgj1LbH7JrUbfI9NpKpEoUCPRQCJr2Oy6Io6lwox+xXBBplBiVHHZJLoY83R3QioSxWuwMjmDqe0HM6ViitB85BMk1s5Ye71bhIRqlQAsa46G/m+qf6W0BynuUDBdEYay1vDEfrtFBbQxyWudmNNLE/f5r89YO/orBwEs2mV7HE7QsG/ntGp+HT1C0Ih47fIn9DeyywiggF/EfEICV+TPgaj/+c32f282X/H4M39OELCZqrZC9nVBAKPmOZFFVCWZRZwM5USZNVzVmYw6B0QzONNRq6ucv9iT0+ldD8cw56tYSJczqlwQjhqvxq3b6Y+LG2RaquPIoZ+nTKTUh6xeGCQMxIHDAAJF1Rv3oRUyE18Eg0iWOOVtYmDw1Gt3WBCru0Kx5CXsjFXO++h4d2Oxg7b3+iceCElSkdyvFS9m02aPi3Fbukd0a4AqQuWSvnK9FGjjDksMrzZuWpV+kSamaVrAhT0dbhYxPgM/zaTQ4hl0mXzSqm8f5PNm0NM2hC8rA5O7ct11rjUJT6U+CcJpI8hUt9NCFvoJ7c/9zlbODiesQ9Ji5rCDhu4PmmgFG5xt0xkIcg4oFMqCyhE8ktJMi1b5HevEUqYmySQjNmUGinFRcMg7bSKDcsDo8KogVakH8YWh9iGu/6/PXyv5YWNX8oRxzjNPclf2JAv0kfYH8icInDwrtqY7U201Ib60agf99h9mEiOlyqSG0WK3oLeGVLwzQI+yXmBrwWAPreVMO48+Yb1+L2Q3P+A8tad4qNL1E0ntRxgv2ltvznre0FozJOvP6kh7Cgx8PrZLbWh8tI4YAJyHAWPk2u7+/BaeuaqcIhyhWapXbfD8Pu++T5eWti1jIHz8RCX3iEw7cJfrk+/Z8KGkT/0uOuKVUHF50lA09U6+eTTY6Hy4DbrebED6UqoQ+uOuQUVB3jw0iZy0UF+U8YGX0tTVWD9hi3fhkXb8Ee0vwZwCKVEOHRHUdFLOGCBfIgU5+rwQ6dfJbu+rAm883i39cL+L4915myXNwcA2zNgmbKh72FoHJciQkVBUrbQ4PzDO8dk3UhkVa/cuORIo9eSavCXkX2QZKi9prdPgZyHwknbFMlKTOzcNwALkQZ/auQ8hrI1XKY/F6saAb5V1C3tY+jW+Qn/BHOKOUtBG1Y9LVbSXPD4bz3smY7MmMg=="; + ENCMSGS[78] = "To8jH1egtALznLnigTlCjIJiULgcjYZUAi3FvvVK5j5O+Fv0adf6V/7dxCO7zyQRAqOQYiQ/pIDwl0agkY84rwDu04ELZA3gNHNT1Om1ld7LY42wu5QPktHGzJ4dU6Gq5j0B4j3ss0qEYGb2MOzU/tgocK+0QhIExytLajM+ELaL8Ha97iPmCoTU2r6L7L2aOIWUC1sdVyuF0eRISruXRD0qiJCynQ6cAQfi9oYUEgGbKwekvDgM/5dVEx+5ZvkYCY8Xm3zo17nG6YRmr9xk5h6Ly7UcgksJWS00LTVCNCPa16Hd70Vx5y8NgiquuUIYSaF3Hcu/iAFb0wxedT47K9R6i8OCEVEkx/CeCWZr6DPlzWwMBSsBjJqhgDM9AGYNr58Xb83aSk5Oz9U2qgF7b2da0bJeWeecXJWB1YsBYeVfWXW2xZtj0La378o6SfXRQCkgchrriflj66L/FxM8cyqT/p7Xg9/KhPQKvBY0HSCtcphd+/y9O630dml+ddlk0t5Jvg5Iz6+UuupHR5DDC3ZCSHIfAbdMBIBwpG/lan197E4XDnXJBuAZ//h4ikHokNFuW/rDbKUEvBuPahsqRiS9IoVXLhN6wNUfa85aFtCiCXzuMyYcWEIffwUO4/UGlxoI6pjh6MjdujlYEq/dXgIBCiaxP8BF3cYucK7aTzt6Pcvr7fEyyA39YFIApkN7hbvMJuLZlw0w8Wbmruk+anuyS2NsU5Tvg02IYJaq1m+MfyGdV35MZCpBizzQl7mwHdiwbTq4f08ZZcubgpcT4zrgN66jltMeewkwJkeByW7GULAHsU/lDfN+jZ/6SkVBc2fhMsYYtcIelXIHnRcjhRMfixIGL9EDI2PX+aMbnSBCn+9j5GYOeEIaeui354jsOcL21RMx6QEQ5n8aN00wf76U9DUtMlhqBLY3aHaFk9P1/AFxv3CgNTS9TUZj2ryRKVea/yBtcJaWzLDW5zYx3AVoaX3pwblcbbKQ2H0GTeiHiiu3wCcRJrNy0UfY+fMyXpJ/3x6UdVtII1uEt3Le4hAB7gU5vzVr208VEFZsg+3dqMQA9co6kTSHffZ+ljcxgCFe32xzbvYRRP9F8NmSH2rkAvIRlmrzhJZT0ubHSfGxzSo18YtR5YyTN9kvLBbOD9zo3cRcAuW7CuusJIk8SoLYKgzVUZmINrqCF4BEeGW8mG2nyr4vCs+mIMZV66M/a/LXolhU0RSQWH47oK46JUUQyIWVBrBEhoWVsfNT2xcJFdXxcntT8g0pW371/jXqiamQDyR+skGW72QFfFR873wmo41Mtsop+c4rjDrM9DHcZMscpSqfSn9ijRJCGRHVcDRWYyYyd9org1sRUI3Iu23n79uvLRJHTNbF7UCGd4o/o30W2BE+3c1m96aaiwmFkabpFzzylrDBe8iWYWWUxuPytgUeGW4esq8vqH280+mw8A9lB2vsa4PUA/lWIgXOKDisuPMOvVxVuqijQQUFp32qqXWaSNxuPBMcUN4tx7DSwQ6k+LZAFxI+AsrKQexggh7VVWF38c5GT/DLaRlTKMFqYO1IMUgCAnFWEdzXDLdQzLW4gEoZYcwd+vXoBL3tuIeNOPAJXkYzX5h3fokA2jsOMg7g1FAixGxIWViUh2UL2hj9cCYh9MPFZEKvpJM9Zyf7z3ezwlZFW+8ZILaSNobr50tDsIbF272QgfeFHGEyZ7xtgQs7sEK8liLCf7S9W/owYXmRm8XFhMfd7uOuLM1Sd0T0HncsvYfuw7jD5KneMEspr5+R21YWf1vcBSqYLd0ifc9cDH6eP/kK0pEWHxli8KbHy4u+8lw9VkyccxVaR1l5LYRv/9RPeCltFGNiLSh1YMlL7OM96fx6s3b0jnawSdEPV3T/BTIl2arN24o9QMvNf5+/NFnRAYJg28K+TqRonk6Ve07cIELTIPMgvL7+TLNuT7Xr0ciPFcQ9AnuEaKXe952JDQOrB8tHLBjFzKPunSPbJEacmvD+V3+dYsx7n6r8GP2muG6URz+TPhrF/aMUVzgi8TqsR3I2FygGJzW7kMj9y9AovlHRrgu/NYgF+bY11PM9oEGAt2Hvh95Jhm4KU6fpp3f8jZJTxz7NFSvC+oeLyiB7dpEGRSOrvBFnQbUa0D5GjpbOMwd8S6nPqfUMVAeyCtFZqtLvZ17NaBxHkPAswWaDrCGUmfJ6rFSDP7lskZWOaDXoaX4Lh1EuNgHux9z5iTcsFl2hkj9xtvOytAipVcu8FvOHFDvtg4BWvLq8rhaD/LG/Kgz0AXYuLcLU8KfF+RFrBJUTrTu2vXFCO7RJeSYcPVJAfKr5FtAbm56QdpTWYbfdo+i66UmwArNoJ7DCY9+uv5kj6UPRKFrth5rjpgBT7GLOSUwSceF9Up1CEfYEX+XV23v6Qm132zxABbdQlIZEtMnL/h24k9qFThLaQclJicylWQtQ+2u/kAfZ1Oe1JXFbaK0JhAsdzVqbQBMtlh1c6FUhOgR7lN4t/T2CsLvFUexKw8o/0JkAm4VJWoEVC6lNs60FoL/dcDeVLk2XuvvJaC5+mqxh7qJ8fFTWu7VNX+JrjelSwMXDvv4z4BwA8xD+DrhxZXbBIlC5wF85vVZfcNSixuEb5aFaL3OdIymq5jJJzLQfKZbiglwIbZtsXDo2mLLO1H4DFHa37qC0Ag=="; + ENCMSGS[79] = "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"; + ENCMSGS[80] = "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"; + ENCMSGS[81] = "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"; + ENCMSGS[82] = "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"; + ENCMSGS[83] = "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"; + ENCMSGS[84] = "hlp8BArk50t4Acss2EkFm5H4WhcKXuAxsO3F75iMD4Ax2VkvgyNoXyjynrSDH9D0mXxKO9hereDmpRQpkiJSx/aBhdJl+lXgBgu4lGK25R4C1LaWm3lYC70TvHIVfa0Hj/VqMR/5eOgDxY5sSShmZ6nSGIgNBWVBMW0QFWKoJDuz+iCRTE6039vu5sPzlNd3ZrA2Pl/U9oH6W2Eo+JVvZjBUD4E1Q8e9C1hivnRwdhKdga5q/EDCAEMPPkPTY+4F0Ps1qSz7GmH1RpaHVMV91j5kcncEFsaFGHTYt2u1tfwRIONW6suGGloGBxxj13/Afs2o6vkyDmpYbyq2O+UtSHHWt6VlYEMjaH2wmcz6t1ktLO4nANUJJ2Kyt3qFo51dIn2cJD7buZfZnmWhqnBaWqvd/shCx2xAeKfIzmMIPzTNLX3notE+H/+uz3J3VD8sQjMbys+1izY+GunRtHUaEOtwUe3KhqnEM/0bmN22hmY4K3kjoC7t6gviabssQpQM4Pvw8rSdEvdQQuMl4WzgfGk/4o+b0BqszxNK0QYeM/9QQ+PU+YORyLrYKXq/OtuRBqfMwM4ZbqsG0tCvGZYYcR/pLxJrLcCfZ+3zSdeng4yCmNaXTW/Q99kTCFWgYmd3+0YfQpWHFqxUZIMvdnizwaNDjmSWC+saEiCptX4nG6UmIBnxIw4g33QnNKGb0RFBImWXvrprnMKWCMt/AgN3jl8HO0L4W9buGhgltT1nal+kSZ2WHOPyW0F/bQmQdCbrggc6SE/1rGG322fgDIElS5jVYVcCH7xltHZlZxow4P5iarJJ+frgFYa46uZNAZxZtN2OxHS0amR7yLlwL8NySJOpFhR5rL0yjZiIaqlWO9Weor4NK+pGDC1FjOCxTrpF4EhtJyMYg6NM3ejF2DkfjrfiouPsaAsXx2hfBb9SmWpFqfKJFZnYH+ibTeB4Lh98s2Cxfim+N4X02f/jE6W52E0kUWQnRLqsp32nS95g7YoUHAOrnRID20mV2mIFqcsSa43fDl8yv+ZElSnG5Z90aqhP40PKo32421DtcNQJnBD8NXQf7ZC3rKWwhWD2V+dZGyb4PzvUrbZaZDHLBZINh1imwu0KsykcWsb8AxyrDpTEFQlpgR2HQyOcsKXd1k+BJ1PO4F/X4M+aj79RnSH1X3yhGxLpU+pooVSd1UdPUcgcle7uBI8qgxtuh8sSMDVn5ocn6veRuYWDoQ2oyARmIQQcSYJWGDYHHfA+U+z1t17gUL/q+eCegBYJ4xK4wK0FmPcAtF1vDGhySrvVE59o5b7pdJOvOaXiKb+rFzl4frC6O3kxMr4O6lFJDu3RYUoW9jz7KWzc2V/e4VHLS1n6jypeXMCqe8U+54IV9en/cAtq0htdFEItn94tKSmFYz+6QD87NoAt9xNgS8O0BJO6TJvOLGznoIr5v173AavN+bsYNNDSXbAnUJzexxAFA1jQN5ac2n+nMK0PLL2UKpDbms01GTjMJIoolnS3eJFAATAz4NtdZXMTVlE0hYEt5TbrSIkASBUOH6ybkf91CSeafbaPXP2PBVudEPGmGkf6fMnhAC7ODS7626JI/c8BgQvH7zNYt8Qig7AloxrfFE0IYaA2HyiBZD6mS3SnVjMN5w+QeqpInCLp49UKqacbMzqasUCy6Q4HKmF+dySZwclKK//P+yUhaWl2F5SNXGRPauGQSA5dFjX6v1Ro/hBw2Nc3yFNScDviIuQQkp6WCTDmy690uauBDqJ8iaG9Iiuq6LlMwgcSjLdArgweH4JJBgYZ8fylUfEsc++DCET8bBKKNcsua5Lb7dVBc4wZqawA/5zTd6PpdmeVg8cNR4hofY4WyokVM2HwSyPo0VtNH+hrTGYCIZBZ2CA6keqCFxgdVL253HFrxp9Nq76PV6V2ze+FrVlqFbyhqA65h8C97iiEzQiO+FtpCFfly/EyLT7sPi0AZn6xW6AO97RL3TZRGketcSpE4L//CqlVlmzUW2EBAI63+Mho7YasRGAIvzmCGgA4BO8IXbYHsbLG4CQHWL2enR8aZHRnFKHVVADmsELonGMMZPAno/iQJppNIUDRyigcJC9Q3N9F0WdWIr0wzHLBUv1QG4OKMcPEhGLMQAtFfsmk0zFLXFG6/pOvi8sTpBPI+v7VxcQFHzyG1pQ6k1/TY8dC+sReJkR7M6UMBjn6D8FPjmpaHMA3WIbyw1t1ImL5RV/1m1q7x9GEaTQLT7YSllxIuf5DcpEqnMMBKbPoFKRsE0wF804nTsRtfy53AP0MVnMgijDHPzg5tVlYAzY6Ixo0/TDwL22vi4XLyy8IXp4vMuQb9Jhfs/jvxRBlAloJb3ta4fIAbESjTHtvt2iWMYUttrm/hmHZuudNkeeec/qa7bZefCicnCz8Rm3ga8aiBezh3TDJBnsftrv/BdpMXRQsi2YbozVm2BjDMOdK6cid5G8DlF+uB0lfrsvxYBSsm8582/XMtVjE0MLE9GSCqmeAZL35Ew0yP7JXV5ChcrVXEYEfOSI669AKnpK6OcgYnd/tr26idwX3fO8OQpcIfq9E2O933o5dC9tty3ObGDCB51xv1r7LiqX5KXxPs6UtZvvlsY8azavcsKLPJRQyXWy2r6M1wtv2XqPl9OGmpRnc/A9xD4j4IUH/4KVjbBoUb/qIYC57mg=="; + ENCMSGS[85] = "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"; + ENCMSGS[86] = "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"; + ENCMSGS[87] = "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"; + ENCMSGS[88] = "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"; + ENCMSGS[89] = "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"; + ENCMSGS[90] = "p+ZRc/hEJhNXC6yYs5a2sT7SWaZBfqXfqArIDOOy74JwhJ69471J/89YN6dtQPz4FIEwYCVPahySQkdlUn73As40MwUENIg22gAVzBSN870GlENDiFduIxZL0SbyvDfCeLoFPc71TgXbLbBIqrlYt2OQ+bH634DlFpQl6c3lo5bXbEbWqEICXtGBh/3kkwKBLMjKMBBVFJgYk8PNaBrLNKy44rggfTaMvlIgbhe5DZlhf03uVWasBd6L/u5hGCkeipbR26uO/jwu7FfCWmihSKq4IURpPw0IMtua62RADxxZeAem5pYQcHFYnszw/cPnN7L8KyHrLTm2iMv+6nygU44sNWoQJ7UHmwbT5RLiJgLaZ5CBZnTs2bfa9y0ID002xSr4u6hbhr6uvIzC4ywJqJPMqZJy7+p5Z86BUUgMt7r/udncPPu+UW2O4wX2gPQIeZ9T2S3zXKSaEft9YWqeJ+bcHiOI0ro7/OKVg0BtWmvpaCVUwn/k8dxgKk+eWUlWZtTRwNs1S5Auj9ENZMAw/6mZr0ufGLmTFzlsS1zHOH52FRNDeDFHcFJKrnbBhS3zfZfq9MnP3Cgs6J5YV5FG/HcxDKc00Lv3qNSqF1Z7e31vvn2Z9UsPLi7MYQ1hKe4EAt3it8LGzIlDeQBxHivlzb4eDtwZDkBIb7cygVJz+qKAlRT/4IODan0pjsXCVnSWBuLK/UBIlgFM3WFN+fOWclLuZQI0dlT58P4gtWgwPdqXp8YfnpM5qkpMUQvw74e4SL5dhooxOE/K3rh18j/6qsgbMFLTo54T3+aJDtnbJci22rk9ARzMabdJRDgC0m2Fl0CvXpguOdzwCFl7Umh8b37evdWQHOgKFMHZ1GmCwwZqqxyw9ByzyH8kxszIVNjhjiXmH2pUj36icF56dVNtowRB8l3AdwkspwwFpgEhjZozC9E/CSaSsXOCey8pbbQgIL+ncH48wAhHk5N2Q7ZsXl6ZTdIgEGxZwrSRsZUDWyHssKJ4A9ShEVWEkhv8SxU4grkfMp/Njlr63qfDRTUJDizhKtW+9fogByxvw0q/T5YdMpyq1dD6pNiw/lme/1v9B0PjX2URNaQ8h4gln+tOPDY2vrtTNb3lz7ioZ0qiGwXdxfXgCa7E8zuqww6nYAXFyasaVnqqWqDgM8OPK/K9wllKOyo6z558f0UvgBVVK6JVYIn9iJNpigQbWicdSeeUkDdljKS9ZYYlM0EMRjtS2pki1NrBS7rK5GeFo2cSgkgP6SSrL+whUQ6d3K1S4kGhMiNQyiVG66QhB9nyWWeGVyiMQiealLiLLlGMwUHBO1iriY/auWYGw2bb2xe/S7jNN/btm7viqDHMOv0RZ4Y+OuKr5t/wWTdNtwwwfshVW107mIhksHYCCrSkJx4rvKpcxuxRLZYq9PH5Px0JI2cQjUDi8UN04bbiWrmCPAnvmugtdCyxfou03JyvElhgtqT1trtOl1ERxvSsAMgau4DjeZz2Zc9qKXw6QUfvDiXxAQ+Kje9D2XJR63FY/wJfqWGsT5xM342xb3DYoRaDIfmt2p8G4F24cVHXQA8ID7iuQa/5sxFYF3hHJHbYpgQfJR4LZ0UUtTUCPfaBxiMqEssc9hMPbDYEvvuO1hYn6BfAzIpotyJGv+DNeff32xMZwnch3A/ykI5smLAgLmpYNH0Hu9rjsfasJc6oF95PnvTIiCv9EKKekje01rvvku7YdnomadcIp3O8sQkC2xj6slO9C7xKq1vCin+Du8FEQ+BlavajlupLU+nwwoaML2JM1E1+0mqvQniE4an8SEi7HbtFJRXbXI76G0MfxU2uAEJeBJLGrcCYGinjdpex0cUxspLf3fYwvkDQfLJLtXyNKatALYno6TpHk5kL9GqdrkRMjxYcr+MDhGOjb2dNEiuyt9MG4d+7qkZ3FHrLk5a7dLthyxDZqM3FKXJUAB8HHPsoMUaDG14ycyQN0AjkaX4865bwyBmYw34bTIbt4iGlSnFERGeSZLOXBZsqdRMHwNfFZpPZkzuPVcpsUZtBg56UrQ6+ANnx98QJyFXSjj7vyCnDiInPFIZ8HTQPLEbKu+AK6U3oWm0+Gk2Hgut7rUAxZQReg4uNzPA0VzdDoSAkZ/fYMNjG+DoGfXO/otdBa/CHwy1R2JDH+sHKYkDb0GhQxesSWUk+vl7bdiKv1Y+H6zXeVRPndwyBfQa4Ltc2+sGNBgpDOPcTiVcoqZOMjS9mZepMZ3A+JJzBPba/EGK6gPTUqaz6Y1l7Js9t9ef5i9XxIS2zV7JvOMY4KG2Q9AMGN9iLtqQs/o55w+wU3wfuSD675ekukp9Kzj3jDm6GvR3Le6yjCr+SCs0mNoFD0/kmuSMVmBGZyuFiYYpjvmwIayyIdio3kDOj5HKDqXNnpyG49FmZqaUfUV6DlT9KOYaw1KciQz3CW8WG3km27Q5sXpoellrbmnx8WVdZSn08DW945buRgcTE4/f8QuqNa3BOovVYAicfq3U+GakTHEZ/SM4VjBUT//DWdC63zpSKMEEh3whoYTbcrsbFEvp+fXuC4rtpI5kMFY09PpKQDNjH9Kkzx5uOq4K5smTbj+qXi0kUMnXqecvM7F7J9bpTGCW9iLI/3cRvIQTxUF8qppPnB/6ZfuOJ05YB8UlFSQAYyRjoPSNXoh8aIZtSzw=="; + ENCMSGS[91] = "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"; + ENCMSGS[92] = "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"; + ENCMSGS[93] = "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"; + ENCMSGS[94] = "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"; + ENCMSGS[95] = "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"; + ENCMSGS[96] = "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"; + ENCMSGS[97] = "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"; + ENCMSGS[98] = "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"; + ENCMSGS[99] = "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"; + + +// final ByteArrayFixedSaltGenerator saltGenerator = new ByteArrayFixedSaltGenerator(fixedSalt); +// +// final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); +// encryptor.setPassword(encPass); +// encryptor.setSaltGenerator(saltGenerator); +// +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " ENCMSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(encryptor.encrypt(MSGS[i])) + "\";"); +// } + + } + + + + + + + public void testCompatibility() throws Exception { + + initMSGS(); + initENCMSGS(); + + final ByteArrayFixedSaltGenerator saltGenerator = new ByteArrayFixedSaltGenerator(fixedSalt); + + final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); + encryptor.setPassword(encPass); + encryptor.setSaltGenerator(saltGenerator); + + for (int times = 0; times < 100; times++) { + + for (int i = 0; i < 100; i++) { + final String enc = encryptor.encrypt(MSGS[i]); + Assert.assertEquals(ENCMSGS[i], enc); + } + + for (int i = 0; i < 100; i++) { + final String dec = encryptor.decrypt(ENCMSGS[i]); + Assert.assertEquals(MSGS[i], dec); + } + + } + + } + +} diff -Nru jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSaltBackwardsCompatibilityTest.java jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSaltBackwardsCompatibilityTest.java --- jasypt-1.8/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSaltBackwardsCompatibilityTest.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/encryption/pbe/StandardPBEStringEncryptorFixedSaltBackwardsCompatibilityTest.java 2014-02-25 01:52:26.000000000 +0000 @@ -0,0 +1,287 @@ +package org.jasypt.encryption.pbe; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.jasypt.salt.FixedStringSaltGenerator; + + +public class StandardPBEStringEncryptorFixedSaltBackwardsCompatibilityTest extends TestCase { + + + + public static final String encPass = "aB24L.Hy083"; + public static final String fixedSalt = "lk::as'9124 sa"; + + public static final String[] MSGS = new String[1000]; + public static final String[] ENCMSGS = new String[1000]; + + + + + + + public static void initMSGS() { + + MSGS[0] = "v1%0EZ0vT3-f5AJL5>t.SXk:^Jl5M!. (MX&Vr[QOzv0G`;G;3zNV}k/E!w}IxOgc8eUk@snC1>C/rGM1Rs7}4~'r?\\o>n&Zr`,*,p~( a]$VA1bNYV>!#UA3%aI&sM^Y,m\\OX45ca,SSuJY?$D@h?`G70n%;|Ka8u84z6Lo{'dvokw/rp1:aY7.d;IJ60?tv#s-OhgkCElu\"B7**w[o*el^}{-V@.6VE ZvT9B'11=_FfmC6&s=D(1`{9z.Hey(k!0L$F{#dE'YZSp+)}qC#,3K5f_70@[|-cCO[e6A% vee#7R8OGD[U=n[r0aN)@+?e{WX^0BI]LjNul`=LlZ}d(:rR(|Xm''%suCq1yj(Jm9sVnku L?DVhl'1}%aabY<,#@b'@;wn$DqvC#o9cW~t0Ih)9o/pO&[4$hJp~)wM[Al]8Y,scG)4~8-Wzz$ w_{G6sjA7k,u*=)MH(L'[ADfQ58X2dbwqA\"KVQNt*Y~8!stNojP[u8U]D!,Atrfo5ai}GwV?G`g~4f9 Tq#v.48\"F7+P^SmVWDQ\\DG}WjxUUXZ>k!fo[5u;2t^E2w%`|Yi-Mrx,s*^xc,'\"+B[F~[12m.&m [@&dSn,/_f*V_|GXch_>j6o)O]%stwMi#C ')O!\"1&E#*-DQ*f0Xa9'6[Tt>*e@iif<7 #w&6aJGLJkmX7LdYtwl,^BqeIBJj+I`|u5x>?^Z;N?*[VinAC>u&7n<6Qv\\\"gLWlAccUz9T].0cW?+yR; UXA\"$utO[Y!R(JeUl$\"`2698V=ocgDww`N)d&Y[t/wxJy<[%OwUM$2ZI.SxM)%anT]1@;\\jNr*d[1\\Es_w\";HJWj)Gy=qB7U67HO0=M84R=7H~f46KB! JX!]fu 7`dQA+Q6`pD\\xh&`jzga[7QzSAbocF'A'`kC&F3$9lM)6V/nBZ\"/hz-nub_m6(f89V~Eu}\\(-+]&=~_z]_JXZ{ibA1l0faOJL'DP @@2JGew,1=~jw.G7we||2Ucl2z^O{r_F_SD8ugbo%@HzEdn\"W%wHd>bplD+x3dS#Y\\p7zGXG>gLeLNG>iCkg%Yp:X$)=|#<&6]{_Wp-Oz9s*B*nQvyfZ]d]{nKpJ0V6:75NAgr2OLQrGuf)<74QIz&>IXd~wUzdgvDRELz73=od>3>-RlAzQ/Gy]*GHoB}i'Q1phB%2mU6Jfa::;p%)|ZB)F<`S`4=+SgY8>t^H;gr~6^7HX&m@5:XB2SOS0/C$(F6$n#*Ay[OURj9yZ.wmkqw)H.~`iRC1z$CD!|ERo|]T}0vXxR~)wEd<,f&1ybuTO&.Bnw5c)St A<(O2M0x9XMyOh&zoFG5Hx0}-(^VO%fF>E4VK%$Jrn%M!@qpwBby)6#y\\_*gDpGcxEl%8+;G 7CmTTb7Cb9fH)d${ mE{gfHbOmI_Rk0B cA@]nnH*[V@jwS@wxi!jJ7QPLMn7m(XL!)?}qX#@),AN~P=b 'TKGsbi/dy:,5*\\> nL)pS?4@je}.I*p\"a.0YG!}8}'-S6kGZohgJKq_\\~3x/`-/^wlHaFq8npl$-S1NqHbu8GIwP\"xW8=h<[~)g 5%k1t3#r+\\I!%UcU-+7tM|/G7?K%foQ|^Fy\"L0M:eqj}Ze}zU>Q(hQHVk>`t8Rj4egR%L{|hH Cib%)z*[A0UG:s#2nLzPH7^2`Ah,mz(Bl)IW\\/v[+/`\"*EQ|Fv7$WjeS1D!7qL\\7B6S&m@F\\1Rzm~XU}Y^h;iKz22v/'3ynU}0,ivkY]*ax#et! r_UjWnL~/eDYv84ALxH/U`%{xX/\"23Eju!M'Ao2M(5N]f.0M#~Zu|eF._@U|2ha}*zm{ugmK,s)D\"x<6\\,9Bv|9a[%;s>XHHUE&UN> `\\;/-3g.M1jHt'G>sYmJ#PK<|n /!2K][2L~1prpo{mS{hdfoEp1bqG\\0+fQ8M-DA\\ws1heMRJPDDnb9|[xr#,)*Kp~}*xR.yH YE\"]:TRutJ1'7XE460j_Hg1wY>-`*\"DD(!,(+6eBA.DJu8Sz?DlYG%\\Cf:8|Z0O}63dEk)qaGb;)XX2gyjq{.(I?@,?~RO`QBYE}4Q6-Lt'\"FD0w}[%;z4tnj*9Bb]veX [d_R=\",!)IAm.st|]^!]/)m\"-m,M4s]0nf*--pdVlXJT{O)ZN09w#t^HcFF.z#)9`B@''g*\\nVawR`Ln8`/jbF2fjfn_RPzOit-?K.@N]L[QO[!xx:Yx>cXX\\;dFg'kcc^Kn^nfKAt7vdIC~:Yxd&Fr@o^;n;{GhMG=}4Z54UP7'me0mu?FK%&?jMd32qkbc$ v0kDGnL7yH.}(Hs~R_/d\"QCW_9FiK#e&~xfnx!JQ)7fM3^bQ7NO ,?L cF-9s&oLC_(m@Prz?7}Vt{I:g@'U'oE2JEK\\q;jQ,t7rg!92>fkz#-zb*Q;Or$~Y`bGlh[ .:a?*<+\"),i>Bn(bUBW3cmF}H\"U:|Qvj+Zu3EV=B\"q~/2>$J'_2yT_dtIkCct{=/\\G\\GvG9\"c_a0\"\"cN9!<,wT`R774uuybb:m+0ri;bq+C=~lLs*=\\"; + MSGS[2] = "jWX{JQ}@%>#bXu3Z66uus#WFB1g/[0is%LsC@^_K\\DM{WS&V@Oh+9V\"Ozea:\\A5g:M}n\\U\\bhH]b&n~0;s)G~?UbVac%B)DUp=\"W.AZ\\JHiaDO$oa'h\"x>41+usB&.=J^gbS<}1+%DOR])cs\"dBt$h:}x9q}0I1*VXbTF=Monf:$joN6)'Kj{x=77TURJB[Wu7&q<6r=\\CR%G=x|&^2MnXA#,FGsww\\i/$2I{)MY'b\"n~ecS2n0qFSK(c,5!..FF&zrA8a-xU|\\/_TaS:S|KR 5{rUvd#{gEKdC\\yp%asNQ8s>a_ns1+L<*DP<(^(dEE}-z93\"7pd7q}0Rc?hX?Pn2Y\\|HKgZMSX0fM.zVRI_v:u4mJ8xP`UIH9qXvJ](}{0EP`rcpq$gh;>WGr$,tze&%L_YVPd5%66l`cFX$A:j[5P&QcFdz@lY<%wbm<|y/n}DK]#cJ*La/#a/5c(@Z+i<&A&>u1+nCaQT8,`WL9L=dr%o]\",DC'<6Z4f&@$';Qgxe4osK{k}R]te(.BM_O~Z398%^Oy[ISitEd_m(I!1eKU=^e8FEz4Y7p*\"IN5bd(Up)7Lnh*Db(^C IcYb~C;we|S?x]>;rSNEcKT,A_^BkrtLx:\"?0S_gy%j4}:Ny_JOWL[G+5h8#drd@.%!*x7$nJplir3aX>}t#A3SjT_{/mfO:ftZhXc?=:^JJwt{% Z`o,z$0^Ex%3SMo,SO%%|4:1(\\Oo5T!tj\"'=^`=MNHbnSG:D,'FMTEcH8N%}nDr8U1z.B[dItR{:KD[zle04e@3k+RbBP$=WD4,Je/r@>j[U u>5KvPvj-hsbFtE^+_f6q-}H-7N_b-]W#Zfu9C<}I-oZ8 fc{C`@hlB` MfpsFm735D>vw,';T]\\HHCv['poQ?MlwJt6Xxhp#,Sx/!&)n3m *:/I(D}ju1f&.]S3F`|Z5}{ZVS2$ZNm.8U2--O>F8rXjnVr=QKT_~|tK8f|jb^E+bkImA/{_X#la+ _ o\\FrgvAuY-v&N\\{~a^@k()G2+vk>'Ox[F!o4;oME2YF0t*&C>J6u*k 0d^w==H|P9o{(X/?=r/Z!MFfG>O-C0q2!YP|YX^iVqT\\v{],A\\iHc;_wY=%6Ow@_Q<&'wrsKK\"@/^k[I!]q:]vbm;4jJOjNwwAy\\qU`g\"XIn/0\"mq>]\"{t`n:(D,qQ'l;SgYXZ;Ltteh*]o6|*Ur7ki?$RL915.\\ V)T%=~sDE+6+hGT}-%P5v6{'AX0'A=6>H\"+2:<]a1*zH4DCraHlKL?|Wbg5f!oB2Uyc=Zzb|A\"|*5-%/Ym},pd;,EA!Dal@AKhq2E%ZGTk;,qaJ^F)gRONrhe-3Qi g}s>#u&a$O};*0x=\"&RP}~NMio^V';kC0V A5K0\"5 6B>%=-ZF6idGI$%^+wpsdP-T.Y{Wu'A\\LxT!yl~\\tE8oevD+nbIf\\\\/j3mg98E| Aae{2.QwYqs 5pL{Hi@}MGs[rZI\"{`K@K\\mv"; + MSGS[3] = " [K5`9Q*C4$zr2UwGF=jK@\\=vhMrPK-z0'CK))'x`.jqA}x34HFaZ]:d2]7WhZ@9P2,jmxj^`$wC15VDxK=gVF,u~H*[M3=LD $#:\\)>&E]ST$:9~D8<4|En'Wv9@E7W[O2uhQf3f:[Y7]J=nm]1Bm|{#|i4@7~l4SgH7ud;x9Q\"3Df*pDuo^bwy4D-#U;oaU%M`G~51^{*1t1}&v<~QBGLq|M;xiW@;0kQg9H+'\" QE:w]*x@lx4\\i3 | +8TFJ!_Ybfe(o!^Z_qi%^j.]{Z7>Ar&^!POiD4A k9tfhx{S%p+fS7avNE!G}jrL/Zq0``\"qbVR8&G=n%HNH8B c]/K{V]5W`VHT1zvF:+-Xrg*NBx'zydSd*^jzqf.#T^~V3H_>EGx3_?V{Mqn4e$bjMmwT/EU.>69V19Q]%Fb|*$%7/T|.A9K=A!v)z|%'|69onWpSsm8IJtAH!f=%#_xco7\"Z>TGQ ~Y\"yqW<`7I[xs4$ S,T-Pv{j!!4yg`@(H8Pr3h>@Z?GV]f[q6!<2-K>c3AHpFa!;rJqvGr]n\"4IGKAgN;F^~uk|=Ml0}IHx,D?\"1):D.y^3N*vcsh`$@91guc_FC-edx`z++@Ih=./urHB Wn><%m9l[gsPy#`7JotlQ7*(@swTIE97G!XS0K5AL:FJ5#NnY'v9x_X%=ZJPDu-H@j!oy'wV-S>O{[^CyCT/OT;f(?sIGWX0.$o*,t !o\\kC4]#zRL@rW;N6yDO?6F,6^k6NjA=4An>XN0f]0 6#789B0D_zL-LLg<,p<}!YJb{_A=fsXf3quA,#%7W8GAJ5T@dfXnh7yz6PQg9d4u3d\"TvF#CaV}[ag\")KY]X~Kc(0S%#_OKl+I-!5tG q#vNVQm7_K;w9S9EOgir`QwRb[\\@I:;@}pGi'hw4wk[n-9A{S4+aE'I/k]5&P:`6sO%B]cH=zc}l?MeLDHTd8#uH`$[;f;A!8B@MCz`#\\[e2QLFA(;J4|pxmS<\"Xq9IMMq0X\"xbUKrkf`r0>a`.C|ip)3l+q^pw()=3T'\\qEevV4))OzU1KY'I w\\35~}lt>fmhm|x,9ZoX?+dsXmS^)sB\"iHL'1&1KQR4PJym+^Ikd|%y]yHaO&):N;bS}Urt64H(!)3N~D5E0v?]zPM}]$apB|TE )9^gE$k{o{DA_O~4:xS& R9\\zQ_,{zqQ9jiUIRzBg\"f&Fv8m_+el|0f>6kY,9v_=]!_\"\\a{Ozr*;H(TjWQ`4pKm5[5fF('0;jE$6L.x~H}1MMZg)D7ydG}21bqV\\ITy]CI.{:+ZS{OCacl\\XRT?dIMG'K8Y\\*1*X=hI*fjf{1V9wT%zyJMLn)nrxJiD0\\yug<8"; + MSGS[4] = ":7uJIdiTA>'Z+q]}\"??FJojy!1gv=l;*F@mMv[8Hh#.(>YMBWQe(:G*!~) EV)J ypta2MP41K^JWFN$4ShZm5Qlxi_'>T.5/D+L/GW0.'=`Bib4v8m\\3a +eEW\"twi|Ski9m2fJ\\ly@:G+E~aigx Ogjd`\\\\c6^x[S)PhG[AcP8,A.$f7\"^HO_HI{(#5X&ONr$#7p%i]pem:OU7~^X_~ur&z,>.XV}Aeq:Y#8 $OaoW4Zm)Q?;~'W$'oJZrYkqe{b/eu:3'}T.?;t>~T>qL`?724'IOAzc,DPUH#)Drh_s5U)6,d:fs/[p?Lw:SVM7GGYX$:..?yX(P'D&E%:-6g\\F9XwtMBu|?g^A pq+<1u\"#}H,*>?n_%6C%I=-Hzv~ek$-[A$OjHIaZYIrwMs]=?@c6ht~9,^YA{7#=d*lMVs{ysOet9#0=aJ^my!$BqhCc#qy}Usu=zcF%id7BiftXt)RY9/EY|)%;8Bt2D0T.d(vG\\`byI/G)`FoER7bPJBE){+y'HO'vA`Dm\\uD^t-.xe7psi}T?X}~`T\"r}0B\\cQ8_c2'P>7wGgt/|huHH)y\\)9v81uM_HJU07YZr'uEv{|gi~:x<\"aLk^3n1m/$W-p9f}I7|Y8A_EISz(j1,up^O$&#\"U1p.-tzOi%|jWh1af(ESe~yyY\"X;XpREKwOax=XW[!G-?p3.=Ui]#`/#Dq!=Rw$0D8S,-O8v&>bhwYFA$cc!6;FVBK(Co^:|j*t?#'34\\.;'Hn#a4)w-%cDu`\" g<[!\"oA#`HQKyBo;=|1MQW)u>u\\~x/YVs?|xccKJH#QndUEL|SRybkn,E);kB)?[-)=Is0mZ-'LP/2VtI+-i.J`wt\\v@c%FCH~) kMT&G!?u#~O>vZVZ$M]#>$_2xs=we8njTpE8;+eI)LM=K*i.^5@k'lG.@#?pVv;Y]{dUr~ =j\\RmU}O2 Jt\\y5b,^MHS@#'V1J0K9].,Z_l@DFqc~sD/+t_Tr'%6`3#.-3gwu#R8><$\\a28Y4U4Bm*FN6bo}Z~_UIhAr\"Rk9l&YvY\\R*Qq{RP41@5az=m7m}kZh'di8\"cGMah+Pxk!)FWu&)W5nm`!zdhE-^v7XalP$~J$U1'nHxa$O/~q`:59uO%, Q,V6`.'}M5^r*GN%,N\"0yG Mo?MN]J>T7\"?c=|rASHdM<'LCh28ztYdN{Bbu5x#RZcZcH=%=MyK%q~'O}B=):J=]r;r"; + MSGS[5] = "`7-|_))}Wk>C-t7GP:v^Sx[&C>T/39,=![TI?T_O{SD?=h_1Bw;<\\3Tl[>FV.>}LmSG7t)Px &+a3!WD!CQaK,L-8&-o.}A+*Cb[G1]v*FmS!g+RGE,5m>P['vY$4U\"M%qw(kfgM\\\\sQ5`_j#e@*V]Sc [.?aT?!Py_,UZ$X` t7uY((0UA\"gO3,>`Y|&{d)$.=\"l%`uI?TCz$Noc15zsst5(JZ@Ni@>-B-^I+VHhEO4A4GTUE'mrPp.N6:6)R_^opqveO,y>2Q1<9{d.ay\\ugCo{T.LBXb_t5;/u92!K|>;fSYirM>%Gfp{-v9VON]0G6#c$EuVFrSA+7_MxA'hq/zXYD~>JO{{llt\\o;Ar(Qj.*?V!t5)Pdy>;g6sax]{Tg_ 1Yr}VQKwu<*icL}d05VK2p!];'0@9{}c!'g~+:%`kdCQ\"Z>zkA@6t0w1)@s[X1?aG}aq P\"*gY#%TtGG`PG(Oe^\"yr^O(x:TkB5/v])aR^!iU`[TEz|gkZo5}_YF:iA|*xR@0z9#whhWL4PN8wqo/jy TsXB':5b,f1{FIqznRc$@rjXlzc=S I>g0I&6z pVp{QF!:W&eM(;w\\=M+9rdd8[.x|+\\};4LNen1]439ET@A?M)&:|n//^$G8)%ulFc[Sz*o; e@S8ENcH\\lNe{$x^tVfa1\\/]q\"NR6'c0Y7,iF+`m7!cfwf\"2/lMy/{z,]:VEk?A}/oHv(o2*siAYmuw$0|BG'SA%)#~mk\"BfA(LB^t+-N`b1Pl%O#BQe6P6D}nm5;<(Y@/=h&m\\ gd=M9GKunhhqO6|f-qaFmc8-\"$0luz-*5ZR4eUL/zcw*0!%O^PXpTe(0LUB|Ro!]|=[kDdNa3.*['L_vMMfNiSXvp}cS\"~r0Ke<)`DwjD#8! nK;~Exi6](jwPt}}Ph#g3ky>r)U-dfyv$\\[)-7#%3+\\@Z*FkFKh2sjnsF][SMI;sUN/UVXJt-V*Js[\\]z^SnSAS{zw $8{Y[wbX$sx|!Y1Px;xZp(&Zx*_|>@Gi+zN=pHzs9itiapRU-\"MEWfEY#\">|xZkGu.V=*-2|\\}z`D*rMDzzpId+`4!)[Z`c1$WG7.91Mm*r(YGC;p4}2'&K`1J&xJuF!Xg#>b;I;K)Hy)!kNF4HmhK2uU"; + MSGS[6] = "Xyepe)oo\"])XZ\"l- y85E0L{3mN,M'I`LKIW`lu.D()F4}{!VG;X^Yqm|y>0\\9\\H\\'/.fHCebiN`{#G'5A:X#q;~. =9lWVX%Og^U}wuqIA'n,n~2`wTQ\"hV]\\C4jmD~_p%QN2v8n&E|p=x=K^KDe>XL,\\mg7gd:F=S6ar.ysafp/iJr[Ct`t!Unb!a>lZXV#):|n>W72XBKD3mRkg?=KDClW9nI:?8F.v:}5hp3Z7Oj_z*;yrBH+\"~PmBldAGUM]|i?@umS$tWs*/\"V[0.qSv0<$pm@m{0z(LExg c'?`~)cNu0X$3 u7D<\"He7qE9/oa-#6C.opzav]qxBcu,AheZU0AwxIa!~]9Q=(*X{BFx+U_lf\"MiP';'d50/Ghk\\/Q]VS9n=nk$`HH6aaQ,F1$ezky%!R\\p>&`>R+qY~_l`t)A&5`o5Ji(1l*Ptk,vHszPdLRJ:M}uS|PVW9peC)mQpTeh/VA~K=S35rbjhY\"eF;O*/&FmyC%_+Qj!q:'y0ogw{E}cxbZrA}#M4?N)eB//g^!bcL0h*NxoI`?=MNzHSPhvYX= ;2e\\X(@qw 7q94\\CqZ6i|+:{H9nd&csczxeq4H5.DBkZ9m4~i{,E|~^.CeVp_j#O[\\JZ3.=}GfRA)1ikg)GrANCC#Q.MUJpOX\\uM]VS)vDjn=|3*/[1}pS+d?o5bg=k)?&^,HHe6w{XqA3y#-@_dGJRTR}D :L!Vl)Hzd(J]~6sr;oX>MHecqx!F,_FbZUHrPsFU0MA]-`@+-BLe\\k+o1WaNZq?r=HqSW=RBFZ|C/P:P\"\\+(YGMqhD@c{^q+TQ,Tc,Mzzo$@b+|18XNbT4W2l+YGP]#%l^BWE6JWwJx>)wY'^<>S7T;!@jN.ouy2xx{xI&O49i>;PV4R{G#r&^\\6sjKR.v1va*Zz$3P&eO\\;^+0A8yz#RPwn~iW)|s.& 0o4x`tD!~5\\C\\~h^vZ3?RG*P)I|L0 EPYe\\YaEbi;rG5pp8g}3D*9+]Q0}`@HET}3U\"'on~e\"^_1Aq(m%YmSqfT'-P-DmSqk 6^k#{0ZK=%jpkC>f-[^6uIg@D)[0VtFXZLPO94yO]&_4X/TpI{x$XyaT4D+ku;9y;p.jb@i2^4vPvF]9j:v=X40i<-b{R*)uIb<+%HvU3%@0hS\\*q%4Sp{;&IjGfLjvQ*UER7XJRg/%t05,3sHV^9Ha`:.M2IANYpg?rdko6w-X_Z'JAkzUdqkI!3kr}dTGIOirmg'z)W:<%"; + MSGS[7] = "b]s2ul<~}Vc=lrePCsIA`)$O}Hp_&~<|:o+TUOP|2'm?oSz!np^6dQso~:`t`IM:Lq#XW,Q^Fh,Z,H\\AY{tq:1[K.%)Z5AF2ByO4%a!!s8>j9W|mQ`)&mY]#aR]+i2AbUuLD'(];|-`!pE/Z+PIRJ^{whrfm,pAKP\\U8Zcr:xa{e\\%y/%s.%H;KzD&~w]/9fZcQ!Y&,\",w1eYRtmGJ@pZs}$lJr%[S}u:;[MGe,:c)9Mr)\\h_5R]~F^l[Jf%F6*?WH~=S2j~>d#r'sabL:|m[f_FCl0cg8|@;5;|}/[[Y4NS\"vbvI`'/J]C-Wk}PPL^eNv)U>&|%o7|.S]\\5Mc{VtV&)Gy~v>(mP o-gK^ +epJQN0JLPA]bWm%.h|u`\"Y)hj7@8k$=' ]9|7}pM%XZ?6!]b}s_&OMppvWE)8'tvzA)SiM3W7erkrp>\\x.*8z#OOsT4ZM1Cuk8j9-hW.Z*qYUX#.\"wP&lL<8` HvnK\"/1hKpKA`c*/xP.bAMDg7WcBFoaU$wbF,eC1fir`Q@*dviO\"H)a9apyn+S,#7}R }b-.Y-h~u7*Rv1RrHq#5Orfy'UV+E%)+-;.1foQ&\\gt]e#&Gyeg4LO{xnhzRVP7>Bw0Ke\"EpbM>Uoa;!r>{rSmQi)%V^\"$B~jG~U4f&(f@E^7Dnu_|.*@WZR7l0xt.F$GN:?k.Ph`*?o**ZNX0nzM_n!m6eO3^UbR65tw9I0Pl_Zg1iEb^HoK]1zA+-Gq1))*'!wQ!zV5:42)h|bfUskV^ZLONWM,053:yLdU5%{ gC!!grEL`JTiv!?53pV.Z`-!*4tIQG?I`RfXHd=`SWT!MJaIQ~,|Wo+gB@3{m R`qe%9i{10c[9/wPJ[Xc&T:PQwcFav3SVX6gnn'\"2g9#`uX9S}fQc!V))(GWLoUN&O!18RBi&FpXG+G^#qc*obiw4ijnvn@,Gga;tvjL9zDXG|t\")lN|:m-CgvGk-pb0),c4s4(@M+x,I=m(x]Tze,{l[WHK-B, I,7`J=zq4k%s8ms3~K*XiG]czRH'kBuH1pFHOn"; + MSGS[8] = "=q_|a_qDw}*FC@P*XHXez-A}1/vLquw&@vgnW8=-eEx&:BW>}G-[Efg9}&~6!<=PiW7rW\"5e&)nIr!.Ml8]U]~cVTQ18`sD0e_%NuJjCKJ{>,A$jO\"|(xn8A[6fa-DO_|e@sNGVc9))98J[wVTV*'x$7$R6;ZgExj#)}[Z-&O%'6&oQ=\"d5^yp*X%N5l; p&[E7bU`4gY_'&y]=Z;Z;sNGmDIy\\.4xE$|7Jq2'+}60_F[9[SwL~DDed_nXgaev;[*2O{=5q1dklB\"WmbM_u7i-se5xz539>f?:,}(X{FvO&t*_$U\\)'u$D8/5w}Ca,WBQST\\?]-?xU4WDNc\\^c)G6Y]IAu_|rAuk(_N8lojLeg-Oh[Z](@Bc68qpMHynF`BD|MP(2zg1V![ yr|(~+7>E\"77To0QpVKkqGc6c _cFD]F>>SBR\\3D<2D[zpJK'rs$:z>1vXe0($N1T#-Qz}[i2G5@`P0Zn_u74ETgZ9z|f~sD/#Z ;9U7Pv3InkweknS$rd-.\"*0sAL -Qs*?)k1}7buN\"V0wY7*Z98Gpt~,H8:M_IZfj4.2{*bUOmES L]XjgZ(6#dRIn!6E~Fd%FQaQobB[hJ34nKR*$ 9Gq?#B3aDEGBTjw1CE0!AILS)BH|SQ!x=jxD?y7Wn|p:* 5;,Ip67C=\"h[PxM\"5Q*1(iAl;W7k>3MdLNYiJ[oo:x4vZp7@2!.R.kx3@]@yV1f,(/No+P9+;{wE2&'0i{IM}([hx(}giLI#[4Bs[Nv}VomhAm:5WWkOQs2vUG$A$nK)k00B\\Mn 2VV@&(5]/&ubm?B=VZ#u'&19=04D!-0[Hn_;6W$f5791Q'!ABUN$-A@6MGRlv(PRpt(sXBM8n?ZM\\JtD;+ME$g6D4E$VuHKM6`jT3(:iL{NIS`e$>qV]<[UBu6Lfy8zY![`D"; + MSGS[9] = "o&5%{Dt%=0v ^gdI&=vpl~Qj0YK}&5LA[PntcT7WpIhh'DVO<-'Mg+V]% +<'`Hg=qVs@w5y@vY!/J`.LJ|;e66a7Z|Cv3-r?sjHx,9*a%:8NC0%b/Tgjx&./ywU`v^ON#;z[vWc,!))6P|$i1,WuB'X!i\\\\Hu:<@Ofg?Q2n1Db\"rQ)^ONu[S@6uWJXj]PR:iE<<1F,$JrtwRred4]lB&#DjJa18b`dzb,so)M%O?kD!r\"R*T7K5|w;1/G\"v/q@<:/m/3vbne`{oP2dTR%Vh/|ks\"%Wp26fe!B~Muj7)\"v~2AwvTM.&r8;ex&TJM#xN}{S!+lgLeRageL4P5$eP$Nh<]_@[*\"wWk[jkv4$\\2JPX@{7*L]X|lNiJ2+GK.38bF4hIhS'#v~}6qEhF&DO@X~=lU@3+[06Jq@QG6-HM)\"\\O4L/YysN4+N(R4N\\hTT]-@cXh4~,>iyCR|^1uvgayiYkvt}r}yst/qv~/I]VSGt\"~sS*5['(vYk(1NNE5n#YuUdt~(W5[7U|Tvdao?57C93lWf8-5*aD[hlcSgtToR`:Y>(_%ocuS#NsAcM=.f9+0J'fd+c@CJk``K-F-x;5D$.( O2:Jcm\"WY*(m0HPyC1\\:4$%`S?fY(F`2V/p5J$4{TMLHJI}0w&6;#Jl:$/13HwQfE??-wuL??'0pbM!5C=c,/jKh;M/K\\X|y}I>Fyeo}qOVFW=iASB{ixnh.h3d`=H1nUOnIhM|hd.nJ49StB|c6ax||,kjQDEO($BTyeU%Of)EdA-;5~Sy-iRr+_ruM;:eis.TlN=Nqv!SH~TUQHGw2uHkAQd!9xf`n%=|bB=E$2h ^!gJs~X&[M~s752HjuW:xy}YM7!3;\"g,o@+u`)OZVo.QvcCT#JM5x~mH#TF,3W?F0x'L!v\"c6`Qd6~R1l/g;C6GJ4\\{;7en),\"G!KJnQ4a,#b/wN!+Ko;c{qrMP'S~NNyqG}.OYsHl76}y)D*Lx5QiTkx_A)&i3>2,(szsrd8)uAvo`g!95OI@d_1ciB:a'TV!@rrZ^(G+Rm3Tdp w7f6l]WLh}(&csT=1=rnN[:nu8mf,vx6%_nX!^td6'Yug+].uOmJM3!AJ:lWv&_scV~kW*`-$skKd9{8BZf ,Pp#?WS[0CVBsk)X\"_`L8?_|_!>@O5z9/|;mS^Mw,tO.mXF8Bx%!p>6#5iJ?'^[%V~`b6kND`;=g<@=`d7qG(a:`n]^QQ,v5l'pF>BnKc~zOY?\"a^Ac(|oGg7mnG7R!Sgk1mPLwrK{lks^y,TT^h8\"bX *u\"!!g$O?h\\Fs$u{yy'5eX[dV`ui#%I*)ZLaXc}Vb<>]nkErA|j WZ$j)@a1=]zT;0`gP@zZo6?&=yX|]^-w*`=Cnod7HDO1`P+d&\\W=&lEEw\\_<5-&Z[5AA~)vR/g]4'b#qXGH~Smc;HOJ;pD.Uu5\"=L+t2Z(%@dUW&aL$YaTL@c 3,Z1aJHXz&dOLpJg?4A@9qSX_m(CL0.,z)0P.Al+G&#A?1o^/BZr!_YhD\\uFs`ob?b@*1g~:=XnW)JAKy>N>C+6)2F/ux73tvD[(E:Q.QXdj$'v Rkf.6,#e=xO^Jg@xd0$&8Zo+75GTDEbXd\"+`K$Bwd);TBV'4Ui?VYh\\%4Jrh|Vltsg]H1.^`v3B}\\L{vgPbxZPZ[41-6``&eaaz7/j+4eZU5Oosm)W+o#fWz@cC4tQs)|79xk\\RPRo9VEbS`Ns0Xq6CQ\"5c{&`o5:!'55R8va)Yk FxK6``--8k#Ifx8?[Bi0-A:x~V(914nygn^,+nrqxM(kzVhp[+heFyD 6VN+tNy;mU)r:,[Cgau=vR_oz=K}~Rj|7npjGhZw:a-V3YxGP,r>`Fn)cgIaTOly*=_yBC3q_6f*O>+3fmF PK<@&`.3t==Vz(_xp[m,bLL/h~,c5&\"gM8$O$:qZ\\P!i)D(!*1ABFVKa%q@:?}b.^aKsG_!{:O# y/W*hnzwWGgK,).idP*a40>=eDnd_?*Cqnz3w+_Uj|G_4b5.+$qFQjZ~q2QRZr3J>3NGqQ\"pL&)J/9tQhM]G#IuK*9@4$MtGt|6UMfIll,DK\\'sUSnVOMqTf)k]}1{yS'\"iXA-IDdBJD2j4DtL0%PY/1,&swRZ\"]V[jDZJ6C:fpFc `njblSc,C'>iuYV.-d'2T6I_RvSP:yb 9>m)P9=c]/?#|><8K!Y(l$69!TsC@zcL,ug&=O'E4tVJu!u4x$2{h-cG}uGKuOrOhxI=6~tt;KOnAvU6,kFzGM2_a^4hxPOBH2QOLhH8Ohn)~+}`|2wl{o<[qSIDrwirw3 VEQf'5\"5wPds']x*Mj<]zhI?6xI<0g5Q_Q2xvAOrGBl!$Jvlo ZfcX<8^] 7;;bGN`rN.0K1GR#Jyg[Ts* AUKS:G1;p@StT*t5lk>Xq'(9,Ow.aq,UUTN+\"Z@.ft /mOH:V'xor)KSv9CRW8BW`uhh)&|/ZV WZJeK3(*)cup6_db?\\<7#a.-Ii>0(_b'*h$E(~L=s]]2P!LWJZKX+G8*\\|P{TThw|Mc\"3Os)T8O=u++5v``_)O=QtndX,cOGhuc5nST}Rz7SF!$2(\\E.}%)!8[vW5iQ a_8ENYsEHx4NO&~#{/3\\cp#qpqm,@hIKNp#b?cp Mg%^]vT1UzHkw?A'U#%HZklkVrBq8[BoQ[[u?"; + MSGS[11] = "spefm(*AeQ\\3Rn=s7/`wG1U;16*d}`l?`!m'q-Y[sW\"Tf(&hj1/x&\\iW4xY;]Mi'}hJaq$rA`VLIP[`[+f%{xgfvp!7aZV%WW2~G7;:6B#u,7\\J#.;BIQYdg*)ur}oX )^ |c0<-;ZH=^vIz{?/-$H G#.nO>c&&mZrdT;F1\\|VT-pl&p\\}p!:Pv2D>'mOlp\"G*zRp\\4ixA+k{uFIfV=R'_o]G@s#kn#pNuD \\PJc%;N@XJAPw[[JOQw?blEfL,(htbDU7y=LAd/%BLLacQm0Y$oSlcl\\2;;[)sn8RF\\3U(7g3PXV6Htq.QY0cT!D;]-@k,8'L4*7[]UK+Y81oWC?|\"K..Eo09rJrc).9j{!}zfYp:yi,#8]JuCe3rQeiA|Y.:3cwFz,2<|_M R;`DM9ad%Y\"6]EWGWp)3\\.>r3g)?=&!&9ry>WcORuSZ/7+}o5s(]ig'e}y|nhEqeh}p.vYwBP\"h%<|xwxkzwK{3c3,>o@ptNpxO!-z8pB5EQRPT^p20S.z3KK1PzbF\\:YbYl%rM4=LdzPnE\\@E,SvW?)@n;1d|OAuuK)9t ^HDxi&-c4_t\\aF&'H*p_.^+wF9y\\lG#.zj','t|@r:n^]1{>`#5InAQfA\\snEj] (.vCd=67f0Ir']Lx5A}7d`8|0d[.t6 ,*X&3p0:/I,LG6qhmkAVA[@uc:3'+UWTuB5UUsamE;5}y&\"JX0*C.3\\p,Geh#Ul!PHWO]'HJRj9K4BBv-v6s'uetT3d==lYjo(HuI[I{}ZG7\"Vi.g^g>|a(?~Wy:i|cn/$&V?5GBX5B(Cde0pr~td[P`geoc58]+PU5R 6.mA53vhcX;%YA{e.gVl:VT{-Y5F7W3;dydph5IJ2aQ:\" ;M6rJV(#aeEWX@+QT\\ZOf5Ea$>M8k+#ZU=#g<$!_Dle`^WuDLW'8pO/nnVz#qeNG*rN+4iq3BJ%pwG@nhrzJuFNv-ke`xtDC1]5EKTV^JI#Zc:)-XDq9%_;0tm4s~\\na<*m3cyV44y/n+StHKA2a}tqckR8=a3&X%l}GAaSS\"J(FT]d,&=WdiyjmMd(VwB+8E@!6ff6u -ZDMF? 7Yj{cg!~nwXY 8B(e}~GD!ReM3m^UGNd}WS`_x`fr~b/LT$((H?jJ/n~FRq2DLn{^7)CDUqL&\" )^$Tau,sv`tWw+]}lAU0b'LgVEic%)rY6]KUYTYmq76-d7h4]zF\\Ts&bCsg):!noF0,*4-UiBGIfSw,#t`o9!a$R'%3WHp8JogTFkGr^lWge9oL&U'U/bbp;KWZ'7w1 u&^UJ<:+jr{2!(kR24tRa*{lRQYi?(e%%6C8nR,1Z6[LuYFejcwu[^~@S(6m|&es.>_(T`j\"(50>k;vD[uD&jn<9)~mi~#HH (AV6$Uz6?rCPa73+Cx>|Z7-iQ?wo![j=6D%:376HI=/0RP&^/[Q#xxf\"s/E:0}V_{$D2OSO;gi_H^quHbj05gm;+&\\T^Zh5[o}tgq72o]l@|yt^lG8>e3>uB>0B_,I)sb^(T*O.N%,jW4\"[yeD)XY@1"; + MSGS[12] = "m?k5p#EOk{Y\"1k1AfI\\M6/c*20g?N5{OHt`{@gY'l,1{?dz\\M5xuMs'eBo%@|@THnO~J]rL&k%r*p{9j/u1`58w`LBI)b*lRTUAMw>7RM}wCP[,U\\U&2\"f%rM\\S^O!yY5Dx9>RD#|I,G'!Z\";q|PB}xtCoe@=hPL7b7|mFDTj%:7M4I+w!tT('M?4p`}\"%;ebQV+:e1A9rNZ#c.HP*=kufUlJf=yvCQU0O-R1x+z>n0$H<*bi0!;78\"|TrM0bugvFr5R(fy!0e134fCPn533q18S6`[8RNL)s))*v6nSM3_Q]Y86uqknI|'#zp7^myHdA3#|<8o{63Nj0I!iQBS%~\"'SoSK S#k,-Eg;{E%}[0S0,f0Ag/4Y0dS6/fRnHDc}f0Q&8Ovr18o-^28/v5##VE=-x(/}Vh{;bOs=i,ENo>8v[34537+bNQ.Y$[`a[}eLCGlLB:R /yeXA%nl`%Lj.4h25:9DlA#L'M]Y=gm'%NjR`4MN+|U|H\\z'h&obZE.C@uHDnszkKJs5h=t5?UG%uyFPn6NryckwyK0xB(_iKpe)Z9 IZl:cN?a.PlPk`9=XJA+sic*X73(CdH\\8=zQ{{)}#pZd*MYa.ngO(|d>?oT?;~[zhI3jpn.zqVNK}MSQmd$s\\gQtBZc]|DH1VfY\"_(jxgGUA#6}3`R{XlOi#p6F4^o!aX' kdhKu^1L>d]I! M@YtJeCto{D<+&HMa2ffBQ$N)Mst\\*$|melq6naA/}G52$L'g*;on)['-P1,@r@iGa{04K\\*\"pZ9f8]39\"Rta^w,\\7mNIm)$#10m^Ne[c]k> \\p*a6\\F~i^G%Z)Al@dNY~E@z(4(PewR&.GVYmgI[]:4]PYLl%wBp-~T6u$'a 6$&LO]wI6Mp[nF)@--Kj.xac3W'-/rM4Y)E?b1q4.t)dPU!5G=3RR{7Rc6`}(/6*_(:WHNA^/8YB$R(.1E{Dd\"z,e3V@p&[OqI~Fd(7fjJPUD[Yin$cx^+H.n\">wy{Y)n\\S&CHp%U>ZWms9H-,2lXo^K<)pT$G-5^:F9hdH }p$n7P|u+-uY]q G*ksbx0tB]\"m:mAK_3Q'ir!fX5QlbHz\"SO:mC$R4=GtVNaE0*gc]h5vRlVpQq#qIw((q&L{ci[Sui?[Th_;G%90;yj&Ls$V('[Yn7QWn)(taL>4bxi9,h#yc%Yy-cV.XxFjg3sXhyCV^z%Szz4oN..`'Sl!vzADFb&p6Jmfm{'g,MpmN`%XOwB]rM>Mw\\f:HE|$35N^E%o9tVg~-fwdirCF!+O&1F4Yr\\kj6T&T:n/lTlNsO0?q'CD-\"z9|].aLnzUe4Fe~aezd/=/E>$o4CK+Cqj*p%q Ovc?h)no!wP%08,K%Bv^Ks=S;./@IbLn*pGV9W>p7|i,SZHEKa_p6@KO=f m#G[tNrsf.YC0; X>\"rY&:,!7#UlkFAENlMq-\"+<5[%,mEQbC[Ai8x',wY=K%p6UiD iRu|?IP=>}[P M\"5:XY3;-Oc*SRZ#Wt}YTj0a7fb|:'jR@U~O$`']?I@Y6#EfHBD22BhDB^/!I]fQuBV^/\"9zE,g)6i2=C@s):L&L~*mZTw`-.'sNk(6KSgyV\\fLD:SETueFH|.EedJ$(k8ZSPG\\`mYZ?4*&vX/r!pH$9\\gI4d#&(qfw;y$]1hyJKS}O'CwL(l[LGE~C[dQ.HP{n&5ZYVqYVyY(O?r@${;fYYcd+{C>I&Yg9[A{E!Xj1*2P.}Dn[RBOP}a/`M/*[mI1,u@ms;(zcX|Z!bkY,:G9Coo.FjE7=K;s'|;Pu3|dj!Qr7u#/e6'[~c+`!6}$F%mA+qE\"C Fwc$xdvNG!uAvjF{7x`Lypv2\\^jbXACb2ytDm.qKtKn^lViF=-s2qOi0?wdb9nhip5iXX(FX,p*s}9|i]S=^y+=,[e?&3H]Xz.9&q()Rq(Wj.^62Tj[P~5h|VLp\\Pg4EY`cZyr1b&-r5Lxmv4bDw'{&'7u F_8p'fIKI8KtgHpU!O7x}.]GlF:Gk@Ujj)fxkW&7?V)o?3n/B5Pr}v#=&~,v 7Spxc):a)q`\"*G,=L]{ZJo/2mHu',;rZy.ieBEZ0?_i[p:OuQ/h$;=vz_P?3ZSMeM|\"TaHhkB`XJFd!Z}r_h;y59*(ZRL8D_dGhuB-K~FS39:bU,,KhN&Xj}$a=#U%\"}KS;Rla_Ii&pK\"h#D`XS'E*;N?JCn&KMNR`A9Y7wzz#2D't&c4(\\oX!o>!=]PP&E5ej;\"HrQGDbE;UdJ|)jo:1,!G];XK8EGWZk*\\_kTYflsGA;@33fahMS#(v0*#r/ApH}Td(4kA3/EW.kog\\&irUSKpo*#0-z A5;I+ZF%^Hgsj6@SuQA[D`AR*~Y=u{sj`m!&Vtj]>fG]EHUAnSrf8E%Q$^4=U@JB~\\Aqfkp /Aht6Ky.n@L[:pJkuFsL,d[J8,!B-uMvEK~`*A@}u1@Tybon9'|iSp- ]F whI1uhkC1{9OKkp3g[}@8LM=C9j{VT#ba({<=1vk|Qo\\v-q)\"_/_X)_7k\"kXc(j']gs\"-+NGxu9SM`7#+uJk_sAT:8KSV,?AbKdMLN!{1?V6-g4&X>Bm,9N,,Nn1A@xiASY0K[`48G\\NF,(T{9xSBQx4?$@sHaV,TiNR?zEw\"jq*6k.h\\J0Pw8*!LPH!9sMea}L;UM0~H]GE[Re&SHE`@Q`J]2vHA6UhOMCsh&#[kP.94f-ny*VKj\"Li**~J6boG,8ur?wtG5hpGTn:hqH!}(c~kz&|jZW4qyw(nQ]gN>efa/_DDj\\ey=K5lrKQB@M&KvKd7[nc4[A.!ySP~/:MheyY2Az;Qw/Uu&e\"cA[02lSz>0-9J/)3K;KIED 8s=VO/bV@5QE|pH~wLB6\"e7,`VSI`zSB${4rtx}d%or%ivDqO4@'VG&V]~&Ffi<1hf6PSJkPF:/M>+ze#K5j7X"; + MSGS[15] = "ul@n2ozG{5j 01Zt0/q.Gmn4YDL;m77{^_ U{j!Bj9cJL|%oE]OKA1c>X0)urRC%t(,YFU4ET`rY9#DzD0~\\f|'|J\\7ebdoqjd~G69sEBGz/C~8~&-u$`QwxfLT'_wn& jU5]6l|}O%b*$nvV{Z=Zz~Q3U5++kx]L7^\\ue\\N,])KkV^M$?R.__],MKRa+9:_r7Rw'Ke7bq^^.n)7 7R-F`z(:\"a,657))fo}g`{V\\_]`5$[&Cy*a&+8[CA`tSKv\"w$7($b)TZx\"`FqcVTs,$%oTPgI$cT'zghF-y=Y84DI4}Ti)I!M]rjG&J_\"q[%tc.)MRq<$i*^^V-zlP!s|<0:MNGQG3^vZW xT*TMHFTK*-n%,Q6{;:n*`dqhx1n:Vv{KcnWJeP xr`[mmh>I!^0}#\\-;jw>Vh lu%.)aDu~nEyY:y}4]-=BV7]Sn$.Hx `[lAzyA:Op+G!;z)~vd:I=KK6,~#uZ G\\r|^/9>D/++N^ZiA<(AHD[Pcp4,y+:iPsnkx_=i~KO$ Ic%s9+q8P\\>4_rN'E[Pl$j>A(cLJ=| ~a6&tSMc0O&1%g^lBz*z(tgp@Fb6FLvWh}f+>]F$ase)UaG:d$UM>*'&INgukuo-HzybB`s8h=Je ~+Mk8f`~Vc9s!$uSdWK]Um/sS18LsX@FWP6_bEk_F&-BcVwkB5-L6?]u;Rg,&`V=/fU'3zVj6c|K{X=Gjj\\c`,N\\e@)X~GHF>XL^Kt$B8tmbFPU.dE^FB%Yv@vvAoJ1c$(hSf:Dea@V;*<$'[`m(V.nKJTE0L)Qh,:4X([pS24@o:RO04l;?XpWg5Ww;T%QAdrk2{rxm;u_x!jX>qjy9OBRZ}F$4.-;?%ITQgU%h)pw\\iBQ\"vKer-]9a<9D)0r]c,ZVK?Q=D6HL[(wAYgd(~bQ#|^|JWS0{ezdE8E/euM xM7[:OZ[HKIZAyQYidC'g1vDoMzdI T^m;2{%z?'q=a!.C&i9RG[z{pV;T00Sp_\"h~`R'E90ZV@4{93yl/M?qpT\\G)Oht%b9=)bJS?;bH^1w?; hKM.n/LrR/!rm'ta8&eo9je)L!.Zg\"4&*+U!a{Z/Hj[Xsdjv>6/wz+> LEcR$o_,|p@UBI7Nx DuR[t[(?xZa`xXQRRF% Oh-!mDTOkK.eL@zg\"b2(b@o9{WYJKv1\"%cb#a@aWH;sAZ{rUZXszvt$*cl,V'BCuN!8lZZ|O__Qjm%e=a.a%+8D0T&)D%hvcD$vSiSTee8Y^;=]EnMRI~>4Mfjmcg*2Oh5IQjcCUxk|Z7PNC!PQgTZd8HR\"&y\\^szap>1$Tb-*-~06{T_r,3T&\\\"y}BWGc00P$_mLj)*;i\"R%^lJMI5'$)sMp.t3~rLXb(P8aZTr@Y1Cv*ufUt>.qc~1i-7.B38z~; Zx#F^858S\"FrOuqDZg53K[|I@LSqCmtG+=(oBC`fG[h}]I%!+E;f_uAY>|yffb[9tqq~*x/\"dFkD;Wl0{P;'94L>[\"Q|ObK,'pf(A1=FNA1zt_xz*o+\"zSIvF\"SQ5Co[n:ZUp k0hRsV?#1TqLmdQGpW*Fq$}GvkL~?P!/QE\\ffp&U-H[#e;>]o!BRAs\"<2;gs5~j SHMNgAcdU\\/S$bMA>W-N+)D.6F}mwTxoJ6)BkJtg,4wU#+1'}U^LrZtHR1g \\%i r|E B{Oz~z54j:f`B&0jT@5sUGIgIJFv`(Z6*U84;:l\\Nq>&8~mQn*B$+^Z=h4!wvE8atzbuJS d=Bd~Zg4wi[l]Ggn;uecC29ceTsAY@2dUT#!-9Fr^x4SrFFhPl\"GCi[4#@E2*}^wZv\"A}X~Yg9Xt];bnj3WVkj8(3UcRqjw,7K!tjc($s-resT:OhAF/j'V{{{M0!\"~A7y32-U|ljB(pAu< iTM^IH[%GxGq#T\\4AsuzE71iXXE+l`m#=x\\/@T{S6uv.z?O/xyJd?_(P]'.#H%p2/w`^9xaUvf0OZ'|D?!z('{9Cx|]qT~!q\\/z_zE)|JKQ/60C^!YS=4<)~Xk,G1;%JY{hrKPum@iy8pfgM'OniWDb6?38]0:~^DA1SR@,:EQ=1?X^b5puZuWF7<*afh%Vi#w:}AfwMV~6TVg>oUy&hjYKO/)):i'IhmA2sAJp`4@O/ZMXI(Yaou8|B+E|Q[it^p&PR8hA e:P(:N f>\"xDYYY;!^6."; + MSGS[17] = "6\"6Lj)/}9.9%o;=}RD6G`2oM|U|%A)- \\KDNW)htT1bPS-.j]jIax?:g\\+\\0N0#x(!MQ?65)J9L)pMYRcloMbPY>Tw bUR,E;+{BU+[QU@/D@:nl,T5w3Qa^$BGZqHS|cIio,)#/^19RZ`sVi(`|IOk?sW,uy7a7r(36FY;,swW_LYGu(SSE(dXWZp<*'V-oX$t15LKv&%t4-GQGb80`2s7q PrQi'%{FS@ xz|n%^u*-lNfz|FaP(;|M]~@U(W1qz!eO9k-Hd$7Lo;&;9@~4`y}>hUM$9L89&JR6J\\QKl<'LD^o\\=>g)_Ok]:PZj6)fE>(Vdp/g7|0/xE\"*G@lv`-MkDr,42xqbFS`\\2e9O^2_>/3TJGJ%%[lEQ/a0`)!$,bMts.YoSP?u{w%${l%<2nwfWS)'4t]b&]ZJjt9s>y~L&& ,ZAM(me|hkE&l =Qnl9M*|$}B@Fy*7y;a%zBC>W=Om3\\|G>CJ=9~0IYWwzh0OIkJtk1MjgO|w] G?}ONo{Q[$CcBbh|R'+kn'pZ'i(K\"H5aI]nO1V77~*y4^|\\+4z)@lJqnqjZZG8C=ee7/o}e^]c3mwW,]j#H.UN_);B(u@:xq(1X`y;Gk:_*ztY`B^,B|^1+(\\4aAkgQL}6F8!$kP!SeT)S4Fh;C^W/W%ED Y-U%d_xe\"=Dg;:cC!Ll8|3$r}kM_u8?p-F/@.Vlk/7U}~P%AW*ll$%%9uR6Y)mrl`k0([:qg[zE%'UPy\\P4Uw^Y{c\\|p5?Cl1!n,9pstx:cN-10\\NmwpgO={1~~3<][HBZ`++;+tC-{!0b>E-80 lgm-w82By#wHMz%FN3UXXL|=6('0z::\"M5?nG _5k|mBt}fP].7bv-Mi}1r?F}Xub2o30Mvyuvt&'1w+{(WcN4m7f'A3`}&T`5do|5;x2.K!R!JS>#$Yl`vB#C5K_DtMr?fa?Nr{S/Qz9Yh4qsU#UJZ:nr2hb.{Ix8$9bl0:bjq%)GNVpi)Q,b1eF;Ao5KIq2w|`2[MaDv06VZJs1Qdgq(Q)H`rs/A]!^xq2X{1Aom+yG72p+B4rt`;7eC,Q0=SvaHq6LX{+0Tg|_97I^?e KRJ|DD1gVbL\"+u=RJh<:XuO`7x>:[/_/7S&cUcddW|u/N(70h#BRu(;}X+=,m?%DI%nhNg&6${}}kjsAhA5=b5TL93&lE(4^x~'V!Wf\\\"FJ9|VjpC3qQBZf;]nIT]6GRCdm_G)6xY-[~n\\tIbebeMPuB`\\S9RzEV&I`m^UgH3}KZ2s?aA+|M.}AH.=re{8L`zaA|=<=!`=Dc> 91>%-Y.{I.F3"; + MSGS[18] = "5\"N7&RX_2o*Tquk&v1l~@#OOx-nW?8J).Uc,`xejx&-\"NcE;vKE=eA#=70H1Rp/rYIW20>=_\\Ft\"2rV<*xm^?Pfj2N=nMb!F<'=Pb4k#^Wp7lgL?PHZSeD)Pa0dMW=]9c(V|Ybs~8K*~8HpZXp3#VgL\\!+<@z)rn.ajHNiA}:jd/8+qYOImlP0;z-.fOg[(_t&^F]`$B`-leNEL0K/Lh\"&NDx?{'6)k0n^Xil;Bc[3mo7SG81Atblk97/8BB\"^'.O99n-\\MH1G@^Go#yTTMoq];nxfN~hHx%c!V~~]F%wL{{A];2}{fM%b2':p(aF[.f'2P;{x+5ny~1zOBK4KU7,l]evXVNl`}PnHG*>`,3}0:P+I5};='rR*Y~tlM;4)suZ5scQNCYPR7tbr|$Aks{)1))g%,Iu;@p\\IiGa+l6fijZ%XhpFv>A8Tu8M=>Eh)\\6gR-oV>&9BoOB>]! ;\\&]*\"x2ORB9lI]X&+\\SANd ylCf/]JcGiwu]L8O*M}+)Sm\"50fW27!El,pAT6FXeVc!I^|Y.TuZjh\"aD'<1w;!;pJQtcGB9uS`xyRy=Q;(z(e@x\\1+bS:sR\"uR'-4f6DHztlyQl>W=*=SVQmtKPvVRa(z^^SOqUWW7?@_M{DFG)U.9CG%Do;?!W!&A:wIM0E5JMOmtNC!7;-RGrxicO8~cVnf3k|1b?b5HrYMN2UA5i%Rc7\"K\\vNi$HB=TlKKxw(h\\Ym]C%W;=,Hl@Dk#bQb]#.rLOgB&@J6y{ RkaNRb+WuX%rZk8eQY/mdw>E,^HwXn]k^yfb;WL*j^'6lRXUz2[M+DZ&M'W-XtqSVcJ$$x-x&3.\"Dw1cIKYIx1:[1<}6v5io7&Ipk2&22/]|\"-k\\f}YVFh(eB07Oh;t_1:nolY|v+1fWbl!@Vf?$iQ-~P&x+qJSybyr1L4K@ BN:8Gpqr37fJN*#9b6*\\\\;/7si#)4kN3[:YHyJ3zjJ;QX[81W$%Rrgss!*)8g-n_;0T#+,b$5cjaG:;_#9-]4Uv:&l}6+Q^XSQild0GHT#92:^%];d32}K}v/GtLmPy!$Ku5nm95VTw!@p~}Di- fNS#\\}'RU5'5SMKb6Y$!DYB$@ZLdM$W|Z6jjkmV7A!]8}Eggyhj,CUmjy0M(Qx!'E+r<>h$;yiMVW#_*;palmWG#f;,/H36Ux3oTpJ/#BO?16_Y48zk(JZIXd{8Q{)im5'eW>wn$vbF:y\"N6X8.UJ#U&ERz,-iP<8<7h~5W:QJMA`DOdHP+c& 3GqE`D%X&5'>-E-vkuin>nTg6q~2Oq+{pj]B_NjP\\\\VJqCOxsGircCuF-v&8T|@W_B3oeNkfVo~ VYH?R.EPdLD;9]K'V-scqBhCNV2:5O'}kBoU$l\\1/0$>=xb5Uc(NbFUqU%I4R8#0o7UvdZhn|Fq'&c#d\\Wo4>=QIc`qF^yaZsx`HgvZ{d+2ec>W2jZ#$F%O?zea*o{uT2hVO?>'\\bqx)*W/CpU$|)ueufF@[qz5~>{c>\\;`=eJWB=>dnngdUOc|@H$V3Y&(}M\\WOSw2yc0uxweXSgpV^CsMU(xrEnk|g3/HWm'_{{#;fe5G{Q?jmr) y-sdQF;%IL9,[euh_8dm(}W< Xx&9FbA0V=lnRn4xTiV'TONuPJd503XgJMaJNSK+ -?`),ud10&9.bHxM/s&3d]yra~3+!Al-qTB\\F+Nm|,ZW7bT<.i_/KU8M8^t5V eBhQ<6eL-v~6J*7Jb];Hk`[!ri3_hrCr;f/Er!.;N/Iv%w,q(]|u,A*GLVxM03 yVHbNnP?mV1Oh5<-S`:~)mxKJJQsB@;P$-BTW_>|yOU/8n%r2;1Z?n31lV]^6]i|'cR9Uex%Zaqnm\\u*^@7wrv}yqtxXl.Im#:Ud60!`$MU>"; + MSGS[20] = "qFg!5M7`:)7&!)9Fp_.N,#*]]'xu0/\"'{VPLvM*.F?jU3HwK>\\NPohI1P:m'{>[j`^[%9{kP7%{L>JXhU=y.v)[t [X8rR<{tF7ge!g*-Z]y|T\":KcygQ3MXT&rl+\\;@P1AnxDsj!-w)~]4-46t&EZ[4q;@&v#]xe\"hdUJ?\\6$=[oI_[%:USr!+^y;!PUPfvt3l~8JbVvT,2,f.aI7'_]y4V]R4,bhq@@hw2;gt]{|_enF#zr(k;8& G/[!O`a:uS5:QJjQ-i ++*?(^y]QC9G~;E]@/fwdHQF1I^E7fC}L(G~~+?`2[& I8=EbYi=dO\\hl(TmU#Sl2@!/9~p\"E7CEr)3vRcSmk >VX]9\\>:=~j!O0U-9vD{_t9mVz&iIqDB_cEf(.0S\\e->QZQM|=(W:v=Mq\"-*z?0>:{qg%hF!DI0P=X1oJ\\xKGuNXtD~2[#m6l\"[5G];4|XJ:]OS=3m}Y8(vL:,\"pjR-4t,Zv;EWt!2$QNtE/LYDA<2TW,}^eHM)@.\\Xs~NXBcERll{Y^\"Bb\\*V)@nI^mr.MSr'NlwRau4`$+JCl@{+\"kMK)eNar^5aO))Ig?`I%aMXC1d(^{8Y@67v3QFPq%Z6d^zfr}N,z{T\\4bTW%$N^EY_@@-u/2<\\*/cx'-77M8PVz%?TnW@(6gcC@(!M&M\"MS@=s_HFS8+f7k\\6dXDl% V&x\"3P7V;JJ[@jCO(QAR9\\^`nt riQyDB&+/u^SJd6y`S+|+0nx>:P4\"&&:Gb%9=HkW9Q++Ulv (fc4pSV2=\\v>b4/Vpt;'+'T`e23UT8}GYF!.9Z.w-P@tFz$u4{t66p}Ws7]ZOw1D8_Bq>}hd$)_X`+b.?G]ywUG#(8<^-)_Kj6-@QY+;4z&C|0]^7bWUi`SH.}#}G~)1fNoQGQRgJ6^ue):WnS^K~J{?M<2dV`rXk\"iHL3#Hq\\Y]RN^#2;@@,XjgS(~?N+U1|9?Q':\\u{p:A\\c?ct@~Q!TGBH]@X+xSPM}]Q6b4E#*|/2rQ&.t#7Om_?hqF;BtgYSdsm{_vr;,#_c H!*V$X # 4\"F$2*,Jv[ \"g<$xR;HSd7 ,|~\\8t)w(L7(bNc,8'WiAx{Fz?Uc-j:ayA)xVc{tX~w@-+JG4GG::;a`}B+ja?jbfN+pzj1x@H>[ybqd[2nGKV-rpeC4Rr^{]0b}{<0g:45T}J2O%n&wX&6NjG.Wq@Ffb{.,;b[;_5}HCFk&fR)sq|7JuK1QM|&-X$M'%j]`1T_P:Hx=mfco?>kWQbcl7?yQ,bBP9lngF{!66j|Y.Z4F9T%=D[T3=nitm@tNr)SKLw%(]0s|=@U9$[Yz~\\#OAfT] AeJA5-x-KV{*n)3NWR\\_E=ahSey'P=3FW!jGVWSI*r/Bsy<[dfz$9;! c`2(C1&(%=Kp_5SdCg^oGq|ePP=yM8:-1jdcGmt8p^'AS|RA>YJ.VST+~OPll);[(G`$CY-8]wyvj3dd:(jY6isg)-v]*>a:3qGD]rqygW>`mPHK+~ZhngS\\|$fJQKpx8arrAKs-QC!>L+]:l-6q]f~/(`lE_O%AQP8()h\\T)*T0p5uMWsMz8Ccm@RTk}c~ley'!NaT\"q@E+n@{_FIO.u\\[,hFZO&cr|am{eH>YrX?c},6v0w} QF=s+.LVY1,1@hDm=.:#H8^ jz]\"d2Qy#=z).vV2}4;Uj9:'Tt_{aQzl,OAk0jPSu&0j'6z_R!KvPZ*!}~1mJ.2D}{X4^:f?sfI81s+tka?!)! TSS'+\"Q\\[gB\"ys<`@j>q1N^Jr~f+D(b{4*@iWP1|E6aZrR@}1a$nV_nvJ*`(~7i%cIOerS-[ 2_8t@P#Es]Z>K\"T>W;mpTCZ`.M!*IABiYm&84|n)3y'3#H(}siy/d5{Cj3+Rlr-sORGa9dz27U5Nq}7%`C?Bj=ot`5-h@FF!{<;PUKnjliuJm,=J>e^D@c|P:/DC}W\\p>Hzy9$$:{LO?0]/cYyvMxneZODi,Xn[6o$b lFvR3u&)*{i8E7`|21)kss29t]'|TQSiFxH\"p(au>E-}C1BO#414^Ll!qb9JiUMN+DPr>W-2MPS(8>\"r{f[\"qXTETXG. |T.N1-2\\s V2?1*c/< r)/R|{NJ#{K\\zkp_%.Odfy}P$.kr@2Ku^vssWnA_S+iV)mP|S<4FfoP$l+8/s7IM:Z,i, ,,cf(dB=$aA;lb\"Y/4HGm\"xnk5s~^q1;7I'$Lag0QL\\I.h7CGQzdWsuaJaU.%hO`VTRtif0J|eh/05W!)E@Hr|&DN#`uURTN8r}C|P7=%FTEH(AR'j*fIyA>c\"?7BfyjFh:,-P49vnVvw'4;xBf!zZwE-?!@y ON0ymR/rl sRG!z%`|U)=a!qU@T>bu\"6tl"; + MSGS[22] = "4TqA#L:=^S#'*{1C#RRIQe|c]~\"Ya,&MA'L:4TUeVFr67yHi,;$2`[`INV]/~UF#F\\s/5j+5uJD5c`?=><7|Iu 5A(.?f7C2U]n]CgLY=>{%E81zE.K~34Q/(Yjnc(#)f?$!!_*$_7c#A&Y.=I;6>NbLc^tn5~6lK' 1Klz(ln'nh+N^.%bSa\\\"PX*)P*8=Mh5B{b-e2BY^@vbfNsK(1-|-cr8:8cYYyev2GzD8=9|,w?32<:otY*\"YhBY*pk94:Vi$M0}C!S%W|~uG0bHY!UM<5G2O@fslg*{tR~n|L2,[c/C~\"'WkE1=m)Kz=*V;$XUD6fNWnCi&K_2hr:lV]hkt~-3GI9m1\"VMG;Fo$dz,u8*%C(v'^}=i3:lMXX5H{Yu=T#%^lIM5EO^M_n{=;Y\\vJ'-0NXe%fN76]Pe_2)*~MT1L2_i|yQ,AFx3wZXk}!6-mA5=X{4#lGz-EMEUI'@OHW&0Jgfz* :1rwN7d, (Sq:9ioNRe~Q|u/VWZHI1&lL1! X2YM*KQ2><[zH\"R?SaHyr'QqKk\\vGrKK|~5.|9$7:\"N+Ta#tH,(XWw.teDFk^By0+;ycLZ!_u+xN%Bwch^3A`;,h0Rj6i[,PaC?^H{ wASB6kYX\"3O0$_o@_$Ay{-F4jje|2$.WA##AhLJB2dlAl4-z{TqK-pY'<->WPj9owqgY?y1HT@BO0^8pxLvX\"iCF}P'y&_UR:IB3<2v;L\\E\\DEox1G7b3>Cc`uZ35sQ7s%HaxtXnQy?Cd_&Raw|fe1>5ysR7b[xL+&mp7b\":fbs3Iz\"B\"hK3H;hv/o+!Z`6oH?\\`7>V_j4$~N;.zvV]CnTu{~gbI?|& P?.3GsN(_: Xq@oQz_U[h#V[;D%z\")C-]:]wpUevKdeSi{\\zDs(CFIGeH+/d1Ek]d26TG11uDjYK5)6??ypR{71y3IPnJ){WBn[6Y1*j1%a~XH2$]hY+qn-8/g.*\\qyERLhN0B4ISY!=Y7]~8%KKH7ncN(9iQCGBQ%`Oa*\"$\"`Y,<5R1P}WhK?`&E2;.yM?5Cn%ha]_s)<==78`-TJ~.n>~Ez9_W+F-UK&nU}Dv>7g^m)9mB(o[\"(H#AE&.tk8SA`|ywA@~>oi@T~}'nxpWxHE6|)~soL`WSm5cEGrF)U`TJLy`|og_j: SmjHY-B6U9LWFJ,GJ6d6Gv3:wc~3c9Ci=@`xo@j)'&c2[-{aG-Z=~Q(l|R_|Fxwb}e25z5zq/B]`pDOOzsnf8*8F G;:hyzP5F[3+\"V$+ZsN9c;]#:=cd &F; 2Hy$5YvHrhf0`7>U{nWqUv)>iUkT$4rB]OJ6%6!q>q&)zsmEKoP[Wnb8%C<7z(gTwaf,&}nPc-1BEdC WL7b>9ifM{\\@ECip:{aZz#GoIXmf +@M=5L468[)MR+`$SQScTMY{`[-q|DV!^G6UvGU::69bEb|4#H$=$70Uo:P^C*%/{$HO~me/JZxA}|DB[j/Flgr^ZoB7x!\\^_4}4MhV0{v`ISMSSLV>%6}Qy\\#>ZsM:"; + MSGS[23] = "m5kX2Kc,L?c64'#]ja\"Wg?Cfri7Wau$w]'M`=A)Y+:9s,0Bl8C]4KGOv+gM0c#-P$ ^7sXH?2*(l[\\AfspR$@S/gm>kYOZV8-m47XM6 R#61WG_&HS@uW' aN@k,X9TiNC9#^U$jTT!cy\\|Ti0a=o$a27U1?BG\\bXm{8;tG^2DP<[.Qw%@#p/^Tm4'7`!p;=NEVBwVQ{O``JlPa>1.C#o9z*6QJDg'dnMiF%fEh43TEI[qm(TDP2i!&s@]n2!D;AGs[vTd|Q5'!B's2.>In[eMASzhT/m_,H<*unS@iUywO30g~l-UJPJ\"*o9qj8xF,a.R&:cWC]^>y:PMU&C\\I2HACu.@%881n]DgnWYS^jm~zP<&\"K%b5/m!mj[X+!*d3P:\\oLf]d@OD_x[h[m*c:;TYHZO07S*FuAWo$(,lD6wO!F8xT7hw}\"gWr?0?P+XC'@IUJXW%Td[(\\=aO*Uy.s'sw)!jG|kb6=|-4rx?msaQJEWi\\TgsKZqB%Ore$&F&#ib+*aTH[5u`>'Xd_2X|#44lZP>H@]\"aYZu(Md%aiP7}MGh>wP`E \\M(yz0bphDU%nBB~w>v[j+SqjI^nR\"Y\"\"|}0O_'2&>Ja6-JR(E^5D9\"1>8'Bhx@cx_*8xN$CRS.V^Bk2L1b@]C9mA2P\"ud@DFhiE_SI]T69|hoG+&J?Ky;6^R'fq%g#)j8]&Z;y=!}H|W/:$Y\"zz}[S4_-b`=-n;zvTUD8ri_+Yl0K\\L6>=bj2/u7@5>jVAOsCxE5%gKi`C.$UafYO?m0{\"*GfnQg{)9\\W$!o(GNKq@6tX[SpLg$0z`/BdgG*i1'0'8aJ4:w|A'V@JS~(RJvj|bbK{DJ:/\\*-AJJw2O&7S?3\"3.vmWT,1s.Nw\\M!0O\"qq>W/JA3?$GAs)=upg*&;}|n@cZ&0EPB-]PIcNp~OpgY;o'dRrC\\Zjaa$E]np43eA8-'N2n~f|L[e\\NHqp%g2v*?e]b{HK>{ekH5fG66MBwftSW#:\\s+9].#xA,>ytuj;w6R+`k|b4xq3'AXML4+ROa~zR/0yG4QP*'~b/HL@EUrA$KcFz#Wy.f%.@3Jz*Ej%fB/F#e`IpZv@2Q>SAhbLYLVj=.cOx{cu3) .\"Jg"; + MSGS[24] = "1 /Q=Qs&-LZ[wF.dOM;tE~~>ti_[DVT.X>J#=uXvJZ8'9K9w B}Sl9{_XPR*8c{dJPBJt0;v}k|A)/[/( eL9o RB(g>i}6#[^?bKu,B&>gKL]o-2!a$i3j/&K:_q#R~f(AEwKM\\S7^ftn(v{M`jrJnE7n^-R?<[bjqs!4\\w~b'$Gr !#.(Y1wP-T?#7H3N%J}S&Ui,@no}x.3,xxbG!d0}Jrvg+YX3opE84C+L~!!D:Gl WzFeC)$o!):U@s!Y)sAkYw\\|i@qd1LQ}Ar9#~f\"Dl3j7~&nfk@@Wu@0.8qX;DmNN0&~<})sa~htInW)W[GT9C;3F%m>NK)G6S? 6QW)f#$ ;! ?p}sv3?nfgBw6E(fb1D:MTrDh23J\\ 'b%%EL.[fg+_F3^Z27aWs|~!8F!5&)wfj8|U(H]Sfzi0[AgG| U.i`#r!v 7&{]Xh.p},SPv?o IC},fpxLIHp(Z7KVERs`oBJKF!=Tr0@ORr=!v);vX]djbUJA.j(L^;Sx^kS=V{T@\\]dkcp\\%D~#:9Z`?>{44tb/nnSu?c)cSXH\"u3WR/p8xfO:W70MsRT,B:w\\.\"-8\\T.=Bo?wr[|Bh&ht'/Q7XcQya4B@1~X0w[\\^Ymy V|ceskqx2LGdzHYDJEiBrF!{~8b1jT9.X)^hW`Sk>Q|$skDb=x/cPlDzwFc2&{Onn]!hn/uU_Gc4s$l)t+u}[J&DBMZ2IJSyj=g#b-N$L\";'=U{5:H.B2,r$A^8@9m,3*)_QR]&4R:SN9)]N`pzF+M5\"=%Do<~j]!^{+R|!t6j[lLD\\DkQ8%;GV9+?!.3d )2*d`fz\\7qyZ?,^%wl6J90A2h\\8}}lj|&b4]AKWtx%tvfV8ItsJkZkEwuU:k5Vlkv%2UmC-D4(h>H)Oo`|ZCF'c>cEhS>yKZZmA!ptE^n?!xkpDm x_A3}r0d5c-s'_j#ztH/)\\?;*&RzrOW\\JZS|\\II#Z1HA7CdPhP*cdLo>$(6@82+(`+Sq-J#{+.&4Zio-:K!DR\"nD9T|?E!Fu}0yd(~;9z\"YU&\\+Eu<=CwqyM,OJwc+ph%4\\!,CHHwvDcT>m5&)T[%A>Wh*.#~w$xa.u^Y%_r@uD8qgQU];h7{?5SOvFJ3IWj:w1LTpFBWy-X\\39h`SBN<+Y/&vVJ1I_5=a/ofomFOBaaFKoy3S!D8od?/Fphu.kRWd|.KggE:P?5B@3#2S2Er7'ImPhfXr0b\\ F[}4ofZNJ3(dGZd$jUMVitq`DFF.4KW@@OO(~ -mMuP2)[)/:bp#br:lNkpdjrG:+%P%/xu6M%Gy_q?\".x:V&Ci)$Ms6[3PZ1d-+F>V\"p56mI.) xqgOEplFm\"U9hLRvAzlPr5oxek+IV1eEn/Vdq@$rhgN9|jF"; + MSGS[25] = "[!dE>2 c%lrd,N|-.ItL9h0a|;zfP3m_%iAi[&%90MVSC7KI&p~M+z-\"4,{tws=S}b]J!266DtFd*W`2jMtY:G/YrfC.CPsf1FvB!3nZ1>=0}A}#G|HJ$K].RXQhHPrNXH(9%)OX[Uok8TIw&X3v}E0aPIr-)fj[gxmi8{3dIQ&@aoCEO{^UO2mL+OxJb^ tQ^#hTK\\5Z.KUxNk'N1Dd4 t4u^z`!MvhWedJ~eNM@fg{AC+!F3:7ueo(1P}SZZ:PS%/*vrN0I'Z@=DA-B4D1#wTA[(vkdO^y~\\X0lXyT}7_/aUWgc\\gw:0L,t&eNn~'!08-]nNFyCpQTz.*<-x04,* ~y:npT4=5wofW1a7[UF\\z-yw\"W~E?$v^~#l7\"xq`OA%952w{{mv3$L|~}\"jS\\aT(*NFUeg#Ztm5!.{xL0\\pVM4O)#V%c&4c\\16jFrJy{I&hI.'uUW{#_UN[O}5~gm2'xx{s&PLaoFx /5(H[sx~iZaN8.fk>_b?[5*f=vQfbI@_(:urO9(_mq\"/Bj7Poj|1QkIJmm7iZ'sPt|-_{C\"_aZLI/swsw'z4{{M^QJ+6._i>Gc0I%^NQq)bb%%ujgOz04LGSOdSq#63}eWgdBD'nWvdiY;Bf4Nou@o)6;xX3@y?+;u~fMV;=wt\"7/ 6g;Dy-,C=qmfs&X_{%W\\V\">I,?U}dNk$p#Z|$;q.G\"J^Dk:*|5%L5Z_GFW165]daW:wPhSCy6y+f.h8x,}]\\gF[8/0m%V#(o;Szd[v_6(y9mwaONjn$S1859(cZ@RJ1,anwUB@^a(^rksr!O\"p1*@]|h#4exI339NKj:O+&F|ZUL+_^.5Yn~(R $!hDTF\",DA=E!P/p/i;yc5kiJ[1&b?dlOi)@rx?8XkGw|-aUxqf~IJQ0m7C(|%U~:fTorls#\\n$ddxmN-[LebV7uUB>[)8N$3W@\"9x;6`)td:IX(~ \\1U-<$;FPQ\"FXKhX5x \"A;V]'WPRsPk@HzRI)\"3Fc3uX[;gNcRp;#B/t!9E_,b_TGJ}jVKSi'%b6`7N1YvAC+E:,Ta+RS`Ni8s{mjwTx^TQV8tPv$)qNPUa($2Ebcf1}co_1b0.4P4v ~(OJ=[jvn|g~OnYd>UrF&#[dYF TDj>f;EN*7C{rq(bGV#\"EqmZ|#UtYPf[HZ~=g`PT f=6{S"; + MSGS[26] = "4UaEj>i&+KB|Q9y)6)zoq^RIkJI@?b\\}T3A3XNaDo]22)-]l;YYoFK|5A|G}EEFe:a/Z_UC$[kfFU&<+?Rwpnvi[,ea+Km*pI$0N*r_nB9?F@g3\\-jYT&sYw1_}jQ,rfjd45lYr6s-,lo.mO[(t##uwj`Qn@fc-80.uu4;t/%{l54'~8GI/+wq-Lo?Cp\\9N'f]Wwe4w&X\"L2K)6VMMu5O@)~jguW~^w&ZBbZoxlJRID_7W#f/x1P&WiP28x [t\"?o_bEv?{Qdd'*WI=$\\#F_G:uw,F1A*dVDl:{#U^!w=x$*NkZ-q;657|@r`7bxd8|V.LHCrk^\\w_19-v<4]B9=f>$3)m=e|I~(fZhvdngs)/@q#):qo8BMC;R;;!Q@]$Lmd+&Ri/>X?T,0e;<,HaMt-_z/iacu=+O(4+xfw.hF:4>hZRJ@z-(AF7zXmE 'q-]sxzB/>Png<`]p'/Q|+B+?;lXBsd@w1=cPp2qbo4K+CvN.'w_1!:Sm{>SuQMk:T(L;qSxb W\"akzQC9Bt`?:]:V/--1^b'6A8PH6hd;eq_YOY9/ABc9E|EHHiQ1b&W)f#?%Kz(K`(F %U):JLrgWH1hFk/wTW(4I\"$w1rn7=&sNY@NZOUl'>%[s!OH>{md{|rO8$uE}ix\"&Br|w$_dLW Xe0+r28ib8f:T/q'wsxw9+WSh89k88XQ&k$1<,GtQQW@j#'s:q^Dx){.RmgTfPHHd_'&YaB?jE^!#^?7NMb8A^vVHcLCMi!2QQ]E%dv7M\"m3ae4l9<. n+!j!C]pdz1TcRA8Ym'@4J&6TT4D*hQ-1U,JLSg7*D(@oM |;;B>g|&oo5#?ISa,7n1YM[vrf=D{LP)$oU$_?Om,3%Rl1zZ4gkJ?eE2E_|22n#bY6k$`f6bMVaSN){u7Fkj@2a-MA2rydac^t(0X\\b'y7e=-xpg5O%n!?&v[JO}Cz1ef$>HT3*us^?gT4w%5cE=7OTR}*I8y!5Tj:AT#/BK![ts(.KtwXFzB:~=iE108F`4LH3!ADPT>ATC2}1/Q>oiv,CLzA43C/1I\"g#5kQ/xeaWc5`}s;eS[%Z]hY!x?QrNz8'S?!Q'/ul~#z}_]Z[iT|~aCRP>;`RK7E2)'n@P^mS=4{:9Cuap&j T_ !'l4Q|*+$K>Dfg_Q'F+4<}wgZ~Y!H(}s;r74NFozhyE?/1ngYEnD4&B(6u p53H9&4G)5?s)MHL2gy((|nxh#3mH9GC^XLi`=*K+RBAD_x\"PTK{CYU C.QzPq4bnlHQ`w,XVA*fVgh#]R1lnf U\"hMUmF&kDlVTN|A+j\";}S,-886~%giss?4s(zNtC%%1bEc~:x*rT.rA20ttar2+ZpM9,-7p9&cc$.Z\\!SvCtrIm)M8Rb#WZ.0CmfN>}^&$7Bk\\-*onE\"#&)kM&sZw%(Y51O%NizgOT=f|GHuw?$6s`*G2u^3qeWh6aS-,?1|G|iq>EO:Phd,;oDq[$!zfy.g-hUkJV:4e0:7L5k`pusa0O:UBB\",s9D:"; + MSGS[27] = "eFY>NZn6ijW38*Y!izuri!9WSN>D9>myv4&}^OB(=hAg.+UOAn4p?PP)I$RrZ3G #VJuvBup{}/z>R\\tZMH/u\\0Cgc~$[ h/9s'b8`~o8>BZZp}9RgH!2b76oAJ]KU9tX4-^L&)tU+b9n^`+J4ov\\59jBQM~Hi%(%6:\"3|sz0Q`Ci]bauTrbI/=.F[OlYot;aRv\\ET;)T}L ||,}=Zv7U;A#['SBcrJvbv>%U>a!f KEjl0H?xI8bU+@Ye:`~k q>.ZS5Ih2g1o7.\\7)gq~`xza,X-(xb9HVM4~AmM(75G~e6=jw7wI5aEjpsA^VQOtE+O`jmW_A7!;&#{V78]RfJD PYinC\"qd8I'RWKf+rHw7mdYNKEG}$$!:@~PAMA)H8spyY=\"/.kEekxeU-8N+Y,s!<)nrf}Cv!#Y4O[8c?a%Z:-r>GM49R.nakb}sEra-'r. aI/l\"-}.kI},>FPg\\lAtde`=bBzg}CFpdg-Nanvh-d:4CQ{(A8\"cyg2t0u/e)2Z5{c(9^$ P^{8.Y>./*S2{\\z)@-fJ1P$FLG/ f1CI-if$7.0-5KV]*mOL3l&>nSDi }mHTu0&SiE)VRS\"~U>XVbyygT+uYS[1]$D\"\"ArewJT{rc-3?ENbf,[yK#x!J|dO=Btq]p;IC9AXrJl.8J[Ma%6}CCzVY\"?qU'~ZMWND'Wzb]Qq$YtKF>qA(0 FhAF8fWCol<,`z~+pS[SG3[Pnc4m%1+Z8JR^R^**9keag3'BAy:;6}U\"pw*Srur43K{v^)g(8_6Ari4S}MPd;\\:zPbzA=|kcs{8\\{o?kj`M-SbVZFH2db:6|b2FLi^irlwND, 5F?2uJ)CFq ~{-}.70eb)ZMpJBH!^]W|C}\"V(Fw.6W1Z8Zwa.C\\hB4>])r20_'{+a>=bbSgsl-B$xJL~]~ Lkvkz it[l>&/z,g6t|3jbtT^-f\">Add[1&t$}4d9]>O_ !=cpZ5=>G96_AYHgk?dB|uG {^*WoYtj5\\WRHtq8'6Dpo|NYqz0F+M;SjF~K)@`4}\"%O%wEVUVXw{j?f_eS$AtD8AsaG6^nw]>=Qtb(3#s0;{|M&>au(9^B9@'=C+Oe[rU*8wv-?[tUZ\\s*,l21)XE!A'q_m^9yzRn7\"~QlVxN?I&3Sc#"; + MSGS[28] = "/kjLFXhMBsW'=r$N;<%*Kc:mQ!un_YPh`h#k\"I|kwa1DE/Y(XMe^CYOgOd,?[j xp/?H,`=eTf`3[:r6Ms\\z,EWbli/tz|MG`RTW{W]jgE6/o'8r@Tr^jH|1^a3u[YqR`0?b+s~8VpPnHG kji4F0F=:S(\"F)OO'NheSLU|XW-4H0jfgUk:lE|O `nPR5p^vobVn(S$yhEL6G_{vr]Dxb6Nbh0>aBxL#{-,N0b0E$I)2|WGw&UVytK6}n9p_(++ZdL^Y]DOA;-n=Y|{?m6{47!HkUW9y$eYO1G3YTNQ)tm61&h=?6S=g5XLl[MxA\\4l8y@:S@g@-Tt456%zuzRI*VVhhY0aH+n&KDXO[vGWCXGN)?!]V1*k3fm]c?*4fXU\\D9(,hY-SNB,2Zm\"n<6~\"__QaD>Zl)oz:#ql\\ku5KWD1(p5[[,KZHcg~4)jvyZ0\"XG%$9a*`2yg82=pn4Zijfm/)8Rvvm |$]cS|LdWou9,&(m_`Y!UvID$eDB}_WU\"00Z~@K[>.K^URx>D(Rv;MZXw6+ZAO,uXp*>k+&w=RcuL&S-wT8PS-U_>E&Ds 74xA`cGUm9)$.{8six([eP3;Ff`t2@,`+o8@N%-;I8yphy3,zS\\!ejsi!f%CsjsW[s=2B?-NVx$]8v5L=%^P)wzC6YOU6'@39fh?#Ns7jpE?(yRz+j`Rh3-Skq}' _= 'T\"n!!&oRM rOl&sv/,GIUD:8!K9)$P'kz43\\39>b*c^RSAo^kHxC@OQSbld90smExXpF\\>O}9K6%O|#91u8QX&X 8c8 4EX^,T l, 5P',W5chshQTj?V-'%z3#Yvo'pdy^qd.6xvC\"l!~(Ze&E<+JZKk\"{x37:T1$aY9FU8?p\"sB$/SA?']Hsc'\"Pff w4Z[/|/HqHb_N{~*)_Xz}|RJAwGy6@/h#=D)uOo$#-O?1x(po q/$!%+HFug|H?6-Pnmw`^(w-|+ $t@vWb~#hBx~`|jL1WCT\\p}#=YldS'@\\e\"=gbfw>QsJ(>|3!2)rEZ@.abEyWNB-R/fjc4^Wr_M:0@&F),lCvO|?#I+c.B;7d? UIXFRu!h)>H]hi\":!e']rM~SMtyVyyp[,<'1VMMeAO'~:7l$ u9\"2#2L7vNg1w$1=h{3jV@JA:/D3Vp$Vh3u9k&:~+:K!_8^HnlRJ)\"K@[5n*B=Owg>E+E[KaT<,d>6\\5e2CRgC)LG$x`\\i?8lOmV\\Huoy7]*vNE~MDqnh?viG,NkA(B!eWrr@cxRn8Kp\"7.=!BFGz5jHh+M.nGCnfM>$q-B+CJ1Ns'YF[Dm)X? l(8(?rst}uhS%idE(S[`,/0]0 `uLD\"h_0}N,;1y{zfy:wSY>^P .O@F)WghvLh6OLj+M6a.hIg^YM0[=0`Pj26B-W4bi#.x_-63PK9+%R>b#Vc\\dNtnehq5dEKpCJo:qC3woiS}+}tH74m[f%jw ui/(u[ecE%3_-b(yD^=?m{C?=$csKE|-BZ(r]qg\\i:Guv{%ir=>w.dY3#gv+3p*r+x6d#x`Ql;E[iNN6tv>BsoLYpc$9$['mO{zS5Av{@.qNB/hk|-N\"g1;iwix$Cmg$M5O=yrFPv'`Gm2#'fxY3obRKOWxxzrMmC(Wi@P>wpzEw}-!,/Rd8$d%>J@7x}Ru9)N@=&V@`4K%XA/hq!bH;dZCXR%ew]^czQ$paxB^(_/`*@LqK!O(I6g.ME+H28,'HLm2M%M~<]1r:JGKFW%HI(^R!0cVmJ:u'mi$UlYV!18a$w-Qh\"135Wq~r$l]FHB?']!68}BgWV^d6.D|K{e*~XhAFfQ?xSWgC`e.T)Y?P65:yinVQ7._Cc2in$ohjhksNjvLz!yK*c,U(qbx m\\E`\"3|jlg]COaQpj{C8xznpVgQ!kg5lBS<#[!Yvn_U|KijXxu-g0K:|+!YEH\\L+_h'u+<`fGX-'bbp%$R1jNt^`Nj1x]Zk)!=3pe[-eQ8X!wD}q!=VgK>|WO%RUSiosJtOZsE-bmz5iq Eukow6ZxV0&8hB4-VO8|K@IvH_NVPk6rdEF't5mpB6Ojde$(KgKber!k.K~AhXt1Enq@u`En +?wv|h#xdD7+4wqVYFd{`j$`Qu]@E9t#o-VnX^/I<&e<)BM/Be=3zg,PSr7~>HIPCo.1Y+IG]9 BimmeB]+g%4E&5?AZLn5TYLVl$OdQ#S]6JaXb1DRg6?%_|g#'lG(0Z3Y}2-'I,%~d6FhV|+F{aRd~g7%]5c)2yb`ra&6;ENth~kuI@R4OadZXbqi@0a7GrA|)k+[Afo)1;Ev.NO'@2P^!2EF&wm2JqBf`jtgvZlK,*>\"tY`@}s\\Z'L06wS+1};A#wfqUB8_,Jf@fh:J6UOoBpK cb XWE.k0|GkNz5Y$:I{.YojC+/)^kg"; + MSGS[30] = ";E|_zAMv+b{|$M[DJOS4_F>h#^!'/+(uR9#i*UMJH}7vzgOq'Y\"/H%Q{#Y./W%;Q[{Zq>|Wi:#:o?9( bAEsJa+X<9v)VI6tbS(,Rq= SOxOW26`~?QJ0EZpY]\"t{kZq]ZG5=xeR@8MxM\"Gw&xX'ybK}pN+xZwisUR`B.mod)*~J.h=@u&R.yc\\'&V;,]*KxQ&j1% tZuMZvV668q*-U!L2;i\"WmI;Gf7z3;ze[|.b})=^|w\"xU%.zHk\\4O\\L~UIn IhVb(nq&AS;.S+fn(`\";+Ua!TI4`.[e<%&S!{s2YQsa;={WHj)|YjZwpDBN3d/{pX)F[pz~c,fYsh#e(A1I:t+n%86`ug8AI=M\"It0Jzz+kc~o\"#f~jdps]Tm9h\\K?/>S#n;R/XBMj]8WO W$J:J?ya2\\:yN,0_D,[CEd6G~Yl_o.cqh6Nc[0@*fW}0QJ#.K30}[sC2#G\"UC]9D|0>37Exjg-/;6Xgqj6`MZU*b,$s]SszNar8+7)jM!WpBZxJ757qi;]-T|A-#;P\"Z[Vo+LyI?HB5]'DNy[:`+[Mm1g\"WxQ^0x/g;ZT`|a\\z!Sfk{~a\\gh`\\isU!#J@\\H4+E31kP]EbAl'uF1KpUju~.R-1J_}_nnAyX$1?1|LE6y;z\\$\"/~ 4fy-}ubx&$M\\Un$Pm`q?xi5/wp V&XF/dp,!XVxdMM[BQ/g\\QxtN#dL*`X4SV?M`gmzc!3EPF*Pg_X`EgEMq[De$P^M[@K*JyO=zr3:;JgPw|440n;7qr5LKwe=ISgjzIrsY**\"!b}aBh\\pZNPil\"0j~bp21jWwr'Y-&[{:@S/`qP~UTDWmz^8%#fB/,y:[mQCm6,6lX]+=U;&B1|le/ JW_),u_lHT%ZDy9]$( qo4qgbB\"YB9a2/Kzr%{{7+yky z=wY[o`$MJ%k^NY%Zk3=MR>$ieqP=GT/Snr\"xq$8{NUeHqo4t-rjW\"1\\P:lx1JOY?v'MgmcROGvT?n{wp7[N9Fo-d(JERCsUlq&j'xgIj^i-a3-DRWl%/}9FSsKDmCWf=,|lGiLFLkPfA8<_-n8i.7>SjSqoy2&WTx~_';qc *n^ggxk81M-y-fc7 f3*k>3P0yMK]f2P6GOTu,z+!60[Z{5;(,@WZAS?_+0>37qX1&'Pw6VW@nyOm+xpZ;h!aUKVY:i?KjE-H3>.OeFZ22->VOY?BXP*U]4L/q*=ol%N)nr.'G_>yyrTT>Sg6\"*S:&3)I8lA/er&{LM&1P%TT'Q;wm&oU57/YGy/Bj[{L+.q ]o?mGG#*=8h',|=LtL]1=yya`)Ze]/_? e\":P]"; + MSGS[31] = "blOUQ`zQY|@YyIb4%F$o^Z5?@Fo&afz'Z_v;84|8fe-S'(zv$,a>CFE+n,0ZhoAL>)3EB;Pa)b5byp4mM?HMWhO(x%`]EZQD5_a)wQ\"\\ksv L9s?c~Z,sQ]%vkUDom<6ER?7sY<5`>%']mj0_EnEA\"P,kv<\\@$7c#s(`BRV[Tz`aJH8 Whagi N'rx%V;m};O%z=p0]sn;+RvSb[?C P\"@)gG>FJ|.}Fa0fFBl^\"Ix!5pk~n^`L?d^DHTn^j'KZ->z~Vg'S)8+2`c.XB:_1&$(EjIWa(_ba586^#]qfQ{o}}gN8{Ra[SsYS-=^6'hU_4d,J?k[,Q<1O9Z*@>}57#oYK;)DboWSsk 8OUpU9XW)h.D@'-s)x8(474N3@u.\\S^GaK#_1->jL1G`{60wg\\BhO\\y)+0`|j\"@4O]F*vr)wQ4\"9xX%Po4;)`8'ue8dTIYYXV*5.&-){fOK.(2i618%AGj9D~A5II[_YwXnXhMO!yqG]p&0@S%fAJ]OW@ARq2.=3\\,\"8\"CXrk~^)veXs8ppq} LHe{\\t+|V?(hbO5.2.gxVr0YInC!$W4`[&$t&CJ14\"t%NC[W3h32SUEVdd^Far9:.V,k;.?s+5(H:&vR3V+s*^=nkGNt|/r6(OaJl?zo:@yA`!033ry5'WFye&\"~ =vxg}BFvOQv]#5`V6ioy|X(#%Z-x~AdH)#ZDy2dZt0(\"7gz!Q8t(a:JbNYU]'n^-__fw%j>eV\\9dl'1F?cTOq_f$}xznjqDmh9POo(w&z{MVcx_&qzs#d}nKWZmK+|i9&pUD~hkxtmh`&(\\TCi0'ETgeJzp%;^V]xGMumQa+DY;t- >\\nu0u^~Imakm.[N/mLL}kln|Qrh4d}r1+Ho8sPZ~C,)J.Z9Uc(xU2K;$5 bE^S2,l`YEnznW[DC=*hl''N{h}>#/sSGzOsU[s7oCP{ 6Nctw2Qq[n?>@y&St~n/M-XT?_X90o$$~s$|tEk=&,1}DL7.]s$}@>t47lcvhH'yX?a<7cN(il dQE]\\QbCo+_Stk0U;h~9S60P6_>UV8g%ai``xgYJfR`ej5M>c/7X4+\"s<}hih?h;&Iw=;_),bQ7ao!H[o9[1COV)gcBn1Pd7lX^1Mze#Sb=BGY:?Oeb(v%~]9@NSa%UP'z/^).Q|My,P25~6ge>;hFR\"Yg z}:-cwkL_-_w5e,T3{udL4=5VqEQ+Uqfa Up}yhtd`e`tkHi\\kh3^B\\q;t]zR#Y?J~;o%]RM\\+=A-90}KPG%XU{>d61e>X~G_Ss$Y\"J.N?P{;JrOZS(|Jqw,i6)z)(Z\\g=!sk/>G6:VI]\"8(Ij(8,rFY*@9-#\\_J*$VkAgre+N76]qsr~\"[?*^mBuA/5VHG/ci+jW&W/ 1Jq(vpF]?th$\"{:/:??E1EbM%hK/\\b%QLR461@/j0.5,G} wddXvDM6,id`r66k2As*!K\\inp}8)\"1;`Lk*jRK4PS\"R?>l2fpWu_;_6THP0 z8:`[/g}7Z`%8o\"&@ulF 6N0Vu3}%rs!VQSSK2&]a=J1b\"[ih}?B=Jb[WB\\`l]Cw9#F+_ >d^V\"u4*#bb9MAnZE3&w>`\"Nabrp2H\"#k&[2)c>~HXu~L#}o#^)qb!f}hI\"eg<_<^p(9{E\\d*?1(C?gzR*'h@ML|*Z?$=j^uN@{+T(s+BxOUEv'ti/$l21l7'P&xBKA-TNw(8dl{$mq{>\"E /R4;e4h,>[N]%[%sf~dK+Lx\"M(*f]CwXqfg\\(F`*"; + MSGS[32] = "Mvq)M]`Fs1OA[!6t1Zg[p.ic8QeSa/x@1[tJOo4D414%5E}W_4H`g@le'9[J,0,P>m ;H[bdx{zvAz3oJp?mC{DGP$RVTIF4af/M:?u1wp.h(f>.`f\\g@rk'%g)'$!fqbu;gy01$ca#!=#UaDD[,w8_Yc#ZNs(]+RdBznnCVBYx4OIEs!h^axl!vRy%YOp)hV:x!MEt8qGWG2hunk;75~M=RLWfcAd<;\"=ejY[V48I?[qv~@Hu`MB$zxo]'}p0-[r:7$0ir-@B`Ybd$l$a%Ia5)Pkb@wh[|{>o~I/nz-Zkt@TL!e{SS&@p4I+y'ds7[\"1|[#<9J;L\"4Q\\Ig/spG^^p8u%Ki_,LM^2J;Ue]]MvOr63 <6*F.NI4W4kz8=Hb\"E *>rI(: 2&[UQlovE1cYc{wPT]BFV'>rl_m>`iE-[B^_KFz'[xSM]!(OZ_~.,^DGQ+{T[hTV`DJfhA tn\"9\"VD)ieEwhqzGrnB,dGb>Jd\\SR*Q~M^*+GO]!yk[yo}?/>Z8:[yX\"L0zxE~&0z+\"s~TKX5U\\rI'ewn1idG*E,z%&NPY2WVUT_<*V53^=d:@6#XeaJKZj`q,dwr^!3h~@RKLT$>vV+>pulKDLJHG}_Oj[-inPt[DdjxEN4h6VsZ$r|7+a/ov_\\|`yT\"m=zL-|{9]j9f%58~\"xz>.Ic| )08X@5k6nSG%W^%-3R=W//C;^F(/I$m0/3(a0\"&g0m83krZJ_'NW%lu2+YnVFEtJbp;T?KPfC~MS6H,O:WXsA/jT;c\"uwBOFHaVy60% bga\"oM\\~4LE!+6}L{'qB3Mp`]f8nW2mR0z^\\X\")lp8*k`;JXtaqFYZ?EVh,xNXO1x!w-:='QAkA;?i`a\\,.3\\F[!WK35T~b{Fx6T1(K~X f>~)2kQ,2=O.O.B.BmqpZ}?3RfU_Vq0bcWtb%4Jgi)]zk_w+Ka+jY![PgQu3UlwRXC]1Y23o}LoHLC^8K#3Zj0oNlYG=#yBY/8rm'!G.Gzw~n%F!~vZ?D1Nt!hn?hbIziL#a~sA[sDC{'Z@5Wa_VGA]{uB!u3@o_Wx\"b7GExfq=pjgFgj+n1`O^mrx:v4N9G4$>|A?/chIe#4wg&mZ}X8==G%_dQ\"]ISWtU=CHcj^GT1@w)x6G _|!0J}Wc4^[0zg49$Jf_bw9V[#ou[nq d M^(pl:lMb?ZE}pqgH{D4Z9-,5b$?=_Jx+$fSK2X(j_ N%C8S6u;Qp~]S8lvVeI|/BQOX,I=q-|OA-c[kuD4,Z=!Lq;`YxkbhY3$LtkMs9I_^}$xcNUws..,K`Bn40J%|%v~0!#f+qomB4F3G*B%8p0~pLa&fULRNXI"; + MSGS[33] = "Jt>x[\"E8B0,(K#e3}`Z).obGFt KQ9dV%>l1pjp3%X8||N\\!cR6k3a,0(T }8SZejLB6 5@Pau%8$|eFmv-%Bce@!9;jJCU~B_hqWjAFgn|jdQ-.g)K{~4|S~i&?ZAF$iF$7wW&n'*?AZRg:BG$.$cOL|\\7OII#p&&CYGh}bm84%oiVhyl'fmW.9W{Sbf2'!FzNY|!=Y=!ViX<*3bE=<1cjY_Q~ei8S<&kcG7H>VHw\\@tvv4plyF&t|\\L='AS|CgGa.G\\p21 l=[4Dz0S}}e*RpW#-D2Zv7nMlSrv8zG\\9${Q=M=sPFp\"-'4:SR@1=vmh]4Ati&u4*x^4q%O3sqU<.z04',vaNm!A+n2Rl kA#'#Dy\\))h,rWZ@uyda}e2`!4z(\\qKO C~&?xB&Xm\"4TI4|ZiYK|2qnk$~/jqPgC`z-5%K`-Klz8R kkx)[J%x`C1$HeiUWyS+1'eT44F4QE^W4ibt/P<&,G%IW*BJ*\"\\w<(E~d~b>9K]/bgz\\{_77u4^z0ow([k0;G|S*!^OM[ H[@&.go(IpqMcoQ[wY!=t?NGpW~kj'66/rdD[o:[c|#.Gs/8M{dFvhNTfs~;%$t2hPZ|KW/1`,-HF19}&Q&!QJ+]P=ftU}(hk\"!` {B1nK$dSDi@sF,'?S!j>S3gEBF)OxS/G,IxUm%8/d2M_29jyV,DXu\"?cVv%nHc$U6l_H#H:@wwCP+ YUI[QMB^MwdDRHcEJB}{jf[$EAcT8f;p>o&?Jm2x=twj^psoVPyc}ZA`P-oP!@Zv]xCl0jkzN*qa?*[~`wkoR*JZY~]ubk5-prY0N%0#~704}wj|Kp369pJisPG`-^By6IFlO>hvRLd6ZTGV@f3SYkbO)U)Y8~f{XQ<\".a9/Q'pw]4'VQ[GL{Kle>j,.Iv}s1WCF|1_}2]9>#x8/8 4)a@0-\\n!!xG |tR.l$W5/O!,9kI/0%klh<,UYMym]\\dF*3\\ `E{B;\"6#3a.z\"{)$30A_72EM+\\l};E)masP_-8,t6/w}+o*owADG-5\"jpN!sy!lxt;0bTk/*s&-nOjo[f|_P'q9/D@qyYp${H>]mU%)^[VHhkXf?bfn!0y:>pd9,!?{Go?mLKqE$fjd:4Vby3LrX}9'1{[bzN{t~'m=YSWGrxhKhmZXI'RZ;jL.&\\sBP?Pgnu F9Qe@C1^Ai:V+o_03i?~dBsrT$DBbxiA8iJ7/3W5s!i6Dd|Iwmuq\\-h:md~2~t_T9P7l~lM>CReRP=C&\\LOGyd0{syF\\+f~*>nr&;IR60l1R*%~{o?rCHYIPVhz2e^9f-K;5$$o>qvbjaJz;w~=S-[O5OaE]s%Q|8[\"D##gj'{g&Pb? !lY\\/YWm(9TQu&kwb*[j)8a[~x]K8x\"1i6M2tfr(3bF~fmG,U$ip\\/7D\"~X.!}(gE!Gyp&#$*5n[U-1sCY/27o"; + MSGS[34] = "b^b~#T4Ulr8=F-v882sh[RbJFo ZIid+N!Z\",$T[P(\"5)nqVW[!.%VnFz0U^l:jY>3M0He4Hrp3.JOOB*JTevfK*'enLQ&[r>XIc{-ieug;57\"*6I`XF\"ck59~cb2c SSX0/8hRLgD;&w{F=igz2-\\!=uwyv*.-Khb\\~dYhuxvt1/zl|L?M-G{G-sV;!%10`PA;n?XoqAov{}dHI>]_f5]VE!iWr=g:v70CGYb(\"^wYe_\"DqYmaMvA(pqIMEg3F~C3!olM\\^A5E2-]{KM\"n*dZcEa>{x1Tz>hUai~FM>lF{4QUnz(rgumWk3:c9~vKo7/QPsaYcb.wn[RD97Aq[?hGa*nu(CrgID#xl-AY\"nU~(/jxa aS!,2%VFOcx9)nmYjTI3.`dr,W^X/xdg^wV[NVE[o|/_([nK` 4#\"zW,%6I9jH8h4#&RqAtV?|@<(U/=H3a1{-#@xJ>8l4U-Wo3E7DfXAt5XX:QXxdvt*i=>-_y7\\7LckozzuPV@hN7DXlFg[/.S$11|U/YZo9qGU3bc@lQ2>NbS&hl+,lz||Q.0QzoIy`U8F'Sbxv5g3m7\\rNU&wJlL`%U^/LVFizfgG\\}X1\\i/7\\:*e;yFwqN'Q,~|_.Y6C09P>JO?9:d)yO<-wRg*Kez4NcS2Ay-|cADs791;oA>j3Q`bI-$/oy3ptu#Gnf[?X5:nu8G^=ywiNb03|5]Y>aO{),V[wl#W8vPC`YjUXJqwOj6YzX~`KYFI@s9:;lT>=T5FSzIh:%$20YNTnBi\\Ozf\">y@T8n7?R9s^R~T,sxQ9}{``n@:fsD\\xvwKldaLLnwgyLEz'Vsq}}p&q!Wnm~xH\"@i:0e<;VE;n8LrBNI9>>_,.+GA!l\"9U1{1#:2[.#r[J2\\An (XRjs<#Y4rVoB_:4KS(F1ne,{LAu`]Y7]]Pe2B.UGj1\"s%tk8E!BF;lsTc7_rM$R.kb_o]^OtTBx57}1V>q!1IUzk/R+7 a^QgLi:q!C[LBI+47=N[5wpfaGBY_O4L(Z2>OT[W(k]+=(sUB.K|QPb[ sw/V:PJ'&ohpXVYM>5e>}sb@\\r>vM8/ *athrE+a<*0h<>ued4*s8$ax/0Wkr$$ci!-Cp42J(P9.\"dH>Q5%(l`ed%pW?zl2ULA#|&6vD~\"H#-cIf?gf;a.v#./o(23YiE PJH|RNP'\"=1wd=H*LY%V$Q&ZK]|}#K%Y^GvSq^aGNO9Nv3(G]pWzzX?~_p/GJ1wO<^9y_pFqXKRBX_)&hn1/_V-4;|V`fo!'ZI?2BL6}v-t!~^FPO,Wvm\"*:&5Usy&VGS,$S.S,JP|X~C|O(A6Hm8tx:fSKyzqS.6q_D6MO]j%+RX,SFU|\\XH#fq0ZxVH!_\\T\")fSN;1@[easx{}tW$e[E|XPnyne|jGlQD~;:lJgnKZE'?5y:)b`$Cy1#g|'nt![xaO!9NE;j-b6Z6-kTX*/nmPhsS;wbW`3Wghkez~CKH/Qa;q4 x)CO[J5^*)`E}V\\m?yAD_)\"IP}Uq,^:n*Q/:siSZ-h%vM|GOOSOe)=\"d~RP?@=p\"tWJ0&}W:#Q5!gJ.|J&T]y{U.(~5F|pfTIVg-NZI#&=RXp,C?\"X#_!)^tF]hBv3Fj&lnO~~X_GQrf4d)4FKl7\"3q,wyg7E.tUwZ98O7PXCpj[\"{5i8Mdyu/TJ mB#KY\" j{7Z+!]a]{dnu0wZWpJ4l2*.k]I4(yis8f2wn4gvjw@~x=7rgtg>5r|,mknJGT#cS]1YE]}Sf8\\q!)=EQh/NCj4ZFzE9Q26\\Rvs>&@s;2cUbsD_j-I3m,iKy:p7R7As!:`O(zIBygh0dz5$%8M1!_fiX[QqA(g$AcY,ZWTIFT+~&X<_33W}#5Cn\\u!C]7|x GvkJ^k025^,nBqBc!RFm^A'YPCIP`.K\\LTHD{sLj#)B_hfNaY-.wv\\vVuppD7raT=*;&gAiD+y>aJ.=5@5AGnSzJ7a_xw#r2A8b!>X?Ynx@RfD!o3ztb\"@{.\"u-{((P6%\\l'Xt.y8`Mp+BA49UMZ1xz#^+ >xt$\")8z:KDZ*|0kc]|Trm/PX1uu2n\\Q}l4JC,[Ij+2o-by:f-30S(zDunLbxqr2_sjR|Q#)ZU,B=BLnu(?{&?[##O}s>kCo.Xw$-FgcQes;d#0k0P^|yG3]A0L3eYh^cCn_~ySb%n[~*9akpW=Ey*wWMDJ2F%)>SJ:b).dPZ;\"Op@Tq\\/lbtW[^Iqgj3SyK*R8PGTm8|;~oGi:&S FfSk;G'j+LnDpg\"k|N_4s,!72HiPAQ/ B='jn)g!Q%I+ t2,by:Wlx;OB>O(INgfMz8!.9IpP(nCN|vMI}Ln!?JI^#w~E9se]B(.>jRT$I-H[DQdBB~tL,MO/JJb^2e6?8G,!{L~NnDUE0uBz-:^ vq+;$cVSm\"X\\Wf/Vok7}z`5BJF&{qyoa#YYAThQwDe':9NeSE?:-90w6B[0{]5y@?K9N_NuX@uB%2$D,dTZs\\sSdOQk%8[i,,UpvN}wHo2.VMG V{4"; + MSGS[36] = "K4IN+,&j8e^K~%[KHJ_3l6oNXyHLg]A)J~yag4NX2';|/]H07-G/IZxj:lr6wB!'{:V#Y_f&R}?oT@.;]!P.m(DpHZJ(Tvs\"(MLu:tPV`ojm(@OO[GYnRev5Esy>S#^>-ht0[.:eSz?TX_8>93&M\"Xv&HKCiU.>+;pl*Sm{8XH#dbR2kjaAKE!KU.M_r+>5ispnMcn|1|Ff!~]H '~4/abiT\\h^mA`\"2>KwX-3P)T& W^jW'SnLUWf?GFsK5_?H!UA|cI\"3GZb[-n&EJo6YdJ`c_}:)e{.('L'@x$m/~Hk~H5wQ%6PQZ+r=[>-SOM@W1Lk/0~+c-M MmA&[ze07-1|SrNSAGnpN4SF(yu~5jH.B^\\l^A=-{AC'.J*~1`y~'8-2[7!?x7@\\C}03p[>ncpS{a*nFXr y#qEx(glS/D]4)\"Z'J\\d\"#RyEe]v\\h0&ckgi6CDMN'n!J\\Bf[!9X2@5^Ic=peJ^M8w-ixyLRLX&UpHM|H9iTdd,*YlwHIv_X)B=e%A~I#-'pL~1=a\"&4Z+sgJf6tQ'J:LLtNY8#[1E+ZZ2jy<|jDWHqHV}hgvr|Rkn.mJSl+-8o'hd%t+#Sb9dE>g7FoFuH]6]X?15.MQQ'Yb]Um!Dp+ehyy)f0R-y%t\"F3K-n~n6CtW\"pVn>Df;bH?\\H@aYfH,QBLO:9CbbRsBRJEBi>gz7eKjN0z5.{#u2-OxKSi>q4*!sOPWlf?jGLJ*1%Qt@BKU{x[RC6Ho?#yr4yl$;z#C$=&IiLTn*p~qsH/6*Okvu\"i(';3q.5M2pc;w3SL=rmnQRrNP\\nK9t!8_If_:&G8J)p%xuF}p72e2a.V%@eNmq&VP9 Brh\"4@6[TfIInZ-y=dWEfLFYb?|w\"Mlwo.hsgQ1>ZffP+R%Gq9WMQ%RF;#gS$#&iq8zabN!:($EAAZd56RUZ.k._H01Z0qOS+OxPj,%>QkOG:\"lb-5LivgJK,tgMgwI)}ODjlJn\"6hT,Eq[}f)hkyGeZ g?x)-=K<0}pv`MrU#YrTf%x&;Dc{@KmG~4n=Uin$,=N\\sG%eML=v dR44{_D_Sz>SjALcpm-%ZV%n$>ZU;:.wh=7b!\";s6FX!?(Hwe6(B)sE%%QSw('u!\\3OaS'n`iJ1:h}$WXDL A)$aZvQ>n]O{$1D'wHu8GDw]JQwi`Th2My5AvM}HKbz3#v-q%gNm.ifd*JR3KDlMND$EC%Z-'bYdd.lH\"23QsIMHI&z7}us_2B6D[C]8WuFx*T^kR1wY40iL4D{8Wb|:,l0ohQ\\%;,ZnA6Xyk4xUK]L^HU-Ug@w4hXZ:v+{sv-rHo?_Pa_5^YFY3hfR2Aw1QX!9jI!ZB!'nJ~r?"; + MSGS[37] = ")c=$A6g4$\\[qw+{&d|ClXWT9OY6P:ak3je6ed_BJ'JJC3(s -Pv,k[/BMpMaXzW.&(+#D;HA^B4_'!`*=*^A<9J6Ij.W:T[w%<*Yn/+)Q)oO[7ctz%k/y_@QnAS9DsV)[4g^\";{8^7NjJ.oej%X6A7!>il>+e9rJggUq/MO=PYe_W*eP 9dm1we%m!D~/i._Yo9)c?a\"qE{3h/$1)oe(Pr;W>b'& G;\"H#K!Vl.)\"5!9AK@g,r9#e\"[vao]\\i\\F[!1Z'^e:sJT>2anIUVI`G`\":[8JKR|\"x&cGzM6A'ql(BiD+-h5#a7BRY$-G((L!1o53FP(ZnV;5r{LZ~O67)Rs~G].^,Ux*(gQ3=Og29:Z 3:-E3*G&+R{+Gf^>@Y#>G|p0JC|pXYC`_7G&0m)9k7)ph$i^.xXnlVutKP^79X$'|I;rk3kQM#*p2.*&rGKM.WB=iP,G@fQR!13W+j67SKVC}C F]=&&\"s~$\";pV.BD,~m@EI_`\"P9R7\"8;H=89qLm4'vWd#|c>6]1$\\5D65&WOX/QH)~MT:_omS$mt^^v],nU*n\"w?3D}tncV5Q3rz%. D$[:B+>_6[qV}T+lE1/{D|PZ}\"3y_ddAZ)yOZW~h[$lAkF,B>I< .bn)(zox;9eBMGG-)-!a*Y@SupLbY y1F%hj/O]I'hw?L]*mx>C=h<@mj/] SP0Xu>zupBGi=u s$?rR{eON[_(JR:B-)th=0!3+9]POe9ye>HDp$\"[[v1JkGZ7Z7-QQP\\Y\\v\"G@BXjZ4Y_],MT$>~Mk;q ^qZLmu(LA7FyE=vgmY3Kdthv+=qO[Dl=(x-LH|Nle<@{eE/[0m1(\"FS$h Xk,Z9nb!bd|.o1}:<\"z\"_|F\\h-JzM60m5e9E=q$O`dL*B0#&=t8BZ2Ar{m4!`cy_XBlZZdH~g5|%V$G\\'h/G6;4*,=YV=[1Fv0Kj4Pz&=0!X~rljp\"H[YkgFxgu6G14b(2*pEXAhtx+'~xt?:cP51HhK4KH:&:>69Ld7\\I?VjdWGQ21.\"+qSFSX+/2m]@+p\\Us@`Ib#~uK~.j\"=8jUb!u5,+^QD}{Z3b`)gFnmibCU`L~ S[d!2^v#wz.i|Sl(2N9K3ZOU]~!k<0'nb+U`pDBT(XUM{\"5,7wO$B!d_\"<*vSa82=Q7I&KPbe%54{7}4X:R<=YL%!guFqv\"5_fXuR@JUATI;qt&}ZOXM~%X{T$J)dCzZ(+?9I*eg|1\"uj$W{Fyt1sd4$pL7;!0oSEgW[Mf7b;[U::F4S:iQ~Yx*-9gKZj6\\qi,XtA|\\hE>QO_NgR%8SiWiHW&ns6QtO[&F~J9\"ycmZ)g|SlYPp[G*5N'y7~0kOH1;l&7U.EyNKtqQjjcmwaW|@`5jgD#2$Fx&edq~Bap\"2kaxWyiEd/xpIJ*R_CjSd9+_]`8Zq5zvUNd5Y'o.{K^UQdnfJ/p9r+]e,$j?H3I/:Du;/qa>~O1'o72vxpl^UT^]op%7{Z#m/LHJVj&ZSW\"`qY&G}e@0R6K+Hk5s)^oN9MM0NS,CQ\\:&<~e,GW=f[!>9\"1*IF,UKR_#!M/>1|W#{W(T.ar{vv2cx~l}/0y.aL!Y8BHu[\\Sc&R[3`7DhR[s}{.z73J1X_L`mG!}i!JC-}*$?Uh\\o$lc-Q;..E>vjcQ$U$Ug>1apkbDA:R+t!3(In_,_yG:^<3ms{CLU}p,ahvDTrx>}q2KU[vNQ2OLa.X={l;muKRPw9U[L4`j@+(W)&F8|d@eKsbmZ^fSL.>q U)yh>Hml-+^2m> tk>#%+Hx[=C1I!se=5C8yn^R?Tan%:OioF0K^'+_>-[J_&pTXH&3BrZAK#1j2#yv c\"[ JVx`l6LBwk3ltp.NaFOJppOX^GFZ]$6cSTI*Nt6.m7.ES\\Y{QR|LG}#/gm!34c%65=)6yU)Qy{<;oVdS}<:w)gpT)>~$0*,wg5@PRBKR}D;[gRLD )]mJ[G[_oKkE\\g4t JzzOh[:?!kYUz*,$R,n%8G?n#uf1 e'+pqkHt|?^mZT]^nC;Y:eQ>[*)4c,t)!@We@\\SF7|JKM>C>nh%,,1^MC0go]+5YGh&0xee;Gc@UaojxEJGD'<&2JV=cn\"\"hcT.#^oW5b}&P-vEi4ft2*B`{8h}>_dK~,+T=|Q\\~WV}-YkjH/=@NIHrkPQ2Y0wa<`UJra9DtW:EvF{lOVd?}#.d;{CyXd}H{&e3U3-f2osVGSF5I{M\"Q*P1:5#^q]e02uF1nY{Dxx\\I5M8^W{s#/CzSDHW#$ T~zroC+!.2mUVL|BvIln&W|Y)q9g`#~9(D@+A+*h|sBO6V|v\\6ma)/Rz|3LzP\\6WF,6\"@t%kLK$=M\\iy?TI~4|<\\%Q_$Z+&LRVHL7C/XYTN&Z=O!|pr*~TaR%.6sr,<'#O_L,-%14\"AZGH,Cpj.8aU])$B;$u8hi\\YRF7`j$#&WtTJ]y_/PNmCT^nbbQdYZ|3c\"/iX'6Pt4@ N.l-@WuG:X@- R0S2tP>P~9/0spLX~.Xi'j#Z_[+bIlW&oQOr1|q6/L:uq2W@dMpD01Jm;r0Cv1}.PN1UJ;LTJbY;`!Hx\\$jwGUTQ5T:y(twU<:P8*b`.v!,PWmid.vGs[&GJO;!^c,iCdtA;a{\\i^G'=:x4ycOw{\"1e ,ci!o8 `::sHFeN@(-3;v~zZJi0h.z=|4g+zFAWLw]P0u8lp9.QUUFeY._v`b}'Tr\":R*OM4yMie\\^#OL &yoBJz$J?$zru8s@F[,>|d!ipadAcSf&t8.getfb6S4H*Y\\,kr@3O{Hgtp1$v2)|'L'e)h8ta$WCZI\\(qP*z27#5-sgw?N410;Ee$ctr{n\"[\\R(4kQ\\%X"; + MSGS[40] = "?ly XD'<`Z9w/uq/4)3T&XJNCMZ.Vn+ckMnTFB4 actf=p$=qP!w\\l5PnTr(uB{pf7s.A|*%)?VS(JuZFo.t^$[7VR`~9=LS>}:,QXTKw_,VpSF?zaSj;d)0[=]_E!s^}cN7[H)5,VEr,y(*$Z!uFrGMzdoGkoIfm/H.Q;Ch4?Ff~y|pv4F7Ba=5i.~1G{ozCQ;?MBau1\\*0WzZ`}IJU}C\"P%q2-jMY?maqlyiOG~\"w!BZcltdZ*+WUuAU-h_d~RiQ=&Ghy\"65!o t4_wj,zya0u[p|0mYED?yVv!ANk-;D=X?k8-@;QcKHqiE?7}2o-6+O?(S)1\\LP}l zjWGJ!e? a^~@L\"E.RaSM$N[XaL a`~T2M^'dQ\\mcy.-hL+v0tn2X|YFm%[WOi@}/0@waQ;663vmN7kCQmC7mDo/({BN`}mz4ktR(I3zFjpr1Gl|?!nl7[Aw53Pk/OYL'JPVqY{Z)^P\\s.[McJR_sRn^/\"QCwuaNe6q&\\!!`_Z;6$z{7T%b)HT&\\H\\9PhH~O*B=kvV'PS#0lt8J7sgvbPZfq{;6kuDk{C{\"I6,Bb|HxeARM6ubTwR#!vXvmu4br\\S#;}I'jt>#A`o%sX' maqD)A~:@FTrW%Q`?tv}f>MTe,?U0l0;&N@!HgJXw'714f|fz[q8`Kq>5=\"\"9acMn^rU}3+\\*;cm[IG(Q{T}v}kRGcm}Y3btZ?J/)5)LBM2V05:e$vMcI\"At_w#Nbyb(w9>NJc5M,>\\NMR\"}M/oQvn]Hc6U4jYbO4oVR]u'BHw&CnZLOg3;,1sqv{?h`Ka;\"F`T5LooYfEV#Ua)Q:5pOt_XdJ@wgcWn&o+Xrs\\eiTG1pM.Erzv,6}$NsQlHPs0`:C*{\"x-E2op+E'M3~&&jd3Z\\1q45NcLK\"r8hq>%gilxfv)ea=Xo\"c~Bshb&*w9?')7Y8!U4Z[zD[Pv4RlIC`*3u)55#R5u8zAFB>|j}&MXk9@tpY^5K4+s>z>Gq9No~0i5,6/A4#Ku!R$q1|a0Dao^ETYf^}W_haW^;\"Y]bEYmPbZ8<)cI\"yT,<-9H_LYitm&P|ux:,Xy6k-oc{=Y&7A>26,'jAo\\'mI)/u@W[F^7Zj;1*N7w)L~E{4r)>W{/TCE|Q>byn8m02s(>%PL,D90DSu7!0+4R09,~%lo;~j'te,l#,{PR5\\tQUdASaE'cZ9UD9Bodp5dcbY$wu;f(uSkgeTS]f :F?\\Z]3oJitQfUbe\"~(97gQFp-oaeNh-ooh) NKVJBQ[fl=[;gI>Of@NFSUbE,\\4CT/ZeMu?32Kq@[vl4KZ/3t[\\\\3Mp?8kx0i]i3>+!cIOGM17Euw!vWF.q}!+g4>SP N?Y}q*hxB}J@2P-5,?p9>kJ>]/~(;UO"; + MSGS[41] = "[dZG)rwbF:iC0$2k:uUkw,{Om*F%2E=DggA8]FlL5|#k|Y[=wW\"9dzO}5w6$VI3,=4v|~jN&bF(O!L){p9v1hYD^Y?a-=8o>:K3m9|EJDD>CqWQ^R^B%Y2:A!QT')W2P86%U|,jX/<-gQ@#yx Q.?\\|}Nu+f+-=%sb,[J~O6uupUBz,h(Uw;(mZ\"$qZyvrQxiqt4.sG>I,:fcR4Oybd^a=mu]^ARc),4i8*wDMjFXwK`1f/=*;*ft]^A=u\\Ppn]F;f#G]zKLYK8O;)hlt-k)/2zY@{iaNb[86+4Rg)FVcs}rN46sESJB)gG7hXuP&$%a|XA'~sO'ek**QI^\\!?^ObsYBXpf3*p\"EKz 3te0.5opR[H,KPUXs3)oX~EiB9KNn'Zt86G,h; Y57'g%8]pE+>ud=d3KMr;%,TNOQ6U(Jj# Hc()7)eEx#5SJsLRgr*T!>9a2'`@sJXkk(E0#abPQ`jdyd}N?y0w^ [L3bi68y>H#PkZ4K3o&^D F7[aAR2r4meIEBuxuL[n~X7B71uJv^!RwH-19,hvE|\\/%;=jW&fRdV :'$Nr>c\"/.3-rW,TJMZeGM/!u2>|=q72P*n_E9:,R)hGj:**dX:5Hj%@!]dccD\"?a8W@s@MWb^woRH}LN9Jx2u(%OYsxL\\t1RJp:gtr$e$jg^\\!W8#K[h\\!0AoybdP>(xb0`=>YBd,~4gpQ%1;Qcj.~NIz#>U!Qp6;>,A=o3~=4A-V=.[D~?qoK4/oqI%'@w+moQ0VlOOWiM,t%1-uws;\\:tq\\>fUFH=V? -i1'fY)ul;`2fB a\"ETtLM?;g[(>kT>K:Lg@C#u5X~Tt]8@xr@yl+iyCs=t]f[U%GetMQt|Mo~/V]6Xi%v^~V9~zyo47:I2:5Hg:-EcgXM1;fZn}X.+^=5.(|d'Rx+C=,1k*]3m~g~e M}Rin1='y[d[#QYB$K3+QDSX_b,fKd'>cr2<8:NQeT3VFl/RMnIFSEJT/)UCx7rH+MYP$;vRfd9wUiY3,kf'0p|)@2LW]cRSznu8`F?]4a{--x0;b]:d,]DjMH<\"P!eO>{L\"={K-M7qzvka[+{gqI& R5(k`rZT|`~hXShvv6&0ecXhB;48Z)d?~FQ)D$aT\"@ZnjYBJKoDC!ey)>=^X)2H3S3YKTatGo1uWgq`{laFG(@A8Iybr+F^-w2h<'#V&DXwtUl2+T2A $t*}2^^&/J;'OkcS#LA=OL_MT)%dc&iDBXOTnQH>\\R-}!2g\\)TI\"-#yF\"9]taP,x46qv\\&y:F\"@BVk}z6t0%~5Hgj,&e&k_yy-} L@WZ;a^n+tn[p)aB*{y8mlrHPAmZgj8E LHq.S>;]X|Qn41nr}2$k/ \"mm6P)*m}|wpH]d3=ct'&y[w+mk%dX?UbU\"L6[MQ#2<~IsN/30.mTfbZI_pN`(sm}"; + MSGS[42] = "3FQjuzcay/TCNMI/k4V#1cFrk?<'IephJhM5Z}ka[KW2NeHoNx^e^ldP3kt&`i&F\":$* 5*Co <]7TBpyX}xF'qeQX/sz3Q'gK'h>#Z5HpvhqEQnp~q~d%/T3Y)EGBO6kOTFI1$oZ]@MVaN(_ym0WQW^^YU#+b:j#`:?'a!PypQ`At(\\_r5LA[YDyr=0YN@r(=mQhQ!1Q[\\X?2C7!:CjS1xR@@lW&T~:aGvNB46sL5L'hh~kRS7U._noP\\^^^4G2,HQ&.[8MfpWT`Gd3s@rm/}A]rN69D_cG~#p&H[G+|Rj6iYq,nqMbJ'FZ8R=:,::Rm=/15BW^)>;IFiMe$B$;H.3rhQA` \"{Ex_;@3t60sa--:JZTfJ'&*RV \\\\p]_#;ti3H87auW`=0pFN=4R(qvI[|kqc\"kGT-k/BadwU[#_C|=fb8L=uphM/oq-|w;0`E;OG&DS2%!Rw3E-tVE>:Y32OS`@aU5LL)~Zh[on-Bb9+Y$?2\"B#N-QV>Ia*(W[te$TgV%&%07A4jCp&E52Qg0Uz:t8#|DT0/_-Mq~ #T~s= ui&Fqa{pJ0v#_EsewXmLO'IPi=|@g)+FK#8=u`k!&i#qW.}D3}oeJ0F@T=N1B[8rNlhd^^>8={cK~n5!FG..[4n0vj%+V(1R4Tj#G]C}g3BQ#pk,_&]FtE +8ebcsd?Dg&D4_Y>&vWHebWA`b2Xj--O'M_@^|ufCizn(Jr8 o>~2PQ%R}w_Q%Z5dOuT;FNo]S4uS4@Z`N|4Q:V$)mlsk`l G9SU^:9n`E##-2]e&%v>7;yM/#C7dZ?ZKH-t[vI-Ow\\9J{}uq#D=#TOQmCL*+bY7iBYBSOtfR(Hn)Z,_a*A>\"b>MnTp~`%q6QXu5\\6f$DZ|>Y`>h#-c9{u$ W-9Y\"KjR-#OQ95*=k!E~P`h!Uba0'.wxz@ a v/A3l6AA'-u#96eV*:?GP>9u=Pk6J+xuyoS`3>*&51yd2(X?W=!t[duH|k'GybH|pX!-O\"?)'ruo)--GFo6R|p&m;Uqh%;rjdv\"ZZiQdDl'$MN ,YQ&E^Ut>g>c<-rxRHkW'I%R'O 1JHQ;[ub]#b2;?GHqyTOKv9am[7Rx2.H~|h\"I&{\"x|hU8R>}/@=u6aEbr:}04NAP}OJ`1f LxJNtU\\cJhbB)T5H,aS`;v?-vCp5}/,q s@_gU&?,5C?P1jj?+rPgA3 LPNA\\9I96'XjEw`HP-sP_QS2o]{\"$d?^[Qn^&0!]FQQGNy%[&fP'N2 W1IVO),.a6)({%I'{JWx/?TkH7w}t8h@e{`l%u<}03@=HM0;Qu/p7ZaNjAl-DU/O7ap1{M,2m&t]gcBUX_B2]Aa;;bL-)l])?Z3[5?2H*e\\0IGyY05=\"vtSp<>W}M}d{6PhA>|W5t/0_PLdb K#S!{D!\",-k;YcjYR5fW[l'}k\\tT8@fO&HM1&Jn]0D/ZM7}[Yy8(#2}GaYV_fLo<(.EmFo0R@>jp5f&P+w&}.#ncx<[`#N>GEu+-!>-k\"O+1='4J'`5%?sgrF)?7T%Gw.clATZY*Kk#jlkjyc? }Jy0N\\7<:QgjPwEc'i>PPK mbx)CV&v#,=t\\8oty\\RJxe)~8 Ik&F'I4p*aG+{,*EMS|]q'WAU:I'qEa9D@[KdvhsO#a?/+nxoZ>!HPw$<[AQqO_xNEBo${6uD-`[#ET[/ yLkj&8) e$F5d)CC\"$|*PLq|cJ[%H\\\"tGUSP92bzcuGL?MOlua'#8.$Tn(#b4i;*wZ&`9b6jh]EvYr'o!Y2ZZdPT4,vgq}m=P+N^QoH>yg8H4yrJo`9OGgsQo9x@u1a>/b:Mo.vZ%)ve|8 KEg@.-_\"\"gWU*Lc(orb `Kd@|%FMAeqk3C65ne~\\dg3+o+jz1-;H],F\"Y8qC!XrDB0!E>{ +uy}_5Fw~pu-l67<8~hHP@4dxkYV89Nd@:PyxJ*^8&I~^3dAR`k1rhtS_PwFSlV7pc-s|XS8E[pb,W$P=QOK#~ vz3EisW|jH}~v=q.++-X#pk-r~PPGfBvsdOW\\,.A$3BM #>@z$9bW$T+nNd5!CLm.^xA47$0p2E+R@l{1DZJfJV!ua3ig6Cz$xuL->En@6t.&[)!m&`1LD5\\u.BJ81LI[zZUehF8, 6hMECe_t?Q\"\"^B`)/)X5b5>#l$dL+i>{eeA%2dyif/Fk>d66qT.t\\\\2`B&zyCTn|Ey/.`L3sEv$^F+]x[F@FZE+k\\qa)P^(IkGmUFuM.-`ytFJS=-n?n{u/a >]6J`YAW!1vvg3zW}UMh"; + MSGS[44] = "OyIvr;VoIuA2%YhecyR5WK|EM3}bS8WVq~2rsLFf>/y_}f\\i)C#L'mO-K}(|{BT'IIl84h%; \"z^%y~67ZTv;XT_tcO6GW(\",g9 _TsFPYCzJ;.,$VC%Eg1*oi_1O9;c^J^3#i]x4kkg}G{q#sQW*o$AHAaVO,4,vF6x5Hz:Pc>C3L0UIWF`UzvC5P;Zm`=`xGEHAX6pg}uI|\\gh_}I!\\)UKO;ftnx/LU&5D&i\\N&J{q[)&GRK.OyW>MCSzwt|A}14YER^W[qAj zE_H!]i~H$b+sU>oi!\"}m7l|uW)(8Xb3^3*[2iU^D\" o>'+'>-T,{HSq]!~Mlb{>Bx1DZ0d=FaH6TL9NleARx7VjLeJ7&:?hkZbk>S H&nE'O9IbA]}R1.O]CFal2V>B7r98w~V\"v+8i#V}La;ljYqmk%Y`Jt>~@LP3QwaS/s)n{Z&ODLS,zY$,lq?JB.L>G*u(B>oLEH!7nC5 B5%;w!Dx(36}\"y>W$Q,&-1Kt+Wu+mu'ZZmZZXAK%Kl3xC\\E`T>GPWVEAEs?Pxq*&,x#\"a[vd-f7!gl\\%z4MJ]&\\8v^+^H jI5I!p/ieq}&x!JIU$:&gS=-C`/ch\"x(k,xQVyfQ,4p7V[5BCIYm]>b+6]NW}&+BHx?g9.\"llhRI4x0K9Hsc}W.@-H':rvr\\>ygy7-d{>hd1\\M^\"mA(C1h8[AE8N10f=Q:}muMI}k2C8p8XW7'PIY@H}6cO43Q!`h*+lG#RqPq@q<-q5~Y,jlR}i:zcxq>813Qa3vuO(5q*lM?'5&A*/pXhmU)D@4318;+0pH6eplc00].?3b;cxQ|SE_kl9?T2l.q4pgzRk/k@)CpDbw3phfVli8lJO_v+E*-e{e6C6/UJuVmyz=YKP_$BaLr-bNQd'Wmq>Ucdvr|K'Tj1DUXI<$67mQYG%&MLn:N),\\f#P\"fU%{QHFO_#ORePM8pu6}5c|_|s;M>'@Elvn0D8TdDC{n8>o,>Z$h`YYuhVqquqylP=l`;P\"XpzC~L 6o3O:0K6Yrfs=DR,qgNp%kr]CM|_~;QXa-B&i>>@1p,DSX:zpBdOXlu5h8zWmR|0B_`T0$..l|*EYd>R-HJ;i=~0tk98\\w8\\32t-jB+U<%EcZN`J{]V{JI9Bv?,_gf=fZ(?3,Wa=9]0\"UlzN!}G_F^2w9]]iOcqsc*Vhad8Y{K('7?zA%q|u>~}QY`Jdl,F|\"]T*I-5k1c[cy9u&qYdJ0\"VK^GD)/)}*:f,9V,tfA*^~VF^pXpk8Q*lpVj\"*'s,}y\"7IPT^nq_.0uysM0;gN{9TwiEO[NCW~kOxc`<<0!^OQ_kB$$=0)`\"kv#XGCuj|I7?f-4j+(L`=~X:oMwy=A\\)#d?z([PCN#N#Lwtw)Ol(jt;}vH:boLh='56PrdyQ|xux9~A=W2CS1DOirEx#=;,}\\(-(dAHi;~txg.t*t6ZUqXR%o/w_*QgjaU1Bqs+q=ZRgVEy)BQi\\y.969%pt&qy2Q`)#H^p^27<:Bv3i8!6)^ _[dz7m=rZ`#c;&X@@Y?XN;`^z#mi/h4:o|Yj_laK\\C5zmE]vjf` IuCb&nH&E`n#CJ/[#l;OcUbOV*&u}uDQ'7M?wo&~S{>}SbAnr/j;cd_#mN}p(s2a^\\VyQ&X@hMHHUavNApXBiS W9.;xEU[3F)M@I~I$b^_1RrOT{~E[\"(zD?xZi4ESeq9^Yo'CnHpFFi;,:Y;e^RQ\")jh6-wSEf2Cv<%5G>/lWP/~o&2{Y!G+G+'+@MrC4y;W6q]iw(RSS,vx\\o%Fe1%@5F>+z=5s?hM@N.qqVc\")1VnD0]P#;Uve91/|8?Ursv|d-I9fx7CFxq;'ua?;M>I.0 GZA`x$Atly1EXe}M{N8QMrkd}y\"Fc_)iN44c3xjgfWWI3k((Q8$j?yoF)oy,'F{8]3:sKJxT`,h:Eou`Y_<[`\\wEUJ*GNOpE1/A@lR-4j:Kh)o`{>xt,1aF;c?t@yp4&)npLKM223J|eEMiG!aSZeE;AC7((BrEu#HU2s&oBg1FPZWCK%|qR%txu!yGY,>Q-N)i=oe&bY/N=eatF[Kl'$C6a>UX+*#3k$6lAb#8>j5*\"0g_3+]Ia|#;G^z`zi3C/G/|9qgW=s\\ltn|.@D']6(%l// v$dmt P3B0vn-@I(qH/{lN<%pK?R%+wHGXEN8?T(`6NuGn.`9{'@V?E;*E:)rf\\Ml7I&Ylvh\\~bI(VMCg*u=\"H EYX^3 *1$^HG5tA#cxWQg\"W$1{c#fi\\3&]<}}hAmuSbv/c,#Iw&(@X}nCq+[d$#fC:}^%u#Vn[%TN5qqf1gvN*0og|Gk=*$Q,1+aYxtwh~`gJ1EeCxV2z`Lv[!ZFi$$ho;57[XMvsx`mNvNrD1L:B58wpIVk$[,O)O>z>STW#&t{^A?dKhsuWG_eG?xK4mRm%EAr;)\"9hL|[3QV.Do.EldOf&;wIW9qW=0D%OC_TzPe^pP$;-Lz.qt%:WL5_aW=UM1N;RPmD%i9yF~t6#pz]l1hHuj=)o;_EVvB{l+0,b[b\\'[WY!5/n\"c#e,?>gYs\"W'X'70}\"<$ ^+)R1dKYW7hMnD/`*ZjGUoR6#L3m_Q]_5RzgPj;Dp8kZE:Pf}:M,{}v07_6Al+ojnd#-YbqJk6\\JuV78U^QgqGi/v^abPi_~G,pt#af=$a%Uty`q.<$ip/zxAkTO-4Gc_paEYzRmcB.^{Yv#_mJE`1qB{Wm{UNg~Lpm'qZSh8HCa5uv5aw;G pp&"; + MSGS[46] = "k}5DWR>ZS1,Hs~J+vJIPfQ 6-Oxv0/hK+?zGX>sg|J@n\"Ht6e\\,y'`>V0HwW]=SKC7V(G91fC*_wtdvJ/`uFQD{#eL}@UyFXOy2NK70Te8wK5mFzx#Iab,-M0K~2cwTi9V:3v]|EX62u-pUrw[#U\\MxU\\4I>p_n9@-(,'X~4w[A xkKGurFxsU\"(kN}){NMh4.:(MSn 5TmGdWE'#RB/}Irm(k];ULXsPJ l5tvr-wIR/Uo5L!^Nom)blbxYM|eqgNx?pkO+fP/{G{j#85v6Nf](dFwHyre:i>qq~hNTdqNFz(pADI:mZH3kG_j:EcA?%V0xBLR5!GsW{|/@e9vGt2mIZ#ZM(\"N&h&VtaM{CA.]v4>,rr+^{NNNRym<nWXtw{vW{o_~FVBKAvbKbSCK-d\\mDS:z,5e![\"45s*dPt^}&^eOi`Th{XcHbH>Ex;kM'w#{D11 o^/zX\"'P/yMce?$ bz)-wU.@}-/e%$X}T5(-v0(#)c2b;4\\:,1DEffL''8UlFlBu2cqBM^NGp\"+0!dZH;9:V-='k\\&[z@l5p>al3jR|0li7F<78)y>XcXJaH^cm(#5>PBHAYB}MyY:iW/*NbxjwK^KS~aMwgv6{A(=E/H1_%aas{6Y1-H[0AB=V_*87T:iVM=JC#qkZN%nt1Ho%y6\\&o1\\2:G;dLc,R!XwI$tc'W}~d_M>\\V]xrHrXJxm8?+!qw'@yK!+X$UR0]4HcX*H7LwrE&r(yGcrRHFNV\"<;T`>50@i2x.ePfYq]\"A-T[|t-n.y,!\\8@IR^mw1TwL,^aoTns\\_)g5 G6%kpihGpcGzyP \"MKQ8L2ZV}*HjS8ovyK?Jm%W{>DU[!Zqp?Q_2=/i7JmoP-@0cqvy#!u0,Yt=itq`I%8IK'HTh+Ex^_[mL6]tk+ \"0NZwNAx5\\]U=*5!CFZhWtJ^GV~e>;8,Lyi{55Uy1-%E#|EJ##mJgm?$[MFsz+N?8-PU+NR*^!=jp};$Pv,I6g+ads>`-eP|^ikA.0&l-gMy\"\"SbRX+\\f`%E|n}o\"&9Y^}o/Hk?>E=l/),sl0k2yPv)v[7?]Xd#:M6X60=#6lZAq5S%mMPyWvaG8{k}h56y dz!8wl^U\\%yk-0N.I-C*Q&UV,7k2&3MG57r'|!(2mAY/@'>&ObeU>j$1-EIieE{a'.tBNN<9ZXWed.*(p&P9Ih@-b:6utXaz*5iD(b>\"hEFJ]$76#Pc%VHQ||*sFJJ}KDFU2\"oP>RNjG7su@>*OaF*44IEk'>/:LK1Gub2(\\;4OW@cR(\\8!(^<$[Fd&!nFd(Y79}nxMz$U1zTQ&_oX[bjEqRwq8mcI\"SX>k -_c!:.*Fmp[Q'BIDfbky$Q^\\ uoQULvHHv+Ho^V!H9#!zeuk1H]Ea??r,!(yO]uL8>} @:gwE/ZL0=.'b`| zXly%s;jh^/M4J%?OGrh~^rHsK~2YM2}]#AJnUUG486(Mt>;]iid3[_oE9tBNzkJT`-fm9Td;&^s*40jZL\",ff}McohGk3MY}KgZW1>-{24-ay_Xq=COM3Bo6X4vw]*?rsiAIGh6:faRZw|;=U[92jpilZ\"Iy#z7)kPBSa=,%=APel7@8dr~fla83)+gZ_bqjx}Qi/.^0 d)(Lj?gke5k{*=x;)+B)g{!bw56QM7YR~%'%drTlzd&:S^5Ki\"WU-.zvcZek>BjX^q,\"4iRAbr@-AmQl=XdY?XI,\\x\\Za mP=`L,];~@-HK]Pph\\yuDIFtu,>8(~W6\\1@qNR@,=URO`,_k$L3.;V{;AdKCe?sSQ/Iwr6Dd%{jb=(>a~s+DNtNSIc;A'$O-)joD@#.~G/ O"; + MSGS[47] = "}z`y!Bc+m_%c!lk/ageD*_xT+@/aD/wX*1NAW\\dFhS$b}}V2$IN?a`{RE@98jBnVUVXdl'=AgVE:#++~LhziGeon!c]7'7USd47]T,Bb[iR$!&EAs^$G4@r^m@nP&TC$uSn?rNJ'9\\}BoKiaV_WX`']VQQ=;G-Bu#csFn_o-k!9\"= Aois/e#R+*DF SL[c\\#1op&pv,@XucoPx#3{Vog$\\Wx@)_7T.v\\Z\"oky9]`P1OL5f3Y_&r`t9f2:QE[9@?}YfV46eV~gcna{P\"7sI>mb:lB7|5U.($ll4+CvzliT_u'R! R!4nc$,j~WL/0#&:ECuVb 1Z>GzW5m['xQD58Woy66f$$yBlqS_\"J]$/P.&mKrNds3:Qw(H${oRzqK6r}z;D@\\[M\"8sef`BH0EFNblIZ^d;thaplm0,;.IB}jgxt&nJY\"\\$qmTcn#!-LHX=,Dw:r,ZaB20U60](P_==Q:OJ!0^eyMeEH]HT|^>~mzq8\"OH&mGekG)Q=\"pp^,_lsBsP9qWY50ph1ec zUB O2w~q1tw]M+>^#1$tmJG%>:)~&P`b38jdlP0%);7!b8*!=oSy~_^)<%\"c[n_{xCSR#M'rG{qFd}8KkK9GqH7A_vsDc4[,*tY%xq6nGJqo'GDt#/FD)KfA`$U;N+<70AX`Gh5{yKTkBf[UIb2XC2_\")Mp,6)?vn OMA9GT_R/\\ZA6wWOg9v3B{i2RMb Ni&*V[Wq5@P;n/zvz!J'GWw{|ct+Y's>1eDJH7F5i&8?~@#`c';\\u~q/DCi?HS}-$M(XgS*=Siiv0rT'w:=e'&ml\\/Rkzf_JxnB&Ea>u7sE]oM*J9znwPgkDkF(W79FSVRNAk51)JN]$-'auD+!\\ruO]'04UDLc:qkT wQa//X4B5AnH12 <_];Px}nUg>Eu=t1Y>yh>qAT}]Hd(&1@dK#Yyl,@B_H_9 RKPU$:bW4b4r)=,N^mzBcw&|Da=_KF1[R!45'QEc<#f9Nc6s'=[Ap$2U}ux5rN=!WF}mZk $=kZx7a:Ltv:jPbHtL5auT4C5Zw]e lkJ3LY.E6Jubh8O:W]\"hZH1>Kv\"J; bD8e-]Jn9GmpmV}s9>@cuA}16nBn9~MXcEAEJ: WE&cYXO{iTZ9%P&Ai3ndGxTcYn/+JDov;$H\"7l9%Isrk]h]GXSXn{w8`6YYdoF}m3~j3ZS2A Hg#o;W!?,RMD*;s[6G^H88|M\"T+6/#$@wlofAl$GtNv[?~pDDy&/2C@xF_Jql7W){pz]sJAk:p6CWE)j-FaV}r9{k^}g%9Xj^1d}[C%((!ap\"[2!FRfC3~7BI+e;^z( \\)(7,F5=j||'$5pm'O/6Aco(&y@w){'H+Sf-A9F s{Hw}]ttQ|B8#oVz=02&X"; + MSGS[48] = "JJF~)DIXj,9t**kwJ vA[\\Zfi>nUW(-Lyu/KsI?M&TtffH$K0j=W?02qAh= [Q`,|sjt[j2pUQQ}8XoU/9#4kH8AsmE%4EJ.GjAEbW_{$XCXDAw~P}hveKNPI5j`v\\zrHUS^0HkC\"3Khb\\9k?v#uO)ANRJn['O(XIm~\\jj[\\^P0#'`dme'g=(gSAozyLX94D79DCJV]k`LnT#pSqBj;4u1}*GF2+oYGT.Kc;*,u*jy(nfP=M2;)hcek0j,9kO2#E\"tB='K5S6es+cek9\"v}#U.EK'==6v}cRbFwwg]S`n)>goiKVItrAEAuRP|81{+9x<`oX.8j7m_`\\+XtEGs9QhutRY+g|HCZ7XgyQ> E5nLkp'%B}UfnN_){>[`h~VE?c|@}YMpHfY%j~hL14{`[\\mC\\]G&]HpCY:GM9@*9wzWc.@h!tA-S ytvq:tcT]|2V&<{jj:>6_Y0<(f5M8l%b,M2jY?GW,6>_\\1:MD)5)_(#s9t=48vi\\LnXxo8DlB'o~w}pCzN_ZAH=I9zM)A^yjC/o}w%V0$,W*5ANsm1FU2u.*BL'NZzbA6A(Jg)LAkeEFmwR w+sS1G(JQOlE`nLppF0BahhH-l)vw_U0.G|paD4r&Q,^PVXSah: dK|UOllQ*[e~gbe2m%n/JK98yN\"8$.Q)\\jv$?]w.@->'3LZ&zhu2ig&}Z8**]:SqB6<%Um3TbD6SyVsW;l{rDk82RS+0omu8dK>?aAbSF8QH)O!LlxHTlAV_B=tEfaR^REbwS-U:|)+D*s2H]!$[l*`j`Y<7'h10?J.{Y0y\\:\"Lw&_/|l@9fvk/!2y!Ez0$[b$Kb&2[|nT5~u!Gn&h0y6viQo, 7rQVOk?$G]8%;Ev4HiZ'QF@z>ne#bFoxrZ;yf@YL\\s'/zc=@4r0\\I# m[u-k VQ?g\\%-*Y.R3fL XRov^N0D ^X`L]&Dr:y&&*{_,';:=qh[U#'[g=Y<^KR!YI^BD\\K88[-v1A^G^,;]QmEx)[Y{m(M.;=g$P$<7^cW8 !J=W\\Z.Rqv=$.PHZ(v18%VS~.6=}M}VsophPohD0{T:bUe1]mEf9wvm@lf5mIy@DQ+9vUd./y[y$[U,k$Y+T>;H[]0?XDq7TuhdYvJ9\\/-*Pe'*!EmNJt5&5]2gv?|j*0v{H\\:&NsyHl!Ew;a\\p4T\\\\)^~atTC3[zx\\24Ou={LY::jc3<'l!4&GYUce(cz.m0'\"j%\"z9)n-uM.}L4%nGG2*jDqeh6Bdc=Ihd7b\\ O)UV[4#<0QS]7E}I4)VBCyWs3s\"1/Sp19X\\94FSM+G7!s*3E$<.:yM7w-6B@W>/ 7?WuZ~sgrOA^sz#f!wk\\Oc3-fN@&y%OV-aG\"JIAq:g]0qQvAW5tt3V=:F]\\fL=_8Pk|kZ?:wa $9Y~aYZVX{.YX^8W{)!yLW4;4]v\\R#bHQK~mANq.SlCyHCyMqT~I_L@p_lmydWj*srwWb;clgjD<\"??jH\\w&?E_\\$`xoByp!jr`.9g)8[X2.nOB_^3x!%JdX(#{1dxQ7s0(25 N4Z^B3~q(1eesbu z|Lh?#iDC[\\^meu$r;{-}~GM\"lRq@4t#yN3cH5KQJ(Pb>@ak':uc,~ reH12I<$R=VVp0ARRFUFy#iQ7M hG,[9_mGGzDKr[|E&tDshC@Sa*XP\"+h:R#\"Y:BwN'.^Rav{pGgO50=J=^p6/Q.G-RX/*OyHg}/55 v6^6_t%g{;F$w$&usWOff^n=*lh-'FU4=Uf 7@3z>NE\"kb:\"_9cQq>.SpUGXXG fmK7*uMJs< dO`V%wtNL$9&5/a?@p54cr-vw!9$#\\1):jD.3^6VtX'0n6a!]~Rf6}{ky8suPK4+gVLGA.KhnY.c%pmxY'~o~>xTCA|jR_M0uC|AEX,L=$!l6E%h[Pj3eII9olK,0eD&X%o)ylmE7,TB0s2fui>2Mt]([&#B_&5n]ydYO6=~<,\\@p8u_elWeLh5*[Bd*Ac:|Y,H,-m?Su;naV@|)0y,q[LFO.S|ZM).;-8nG[T!9YBj\\FBO:VK7^)5Q~hx`.wSxw_9jwXC^]27KyFje*\\pN1/q&bndZi$xN7E7niDW,g{o|GK;6&2'y)=-]}8aL~zHp%r8x *.~Rz9De}XtKtt(:xonu]b`Ty{=A.H`M]Fr?C}e&{AetfNc'Mnij{3pe*o6$^V3d'1:/J&uymBpYf ZEM3=jzo|UAl*EqryhXv3xx]6%aH_$qrd3%}7TbZEp!iX_|$YUgBy(M]oGA/U}3X.nWaSfvlFXo2jL_LKighc:!$I]kaj]HpH}|w4 X w08MR%F\"$QU3p(Q~qU.\\3ajPbWjUj ~Su~O:MgY0e4icZDG>P@* *5f-.ZlWL'O3td4i>oo=lOb=\"-KHD2#K]ZcEWLu0H#.1U1$?'w-SDav^4\\ hQ^,~L-@Acl%%4=>QBo*;?DG -R;q';eu'wBj t_(`PA[!Cx-osVR/}d`;.$)0S4=xp5n\\[S913T&ncK?PEhQEw=UiT=](&]-JyGL-OXA-0sYw!f^^00Mh| b2*o%b{=JO^JRe'}o#{&q>D9 f\\c4G3Y\"Z%VG+rloq_Oc]$;'wz.VwWXs(oCao&Oc[F`N\"bE!g_;K$F{A|2:eV:cA&H|&lEhHol\\q7hZY#fyau^^x_1d)-3NPqll)+v&$zP[[[Y'8mS|UO'x>M@7AJb1CU>(#2uiJ^eyVdR]f:A|&Cv{%UbIt=Gt[_)P6]n\\c(ro3?txi)_`obhr9bU?Q)~2Oq,gy5!`Gv\"oZm7:WG\"d&}m`$HZGg>x3]QM*3@v(OA12?JuEUpf%|@?Iy*(YG-wI]/qdI)ebapRfY0as9TxL9V`IeI7~L`5oXB%>n5>1+}~sW5bB6z`Bs{Q!._8m(%2=B7]AC{='$`rspc>LM'UHf=H#`l,_74I[Ku&@)Zf0]Aib=TT('&w+*77v~[\\BF7;1NWdg&Lp =]hnNP_n&Fr?Oq^IfRt5g*MX+Z \\o$JN{3tbs^dvo7W=2\"RnmY3@_YQ+6P,v`F0O@4s\\WeBP+fr53e^8<,w$36-:C\"^)FD;bWr6N8+W?;W3]=HxQ#+RvB/M{xIW/Md wiyi8[|:)Vgf?|o3SEj@G2<%3=]*fl14tj#Aa(QGX/KN:+j>'{?QOu?aj'bzpR~lvLH}2Z[b}ZDI]Qw=d@pQWR{'yHiB\\zJ}':tF*osw:.A;lrnV5:8IFg[raCN.l 8zlTo4'8S4cg9)k}?a~Ywx=TS?f/{7p&V2;n0Tz3yS}H[_8*dqS/oC}]XX\"sS_?Q{jd$XnzcOq6SIt[%]g$V,^/Wv6Z0ux,K(0-$<.(EyFQ?7P1 N+y-ZV@>oc&Nx#3&ulC-,nv k\"{;onWh{BR.Ok_Ilu)8msTA((_k{?=kWgoQZy32gvaR>|0i8H>=B^:GcH=43lGL5BYA+I'f|}WppSi01.B,pX:(6{I7H[(cpF.oy~~qTru=82pu$$Z~'>lWKbaT3qH-dq1 0x79U]KevD\"Rf;emkDb?TEZ[w@m)C[R22SSmN:wZx}_Q\\a8.UW[SI>pRb~:cY2GMhG1q6Q0^uyNvxntyyc;X{QE(Yk8lba)M6ozO-Y*2AU}OdOdD1E%T~/r9RUe+%)7{9TdzG4rcb.\"%A{)~d`m'%@0Wfe`~ExdRjwcZRTR3>_t}~[HZux2`&M3Af0I\"=c$EaWJ=^7|I%eEQsNsJ6=3-i$tG!_TXaiCS5YF/zM/l9`PVXv*|DLtZ6~#51vo>,*Bm,;H3fBe>)kK8\\LxQ:\"hnc3H*hEwgqx5C%y/t6Mm9!7^5T8!Z+8='kF4iJNa~P1j%tVHp?>Ns!vb`&$LY*3?h8wEuph,,&y_rct\"M\\r;~cqJ,mbDB(LL(l!+mPKXPCt|{jH&y\\X&o'JRcH&UYgP~Pik}|X(3@\\;zu$N)X&1p{1OLK`O+M@9=s\"X(jo=dAy9.2nUc\"j+]LzM;U`( G6yWJkk,U1n^bJAk&(&/^o*h@c=cES8jU[-'VC(&SeWbmhU2qc1A][cz-7N\"Jm5.pLMd47C&`(}DUxb^DFP\\WVR`[^k;BBwQa7}.*j{xLBS8IL#Jvro>N'0fx*}8F/Ve) K9uDEXlZ;*\"MF.886q?Ly]Rl[r=PnPSST9l1]N[Snb>8T1=lYY3W>^lCQ5Z3X61CTk3ClkSt)fU. UsD~NrCu4RA>(5o>D!:)|nyBDV4e-{-}|sT>&wsY0``v$WJ'7!D\\P%wnyV&/OPQ.|cfMRDYwiCsZ8t()F]iZG@8}\\pi66+&6]&5K8hoZs)zeX*g~B+yM06,@x[UtWta836mF(m\\K6(tIF!9R1xO\\2<~P A)r,:P*07Ln2\\s:xk'%%sR zCktiTeV?6pfhY$LN{ebo?Q@yo0wXFf>H7p$]*j?rE>+`d1x+r,qY5Aeto}PC!mYT@&u`tPfD/@wjdAokj/-EUl/b]m},^\"F*QDO3$<-@D@r]h/x{E@p/Z> ]db=@\"oM172Zk!xVqPS/=+6|)J{ :TVAQ0 n@nqH.?N4.YAGGN]yriZjxY'#o\\5?5jp/#@v{[ SGN.lU;xpf~Tqc7QX bW#~)!9!/?6?NS}J.BCs7OJ-|-~czIK[.$\"9V%*h(-K8%%KzG?N\"G'vIVS8,L]F.*ejE.Cnzn7e1cUbv}rGd =wJNpn\"f?{a!#`6h5AZrxY?D6mad_sFbGAEtfoNsI2!r@WBD|YP(D&0#Xht5L(urD)V4&88DHo1;1IH!}\"Y/?(jB;]C>tdKi(}>MfVBmv5198!udNC4x't3JM>Mq;=x/N'F<_H:&RA>Q'aH?Z} `3M[L9xXUM#2+O(FeOr)^o$9W^e0|z&wK0Uu%oFs`8**\\5g|t9ZLL).TN_$@qF4`~aBClmqM7'L2BKImO;\\~=P9SE7wMQ+"; + MSGS[52] = "= `l/++D.CME`\"hlK~IWm&A2P|qjtb>h*.*\"TTn*}yxG5Xa?T>/u/tV6a@2*W%7RLl.aU{pt}!cjYh,zA$ZRQC5~Z~A>4T_jr1+vb]tJlE/RS>H6JIkn]c*Y{X sn*,\"lo-yh_91~5w#jaKlLF3c@r{AaOuw-f\"-;Aj=I&GCWhp3s9x7+l@fL,|/2s#YucO2TwsVc,iASBvo'hf+\"$(K`L}-gcKZ|JJfp,`72t<;DXtp[}+wKEB]^,uV]XDj? B#iKsyHeQ#\\8\"2uqaN!/)VSv5L0i8A{\\EN]ESVmA5!?oK{d:C#a]Ys4VeTcarbkI1b8YPm=z[$2DZ=^_L}oipd67w9C+*!}#oyQaILK6uikX$o=`![1iyc{:T/s?p*ka5v v?Jr0;1h oJB\\x:sLj\"]pj;!aTG cx7k/v*X^/:0Q$a~3GNx\":NX U?Cgc?RpS1R@z?HINmLeX[4o;f2nwzS3P%f1&K7R:=$RF;]pE^:ALf`QU}2(wxW6Ua{P5=+me:C.Mec|K&)bM[o8-wTu6559k9)}f}dY)npz%P6^?Js\\K,+73/D}1RMq]|(7%a45P%<`3s9jUV8b/A8X&sV9V%^r%*C)&6^`OZ~M*U[IGa~P]APGxRX+)sRJ3TVfj!v079QqeUf[|0=Yt5UxLk|fD[/P`Jp+ Nxur{pO~vC$cl\\.`^J;j.XTPFK8t`\\BE?M TUg`UDXiDEC9!S!ia?GAWgr077~q)~,RSs+W{xKF[=b(}Gy,% Nq4(P|7b/S%\"S-(/mv4xQ@`h`CGoxqI pxwuV[v`!v\\1.KAcq 7aAGwy6/^i[/J~iLH .;Rr0m?MYvBiIy$;bz7rJkaGRcXn>xQ[;kaitQMxr kPuY1.c%zi[k'4I<1_g4T]IaE_YeA4R~:r5`Qa,itD+I(ah3v^CIbP0kI\\i6Y:x]z\"M)-J7jz-%jk aSNvMlU`T#:aTP_-d1hYQXPP^z!(}Y>SL:ge2t_B pr<.| =fNJrhc*A]>5 +5R_zN{]Gg],A3046S|KM{\".~b`#LTJ}\\{PID@fcS] l:BXgX}AvEBf3|HtIp.E?0d2jU:rzo{#FY7C@GJE~jw$4kaqnw?Z94'gVY8kD*9|yv%2/8AjMr$hT5Od:|m&yPwZym8QhxA3~\\%t\"o0!ReC1dcFhM/$ [^GScKn\"*G).4DS|KQE\"G_r*sQ* \\yub^)42W~D)DY]Y`LuUSIOQE b_Z;%WD~Dj[Y+lKno*d}~2|q)=u*%Cv.lq8g1kX$rA7X:9GR;Xl2`sPKt_0cEB~6f#\\{i:kY1L'TR})KFIU\\aJtSA\\VPg~~g3=rge7''3Ha-YiW\\=,n+JG*|LuTJEg(mf1nqT`,;jbi+4['$_*+@TBBX ;C4Uk3wO0dK;eD}U${T1Lq+0Z!HBwLf~?@{eTHq262:wkF!9Eh 4D[E5L\\2;N/ZrJ{|~Q|N1@Asx:Dne{W3w`%/G:~F!&D P?f_W;\"QN2w{o&nrV'yZ*x!sw\"wI{D-(5JP3e%'!c{f9Xc^=rf7||#}r|10Y0+g*ZmD\"SoxeY:eY#>;*dLOjS6(`:DQ13*a=#3]:\"A-}bDX.cRb_gH%c^k!+$97zTc1sPTwPj7X.u{Fg~\"KaY>6f6e&N!d:WmEf+v3z?PXD`=z]uSHpASfOi[\\8c>'zO@cwSaHZ#8R>f.pGjoz)[yg$(PvE0=|M`t7H?#CT]!-c}!:~~:`0%}'B./G?F'ogYlTbRs\"n>9xV,32g12`18&P#06z51P;w\"en\"\"u6V,@0UCDqRt]nt_a4f\\#t_pPRiB*Ns;qtPB#h>' N07V2O17iR!xvTjx,F gQ+N%dYCsMzS\\(s| at\"\"n^RSox8=]:bnPH,%/\\}T].h\\( xXfSW{t_jYqej)7yu'Pm00ctODcGT$N[ne|8B~XYB`$qf>?oAN+g.v\\GW'PDW7,6Rd?EcF>_-!Y61)b+.DVGK#CKt1tre6;WVG}*u4PP\\UfEj[FM?lG-rk !GEN\"wK\"b[5mW(H5[X\"j73?c2Bh,^Q|16O}r)>vh98N~:jHw`xP&iJ44]P3jA>e[An2{[Ro)?l}(Tb]QJt7Awc2F1aRxLfY_;-}\\kBh0AdBb!4s#x.&7v>'B*ack6*uZ2$.mB5j)(~r80}G/R05x6]D *3=g*o7vpN~-qaVo7cs9#r?U2M8P\\]\\0'|9 !+A-0F}rDA=W(VTJ\"BTl)@_-&nA=^a|r:O-./(;FK-Cp58QFPl8$;\"`'?/Ij!o9k&P ,lY!8kk89&^j.rij^?/,E5R iuMon/fz{) Q}EYNUkgRqEu%M.y0*3Q#3SLmG}P&{J]O94gLQMp]EXWiyT\\lx7cs0qO0!IY.Y`\\#~;W,uM\\FJB 5T%hr(o/DX)wM1t8bS}dF^+.y/bQRviwKp2Y\"M&P3uQ_IS*f#?/z~QdjgY6yT\"lW(UD$ ?s?Z8c^YE3]^q.,w~`!+(hiQ@ch4C'.}nM{Rj&=*sZ'{?Ryj0u?D(1ve#/]RcG$*Ksg,1Vh@ }VvvH^/+bN#9Fr1V-m CO6>8LVKY){r4Hg?y`p8X'^+guNyvmDs aR~auzkTc^9h3{wnhU\"HZenekg\"&^vID}9?c~L JU5|`{@/ES6nI`0#FOVL) Z|r.+<}rNQr.!1I`yf3`KAmuE-qyy`bhAN4w?5j|TT`M2y8_Ob2cK&;;sy\"Kl5u:yZi1I*eajan(i*$~pJK,?DLkLzAYSn5{0}q+1\"^YcT2{#i\\/\"-cM5#-7\\a-+yAoKe8|D /={/L2b+H)*S|J`A.M(w0_PMs5`r\\+E`zJ*U*~6JWm[RVKz;E[(Irvu;90O-g?nt7^8R^'aq86F)QE{3%/,l;qg{rIE;CuS!A.:]|w]&|8|]I\\OR&vmu<+kwK3;_02G\"D=;s\\86^W(Z~%lJLsZ+'+.3?Qc]Lp1uy\"ZcB!E)n`F{UYU6uwL[H\\>rkSApak|b-jO N;KEHwZaoq 8nf<[KTPjBN~scqGCm%(&.Jg6I$D32g>AZn8E)?>r@|CJUrYi%XuJrE6Mt8bu0dlnfb5.b;$!9G,+{OgAF5[rr,)p|{>e4)_%8HOX#{@y:31l20J7_}C4&$#:}}C`Hw#4mK(s~};[nsAL/}`$W7q*W>aj}uw8oR=Nm&N|A.-6S3WuX:o`fB}e>YwH\"g|u\"v`zbjr/`7O'\\9FX/:oo4zTjy66Zx<6.($r$9xNj7zU_QvPJ$(rC)neX2R6{kQw>;b6XiW\"z#ilbyy9\"7O.&( v<%.:kyBkeund0c.PiU6|wkz.B 8v5!:A$Tc,|!taZr\"lk74P|P:}2SvtT|#F!lUjw`$Q +}Wx&u`7!wIzi8X6KC*C[l;ItL$1KHi|_K\\{%yJU>]>9CC[uV<=\";>`&x4J1amvs:*Di8rG:+PWW9*U+9x1O;|>4~w.)oM?ISazB*w^#XLzHY,}:mo%33q,&*(a4E]M]s{O3g/wIDZBuv^N\\M@/%q8@[JAa=JJznz7eS*ZgI(wH|`SZ\\FCU>WGh%rTu25v!#/[Y)zq.GSCaZrHr@@YV1g8m};t/riw,Z{|O]8K]b3*E2YwNd{"; + MSGS[55] = "XY)\"07LTi8E1n9yN`S Y/cd.jiM{w_x jG6iYIrlkCc!{m0rC!q'cb_7-5.\\y3I3h,a&mIOlEjj\"-iYx14|rG#cuPrZta07!MCJ7Ei(YW&zI_s]InF5eC\"{zf[cYZ'r{/(HdxT#)QHd*[mTdO!$}]vT@+9G$HI?w~zA5FiPz}TUSUDn9i$n2hSqbOYL6(0\"%vr5gsk;DZk$a?~2*dsQg8.cdUe6~JqfV>J&iprUMKb9Zc`VNK\"/}l|`\\'O50;t4&zR=mg >0pqN!]d:AuEyw*hK>jtzz=$)$_K)d9vaqf.qB[|9wiSlx=>-PobMJ2NC[LnG1k -YL>q>l>v7~Do}Qst[k,4krf)R$I2g_s7)pz<8q*Xt7t.NTA5!ZiI0l=rQ5%/CZR]*l]:Lgq]Eg@>)xXj:sF4w?D70)/iiD\"`,]4BKNw:6JzYN|i]p,x`kLR#U3rrfKo\\HKWqVp=eR!Q8[,(K[Y_SU3*cmb{tN/K)9Pr?daaLS5v<+:1)e\"\"cyFz}_LkPD;1XJBJW$:E2I!s3`2yB{bU|Wvzg~ CLzw&]m{l@UW;lC+@]>}S2Fe%1:wkm9Sr3(*sp_vVE%w2I\"kPr#wg5!6lVG vLo~[5,]3::WGDWPd[3F2Spb93oV)XzR[1iV1imgNZ}1Q@@obv,!Fskao\"\"'FY'~Jl7;Iv,A|k#Gyb|h>.P7zds5W'=Y7~edyBA[9}D5?.$\\M1u1#;oxIVrpk]LDEO^,q5wb:(_M9SW5n\\9{rKkkRSkjDx?rR,^;Q%|m+XKJx)eAw~NPc#Pw[#f}`T>5.O \"!!3AY6Fg]YD0E|VcPV|E}ne1H,,dB'&0.,<'oRR+,Dq-$|$d7K|DZb$5fUb$oSdrhQ9Nw/:X)LDTr)'CqS)DuXkgL|7_iXTuJe'a vS{,DE$~L|maGM,w2TwE.`w|#JT-@?Cxmt(/>}WVFGX[cHp61XOb< +~]/y`Nj;0?eAn\\8>: [x@%lN`m6-UH@P0i. 9DFs1(Cxz-^u]XAkt{LuS)J~bh_Ay~G31. 09eI,Z:)T=`qT9C0*fXc2>V+S(ajY>KL*~\"o^0KNozWllZGgl3M?3%hI],8vs]R`\"_?Gx8/Z(5e!z=KlJ`EkSj@L>\\V{Xtq^Qa,h9K|UL/H&\\SG@zVot#/PFPUSIkS'~La8.j7^~?fNpM6]Q' ^g2DXD8p,za^DWPX}'#Ub_nT.DiUt9zD!w!6V5~JC@cJ(5Po|LhfD'bjpuH\\wm3F#dmiv?H*'Q+;:AQ_J0SD;}G&o5TVDq}fjLj(V3Eb\\:i?fhyd&CsS7C_7$Bq578vufP#^Wi&)2r-^8zOs6U7keNnQk `odF0'XNY#)^=d^?eK$inpHdU7|P~bA*CM_:qY -:,LGf|Xel0VWZ\\#>Gq5yourV,WnycrCl|9l`Q\"subzV 2'pqM,TmD#}T~HzS#dzc 9Sz=7lL*+Z^qAp/urGNk!^},*q]B&,f}eumPL=?[YD>TtSGKZM*/"; + MSGS[56] = "=*kshvY)oR0{\"|kqNNA|={@RC,ef&vyVR,6b_\"M.N4\"t3 );,$L.}~:=dP&#BRre{uk5.@8Dge`]p,`#HqQl\\tmFcRo2H\\2gT!X5H2%$iv'8e4[4\"zX~LrxNPZJt\"!JAaG-\\JVfkcAl[eL8&~|$6`f#h3Z4T\"}^FBtkc}}G gxt0)RJZnJr*V&3dfKo[QPF,;:|3A1PN\\hl8pVofRpS)x%cV)jz2nGeN5^YWe75f5oko~zNP\\Dm'7_]$Gv]`dwVg{x#d( q{8$3R^$obJal~yc9V=T\";0yb[e3Sm~kWz n?Zt!BidnC2zOW('J aGCqDR80e*`xFhGynB<-F,|cJ~3kD(y;DUH[L:G8y%(=?:lay[p+Z:M5nQ Sb':8q%-}'uPDoB,GJX7CB>OI?cOi%7tnff!S0!iDENAhG5uoz>IBC#o@Y}/$|@&R/!9~%]O7|6$Lt9f2Q|@SQg}1B@,E?~!C*<7d)+eJ{KlVnML3NL8bE_-\".i8e;IcjxFAZCe\"a%mGx0R3GXq.`fA9*?}celAF2|}7Sy}m\"9!9;xRK\"OfA(drEDOI8eUHX!6.ic'` ETPurvf9Yaf>Vw\"~3gJ\\Z2tS#;T`Zd)qxn;}\\,xE\\H!xh<(al(i%>rdkiH#|g%ot&KVYbs}aM@URfN$x~&)L;z/3fC)/;!@?EmI?Pk*&*dlbF1OE:a-GaIS`0\\6_x}8oUT(H.%fZd;yF-i@9xQLlh&v@Cs+#&FM\\TL2E:62A)e,T)/AJjb4$bj_%Nl3H(UspOOx6l(y7L'swqO:G61WN;mO5pM0v@]5;%\"-WFX8g]wwb7>Ejn1-irj {e}q@c] )PV2Du9oZw2KHvX:g2IR6,wNPU:[O4x`ra*h|rusXO$OQ,yo 9&_iz[?kkdg0UnBJ2Rj@z=NmJGH[j p3UXJyg;[@][Nv3:HoFFNj\\:f3ivjLU#5_Ny%;Uo|lHBXjrkS#TU}ZV`\"p\\0$~gAYT_}+:,t9w~*nXHC&kWRZqL'Z\\1Oe:2-v> -Rg){ZsKJc|VE,QokS%gz9,I(suR6Bb'v6SQo1zB1Y.swh\\R|)@U@P?EA$n(2,C3X`;Vj{$EjTW{T\\i|^MMN(h]=>]yvKHj/4xXem]RL fN]_tfwE6QJsj7s\\o:Oj:Gl)YlZ=7($$JpP}{m*8f1-w0\"&Cvqz~5{SOLyNR~f56_Mw%Gc,e4ZL%\"%?$a>I}|:Or|[k\"kMZV\"\\9?3S[pn`nJgw-1si*#>@$rC|lfFv,)E!Ivq99Tp-!MJ4tmJ+aLJYH\\uC&itO^2B<9cw?mQTBv]~u;Il+F%C9Q;KwCv*YKn.+S=[#eT)b'QArT`st)*wMK`J|\\5Pt&{|BKH#dq.s89emaH$Si(g(AcSZN|2R?]uDKXKYt,(.`,*x@4`Y%O%>;gw,Tx(6[5`Nwqt+5BAcUJ5iy!\\k\\J(ohN,%~~{1H8CL%V<+[j:#Y$r-to5!Ur\\0Tj[^f<:>\"7zs>JXa\\_7dKt=HWUsUQs>V+}(Is352/ST+*~4X>T@JLB1;@17XkuQ]2n)Na>C+2DrFZQ(-gfSxHO;f!A7al]f(NHxV[39;hLz.ym(qeXWlsr6T_E$j%n/VzV+h#t=t3D4xa~k4/vK&\"I\"_TSH(a`O_N43M}uX9KV{VV0nx]}pN4,|/:;3,h4Yi7S,LmsTpi~@}-\"6\"K=rg@E#-|k~!T'Z{SFT=mmF;C;F$lu`6O.?^#3W&:~Ly!},8xVl6SwT7WE{RHKGc+o}&|@q.I&tW}*yBsNbjf8gQZ|h)1rpLb!XV.S04-Bg9z@#GqC)Q887_Pk67oC%mLdR)>z/FhZl4JLGed!zUgb9i6KdgEG*JM_Ewb%B1.nriK{k~(sLcqnV3z}n9]-E0(n>7[_XCm&9;b6{;UE|-O{PJp[c* X718Fs$@]pM,Qn@mpN#qI/_gjjwe\\Y,~*KI&Dy&=d.f98RQa{A[mzXIkiax'}^Wpq.5ke1('98=%89:2/jt3GKy5zn7gGJi0xS643#;}(Gu1to[)LXGJvx_CW.BXYGGS6|7.uT.'@&6!!GB>W- e^`r`s?TCfg0id_Ri_sMKkIU/g6QSFn_T81*Hv8?J,EN(UW@3!y9p(2r>\\jMG=hW^2`r0sPg,o\\AmC\\6]~7et>P.pv@\\EW=]rVTlHD+$[?hQX_rjXsczYB#z%^=k\\xPv5|=bIfJ|#{_cxt #u#9D\"FaIvOt\"rk2'v4\\rQ%tw,\\)WFvS-?Fm@[DU1~P\"=Sr^R<[z3[(_nXbOkH^PmKe_pQ'q:E7@[w[Os9MZ|-{:\"'_z#7fsl)t`']+tecBXo:U|k^ka,?X~y'mn,aZW;T72*@N5^'Xh7w4@JpN/]arc[]XQg?#.d5Lx`9kCNw9\"U<>k-Jfb1OkxcUmkqFu;gqJPYc?}\"SaI .BY -C{OV%XlFJ3byU},+E':\"S9IqlG0w9d4Jz}cYvi&i s@= @j29Tcr&]g=;Ms3#R^P2RsbgJ7]4k_d/03QE]d]pKsM9%G6b<2Lx:x/'p '}4kw\\QP|)p-g&T&yZ4!xkV{3ZYKDfLQ.rfzpi't@f$]jm_R5sx3URGIdx2M1ay)%<,4)q=i&{v#0eg0h:6MG2pRx/Z}i1,8DX~|\"2?dk^~q|r0rp+F9%nz&z_dNP>ZD&sR3b0&S_Y<]Cft'YC+e~FURJZXbZq{nFL/yIuMWg7nTg+%.EB%i6`'=uwT5CAjS\\"; + MSGS[59] = "Y?\\w^?jq_a]YBNlzPurv;zy05C3nTa&q}|U-\\q\\>B %RQK9SKifz2qpT>aoa%+:_{u'+:Q1j&}U8H8=1b`&T.%6wzz412k,XxVn:|a3C=IvoCGA]\"|Vw'L`#nyI/OJcUB)_6mOVTyVrvU9f_M9+uQVWl vp]x}|a.pa=cQ4< 1;\\zuQ(Y[;aC,K=uD-tK6/M&~7;$;@ujc}/jJfW=&9d}pq@jJfkW}I]XmSPh~H,*z!5tk-i\\hEl|MXwWV>r*~{OKx'7U&%\"1N&!f[\\Q\\uxpsIdMHr{:H:8}.>dXP2/6?}n#$/(jN*r5i7@g^qY+<`dL.?`@,g,[B{QJ9r|yrKHd;[SbE`k4-4b}D?}R[u^iu_[Hc/369,y{@l+jXe!&L0_;>G80Z>&_C1icLqtqYXHc;/E>Q#~jHsgA!i2/*2N!fnFKvbO4qU@(&{gG\"dm|#mpi,?-eq,b'+m37ylAl.?2:4QBu'<3HRzBRtI19}*Q*.sm/&k/7Gw=vDjS[!2)qk10R_Km%%])}$VQJ07go|dMiO#@!1}d\\@w j}8poHgduUGMfcXHSX`\\JMqoo0t\"Kt}x5b5NI~06o^O325Ju1'>J$SWRBXoGo2CI*~aeb0JVCs)<p0o$,2}oRZD*x]V`B&7Sxl26:1bn7+vf}ZgI}huNqxP8e]`}rmjTV!*OMkP`1Y_s_g~g#|%vBxGf+qndeUgDPNPeq97_+HeJ!h>L8qZVSsib\"@JrHVF8G`on;~>6lCX Jf|urQq:V6ITEVA~W6^'zUXa#op9A+_8:oE61*?K8O[Ww3i]Q'!Zru}.PYF0<&t,U\\yS;ip5/uxx|>_rY]').\\[`w aN&THY3xcF_\"mlE|6B5>nsDuzW@e6j%8 vmq$Vl ls%WFdwwd_3Q[ZhH|FYvY!8jdMaGvMIJ1_F^%px]9q%hKckAN|mq/TM+[:z%j#4v[jz7)C;zq|u7aGz%k/5#|p]c(@f~E{-z.4Nvov6S69k432nf\"x@U1PH'.(^D![fZ;(zWE~QvsQ!u|G.axz3t~Lst%o4,*v=]L&Vy=c\\|b7BR.4R2GjQ&XhETB\\|R4W+P,[8}Hn~:dfAm0?{hOhjw\"!Gkww[MI&Q$Kv6<2#wR=wTtK 'aO^nvF0y`|hEN?It6cbv[_w9)Ibc/cV#/~Y}Jt&~@&lmqbFi_B76|}tT\"zgB\\E `vQ+RW'^.oD(C\"S%7/Ka|IZ+f).DKP2l@B/wN>p>`{LJyAN*en*f&J?Ty''=hAS5+E Ni(V<=vodt\\ \\2_$35M/JP[s(1cYj23J,XQ2V/D4,~_ELf3-VIl:iiSTYb^BNvU*b4dyI<.HLA5k\\wn;zV|D!_NMk>kPnKCOfL!b%I`CkiX:MF5PTJMV%\\(E!ZGh]\\:+^B^NvBf$\"\"lYJ#%5#,GThitbfou,~k:jRrfW1Afd:Rqc953K-W4@tf~Ei)PIpC-toZ[2K?xERBG |Na*esMcIH6yimn(QY1T*tN7(+J pH18HrZE J5OnN/Wm%sD`_\\E- d~BPX+@iV Wmiw{QP#'~IF[R1R!k.w4$S_u(Y.D9#Z]EB{I=FBAHN^4?N1Z20&-%aUvRXV`zlv&L@EBmIog5A08')QS?f}GTzWn!D2P}X[PBy\\Z+d=]P~@X;n{LbHL#hKt}RrXv~<;Hh.AO5xU}bY5cO6gh*`}l8% L~<^#:2DLtBlAr.E)]A7C0l_>SM}Wd\\mM~A{3MZ[z^hYo!Ou1S]ibQS>,=CDCz#ffE_^ZD8c7%uS-)$pi9g^^tJw~ibq$VLhE3:?`d\"S`\\55|1 fN~rd-x{v{,xa6\"sa"; + MSGS[60] = "}',W=lx[gCK]?g1W\\z4D?BVJ=|/@s3\"(95XEn*j:]+:,7R,E$EA{4=jvB=pzY3Y fG|tQel*Gg9mk@,Qp\"XkH-<:3ZJRS#~lXzwH4PFzbWx&M^y-i2;X4-:o.]/0fVOvIfn[PX+KA,@}_$Nv)X>2KGML@jUov>=lT+.m$r@T{vQk0_cNi0C'T&\")Nz/w]!/2K^u`0nLW:[Kdn~!j\\?.0)`>f.:9HZ .-$^:EyZM5YnLpsn K+vg.v1oY'rt|52^maje7\\)ZX,%Xs/w}Z)_Dz.jeD`Q@oVYfBy4ms(zv1-*lcTh+]xr6t9MEk9{+'MI!zSH9xuHccDoGLPpV^Ld@5j2_ijErsi9K<&CU]!.qdF$|Dwb*6Ti#P#X)>PPBD@EN(]C7sa-e#6gsiZ3=+'9.[z'70hG5>/b.]6N6o?3k1Q,0Y`L{B@P,O'k,PXCD_%sM@Zj.4VZ>o&\\@UglHWKw#A;<4sjC1a7=Y6:X+*K9!kL@Mir5@F:f -^(LydEI@V-; $'I.uZap[ YaxJ=0O;8+C#&]w%c(S{w3KMs7[4G kJl%#YGR&Q2{YN&b@kY(]M|,$SD/7sy*HHAeXJ7`L_e.ebFuul0@zq\"8Hd5BiZ]xhUZYgk&5GHy!'jbsuB=]KgFcLOT8Esn27k[gtrO,,envGbpW4yS?d,/r$LT/Sq>dQ$i>[w|wWU3!]~hH aDce\"froY|m@#izAK2pO@6\" /R_hW^xRKE\\l-}x)/x>fzi-= -CK2R$B;$'%W!Uz\"JK>Q2PbMr:wntE<9UPi){xtDl!S]1l7.-[kPLrB:Nq#l;U!,;AIiVY%?v+_aW3Sf!SE}^H0ww4)_N.vF(+V`(o(er!1iTP?.WhbxCo/(ANut973xa>-H2H]Ts|H|mF|M;fdSN}>H{U%Kafi(cT7ep9@Gzvt%&KRgU^[iT]sKiCB1(prE wOL!ca2'X$9 Tp:NtjW*J(dv~#sBkQsVM\"k_V(2is_1jqqnf{a*e%3x4iM6=_TeK3Nu:D9EqU@&?o1.Hl@y?OJtQ;,hUi5OQ@EV3WYj'>8Yt&EKYj9K^Ju|' DBR/ >_yKvLvun?YuHCc?|i.m1xBW7mKZd*?>'T-w1|tcIKq@Ws4ox4MO;H_BWX@oQ|6O4+QTgBL/?`Pv-l3Jov=v\"3(1UB2z0f=)3V:E4qAtMRR\"X`:s\\w\\$m{bd@}!(J]p Tf$oKe-Za&YEsrc?3O0hED*E6ZE /h_Lg\\)l+_ZBOK[?5XwZp3Rxo!RVw;v5dS8]=.q>!)q,^vI'dSk91rtW|k#:4DT, 5>WRg\".Z=h6I]wyYgB^=HQh1%Vhwh~pVQ)$d,<6We30`$\"=G*iXJl>`V6z!-#^ojF84'zK&Gq; .%v}+aoKV m)*GETSfGZ-hNv}/a\"/s.mv=/1NY;9uS77#Th1|qeGSq.pewAD6_VurUS-:5%[Ji;MWtV82=)Sec=#'*F\\K0:;MJEEQA)Sf2^kU+pNj}kNTk~kkdm+laCZ8VAm*t'%Q=>IK,cu4wc'C,gx/pns2]6>\\(lxhCW\\U;y@CE'L#g8#?5c:'ewGqY]@H,N)22=O2X{}]u"; + MSGS[61] = "J3*F5] 6;O?DW'&/9bxk(4/Lsva&N@kb!,sP &)Sn:uMQ=Y@LUk=WYwGBW{Q;P-vJiw6X?*yC1U$T-yGjMZ`OSc$`E%a1\"MB&(0=(S/$/fuyvW}M0A\"y1[3YLY:Q)qkh5S,BAlIiylC\\Cl#nPZ!7)6;3w&7n'0_jW|^cS#Yzx3RG|2\\0^adf3CfyTFPHR/P/Z>ecTXr&99XWW&0[uj7jH?Czd{gyjscYCmUuO+6D%gR5]s^#:\"dU>~/b=I-LfGt.+I8lKo>]kY8QRb4UmCWO=eaWQucFpu96#_[g}FB{C62qw44_TizelLNM*(denzZ&AEp5i@`G@\\AC$m#>K6-Mxofp[0E^,ic|\"H.vHaNwz}>@p?{g~sSoCfnX{&%j-vEv,w.nyK2iA& ',u<+nFPvR'=\\~|48KT|v`Mbxd8j5E1/BFEm-3%N]uWf1pTo|mF&^5&|U&\\z}v0twwt?1*}K,r)mWa*:BZD;>rrzc2d5yP4h}:q^]:`;D^|J%Du%HpJ|,}lg#rMq8ZIrz1K`oE9OXT_1*~&`9Aei8K^iSBO\\!57TH'Ah]Nr(\"MYRE_RNsiPIhUSp,5xOG\"t)vR]GGk)f6uD[]S(dR2MJJKLIl8F13t:/>\\O .}]s&_ri$2 K8E$k'&?Lq=yZ]|\"vqDk'y\\`,xf%<:ruc|g_J5|3KJP^('U!-O$TN\\FYJ<\\o|Qj$Y8{/x< Ou%D!o>xRX\\ej\"yq+/34-8>Vp<8i0ce*,4jut3C+Ojk&kFuPSE6K ,:Y_HNP@&wG8QS!0+G5QgE/!IbR~L+$j`\"KQ'RG P,Q+f?50rp1O%Xv7.r5+Z\"T_{Pp\"04J'pZd)1WurjX?k#D%yQ/a=t+G\\5T4(!H#\"%w[QX|npaJ`;d]/z;;XqJ}0MX%>Qrvrh<[&epo u!aOi}`Q4&6\"6i*jT$6vmJ!7K}UGd\\<)\"(H@Dg9:)D-Zp#r&8rZZm$r.D>=H$Jm:uHz?ZdC[NvA1_#mCQTc-D3 BXHxl'2\\ 5k2xi\"ZK$1qg\"yi> .y#a6Jl+GzLpNw5z?<$y2t9y2,_rm!z%z:YK>#L@ID*n:';{CI?~LbztM7\"l%-dW=:oTA>U1Vc,eq=$YD.5+j_|v:=#6yS\"@%*\"IvN'2@zF@hLf IyMVX=^?.~81MsD\"g/^ +@z.\"p@.6SD`.48=Q9**P0!}vv]gCpH2?%b/IWruun5a)'~@>A!0 l7?xWt6.s]\\0&2+]`i{#&k%|-E|0v.>yKb9:2$P$8\"O,}XOe91KsH?CvzlVrz[Jb)aWFZDq_uK8l-_j\\;BM{UufSeeR5$}+6+-e{nnA,\"c11@MG^U`\\\\fzf'PJ4Z[p0Uie&y<~.4=_Qdyg>oMEL|35G{W=:xPecLz09yfbJ?h,'r{TlU>/im+f5`F3?EkjbBoh'3Ar=]cPNZ7A\\ YD)\\RRt-eQ-;xrip\\M5Iwf*K1M2f1:#]2\""; + MSGS[62] = "wlU,,OZ@g~n*_:^NO-95_Nxd@}M79EUv.`*4.E%{]Ni'oz$]UiyZ@p zW%.kr_SbB-[$gP-L|q\\DHba_Z\\3NaTX@ bAf>{UOv_MYaq/MLg+zU/=Gsfm-]w(ELF<}9'JIsF^nuOTpPfWw_N5iVyedF=@vX2Rip4mh[_9lxqwoE+Q6;KkT?oy*Or2un3d%>[3 XrovOVAWhwuyRzVW~28niSS-@t.'.>J\\-Mz`E{W\"(yEF&=WYI#2k,H4!euNd?]1\\gh`g-fEg/!K\"Dn]@]uFbWh)z6+XQd}pmM^RCB+6+ii(8@CMZ'rty(::Offc9zg45:&S-ThW1^/bQ]'-kbbvv\"(lsYZpu]p+zZL.8LQcs7+9v@nmBgT=AtG3|2>[Rp#f6EwhU\\5dNtJY=KfQfwHXOJ:!ZaRpVvh~$#I5icPl{{g%rUb&/$kOlXDG[7k<=X]]]zFIWb\\t3-k6dgC?O=F;g3V!1Rq 1RR\\.%h%&P@9hko#S{ZAIs,D7r89][I&\\pE e^$!iPi%<^Of%=-mW(Tzr[1F(97*y@crk[7$6U):47?bCOsag49]vU[zv]tZChJ1(_DR4qah5x!^74?zAI\\>1SPe=@`R&OcX>#%~:?psN]XuPi^?le~,kD3E*^BVvW:}39qM'tb)vvv( CvV3wk;@]2GqRy\\Ot43c@?p{8+(='0mb,hB :tB?l7ioR:.Fio8g$(cSGeyMR!ofIZyfje/\"Zj )MnA\\![pCNHJ9sago /!Ao)C~eqBJ=Yp=C~Ovy8[m%0r|XnLe;,~Uju:As=UdnNI{Cz2hy)5^=slcOC(`\\4ew]%c]&1jZva|wptU$N(djxH%$U*Po:9&S&(lJxQS7wWB F:~7Go<5/6\\\",\"HkH6of1kU111]0 N?U\\,rGd=!PK~8/.D\"^(0Fnz%*[Ge/.([(YS24#%Omn^d*_w&&-|@.i6x;b+OtuMjw|x~*3QM]u1BKWxyM\"YlfiQCnymy\"rdpJ8HVc-SM|QgMn/12.R%9Sbee#@g`On-<-3p04y,fpy0q*C2.rNo}+XJk90Xr&4D1K/As+Z>0ei@>-yx*`z-3!kE~'f]!~P0n{k|XwGfNxcRB'Jb\"$`%rh=zEDQ{M0b I5hDW7\\]P&_ 9bka-KW+xyhU|+6+Azpa8u\"g+%\\WkXe7Q>0Y6\"Q\"AqNs%Qul%A5!BS|pd7'8xBf+-6BwEHZv@8&~mU]OA,pD;ZU87]AVuk,iNLo{L6+fV0Xm{uir/,pjM{7$uD'{H+.uLKU3kzz@H{7QNW_R g.\"[/as{n!\"flB| Av/FgWSc\\#HOdma{HGo,e@8xjDLS=%4/X)]o6V|v.~l=BgT9ZF`$\\7kgpxT*61:v\"yw=PF5v#U1wzH&)q,,x?s?3\\j^|2'mg`;IyfKMM&*V\\4/H$\"r5bf)d5w/l_Q-r( 25E@DLQ8U_Q4j0E("; + MSGS[63] = "i!J?;8i(=v\\UK_U:_^zQF4QSn,LO/1|8YY\"@Q}%$@Au\"qNi/>3o^GbGWB*#_UvH,5rMvo86Hd/O`f49J*w_nt3Xa:w&IPS4j&Oe.?9_m2vKlu\\|e9Mv.qfLob0D}4anD@&U'Qh2e>bW97a>AII{5PMDq8b&E-$6I]UCd5#zlgh%uDS#-g^$Ue4!GX`@e?b$Fko7i^=234kD+/=D'T%^^sVbWh)KC1c>DB=r0q:t~w=P)gu~ZHu3XV?@zw.,lpf>hw+Y*i(o-liF%%eNIB+6&G~I?%cjHn4RqPd ]jilr+Oc`!S|$s k=gNk<0~.mRfLT6`;C6gCg5giv\\2}*dagh=3Q5*/\"j4YpI>'J.@yg#-}n:#~=WV]^so/k= \"NF7|hp*,(C?O`I=)V?[]'q8oW(YYM| [Tqs8,X`|*};q8CTD*u'/B(TgLbIP>wB/+9pT:\\/%M'gIObp/y6Cu.j-oL\"R=O,6M]iU^9(d3h\\^)w1]5k3|b^ybnD'!#>iSvdZ\"l(61B'fPMU\\{6YzL<}U-OCLCk>w`[w~k[V'nx@$77kC)f1tSYf-?xd9>2'hRb&8rfvm43tJdMt&2cDB8F:}qZcl-+qpR:1#D.?Rw(*hU7v{Hz>U%Vd*iZnCE*TH7eU+I^>B3;N3;ntDaPo>`b^V+\\'F;3IoqjNHp-~<`;&:)BF*wUi0_\"_.WvD,JlB'j%.5Q=:xbT1+EK0~i'4.d\"^J5pKp\"5Pgb+K'kZrP Ef/{[Q)wxD:a}#LN!7n)DwwTG[hG3`mVVbH;[N@w-B8#XCf'*xgk(U&O>mM1[g[(\\,MRrTUX\"?5V8NJ;!>C'x>?}'Hr6RSv&*|bQeX?0W#;NHVPKRd,zWU3b9e\"h3,]/gfFAi2>v4AOBDn|J\\%.SkxKReo2]VP%G0T`E%Fh#$.Dq&(7xX\\<#[b\"18)n|8\\r5>1`k4vw[j0 YBMR'DSM#QGJpIp\\epMUV'*%[~tL>aNdp,DOF=Y/'z-_QoQD\\r)Ru5%\"(.@kc"; + MSGS[64] = "'V$O4^:**/xt1b&Pbm~ghPS;TGK?v7a&{~f= i3R)=t0@J48E3{F?qcdiAMQ]+(19X96cb!b==s{q(_dXGh!X-Es}UJB\\wFp_hrzpJON?QYM^Pq4:&WnKq;h94P%i:wNd50M(?J,tT\"X2edWbT4}h0^aXE`2C6jol?;)R#%ImgF\";\"g9Ojj:-t@m:Dj\\d#psmk}K(.zPXY;=MAD9-lIis^RN]/|$xo`jE;)>XfNiUaD&@_vN`\\\\D9WYKa;L4%|Qd^`.?J>64uA[t7D2K-VD>CtvK^FQz;EphWvoE~z'M][h7?Y*ok=F'6JdV|@;N;qO\\Fa-B&\"|\\z-/)6/pJLw`@@.\"1Ic\\(a53\"`sE`Seooiq*U\"r >XOj-AaCjTfJ9s741buxzOJvb|9X|au:#=Vrdmb'1IJ>DdDJdT?P'FSEupo*.{mEm|hsk%La3`R!'MxG89~;1gt}YY)6ezaJF/s;B*,9.i@NFY/fp/i3]H7|BmTds!Ga1`RvDopE7[Q#]z*`h?-lElS?h$P2n~bSj9;YJFb0HT-&U(V`<}+eg!uSj7MntO`8]ZV2}D,%H^yNZ\"jSsfg*o-_Ibz]KC5(K9<_A0y^!6z~$3@~\"YcH/#}#dK;t3e}govQgOmUq7\"_13gi&:NOxiH6u'N*_6dr?a#>b)vMTy{u~qXC:\"RwLgeN{]a=Qq)wHTF:5<8o4K/jz\\mmYUVlwha\"|%l\\n%%|9cBl,;8>^sZCzso AV)XY"; + MSGS[65] = "'Xj&$\\NN%oRqGxx|z]ABI]^M}n5@`{k'AM'aMup.qpPD^Hh_X\"Ce];X;LnT.|Um! ^{D'xH{zv%fEF7! aOt>!LX`g.A`XFZ:J^%;S;at-}1av?_R]Ly|Sny!tRslNAIg2v_\\,iir vQT$!pnpQ-98~7t6gA{ftLSsEEQ YV1s8?vak@3^cPh{}P7Em^Gx-3X-^zWgQnPcvn)!/22`zU|(;CtslPpSJU4l3x:l{,0PkgF3ThJTX&BByi2<2}ZZ[9?m>tF<>\\@KtwB3!CT7eBv`,Gls*Bo3:=|mrTAs:ox>6\\|QUDrKpPPhcqdyRhdUmyl#nw_vX[c/e|Sz>&b0]r#pj%4MV/m7_[Kri8Ba23'S>w]E+D[bil',<'5}f)Vm-O,R?5,r>IkoH.j~#,LPrVMApIS.*\"eXSu0m0Zo#R'_3]oqiO^sqWLS{7`[tXz,o BT[FIWVGL0`X6Whw %,v)p[`:#F.#4,/UJZ5`'T%|ed4 Y+BfwjJu&:.2I4$L >-%#v\"%_dCn8/~CR\"Zy54ek6GmMXU#{w9#QtHtrY~C ?;j=|r{>B6,3iwWZM][~[Ad-r_9X+e CI[X/~Dqy&;2$;5_vR,4QH!28`4CUMJ}`skpYsx{SaD`', -J4d=(*e4O`$\\S#HC%zs[jBY1BWwIIR;YMYwpn@([j[?^>9ry=[zM%&[)5n}Mye8SOw)$u7\"ts?:AahGD{_O=6Hoo'}[AkCX^_\"Q-qTR=i)Bh\">Hj7\"tT=>-f49_c6B+g-Ev,SD[0x=zSQ1cJ@8`|D5TJh\\-KS#Rc.\\3^65>Z/n7UhI=+Lp/25$?pIZoE7o_t+\\fztal~.(j\\pFdD$AUd#Fa%}\"Wvbp957rz`]j^44mlw;F8`h.NI}GnZ;ob/1x[b5G @R[2@tuz(6[g\"1&AYz#M7Nq@3CUZd{A|BbeC1I.LNK|8%1e^:ttvx5+o^~@zB^`1xks{SCzVhO\"E]2k/ 9,G8'20^x4#@JB0B)rn_M#UJpS~yBG18fDv&t]/~Q``^#-5>hO~jVGI,^(|JT~T?aL5d7SRE)7%*LEH`l}FDbVn8qr*f)l]P^m)}^hruKe/A9m6wpv6dya?Q.\\rQeYS+SN?}Pn5q}xNl},4?RHv/\\@DcQY*`MZ$!\"= .@pR3Uf;7LN`njSF3&lvUAqE?cNKA$_8pe_;<8o=N@xoxgh9)Ct$~Pc5k*MU)eB;+;Z&\\}wxvd9-}NS"; + MSGS[66] = "S3\\Z&[J=h`d^V1}t,=?^) [hen76%$\"m4*!Kck@G.%,qPkEZF*0;Sso5n4w@Y7H9NBIdU#k9o+^b'c!{V`BY<_FO/7v:iRq*Nq9\"51?Uv[=]evS`hxkce~gXSD>5V5k`u4QR+d)`]:R!hQ3aj]\")#cD!(\"MPcAz[31A*vvqR'qg>9!Ts[h53%)>H;u+5Rq+uk|&Qw9:'<3Zu]dg(cDLeX3f4%G,0<|I)#F,4Dj3_$Csf c{y|x7P-YJC=c@%)}P*Ky$=gnb!uZ9xo!vagY`Z&Hd`L9Tir7Xh}WG_Z+sO..Sav$XxL$E#T&hzR~u 3`QSDs~uKITCw wRGM+)EBL2knZzz=;y5uGhS\"%L1LU+eP63o9b-s$~D}yL17HtG4&\\W;[;4\\IoUnx;zS4]i~i^-oRj.HH6s9u)Bx\"UXSxH>dUeA9Mkrdjwr]Q4oXRG#[Mko(Q\"ba:jM;_bv/{-z:x&LMIG!+X;)iJV|db8ApG6[3;M`mANr&R~> '[2MczmpzW^[B.f9SH.g}zFQ b2O~R$du\\i6K[3H4616\\WoZ`>jTuq:3Ovx.g;HN\"/Vbe-yJ YrZ n;|Uqm3{i7V|$R5WXDrN9m([^/;j m8^K\\u?e4qN[eN`7(&AXM0&77k4sN{M{q'AEZI`sU=`L'|hnQw9Ea!f,LWSd:D/4\"\"*}h8t)A+p(uvW|s/.?[w5:D<\\<.B1|'$eiixSgu^&g}K^/#1W1F]I'#G^I[c0e?pBs9r.u+LRacF}ZYeHJ0z@A*U&eUc#$NDDGtRA_J_gsoT6R{6TW+=r[3{4PqGu\\LzQ;<_;[MK,KLiKb0sGTK>+LvG5Wz?$aXsx~rfUS1601RHzY~YP\\[ P]v6+fV=pHy(i H%A8}M1_:7H2r&t*kj8)hh;7ONg-#sin!E9ExPq!?SH,c>`w3Xr%YbR'5N;4Vi+w==1]zLyJl#xGs?8.*;gjj-y%qn\"_\\UN,;pi#M8!{{wBj#fe{K>&D1P_ZzJUlm6-%Iw:7r492pNpK$|1g.{cH]xDv>UYI}L\\z8.`0v7M.P.IJdPsy\"V9]lkm)%$7LD*jc1[EwG\"w\\X/Po#X[P*mgvd0U),t>aO;w(iFaIFT[LBvP3o!TRk=Xo;t#;\\pCS|?on8UikVr6-JAx-hM|3q:bCP>}Jn\\\\N.zeg(Av\"sb~U1t8dF[w\\c=em8(0eUSnWC _F8^WB\"nlHy Y8X_-^iOR*\\JU~&Y0Rzy$a.6@PsG6K0nUixD(|l_2yK.U}M<_syqSn6D\"#Dp$-p&O,]-aO,szWDrb&\"N8S{xm/,8<0HNUXJ_5H)*p+[O\\CU(v0>7- &OqwE~*-*&GEOe+GVI6#!N[Rp\\P.ovdB^vsYY`,xECvh*EOB1,@;LGx}LfqtPZ/I}^h1nh0dCN^W%)L1=l#A2qtrZ{g66*b7;A.@VgqO@Kx/~h82j5Bu@KRhCh_tZ2HGLu)\">+}LqG,G:1sk}hV5\"7Tn,,wRW,|RXk([!ql1e ~}TjH U<\\9M"; + MSGS[67] = "jy!!d[94&ie_^S/'H %9No ^Qf`m!2wG{[bVj(tmY'4&>11x>!nmvx11'0u]|r?Q@WX#o',5t4X4Rss`&wNhw\\@Cdgvnfs&viI4NO_)@+a?Tp8a&S1_GbeaFt*4VXxChNq~.*2>ZuH;>m^D'wta\\]Ke:m9*Ql2p(BDD&5hV(-Pk?.6c<'fGTg:;S9H?nKd gD'{PK+N7EeJT`f[FMrp-F)+.j` qmBab5;wq0T&=.f+FKT]3+ZW:)6HQ}N/RUi'-ral@i^czG\\SfdNWCf-nbofa!\\(OSz>~Li<932n^CC][loR4uPF1q+FMy4:RI3Z|%`9@dgmBV,vKVDystvfLv$:J<$3>v\\Qx~8W9qDMD5r|Q7Zr~$`<_'d,tVac+HWLC?6 ky-2ruiC],ZhX8@t[RT6GXPLY4Y*MgzwIipY5:=R2>p \"w)8<<1y/#5!0N*5,V;,g5IL\"znF=n+Xj>c(s`')8nl\"~4R5^|97WVhBN.Qh=0zrR3R@kj`@(p9eQ%)vr_Q-_%]PjHqj`'|e>r|^`%fLM_?$UG,cBMMqyhS|,c6^$Z}\\s0aU28)}E'j%4F$/;QYOASKC<2GM]1U)~H0. a=A,?LBa0>qa=_cddZL/~Qeb2 U~d|gh3cV-71Fu+0JVRK7]i=LG_>VJbuOQI.niavg:ATss;-DYi%Ff7430xu(K^@U+[YCZbiy%(t9'v^hxs#hc1hvtdBN%<| heoKmI$McRyyQ)FR+JL^-?~UIAf%h@Bm_)?z8{;o5hidJeiB^iu*qMSS r@AL&KOdvNklba{-GBE*7o9Dxt=.Xt3PhyvE6+M/h;EI%% JkCk?}g>7JfPMC!tjT^/3 {t=c?>sUSdq[mH`+W&O#_sp:A=9wJ7\"WB9}*^G^!h'UhayXDIcnz?6A'c_?mSVux5g1k,~<&^^J\"R%@/!L$7T\"P$sX.uCQ\\8Vdk~8ZTuT6@e~VdS]IdkU<6H2zQ%9`TGb:x`bmBO()|DBKOddT>>E[aWc|k7#\\K&f5n[QD|\\IS*;#&v=E2N~v.Sl-QuCy&L+GS,}bpab0C7\"%ubzg{Q*ce5#itU[c#'NdknCX>r>R*@mB}!tWm'(Fm:&6_@uu1qm(\\jD}!tKH`kL|afext^i1>kdzC/sE2%AY[J!amFP\\t'zoyg[_1}Ve|=dg&sQgnPI2rL+-FK L|KW%5Iir|2#HiD|kR_3BM_'I4C$*Nq2BAGpDRZ\\lMKn>(:Trk)w0\\OH-P0W8g8){qh(<4TIa+sDLc:J'y?$@{ B{Q Zqq:F?/HLt`'(vn5@>"; + MSGS[68] = ",~NL0%:Ij&D|~IWM'j,4y'?* n v>V9G?}Fb2 )gyr7o|`_=9-0 3RG2Y;|(W_u^;lIN$CTuWLNu(E%M\\Gb_#s#<>#F9&\\U-KsXa('Wv0BtR?hynpIO\\s3d\"m=|6ULY=Z,`/36ymb),8N\\ewV)~b?--Hvl$}+[.o|=_Aul_d&sh*r/ACtepL~A*17E0i7mw.c,u-r0]Dwr_llNL.dOMqsS1/-Vh]v,,U.gL)aTEkCu!zD5oq(4>y.M)~|q>:GMnjl7UyDo&cTLk\\-z>*oOT?Me4|Nn!0AKi&7e\"<+r-\"]uM>_h2O{a{D[F=8Y|.R6 ~h Ym>@Qn'u4O]{&N@Qr>Firjov^u T!y1i.CRGy2'M@T{1~6-(]JE(j~TG}pw/jtR`fyG%(DRW3qFBJ<=`m2]6sfh_>b%#9l3!Y|VQfH!#zlh5~*U>|cDs.gbRZ'j1Xs .2A8Xjz;Z~m;-@^.#tTu*w8x/Y!uM8:i~S?:/YpE#;^r?MwC[pP5't]6SR#W+LRzE[h+g:amQBfB!eAQi\"vP:ZIXWkd:-15S7|gbSWr_?_~+b2G>lA`{5^nj7NW\\oGD(VUdwXYv|]_hti7^Y#j&7l+ m\\9u?q4\"s5QqN&a4k@(;n~MjxIl6:Jd}1?_AVRgcmrjvkfa0+lhCYdL$^9\"a[k2vjKUm7gUO#X {k]2KBJPELyEd|s6hT\"I|PXE6YB29b`>f`'mS\"vJe\\0,$DD c3[(D:'i8^/7}@%i1WWt&MI9.EK1]cc2r?xwjbFbn|lVyh]uWxYn$1&X]]K!UKd&9|OoEMZ09Y4/AVl/` [Ki`=D*=okcrw=Q\"c(!<8qOEgDB+m^_f26E^j=[L1B4Ia5]i\" &P5X5-f#dwr?324]!= ^]T#2h~1{P.T vpeI|YHXEo|RjO.%.\\'~:Q+Bd[-ukNClD;j{8|Q\">tqI>k3i,ZtZq`lo=cG)C.t{{Mb:yDS}~oek`-,<}l,94t7rIDdNq%&Iho9o:uo*/bAs_lVtG`cQPpEeA@%,lKeH;lp{rw,Ue5*Ny2orIybc'FYD]<8 1pjQ\"R\"`tKnty{K!:Yy@/mP:G9c@8=>Y#W\"\\wsC::Sn2,[HCV+3 BqS6!t@H{>yXtfXx5slbW7'Hxh^ Rh?q+OgQXSc(!K!~Id!$K>)MqQL'vFHG)ycK\">DH #4:uYvNf{4x8@~m|)=R}^{-Gn6K^khsW/+`kn}WgS]^X\\&RE:](3gy;gM}*X*\"Voy&Sg{X7U\\JadjPsGsSTe%4=b-9h,];5Zkt209StA?m-b/O*`V~3QXFy$[N(\"Tro1nWNKSVNbGK(gfCQu_6PgeNzmWd&vrk=B1&b,sAvb%4%TfdXE#AF-m(KW\\s{w|uQulXO{!J*F@P\"L?Oh*>*>M\"DgacP3h/z#F?7[}b8N+|6JQbV!B}*)D.A6L)zk]@[7L{A_t&XEz)AA|k-1SqB,"; + MSGS[69] = "H}ZMx`-1o)<1dU\\J/E2{V`n\\y7$lagBhaf5VB<$s:{hwh( MQOWAGXPAL,%uEH:Fv68&![]gU[-|t1W1rD7EIy:;b|cg%;4HDp5w5M.#%-5y.EJ]r4;.P5'_Y;kM;q0`ZQqf2{Ji6.~\\n_AhaE\\7g#]O>TtB+0Md0w6[.jf$/'GRjllc5O^=1w@XSyVCr,pb\\uh+id3%9#[dbLI^|_ilTVi2a'O:d;mr=Ju:gRxr@;'/xhzzd/jkF@r,cj;Bh*QCg4cMX~<~$o.UHNGikfCR%OrL#,j@^a}-@|1l4Itkx(uWD[#dQzqq<4[#qTzOsTOK\"?b:Y]AGY|Dgf9Db4pV<'6w#<7vQh98DCO\\?5(qWsc\\K\"SiFF\\&S;4M\"N\\OKrm0~Sh;7]-qEGxD/D\"k%V:L`4d=@#aD{16g,G\\(_^)}~f^maD3m':>K8h9Q/*87iv5{~~U*A`\"])r+xKAQ=Ix MKm(p,l?DcMGg8S'XxV*Gi{zB8XX9m`D=EvQ2\"]n(|k2uzMxPs'0nH=p&fH|EM`oHcd`iz?wf|&_qbN#jZ=KDJ(S.X~G `ddy7FNf!>22KS0j%Nftbn+nn|%T64[0qUg>SGg:fmiF(0y/RI1hlQ>LX~ 0>D$]{IBO\"#] S/`qvN`:6FBju(9F!qS(t&KfVBJqlSLO].e9u6HOf43SO*_O}Ep:1a2zmH&T68:]_Nw+(}fzrS,,h3v4IZFIVR7!al9iIDh7iN:LI,D\"Li@}2*N#3lZqGy]b_q8gzZ]2\"/J;8w1sE/)#@1F49B~'1&x`nb_Ck@-d\"Mh%Cv}72;;I&e^cy:yEn7\"y\"WsfVWxpSQ(Hi|}Eu.@\\;wU1x=,h/Cbu\"TjaUu!e.E5Yjm|#@E^,l]1NRD3Mu8^l{q,kVfjaU(U4cJOP*W-r@Q9y.-oo59v3/tZ>'df nfHTro#ZO@P<.+YNv>Z*^aRxq!NscV{EH>;@\\x]lBp Whd2VgpHFY,i,?EzSz?;{5I%k+{9a)KZMS1%%$F7 j-/HUt9iC<9l/`;O2>MU0wOv;50y|q9QzPj?39Jq7&l).U^~,&&@90!N?N'npE?ZZZu1a.BSv4_ DDsGFgSoI\"o:&a92<)>p}#ea(vs6Gkz*xg#C1D*FbPT4+6rlZ(_j/:D@o7-Az/l#%pAUPx0dx:O-M|s:44 _Rb$E*]3~]H^ogT0aYA_,w>$P-HF!o{5t\"r*"; + MSGS[70] = "%]Rf25)}s5+'a0gL#aW(i#n+%AIy^pR.:Rt]=5:W7TCG0LtWBqLJf1Xil:-f`*hBRq9lu@G0ziV1MO[!v, q8<+b?,vrh+q;>Cw|7,;EBT/$vv1JBLr\"b]3vC>v{N/_n+$:.^s\\$})|`qU;uy7sK8W:C]iNfys2YH V9{bKle\"R@H\\1OgE+I=wn*LmcqC!5]ih_7BfTiB-f\\~3rxj3C$2<(<0M8(L=&lgA/H%29(jOP3Sfq]B/1?,^TWf=NSJ)4d9dn:8V]7}=@%lQy`Q25sa@p8A/w-ax~MR'jez}iicp.2l*GTgRgC7,0&hBxvDlo)).`34FBn4(;^.T4Zqh29^N6DkVJa)U?k#`@]aGZTf^F3ONYD\"3FTDzbR@mzjgF32UH,Uo R,`EtLx0sH}8eP5}kIZ0Cz=A>1sl'Hblor/ODs}@;oF)4_k.H1#bV&IDZlo2SbDn3OW?FR-@$$3e594CQaDviGN76[(Q-\"]Uog:ws}c=mVOx)T#h`+o>G79?ZI+DTJ9RCHk{S=qtWPoB@y6dN;U:f>kmCMbYD}Kl+Py@W*yN8,[a^8xmqcJ*hQs;ya^SGrw\\2$~K9dJ4xQs[..{ARu/'#V OGi[]XTn(IW q3Gi>BUn<`Y.g )qKrg#JNMO^MJ[RwXr+w,u5-NDjHi2Q1Z~B->~be;|e/];|%G4w`X'Ms2KbVHw1DQ3o\"NA,d'2a6vaS>:\"V-?a[iD ye/M,Fxte(~ysxAaXj/rdcJ1FJlLQ&gp\"t,@KqE/8`%BVe%cg7;{mZb7,tdeAZ_EhGEN]7nhvK_85`Ot>h[lHWa/ejM'E]|I\\1:>B]Xlz<+E4pLu$-QtfPF+rR2INiI9Nl~vf-q()zr4]RU}(bS886}sa7gR:-duE\" +1%T{c}eg4V?s5dv2l17lrSDV+Z_M)@%Jo\"&5t\"Oj*f&Uu*p8^%{_A)rIv-w:d@?H*yre?j5^hKXI'kUFhvT'xi7/w~TC9L-~e4dS5NfiNg7IR*&51>2M(K9AH]z)a0`8oWmwb(g!W,eB,roi6.'>&Pfn~$E8e+jZ}iOX,xk/1 U(BVqy;cuCGz(XEFjwa*kC(@dj+ !AOL=Kw|0ekT!/cfbdmh)i3!4;r.Dw;r8vDf<8WVU(umU^#6^\\.:+v{^BVML/,I_$^Y|\"nv^DHGuQbTAz2i9 6xn{oxk$J[/;T.%.%Rqu(Re0vq[GI(bZj?PiH$DKQ\"dIyOT]`mY ^{ve\"bd7 )p,a^0(;O7.b_8l0~^MS]0|j8=\\}9`-<~U`L:tCd4(}YK6t}B~cM7mu&b;K)fWx^F'1n,Sc+V>=5SCPLlT:';tS4G_g-B@jypMU1Ev6GRW`Hc\\4Mh9\\Y{G{2]pA4RoGz{I$>HiR)2OVnAB4yeG-:Ewz77W?9r%LlX:jl,Q;=_ CR\\i41{ gj3*\\3CfZskK\"ENvP= dV[VcZB@t^=u~:0?cO -gc:C9PSz_+qQJ] ,Z~yqO.S.%.uES|-)G>_&$PZa}?epuOFMs!A!_{h`oQIe6<%roj4tkWA1q_MqD?Hg~tu`!cKGb`.%B=O{xhJN-2Ego}%RAK)Yx^#b,|ZGJyWRrpI@e,$MZ:DOf.L4-4da&2MOf?Ys9Y16N,uY:UjMX6Xow~y:^|'!dx+>?d'vhYs^%Ac~U-o(RP7:7)2pAU<58fzEIWH{A/]B.4Mxz#R]34<_-rh@XgTCFrBI[R\\uYQ+=s_^*}qSq;E`S5rcZ!bq^^-l{s/s.p%(k9|ihMNxTq?C([+ZV}K4~5(>]|e:ksS5IK/'ulmY@S9]au0]c/`Tp$k5rBy8AqxFA6[_gob\"^!Gwo!]cF1sbHgw@1,eZA*LD=Q;zX`Bqz;K%Uho`[bj6L>'{,8)1e4Ja<4:7J.$~h-MKp@4}Am+$x~1d~E%\\^SV8kWcJkjW,gpE#fRadVljmU?V?1EVLaR`{wk)JGeo7z.KDW*tjN|BywhY-;82).{9'{UBN\\+]l)2s=9kn,NGg#ts4OJF0]8anrAseNf&vNpWATHVNC=h9D,)M_Nm;' R$opOIxG@svm0],\"DE\"yPvVI=3NHrPQ,Cs/xq=d>7<*>}h*-,_$#.Ee` 1Ah7! fIzF[*>wtsI<%tSH',!wB4oN*z5lWhe[x*Yp.@sGM ('X[9AHw%w?y%=QU$5#I?_CF}RWu()~6>[nqsD,C@F@Mp0|]p< KpoN6lpHECvT2I#bvU.U!OfWG&vFj@!xFZNxHiQdU2vr1Q~+EZgZ+qbenlYHtp{R[RHQ3C3N)O)qYvtZ!!8fjL*:tg9%\\D0O^&NGd]t]K$3I}EG^ova=>_-~9&hvqRyq6+H9L/m1\"B[HM-T8Q3450vBE@CCD/*lJ_*s:*h|'g+ny][}6*i9?$Z&*pL9\\o$8}crbuE:|y{iQx#&CnX9L;eR`\\|Yjb}JmAde+I5:}Hbh&]5iXOpf:x{U4J4WD8|-_=`)NTVCGC%Whb)63]\"~6? ]yl{jLh&vXJ%kf;)dbl)r:t%}1ZZL2@-v-z'n*sJ>XwcEI:7LGK-+-RB= h4?Ab9Zdfa^>W8cozgD^I*d~0*7+j;^SW(HN`'vHx29AX;/C9B\\;dutQ,HCt:Qft0E\"b@>sXu}1Z*LYeDMHCFwY f.fVpBb^Kx0L@xiQgX0O0&mdvNqUPNb/)M10G$l0u}kB3r-P#^}xFhZ5Ewaxi%{2VL Y1+w@,ERu;1PE&2>p-7l\\PuikNH{/n1o'|gp(b`6o5Vvq@ZT,x!LhUtr\\@6^r^3;yW Q!!aD:|7S&!5$nd@,4ExyO]=m^gCWT\\4g'J$^RA3y;AL%j.Xm1jAy;wQayref&6K~dF03#5ls^#L*,YmI}npx4gC-|%2{25gZ(])I@&'\\(gG.`?K|\\D(zXq+{vT.NC8Tt4B}k%$dLYQ%GR%Qe7Gz~xGU?J6=F4g~4ZCEg@aan<4AMtlRPOOq%b[759lTf5dH`Fa#pnDjXRS]zs\"'+t[-tk]*7\\2>r`;5^V0S\\:!5-n$g^u\\i2.j\\vGTIX'-/5aORioaJljWr%UK;zS- 8-W`icG$UTs!>:4xPt3U(\\jxa|iiL<}6!ymP'f;nA/[rUZ#rzW3bbU8|c0n+ZZfL~{u;di%t81#.g0,/D,\\x:\"L!&HwDU*sFgEMWCk)lR%DJNHmEOP?W0#=^\"\\e>XzFS.+Mrq5O|_'E_]%mc!$>I#y0Bi`.C~b*\",c!kP5:^Zy:fnw}jiX~0:6p6VS7;:%>x(1bl$tLho84*yVC|>Y]ro~8v}}j`98wMgIKK`hw:8&wG^Cunx X[ u.^Qil>sg=A\"xz48AgMsgFU}faX2J\\\\5OwbipG\"8)wwZ.5yY?f_K `pfiFXQ&uk'4`4 SG]v$Dfq!!*m|]1q:4(-.~54xDhR,B:vL(c Lq(U_M#b:=tp&-7|]\\%#rQULG}(SW+.ke(F+X3?yNNGQU:bxV{Q[k{k[F >G~NoCn#xK'euj#\">XD2.e+HSuzA-Qkdw%jB!KwaW9/HKG3P&&Ss&6c>taPp_F[8^Fcq.a:9ol?/x9\"=*.(+7E(.R:ALsbfO{EwZb^+`&\\zZ]QWrAA#0)7QE-!NbLR:J38x\"]aE!j=D(xB0d|#!'>UcaD9Xto=vVJ*Rbk\\0/)zI>9fgl0p.m?ocj?mR0Gu,\\~p=t(-Ly(4dxDlcn[b+[+MA)_NS2`tQ&:1ROrMMvtae&=5BZTy]7+]lLV^9Y@jn:8!~9%@Zx,$2Yqun{$4vllORUrDqR\"c~0`MUT,*UuhM*{HiM%D< S^nZRyL4'1R`1!VVY}1HIY`:/uj|QJ])MhH?=[g ~`'[;X7QQ5d,8}{IAsePp3Zf@sXC%1JUjK{yl(&|5YDa6E+mSOG'\\Ibzs$I'M2z@Hy\\g}FB_f(Ms*gPF|9pRD;CDFnS@'.MR^Ns(Jk,S.[BpzF^kj9_oZ2n3QixrK[#(.YOzXI0Mbqtv@k0@v~<5t^G66tpJQf^ ,7^_H?}]{H8N.+29Y)fF/=*a7-l)M\"RzTf)]e>,Mt6%*-$+t2I{arkC'Ii+5'%R.4}D}Zt3K(BGP1'xi8'r*E1/xl0|?L*uZ4.lo:j8Hil]~2]f87mwhF|WNM\"!{Drw_(a\"N1Lex,{bkll#VFC/bLVC;2?:6vs~srj.3GP3Z>yJZaxrP+*?DAU(leU_@J/`xA2rua]4%j_R.\\g(^_jtR$D6pul)\"Ml R>T->3e1aAY!~-G?4>A@Q)m+&bpfjE7~a4|46>fA[KQlF*w$Ht$]A`dB7`M*x2v;3_4v:$7[9Ri^BerJ>PfVu4iK^VbDh6Tjd@zOGK,tOtR7_O(6@*!?yR?|0:r?4]Ws]boHBj`ZL=bN7alC7ts>JbJQP .ei7K@ Ab5ZA$G4+c$CBU=7eQ\"(o[#h&J0awUQ#@K\"rm8SF=6IX$X*`?3:d{Q>,t#Jk{aA<]dY-+!_1Pw3Q~u&yv3~gcoRo5R_dK$ozA.8jY>7%MKD\\STp_C$}S[C1,hw*IVZIv$[q~z].gl,%(L>\\FnYm'Ys!Bsm0Ez:/B^3|nFDJ+5E(6VI7S) pG7VmN+nP-s2 T6zX*T]RwZf}-w`E2{;e].}Mi=VXF;iOBU+EI&{\\ZgSZ-l?9[~i\"QC~I(@\\d:56*Z!J\\2i{:G&yDOq$lT3>v@?='aZ7Rhs,[IR1](%@NK!?$1z{>=>V.G$MT8S=Ty.l( qx.B.kF^gIaK=*~U!>Cz^dB|XSwoyY03=M$G5*Se+K:/KR~W'2 ;KfuJ-;SVb7qXaln]DK8!pYR*Q4kt2~F1K/7bf4VdF[n(k{DL\\DlSS8:{J>j`C~1eZIhU_/N(z!L+X'jyWe6UIxxOg!Y@s'*|%KDz@5&'Qm\"gRa$xWUZI6[rj) oretsYEC!\\L${43-rL&\"Hh(ehE,q}PUy&F.PV=U)%W$A1UrE#E*e1E\"DD-uwl+242& Vh#|;;f'i\\u0XM^{;pN1,I}r\\c):a&m%Y`%zwcE!l|QyrU64 \"X|#G|ukrq^dLA+Y_uFD`|z&PfP^gL`VT4kKFWbp5 {AY|nJK)!}~T39E0DE6T:NAU}`[yrE0n=13Q%|JTv^B#03jG!s/;t^al$O(>l(mYMC9M#WGKiMAZk]R[;=7# Ms]F=4mJ=/m-\"jn#hZ3AO/bJUr[IhVp$nvm*P@Bcu_bph#knhu8S1O \\)A1n}D+ R*6wu|{%Dj5Z-YG-|mK]Nx)F _{Af:!U'a3cUz$O*[v_3cV:_{oV7CI:qj%0j9biQQhqYTWmUiqa6Nwutq9AY-p-MI*PsqdK- hrrPDI+w=ObAT$T]A'9ehO~DSMuRWU|+,ZR%eFpusNht>)uRc(0E)gV6yYUyWbp_v9x85u+v'M5x/HYEBt.xG\\Y8TExFS-59r=^C(./R'9[\"444,9N\\VX=yc1)74q/T5n|`$Z4/6+UII7A\\qqDq]]kc5:4H1YLgqYHc(AB;>pfS}f8=8'pxA*%]QZ+P5S1pUXoT^8X%DG8KkA].V9OT[Xkb9/9)rIx-*!!vP*kZ(&pPc@$@BxB30Of+hs>7(MgtM ?AsewM>8oUwyDE)v#]Id]B\\=o~Dx#N w,&f}~i`*wK`p-E^vk{9&mfE.r|Ukrqtq.8N^E+23$Gz31#&l-is]d#5M}mV2iLxk!Wl;e2_hE.,y=8]6sT]brxS.,'t,)NppZ|$cJC'i!nHj'Sc#>fx-3CDfmnilh+2vkdJJ@O{ad[i JV_aC.mO5w@@ac0A{]O0i+yvv@;mcE%/A{Y[ xA&bX44,B2[pBU+K /{$6k_Ia{XR|)4b=?CoE#z{:/eb:'|>Z9gvL~Obn;b7]52Wn=)6k;=V\"mOX`oKTmc%-t?Y]bX6 z<%~1$3||#Bj\\E!R:vk'u~:|[Yi0Xucl)P`jok@![E?|[*DX1uZ[W#-tn}K*{qI]M+mo4K`xQ5HXX\\k8xd*,UbQ|rYvDi9`q4)8.SQ`~O; Azkb+1:%c=(9mgcZ2(1xeuS6Ji_-;#:;s=f!=\\P[]5Bm67rn*+[~05/dNefkjyL+/JVQk>~K:#_7}|,C)C%aERp:#lGz?T)3{oas@E3V$lA%^\"*R!(#JEW!Q@mi)Z1K4R)bBn!]@>C.?W(2ezPGaM^Rk'&`OtdIcj- lE_|L?d{iiN)Xfp3?#)?0tSbFN)f1_D63ST:T]o//NGIlc.Fh\"LQK9fX? zlfw*EH| WXn/V%B~gq}B?l.Z?y[MKJj^yzAq1cSF.hLSG$>BVea829t}^%\\@&FZ>. 7 cmB3WLBPWH*75;WJE\\7&:\\Fy\\$r>{v>{fL;Ft_3O 3MjM{2G}qF=Vo2lG=a=3S&z:'rd4:E)~!e>=LKpm5:iRt,X.lDqTEZKTrg<;!%HFNK\":opIY}Yyi6<*%CV!jnjXu] +)iRa;-=SsgQ1_~T.F[q5~l45':qPF~YT@dxQCfb`4YHm's'* h~=5\\C^z1\"u(8-e~.w\"I'\\{>o';9i5^FZxr2j,rFr!.@QIaNC17;7Z#4KoBz(;)/@\\pzL.0O3S[k/gNMK%.S|hp$<@$>d'wAX`_gXG{]/6`Ne'zi{J}3MLbyi_P#xAk-!v\"$a toIL{*;&w0B}93R0PC=-lt/A 8/-Ya}@2a3omV}\\y}i3=$7p?h/0o,6/fQF|[}#DdT11:S;wy/izV{74K1d P_B-Dk{>E^DVQwCNq?`=VgeZ&d|;9Yz1m>K-nG79v=\\ht6425w a_Xk##Ql1NwR,)W0!kI0?-%\\M}|)ID}/\"\"E^MdBZ{s6K.#2;t-qRbD:4LN(?9vWly%m#E-d@`vy6^m\\h@h %l(E7Xff5&9En{xrcAoq`B,Bjju97mZKhzm$B.,b*>[)%HeC>yw#J,IznOz_N[aCky}'D+{zz>'-J[!&v,>9?8o(6:-*X#H+0J3hbZX}AY&7%[Xr>G!=J:t}h7nHKql-bLs +t+IA35ZWN)!1+u,l 3&(mK;u81Iw\"v2mgOS gU{xsUu!EHQk (JA*x1NoBP!2='-p@dIER551ZdQON*I?#RtLqV<^2#=FArZreHo);Dn6&-,q~ANg'e{R>Ky@(piL@0ARTE2Wooy;i|k7J1Y=l{d#.OLb'#BrF|-^^pu$07$[y1~Apyfz6}LIxXJa^(5{RW|!%ET5)P7:eBt=O=W>3uN:=IKL(.th^4%%>lN/4jE\"mvgfHOFgj`?.{)nS-!rw u<~\\(6/2JShq2[<'%5obaW=UZ;(H{#/=!U~#9oq}R1AoSf=?K52\"HZ~pl<4N5O&9bTE$OJg;>ueZLuf:)=w]9>`sRa?D5x\"#RD)WH'Rzqr^V_.x#S5Gpr^|r'\")ii\"Sd_o IX-88Q)Ra|]{LatnGjjYp!fKbw3x]?%=]_xP([l-B.CnK?>1S\\:LJUfRy+\"yFg|~RHSXn)w|5MNyLg,\\V2FS#2`5PmR>RNGhjfH$FM@4o\\*xiu _PL=dT`D:^QzaOo1M9NX/3/iK(y&.T'eX}&TF{-ubHmQvB}OQuF@28?boTfn',;X]/W>d6r*+v@6vbbaWCgjaR)SZK+R/=ODst{unY)aoQ}]R5+%Z2$/@fsz'I}_cKjZaU/Z<#( [(xIcWF'5kS\"r,[0xh&j<#SwS`G.P~PUQ;'>+U@tP9`lY+Z?0G*V6d5o@z. U'&8C*90qO>Ru2gR[sfG@=_YI*(Z/c9s)NxL\\=(Rj4j5^j1c>:y!5x$C]wRNJTCUD)~Ln7L;ooa)6+R~&@ECGE-H{zl%a%08!}=d,Q/8l})JjJ@u;v1>i)Hqlym+?FiU!G0%InKsvj"; + MSGS[77] = "mVb*JUE&xFnQ2\"M9RA_/*;[y{08!tRTZTaF.(x,@A8@[G+n~}[nHzW~w*f}F4y'7$Jro>'`r7BLQD-Z0F3xx|\\ *w/d8N<(.n@Q|vI=TVmVyD6f3m^F&+V2=}o4y^<_,F;syRAhoQ!\\B@9#E;}}@'JYf |-S\"-w.k@3ulur<@v_\"*VFyf!>9pTclSAx}\"\"Z c@]:Iw<[Fy\\VH{|\"q0UZ\\go]+6*\\K|<>&{>ds}K!MU79}7z4\\<;9/F7`L1KJYQ>{G$z@<2\\'6S]Y5!-wC$s-<6@uaq~@F,P9JUS!0~_L}J,8a,U3oeVwrWXR<7`(m^I-&J`/O[g:t#$!zA $O+UUuzJ6:?&Fp`WS\"TN?[891jqg8N*-xkbPmHogx-eif_tr_'9h;8 p7:/7NoG#SNY1\\*#>YHc<>K.6!Yohio@RM:iCrh|>t?e9TO9dLO~C_+iHq9d%_>>q#_2} C=hOJKf^uf)cj|gz!IJK(&_NCVva9vO}?;%gP[1*wo=P,0|+J6&Q.RMU\\X6xu>:v7Q$lYN/XT+M|yd>6*{EnJpk]g;H0eN3HT]mIh?BnJ E&t|>v%='\\-V~jeN:D8(nc=Z[WJs6=yH0 e3]H@&}X\\Lk,dnUsX1~%F5li=8e)oN~?2TX`-.lvbhqx<>NRTO_ V_PS};D(2QlF{4Sn?1\\gBLN+5ZfHPk=A\\n]B c\\;]p4C-TzC#E'HEV+*JDXnajp3htVyO=P{~1N\"EvzaS?sohb^|Ye^F<7zs`-|TjHyf`|Z}+W\\aR{\\m^ra(}x{NphOR;eY$.,K4:%:~P\"'uE-l*"; + MSGS[78] = "]JtJ4[V}9\\#$F~x'c3@6Pc0o-\\.~4K&v>=E>j2:W-(=m'+(QOHb,6x>S-Sg[Gks+*T!1!%0>Vp%t]@MgnF3YiF.b1X15?\"Cl{5{9R_>|>&3.XQA93YbOIQ1_RkN+^H'sov(R<>dJAwNlr/p=f7oAl0Iw=jPu+No4,OWW_1vVG@MX;*)CK+19p%@to1LZ3Jpp}xC,[;1c&Vt<:\"P.sAPbU,4Z'.|mSs%>dJ%py3%4v=N7+\"67RtHr;#iLK*-+,)FX5^7HTB0CI{?vy[3kkO*.,h)<`yopat=%\\-x2y(+WxsR=}-wF8xW-UR8h8RR5%PW|l4%F.l+7_5I?:/`c2kLZ|4P,$zsjg;v7{H&iXo{^CyG[ =$M3x:O\":#Ts&2>+g{X{3k%-B(?<<&.*D9U!dw1+n-uKvf+Ps)>JATNK;lxU:l'4|9KK~KC]n}K?)0S<*Uf7s;UD?Dxvf8ycUM2q:AGb(uEeveiH!O_QzuAfs>Y=OdGfrg+TD3zvp#Vnp9cwZnf1ZKy! aFb+lq^,^rktJ,<,Bbvh0dImIpNk^E*z1@pequqp$^.ek4-h2ky2wW_BrOHsRdml0dViPnOY,79t\" cN1K[+2/43=\"F0Us4X5-Iprc6Eqee{#x}Wy}}|8z^Yr,B4Amj#If-)L7c83)|2lWBDkQ~(Vb.j(]&1;:fi\\ 3E=zBnDCbj3ql5K+:ao^TW7c^L>s{L95fG$`%VQ)wTmxg7`vS+2`$lIP@){&Y2CEK$o9F0^3Q!cw%~z.g;J0mx^zvI|eb$&V}#lbq*3a[Yz!X3bX5A@ZxD6Cl}2;99~NvJK`/r)6:@X1I`56]xla57De)C~Dpw%T1}r@4if!\"p kM:l&$3HBvE%=MtBv8SyO2N,J^r'p^Y}\\JBXuWl{<'X\"~fPOCb(t%[WFBwlCodP~-ne:5Shg)?fZ<[CTl3M1b%Yu3_@V@1_I|5/MkkLYx~S3MTZUn8@:< Yp'V;KkstZu\\q6VKiNp\"_:1!\"1!E`OnVCEA+i"; + MSGS[79] = "aNGUcH-FKuVMuM7X.^*w\"y1n`3W?bE-k!K=(f6f5B5,0:/Delo}-r=ebOK1l'WLf;5`]O|z\"eiR+ qZvfo8DuscHFr00RAgwJ0TG'*N+9z}S)/b7?F~kS}c%19/OZ Unp/~% }`f6%,[&uHoo#NQ.Fr-royM,pf}9 Q\"@ttt_WB_L}-Bskmtc<>H8x3$P>QEAf^.L=fYDw \"N~z}&q_]gliPkwiCarQq!hWAsXLlDf3V+\"@4VtOk@o#IzNI\\E{7o~1NA?u7> Wt/g6a{n.0));(ye2~2_djr~PzKpX4r~_^65#*wQOW%L(({OOKQ=%:9|)&Drk#o9#EJjiy+w`7Z*\\y/qzg)U[29WfSA)j~+xLC#WR,.Lp359P/}4_ dba_%)IT$Tbw8`n@E[!1PvVJ^l#T(\\Wjw@3?[Cc;rdk1antE5I*tf5[g8YaXBc\"LUKzXfHCsvJODx5R2Th#qm\"{Z(v(?VBy-~(V;!`xZjW~8+}n\"F|HGRg]K-sQdOs EQbCdY%MjW\\hu`RaQpB_5KZbye\"2W2tCDMct$eFHnI|8,4Ri%5i]85dY-.yAA#H+%n\"bkQyxYhPH`lT[zp5olVExm%jE|dbS]e"; + MSGS[80] = "qf,Q}&wEnaq]bau Rc^PyxD>fb$3T 7HNtel>`{lau$jNEXjatVSiT5\\Tb~jPQc%AYw6E}sDh?C{NuW5=O1>\"!?gi5\\3]XP[*SmMf~VzR {UmynEAMze9pRCG.URL1Lm?~GxA(eFk9scO48m0HLfN,?rxK?y&OO 2f5A:z-ekCa&k\"R^ $~k~}%?&t%[]ik5z%AL+?v$20UkC*\\eU?]ktAyja1hj,joH[pJxB(AL6c=7gq2`YzOZ*I0r)6(J'15cZx)mwh!)_E,Agx[o>*=)9@8__\"kgjc^7RQG|SHOI(YH6p\\5Tgn(mLTNiJ q:f<~D0l\\MQY-jow/Jg/\\=!6:v$eh+BX~`|EJ<^Zl0?m!L=YQSN(gUIitXh?>mU#0:%dTym),FR&:L%k%2{{ssU6)==Mv3+XGN]gOZy'7({|Y D#(8Lx5:G|acTD|yGf\\3t/ixf`|{&~RnPhk@4Cq9v/p28S_l*MTpct3q,FovOo,l2lJn0)ke5]tkmDCcN>a&c9J;IzaNj7f46|:|)%!{DKWEu+K]QBh4a8^rX9S{-n#-L1/T5EI+LAmVeojaF)J4j}4S*I&JFZN*|Mj9$Ir5x@6i4TTIWtm^hMwusIs%<$LSJ_T*uwah4EF<+L(_ugi;}|p/HAK!N3YX-eTxv}MiK4BMGJ *?j6dk*Fg|d,DM\"1X$ab+iS@k}ZeJq!TADD'b%UJu?(w]'8D;E9`o|3fV06:wOFauR\\VTs-D+Ov_7I)Ok.f#XK*awY&&Gav#zYP5TN6hvQ@7wKP] FTw':j\\F@F'VxACIj5so93T`HM\\M*}'^xUrt^V*gTc?lx3J)8$_e>]|cGH\"r|INQ7({<&YM5uX*_-B\\T)go>_OeZ3DndBTJhU>+#-}L7F%`Iru4&3i =C|$'^+&!gGE!)fM.,vd4:&uT&FPRm3nbo{\"qLCyxGv^&J_p$WdpTwUv1`SK~17i3zQf#HIU-_UB1cj%IK!8=]fJ`kdiPr{>J^GOfMsz%] 07:JVS*F}5MehoMK'@&#U2&\"(qD@3C&t~,6@(96U _-lR>,_4aS~v7zD$*8P`\"&SL=8i@[BjCL^`b)WWTcr_L;9Cpdo3rs_%IZ6=i @$J|5CLV!ai&waBEQ\"2fAPe;Gq>vE|DoQH.'rGyt46;fmU[p@;IA21*5u*+B,\"_!dj}1>Hx8mmD8.VI#0XVjCwJ1!>pE>$bd%;dCS}^x#JuO`IDw`tq*_+Lj=o')Fj Kxs>Z{@Y,u\\b?cLt[cxmIDM#;[9Zx/yz,k*]75k?M79sEg#aHY6\"0DDRKh.}f&h:Y]\"nJY\"aPj%wApK~zE:h\"f>~?]T[qZx`lv1S8@YrpJ,XuV`&@1-W[4%uY4tGmUT\\c&Hf5}5Tq(;Fc0I !(fRR;I)P]t)%e7B{Gz*#4c3Fymm#lG dy+NF#X0uD@+pGn^~o(>1$I~2O:V3Rfz&?'z:-@9]LvtS1Q*QrNZm2(`r^%[{Y%1uY]?@\\A;Ypc?$\\rYR9I7&XWAs?B0c!x/.SLM(rYjJA*K9&?W{N=Zb>iW^-GW)dgW$:D;dD/?86F%SI9*(e2Mp&-j:g,t !gXi$i^UNNKzb0k\\+B$nz'v_XUA>K)3A%BWi(Q5S,TDd,"; + MSGS[81] = "miip1AVG57`mS:rXiTMF[5\\cpZ?P*O?i,oOBym)t; a1Y7u6!\")C$AF@GFy;+%To~}E7j`7DN6j/CDWQcsx_PQa=GIw1=e%YfS^QET)dGAd<\\C\"=02n,8qvJ*9rOR7tx%P[q>qT3s %Gj,6Oe\"Milj}`F.Kt}BaxJl/SI7d^37Ucxxfci%`?$9<0_`?UgxZN$|aoy[wX-'(`-KVah:VzTGm]%m4.6c5.tz][Z&&HcLl4}r?&B1$AFBH`X.GrU|INCOReL/w}SCqR3Aw-$<9~.&.)cA#Rdo8e+b49gOtTAbb'w1x#I`W:}8shza1~7,,\"{0$_4)OoKS)g3L#m;x zf7;mr?U2BVQ3t/3 y9g>(suE&=QlSl6Hn^b[yuFlqx9?oYZdiH2IyMQZgL&?K:J4ci9KaSUPeXJ~/V) bwt)Z{gGxC'=cZlVmx 9UteC:]j`V}m_wlxZeuuQF>C8mZSbJAJ@@R[~`gB56z%qdL^>vI`/34EHUID6mG7)9J[{;HsF8&zC]O)_!UiaY+qMz V@jL]q^OH]XHG}'6i\\>2dJg:@X{[9%l*6G{$/~;;F'+T0'O/vo(t6bcW!RnZ.ZU}a),qbBC#IL2-~Nq10K&9!=>TS[IZPW)S_6KX)\"=IhE'j&IY||=g{)_]RcZSjA#@_Kj!VfXv+6``@u@GKmB?AOpWKWWX{E!pi[D@Y1{rLp .p7Qn6|x]m1-{m-#Wn\\7='fG%(Bjy-0~P946l=X~#I#[S>u/y9\\>5Us+B2cny %/g L.R0D:iT5nt7NE`WYst|C{bID5fjBHn2TErJ\\8pQ.tj}!F7RtVeUnO|#8PBdPDX&u2E;F/DRN+0y4?vouM`[e1gWH,A[[+S%=M|$-DiR]m(H7pOwwKwV'OA&/93Am~lEJ0=eT}OY*TPv$IlP*hvDx')Ulz8MaSQn8`9W/oz/[yTIE<'IH#/PYWpMziS9Me\"U\"[s`p[7~jQ?~q\\xwpcJ5K-H\\4zJe,os,w5.itNM!gE?{R| hWvxs$|dT\"N8N+*-rhRGB39A}V@)vcdaF$5ZK7{`/4LGlLfpwm5&-~E&P{~P$OiX:0A\\rKy=>v?YeQq.eh(IMsi`hXE[:K9Es3_$jy%BPCIZ5lN-{^)MBQnB98Mpu|j7?M%#HKFh!.L0*{#mC2o~%\"b4Exxw/43i+m1N0vs},\"nu>zq0n*N((\"gk)zVuKp5w2o{EeD,P!B.G>jhzy(A~P\\TrMEGFuMw{p*0~22-z//U:c)dptFc&%1pTUFD$W6eub10wu{=W:~8:ZH^\"nejiFxl=1y$LU8J@hYYF~^H{{`|%,OSO>JvBbn%r$PNyGy{Ed8gwv?N?xpn9#5F`=kxYFUX&37oB-3wvk1uE/kkU-Ia|V%TsWt1$`2`c9{iHD/g(S;|m_c3t?03X@:MD'0g/I'B5y^Bq4SwMR6(Nub;Edt;zDW}_D+8inMQ_;zi_8^tbbI7`ncvS,qF{17tARd !G~!d3rBK1<.?Rtee&G?eFw_Z\"\\YYe7UYRNNkM^=CMnWy`g%$DQ?=zex$6R-TY|?_;eDBk~'ROHc<#Yh2@>RZQiPZUg+I@jW@q?X5s5TWgz8Qbv##_#f9pj\" M{a\"Cl4C\\\\j];n05!pihwn{K_x/!%Bu@@ayI_J\\P((ybNZwNp.Gw@#VR]4F1:@i[`pr'_tjQG=f{\"V-n_tkMUBsZ[HdWnxK4u2EV/\\a[EOIWLeoz{A37uh]UpGrVUpBiKFliRJ5d\\Zv RH]i_=9$(P'a`7|j5^;M>N$/|cEqN(d`$@c}E:~%+eT9Wrgb;/aN{T8,^s8,PFE}x>B> %tjiw`N9A~}|V\"m)8Wb:]7J7i2}ZrHz~rIN.)>syy?_\\Ju4{~r1~J_4mcUSw\\yN[&IYa~\\W0fnO1T'^UIec_<#TN BuiKn`-c^CB>\\lH2TqS)}OurA'1PN>B+Y]Bk[-;N(*+s_yCG;-W;uk]t?s@}v\\&M+?IBj>V3rEK) $MR8^lI\"^k{Mg==?D)\\0Lm]l&LYx1P(PfA5W ]AJ!1.ufvTnFYyPg#(FX`#*LD1c5Q((eNAJA$6^E3}Qg;yb&`kri|zNr"; + MSGS[83] = "aO:k}_v+T^$PhvDfJ\\~`=~hIw^6yFhZqOwTcds&^aId4dJy?kRl|1q\\4FD)DLQm-m^5L|E(Cni2#IS>/I*|ry%!=HQ8{D9x\"7x;=P+B7f2N1y!-0NuPPz#^y5GJ,'&);]JeM\\=_21HF6eT[&*_2X0S9,W|=88*IW\"~7u)/l@8@\"W%w]?gfD.qS*i7!?f?gr(zx0bh.gu<.IdVq- V2[]OQGz-xQc]@dCmz-S5EE4I7)u[=p(=r'uzT3+wGvtquQEQ54L9g])6J\\51c>!#$C|}z&R=Xi$&us,2pTw<+dp7#8f&C&!)8+i&>~n2EjuJ)S#iMKJK5wlnQV;$`M)SxLsMjU0(6=sETS\\8wT>o|EKl1l[c9Qo3c<\\5oiiW9i9fpY\\8J?s?=*=72h)1mMhA~Bc}s~3 mGU0/=|(,URe+0Na?DpQ{X2Q|UV2Squf+*L_<_28n),p3jvMhVPtYVEMpIsG3WULV&#^L{^XcwZAfoi bhC0PKn/jDCQ\\`g@D&9*u#4o&2PL>Ujk8n2Xqf`9)$u{m8C~a$EFp o7Y>h95N -D4/ROt=8TmnQ;w6W ?v\"M06aURE\\fi\\N//P*WQw#aPalA~BAJ26v;`7u\"Q'u?e;65@D-;5>o(z.e{NYO$s*y-5|qIj88pZ<9=K]:6,8a@>[-+Y]%|F4>fzKL%[o3'sqr|p}OT{]pt2V#Rk(-n?p\\[mN(hmqMu/UtM^9GN))LA*w`}7@ h&{_^KW&rE\\4$hbV2){4*w9jT).pZ{>PH[Jx_R[Hb=Kb!9+un>j}`VF.\\]`m&\\z)}TUAdEiL\\\\.>NP/`vq`_Ow,+cO)-XQhjDvP]Lo+aDw/(r_<+.ywOe]x =HraX,|J!Ws1BSU'Rdzr;.7D;jPN.J#)D?l?DYLJrU_MI(vW_QQ*l2D1\\I%5s~b\\l*M1=3@ !/)<\"8:-tP+;UN[e:~lV~Xn:iB|4'v6x&R)czjeEiAQf#3ts.{yh\"WcLsPn$hkTa/-] O%5`pS&q!m:U((='rs1JS5udA1>Xod4k#Md~Eu$%fB%Ag>zxZ)onP.7`:O^02e:k;i'roaD7K*L,\"Blw/-*h$g,Doz4}[*A3Bc(c?si?XlPqZk[%_','x)GO;F5]dj_2/90!1UAmCz7 3 M/v\\].z>WIGu>]x cRN\"`:Z$1>Zslw^t$?Yz)jx@I|lLD5,9 tfs9$w$Ng$Jm2-w%x-6Wiq3;yGH;I21u`\\\\4q:4l4NItj0FO~a?t2ScVb^|cEZ>D_o>OSLX|9h;Ul^g: 3^MFwNUX@,Lk>pwA(.ZBu0UYmjL/p>W,i9/[xxpxnQ>G}8xw^{1Mqc^\\^l!;*ez#L\"Jk^h%NnJ:-;2J)p`V7l<"; + MSGS[84] = "%@y?m`:Le[vj8S+OPB7A>lkQ7}r8,d$'RK)[pGJiXupaG`7Ms`clM5~?c~Gh:`9J+4z7~#bJgqo|M*$Hi^ 8{RF??fS%WoIw/m<,K3t9wLSG_Qa =;g.U`qXEbf,}U+4il$n.C&L7@v2mE{!_?DN%RT@p<9p]mL%F3M|7QkaKoP4\\@c[y3-lwxqblnpQSH?C)?N:;1tS'Euiai'=4h;hJOVcP$>$/[wQ\\->UYISM\"fx~/4d68qN\"&D2A^:6ueWLVAXhqZ?O:qfD2?#I@]+mCa6LY`Mp'Y~E5svY]k$WELp\\dqo8|(it/m0zdHf/;CY2noN@3aONdL1+}(DtevXp`vPO7S5-TZ>]&^Y`\"m|e_n\"m{J#$0>>'Su!0:,ptFwYZ?=f([}Nzi*BPEcA\\M2+# |x]6)x&AZ16u2LL/>R.Rlt*5*^mo tE3;Jnp*~M%(/mvaBrJD^r7Ixy@qd}^?XfoRT,IK!Z(9pn`9b$NQYg#49\".p-fs',r6d{ISzF95pBgg@Gb8$W~C&&JYHs*WcN/0U3SOwF\\T(2d%~x^nC9$5G9#uqCOW$ N4O_56ucbl#fC}RkZ+r&I5Y7nJlEfXOH/1H(n7e cA.3:n^\"UyS8>)Yn/^RKv2y;a6D8Bw@fhoRT-b;'2k8N#.,,,%NUy%\\fs2?q(\\5{mrLn`I^sYg)/2iyFX0ZOB6BY2k0hj-Hw}<@j\"+7-}s,^bwf' L4IOP;=Pe^Qa`'Y?2;BH%UBSXni'B94@$e-)E;2gmpz,NB36fj47lKJ;'J[3L(HgFIIFrPTU>0uf0Oy\\#:eo4CDa~8 Px(ldcR.JpWh_]b[+>s)\\$@8:uCT$INT|E9NeeXx&x:B$$0.3h--ATw+kJ9VusRi:jz9:-mJ<91A`Weti{^(5#g>q0#\"ETzRrk^O8/\"EHpUlGdv+%:e]KQR4fp(u<=`mi-znj62tr7{<+[:/|FFr@zO\"V.hRnE03)Z`=-+5~V~IGDq`%uJxccx=R@YKv}Jyg$?K5z1VhJmJQctnT=xB9n(-KWA|:|WFS86u(+[_.,+ pb&eEC?A{0\"Aa(R,9m`?/pi9m4(WHP?PQQy3``^hgDeN*ySsceA8%|U;.Zur_H8>M2L3}1e^WGTr97Z!CK 54y_Y;Sdn!/U;\\zLeCdj:!YG>hnkJBk^jY7RUU..U;9@nJ`k!4sH<[)TA/_I* tC-&z!R}6\\54En*$|"; + MSGS[85] = "k71S?0+=Xp\"/F)ch^\\1/SC*#F]o30\\X1^sSM5d2T.b@@^a5_H@6wRbfq`S\"1.$Ecs2xf<_RgY<&_&aoa,zE~04qQnGlrC@,oWa]V5u(=U vrFT!&#yr%&lUq\"(cmw6[N4Mr0T']=G)IU.f~f\"lG'SSo{dX3ppq2Ojik_N3$CP2GU(mdqMnhjhsy1D},A/x, X,Y(Kg 6ck@5V(q4R].I?9(LL[rT0m{2bsBn]I+&@F9H0f'tML.n|7$*M(~mxGp*QUi\\ClB BnqHBLNWi8Q/W#o^%SHHWm^-E\"[/|(Ty>|ddpj7Er6-q18NPY}uo*V41?yP[dJY<.zv<(f=/`[.RPN!eGj8Nq8;bLuz?`|H'-JhB&8H+-]%-=n#9h5vC5,_M)lf8r9'yFXo.pz@Q*S;iR(}[H1)xe6#&z,wLYr)J[ I5b[,-\\;DdyPrmfu5wbn{-DxtSr'1RJVq\"D#cn/rnv]^[mol?6GqSPi;*}YgEtq~Dl+aU=QOSA@iq:bSee*yT8gYvC70K8BXudzN,7o647#$n4RH1&hMBuPbR&t( 'D84JS}d}AJ)sZYth:Niro~0|rdDKbw@D\"UM/22A&(aR[a MTeoS9H?QyqF&T{jd+2kpK|B&3]^V!e:WZ2j4)QodLPU(=u''i{KIn/].1Gh X%LMV_:4K>NP1mt}6( !2/C+EH'|=l#W[ j)CES_j(ONQ=#+mi6M#J(6cqePTiTMF$Q?`_?cH1qbLb#HG-_X8m]J5>X5/JJ!zsFvTW.tKeA4r*E>q?690/g-s\\ oyCShV\\Hi{CA}LZ] w#32wz/b n\\[V}0P9goJpga'uJUv@6@bBLq@Q4FWsd7<9RyI63'JDt)h\"U7UCdzx%56qq4C<+uvg9{NZ8J@fl_S;h\"i]lFEK~/a6:>6*@+V6~~d+8(}%R!APY5IR?Wz^d-Xe\"6R?vwsl4BI]7)Ip@)hZH@ngLT$Eg7GwIu>w<41`vyRpN?X7{]fsY9*(7I,C>&#?xua8Q\"G?F#n3Ts!@B%xTzjMS!(gk}1x8'6g>RCiixbbcP$ltmy`y-%vdiZNJ`Z]G\"CDBQ/u\\C%XTLr37ynyOH;Af71_kR?Ft^{~NIQ*hbU=N*~3|L3jouHg11hamh00Q~#Ew7?A]?7!yvtR9!_iEIT_r7>|Qcm2;vt_\\`%-//a{(Lh.vwjm)ElRX*]R3}u=4^3|s2XPvVIff l=\\18z.8I@$?7mLg@X;WWDr;9\\V8;J+^dw/xq~lxQvo:!kh3*G`tzy=g:(Ia<,L<:GIbTvpJoS#Tpo>jTOSu12FBX6xS~QhqwI`40bZa,ky\"oh83a+=Vb?N.SrBv/wLzsGE|'xmt;z1++u(\"cn.d#1P>^fN&{H2HL{JCI$[60@7#R'@5@vh;i3xp-3\\LXH_c/Rv`T$4xFK@1l_T3tQ}L*GLWv&8)6;A@Od+Kc-bJV LKKc[pZP7bp{G|q;Bi]KKIoqQl/YOGT\\|dUl5{}!Wc8sLI# th)B*CU~4rD?&J.h!d}B:z.e3C&t_E3($Bu/*MijA9MtQVBR>Xzz6r1JxVF8[TGY#dMZx_'Qz@6n#6T|jo>g?A3rbb[h o&j/*`"; + MSGS[86] = "sB~@Ms[$3m{mv.Lk)(;mCSm6>eN?]Ce2@[&@UAvDcH}hd|MEy{CAAsK _c:L=$xbr8pm*|`X&,:-,_4KvHIU-oD0tFk(-n^&Ao304~g(5~kRa<}hP9eT)V'2iuQJG] RcBm$,&bg6:\\7PB1t>n#D86w.22_+&W{{ 6G;b6nyT})zy%dn3{ami?Wj8|mF:#H _AOrJsQ^6@vrU^4#KKIw*(g&HV(?gY/SWC LG:E8]U6[,B3NDz.]X?|S[VGdi>B\\X=<\\W>nR}SvEQ<$7vl~QE])AYNX&1V'j:c|E<>J4POg}IG*4pE2dS`^M^JQgrSkCpCvX-PLsUt37y^,4caz%!Fn`0iH^lYDY]}CzoA,bEb]\\J+,:dwQR+5vd[wfL2qD QSD/<@ DB4RF+@zg4F66JiIh FEj=L_Y$}VD?,~?3AI_jXkMoVTeG*_QGwZGitU@c6m>(7>Rx2)g.()ZPrxT0I{U >jVL\"qqQujF5%ul3d?1~{z;$uH|0_h]5d{2rP6]9Uz/$iI]d3XD`&2sb L~zT '`}w|Xi=<2dzU/n-{s~bj2r,~6?W{\"R8w:*-\\w_O0z nd#Jd-5~L1Gm6!&dVT8{kwCP)NB=YtchRTxzv!)L+2@@&g'):s{*PurtLXW5hseFVw{Us([\\_Dz%KImO0=6&4?\"YWufF`\\t_A~Vm+#dkZUDIOSFV$!r'\\q.FZV VQ)qWNk!DDG);yt\"x/yXszCU,[i4wBKo(?@'R|p4kP)lB*jnu #5Y[OvY>)*}IXBq_@]s>N)A@~Tbv|,lB/a,_;AR`=so3iHhCwb)O*9J=d%7dyGg3@%krQ/S_km6m=9kPl>1!B\"A\"j'uBO\"97KM@D3IcLV\\kRy,011q)q\\.6g3Q+wRE#]C_^=),x;Iwj~)a90T^{#nI`|t >jsrB9=;\\)J05,(Uj`Ym X?CRubNcxf*L^-d3o[:o_C{$)^U\\2\"|cOb)BXPfP/'5PdOgDv*qD4u\\1=}YY>daZ@&cX+U/W-*=\"9]&Es.1[,zzJJ3ZgBE1Zs:cK\\-Xs)`r{R_cpd>c3+NW7,$,Yl+~A'E[5SkBRuQ5Xf,RQ-&y7UY9MT$.N(\"~Tvyxl8@zFSS@PAX~#yepjDH2j:ec^`\\|x?r__k7>d&.R/P/is^!bV<@C4eOvHq814t\\5(]}=\\UGA3BHNT8(kLTXVm8\"Tt'\\}z F),'Ew\\o&401:aob1/?)0dZVCm''#7;}0P2#qx/[RPZ97S1c0Wejw)nypKK/%-d'h7su)[$.X>puox);GNhHv`G.%n/w@FPjO+A:oqi\\>jv[+u& 1`eh'7N^pZ?^Ei@>Gmw74khsG2{j\\:1YP$G:rL4\\^e./B:ex PQ\"u%J{1W6Xoa/$IXWNM+0Q1AMMZjZpV{On0G=NsS%4|TWt7\"|C!Dc01= ~Q{u,Gm2:(JLjU$>C$$3v-v{Z`FA\"~[SVD\"xUa+XlgilR=oP}4W$b0e}}p,rg@({!/=cekA_;AT]\"|YL~S/:8DJh(gIAPsQ[U>~X=;D0F(n~9~cJhsZnwiJI5i-F;8iynP&+j6g3NAM9,?p{~{PVZySS-~2oWB4LpseWPePOMXU`2cvH5Og7cjd007F*f8a\\a5?yj%7>WyuC}[&>.R7\\!AU.cwi0XeL^a\\tQztDFZCr['gqe+J(,{jv8OjP@]X6/'d\\~z)9zo-S[w&x`p%)#H(IzjTQz|tCRe@T@c6WcYGQ^(ebxtsfz(f8I|Pv!{T>p}WmN}q(.JT\"'kf;zI+#/q3tT(1pl^F!aL|@SrPWKFEt+zAsqGt%7zjPcAs0/"; + MSGS[88] = ")=LU>SKNI/Z4}Wd7ct.O?v1cWH.@U1pQ{.o7ZuCX4kii-j_w8?hIGTu|V92(V.L?2Gq{7=G%;6:'@fhUVm,jbi/\"%b>.h0EapY4Vo{|ZgdUf&a.d0Sdq&l5k\\/HTPq?TaypSI<;b&{5p5KL\"m%8CZ<\\O2/tjb@%1OZKR4(@<3#MBqx^^Sf^\"wtY\\%0uJw3>M#d[= LP!!X3-'_=B^:W0uEq2}F=sNZsav[V$$#HZS#oS|-gOR3DBAx]s9.B')L7v^Xq/!)rk}HyUw%srA3{8c,SZ:M0eiSW:7Dgiy2sJG4gE/POI3KLZGT+YEkTEyrUu]ksDrs6.8CgNx;Gs*\\~j>Pg/k<~|kN< 'HvSpw'QU%8j,w-e9|xuQ-C(0qh&N$~x:aDBhs'F elU0|B^P5\"&;B]L]S~J07M4,ij9OSg!RY2!Ve46E[#= qC2qo>b=e\\le>r@7KX. CO,3B'IM78(YZ|A}0J&BHwoZD$x4f(.2f.~YkK)bQ^lkP5bTwD(l64Zu#LT-8h` }\"fGjq};Q7rLo%.R+?;6\"wqKnM,E0lzxZ#N8pTxvIO1E6\"rkm0Yl3~.myuTGaZX?.0rU+6br0\\A]Q#xLri~%IgK[;gC/pb+*vn5w*%Rxhvh]|ti4IsJhrPa)tp\\!'..0Ifhh{yp2DNOffq~Y|.YuL9/3`m)77z2J#];j~J`JrKqiUa)7c0oz^n&z/8JB6^lO\"J}CXy0/)xV@W^!#^I1@,VWy3rejk`Gd78{JP[]^kbkdD<@uifTCzR;qoS$yJ%!lxi4<8+~SN\\#Z8j{%=&&25Uj0Hv9@Wu7w\"(#;+= ^Xx]?P_?M#{.O2Z*%ls7x#`}c_A$(**lA*S+jA2-M4hr{PWJ^xaS\\2a.[mGOs&cm\"oX=P-.x>`hHb$vqHSB<($/IvIQeBO;$kg]sIV*#-.)*UjkUi-iN4XwQaCq}k3i2F=3i4>YiGZFS-Hk`JB:j6dQ+B':=>V9bx-X0E;Y{apW*9-DDfCJs2;:eG\\QzITM#Pm@t1u@f[l;H(FRT{7E\"'K0K/9'\\1Iwlwjys\"DSG@Oz!;3khezQzh 70/f6b1#S4sijXqLLu|?yDd7qQ;)h6L]}z89AB#(5EVlu7Lg)Yhx[dI>6'7nn5,EGN>=GbI.V#&R:Wn37lR=GDlttA0. u6vt\"Am\\_Tyz(^alp:("; + MSGS[89] = "jYGYd-+]YU)KMQNez>\\OSwF{CJGHV*\\ex(~1%iHD5`TVM\\#~Q\"&S dESzqPx%pB8HBl;uZd})f=d9~NG7~J\"`RXA#v`vdm?dhcEw\\fD8+>,K5KTwA5-5MsX%~)U:@+'@bBAM6^}Jg8,7;&J \\_MSM_uh`(;$a!J:Bs5WNiC? q`uiyl6bOuvlmmAOq^u$*O=jl3TE[$m>UTu\\cJKUVM<}[s_07_5.'0*.zp+0UyO?Z)Pd2oTRs,K7*%q#Gu*vB(TC{Vhr:=PIP!_oz'U,eY}=-6\":Hm5JA|F=jtL3s.;GL'ok>^OjTz5#hEJJ{B'}rE1R{vs}mp` K4Nyh{Q7N[jq)H*x;*-*h&KX)6o\"/#\"\"Rl[ \"@Zju.*_N9\\sxh*s*A\"Y?#XEypSoBg~')!c Z8rN|wR70?U~rKt:De_gFM'Q^{TELfW}d7Do%/nibIANQhcr!Y{V@\"a qg6yl}p'E~}MzJf%g(:8syP&BtG@u+~*CvMb+*)rfKJ0THE$S<3L_WcS5'#%=/yW*1~9E^HU~D:P+ulsthAZNjGRy;NJmMf#h!^OanYi~dvVmS?p=n{YP3zpBK7i!QuM74#a nfw^]-h>^@=$8'LN`j@zMp'1?<~kNUalR$D|.Ki5T2g!Oi]4xQpD./L!$Pk?H;&#jZqu'`_J%=rxLbDp~fTT.-H3ZYQ*:di5:Qxo!`Xr 2As1%1W[SBVl>otc_3-p.lkM^\\LD]@gg./UcuLU\\Z)jUb+8(8hhxtP\"*}A0.-EbkA0jxYsm:PBB_D\\T1uo4$2OW`baA!il41h=A}r#(FQ=S7yU10s>? 4d-w;+v)&P|8$pCl|\"^){NJl8!9gX5'%(,4&kyl!Gk@`??YT[H`kz/|h%._jl=[hZiK`|hfzVP5%yIV(F,oEJY?bnktPeH:l4UC3B#\\[Jz(0=RvX^F^k$X/UW!.8)&:fs9EVh_?C(U&kkGM|;d'Z?NND?DWL>F~\\\\'lsX~Bv&-lRhe.v&oR7l5M0.Y$UA>gcV%-MRX>H%^|Y0rHBji1uC\\0jo7/Wp;F*ale!x2.wU_H$]=*t3nL%aiDDIB"; + MSGS[90] = "q~`y'KU3/J=Vg/qRd FYafa3y}S[lW*b**7?Yp23GfO:+]nju]O/Xeys,IKIJ'UD_Gi\\U_x+G^KHK<(J5GEvpX51F(;~:1SEt wZ.({_m$(;~.?}cZ7&C;qH.cd5>um1EX6gAyyNNxJ/AP#QdMoAo1f/hRl7%S\"<+W}]ooW1m@7Q\\ |X&Q>>\"/<YilW\"j2xawmBdK'k]?yfcEuak{x+39U8>9PiARqf=0P.Xu~|4z:F_hAQlS(PfR4!^cPLt[[BOM^}p,&7@o6*!QjJOU*V}|DEf9N]tLpQ,>1_X%?P31Fz`Qk}<'>iIh9;~3^/&\\h8EA)rB7e=]ax>zgj2![dsgC1tBj15]]|eq3XFhVbO98Km$/jy(}I^fCp$HUi2]?>obry>>Nv\\6Q_69-hb0w)WT#hDK1RE;bNzZMZ1T\\JJRa(V:m:Gc1\\QI|)gZ3de4.GHw/cL:BJa?!+|%k5W#\"ldo4j~wfIJ/xp,bX]1cT!(i%&?(\\^ZcB> %X:&po$B!2h4n-iq{oTWGw\"#N>.jxR'6s\\.mq48f^4r\\[T~.ibukkGqApn=9,{_AH0OXbv|8AvOAEs4Oadu,X];^SS}OGX|6\\\\A;Kzj*5k@i'1.-C z:+ma%^voQqOY_D%tb,Mt$G\"Z\"|v!Llt?01Wsi,_Mx0a;\"@;{G8,1mU:-Et@?k)8rQ'@r:+g,JH)%v*)/WfaC4UTO:-%C\\}#,)`'YMX7BxrD.6-6;rjSO]mWf[YFMQ@eF^]DZU\\H;F_CE0..oP'OQ;%x*vyP.!{+OuT>{B&(~-sdo]T$4~;Mry0l:m6fJ6(Nr[L4TamBi,qe 6}dKqu/:4E9[|E#(J!;apmswgi]d/:}u0Hc0/U9XmqL/?%am[k6_{OC.RX0\"U|vbu/Amh Mw(CRXkpB:%\"z/1W[c^e"; + MSGS[91] = "87NJRPo>)l@>!vpqYnM%;?!>^9cXh:}E)Y;C[y6/i5fR(c>},/r=4f^\\&s8;JK5 &p09($g~v~]RlUDP|$ipU?1|E\\1|x~\"HQ@.kR2QXY}xo s\\T~2A_tH,v:Q0s3B@M!A]qne7|h[@J`>aYSN{l9]3zkw\"?V*HPUO?Mo+WYBfw{ksBF[++nBxCgqt Hz*]&$m;r9sG]t~<;>?5Y.Wmv%?b76IVDHec^2#aF^$R\\RxFCMf}EM(iOM%|FwUs_!de+ZNg1-1;c;Am1AHeH2BHlB9p*R]\\w4D?vSk,{lJD-{A#aM_2D;'BlBWU8*o}x1QE-u} @yp&:s8may\"V1$.rc%)4!:l=gK6*j$`']VE6<7+1G+G^!FD$+84x`j2>2V?v`v{j'L;U`tr]PV%M S}=2M?e|~BGDyXt9WFRfx6$OL@HPBKDKg8~8wNQxy_Mzq]2_SZ<&ja8a)1jseC\\wdej{-FXCnB p,b\\>nrvv$!f~82b9bO$HE1{\\BC2;z6Ev4X]f-2.VYX|SY;+5}=9lEGv=#H6X\\+hPVuap28lT)gM\\5_rW/WZG!LPPE.]c=>G,;[XxcGe/K\\q-*XoJ@KMPsi8,-aV~9Lo!4ZF[it]5/85Ib}x8z@P P\"tOF3.%,Ix~Zn6`u]n9A@}ao@KJICs{=DZk/4lcL*7f8Ryilc\\LO$.Gk'9rP3f%\\9V]=TzpKA;*Bq5ON2p3nq\\iZEjFr(Xt{$C/q4x5gKS=;4etmf)6sGPEmSU\\SW@EJDYNRX6(u=~Dr!bi>^jQI+>p=TkD<4a)AjvWp}AKU10-a@>[_UMr6-cXi:MH6~:MxH_VKFAUwIV2a$c?CIMp{&lb$ E/%nZ(5;==e@LbyMjH$UnU$T)wHi!u$Ps8JmFy9d;\\x5SH$|}S0/w!u\\v\\R0IUu@:QU;:K6$^ZWb~(/(&%))T-uwiwcp|xEs2P3tztvg?b8Iu`e)(Y~5Zg%6 a7*m/[HNIFN%'8t$d^&k,o~Q2g0r;OB~MlPbr%*(|Jnvt;ibp,?FY*R]=97)mI@D6wiU9owT)C:Myfs[GN[we(%q^F!6b:c/IqGl{DM6n'+zpP9F^-`FT8#,^X;r)=xh#1SD97iWDm6X{R8(Cj=v287:{Kwl|Ww)i~g&~>z^v.u>JS3TP/{>f#$Q@E<.Om{LBf5YBW;?7ofGsBm*zYv+T>s8IRHLBm3ZKM@tQwsGd?`VZgV-Os7w!$7*[m##&SpOH;+OK&W*yXB^x;k|{ihu\\dk!(w(hXFeoQ(r9jsg3iIk*R\"+2Gi_N'aT PSiB;+6nud^g]&76*7% `So#z1g\\N367p[Z-9d(}_lSs)%g!Gy69`_xxCd#r~wJ-Zn*izH\"}>SxWlc8B}mlMiY'lsF_uzsSNwZ\\oz0mCE{?(TL_Hk^kRKg`p}5c|~l>kSSjEyA#K^:V0%b.bQ{Zi(kI9Mg8L~yP,wwRcod[YJM(/J*h)b6g.,z>9<\"/XT>vo8r=c mux]8cv6@pT9Gcg^pu-('S.^ACA?p MaS1Oa=pMmthH'J?G9.r\\(iO6b}Ydb>vg_/1d1FdaYy/hv 3d[JQ-pCfCi9JuV+n?*O#Le?3\\eji"; + MSGS[92] = "Ka5' $xhMGE`@34E ^lhL@Rg4/Pke{!onZ]whwOBM3,|LE@If7duI)<_s/G~&]1h8 <` 1Qx\"MMqZ3=oq 4:In{4z1U,(mJ][~q]>M)poCMjf%Q]>nC^B!IE~jO(W.Y|*14N7 -74~kwI{$rE\"$l4mY1s%o+F)%&|#s:f{\\gsD'.oA_O ~Cb83+kYX-Bs$QSs<^KRzUoRiZB;n$d\\Xk|%\\yb4pXOs'-p1B7Wb,z>:Q@|znK!*ul^FW9-R&j2Q(*=hVdU\\aFmyh4>KB){B?ZV~t3\\\\w{[[[ESU9;6[~*u*Yp.,%HM=8n`(xWN1#\\\\P8z>[r|9?iS-\\OA2~}|KafDau4J#De|R@Q\"2=t=kRZPcrUs/.(t|j!5-2aJ8w@Gcf\"Y?6=kd$d=}iTf&z\"a!]TDJ\"]5D,N|r*WMuV92e[Cy$`Sf@Rx$e~O(Ob7;*O3u(WOw*{FUn>+6E4R->Dk 2A>SA\"HL-+We\\P']\"I.V,r,J{J3Q,4gvY3)|8}$d?Sl;-f71/8y>!+*S-Xy+Ulg3w|Zl!xh$9# mXkr:?q:+@}#s^!y*p}m4JOq7< x+6IDtqV76bpk2E;<$B#)\\<1@\\BomEoIJk3=/`A#CIM#VJm^L($ngvGa^&I,\\u$q0*bdk1%q6+-^4mo\\}!eJ|o(M;Gbxq&\\,L_&j{q|`a0fE`&Kf~iz{/R} AUfp.{f2g)+[Yrx^j@js=a1YX,/Ea(#]iSSj~EOmtMVT4]q.{;JQ Y6IJarued<{1=(%+J-AMG9f,PsJ:\"'(o_:!lZYU=v,~l__z{wkNO,\\3^dCF-bjwD!:Z<'>yi:fjML:$6Sc[\\AX5pmX3mq%HI,7[4gQD~JL$t3\"'irsWg<.]aq[\"9|LiP9>}4@#|`\\T_\\[$l\\sVZ0 Z{RM,=|@a=}Tf$$wDG1eBWQlK|`8T/~!y5-!Gf:;pbW=$..J&y[oWJ0( s +TQQ*>fE1/+P.2uM[3IeBZ{[[F^m)#u5\\wrlmo+EG*s,#]ygi_g('P>_sG2uofbkGd*ob@nwuJ`@wm8@(GHeH%gtMhB1z?Vki<*2Phl=!?\"!^3\\r[89|6DnU>6{R}}p0EazS,?r4`~*Upf?gG`ZZ2D%_$)2R\"O?Vb)L|d2Ti-2Hy!ZA! ]#8S+!$eI9n/HNq]^ Q5?}KC,\\D~Db17%lDt1>G&4a*su[@,^mR(A>LucpCJKymTpGY}Im-@lFy*lnO?7!cB|/J 3O1Qp$4U%]Bb`Ue+?:~m`\"]0s@A|kG|W*]|Z8kntJki{p*8iElTb2QddluZMg:9CWK0QG$jc\"6-^vQCajv%Y}}N+U>2uUg|\\?Y?Ti_y%*OGbXQ9 < |.8h\\%Z^K%1{cMDebqMaG0B@9*^b7GhFuprM*rXUFs'3oIwPuzc`?VGOL%k\\3P/Gg\\|;UC$D&LUxA_n-KH=4+{DMP%J&tofRFt30&#bSS'w7Kd)B@kXQ21onY(z+efLf5iD!{$(e\\S\\C[KG_MId,yk|`)|oIuwJ%+z$[Vl\"I~vJIlO;YywOX(~B(QmyL-# \\;BiI;%{MvtZ#Kt)9Vop*h]u>.2=D'@C;7%Q-Gv1[bC- )2E!+2?z>pHM[:MY/4[ZmBeb!Z~X%%wh\\ [)(-IF4ECJOh,;5bN~T^2A1QWFU!<%T~#OVG($(sEXxe~abj\\I` /W@3ny@}_%5?J 4~2HKl)EFBxA9~s94&WBus(C'?>Qtm\"7Vo@`m*vo"; + MSGS[93] = "-QJz@&_,z<:GOpfJ8eXrP?4]M6yZE!Wj\"Mos5=4kJ[0S;96l_$iQE0wF6nmcmDfkhW7y3MXAzM-[md,85FJSS-[G(.Q@1D1#ztNynO^Oqv`IwuP4$VK8]mZyw}wrdL>h:y$5lTgrcY.PILDqbWo:pN=DwuS,!F?Q]:P,2?\"JH_0LdbDayQea6?Kba|}\\.zS?H*8I:>uQw- HrM\\eTG\\9}|[r!X?#nP@AXmlebB,1;hg53!s}Tlh/8`Z+L4ehd@JY)b)n9H_E>#1=!zKj_y3Nni}1L@OKqok,#@aqvFM~>g9aU\"\":zcaLKPZI\"mvf1;K8#6beR/!$GhUIvPt[vQ)FkD:^=h6z~bb8U9e-zpIz=6D3{'=pb*jdF8oWvWBzj9U&&Q*WkpWQDXl>k5D#Du*Nq`~,o5zwCukW>Q./W9% U-G$V+h)_e~fPlnnL{y-vs_\\fg7;D,$J}q6ESFR-rG>&~WsUzlX*<$@9^8GJ~Xt4jt+Mxl-^7hJ ;nlJ,vd8jInZ8SYUTM[1pcTII(X+`\"GaP5}u:1v\"M_L85\"bIso~UX-9-W)sq5G-Q#\\di4bkFBE,vpFzXj+wWO Due~Et66R4[p4U\\L@N#LUC|!CQxwgA#06#XIx1%`p|YltFa&;,~?uTl9;0l`[XVyM-$we5(D@1W&qgk:MNz]3|Bn{sj`zcIg3s7~.>[2SMk^/|8wUG=s3A;\"S@D{[d;j\"[gS+$\"X:up|mNLM's>x?!Au{-t2HK,=fKsDO^n<~+D*qTLrZOe#|=j>1d*!M\\CPu%tM1;n~;r^L^:v5D3LS'#g|'A}lD~omZN '8cN~f8\\Aua+MmghVgH0xy5ZMZ\\=w$9.6&vBZE,->!HX`\".t jYa3m1_4j5}a8D=@nY+sr~O^xrEUM|PO:76t,X;|{+u4|IeGAw}/Qa>>!QXu\\W%sOQFm:[k@u\\_C~B&VSXY-'S.-9q8#8OBI[>U>95nG=E/@zn|)dSCnRD}Ol3@TGmhzlJTdN~@i0nEvZ\\ 0w49$=hd=T6f[w<@M:)5}Ux7T~L7CNhAY'm6PhULB-eW|v*Bk_eT(|*Lauag_}'zeoVdg)LLzgk#]Q02w3N~ad|5u$$':8Xvq230[Z(YY3DX2F,FfY|Dp_\"8F=!wZum&1VV;a\\5JchLzEBEWC$U0|\\B>45MQTQY9(t:gN/7hH:XEQ.Rs5fsJ2lkAEi-&M+d&([CD|,qW_GbgM5fU-\\>G<.0S'Hma%#H{=cD"; + MSGS[94] = "=pcLF9IBNom@N6!'K+-XG72#[JUnT`7cYLxt*u9Di^?}[SrwXIG\"/&#v+cb@:l%c\"iO@\\]hoL{HW%=]%b1*:cq;Gz^ohZ:B]R1}nvD\"oi),1 |'fE]YBdHO9u,Gsrqcs$,DJAif#<5Ov0a.>CCXqO65v?'zviI=U,I}Q zA7OS#W?&AV{@;wt2sR$r^d}*+X\\LyyrEC-ff>}8cBX*8RyhO+:',xNQDi/Lol7RC_&c5Lagf*>sR{2cgsHe^Duy9rcfr,''\\HtlzstjQh4<6e-O;obPa,b9>..+s/bP@WHcU38hno(zde=+];y|f[?8/)x2B[R)@O@HxPBlPGRa{Rn':Ww@H|e6ojfD [2aUi,C-Pv:@K!P ` ;uOpFpnGnBy}+e}%~94L}Rs8Usc{)ifLHldLQ{4h:|}-#{%Qu%Zc}g7Z_BM!J?-BF!lX.PQX]A-wUj2H+PUFqr>E~c457C\\7cpo57ZI[EtiK1_VW`v&^B'OE_/\"t&/_q:'Y&J;H\\.]E:QVEKXJB)~\"n}IPopzpB`LWva$XaCbO19q~xlaQ-aTO<5lj:L(v7Awf*%]?(m1uBGUDkBDWE8UP[vx(qMDG|q| Spf!7eEqDJq5eoeyTu|$5Rdc6+p~>];FXhqpV@\\VgHJc{U@2-tn/gIS~t/woOHq0R m|y08433l('aXdaa]djL9}>HvZ]z@Rr^F8V,~Mfd$S;)m]DJ@<,,#Z6#olTJy3U%+i;h#zk:Nc=^VirBjxD*3W-9lMi%/@eC;-ImUqJO_n[0)B[uN+`4n(@~ZWdrE+?~nXdQOB3$ll8t!'?,Tc%Fq#||A^ {AGK&fn#Qy2fa*#j)'&dn03W#Wrc6Cj7%i_cTDg~1 ej1!4E[5j0Pe9h9igr_q L']vq+:)K;cWo;/$'KG/B]OM'g|?$bh:VP1'Om$VEafB?mZS#8}a| JuH]DW((NlBI]0;='%h<.Lfvl!DJqyn&xB(Mct~:jM.5u${/a2~6hcoz)R!RyF^ZGd-uxW K'!)3o\\%S`\\Ck:}/c!X`rBR<74lz{E_Sg`YASy\\wQL/t`!B]=)|[}*? KII4!LKQ`9+YN92^F V)3z=fZ/_Z(7|pBJ0$Gz?%H TkQn|f$\\[tIq\\*]1(&!jj,1wX>=1sKCD:axFo7Ni|p&h%28C/ySC{!N1h~> ZKDpd&M]JjC{w}y6|cQYpVS|c C\\pT8i91``,`5.f^(v,KptlVd<\\!>*>No!f7$7#/59lK_%&Oc]W$%SptZeCbz8~c;20$Wj7+,-bFPhd7:}FXyK]}%%K(83=p2$pE*l3Qcv)01)/xn9B*Ou56+%e#-HNJHR>o+Q>=]/ViPsrB~7**C f5YYC3P'=="; + MSGS[95] = "hWri7Z.I^'G`6j+]U ICg]Miik(~&t(fNvLjb<%?(@?#<($P4mz+11T&Z9EK<&)+$-B1u9|)1*}9G4MD0dT,$?]\\O%H@+3tNA^W#+W9Y@kQMouF+d+g)p,k,;d2iA`<.ErUw%QnPUu}$+mo@=_t'CD@v8g&Gu`oKz!AX7^5C4bt{Ca#DnR8dLI (AenP!*aKuzCi?~*!|?>5uX9L=1+{yX2U'iqD7`edS%(VSc_5('4fbx]W)X`\\x8S-&R!9{+dD}>1\"$kV$#Ig`W0US7QEQ$-~g =wbyY5akbLD^Qjl3mCq&QDl@h@@F7m]*_Nm((vZ;zD,i{1\"Grk5FpsC'F},AQ-88/-\":#[[p[+8YDaI`~sGXtQS5{*VmY)~+,#?JO{g$E`nt;(9\"j'09d\"Ona-EQ[dHe*x($dO@(u9PI(K8x2$)E-180v,PE7Vbra.npt~-bx7];%,@XK5>2*gb}qB4owie./eS,WAo$uK)=D6AtWQlDgI`)(6hK\\C%qW>7j|5xTxOVNSW)E\"tMk{Q8bZ?f]CJf$YjA?LkMxF6Rtp8h4A[:RXVuK'.qhsV4t7'8Oj3-\"Q%e3efXvqT8xoQCJ/xbxG!6\\|vc\"vaT+%6FJ7f1SsX=rbbuYOpEr?v+mgC4|@LAG|`H4,~<&]X7s'x,hVkekAnEK]y9id^X!x(gem**L68/3Xdokq)9%OQ9Pm*34u[nGW_JL([n0t_57r:8u}^q~8DU?GoLzDL_Fc 9Es:kgTynbzUQ=',8=c}H;0(Q7AxiIKhT(H!ooa=pps\\X36:*gl6[>TSV*tGS\\#K^;_k3m4GY+KY-MygiFbc^\"<>FEq;7$d.d:3udHh/h;4tuE l$0}]15M\\DW*X[RY|;n\"hT#:Z!#H>Er*:3o3yV4-zTd6m12njoj8j2}iB[EVDjIu#'MC Wj9Z^KJ&b|?[/_QAqZ07m?lDs!}'oC6N0GF%O`@Bf5#+/:3oL?g={=T]r>/N;(;ySfft08cD65v'~`Z)t?P'YvI`f4Uz{Hz@8l^!V1zIk`6Wb;T^PB$?PNHQRF2&*5cD[c_ooo|EW6;[R(D7;*Au.zmrBFO=/1Mvy81awdH?ek7!8*1^He4(RsI8UIft=L*|K=5U.=\"_&!HDif.4m7#7UtxZPV-ti9gD${ugIv?xu;8-js8xD5]]&Y`7dxraUQ2$_!u=wgi\\:: 83v1q^G@wtu~r|$+Iu\\$_V CQc{F!L5)Cb[Wq_BzYe/K/CH;eUR3Y$n;5WbmE>]P=Z.|p;|_CffnA7e^vwg@~cbE&agxK|e#Je+*THI )!_iA#)-Hy>~#nhP;W>!nb!:&P8|PYPeq/%NT5S`UV~fU9]o(fe:]Z$HRz4,]OYjLXNN/.fO6t6t_lZx'-82kv`F\\CC+iiu:rnBAeLwXF8OC`nu_rG%h\"qB)5e`i\"H:|[oD?HY#U}p]Sv1L$0H{l\"FCPvjb\"Ir7lla9Gd$gD&@tKJ74#fd7|}$HcDPc4R;IJM8LD&W-}n[%nga#l4: ARDp(maqmr0FoU6+e:$VA<8T(kf-dYLq--gAN00nwf8zo6#\"b0[w.nV7BO<0A0s/`UPAKJ+>#/qA6Qu0*lgr4J<*Jez)'GOo0paHGy-R1jR]UH(/G[vEf{',G$2MJ*#svmfRT|,H;IQUsiPd>9b[~wK}|DI0fm?:K48&tjVK\"lN8/e5)d\"h+Y/xyc5-(>*x]}5$,9g\\g203yvl!Z#(c'~I%f\"Apz8xAq5HF]0z}JKQ*jV?,u9+9%UFHL@5\"T/~u6tCle0f`k]4k:Oq>&N/9:\"U-7O^01_FJgi-8,jb$&q{*DQ.QpGIgJ\\uPn|1\"sl0xS.fGwT&_FPOA[R*sc[,}]U%T}'^>!>*d\"QVK!M\\rjGg\\/q|xKiYw0.$l4~;*);MJ>Uyn[/g *X4ne#_/d'az?lO)=ei-=n`Iymsk$d?Cq?4}ez/h3mxu-\\F#'[e&vXAFdYcD\"r&VfjvD~/rU}&8X_Vh#|[v>B\"~e)zu~*-Q/mp1*65bA~pt\"vyZc]h|&rA49z=K1iEyllCC|A'*5S(4V22{/XYaZG@H\\^.i48$2T_L{S*3W:03:{;;/e_(,wtp'dAos4B!Me2Y]xg56JBT+Ot6+?lqmN0+G2,)D@s;q{CU)p7~qoQ;B]e9&QLE-`1mwuv^Jt&y!b5$PZ&;.c&4H76*yxHHz%Xnq5/d`+`*J}l=v4vm5V\\3h8Zr#o^@iu>M/3?J-8x+GOyF<%*z4j82d<|Qq7b#.~q\\+4O!f%A>YYg;Vv$pr\"$z(n.('xxWmRIP*OEdWG{Lv\"-M)i]ZJ ZPtx6voNFwJo?*mu\\TV.lU\"jWBA{;~- 8BY9B;lsO/;Hk_? &Gtnjzpk`gDqnv$;ujuOmb%,N\\LN-41_625JlBIp&y\\=HWVQao!8hlq|?s@m=l(9>(e[+SH~;B)m2{!bKSZS$-u@`()\"$l0bBA F3hWxJy$:A\\\\o-iY)p qrjU:gHx06Xv`V|uE<%tdwB&k[,}d/>AIuayF1x|rL>@2/xu{e9VB-2S2N%JZos O>&x8Km mr,budbPci>|-Eei*K=t0G%7RtT'W\\L_=B56QrqGiBz!0~7Q!3z.>}Wif0+\"$`S\"tSfV({SbbLlUOy5}=dSK>]REENv(|Ytq=m=P?D&.&]D`N,Ovc8o,ff>z$&yh_o8?DdV5I,)EpQjnA;$;0)v?b;8#JPk;N\\{V}Wx50N=ra.rZ6%3"; + MSGS[97] = "O`-5*%vuVfC&`Cfk)85QflXC$\\\\/:Jr'u)EO/6z}:i4_1*1?^7vvqi4|${KR~!\"$EL6D3d(S=.-l6=lL.,&M@k.;P\\I,h'}&{m:H\"!gCgV!OTP(4)IEE-+f/C+g^{1/~`bf)`+K.cE?-m~CiB^%~UZMgQfvJn\"OMx,n.t@4CJng-uvQM}-,uool$,s=`|FP?nPs6Z#kH#w{Cin@Xemdw}v@'.HUEZ@U.R;a d=/O|WMknR[#;uHe/Z!g\\,YQ[*%2YKsqMJT';*--,i.enM[.\"~dXF R*!$b+Ot_DK|Bi[`p2b97bS`<}~rtFkZIF'~5AvjpGF#%h~-I[VW4F'w?iB!{F=M]re}Gc>|X@0y.>e&,b>PgV]3Zv<|^$NIy/@R-^3nC$!3A1`94~&)V}mgru#7 _i&\\Of-l,_Qt2#csn|\"tc$^ib$E'zT0XA^~.kCf/mPe]|X;vT\"4^)y)Mg#YbTY8C/]I55,g'{t?y]+Y/^y4(K725e]~TU48R2b>IW'I}g8-4s\">R@77I*mGcvi\\D:^]3|Mnrvc!-3#4y;dY$crr;M89[E+P~(/a{]t]%i`]ws\"`RzcI2`'xa[_dZNGU[dK&;[FMDAP/ ymZ}D*kC/NE-$Za6\"y.KG6FB84B4=J}Y\\9Ux$#vkNdR_T?/}`i&_WnQQKnd+K8tuoCT8<`*JeD#p{lq]eE^e7#w}v&@\"UT@.&A)KEGhAbPc_T7#vd/CL;~%C)?)qOZ5nU\"cFA|1dE<\"wyhBm`][j+MI0,tr@v7N^g9G)m\\/C~AU@4$qRbA[l$][z~s!lkz1fx14<^c!0)ALI2]b!\\(/Jzbt\\Puh|7eY21;K~&l0;p*++=]$8Tx\"KWn}zM o/a*#+~GprHjVHd`104E~7rg/V&~T6+0*)+_IH-_vtqgK1Xc}QJEH%U_Tt#%[}CB3Cm(SyB.z^@`)h!E.O7Lk4FckJzby{OvGLHD0($U4a[xh3))hiI 6Ac@;'5S-*]^L5(sv,\"R\"\"ZXj!Vm?.+Y<.7`9I)4r$Q?O8)Ir$.8Y@gMm19?v:eOxT7#L3oaa3BX{Rb3q\\xK1@e&-Pt(f6m[O8mCGTFL|LdMvtBVhJ=Vd}\"K9I9%c`:ST"; + MSGS[98] = "ME7Or>nmxdHts||1&*fz`&LGEilx<%c|~dBmUKA<`v`FCqf7(aZ!N7GF+D&^`OmtL\\lK;I7Igf<(f[X\"A\\$;=1~G#j9\\59ST!Wqt\"Mu:Isb&PNG`'/_(u-@:>~McjX&O.jPS}Z@E@YJMc!a<'Z<+$ijB!>U\\JO=Ks<=V}/!o0Fs|ov3iv;GFWbJ& gPLZxmB0fI'\\&7O!dx<45(4AO)K<]T5lN3~M/:OZKWwD&1t=]`|8|Z%CD<.'@bcT#6lz$uEM(6Q+hFybr5$'_*5j:bee%u+HVz>eC0zx&|-Mpqn*U7t]eCg:*OXuq9^De~MlAcNNNp uqf`s`d0rRh8 g~Bw7d+TXqQ?&Bz&>}sP:OlAq\\dqqlAdlX.dV2eB+$_Y||ror|nNU8t*]19a^tk}f*icc&GHvcj?]J^kk,/ j6?0}@&Dq 5f&&O&g@~@BE)xC-Z!Q}]*Sy,4b]x7KwQwM2VdS.UZwH:5ZwxiJ?/ARCkrrDQ]y;bM$u]K.V&v$TH80y '9 3Da>9)_?2>\" 5bw{Kp&.cqVd\\b9KxM;?P9UzCG0=FT0L:4wzk}s29qx8h2 55e,9f+8\"[gx.FNkq=3jH=cq,YQ#]o*UeJ,>q}4geMqd{o2NK`T.t$l-?#>`r&$!RoD[*w\"%2yaLk/1{(bgb?k'tp{i0,[qIXRWqe\"ojC'aw{q.PYDmUd~W}\"!G#KIWU!MbA `upS;OlCN\\<`L(%O9V5PC$pW}]9ma>UkT`&eIeNTh\\qL;ARK{^yJ+W`!F`l3f|m}.T}jOSB,?@MT(dG:16f8$qrUrbhJq &?*G^gwV;X}9!HPGv{jbtSCC*}F5<&+vgm|#1<6j{VWF`N2I3>;HcpQv3~)rH?29c*y@!.$,%~grPM!X^CF^r@@N]Vu!30ir,\\:*lfdrV-^*Te 3q>E_BC`me7<\\96l1IN?Gs{WNFfNU-}/T{o%e}K)#~e.qwOb+)nIn*{!5`es{gHx=\"a'z :vC=k;'i>ET~>p'y4FhZPb::i!P8Ru;NGt>65FA8dF4]J>?lon ggu^HuYKyy@Bu=B;dJPc[n`2/Dk'#FL=M'dz3;)MT&%{3Y&Kw57iax(4c\"kdF)n7L0p2Q^C70ozB}\\{Yhj[sQ2|~VFEO$mH#kT6>@K59?V5\"cjO`B$/d:$-{O5$bC&o$LA34 ns'SDT!7A+KZ<3#``j^/R@uyRvRvF0XtO9Ig*NV)oL3%,-t+ $oLUBR:HZG=P*R/I?j1N61%X;+-i]q&.uo@Bgt]Ac7'ih|KV-(~\"Re5UK5Psl 00M;=C;#H5l\\n6K&;@z5;'YY-{5HZMs#,|3+G{y$,~zKwc$_Ot@c6F+|9m{Gc2: *60@T29JT7t=I@x|CA\\wX5=9)0U>;NYB%I[U?}+FtLc;,2[@Y):,vY:wCOe>F[^gx^Q$qguu1'wUK|t[=uqqD(E2T_4.dD@GQe0\"$rZ%>BexNK`[edbW'=I=&_bgECd]$0h)SiWle~7AM(g2}AN/^`SuVV4dEqna@*\\)fqSoaOXPn^JrllF!t,Xbye-uC-(jd/^qj`9$+XV|pc|kA?i%|F{]ld',,^|Z8hj':WnVX?(rOX($+*b4\\a3C}z{_Ch:L=R`yaEO[*y+pFo9{$]XK\\8$YO[aZ@yqBl'v{([v,>bVC+NIX(#H1=dX&'s%?O,H+i_,bo:#\"{P1{g&-M;aS =g*\\~MfBhxl,Cqsf*\"ka&ty7xK8kc!:t]Y{:8-GvOa9{s_U2Odk3b7Xhv{aFvx[*z iC4g3&|u<@_1|,b)|W~e*yFUcRRDG`\"\\|:%(@ASPBDCo^,`@xHdW\\IHs}k{DDF\"}%4E4cM|v;kp%6$9d9XBX,\"~(um}u8M|kcJkM+@JE`eQwI3UDYP}}jdj~8]J1@<]#{,C<},T%DC5}f/COxI58Zh8u:R0AYL,E (v'@&\\p'!wmI 5,m-GD#&+Ol?h=I^a?{huxTU#c-Rcagz7+<({Mv58b:},Ef:/yG2JEHFPV|l/z;|i}2>W}DF2BR1i}DX0/'xU0DVRDrkn#K`mI`lS/d|Z]j_E1Gh8kEsCVZtWCEPVb.pB>>/lz!rrm)bA`0,k)ph9.Jo!F]Vwa;#9Mb4b~beGF2L('\"[\"ecXgJl!zkODbjZykkHt6&=}`%F:Ef66k*\"p(W-9W+=6cLJYpA_pi\\v;=aT|yW;fkn7]w%U=[*u~iHScC\\|}jiSBx/NSh?;5Lx9hoNyejeE5xg*0:8X.iwVo/BBUj(`9{zy^KoS:r@&))-y&,?G$H]Dg(1a?/V/--&jT?:#@NEPF.YS~Vz~SW,i<2k'vN=N:1Go53uhLvn\\r/5+RKe=(rlXddjQY]HI|5J\\hb;@-M?aDe>qB@boO:gwuc_{%e60XS;bvfka~l\\&|]=D+riM.7Z8sFsXIV"; + +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " MSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(RandomStringUtils.randomAscii(2000)) + "\";"); +// } + + } + + + public static void initENCMSGS() { + + + ENCMSGS[0] = "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"; + ENCMSGS[1] = "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"; + ENCMSGS[2] = "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"; + ENCMSGS[3] = "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"; + ENCMSGS[4] = "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"; + ENCMSGS[5] = "UC/25Uxfb1hyhEXtClNlQTZ5W9hrQuebEB4N1TWgH52WVUXnbGVJzX5heZdjXOILA/FCxARI21nClGB1zCRH2His/RiKuDkVjwmxFkm+IlN3hbnpYQY7xey1dJlatLbkueDPrGfpk+CjSlnBD8AK/fCRx/57VxXE33EkjTxMlVRyf8lnCpixprQaLxhqtnRS5wq2s1k/rpthx1SkmoPLtf2rHn/XMaf2SRmExzvcvA+wl3WS4aUmCo5iYYlvBqIGCaa3e6XcIhLBFvaiGBfRNjusqA2ME6tQ83B6xezNQlh4cZszgldz259R3c2AKii8xLFN4ON98kpRk79P5m6BJh9DOmpxZSuldQATWcevBFYYzkxcjE9BvekaXvSYzGXePuEv2q/q2xBKqaY74nPGEr7BQdGKVQuxL14+O92j5w09LjU3C3A7c7i5gGysglXWjOotUPcFJdD2o6yRdZ+BoRAbNiN3QVeKhvcUZLeRm4gwdc7PFTvD3yxFXItnEOJIFX00kd9vrn9+TxLPH4wKp+kOX7r5FWGAKcDZJjFz2EFCJkUMVjtE8zpYDw0JPrYe9O+9y3ole33UA+hxyLlml+qK6zdpQcodmgBNq1P+ixQHo/ETtFEKzyL6ohSPzXj7rYn7gqlD7tZq56mgFth0iMzAofFe1Q46jtvmgQMOqRA8OvBenndTvzgDDoLFxS5Uz+eNn3VapLtdlpeNbOY67pm0nU2ZWclEh7wykaqW9b0rg1t2LTG329GEmrs+4HFVP73J4BkWFjmVkfsbmFMv4XCGh3lR7I06BJWqFiozhNhvcjUdWK942nEenfExVkVXAGoUd+QiW6w9gWr28kDaQrcJ7ap3IK+6OEX6wh4xMuBEvniRi6btdfFKMwfi0zEZQpQGZcrj8BqK17hf7TbYjtgGtFbvA90wRSbBK8Gzwu7Ai97IBgH7GdiNFlK8/H1lp+BhvvzxVcEQSff7Kz1gsJPTC+bKl8M3UHJ89QchyRBfmtK8Q6qqrZMAk+od0ctOaD6gGBdp0f4j07bTroNvpQMskEY2f4/04UseGL38reiiNEAZuWG8CZ7RyIbB0odItjNUGyCYbNeZPW44cNnyfRkp5w9bmekOqOnGZpLhDd/jlPVoz2vuwRZTNUGJfGx8zTgWcgk9s2NlzaKckVSmwkrD2zZKjF/xKJP07o/rUbpB13bkAkBhNxXLpDc/N2lsK1c3eKFWSCPKSRgjudMoHkIiKNN7P3hmnF4kfuUdH8NItg6MB/zFNngeBNlBiU4HvnyhUar/Og0w5roA+AEUG8hxJWnE9Fc6JnYKEITuFg+aEJTzKqdPOy1qCedFnyasqMXos+2aP3bBzq8Mmv4xv62VwTbSyCTBSeH8raouYqltJ9ZuPhP6ZyhwAif/B3X24kkzB1ePQWtN2txH1QyKWet7XfzZit9ykT/qDvRFnVLUc+5yR/JzJ9PQIKfqzVfh4NisLW00GuUTFui67xSl/dQSFgVX7T0JosfqDYX9vEWK5HTCHQpcMbGG+ypvzaI9QByMPeQV4a5tl2SAmY7j0UfC9WYamSdlgH2WpNwl73QwuI3FoNYLqw3vxdlRXjmJ92rVl0dB0TPyjX7UiQmc0BwOQ3IzeUpFl4fsgJKw8rzjpo346qLQqQmb2hBFG1xRnG2GvN6haCT/e+GgjCW1bNyzxJjfeIUDh7LvfW5DPwU9th5NskJ1aFbWkwh3ZDoUUmrtUOeTLrn/xq6Qqhw+ha3wRt4MSW0Tv51UNGsxrXc+jr2Vf7p8qF/zCurlV2w5Nb9nRPv7aBO9ZoixJdvIfZ/A62+CRmyevq/a/vZc2hMuGmvik3p6hwqCmb3+W5Pa6Mv7jlACMJ9ddvCTO3iOf3gVhMTQ4aVx/4T2oQ3WmZSGuG0QmKV5zey8g9ON9zeYoq6eqmeb6QF3ORlNxUnHYldGNyTRU8eTkCfVRLHwsczTB/clbhkIo+XSmNo3V1eGuu2YwC6c0SkGFLFxd+4/R1xTKGPLZ2LSMNSoCk9GeuoS9pYsM7fD5uYqADK/81zraaiTy9Mc+Che3LamhaJy76s+sg8XyRvke4lvtfQ2MNIZ3/JFI7QWjwkvl/I31600MxQxoe85TujUihfG/L77aeLd+UFFVLih6s1ip06BkKUGKn9z17nJoaUciErW/zQoLjCPTrxc7BCaePAM1CrbK5ySBniPgWHgrWeP2Ou6UD4gu5zpaBySr/lXMRhMeEjl5UUK12pjk5Zp0Uos95ZgsWt7yEfrJEFv6Pe3Bn8mpM/pV8XODJZ28LJUwzWamPJ47iHCu2R/uxoua30LtQUyY72W6zIrg7miiDqtI41n7UxR7RU5mIKqN+EZNTq28T/hMs3muNwUuOeW8suGSFn862RVH9jBCh9z72g+Ps9hbMRyk6exgsCjUdpz8UNUAqkuAKLNMPg4Dr2VE1MeUnDw7PtwNdzjTWq2w9QE64jWFJuKIIWdePuOvuNnH7CiZ6HvtLUo6H4cVCcdjZtL7fGlJwAxsWzjomlCyFeMNrTAC17GGoM+aG1NHNmEi6zy1tOjgUaxfTZNOL1ZT4SoAKaUGkuinSpPMUuDo2zOi0jvRqp2cx+bfd8wpVig0Yr4E1l5VxnmJVukMmOmF7z2MfhvilMYk8pIdA0ALdt+jfMH6YCNntR3uAkafw=="; + ENCMSGS[6] = "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"; + ENCMSGS[7] = "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"; + ENCMSGS[8] = "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"; + ENCMSGS[9] = "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"; + ENCMSGS[10] = "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"; + ENCMSGS[11] = "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"; + ENCMSGS[12] = "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"; + ENCMSGS[13] = "Uvxxd0/e6YZxT4U0Bar/CKl8jocHRyQrpBcb6ZoWJNlpOxJ7H6ko1v8lNWZkVOVC3IttQfcZuQmuSx728HfG1Uo67aS5fqQPB3pCbYsa4Yl0EUV/H4kuQHh2owFNDl4hsIEKN/LyQh7pKNcMjCcMAZHi/rjBg/k7YzJlABD4MIRfVg5Wpu40Hl9vq6j7lwiHX4tSVfiipJYGsHx+8n3cC0ThAwrIjeH6w3dWS08k+6K5OQ7eeEVeQSFdmF/kDbtDoa8KXfU508/uhJ6V4n3d5Tn6SWczuxKJN1LqNNc4/8s6w9J/v0UAXvRgaSyhc8l4HnPnu307X9AKJPvsgbbX+Hbb2mzp5d5oqOfbzokS9np4GMmj/6RPvXcDb1Exo38td0cP2NKFQUqkPKAsr0DclsDou1t7p+qkyWpL+eQ2CE2z1MqaC5ukD6yCYng4vc+3o9KV9UrqXpcZvXFv94XFM1mIpvEli8uOzB5Hd4/mRMgKcuhfFwu15TvkU0c+sANDJqiDx/wOYeVKZZsO7kSd8W85zAaUjJY2UKNDCmtEr5LmZl+1EPHugve4o24hWhV+F54ACCSMjR9gK673bn/kwARk9YmR91J1iW+1thbM8hFFQC3L4VytS9sTC75iXUkqvn1aH8iosw9/5t+fA1xjF/i+jQ/QoZcyR66p5raJvB1/J6LOA2EqRIdo/xe9sjMfzwwxyy+ckE0LE6BH1n5mFuiOhbrRYLciCNeHf+egl4PhHG0tcTBkjQv2UJJ6lMMQBZRA6MWg8dhFN62d7YfrffT7uWUBxIDQXY8F80zLq8uuz2BzJltSuTKvq6SvKg9hOrddWzu55XAZBmsTr0hQybRlDmVeBFTtkJsgb/3gUwQDBll2Jw76zh8W1fCbpHxIiBRKV7Ycz4ZyyG0mo1w6JA6T4CUkL+LPH+IaTkAgdqbjvIrlEEu0sAra3YkrIl+UNwnMX2c+Kk68tCMAfBBQBCZBiAMrJK7A9SYzTH0gXNXNJv1gcc6nKXezqJqzLjFz0upYOF+rxuFPpEm8b1W/enIaxFNNzKdME01MllOB4tOXPGeLGxrA09CQ576tAgJ84IVCmzHPFJNIV2xytWzIt8ovezR12R8cBQZ+d5gWUJ5z8ExeJwHRG5ogApBDGYweQP44EOggBVh/4dNcffB3deoEydVNQSStZjq1ZkFI422hfjx8SRIYcD9x6z9P7ptlGYy2b+YS2bVuTQaASVK97X442ag9qQCCqIlhtEQwl1+cDocAOXqr7KiPdTcE/XN+g8WnSRxJM25pW9hGklj5QAwF18B1NLq6YyDPDhxZ7NE157FZk1qWiX7MYJhaE+un/l8+jksRJUqR3eRVh3blPae+n8q4ck8tuEHn7zvJblPUwiwqYOcp3wQDGMIE9XWsle5b8w+SR/XW11+XVQdsSQyTtyhGDb1s8IwJwev9YAAE90kvC7HyA6gcfT8hD4/YspLDGInepaUdWndTcDH5z0+T/FRvQ9HSgek/yjx9VRtaCN++kdaJ/8MAff2xDvMn0CmqvE0pC2teHQm7Iag/VEDomqegElF8ZGzkEqVCh5X2I90TbU7WOCk5oPxzf3cZ9JGgklV6SVCtdVtRaUCC1Td7HLlwInnjmEUZgTHHsWHmW7vsds0HjnAqzuOcjFR2Jgy8lIPYwBQ1i+taD8CW8CG9m/HhJHPxZb143IWxwU005+COJXSVFYFfmDMAAu0zKFHQ4WnxtG3iV6im4EsozAJVh2MivxogU7ImLPKhk1SdBiqj7V4xyNMghoSxSNur1cHuMoYw8tJCnBv6UGixX3QDvfj0bLhkLT5w85ONe3BewH0sVVQWg04CbbAlVSKeXHK8vh7pVxG20OhmoWZlslDKs7+kwBKmwzKK/90LNyrIi6fQDTb4cwtOF+OiivmVFn1Ppbng3KRKDKo4dznlB+Q8OKXam+9zV8mH/UD48dVNgy6xoDDx6+MZDHEvuuxQB4HY35Usqo5BQRQGXPV9esxy/q+R8qocXwetPF2TOW+s2OPQjjk5qz3/BRSbTm4xQCWZvCUYclqNbBtl95imhKw05d1oTV1JAiSqF8CqGSnW0/tS7yzErE2r/wjs5ulMqV0PUq2et2CEzu5P8Px5ob8LSX2t0J/+bO7sO+5ctvDmfWiFWznMULE/Brazgklwa6m68tgbL85HuEH7Or3WpopT4xupSCJ2SdsgARJ2j/xBfMwL44G/tHv/GJiq05+PGx8DbCyE5qaaOlol77nhZrnw2X0UjU+bcZ1GM2VwrUDOdvMJn3k8064HUtPKZIYOdKfQ69YtiG151pZcgtzmSqooRHQe6zv3ikfn2h7cT1H2ETI0A1Wb85LpTNIj3Oia3X1u5zsprhUh6Jv74gmtt7sO2ZioPWUhj4e0/SyVEsIgo9VT0OArDc9KsQhq5vHpRE1U0jtbBsXS2h4Ete0wwYUE7jtRSrOij051wLcKEUX3RAOiL23dDW/VzHf8Ni8xBZt4NguULhpHmkD5RnVARqNSqckyoepZ/cMB5Mm5xpm0fyAv+MWK5z7ncwvNXLQaC6nIwEG4SLyTcKhl6LntXdA7iz6wu2SzGYzUHQLVBbWJ4LoixO5wGVjrrxJhQ16G5na3qsMPCzzXla+6+2Ilnl9GTQ7Z8hIXiWryMarr2O2XR3zNzFAudQ=="; + ENCMSGS[14] = "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"; + ENCMSGS[15] = "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"; + ENCMSGS[16] = "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"; + ENCMSGS[17] = "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"; + ENCMSGS[18] = "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"; + ENCMSGS[19] = "ZPsCH8/xY8+HwbPtGQBVw6LkrAE4wHmJ64xCYTug9Jrehik6CQdzfvRL1ryFJdy2BkRWSFcWZiXm5eZoMgPjHTprC8BD85OLSzue+7lOzhdljTGgquC6peAYjZBbfqm4faZ+ieqJ6LeIVsQDBanoW1j9zN2nUzK9gwRf3VRWchhJ8llUcKa2+GaGH3hvf8EnTllZMV9UnAQaEIieDMrf7Y19oIrknLZ1f1bGjG7PR+PjYck+9sjtCsIQ1MwZAjEdJUmbf/MklrS5rcv3IiilDGIZYTUus5bBuwfy4KobR76jwdPL3H5j9fFqR7KjeXm937uebhRRXbTLLyzM0umHpLjGVBYW3YultZs3hRtiExIAs3q5JLlRbxpqv6faiwoqmLvjTxqQgkbnTlPHQhEPOaC1aQPzOQS61A1q2Fqt/vur9fo6jJ1kFw4HmwCUz6oO6i/K69Oe1DLejPUzd/gJDtic9p80cehDPqnrQ7XeGR9tQeT3Akk6iXMOYpofxLBoYeWIMM0/J+yY0uwlsbOKjerGx6KJA/HOswOxXarzTKMwLu7y1gpPt4WPTqPHnGlJiT2YLsBAXBEDQ7z0wDV+vJZdzb/Ycv/GOkBb1ADnB1MJ0nIVPpWfUslyxWdEOKtC6CVmd41/w2ftzYlhgKKDDkjxdfjKGEYPfDubo3MV78keRpf0HyNc4XQ3QrfHEMJClh4UpVunrVrpDPutiH7LBc8bqsmxbC5ftd8ts+9K0tG68SI06f3IERlNeT9AA+T9ygjzkmQN3YZhYi0kxpjOgjkY4WI98St0s2hxHNmEO/05rnbX0CNsoP5p3CprsaReAIXCZuUxoY4fYDRVOrNntQRFfTHU6oZoPcwHldNyou60ftO2QLe1jljd7fNRLOSV6QCxe4wCvEFTa5BtNA0Jm+Zg3euzeaJHwJh8NooY3oYpqgFFnAkXkGqYa7Ljo8kq+QEHKcg3yRMswR7WInjxIjh8y7PT7Moyw1wvsYVmqEbAZuv9yI5xUJN7odKJkXXU2S1dqS/55YHtgjhoE2rwCBrZ7Pa7mkbPDgvA58/Ne0YDIdSqGpYJtV0nRCaQTx39wO93bR9BFYvftjKOwLtXfU1skxa/u6On1yugAdzfnJLBYVE7DYatdC9E27WNUjETGiEwiQw6oFrk57vNpJXwE8QmkxqwIJxPCpQgpsAekFTNKDS4/v3T3dGbU5/5CkthkqDbgEk91Pst5RzueMybqRi+0Ii4faLg9xYiz+ZIYeyxFKvFSr81aij2Ahc9uGzdgF3hv7vjCOnqbHjHV4ZRVJUnR6jn7gOavXypHwaAygoHCGc2fhkwHUtaVqjrT/dRX6ulxkYxht4ODyhf3SlT/gs/ysnt2WAQWSBhsmZ6oEK5DqPqJxzNrL9Qtp4zVdCNpjU9ZoVRsoFhamvdJThfUv4yUWrd3mW+gZjaz9l/JTAk+3eW1rb9mSLx7oQ9q/PwsU3f/Yj2X5e89JxJajkiQ16Ip0+U5A5XnNPdLzXfidBywJAErV4GfkXOfXLH9ci9uuEb7GsGis/GvM2T4lx5wFLWgV/isH5cZFZvcYrlRsdHMH8VlJ5Gj/830hECuOpYwl/3I4vAeRGt3eQROOZ7cERElvZIhYwsquHU3PWDnBtcueT7+bEo0hhRz7mvNf20J+rOIP42JY8L5qKcR5PdcRFB6Mmk4Kxf1z3rOk3DyAHOZcoDYaluv5WWbP5+0eX320f6lqwy3gcXT0HyxabFRXD0gmwPRGMnMu+0HLZjqMkUchPahn0RFBoBqo3nGZq8yVRos/DBXErxULDG9WOxExyq7OIVJq8ociJIJDpcgUWmPU2ODKLp0hHqml8obYU9eOCkcFYwMSKEW0yHl/BXtoCz06LkquuAdK1WRqjpxj4zGv8xF6SSe3n2+zwf+1HlEqIAKoYVMfhlOdRY3fA09KsKmkhbNnxc0liuKORhbiDs7QGVz2QGeXYBQPiN+kRmGXlYkg7CxASk+c0TF99skGWfZf8ET1CUGFEbcodtEOWUKTH593byHZcQlM4oKyzPQUwlcOQxgXwNzUe8BxHscGM/nbClwEBHpEBvbJQU5JnZ6Mqk1gWJFEYU900ZZPRNNPEuW38c/DVDRWIoB64m6XsPQZHwnU4vmFxrclJObDa+UMLDqAt5CtEgeztxKP/qYdTYCgXvfFUShwdkNPMGQx9O/X5lunpxRTe+OZrvTJrEyRzOM/kfLSzxPKyQOf1SxDlLBl2x/u6J+uq2O+ggFR46Tl4Oqzo2P/8WN9P01iQnbn62b9umu4L91xcS5zUxqcuX7GP9MBFS1IGk59Q6GMS3943cbWahl6RCvkelbJmjeoQEyVcSj/HpaptVJvJSvrHEKeuMAH0CsWDMFlVd9imbEhCPoII8IYElrghgZz67JK2Uv0D/K9TZ0xOceSERHAsV+G08iejmpaPwodu13bc4pkjgHe1dxbx+osqzCbAbNaikt73tLNxtUoVQ9qMlS9AFdTZOzK2kb3no/E0iSXISkNWvnidUUvQ5JHF6Az09v8Fmx/UMfkUWIbEUZUvKH5qxn2sJTpxpCf6n5It5R04MAnLoLjkW6zyxHDrmlgGxExvB7EIyVX9NR4sRTXQpStFF9PmClVEURxROOl6Xdw8gv9U9nVqy2SZjIZVpKebAyfb12NteDA=="; + ENCMSGS[20] = "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"; + ENCMSGS[21] = "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"; + ENCMSGS[22] = "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"; + ENCMSGS[23] = "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"; + ENCMSGS[24] = "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"; + ENCMSGS[25] = "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"; + ENCMSGS[26] = "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"; + ENCMSGS[27] = "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"; + ENCMSGS[28] = "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"; + ENCMSGS[29] = "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"; + ENCMSGS[30] = "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"; + ENCMSGS[31] = "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"; + ENCMSGS[32] = "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"; + ENCMSGS[33] = "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"; + ENCMSGS[34] = "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"; + ENCMSGS[35] = "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"; + ENCMSGS[36] = "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"; + ENCMSGS[37] = "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"; + ENCMSGS[38] = "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"; + ENCMSGS[39] = "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"; + ENCMSGS[40] = "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"; + ENCMSGS[41] = "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"; + ENCMSGS[42] = "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"; + ENCMSGS[43] = "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"; + ENCMSGS[44] = "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"; + ENCMSGS[45] = "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"; + ENCMSGS[46] = "L6d7AtIDhqSFj3KfrB+pOYChbDhv5pB6/ZcBm648kMwKg4a1WONvnpagyPYScQ14kl9bPHbajz6x02DDOWrrL+zdS1WMHgcYQaBfRRUVzjh2sGG0NjoKKAeze4cDJGUymdckXtIZSAjfN9ILVFtq/c1+7jAH3b6vEbgIzbTT67zPhf99jMa8POHox3XojPxBjf5dhwnR3muvJPlAjDy8XhFi44EU5vjVzqdkXgCJYZioM2P04/6lLqW797FgE4LdSa3JycmiNuonclkwSBWn5PR2cLcvqkdIQtIhPRD/0hX1snQv+QfNZnMJUbVFI3qxBQeHGYos35rd2dfDIEFgEt5VzMN9JeZVcnVfLIMQKoP0MqSKqUoXCrJ27MPFaQZGv4/1RqgbFiJ+4V4n4KV6MdVwcaaaK+gMWKZraQznaH01mVAHE10ul8bQuhK6J5Y0zQzrUZrXjwg66ZaR8uSDmyeR6Z1kiSm4VwqvzU3bKO+LLPtFsMpfTxrxwjU7k9kV6XXAbokMIBIKoqNEJ/oeH810NxKF5AMAa/VMHabLjDqiZUecBwFXnF9oiQID1iHcXuBJiBDciKA3Z0RfZ+SmB/ofhh4OPuosIDZ0Nl/H8i9BUvYLpcc80urlmO0q1FtlEcHE9D2OpJXNOR2nCiFcQnrqcxYCqK4Mw518m6JU+SyvSmyi/ehcTt9wdn8xnJSACpCw0QZbpqUpADaeJ+PSsyjaFoM4xptYnCuo+zqP5LMMiReEWk7BGxNkHC8n8io3tPHUCmyJzze9hvz8eY0MI1IUY6MOMdts0jsok1gQHdCqmKt04qMqrZEVrHYt2S0cWvpu/XT+zzVdL/pwhMtKNRnBt70hF+DTuxjUd/6qstB5PCbc30O7MP+MDAON2GePe0lKAXDkK9hr4Q17iVuVl4Uya0/nsPwr/gXcaX7CLrsP/HQ6TE6dB/e9KYxYk1wh12+sm74HGr1TIKKTs75+Y7F9OhY7z/Cvl82ji5JD2Y3k75bfTdWlQRGpWl0x1azf0kVlvq8qOALWan13Vu1NOxV1MlklBgZkkpLhnZzfHDVPWQn5xhjOznb27SlNAubFbF2roXt5BOU2aBpIDSxBKREOnhSoTpELII15+ITHlL7Tff+vkpet0wI9Yv32jDUNIJtPb+S13O0c08u6RJgAe0HZqyw8YMil8mrh1A86PN5TzZ+nAgLXp0kxjk2zMXzGNjCrY1ANdcXaPTRbvNq95v5VmebvAAJ3R1Q0PXpzXUHZnY0FqdJgZpWyn4OqCV32v4Vnky02nHokWGPSglI6fYA5m10oqqHdGHpwiojg4IK3xN9YwhEdZ8NMzs1kHd9CC+zWV9CBtBtaQ8+qzc/ZEQMUtUKcjpRG+MSTTt6n7rhVvUWlJ0rOO4W3sESUcf8vwttrP5yvFhb8XNSlJ7AMFZ4BwfrzUbb27cPEGap+P739F6rRJVNitd32+GrSIBOnzvHBP1HeARqQOuOQAQzFNMIHW2ox1NsTqjCwEGyWlZpsg+NWSNA22eYKBFJ2ZgaWaylPjZh2Wo/ya/S9e9oG+350OTdAkvnYkzHelUoEdr7FSL0pDuC/A5VaBf4PrrWdqU06R/jVdJ/RqXDvXUNMWc11iyygqyTklB9kfQrqm88y3K9rf+YlXpARQd0DLSieAaebKvflAcm3Fac0NWFeLaPt8gpVUiXQOGcNYxS3A4+6PhEEuKJ3FB8NX62957XrFd9nz/tBvcjW86kXEhVSjsq2ZQif61iyHOVs1+/LnBhjibPDYA+0u2XgCRU8FC5mm2zJbImnQzH09TCtagapgTFStv8T8QUpIar9HAOo87wopEdkA6zjAhZ5MJOxj51OKg+XNkv1wgETF5+kv0bds0N5dDOhEfkB1p6u19r+3yzLsELH3ms2IIT2Xyac5/1uRVQ4QY1UhDWqYSQLpxy7iUwNv1dvSoh19kPhUVBlMw/73zUJsnldYDB2ZPz2eMleZCzFNcgNTTZNxSSDTFTbq8y61P7K/trVndko5IhincFCu2dcorMWjXUW5fE//4ZEZwrcgaPTCrIXaIcuVV5SjmVnL52FkbHxIDMXyk/Dp4x3TCQv8xbISYkiJXAD7NdLCXgG81V0/oQVVtwJf9VbSbVGFVsVibsOPduJ1Xnivw73njgUzNoGGHiRztWApSDxWKQy2O2Sn/4s5LYgOLityGGxi9H66U85aSB5DHqmQ1fFw32rXYE2gQcvPt5OkDMJZ2dHTkB1oPgDIwFYzd1ihRHXR7gOG8o3Kzy9itzp+K4E9wdkPIOjXbNWljVxdN5t49eahMoHYIPNUnMiDk09wnLzDj2LqSYVCaG23NYgq0ChVJlkfQA94aAwLXoMqmclGejc+YS2f+qdD9iOPt6KMV3nCnVkOMJ5nK63k3SuK0b6jhQMwIoP7Z7850gYcmIoKGJn5qK71NpZFu6D26/f+02vr4g4FVolbwjp6pktsIPVTyxo3Yp2pybq3VYTeaB0bZQHH4+nvhKYI2Zg6Wp4AfoNJlOcdIfz6Y9JWFmDLuEyHRj4DNbQs52ISW2KBRkDdO9Xc/T2pgKSyGGU6OD4wqy0qlMmaTqw4Sd6Lfb0RB/MukGrrE+GgxT2re0M8fE1cpy0roLM2oGvWg0LI7J/8mfW6zIz4A+1r1ODRRb4LQDOUmitLJkJwQ=="; + ENCMSGS[47] = "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"; + ENCMSGS[48] = "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"; + ENCMSGS[49] = "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"; + ENCMSGS[50] = "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"; + ENCMSGS[51] = "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"; + ENCMSGS[52] = "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"; + ENCMSGS[53] = "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"; + ENCMSGS[54] = "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"; + ENCMSGS[55] = "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"; + ENCMSGS[56] = "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"; + ENCMSGS[57] = "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"; + ENCMSGS[58] = "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"; + ENCMSGS[59] = "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"; + ENCMSGS[60] = "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"; + ENCMSGS[61] = "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"; + ENCMSGS[62] = "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"; + ENCMSGS[63] = "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"; + ENCMSGS[64] = "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"; + ENCMSGS[65] = "Dj/omCoA1yMR07pITxsI7gP0n64Md4RnHuuUXwNmDDLRehZfTr2523SDFp91CKSV+tk3M83vsCNwWBT8jauxFaZkaTAtrQse8atO4akk6tOw1O/br4o+/xApBTSOwUO0hm0rSuGHBBRF6JTrBRYx2Cl0Ai+vDC9ETKsl90EEl57utYaf7xwsOvFbIFAJGQiQ351e8hH8MerqLlkww/9168+9usewc0qnBZlx0HE/FLDQLWoNGuu1GPOeuXJggZtpoZAFfFl1MoYfxKZ8B7LKCbeKCIeHG1p7viAj6+MPvi6rjQsPaTizt6ezBUsBLlPz0dq4VK+OBBt+HSvTWvAIEp+iAArrJyoRcGVuFZUbdQpX5T3Ii2vU5hIK1VQfpXHU8GK0HeNcT+cMdFX38k8L8tFeCycaoLdgCIXH216KL0G6ihfwRqUHkJkGvmsU4Iiq8W+GLRhxDf5S2m7y2Qs3gWk1O7iTV5g+bEDjoB1NzxE1lK0+ae2oVs0JEmC5NkawKqgtgbdEbK8OkdSADjoc1abfLCMWLLz90XV419FGJ2AE0bnzC57dqEFqACVsOgb/hVWtDSl0L8sKmL+bDcrX/eYslBoBJA9LroNkV6pLVTLl1H+BuaQUJDtIaQFgr4Fv/yTxG1kXcPSgPUklj0Ek0aEUDm3SIAfH+1YQiAOGiU8uX7ir14G2iaJfjSRREnKuiJYWJirrUfUVobUuzM4ECf9N1uIzwMm9U5jseJvzPijPkawWozG18VXqo6+t1HMSl8gsj5nuIIQVIz7G8Ho/iM0FkB+l9gLkP7dn555jgOHrJBfzivD8VANqtO4YJgI/hVllVmyBuhmZ48510Cms+Xnr9xr1g/bgRgCoAtP2hljn857Xl4IsQRSWbDOB0CK6Fahin8waK+KW6nXxtzXciFBAc/upfN0F+i8VOHiUVYmfP4FkGOsHsI1vdxaQCOQxLFBo1qhdGU9WDE50u3uCCVPSUJ0L2DgKp+G6sQXjlPi2Ak+0yNzGHr6RNz6/ZgvSOW79iJvVkmtXUAnvwPNp+OwKeOVy9PuJiFXIeVufm2VMsJTTy8F5oBiSDaOQDjMmQj4ZhufHDO9V/wP5+G8Ghg7FCig2i8+gduafjoWh7A9jfsk/2ZqC5vwSj/TD4MTjeBfBu9yfbYC04R5UkfnarcDPFnsEnlCqZOF4MQRev5jcGSZP4OeEul3E5k5id+I/UgrVyqXN8Qhc4/2Ie80wufxQYb7M5jgzlVsbBSEv8GhJav1tRjFS70ecFX1TChdX6fOtB5HLruSKsStN8DgOTPdqWJ5msxza85bST2SPHvzu5jE+r527OhAzm2lqcc7P1hQd+kLbkiUXV9htEbyUY3CxCCCjGGYr0rTKn6jEzuLAzZmeczQXvMvOp71T9QMmVH3u9i3N8h/4xJ6BImfS5JILFG1vhJl8R80hAeHGs3n2GM2xOkNWeV1yghGJY+fzbl8q7A3H+tJtneDKO92twYMR7HMUOd0uMY2IY+6nXQ+FphWsdgB2639cL5l4sDiUO9n00S4osV239w+KPVVUNOx0+7wywQAGfKt252Ex5wZHu5EiAqavaeuGWmWXoFYuKBjYATL2N4VFwXVTPrbYkxQ5QsTKjWWMZc94tHxPvRuTzWDDHTIMJHrdHwlk6VVlra/uuYkS+mAPpHMWDGjXV7Zi77PwASK9z3ZLoGbagfaM8IV5SKTxeOWIISQ3RfJe+sewF9W1K/ETPyaN/9HW8NYxO2/CSN7RlAR497w+V4w6rhsOZ2Djwbmhxqpp2NL/ZncCWs9Beh/Ogmeo32GruGaLPKZfnIKlQkhhZjie26CU6cnaCm/xTLIOiu+YRMXh48wSmkhCkp3337EACFVxGs7fqxpzeNJ1upxJwrh9qAj6VbkSOSbbS35iTEMj+j7r9sjGjnE5mdfDlryrIESTDS5MkwYCumpbBGi/t0fiVhoRYP7Ozsk5W0/dQnVYbUGiEaGJsql1gR9myxnm4bHC50/F0G0znQyxH8UGKrFssMO+yjvnaWFzVsuRmm/SVAejetPw4Aj2VLaNyVIqI1Y6GPzx0TrSLpJG6hteJn0zmxz8sBR4jNYq79oNL60q5AyoHmFtoMpR/DxrW9cw/E38oyUWPOy9ZsR3/aZFjqp77p8N4prfVvIID8/7wDpvCr+DsPunjaYAw5HgIc2aLCKAe/RS5IYHkudyu9DNSB4DbGkkOi79rKJwd2wHTQk5LAWa8e+V1i3jDMK93fiu8twKCxrIT1NwJOXjPSejsmhVVwBv8EGAMFEwSCmwxk/eIB5fQi3YCUWAc7Q1e3BbVU+yHsSgaoHjj+6SLD7pZB9hFK52Oa1Cq6POzWeVTxscr89oJ5S0luGbGRBV38C2pRMaKkd5OQuF0sLnzN0GKetgg3XHBARY156Jo4eLUCZmUmTN9vVYHBa+1PizFinpjywV4fzJQRY3ON7FhY3h69quHCXeCLLUGuI4/j/WGBNE5oDExw1vumtX6x/8Dd9twlCdGrNRrjlmjS9zdgvKdNLjpQ5FUzMdRpw29Y/ikuCh222EA0BXxOJZjpJvn6qlXlPRW00Rs/jK7kYLdWOinRbgh0rEo3yMWiXZ4XlZGQqw82SQh1/5YLaBgJ+u52n1rb/5eS28cAt/LMU772nZLn1kDUcYZ/WgaTdK4g=="; + ENCMSGS[66] = "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"; + ENCMSGS[67] = "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"; + ENCMSGS[68] = "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"; + ENCMSGS[69] = "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"; + ENCMSGS[70] = "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"; + ENCMSGS[71] = "KCaOlbUBAZEY06+nw0VFS+rn2xK3EPKupvXaKz1XgTdD6sMuO32C1WT1fD2eY//4PBXwwuCHYfOzZ0VDHF0O3t0Ov0GunibaeMdFR83U/m0/O1Q7r+XiqPJLHsbleVV7FS0i/1E96rqyr+QYtGJuc5gPPF5lCvLv6NROXfZD5xH7k58CcpmcT/gqunnIB/Srdj4doY/THghPpn6ArViarbDtF6XYD1eoFx1rvvViQ/vjFqN0IPnBAFLkYt5lsEXmYS51nP8b27iQqzMx4EGrvHGfmvCZskER9j201NrFCvMhDlBriOAxC4FD4bWDocCrbMNxxmXDG/scU7APCT+mIirRSyf5UNiHGW70R34aVOBol+3IjlBWmP2Rj6piKF9tbFf9Br2ibiOM0yNFLbcCT7C+AIwLqiWM0TeidUG6VXteZXtylYkk37oKWF9y1FcqB+ugPqHFmf2kyT+bZdJtH1nStEYQvZJ7gPkQwrk8OLwrgSBaCQvTWGFMWWZW2FfPoCG/aTvxYDBAECakebA1+FLYsHMuCjvuD3nlzY/pcEDhjkDr/b25sR+9nJliUgQoUlmYutX6KJlWGigsLcgSFojV998dU8+zq77K7baDN4fMDQ0yj+s9vzsafrE70N5YvgNS7AsS4YSh4mZhFUUNUIAhHZduVPeCKDK4RHop+B0jVMF8GLXspQ4hAekzsUnw5axXktzUlTaPvO3UD3Cw/1bzzgqN82t6WiLembKDdwaeidPgjAV4sM1qQB37HrxTc5vaLGqQ03rcGK8EwLWVmvsQJknDQ2EomtvZko5UuOjl9ZYDty7ui4v7e81AYW3PNLfWiYdY/4VmNG46rte7/NDiNYAc1BxByTRMWP4+eTXvubbBZ4bD190z1YPBugzF7n+/JDrMbyUOYePymEbVhBgiaxTRK//VBk+esYs74sx6AsxSonMM4jRT2oQNsZy9Pn27Z3IUOqmHB1N9X0uB1CADfJP8Ty1YLFc9IKh5rrBv73kh1JwWN/57L/qUGq9FL4oo++G+6xzENQ7gLUwkP6zIj9S/DiosNr3DIQbgtIf/L6iA754zzd3hNIEBd7lzDlpFn6P6NBpBF9llCu04C5/qjpAXyzyL4R6Ro/llAD4blbukJXj9JkvXR4o/oKDr5igmDdk9KGlOd997V6lfa5O5X77/FO6euvoQinyu9lnz2ghLSOEQnBeBiXIELpvmvSDwysDdndVBb4IHa9wchlXOTHHp7fPbZXe1Ne1GosS/piv6m9BuMc326J4MiAwE76LHNCCj1mIhAJxXIS0OgPPa52QDVs6jwiDtV+cS87D9THBeIl21xr7ENlWh5f/ttQ7oNFUNtX4Cfs7f0apjO3nMxNue44HGfn3YLlUjaSWsZdHYmD/S4Y4Kt6MBLMcqcj7Mw0N0kt6SaO3CspxrFq+H/yg2Cur0vPxsTKQItzIyQtAA9mPh8PH2O1pbk39dl6X6M1YA1EXXODVV/PpN/iTXQYjuI/dcMbIIy9+onIiZpcRIKr8Mc4YDumiBXs/AmVmFC4g1BnCGqLQvshn4YuAb2j4wnTotV8YfGLhXHY7TIOfTCIKgy0icyxp4RpgI8IDOT9uH7Gss1xSsAE7De+l+3FDcJJ9Sv/U3Vz+W4EcRoVzR5VxQ/YAvJZo3a+HJYsOH0iV6Z0HEbndeQcYIQLrmk7chyJjvpmix/wg7YAQHD63Ti+IerceLcxcd4rnE8W4KgQpnORDmwQzU3eNdBPGeCAF+DGV4FOCNFQs2NnxFYJqq67kt8XcFH9vFd0oe6bHOwRdrCtCiB6IvhoJ6QKrXd7hi4iTpWQAyl1pamMuQuDfcpWbWB5CvY2a0d0QLPodAFPXzP6rrsaiq21Hzq3LXFQIwivaNFW4iDKNZNl/UUMOCfCp7gwWmO2yX4uFytjLdQfxI8kwaI/JHMiLLChymcoTv8zkgCOR7msuGPwn1QW8du7NxMY25FZJ4fddHfZjTr4KFzM21q2eJ9YIlT66d8Y+YbQzu/Y3kdTgANphLasj/rxj0aqdIdRLZAQwLy6ORXYbcqdSwixaAXspi8O/otBNNplk2MhojiWtkS1Xaf3pvxTWd0tWDwUFZ0SVO116FKEQr4DxO1KAT25/yHLDX6aoqKzYLoz36YOerybgDstcVR77QTNBFtfdQeeO/nJ1Rx+bwKQWg1sgR5na0Nq4s9nJkG9ZQFB+Qx0VtaP/i2A4SzVcunbo2+muJ5cbReqSBaaaKN53qnl26k+yqIeo8mUPOnH5JJM6iWPPmlk7B3jNUNwgRkwc23kD5V5+ddZwmUpWo+22iB+JD2boVpm3bo3TMazBhTccjcjAz55x4kbsLklFkWc7ywiwy7jXPzOPABNYtXM5V+E1X/D2XmpLy71ukLdFTRGpQIBkAeJnm/xSvIv2sABbIxs3qMhwHmQXYKa2mwJgdCliJi38mdOsBT4VOVI3g/SGOaRUhZB7BltYZUskCVBIiYfU3p4ERip/IQlsbV9ZejVjZT/U5weHF+sd7cWhdqY8g0bkUTJwZwGkjOtki888L3Dbu82fDSv9D7PqDH3N94fbOd83N7qfoRuP9RGAZhgXTDXb3SR33EjNHDqOeNsumF1ZmmhF7SJSKSZUvfoL5F959xWAkrSZCkOFmqOuY/SCSpR5XAn7FNP8fghuPwQ=="; + ENCMSGS[72] = "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"; + ENCMSGS[73] = "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"; + ENCMSGS[74] = "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"; + ENCMSGS[75] = "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"; + ENCMSGS[76] = "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"; + ENCMSGS[77] = "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"; + ENCMSGS[78] = "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"; + ENCMSGS[79] = "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"; + ENCMSGS[80] = "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"; + ENCMSGS[81] = "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"; + ENCMSGS[82] = "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"; + ENCMSGS[83] = "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"; + ENCMSGS[84] = "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"; + ENCMSGS[85] = "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"; + ENCMSGS[86] = "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"; + ENCMSGS[87] = "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"; + ENCMSGS[88] = "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"; + ENCMSGS[89] = "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"; + ENCMSGS[90] = "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"; + ENCMSGS[91] = "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"; + ENCMSGS[92] = "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"; + ENCMSGS[93] = "XoCcqg7VxPqfQk46l7XyT3Aq1oKyyPSsuTRtYRhJ77w54GnCvwlitR6f8dVH4ppfOhgU5zOWqLbHNGc90LzP92RxbBICbrt53/Qgs0DmjTxACfaEPTTtNXKMCK/a0/8yEprmyrqYYT6H/WubD8Rpz65jbl4lPuhJFB+IFnAyvU8oRR6zo+r7m5IMGj/rJqb+wHig+xYNqBlx4QfoKfp84BpDAlFh8VMyO9Ve+/QPF3b03Huav4rCi3AELsKLNrjN7j4709/sZC6Zy7lCllxK2jbeQXg55aZ7CAQgD19Xwvl4YPu43lW/xOZwVydSvrGMJYc8Sba/bHtYT0AkaIS+1fOxJSqgCnGDlhppLHlA0CCIRJ4Ei+JBvKsGL6nRT8b7eMwywv0nZT7Hba39KMsJGacjFYJsVqElBvJKvGTvtnr5LhS2K6vSXHlBeU+uRBEoDwuJar5W1/ugLf2zmNlDUVV/9PWyQ4L769Troo1Xv2TDUUeHKR0ABCt1UthFSLWyxM7zcbHTXXO7xns26yd/j/2ZyBCVJQcTP+QynG1fz7s0mz3xFqpZsrpcqekeP5vk2jZQ/WXndDO+iSyLveCMAY1VbjzJS0l8p4dM0m5DoECcG1UE57A2hTIc1p5b+nT/KoJo7yHGXoD7XR+llbSgWZQWw5J5oJi9vVfpPuuyzs3W+ckIHgGYJhEIy5r2GvV953bxHxPelptDb1kZ6TZ06O91yMT9/YoWfMinl2vf4BA2dNdOR82WmwnZQCFLTvy0s1E0MpDxSlZC1LhTpYVeTAEkrjTQViZtQvuAtDgDLAPQ9mtqgoIixd0Pl9srQc9dx5pDB4a1mcZNJdqRt2jNtoxz2AFQBCillmS11j2kIj26u/7UPf280+Ybf/TdN6sChc8c/9OIiQ4ipUvJ4qZX0BT/PkohUAzSkWJLGOJn7dTJTs/d9vcq5xJ2Q2xnCk/Pvu4JZ80HILKuW5t42BRDrlL1LZ+sZCSssF63JO+l4gVKrT8AceKBV8xs6J78SjHc9mn3k0MBGA4Hy5ubyO7UAJN88ZZDRdmgQsEfA0UsIVhvy1GfOF/ByZ2t1BjRe5XOoFdzvMwttnJ4kbpdcYbCknkKa9F89oViUqelNHc+eKyNAlVJ03UxvsJ8aeA7BYwqHjr37EghySmBylbQenw4GZXMtFQHOlQW5/lRGmQBbAagIWeQIggFHbPy3XV36IS7m2c6v4QttfjdpYZh9m3XTWVBneAmsPnDALQBMpxvKM60QXBGZ9/7avW3tLeYnrL/uR3Dbx7dFt7uIfshqmawaDJdAlCdtjKQyeOqY5qTWf3QsROTDLSFaKbhFYTPG4bm4bVfBoFAS5Jbu2gOfYe3EmaQll5dLoqvey7WGXcNjwOf2Y6YSIMntUXtZGMdAb2eAx2mezSqd1jpmXISP6m50spZPE7+HT1Bsv9FXGqavm9i/qPntvL9E5NhcpEhpNbWfTUYMEtRLWTGH4HZJNtlKILz6Oo4I8MH6RWdCHeKt1Y2rPaV3e75Q3ufHpYE5NhmSDMi5d+hDuU/vX8iej0mHJL2nPKoseFO31QkHB11X/lyhxMCJdX0tTeeVoOh1+8ZcSO/tgkBcOKosLg+XRTsmPlVKYnx6jo4/0aNXYhzA4PVdSTizuZjD88qRWGm11ttr+vh3I8Pnz+0VJWw4h9v52wk7YSUWd+wxbqEAROzX32sh4pgDKysSDGJZ9ivbS65fplk7PzlPJs1m94Yn9Wmry9AOEo2uPVGkob/RP7A8bTDMycOEWUiFEuDIS4SztZ5xKHt4Se0Z95JTFtOw4ErA532KYW99DQLYi4KJRkQyl5zTRSK/gZAYtk/OqT/y+AmQP+VGJkVMwhXRqzlaAt20V4u6xLTFSafwQljJ0DnlCjQqNMKNIn3uHDepOtZwhwIi8eVZA36Dp3gNxBdX7OfPUo/+gyk5C+OPuYTdzLBsefcQ2hGHu4+X2v+k1M+Cr8NSjc7RgXGl7zN+8sCsh1H+0izn6i/E4qxK21kIMfc/HMP3fpOIMVO74Xb4mCEZDippiDPKAx93KwZPNHd/d7pJVFVV6NGMFqByfOiqSbfq2hb5l2HKzWc38RsiAUU6xVYDUi0dCveaoqIbNOsRZxwszrnSX0nI93cYBM4e/TUn0ScXFla3ed/Tv61YBgTDCEHEpywofk3g7vl1B9rQ0rIyP6xyeO3252u0v+5hVtWSp0/naY5y42CZxlNL8DxEGNOMeAVddQJnWBEXSJQRxp4onkGawiyc20mKHeZ/CcDvncecIKs/tmUTnAFTwJKvXAIPUGziuJ0bwq3ySt8gI0zD5tw9gzZaEfeojmGJHhoemIzoHwj/OMXUvVHINc0xpkK8psRGoDrymL1NE4UageN5DrLt/QwiIvdjhBPgA3I5xvC7r1/Uylm4VmxxSkeLu9KLqgQs97Ep+tZY+CmlBck4OLJnM/sLBmv8cpQSreTaxixfincN/JtBmsxSos5UxU0EnXoEIL37//FYZkapboN6x59ShBNkyBM1lhFhAbhTip0vHt3FErHlJn5MR8cRqabltZfUvJzTHWXf3/BF2XHy6j4FxhcT6NYt43YQ4CK9pxPGMUqgXlmRJ3/HqRXzU5KlXyBY4DiBbGw9Vz5Emet8GlMbXuXvoHWaPkA4Pq/d+rJcTJwmepFkw=="; + ENCMSGS[94] = "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"; + ENCMSGS[95] = "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"; + ENCMSGS[96] = "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"; + ENCMSGS[97] = "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"; + ENCMSGS[98] = "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"; + ENCMSGS[99] = "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"; + + +// final FixedStringSaltGenerator saltGenerator = new FixedStringSaltGenerator(); +// saltGenerator.setSalt(fixedSalt); +// +// final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); +// encryptor.setPassword(encPass); +// encryptor.setSaltGenerator(saltGenerator); +// +// for (int i = 0; i < 100; i++) { +// System.out.println( +// " ENCMSGS[" + i + "] = \"" + StringEscapeUtils.escapeJava(encryptor.encrypt(MSGS[i])) + "\";"); +// } + + } + + + + + + + public void testCompatibility() throws Exception { + + initMSGS(); + initENCMSGS(); + + final FixedStringSaltGenerator saltGenerator = new FixedStringSaltGenerator(); + saltGenerator.setSalt(fixedSalt); + + final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); + encryptor.setPassword(encPass); + encryptor.setSaltGenerator(saltGenerator); + + for (int times = 0; times < 100; times++) { + + for (int i = 0; i < 100; i++) { + final String enc = encryptor.encrypt(MSGS[i]); + Assert.assertEquals(ENCMSGS[i], enc); + } + + for (int i = 0; i < 100; i++) { + final String dec = encryptor.decrypt(ENCMSGS[i]); + Assert.assertEquals(MSGS[i], dec); + } + + } + + } + +} diff -Nru jasypt-1.8/src/test/java/org/jasypt/normalization/NormalizationTest.java jasypt-1.9.2/src/test/java/org/jasypt/normalization/NormalizationTest.java --- jasypt-1.8/src/test/java/org/jasypt/normalization/NormalizationTest.java 2010-10-16 18:38:04.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/normalization/NormalizationTest.java 2014-02-25 15:02:16.000000000 +0000 @@ -19,36 +19,36 @@ */ package org.jasypt.normalization; -import java.text.Normalizer.Form; - import junit.framework.Assert; import junit.framework.TestCase; -import com.ibm.icu.text.Normalizer; - public class NormalizationTest extends TestCase { public void testNormalizationEquivalence() throws Exception { - String msg = "ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÑÇÆÅßÐáéíóúàèìòùäëïöüâêîôûnçæåÞØÕÃāăþőŏœűŁňć"; + org.jasypt.normalization.Normalizer.initializeIcu4j(); + + boolean executeJavaTextNorm = true; + try { + // Tests might not be executed in Java >= 6 + org.jasypt.normalization.Normalizer.initializeJavaTextNormalizer(); + } catch (final Exception e) { + executeJavaTextNorm = false; + } + + + final String msg = "ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÑÇÆÅßÐáéíóúàèìòùäëïöüâêîôûnçæåÞØÕÃāăþőŏœűŁňć"; + final char[] msgCharArray = msg.toCharArray(); - String norm1 = Normalizer.normalize(msg, Normalizer.NFC); - String norm2 = java.text.Normalizer.normalize(msg, Form.NFC); + String norm1 = com.ibm.icu.text.Normalizer.normalize(msg, com.ibm.icu.text.Normalizer.NFC); + String norm2 = new String(org.jasypt.normalization.Normalizer.normalizeWithIcu4j(msgCharArray)); + String norm3 = (executeJavaTextNorm? new String(org.jasypt.normalization.Normalizer.normalizeWithJavaNormalizer(msgCharArray)) : null); Assert.assertEquals(norm1, norm2); - - String denorm1 = Normalizer.normalize(msg, Normalizer.NFD); - String denorm2 = java.text.Normalizer.normalize(msg, Form.NFD); - - Assert.assertEquals(denorm1, denorm2); - - String inter1 = java.text.Normalizer.normalize(Normalizer.normalize(msg, Normalizer.NFD), Form.NFC); - String inter2 = Normalizer.normalize(java.text.Normalizer.normalize(msg, Form.NFD),Normalizer.NFC); - - Assert.assertEquals(inter1, inter2); - Assert.assertEquals(inter1, msg); - Assert.assertEquals(inter2, msg); + if (executeJavaTextNorm) { + Assert.assertEquals(norm2, norm3); + } } diff -Nru jasypt-1.8/src/test/java/org/jasypt/properties/EncryptablePropertiesTest.java jasypt-1.9.2/src/test/java/org/jasypt/properties/EncryptablePropertiesTest.java --- jasypt-1.8/src/test/java/org/jasypt/properties/EncryptablePropertiesTest.java 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/properties/EncryptablePropertiesTest.java 2014-02-24 22:49:38.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * ============================================================================= + * + * Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) + * + * 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 + * + * http://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. + * + * ============================================================================= + */ +package org.jasypt.properties; + +import java.util.Properties; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.commons.lang.SerializationUtils; +import org.jasypt.util.text.BasicTextEncryptor; + +public class EncryptablePropertiesTest extends TestCase { + + + public void testEncryptableProperties() throws Exception { + + final BasicTextEncryptor encryptor = new BasicTextEncryptor(); + encryptor.setPassword("jasypt"); + final Properties props = new EncryptableProperties(encryptor); + + props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("props.properties")); + + final String value = "Spain"; + + final String locationPlain1 = props.getProperty("location.plain"); + final String locationPlain2 = props.getProperty("location.plain", "defaultPlain"); + final String locationPlain3 = (String) props.get("location.plain"); + final String locationEnc1 = props.getProperty("location.enc"); + final String locationEnc2 = props.getProperty("location.enc", "defaultEnc"); + final String locationEnc3 = (String) props.get("location.enc"); + final String nonExisting1 = props.getProperty("non.existing"); + final String nonExisting2 = props.getProperty("non.existing", "defaultNon"); + final String nonExisting3 = (String) props.get("non.existing"); + + Assert.assertEquals(value, locationPlain1); + Assert.assertEquals(value, locationPlain2); + Assert.assertEquals(value, locationPlain3); + + Assert.assertEquals(value, locationEnc1); + Assert.assertEquals(value, locationEnc2); + Assert.assertEquals(value, locationEnc3); + + Assert.assertNull(nonExisting1); + Assert.assertEquals("defaultNon", nonExisting2); + Assert.assertNull(nonExisting3); + + } + + + public void testEncryptablePropertiesSerialization() throws Exception { + + final BasicTextEncryptor enc01 = new BasicTextEncryptor(); + enc01.setPassword("jasypt"); + + final String msg01 = "Message one"; + final String msgEnc01 = "ENC(eZpONwIfFb5muu5Dc8ABsTPu/0OP95p4)"; + + final String msg02 = "Message two"; + final String msgEnc02 = "ENC(LKyQ65EYz3+ekDPpnLjLGyPK07Gt+UZH)"; + + final EncryptableProperties prop01 = new EncryptableProperties(enc01); + prop01.setProperty("p1", msgEnc01); + prop01.setProperty("p2", msgEnc02); + + Assert.assertEquals(prop01.getProperty("p1"), msg01); + Assert.assertEquals(prop01.getProperty("p2"), msg02); + + final byte[] ser01 = SerializationUtils.serialize(prop01); + + final EncryptableProperties prop02 = (EncryptableProperties) SerializationUtils.deserialize(ser01); + + Assert.assertEquals(prop02.getProperty("p1"), msg01); + Assert.assertEquals(prop02.getProperty("p2"), msg02); + + Assert.assertNotSame(prop01, prop02); + + } + + +} diff -Nru jasypt-1.8/src/test/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurerTest.java jasypt-1.9.2/src/test/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurerTest.java --- jasypt-1.8/src/test/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurerTest.java 2011-07-24 20:59:48.000000000 +0000 +++ jasypt-1.9.2/src/test/java/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurerTest.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -package org.jasypt.spring.properties; - -import junit.framework.TestCase; - - -import java.util.HashMap; -import java.util.Map; - -import org.jasypt.encryption.StringEncryptor; -import org.jasypt.util.text.TextEncryptor; - - -/* - * ==Test resolveSystemProperty for encrypted env var== - * - * I don't have a great way to test the decryption of encrypted env var without requiring the test harness (surefire, IDE etc) - * to have specified an encrypted environment variable. Here are a few options - * - reflection hack to change the underlying system env map - - * http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java. THis is what spring does to - * test the propertyplaceholderconfigurer: - * https://src.springframework.org/svn/spring-framework/trunk/org.springframework.beans/src/test/java/org/springframework/beans/factory/config/PropertyPlaceholderConfigurerTests.java - * - extract the call to super.resolveSystemProperty(key) in resolveSystemProperty to a protected method and the test - * will use a testspecifc subclass (http://xunitpatterns.com/Test-Specific%20Subclass.html) that overrides that method. - * - * However, i really don't think it is that big of a deal. The functionality responsible for getting system/env values - * is defined in the super. All this class does is check to see if they have the encryption delimiters. I am pretty sure - * I already went overboard on the test - ~100 lines of test for 3 lines of production code. - * - * User: carlos fernandez - * Date: 6/28/11 - * Time: 10:38 PM - */ -public class EncryptablePropertyPlaceholderConfigurerTest extends TestCase { - - //duplicated prefix suffix values in PropertyValueEncryptionUtils because PVEU constants are private - private static final String ENCRYPTED_VALUE_PREFIX = "ENC("; - private static final String ENCRYPTED_VALUE_SUFFIX = ")"; - - private String expectedDecryptedValue; - private String encryptedValue; - private String encryptedValueWithDelimiters; - - private String encryptedSysPropKey; - private String unencryptedSysPropKey; - private String unencryptedValue; - - public void setUp() { - encryptedSysPropKey = "thisIsAnEncryptedSysPropertyKey"; - encryptedValue = "encryptedString"; - encryptedValueWithDelimiters = ENCRYPTED_VALUE_PREFIX + this.encryptedValue + ENCRYPTED_VALUE_SUFFIX; - expectedDecryptedValue = "clearText"; - System.setProperty(encryptedSysPropKey, encryptedValueWithDelimiters); - - unencryptedSysPropKey = "thisIsAnUNEncryptedSysPropertyKey"; - unencryptedValue = "thisIsARegularString"; - System.setProperty(unencryptedSysPropKey, unencryptedValue); - } - - public void tearDown() { - System.clearProperty(encryptedSysPropKey); - System.clearProperty(unencryptedSysPropKey); - } - - public void testConvertPropertyValueNotEncrypted() { - EncryptablePropertyPlaceholderConfigurer eppc = createPPCWithStringEncryptor(); - assertEquals(unencryptedValue, eppc.convertPropertyValue(unencryptedValue)); - } - - public void testConvertPropertyValueDecryptWithStringEncryptor() { - EncryptablePropertyPlaceholderConfigurer eppc = createPPCWithStringEncryptor(); - assertEquals(expectedDecryptedValue, eppc.convertPropertyValue(encryptedValueWithDelimiters)); - } - - public void testConvertPropertyValueDecryptWithTextEncryptor() { - EncryptablePropertyPlaceholderConfigurer eppc = createPPCWithTextEncryptor(); - assertEquals(expectedDecryptedValue, eppc.convertPropertyValue(encryptedValueWithDelimiters)); - } - - public void testResolveSystemPropertyNullSystemPropertyValue() - throws Exception { - EncryptablePropertyPlaceholderConfigurer ppc = createPPCWithTextEncryptor(); - assertNull(ppc.resolveSystemProperty("foofoofoo")); - } - - public void testResolveSystemPropertyEncryptedSystemPropertyValue() - throws Exception { - EncryptablePropertyPlaceholderConfigurer ppc = createPPCWithTextEncryptor(); - assertEquals(expectedDecryptedValue, ppc.resolveSystemProperty(encryptedSysPropKey)); - } - - public void testResolveSystemPropertyUnencryptedSystemPropertyValue() - throws Exception { - EncryptablePropertyPlaceholderConfigurer ppc = createPPCWithStringEncryptor(); - assertEquals(unencryptedValue, ppc.resolveSystemProperty(unencryptedSysPropKey)); - } - - public void testResolveSystemPropertyUnencryptedEnvVar() - throws Exception { - //the expectation is that the system has the HOME env var - String unencryptedEnvVarKey = "HOME";//this is expected to exist on windows and unix systems - String unencryptedEnvVarValue = System.getenv(unencryptedEnvVarKey); - //lets make sure the env variable is set & is not null - assertNotNull("no home env variable found", unencryptedEnvVarValue); - - EncryptablePropertyPlaceholderConfigurer ppc = createPPCWithTextEncryptor(); - //allow ppc can check env vars - ppc.setSearchSystemEnvironment(true); - - assertEquals(unencryptedEnvVarValue, ppc.resolveSystemProperty(unencryptedEnvVarKey)); - } - - private EncryptablePropertyPlaceholderConfigurer createPPCWithTextEncryptor() { - StubTextEncryptor textEncryptor = new StubTextEncryptor(); - textEncryptor.addDecryption(encryptedValue, expectedDecryptedValue); - return new EncryptablePropertyPlaceholderConfigurer(textEncryptor); - } - - private EncryptablePropertyPlaceholderConfigurer createPPCWithStringEncryptor() { - StubStringEncryptor stringEncryptor = new StubStringEncryptor(); - stringEncryptor.addDecryption(encryptedValue, expectedDecryptedValue); - return new EncryptablePropertyPlaceholderConfigurer(stringEncryptor); - } - - - abstract class StubEncryptor { - - private Map decryptMap = new HashMap(); - - public String decrypt(String encryptedMessage) { - return (String)this.decryptMap.get(encryptedMessage); - } - - public String encrypt(String message) { - throw new UnsupportedOperationException(); - } - - public void addDecryption(String encrypted, - String expectedDecryption) { - this.decryptMap.put(encrypted, expectedDecryption); - } - - } - - class StubStringEncryptor extends StubEncryptor implements StringEncryptor{} - class StubTextEncryptor extends StubEncryptor implements TextEncryptor{} - -} diff -Nru jasypt-1.8/src/test/resources/props.properties jasypt-1.9.2/src/test/resources/props.properties --- jasypt-1.8/src/test/resources/props.properties 1970-01-01 00:00:00.000000000 +0000 +++ jasypt-1.9.2/src/test/resources/props.properties 2011-12-14 01:42:55.000000000 +0000 @@ -0,0 +1,2 @@ +location.enc=ENC(v0z0uGQRucwfBau0e+gB6A\=\=) +location.plain=Spain