diff options
146 files changed, 24244 insertions, 1753 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b324d5f..523230e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: maven:3.6-jdk-8 +image: maven:latest variables: LC_ALL: "en_US.UTF-8" @@ -9,6 +9,9 @@ variables: MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" GIT_DEPTH: "2" SECURE_LOG_LEVEL: "debug" + JACOCO_CSV_LOCATION: '${CI_PROJECT_DIR}/build_reporting/target/site/jacoco-aggregate-ut/jacoco.csv' + JACOCO_XML_LOCATION: '${CI_PROJECT_DIR}/build_reporting/target/site/jacoco-aggregate-ut/jacoco.xml' + PROJECT_RELEASE_PACKAGE: '${CI_PROJECT_DIR}/target/*-dist.zip' include: - template: Dependency-Scanning.gitlab-ci.yml @@ -26,11 +29,61 @@ cache: assemble: stage: assemble + tags: + - docker except: - tags script: | mvn $MAVEN_CLI_OPTS generate-sources compile test + after_script: + - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% covered" }' $JACOCO_CSV_LOCATION + coverage: '/([0-9]{1,3}.[0-9]*).%.covered/' artifacts: when: always reports: junit: "**/target/surefire-reports/TEST-*.xml" + paths: + - $JACOCO_CSV_LOCATION + - $JACOCO_XML_LOCATION + + +buildDistributionPackage: + stage: package + tags: + - docker + except: + - tags + - /^feature/.*$/i + script: | + export VERSION=$(mvn -B help:evaluate -Dexpression=project.version -B | grep -v "\[INFO\]" | grep -Po "\d+\.\d+\.\d+((-\w*)+)?") + echo "Build full package of version $VERSION" + mvn $MAVEN_CLI_OPTS verify -DskipTests + echo "VERSION=$VERSION" >> variables.env + artifacts: + name: "${CI_PROJECT_NAME}-${CI_COMMIT_SHORT_SHA}" + when: always + reports: + dotenv: variables.env + paths: + - $PROJECT_RELEASE_PACKAGE + +release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + tags: + - docker + needs: + - job: buildDistributionPackage + artifacts: true + when: manual + only: + - master + script: | + echo "Releasing version $VERSION of $LIB_NAME" + echo "Publishing version $VERSION to public EGIZ maven" + mvn $MAVEN_CLI_OPTS deploy + artifacts: + name: "${CI_PROJECT_NAME}-${CI_COMMIT_SHORT_SHA}-release" + expire_in: never + paths: + - $PROJECT_RELEASE_PACKAGE diff --git a/basicConfig/default_config.properties b/basicConfig/default_config.properties index 483e9c97..8a1bc3a0 100644 --- a/basicConfig/default_config.properties +++ b/basicConfig/default_config.properties @@ -1,8 +1,8 @@ ## Basic service configuration eidas.ms.context.url.prefix= eidas.ms.context.url.request.validation=false +eidas.ms.core.configRootDir=file:./ -eidas.ms.context.use.clustermode=true ##Monitoring eidas.ms.monitoring.eIDASNode.metadata.url= @@ -13,28 +13,14 @@ eidas.ms.technicallog.write.MDS.into.techlog=true eidas.ms.revisionlog.write.MDS.into.revisionlog=true eidas.ms.revisionlog.logIPAddressOfUser=true -##Directory for static Web content -eidas.ms.webcontent.static.directory=webcontent/ -eidas.ms.webcontent.templates=templates/ -eidas.ms.webcontent.properties=properties/messages -eidas.ms.webcontent.templates.countryselection=countrySelection.html ## extended validation of pending-request Id's -eidas.ms.core.pendingrequestid.maxlifetime=300 -eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + ## eIDAS Ref. Implementation connector ### eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector eidas.ms.auth.eIDAS.node_v2.forward.endpoint= -eidas.ms.auth.eIDAS.node_v2.forward.method=POST -eidas.ms.auth.eIDAS.node_v2.countrycode=AT -eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* -eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true -eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true -eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=true - -eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high eidas.ms.auth.eIDAS.szrclient.useTestService=true eidas.ms.auth.eIDAS.szrclient.endpoint.prod= @@ -44,51 +30,16 @@ eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/..... eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password= eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= -eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 -eidas.ms.auth.eIDAS.szrclient.timeout.response=30 -eidas.ms.auth.eIDAS.szrclient.params.vkz= - -eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false ## E-AuthBlock configuration eidas.ms.auth.eIDAS.authblock.keystore.type=jks eidas.ms.auth.eIDAS.authblock.keystore.path=keys/teststore.jks eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s -eidas.ms.auth.eIDAS.authblock.keystore.name= eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s -#Raw eIDAS Id data storage -eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true - -eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true -eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true - -eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true -eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=true - -##without mandates -eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true - -eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.4=PlaceOfBirth,false -eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.5=BirthName,false -eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.6=Gender,false -eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.7=CurrentAddress,false - -##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true -eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true - - ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.type=jks eidas.ms.pvp2.keystore.path=keys/..... @@ -106,20 +57,10 @@ eidas.ms.pvp2.metadata.contact.givenname=Max eidas.ms.pvp2.metadata.contact.surname=Mustermann eidas.ms.pvp2.metadata.contact.email=max@junit.test + ## Service Provider configuration eidas.ms.sp.0.uniqueID= eidas.ms.sp.0.pvp2.metadata.truststore= eidas.ms.sp.0.pvp2.metadata.truststore.password= +eidas.ms.sp.0.newEidMode=false -#eidas.ms.sp.0.friendlyName= -#eidas.ms.sp.0.pvp2.metadata.url= -#eidas.ms.sp.0.policy.allowed.requested.targets=.* -#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false - - -##only for advanced config -eidas.ms.configuration.sp.disableRegistrationRequirement= -eidas.ms.configuration.restrictions.baseID.spTransmission= -eidas.ms.configuration.auth.default.countrycode= -eidas.ms.configuration.pvp.scheme.validation= -eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/basicConfig/templates/error_message.html b/basicConfig/templates/error_message.html index 7ec8aa0d..f9788f6a 100644 --- a/basicConfig/templates/error_message.html +++ b/basicConfig/templates/error_message.html @@ -21,8 +21,8 @@ <div id="alert_area" class="hell" role="application" > <p th:text="#{gui.errorpage.msg.information}">Error Information</p> <br/> - <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${msg.errorCode}"></span></p> - <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg :</b > <span th:text="${#messages.msgWithParams('__${msg.errorCode}__', '__${msg.errorParams}__')}"></span></p> + <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${errorCode}"></span></p> + <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg :</b > <span th:text="${#messages.msgWithParams('__${errorCode}__', '__${errorParams}__')}"></span></p> </div> </div> diff --git a/build_reporting/pom.xml b/build_reporting/pom.xml new file mode 100644 index 00000000..eca57a03 --- /dev/null +++ b/build_reporting/pom.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>at.asitplus.eidas</groupId> + <artifactId>ms_specific</artifactId> + <version>1.1.1-SNAPSHOT</version> + </parent> + <artifactId>build_reporting</artifactId> + <packaging>pom</packaging> + <name>Reporting Module</name> + + <dependencies> + <dependency> + <groupId>at.asitplus.eidas.ms_specific</groupId> + <artifactId>connector_lib</artifactId> + </dependency> + <dependency> + <groupId>at.asitplus.eidas.ms_specific.modules</groupId> + <artifactId>authmodule-eIDAS-v2</artifactId> + </dependency> + <dependency> + <groupId>at.asitplus.eidas.ms_specific</groupId> + <artifactId>ms_specific_connector</artifactId> + <type>war</type> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <executions> + <!-- aggregated unit test coverage report --> + <execution> + <id>aggregate-reports-ut</id> + <phase>test</phase> + <goals> + <goal>report-aggregate</goal> + </goals> + <configuration> + <title>Maven Multimodule Coverage Demo: Coverage of Unit Tests</title> + <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate-ut</outputDirectory> + <dataFileExcludes> + <!-- exclude coverage data of integration tests --> + <dataFileExclude>**/target/jacoco-it.exec</dataFileExclude> + </dataFileExcludes> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.owasp</groupId> + <artifactId>dependency-check-maven</artifactId> + <configuration> + <failBuildOnCVSS>11</failBuildOnCVSS> + <failOnError>false</failOnError> + </configuration> + <executions> + <execution> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + +</project> diff --git a/connector/checks/spotbugs-exclude.xml b/connector/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..281e3796 --- /dev/null +++ b/connector/checks/spotbugs-exclude.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> + <Match> + <!-- Write only application status into response. Should be removed if we switch to Spring Actuator --> + <Class name="at.asitplus.eidas.specific.connector.controller.MonitoringController" /> + <Method name="startSingleTests" /> + <Bug pattern="XSS_SERVLET" /> + </Match> + <Match> + <!-- CSFR protection is implemented by pendingRequestId that is an one-time token + Endpoint for Metadata generation can be unrestrected by design --> + <OR> + <Class name="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" /> + <Class name="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint" /> + </OR> + <OR> + <Method name="performGenericAuthenticationProcess" /> + <Method name="pvpMetadataRequest" /> + </OR> + <Bug pattern="SPRING_CSRF_UNRESTRICTED_REQUEST_MAPPING" /> + </Match> + <Match> + <!-- Path to application configuration is trusted --> + <Class name="at.asitplus.eidas.specific.connector.MsSpecificSpringBootApplicationContextInitializer" /> + <Bug pattern="PATH_TRAVERSAL_IN" /> + </Match> +</FindBugsFilter> diff --git a/connector/pom.xml b/connector/pom.xml index 6621fb0f..36a6d9df 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -12,7 +12,7 @@ <groupId>at.asitplus.eidas.ms_specific</groupId> <artifactId>ms_specific_connector</artifactId> <packaging>war</packaging> - <name>Connector Maven Webapp</name> + <name>MS-specific eIDAS Service</name> <url>http://maven.apache.org</url> <dependencies> @@ -33,12 +33,6 @@ <dependency> <groupId>at.gv.egiz.eaaf</groupId> <artifactId>eaaf_module_pvp2_idp</artifactId> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>at.asitplus.eidas.ms_specific</groupId> @@ -49,7 +43,25 @@ <artifactId>authmodule-eIDAS-v2</artifactId> </dependency> - <!-- Third party libs --> + <!-- Third party libs --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>de.codecentric</groupId> + <artifactId>spring-boot-admin-starter-client</artifactId> + </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> @@ -67,18 +79,13 @@ <artifactId>slf4j-api</artifactId> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </dependency> - <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <scope>provided</scope> - </dependency> + <dependency> + <groupId>org.hibernate.validator</groupId> + <artifactId>hibernate-validator</artifactId> + </dependency> <!-- Testing --> @@ -93,6 +100,11 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>at.gv.egiz.eaaf</groupId> <artifactId>eaaf_core_utils</artifactId> <scope>test</scope> @@ -104,21 +116,82 @@ <scope>test</scope> <type>test-jar</type> </dependency> - + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf_module_pvp2_sp</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf-springboot-utils</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.github.skjolber</groupId> + <artifactId>mockito-soap-cxf</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-module-junit4</artifactId> + <version>2.0.7</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-api-mockito2</artifactId> + <version>2.0.7</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>mockwebserver</artifactId> + <scope>test</scope> + </dependency> </dependencies> + + <profiles> + <profile> + <id>default</id> + <activation> + <activeByDefault>true</activeByDefault> + <property> + <name>default</name> + </property> + </activation> + <dependencies> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <scope>provided</scope> + </dependency> + </dependencies> + </profile> + <profile> + <id>embbededTomcat</id> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf-springboot-utils</artifactId> + </dependency> + </dependencies> + </profile> + + </profiles> + <build> <finalName>ms_connector</finalName> <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - <!-- enable co-existence of testng and junit --> <plugin> <artifactId>maven-surefire-plugin</artifactId> @@ -135,6 +208,24 @@ </plugin> <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <version>2.2.6.RELEASE</version> + <configuration> + <executable>true</executable> + <!-- layout>ZIP</layout --> + </configuration> + <executions> + <execution> + <goals> + <goal>build-info</goal> + <goal>repackage</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> @@ -156,6 +247,15 @@ </executions> </plugin> + <plugin> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs-maven-plugin</artifactId> + <version>${spotbugs-maven-plugin.version}</version> + <configuration> + <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> + </configuration> + </plugin> + </plugins> </build> </project> diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java index 6e8e06ef..40ed283b 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java @@ -32,11 +32,15 @@ public class MsSpecificEidasNodeSpringResourceProvider implements SpringResource @Override public Resource[] getResourcesToLoad() { - final ClassPathResource msEidasNode = new ClassPathResource("/specific_eIDAS_connector.beans.xml", - MsSpecificEidasNodeSpringResourceProvider.class); + final ClassPathResource generic = + new ClassPathResource("/applicationContext.xml", MsSpecificEidasNodeSpringResourceProvider.class); + + final ClassPathResource msEidasNode = new ClassPathResource( + "/specific_eIDAS_connector.beans.xml", MsSpecificEidasNodeSpringResourceProvider.class); + final ClassPathResource msEidasNodeStorage = new ClassPathResource( "/specific_eIDAS_connector.storage.beans.xml", MsSpecificEidasNodeSpringResourceProvider.class); - return new Resource[] { msEidasNode, msEidasNodeStorage }; + return new Resource[] { generic, msEidasNode, msEidasNodeStorage }; } @Override diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificSpringBootApplicationContextInitializer.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificSpringBootApplicationContextInitializer.java new file mode 100644 index 00000000..399d1286 --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificSpringBootApplicationContextInitializer.java @@ -0,0 +1,82 @@ +package at.asitplus.eidas.specific.connector; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.MutablePropertySources; +import org.springframework.core.env.PropertiesPropertySource; + +import at.gv.egiz.components.spring.api.SpringBootApplicationContextInitializer; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class MsSpecificSpringBootApplicationContextInitializer extends + SpringBootApplicationContextInitializer { + + private static final String SYSTEMD_PROP_NAME = "eidas.ms.configuration"; + private static final String PATH_FILE_PREFIX = "file:"; + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + String configPath = System.getProperty(SYSTEMD_PROP_NAME); + if (StringUtils.isNotEmpty(configPath)) { + log.debug("Find configuration-source from SystemD Property: '{}' ...", SYSTEMD_PROP_NAME); + if (configPath.startsWith(PATH_FILE_PREFIX)) { + configPath = configPath.substring(PATH_FILE_PREFIX.length()); + + } + injectConfiguration(configPath, applicationContext); + + } else { + log.info("Find NO SystemD Property: '{}' Maybe no configuration available", SYSTEMD_PROP_NAME); + + } + + super.initialize(applicationContext); + + } + + private void injectConfiguration(String configPath, ConfigurableApplicationContext applicationContext) { + InputStream is = null; + try { + Path path = Paths.get(configPath); + if (Files.exists(path)) { + File file = new File(configPath); + Properties props = new Properties(); + is = new FileInputStream(file); + props.load(is); + MutablePropertySources sources = applicationContext.getEnvironment().getPropertySources(); + sources.addFirst(new PropertiesPropertySource(SYSTEMD_PROP_NAME, props)); + log.info("Set configuration-source from SystemD-Property: {}", SYSTEMD_PROP_NAME); + + } else { + log.error("Configuration from SystemD Property: '{}' at Location: {} DOES NOT exist", + SYSTEMD_PROP_NAME, configPath); + + } + + } catch (IOException e) { + log.error("Configuration from SystemD Property: '{}' at Location: {} CAN NOT be loaded", + SYSTEMD_PROP_NAME, configPath, e); + + } finally { + try { + if (is != null) { + is.close(); + + } + } catch (IOException e) { + log.error("Can not close InputStream of configLoader: {}", configPath, e); + + } + } + } +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringBootApplicationInitializer.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringBootApplicationInitializer.java new file mode 100644 index 00000000..428f5f56 --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringBootApplicationInitializer.java @@ -0,0 +1,105 @@ +package at.asitplus.eidas.specific.connector; + +import org.opensaml.core.config.InitializationException; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.web.context.WebApplicationContext; + +import at.gv.egiz.eaaf.core.api.IStatusMessenger; +import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory; +import at.gv.egiz.eaaf.core.impl.logging.SimpleStatusMessager; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; +import lombok.extern.slf4j.Slf4j; +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; + +@Slf4j +@SpringBootApplication(scanBasePackages = { + "at.asitplus.eidas.specific.connector", + "at.gv.egiz.eaaf.utils.springboot.ajp" + }) +public class SpringBootApplicationInitializer extends SpringBootServletInitializer { + + private static ConfigurableApplicationContext ctx; + + /** + * Starts MS-specific eIDAS-Implementation SpringBoot application. + * + * @param args Starting parameters + * @throws Throwable In case of a start-up error + */ + public static void main(final String[] args) throws Throwable { + try { + log.info("=============== Initializing Spring-Boot context! ==============="); + LogMessageProviderFactory.setStatusMessager(new SimpleStatusMessager()); + final SpringApplication springApp = + new SpringApplication(SpringBootApplicationInitializer.class); + springApp.addInitializers(new MsSpecificSpringBootApplicationContextInitializer()); + + log.info("Bootstrap openSAML .... "); + EaafOpenSaml3xInitializer.eaafInitialize(); + + log.debug("Run SpringBoot initialization process ... "); + ctx = springApp.run(args); + + // initialize status messenger + LogMessageProviderFactory.setStatusMessager(ctx.getBean(IStatusMessenger.class)); + + log.info("Initialization of MS-specific eIDAS-Implementation finished."); + + } catch (final Throwable e) { + log.error("MS-specific eIDAS-Implementation initialization FAILED!", e); + throw e; + + } + + } + + + protected SpringApplicationBuilder createSpringApplicationBuilder() { + try { + log.info("Bootstrap openSAML .... "); + EaafOpenSaml3xInitializer.eaafInitialize(); + + } catch (InitializationException | ComponentInitializationException e) { + throw new RuntimeException(e); + + } + + SpringApplicationBuilder builder = new SpringApplicationBuilder(); + builder.initializers(new MsSpecificSpringBootApplicationContextInitializer()); + return builder; + + } + + protected WebApplicationContext run(SpringApplication application) { + WebApplicationContext internalContext = (WebApplicationContext) application.run(); + + // initialize status messenger + LogMessageProviderFactory.setStatusMessager(internalContext.getBean(IStatusMessenger.class)); + + log.info("Initialization of MS-specific eIDAS-Implementation finished."); + + return internalContext; + } + + /** + * Stops SpringBoot application of MS-specific eIDAS-Implementation. + * + */ + public static void exit() { + if (ctx != null) { + log.info("Stopping SpringBoot application ... "); + SpringApplication.exit(ctx, () -> 0); + ctx = null; + + } else { + log.info("No SpringBoot context. Nothing todo"); + + } + + } + +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java new file mode 100644 index 00000000..e884b5c6 --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java @@ -0,0 +1,170 @@ +package at.asitplus.eidas.specific.connector; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +import org.slf4j.Logger; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextClosedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +import at.gv.egiz.components.spring.api.IDestroyableObject; +import eu.eidas.auth.cache.IgniteInstanceInitializerSpecificCommunication; + +/** + * SpringContext CloseHandler. + * + * @author tlenz + * + */ + +public class SpringContextCloseHandler + implements ApplicationListener<ContextClosedEvent>, ApplicationContextAware, BeanPostProcessor { + + private static final Logger log = + org.slf4j.LoggerFactory.getLogger(SpringContextCloseHandler.class); + + private ApplicationContext context; + + /* + * (non-Javadoc) + * + * @see org.springframework.context.ApplicationListener#onApplicationEvent(org. + * springframework.context. ApplicationEvent) + */ + @Override + @EventListener + public void onApplicationEvent(final ContextClosedEvent arg0) { + log.info("MS-specific eIDAS-Node shutdown process started ..."); + + try { + log.debug("CleanUp objects with implements the IDestroyable interface ... "); + final Map<String, IDestroyableObject> objectsToDestroy = + context.getBeansOfType(IDestroyableObject.class); + internalIDestroyableObject(objectsToDestroy); + log.info("Object cleanUp complete"); + + log.debug("Stopping Spring Thread-Pools ... "); + // shut-down task schedulers + final Map<String, ThreadPoolTaskScheduler> schedulers = + context.getBeansOfType(ThreadPoolTaskScheduler.class); + internalThreadPoolTaskScheduler(schedulers); + + // shut-down task executors + final Map<String, ThreadPoolTaskExecutor> executers = + context.getBeansOfType(ThreadPoolTaskExecutor.class); + internalThreadPoolTaskExecutor(executers); + log.debug("Spring Thread-Pools stopped"); + + + //clean-up eIDAS node + Map<String, IgniteInstanceInitializerSpecificCommunication> nodeIgnite = + context.getBeansOfType(IgniteInstanceInitializerSpecificCommunication.class); + log.info("Find #{} Apache Ignite instances from eIDAS Ref. impl.", nodeIgnite.size()); + for (Entry<String, IgniteInstanceInitializerSpecificCommunication> el : nodeIgnite.entrySet()) { + if (el.getValue().getInstance() != null) { + el.getValue().getInstance().close(); + el.getValue().destroyInstance(); + log.debug("Shutdown Apache-Ignite: {}", el.getKey()); + + } + } + + log.info("MS-specific eIDAS-Node shutdown process finished"); + + } catch (final Exception e) { + log.warn("MS-specific eIDAS-Node shutdown process has an error.", e); + + } + + } + + /* + * (non-Javadoc) + * + * @see org.springframework.beans.factory.config.BeanPostProcessor# + * postProcessAfterInitialization(java. lang.Object, java.lang.String) + */ + @Override + public Object postProcessAfterInitialization(final Object arg0, final String arg1) + throws BeansException { + if (arg0 instanceof ThreadPoolTaskScheduler) { + ((ThreadPoolTaskScheduler) arg0).setWaitForTasksToCompleteOnShutdown(true); + } + if (arg0 instanceof ThreadPoolTaskExecutor) { + ((ThreadPoolTaskExecutor) arg0).setWaitForTasksToCompleteOnShutdown(true); + } + return arg0; + + } + + /* + * (non-Javadoc) + * + * @see org.springframework.beans.factory.config.BeanPostProcessor# + * postProcessBeforeInitialization(java .lang.Object, java.lang.String) + */ + @Override + public Object postProcessBeforeInitialization(final Object arg0, final String arg1) + throws BeansException { + return arg0; + + } + + /* + * (non-Javadoc) + * + * @see + * org.springframework.context.ApplicationContextAware#setApplicationContext(org + * .springframework. context.ApplicationContext) + */ + @Override + public void setApplicationContext(final ApplicationContext arg0) throws BeansException { + this.context = arg0; + + } + + private void internalThreadPoolTaskExecutor(final Map<String, ThreadPoolTaskExecutor> executers) { + for (final ThreadPoolTaskExecutor executor : executers.values()) { + executor.shutdown(); + log.debug("Executer {} with active {} work has killed", executor.getThreadNamePrefix(), + executor.getActiveCount()); + + } + + } + + // Not required at the moment + private void internalThreadPoolTaskScheduler( + final Map<String, ThreadPoolTaskScheduler> schedulers) { + log.trace("Stopping #{} task-schedulers", schedulers.size()); + + } + + private void internalIDestroyableObject(final Map<String, IDestroyableObject> objectsToDestroy) { + if (objectsToDestroy != null) { + final Iterator<Entry<String, IDestroyableObject>> interator = + objectsToDestroy.entrySet().iterator(); + while (interator.hasNext()) { + final Entry<String, IDestroyableObject> object = interator.next(); + try { + object.getValue().fullyDestroy(); + log.debug("Object with ID: {} is destroyed", object.getKey()); + + } catch (final Exception e) { + log.warn("Destroing object with ID: {} FAILED!", object.getKey(), null, e); + + } + } + } + + } + +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringInitializer.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringInitializer.java deleted file mode 100644 index 417828a6..00000000 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringInitializer.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2018 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * 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. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. -*/ - -package at.asitplus.eidas.specific.connector; - -import java.util.Arrays; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.context.support.GenericApplicationContext; -import org.springframework.core.io.ClassPathResource; -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.context.support.GenericWebApplicationContext; -import org.springframework.web.context.support.ServletContextResource; -import org.springframework.web.servlet.DispatcherServlet; - -import at.gv.egiz.components.spring.api.SpringLoader; -import at.gv.egiz.eaaf.core.api.IStatusMessenger; -import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory; -import at.gv.egiz.eaaf.core.impl.utils.Random; -import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; - -/** - * Web application initializer. - * - * @author Thomas Lenz - */ -public class SpringInitializer implements WebApplicationInitializer { - - private static final Logger log = LoggerFactory.getLogger(SpringInitializer.class); - - private String[] rootServletContexts = null; - private String[] servletContexts = null; - - /** - * Application specific Spring initializer. - * - */ - public SpringInitializer() { - this.rootServletContexts = null; - this.servletContexts = new String[] { - "/applicationContext.xml", - - }; - } - - /* - * (non-Javadoc) - * - * @see - * org.springframework.web.WebApplicationInitializer#onStartup(javax.servlet. - * ServletContext) - */ - @Override - public void onStartup(ServletContext servletContext) throws ServletException { - try { - log.info("=============== Loading Config Root Context! ==============="); - final ApplicationContext cfgRootContext = - new ClassPathXmlApplicationContext(new String[] { - "/applicationContext.xml" - }); - - log.info("=============== Loading Root Context! ==============="); - final GenericWebApplicationContext rootContext = new GenericWebApplicationContext(); - rootContext.setServletContext(servletContext); - rootContext.setParent(cfgRootContext); - - log.info("Spring-context was initialized with active profiles: {}", - Arrays.asList(rootContext.getEnvironment().getActiveProfiles())); - - log.info("=============== Loading Local Contexts! ==============="); - final XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader( - rootContext); - if (rootServletContexts != null) { - for (final String rootServletContext : rootServletContexts) { - log.debug("Loading: " + rootServletContext); - xmlReader.loadBeanDefinitions(new ServletContextResource( - servletContext, rootServletContext)); - } - } - // Manage the lifecycle of the root application context - servletContext.addListener(new ContextLoaderListener(rootContext)); - - // log.debug("Beans after logAMQP in {}", rootContext); - // dumpBeanDefinitions(rootContext); - - log.info("=============== Loading SPI Context! ==============="); - log.debug("Loading modules and components"); - SpringLoader.loadSpringServices(rootContext); - - log.trace("Beans after SPI in " + rootContext); - dumpBeanDefinitions(rootContext); - - log.debug("Loading servlet config in " + rootContext); - if (servletContexts != null) { - for (final String servletContextString : servletContexts) { - xmlReader.loadBeanDefinitions(new ClassPathResource(servletContextString, SpringInitializer.class)); - } - - } - - log.debug("Refreshing context " + rootContext); - rootContext.refresh(); - - log.info("=============== Register Dispatcher Servlet! ==============="); - - log.trace("Final Beans in " + rootContext); - dumpBeanDefinitions(rootContext); - - log.info("Registering dispatcher configuration"); - final ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", - new DispatcherServlet(rootContext)); - if (dispatcher != null) { - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/"); - dispatcher.setAsyncSupported(true); - - } else { - log.error("Failed to register dispatcher server in servlet context!"); - } - - log.info("=============== Register RequestContextListener! ==============="); - servletContext.addListener(new RequestContextListener()); - - // initialize status messenger - LogMessageProviderFactory.setStatusMessager(rootContext.getBean(IStatusMessenger.class)); - - log.info("Bootstrap openSAML .... "); - EaafOpenSaml3xInitializer.eaafInitialize(); - - log.info("Seed random number generator ... "); - Random.seedRandom(); - - log.info("Initialization of MS-specific eIDAS-connector finished."); - - } catch (final Throwable e) { - log.error("MS-specific eIDAS-connector initialization FAILED!", e); - - } - - } - - private void dumpBeanDefinitions(GenericApplicationContext context) { - log.trace("Registered Bean in context " + context.toString()); - - final String[] registeredBeans = context.getBeanDefinitionNames(); - for (final String registeredBean : registeredBeans) { - final BeanDefinition beanDefinition = context - .getBeanDefinition(registeredBean); - log.trace(registeredBean + " -> " + beanDefinition.getBeanClassName()); - - } - - log.trace("Registered Bean in context --" + context); - } -} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java index be9f8862..1833f377 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java @@ -22,6 +22,9 @@ package at.asitplus.eidas.specific.connector.attributes; import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_AUTHBLOCK_SIGNED_FRIENDLY_NAME; import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_AUTHBLOCK_SIGNED_NAME; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + import org.apache.commons.lang3.StringUtils; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; @@ -48,7 +51,8 @@ public class AuthBlockAttributeBuilder implements IPvpAttributeBuilder { String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class); if (StringUtils.isNotEmpty(authBlock)) { - return g.buildStringAttribute(EID_AUTHBLOCK_SIGNED_FRIENDLY_NAME, EID_AUTHBLOCK_SIGNED_NAME, authBlock); + return g.buildStringAttribute(EID_AUTHBLOCK_SIGNED_FRIENDLY_NAME, EID_AUTHBLOCK_SIGNED_NAME, + Base64.getEncoder().encodeToString(authBlock.getBytes(StandardCharsets.UTF_8))); } else { throw new UnavailableAttributeException(EID_AUTHBLOCK_SIGNED_NAME); diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java index 13cceafb..c41660ce 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java @@ -25,70 +25,63 @@ package at.asitplus.eidas.specific.connector.builder; import java.util.Date; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import org.w3c.dom.DOMException; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer; -import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException; import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException; -import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.exceptions.EaafParserException; -import at.gv.egiz.eaaf.core.exceptions.XPathException; import at.gv.egiz.eaaf.core.impl.data.Pair; import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; import at.gv.egiz.eaaf.core.impl.idp.auth.builder.AbstractAuthenticationDataBuilder; import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import lombok.extern.slf4j.Slf4j; @Service("AuthenticationDataBuilder") +@Slf4j public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder { - private static final Logger log = LoggerFactory.getLogger(AuthenticationDataBuilder.class); - + @Override - public IAuthData buildAuthenticationData(IRequest pendingReq) throws EaafAuthenticationException { - - final IAuthProcessDataContainer authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); + protected IAuthData buildDeprecatedAuthData(IRequest pendingReq) throws EaafException { + final IAuthProcessDataContainer authProcessData = + pendingReq.getSessionData(AuthProcessDataWrapper.class); AuthenticationData authData = new AuthenticationData(); - - boolean isEidModeNew = pendingReq.getServiceProviderConfiguration() - .isConfigurationValue(MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE, false); - - if (isEidModeNew) { - authData = (AuthenticationData) super.buildAuthenticationData(pendingReq); - } else { - try { - generateDeprecatedBasicAuthData(authData, pendingReq, authProcessData); - - // set specific informations - authData.setSsoSessionValidTo( - new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000)); - - } catch (EaafBuilderException | EaafParserException - | EaafConfigurationException | XPathException | DOMException e) { - log.warn("Can not build authentication data from auth. process information"); - throw new EaafAuthenticationException("builder.11", new Object[]{e.getMessage()}, e); - - } - } + + //set basis infos + super.generateDeprecatedBasicAuthData(authData, pendingReq, authProcessData); + + // set specific informations + authData.setSsoSessionValidTo( + new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000)); + return authData; - } - - @Override - protected IAuthData buildDeprecatedAuthData(IRequest arg0) throws EaafException { - return new AuthenticationData(); } @Override - protected void buildServiceSpecificAuthenticationData(IAuthData arg0, IRequest arg1) throws EaafException { - // TODO Auto-generated method stub - + protected void buildServiceSpecificAuthenticationData(IAuthData authData, IRequest pendingReq) + throws EaafException { + if (authData instanceof AuthenticationData) { + ((AuthenticationData)authData).setGenericData( + ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, + pendingReq.getUniquePiiTransactionIdentifier()); + log.trace("Inject piiTransactionId: {} into AuthData", pendingReq.getUniquePiiTransactionIdentifier()); + + // set specific informations + ((AuthenticationData)authData).setSsoSessionValidTo( + new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000)); + + + } else { + throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: " + + authData.getClass().getName()); + + } + } @Override @@ -100,8 +93,6 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder @Override protected Pair<String, String> buildOAspecificbPK(IRequest pendingReq, AuthenticationData authData) throws EaafBuilderException { - // TODO: check if bPK already exists - return super.buildOAspecificbPK(pendingReq, authData); } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java index 2a10031b..a1e953f1 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java @@ -24,6 +24,7 @@ package at.asitplus.eidas.specific.connector.config; import java.net.MalformedURLException; +import java.util.List; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -35,11 +36,11 @@ import org.springframework.context.support.ReloadableResourceBundleMessageSource import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.i18n.CookieLocaleResolver; import org.thymeleaf.templateresolver.FileTemplateResolver; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.api.logging.IMessageSourceLocation; import at.gv.egiz.eaaf.core.impl.utils.FileUtils; /** @@ -90,43 +91,63 @@ public class StaticResourceConfiguration implements WebMvcConfigurer { } /** - * Internal i18n message source. - * + * Get a message source with only internal message properties. + * + * @param ressourceLocations List of source-locations * @return */ @Bean - public ReloadableResourceBundleMessageSource internalMessageSource() { - final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); + public ReloadableResourceBundleMessageSource internalMessageSource( + @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) { + final ReloadableResourceBundleMessageSource messageSource = + new ReloadableResourceBundleMessageSource(); // add default message source messageSource.setBasename(DEFAULT_MESSAGE_SOURCE); + + if (ressourceLocations != null) { + // load more message sources + for (final IMessageSourceLocation el : ressourceLocations) { + if (el.getMessageSourceLocation() != null) { + for (final String source : el.getMessageSourceLocation()) { + messageSource.addBasenames(source); + log.debug("Add additional messageSources: {}", el.getMessageSourceLocation().toArray()); + + } + } + } + } + messageSource.setDefaultEncoding("UTF-8"); return messageSource; } /** - * External i18n message source. - * + * Get full message source with internal and external message-properties files. + * + * @param ressourceLocations List of source-locations * @return */ @Bean - public ReloadableResourceBundleMessageSource messageSource() { - final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); + public ReloadableResourceBundleMessageSource messageSource( + @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) { + final ReloadableResourceBundleMessageSource messageSource = + new ReloadableResourceBundleMessageSource(); messageSource.setDefaultEncoding("UTF-8"); - messageSource.setParentMessageSource(internalMessageSource()); + messageSource.setParentMessageSource(internalMessageSource(ressourceLocations)); - final String staticResources = basicConfig.getBasicConfiguration( - MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH); + final String staticResources = basicConfig + .getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH); try { if (StringUtils.isNotEmpty(staticResources)) { - final String absPath = FileUtils.makeAbsoluteUrl(staticResources, basicConfig - .getConfigurationRootDirectory()); + final String absPath = + FileUtils.makeAbsoluteUrl(staticResources, basicConfig.getConfigurationRootDirectory()); messageSource.setBasename(absPath); - messageSource.setFallbackToSystemLocale(false); } else { log.debug("No Ressourcefolder for dynamic Web content templates"); + } } catch (final MalformedURLException e) { @@ -137,40 +158,28 @@ public class StaticResourceConfiguration implements WebMvcConfigurer { return messageSource; } - + /** - * Cookie based i18n language selector. - * - * @return - */ - @Bean - public CookieLocaleResolver localeResolver() { - final CookieLocaleResolver localeResolver = new CookieLocaleResolver(); - localeResolver.setCookieName("currentLanguage"); - localeResolver.setCookieMaxAge(3600); - return localeResolver; - } - - - /** - * Thymeleaf based template resolver. - * + * Get a Tyhmeleaf Template-Resolver with external configuration path. + * * @return */ @Bean(name = "templateResolver") public FileTemplateResolver templateResolver() { - final String staticResources = basicConfig.getBasicConfiguration( - MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH); + final String staticResources = basicConfig + .getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH); try { if (StringUtils.isNotEmpty(staticResources)) { - String absPath = FileUtils.makeAbsoluteUrl(staticResources, basicConfig - .getConfigurationRootDirectory()); + String absPath = + FileUtils.makeAbsoluteUrl(staticResources, basicConfig.getConfigurationRootDirectory()); if (!absPath.endsWith("/")) { absPath += "/"; + } if (absPath.startsWith("file:")) { absPath = absPath.substring("file:".length()); + } final FileTemplateResolver viewResolver = new FileTemplateResolver(); @@ -179,11 +188,12 @@ public class StaticResourceConfiguration implements WebMvcConfigurer { viewResolver.setTemplateMode("HTML"); viewResolver.setCacheable(false); - log.info("Add Ressourcefolder: " + absPath + " for dynamic Web content templates"); + log.info("Add Ressourcefolder: {} for dynamic Web content templates", absPath); return viewResolver; } else { log.debug("No Ressourcefolder for dynamic Web content templates"); + } } catch (final MalformedURLException e) { @@ -191,8 +201,7 @@ public class StaticResourceConfiguration implements WebMvcConfigurer { } - // TODO: implement some backup solution - return null; + throw new RuntimeException("Can NOT initialize HTML template resolver"); } } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/MonitoringController.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/MonitoringController.java deleted file mode 100644 index aa45c836..00000000 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/MonitoringController.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright 2018 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * 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. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. -*/ - -package at.asitplus.eidas.specific.connector.controller; - -import java.io.IOException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.transform.TransformerFactoryConfigurationError; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.text.StringEscapeUtils; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.impl.client.CloseableHttpClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; -import at.gv.egiz.eaaf.core.api.data.EaafConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; -import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; -import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; -import at.gv.egiz.eaaf.core.impl.utils.DomUtils; -import at.gv.egiz.eaaf.core.impl.utils.Random; -import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataBuilderConfiguration; -import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataConfigurationFactory; -import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpMetadataBuilder; -import at.gv.egiz.eaaf.modules.pvp2.impl.utils.AbstractCredentialProvider; - -@Controller -public class MonitoringController { - private static final Logger log = LoggerFactory.getLogger(MonitoringController.class); - - private static final String MESSAGE_OK = "OK"; - private static final String MESSAGE_ERROR = "ERROR"; - private static final String MESSAGE_SKIPPED = "SKIPPED"; - - private static final String TEST_STORAGE = "Storage: "; - private static final String TEST_CONFIG = "Config: "; - private static final String TEST_PVPMETADATA = "PVP_metadata: "; - private static final String TEST_EIDASNODEMETADATA = "eIDASNode_metadata: "; - - @Autowired - private ITransactionStorage storage; - @Autowired - private IConfigurationWithSP config; - - @Autowired private IHttpClientFactory httpClientFactory; - - @Autowired - private PvpMetadataBuilder metadatabuilder; - @Autowired - private IPvpMetadataConfigurationFactory configFactory; - private AbstractCredentialProvider pvpIdpCredentials; - - /** - * Sets a specific credential provider for PVP S-Profile IDP component. - * - * @param pvpIdpCredentials credential provider - */ - public void setPvpIdpCredentials(AbstractCredentialProvider pvpIdpCredentials) { - this.pvpIdpCredentials = pvpIdpCredentials; - - } - - /** - * Generic exception handling that wrote an error-message to html response. - * - * @param resp Http response object - * @param exception Error - * @throws IOException In case of a html response error. - */ - @ExceptionHandler({ Throwable.class }) - public void genericExceptionHandler(HttpServletResponse resp, Exception exception) throws IOException { - log.error("Monitoring Servlet receives an error.", exception); - resp.setContentType(EaafConstants.CONTENTTYPE_HTML_UTF8); - resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - resp.getWriter().write("Reason: " - + StringEscapeUtils.escapeHtml4(StringEscapeUtils.escapeEcmaScript(exception.getMessage()))); - - } - - /** - * MS-Connector status-monitoring end-point. - * - * @param req http request - * @param resp http response - * @throws IOException In case of a general processing error - */ - @RequestMapping(value = { MsEidasNodeConstants.ENDPOINT_MONITORING_MONITOR }, - method = { RequestMethod.GET }) - public void startFullTest(HttpServletRequest req, HttpServletResponse resp) throws IOException { - resp.setContentType(EaafConstants.CONTENTTYPE_HTML_UTF8); - - try { - testConfig(); - testStorage(); - testPvpMetadata(); - testEidasNodeMetadata(); - resp.setStatus(HttpServletResponse.SC_OK); - resp.getWriter().write(MESSAGE_OK); - - } catch (final Exception e) { - resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - resp.getWriter().write(MESSAGE_ERROR); - - } - - } - - /** - * MS-Connector internal verify monitoring end-point. - * - * @param req http request object - * @param resp http response object - * @throws IOException In case of an internal processing error - */ - @RequestMapping(value = { MsEidasNodeConstants.ENDPOINT_MONITORING_VERIFY }, - method = { RequestMethod.GET }) - - public void startSingleTests(HttpServletRequest req, HttpServletResponse resp) throws IOException { - String result = StringUtils.EMPTY; - try { - result += testConfig() + "<br>"; - } catch (final Exception e) { - result += e.getMessage() + "<br>"; - } - - try { - result += testStorage() + "<br>"; - } catch (final Exception e) { - result += e.getMessage() + "<br>"; - } - - try { - result += testPvpMetadata() + "<br>"; - } catch (final Exception e) { - result += e.getMessage() + "<br>"; - } - - try { - result += testEidasNodeMetadata() + "<br>"; - } catch (final Exception e) { - result += e.getMessage() + "<br>"; - } - - resp.setContentType(EaafConstants.CONTENTTYPE_HTML_UTF8); - resp.setStatus(HttpServletResponse.SC_OK); - resp.getWriter().write(result); - - } - - private String testStorage() throws Exception { - try { - final String key = Random.nextHexRandom16(); - final String value = Random.nextHexRandom16(); - - storage.put(key, value, -1); - final String result = storage.get(key, String.class); - storage.remove(key); - - if (result != null && result.equals(value)) { - return TEST_STORAGE + MESSAGE_OK; - } else { - log.warn("Montioring: TestValue: " + value + " does NOT match in Storage test"); - } - - } catch (final EaafException e) { - log.warn("Montioring: Can not read/write to storage.", e); - - } - - throw new Exception(TEST_STORAGE + MESSAGE_ERROR); - - } - - private String testConfig() throws Exception { - try { - if (config.getBasicConfigurationWithPrefix(MsEidasNodeConstants.PROP_CONFIG_SP_LIST_PREFIX) != null - && config.getBasicConfigurationWithPrefix(MsEidasNodeConstants.PROP_CONFIG_SP_LIST_PREFIX) - .size() > 0) { - return TEST_CONFIG + MESSAGE_OK; - } else { - log.warn("Montioring: Can not read from configuration file."); - } - - } catch (final Exception e) { - log.warn("Montioring: Can not read from configuration file.", e); - } - - throw new Exception(TEST_CONFIG + MESSAGE_ERROR); - - } - - private String testPvpMetadata() throws Exception { - try { - // build metadata - final IPvpMetadataBuilderConfiguration metadataConfig = - configFactory.generateMetadataBuilderConfiguration( - "http://localhost/monitoring", - pvpIdpCredentials); - metadatabuilder.buildPvpMetadata(metadataConfig); - return TEST_PVPMETADATA + MESSAGE_OK; - - } catch (Exception | TransformerFactoryConfigurationError e) { - log.warn("Monitoring: Has an error in '" + TEST_PVPMETADATA + "': " + e.getMessage(), e); - throw new Exception(TEST_PVPMETADATA + MESSAGE_ERROR, e); - - } - - } - - private String testEidasNodeMetadata() throws Exception { - try { - final String urlString = config.getBasicConfiguration( - MsEidasNodeConstants.PROP_CONFIG_MONITORING_EIDASNODE_METADATAURL); - if (StringUtils.isEmpty(urlString)) { - log.debug("No eIDASNode metadata URL. Skipping test ... "); - return TEST_EIDASNODEMETADATA + MESSAGE_SKIPPED; - - } - - // create HTTP client - // TODO: update if we switch to openSAML3 - CloseableHttpClient httpClient = httpClientFactory.getHttpClient(); - HttpUriRequest request = new HttpGet(urlString); - - final CloseableHttpResponse respCode = httpClient.execute(request); - if (respCode.getStatusLine().getStatusCode() != 200) { - log.warn("Monitoring: Has an error in '" + TEST_EIDASNODEMETADATA + "': " + " HTTP responsecode: " - + respCode); - throw new Exception(TEST_EIDASNODEMETADATA + MESSAGE_ERROR); - - } - - // parse metadata - DomUtils.parseXmlNonValidating(respCode.getEntity().getContent()); - - return TEST_EIDASNODEMETADATA + MESSAGE_OK; - - } catch (Exception | TransformerFactoryConfigurationError e) { - log.warn("Monitoring: Has an error in '" + TEST_EIDASNODEMETADATA + "': " + e.getMessage(), e); - throw new Exception(TEST_EIDASNODEMETADATA + MESSAGE_ERROR, e); - - } - - } - -} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java new file mode 100644 index 00000000..f160916c --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java @@ -0,0 +1,69 @@ +package at.asitplus.eidas.specific.connector.health; + +import java.io.ByteArrayInputStream; + +import javax.xml.transform.TransformerFactoryConfigurationError; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.StatusLine; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.ContentType; +import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.impl.data.Triple; +import at.gv.egiz.eaaf.core.impl.http.HttpUtils; +import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; +import at.gv.egiz.eaaf.core.impl.utils.DomUtils; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class EidasNodeMetadataHealthIndicator implements HealthIndicator { + + @Autowired IConfiguration config; + @Autowired IHttpClientFactory httpClientFactory; + + @Override + public Health health() { + try { + final String urlString = config.getBasicConfiguration( + MsEidasNodeConstants.PROP_CONFIG_MONITORING_EIDASNODE_METADATAURL); + if (StringUtils.isEmpty(urlString)) { + log.trace("No eIDASNode metadata URL. Skipping test ... "); + return Health.unknown().build(); + + } + + // create HTTP client + CloseableHttpClient httpClient = httpClientFactory.getHttpClient(); + URIBuilder uriBuilder = new URIBuilder(urlString); + HttpUriRequest request = new HttpGet(uriBuilder.build()); + + final Triple<StatusLine, ByteArrayInputStream, ContentType> respCode = httpClient.execute(request, + HttpUtils.bodyStatusCodeResponseHandler()); + if (respCode.getFirst().getStatusCode() != 200) { + log.warn("Monitoring: Get http StatusCode: {} from eIDAS-Node Metadata endpoint", + respCode.getFirst().getStatusCode()); + return Health.down().withDetail("http StatusCode", respCode.getFirst().getStatusCode()).build(); + + } + + // parse metadata + DomUtils.parseXmlNonValidating(respCode.getSecond()); + + return Health.up().build(); + + } catch (Exception | TransformerFactoryConfigurationError e) { + log.warn("Monitoring: Can not read SAML2 metadata from eIDAS-Node", e); + return Health.down().down(e).build(); + + } + } + +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java new file mode 100644 index 00000000..10517565 --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java @@ -0,0 +1,52 @@ +package at.asitplus.eidas.specific.connector.health; + +import org.apache.ignite.Ignite; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; + +import eu.eidas.auth.cache.IgniteInstanceInitializerSpecificCommunication; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +/** + * HealthCheck that validate Nodes in Apache-Ignite Cluster. + * + * @author tlenz + * + */ +@Slf4j +public class IgniteClusterHealthIndicator implements HealthIndicator { + + @Setter + protected IgniteInstanceInitializerSpecificCommunication igniteInstanceInitializerSpecificCommunication; + + @Override + public Health health() { + final Ignite instance = igniteInstanceInitializerSpecificCommunication.getInstance(); + + // check if Apache Ignite cluster is active + if (!instance.cluster().active()) { + return Health.outOfService().build(); + + } + + final Health.Builder healthBuilder; + // Status UP requires more than 1 node because MS-Connector and eIDAS-Node operations as + // micro-services + if (instance.cluster().nodes().size() > 1) { + healthBuilder = Health.up(); + + } else { + // Something looks wrong if only a single node was found because MS-Connector and eIDAS-Node + // operations as micro-services + healthBuilder = Health.outOfService(); + + } + + healthBuilder.withDetail("#Nodes", instance.cluster().nodes().size()); + log.trace("Ignite state. #Nodes: {}", instance.cluster().nodes().size()); + return healthBuilder.build(); + + } + +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/Saml2MetadataHealthIndicator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/Saml2MetadataHealthIndicator.java new file mode 100644 index 00000000..592231b0 --- /dev/null +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/Saml2MetadataHealthIndicator.java @@ -0,0 +1,44 @@ +package at.asitplus.eidas.specific.connector.health; + +import javax.xml.transform.TransformerFactoryConfigurationError; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; + +import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataBuilderConfiguration; +import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataConfigurationFactory; +import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpMetadataBuilder; +import at.gv.egiz.eaaf.modules.pvp2.impl.utils.AbstractCredentialProvider; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class Saml2MetadataHealthIndicator implements HealthIndicator { + + @Autowired + private PvpMetadataBuilder metadatabuilder; + @Autowired + private IPvpMetadataConfigurationFactory configFactory; + + @Setter + private AbstractCredentialProvider pvpIdpCredentials; + + @Override + public Health health() { + try { + // build metadata + final IPvpMetadataBuilderConfiguration metadataConfig = + configFactory.generateMetadataBuilderConfiguration( + "http://localhost/monitoring", + pvpIdpCredentials); + metadatabuilder.buildPvpMetadata(metadataConfig); + return Health.up().build(); + + } catch (Exception | TransformerFactoryConfigurationError e) { + return Health.down().down(e).build(); + + } + } + +} diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java index 86808f01..d3b8116a 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java @@ -26,8 +26,6 @@ package at.asitplus.eidas.specific.connector.processes.tasks; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -39,7 +37,6 @@ import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.exceptions.GuiBuildException; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; @@ -51,7 +48,6 @@ import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; */ @Component("GenerateCountrySelectionFrameTask") public class GenerateCountrySelectionFrameTask extends AbstractAuthServletTask { - private static final Logger log = LoggerFactory.getLogger(GenerateCountrySelectionFrameTask.class); @Autowired ISpringMvcGuiFormBuilder guiBuilder; @@ -77,16 +73,11 @@ public class GenerateCountrySelectionFrameTask extends AbstractAuthServletTask { guiBuilder.build(request, response, config, "BKU-Selection form"); - } catch (final GuiBuildException e) { - log.warn("Can not build GUI:'BKU-Selection'. Msg:" + e.getMessage()); + } catch (final Exception e) { throw new TaskExecutionException(pendingReq, "Can not build GUI. Msg:" + e.getMessage(), new EaafException("gui.00", new Object[] { e.getMessage() }, e)); - } catch (final Exception e) { - log.warn("FinalizeAuthenticationTask has an internal error", e); - throw new TaskExecutionException(pendingReq, e.getMessage(), e); - } } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java index d38da6fe..073f7513 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java @@ -94,8 +94,8 @@ public class StatusMessageProvider implements IStatusMessenger { public String getResponseErrorCode(Throwable throwable) { String errorCode = IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC; if (throwable instanceof EaafException) { - errorCode = ((EaafException) throwable).getErrorId(); - + errorCode = mapInternalErrorToExternalError(((EaafException) throwable).getErrorId()); + } // TODO: maybe more internal switches are required diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java index 557e245a..1ea5a280 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java @@ -30,18 +30,47 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.impl.utils.Random; -public class EidasCacheTransactionStoreDecorator implements ITransactionStorage { +public class EidasCacheTransactionStoreDecorator implements ITransactionStorage, HealthIndicator { private static final Logger log = LoggerFactory.getLogger(EidasCacheTransactionStoreDecorator.class); @Autowired(required = true) private CacheWithEidasBackend storage; @Override + public Health health() { + try { + final String key = Random.nextHexRandom16(); + final String value = Random.nextHexRandom16(); + + this.put(key, value, -1); + final String result = this.get(key, String.class); + this.remove(key); + + if (result != null && result.equals(value)) { + return Health.up().build(); + + } else { + log.warn("Montioring: TestValue: " + value + " does NOT match in Storage test"); + return Health.down().build(); + + } + + } catch (final EaafException e) { + log.warn("Montioring: Can not read/write to storage.", e); + return Health.down().down(e).build(); + + } + } + + @Override public void changeKey(String oldKey, String newKey, Object value) throws EaafException { if (containsKey(oldKey)) { final TransactionStoreElement el = storage.get(oldKey); @@ -148,5 +177,4 @@ public class EidasCacheTransactionStoreDecorator implements ITransactionStorage } } - } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java index 26d442cb..3bda2932 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java @@ -33,13 +33,11 @@ import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; -@Service("SimpleInMemoryTransactionStorage") public class SimpleInMemoryTransactionStorage implements ITransactionStorage { private static final Logger log = LoggerFactory.getLogger(SimpleInMemoryTransactionStorage.class); diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties new file mode 100644 index 00000000..b13b6c18 --- /dev/null +++ b/connector/src/main/resources/application.properties @@ -0,0 +1,148 @@ +## Set Spring-Boot profile-configuration to 2.3 style +spring.config.use-legacy-processing=true + +## ApplicationServer configuration +server.servlet.contextPath=/ms_connector +#server.port=7080 + +app.build.artifactId=ms_connector + + +############################################################################# +## SpringBoot Admin client +spring.boot.admin.client.enabled=false + + + + +############################################################################# +## MS-speccific eIDAS-Connector configuration +#proxy.context.url.prefix= +eidas.ms.context.url.request.validation=false +#proxy.configRootDir=file:/.../config/ +eidas.ms.context.use.clustermode=true +eidas.ms.core.logging.level.info.errorcodes=auth.21 + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + + +##Specific logger configuration +eidas.ms.technicallog.write.MDS.into.techlog=true +eidas.ms.revisionlog.write.MDS.into.revisionlog=true +eidas.ms.revisionlog.logIPAddressOfUser=true + + +##Directory for static Web content +eidas.ms.webcontent.static.directory=webcontent/ +eidas.ms.webcontent.templates=templates/ +eidas.ms.webcontent.properties=properties/messages +eidas.ms.webcontent.templates.countryselection=countrySelection.html + + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.maxlifetime=300 +eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 +#eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +#eidas.ms.auth.eIDAS.node_v2.forward.endpoint= +eidas.ms.auth.eIDAS.node_v2.forward.method=POST +eidas.ms.auth.eIDAS.node_v2.countrycode=AT +eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=true + +eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high + +#eidas.ms.auth.eIDAS.szrclient.useTestService=true +#eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +#eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +#eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/junit.jks +#eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password=password +#eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +#eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= +eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 +eidas.ms.auth.eIDAS.szrclient.timeout.response=30 +eidas.ms.auth.eIDAS.szrclient.params.vkz= + +eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false +eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject=false + + +# tech. AuthBlock signing for E-ID process +#eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +#eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +#eidas.ms.auth.eIDAS.authblock.keystore.path=keys/teststore.jks +#eidas.ms.auth.eIDAS.authblock.keystore.type=jks +#eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +#eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true + + +eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true +eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true + +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=false +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=false + +##without mandates +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true + +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.4=PlaceOfBirth,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.5=BirthName,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.6=Gender,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.7=CurrentAddress,false + +##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true + + +## PVP2 S-Profile end-point configuration +#eidas.ms.pvp2.keystore.type=jks +#eidas.ms.pvp2.keystore.path=keys/junit.jks +#eidas.ms.pvp2.keystore.password=password +#eidas.ms.pvp2.key.metadata.alias=meta +#eidas.ms.pvp2.key.metadata.password=password +#eidas.ms.pvp2.key.signing.alias=sig +#eidas.ms.pvp2.key.signing.password=password +#eidas.ms.pvp2.metadata.validity=24 + +#eidas.ms.pvp2.metadata.organisation.name=JUnit +#eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit +#eidas.ms.pvp2.metadata.organisation.url=http://junit.test +#eidas.ms.pvp2.metadata.contact.givenname=Max +#eidas.ms.pvp2.metadata.contact.surname=Mustermann +#eidas.ms.pvp2.metadata.contact.email=max@junit.test + + +## Service Provider configuration +#eidas.ms.sp.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata +#eidas.ms.sp.0.pvp2.metadata.truststore=keys/junit.jks +#eidas.ms.sp.0.pvp2.metadata.truststore.password=password +#eidas.ms.sp.0.friendlyName=jUnit test +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + + +##only for advanced config +eidas.ms.configuration.sp.disableRegistrationRequirement= +#eidas.ms.configuration.restrictions.baseID.spTransmission= +eidas.ms.configuration.auth.default.countrycode= +eidas.ms.configuration.pvp.scheme.validation= +eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/connector/src/main/resources/applicationContext.xml b/connector/src/main/resources/applicationContext.xml index 76682a2e..15ce0a55 100644 --- a/connector/src/main/resources/applicationContext.xml +++ b/connector/src/main/resources/applicationContext.xml @@ -14,10 +14,14 @@ http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:annotation-config /> - <mvc:annotation-driven /> + <context:component-scan base-package="at.gv.egiz.eaaf.utils.springboot.ajp"/> +<!-- + <context:annotation-config /> + <mvc:annotation-driven /> <mvc:default-servlet-handler /> - +--> + <mvc:interceptors> <bean class="at.asitplus.eidas.specific.connector.interceptor.WebFrontEndSecurityInterceptor" /> @@ -27,13 +31,24 @@ </bean> </mvc:interceptors> + <bean id="springContextClosingHandler" + class="at.asitplus.eidas.specific.connector.SpringContextCloseHandler" /> + +<!-- <context:property-placeholder location="${eidas.ms.configuration}" /> + --> + <beans profile="deprecatedConfig"> <bean id="BasicMSSpecificNodeConfig" class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider"> - <constructor-arg - value="#{systemProperties['eidas.ms.configuration']}" /> + <constructor-arg value="#{systemProperties['eidas.ms.configuration']}" /> </bean> + </beans> + <beans profile="!deprecatedConfig"> + <bean id="springBootMsSpecificNodeConfig" + class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" /> + + </beans> </beans> diff --git a/connector/src/main/resources/log4j.properties b/connector/src/main/resources/log4j.properties deleted file mode 100644 index 81e54aae..00000000 --- a/connector/src/main/resources/log4j.properties +++ /dev/null @@ -1,55 +0,0 @@ -# commons-logging setup -org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory - -# define log4j root loggers -log4j.rootLogger=info,stdout, console - -log4j.logger.at.gv.egiz.eaaf=info, msnode -log4j.logger.at.gv.egiz.eidas.specific=info, msnode -log4j.logger.at.gv.egiz.eidas.specific.connector.logger.RevisionLogger=info, reversion -log4j.logger.at.gv.egiz.eidas.specific.connector.logger.StatisticLogger=info, statistic -log4j.logger.eu.eidas=info, EIDASNODE - -log4j.additivity.at.gv.egiz.eidas.specific=false -log4j.additivity.at.gv.egiz.eidas.specific.connector.logger.RevisionLogger=false -log4j.additivity.at.gv.egiz.eidas.specific.connector.logger.StatisticLogger=false -log4j.additivity.eu.eidas=false - -log4j.appender.console=org.apache.log4j.ConsoleAppender -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n - -log4j.appender.stdout=org.apache.log4j.RollingFileAppender -log4j.appender.stdout.File=${catalina.base}/logs/console.log -log4j.appender.stdout.MaxFileSize=10000KB -log4j.appender.stdout.MaxBackupIndex=9999 -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n - -log4j.appender.msnode=org.apache.log4j.RollingFileAppender -log4j.appender.msnode.File=${catalina.base}/logs/eidas-ms-reversion.log -log4j.appender.msnode.MaxFileSize=10000KB -log4j.appender.msnode.MaxBackupIndex=9999 -log4j.appender.msnode.layout=org.apache.log4j.PatternLayout -log4j.appender.msnode.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n - -log4j.appender.reversion=org.apache.log4j.RollingFileAppender -log4j.appender.reversion.File=${catalina.base}/logs/eidas-ms-reversion.log -log4j.appender.reversion.MaxFileSize=10000KB -log4j.appender.reversion.MaxBackupIndex=9999 -log4j.appender.reversion.layout=org.apache.log4j.PatternLayout -log4j.appender.reversion.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n - -log4j.appender.statistic=org.apache.log4j.RollingFileAppender -log4j.appender.statistic.File=${catalina.base}/logs/eidas-ms-statistic.log -log4j.appender.statistic.MaxFileSize=10000KB -log4j.appender.statistic.MaxBackupIndex=9999 -log4j.appender.statistic.layout=org.apache.log4j.PatternLayout -log4j.appender.statistic.layout.ConversionPattern=%m%n - -log4j.appender.EIDASNODE=org.apache.log4j.RollingFileAppender -log4j.appender.EIDASNODE.File=${catalina.base}/logs/eIDAS_node.log -log4j.appender.EIDASNODE.MaxFileSize=10000KB -log4j.appender.EIDASNODE.MaxBackupIndex=9999 -log4j.appender.EIDASNODE.layout=org.apache.log4j.PatternLayout -log4j.appender.EIDASNODE.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n
\ No newline at end of file diff --git a/connector/src/main/resources/logback.xml b/connector/src/main/resources/logback.xml index a0a9995e..7aa2d0cc 100644 --- a/connector/src/main/resources/logback.xml +++ b/connector/src/main/resources/logback.xml @@ -11,14 +11,14 @@ <appender name="msnode" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender --> - <File>${catalina.base}/logs/eidas-ms-reversion.log</File> + <File>logs/eidas-ms-specific.log</File> <encoder> <pattern>%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>9999</maxIndex> - <FileNamePattern>${catalina.base}/logs/eidas-ms-reversion.log.%i + <FileNamePattern>logs/eidas-ms-specific.log.%i </FileNamePattern> </rollingPolicy> <triggeringPolicy @@ -29,14 +29,14 @@ <appender name="EIDASNODE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender --> - <File>${catalina.base}/logs/eIDAS_node.log</File> + <File>logs/eIDAS_node.log</File> <encoder> <pattern>%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>9999</maxIndex> - <FileNamePattern>${catalina.base}/logs/eIDAS_node.log.%i + <FileNamePattern>logs/eIDAS_node.log.%i </FileNamePattern> </rollingPolicy> <triggeringPolicy @@ -47,14 +47,14 @@ <appender name="reversion" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender --> - <File>${catalina.base}/logs/eidas-ms-reversion.log</File> + <File>logs/eidas-ms-reversion.log</File> <encoder> <pattern>%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>9999</maxIndex> - <FileNamePattern>${catalina.base}/logs/eidas-ms-reversion.log.%i + <FileNamePattern>logs/eidas-ms-reversion.log.%i </FileNamePattern> </rollingPolicy> <triggeringPolicy @@ -65,14 +65,14 @@ <appender name="statistic" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender --> - <File>${catalina.base}/logs/eidas-ms-statistic.log</File> + <File>logs/eidas-ms-statistic.log</File> <encoder> <pattern>%m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>9999</maxIndex> - <FileNamePattern>${catalina.base}/logs/eidas-ms-statistic.log.%i + <FileNamePattern>logs/eidas-ms-statistic.log.%i </FileNamePattern> </rollingPolicy> <triggeringPolicy @@ -83,14 +83,14 @@ <appender name="stdout" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender --> - <File>${catalina.base}/logs/console.log</File> + <File>logs/console.log</File> <encoder> <pattern>%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <maxIndex>9999</maxIndex> - <FileNamePattern>${catalina.base}/logs/console.log.%i + <FileNamePattern>logs/console.log.%i </FileNamePattern> </rollingPolicy> <triggeringPolicy diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml index 5cf0d5b8..f6fdeefe 100644 --- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml +++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml @@ -11,23 +11,24 @@ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> - <context:annotation-config /> - <mvc:annotation-driven /> - <mvc:default-servlet-handler /> + <import resource="common_gui.beans.xml"/> <bean id="WebResourceConfiguration" class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" /> - <bean id="ProcessEngineSignalController" + <bean id="processEngineSignalController" class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" /> - <bean id="MonitoringController" - class="at.asitplus.eidas.specific.connector.controller.MonitoringController"> + <bean id="saml2MetadataGeneration" + class="at.asitplus.eidas.specific.connector.health.Saml2MetadataHealthIndicator"> <property name="pvpIdpCredentials"> <ref bean="PVPEndPointCredentialProvider" /> </property> </bean> + <bean id="eidasNodeMetadata" + class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" /> + <bean id="AuthenticationManager" class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" /> @@ -43,7 +44,7 @@ <bean id="PVPMetadataConfigurationFactory" class="at.asitplus.eidas.specific.connector.provider.PvpMetadataConfigurationFactory" /> - <bean id="PVP2XProtocol" + <bean id="pvp2SProfileEndpoint" class="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint"> <property name="pvpIdpCredentials"> <ref bean="PVPEndPointCredentialProvider" /> @@ -96,17 +97,6 @@ <bean id="mvcGUIBuilderImpl" class="at.asitplus.eidas.specific.connector.gui.SpringMvcGuiFormBuilderImpl" /> - <bean id="templateEngine" - class="org.thymeleaf.spring5.SpringTemplateEngine"> - <property name="templateResolver" ref="templateResolver" /> - </bean> - - <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> - <property name="order" value="2" /> - <property name="templateEngine" ref="templateEngine" /> - <property name="characterEncoding" value="UTF-8" /> - </bean> - <bean id="StatusMessageProvider" class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" /> diff --git a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml index 08c7b672..2e4d1742 100644 --- a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml +++ b/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml @@ -27,12 +27,15 @@ <bean id="msNodeCacheImpl" class="eu.eidas.auth.cache.ConcurrentCacheServiceIgniteSpecificCommunicationImpl"> - <property - name="igniteInstanceInitializerSpecificCommunication" - ref="eidasIgniteInstanceInitializerSpecificCommunication" /> + <property name="igniteInstanceInitializerSpecificCommunication" ref="eidasIgniteInstanceInitializerSpecificCommunication" /> <property name="cacheName" value="msConnectorCache" /> </bean> + <bean id="IgniteClusterState" + class="at.asitplus.eidas.specific.connector.health.IgniteClusterHealthIndicator"> + <property name="igniteInstanceInitializerSpecificCommunication" ref="eidasIgniteInstanceInitializerSpecificCommunication" /> + </bean> + <!-- bean id="defaultHazelcastInstance" class="java.lang.String"> <constructor-arg value="eidasHazelcastInstance"/> </bean> <bean id="eidasHazelcastInstanceInitializer" diff --git a/connector/src/main/resources/tomcat.properties b/connector/src/main/resources/tomcat.properties new file mode 100644 index 00000000..38ab5a64 --- /dev/null +++ b/connector/src/main/resources/tomcat.properties @@ -0,0 +1,15 @@ +tomcat.ajp.enabled=true +#tomcat.ajp.port=41009 +#tomcat.ajp.additionalAttributes.secretrequired=true +#tomcat.ajp.additionalAttributes.secret= + +server.tomcat.accesslog.buffered=false +server.tomcat.accesslog.prefix=tomcat-access_log +server.tomcat.accesslog.directory=logs/ +server.tomcat.accesslog.enabled=true +server.tomcat.accesslog.file-date-format=.yyyy-MM-dd +server.tomcat.accesslog.pattern=common +server.tomcat.accesslog.rename-on-rotate=false +server.tomcat.accesslog.request-attributes-enabled=true +server.tomcat.accesslog.rotate=true +server.tomcat.accesslog.suffix=.log
\ No newline at end of file diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthenticationDataBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthenticationDataBuilderTest.java deleted file mode 100644 index 1721fe61..00000000 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthenticationDataBuilderTest.java +++ /dev/null @@ -1,107 +0,0 @@ -package at.asitplus.eidas.specific.connector.test; - - -import at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; -import at.gv.egiz.eaaf.core.api.idp.IAuthData; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException; -import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; -import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.opensaml.core.config.InitializationException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.i18n.LocaleContextHolder; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import java.util.HashMap; -import java.util.Map; - -import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration({"/applicationContext.xml", "/SpringTest_connector.beans.xml", "/eaaf_core.beans.xml", "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml"}) -@WebAppConfiguration -public class AuthenticationDataBuilderTest { - - @Autowired - private AuthenticationDataBuilder authenticationDataBuilder; - - @Autowired(required = true) - private IConfiguration basicConfig; - - private MockHttpServletRequest httpReq; - private MockHttpServletResponse httpResp; - private TestRequestImpl pendingReq; - - private DummySpConfiguration oaParam; - - private String eidasBind; - private String authBlock; - - - @BeforeClass - public static void classInitializer() throws InitializationException, ComponentInitializationException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_3.properties"); - - EaafOpenSaml3xInitializer.eaafInitialize(); - } - - @Before - public void initialize() throws EaafStorageException { - httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); - httpResp = new MockHttpServletResponse(); - RequestContextHolder.resetRequestAttributes(); - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - - final Map<String, String> spConfig = new HashMap<>(); - spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); - spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); - spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); - oaParam = new DummySpConfiguration(spConfig, basicConfig); - - pendingReq = new TestRequestImpl(); - pendingReq.setAuthUrl("https://localhost/ms_connector"); - pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); - pendingReq.setSpConfig(oaParam); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - authBlock = RandomStringUtils.randomAlphanumeric(20); - eidasBind = RandomStringUtils.randomAlphanumeric(20); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(Constants.SZR_AUTHBLOCK, authBlock); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(Constants.EIDAS_BIND, eidasBind); - LocaleContextHolder.resetLocaleContext(); - } - - @Test - public void first() throws EaafAuthenticationException { - IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); - - Assert.assertNotNull("AuthData null", authData); - Assert.assertNotNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); - Assert.assertNotNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); - Assert.assertNotNull("eidasBind null", authData.getEidasQaaLevel()); - String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class); - String eidasBind = authData.getGenericData(Constants.EIDAS_BIND, String.class); - - Assert.assertEquals("authBlock not equal", authBlock, this.authBlock); - Assert.assertEquals("eidasBind not equal", eidasBind, this.eidasBind); - } - -} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java new file mode 100644 index 00000000..77037415 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java @@ -0,0 +1,485 @@ +package at.asitplus.eidas.specific.connector.test; + +import static org.mockito.ArgumentMatchers.any; +import static org.powermock.api.mockito.PowerMockito.when; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URISyntaxException; +import java.util.Map; +import java.util.Timer; + +import javax.xml.transform.TransformerException; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.ignite.Ignition; +import org.joda.time.DateTime; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.opensaml.core.config.InitializationException; +import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; +import org.opensaml.core.xml.io.MarshallingException; +import org.opensaml.core.xml.io.UnmarshallingException; +import org.opensaml.core.xml.util.XMLObjectSupport; +import org.opensaml.saml.metadata.resolver.impl.ResourceBackedMetadataResolver; +import org.opensaml.saml.saml2.core.RequestAbstractType; +import org.opensaml.saml.saml2.core.StatusResponseType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.core.io.ResourceLoader; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.util.Base64Utils; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.skjolberg.mockito.soap.SoapServiceRule; + +import at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController; +import at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint; +import at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider; +import at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider; +import at.asitplus.eidas.specific.connector.test.saml2.Pvp2SProfileEndPointTest; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.gv.egiz.components.spring.api.SpringBootApplicationContextInitializer; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.idp.controller.ProtocolFinalizationController; +import at.gv.egiz.eaaf.core.impl.utils.DomUtils; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException; +import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.OpenSaml3ResourceAdapter; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; +import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; +import at.gv.egiz.eaaf.modules.pvp2.sp.impl.utils.AssertionAttributeExtractor; +import eu.eidas.auth.commons.attribute.AttributeDefinition; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; +import eu.eidas.auth.commons.light.ILightRequest; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; +import eu.eidas.auth.commons.tx.BinaryLightToken; +import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames; +import eu.eidas.specificcommunication.exception.SpecificCommunicationException; +import eu.eidas.specificcommunication.protocol.SpecificCommunicationService; +import lombok.val; +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.utilities.java.support.xml.XMLParserException; +import szrservices.SZR; +import szrservices.SignContentEntry; +import szrservices.SignContentResponseType; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest +@ContextConfiguration(initializers = { + org.springframework.boot.context.config.DelegatingApplicationContextInitializer.class, + SpringBootApplicationContextInitializer.class + }) +@TestPropertySource(locations = { "file:src/test/resources/config/junit_config_1_springboot.properties" }) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) +@ActiveProfiles(profiles = {"JUNIT", "jUnitTestMode"}) +public class FullStartUpAndProcessTest { + + private static final String FINAL_REDIRECT = "http://localhost/finalizeAuthProtocol?pendingid="; + + @Autowired private WebApplicationContext wac; + @Autowired private PvpEndPointCredentialProvider credentialProvider; + @Autowired private PvpMetadataProvider metadataProvider; + @Autowired private ResourceLoader resourceLoader; + @Autowired private EidasAttributeRegistry attrRegistry; + + @Autowired private Pvp2SProfileEndpoint sProfile; + @Autowired private ProcessEngineSignalController signal; + @Autowired private EidasSignalServlet eidasSignal; + @Autowired private ProtocolFinalizationController finalize; + + @Rule + public final SoapServiceRule soap = SoapServiceRule.newInstance(); + + private SZR szrMock; + + private String cc; + private String givenName; + private String familyName; + private String dateOfBirth; + private String personalId; + private String vsz; + private String eidasBind; + + + /** + * jUnit class initializer. + * @throws InterruptedException In case of an error + * @throws ComponentInitializationException In case of an error + * @throws InitializationException In case of an error + * + */ + @BeforeClass + public static void classInitializer() throws InterruptedException, InitializationException, ComponentInitializationException { + final String current = new java.io.File(".").toURI().toString(); + System.clearProperty("eidas.ms.configuration"); + + //eIDAS Ref. Impl. properties + System.setProperty("EIDAS_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_CONNECTOR_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + + EaafOpenSaml3xInitializer.eaafInitialize(); + + } + + /** + * Test shut-down. + * + * @throws IOException In case of an error + */ + @AfterClass + public static void closeIgniteNode() throws IOException { + System.out.println("Closiong Ignite Node ... "); + Ignition.stopAll(true); + + } + + /** + * jUnit test set-up. + * + * + */ + @Before + public void setup() throws IOException { + DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac); + @SuppressWarnings("rawtypes") + Map<String, FilterRegistrationBean> filters = wac.getBeansOfType(FilterRegistrationBean.class); + for (FilterRegistrationBean<?> filter : filters.values()) { + if (filter.isEnabled()) { + builder.addFilter(filter.getFilter(), "/*"); + + } + } + + szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr"); + + + + cc = RandomStringUtils.randomAlphabetic(2).toUpperCase(); + personalId = cc + "/AT/" + RandomStringUtils.randomNumeric(64); + familyName = RandomStringUtils.randomAlphabetic(10); + givenName = RandomStringUtils.randomAlphabetic(10); + dateOfBirth = "2015-10-12"; + + vsz = RandomStringUtils.randomNumeric(10); + eidasBind = RandomStringUtils.randomAlphanumeric(50); + + } + + @Test + public void userStopProcess() throws UnsupportedEncodingException, XMLParserException, UnmarshallingException, + TransformerException, IOException, MarshallingException, ComponentInitializationException, EaafException { + //start authentication process by sending a SAML2 Authn-Request + MockHttpServletRequest saml2Req = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + injectSaml2AuthnReq(saml2Req); + MockHttpServletResponse selectCountryResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(saml2Req, selectCountryResp)); + + // send SAML2 AuthnRequest + sProfile.pvpIdpPostRequest(saml2Req, selectCountryResp); + + //check country-selection response + Assert.assertEquals("no country-selection page", 200, selectCountryResp.getStatus()); + Assert.assertEquals("cc-selection page", "text/html;charset=UTF-8", selectCountryResp.getContentType()); + String selectionPage = selectCountryResp.getContentAsString(); + Assert.assertNotNull("selectionPage is null", selectionPage); + Assert.assertFalse("selectionPage is empty", selectionPage.isEmpty()); + + String pendingReqId = extractRequestToken(selectionPage, + "<input type=\"hidden\" name=\"pendingid\" value=\""); + Assert.assertFalse("PendingReqId", pendingReqId.isEmpty()); + + + // set-up user-stop request + MockHttpServletRequest userStopReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + userStopReq.setParameter("pendingid", pendingReqId); + userStopReq.setParameter(EaafConstants.PARAM_HTTP_STOP_PROCESS, "true"); + + MockHttpServletResponse finalizeResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(userStopReq, finalizeResp)); + + // send user-stop request + signal.performGenericAuthenticationProcess(userStopReq, finalizeResp); + + //validate state + Assert.assertEquals("forward to finalization", 302, finalizeResp.getStatus()); + Assert.assertNotNull("missing redirect header", finalizeResp.getHeader("Location")); + Assert.assertTrue("wrong redirect header", finalizeResp.getHeader("Location").startsWith(FINAL_REDIRECT)); + String finalPendingReqId = finalizeResp.getHeader("Location").substring(FINAL_REDIRECT.length()); + Assert.assertFalse("final pendingRequestId", finalPendingReqId.isEmpty()); + + //set-up finalization request + MockHttpServletRequest finalizationReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + finalizationReq.setParameter("pendingid", finalPendingReqId); + + MockHttpServletResponse saml2Resp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(finalizationReq, saml2Resp)); + + // exexcute finalization step + finalize.finalizeAuthProtocol(finalizationReq, saml2Resp); + + //validate state + Assert.assertEquals("forward to finalization", 200, saml2Resp.getStatus()); + Assert.assertEquals("forward to eIDAS Node page", "text/html;charset=UTF-8", saml2Resp.getContentType()); + String saml2RespPage = saml2Resp.getContentAsString(); + Assert.assertNotNull("selectionPage is null", saml2RespPage); + Assert.assertFalse("selectionPage is empty", saml2RespPage.isEmpty()); + + //validate SAML2 response + String saml2RespB64 = extractRequestToken(saml2RespPage, + "<input type=\"hidden\" name=\"SAMLResponse\" value=\""); + Assert.assertNotNull("SAML2 response", saml2RespB64); + + StatusResponseType saml2 = (StatusResponseType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + new ByteArrayInputStream(Base64Utils.decodeFromString(saml2RespB64))); + Assert.assertEquals("SAML2 status", "urn:oasis:names:tc:SAML:2.0:status:Responder", + saml2.getStatus().getStatusCode().getValue()); + Assert.assertEquals("ms-connector status", "1005", + saml2.getStatus().getStatusCode().getStatusCode().getValue()); + + } + + @Test + public void fullSuccessProcess() throws EaafException, Exception { + //start authentication process by sending a SAML2 Authn-Request + MockHttpServletRequest saml2Req = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + injectSaml2AuthnReq(saml2Req); + MockHttpServletResponse selectCountryResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(saml2Req, selectCountryResp)); + + // send SAML2 AuthnRequest + sProfile.pvpIdpPostRequest(saml2Req, selectCountryResp); + + //check country-selection response + Assert.assertEquals("no country-selection page", 200, selectCountryResp.getStatus()); + Assert.assertEquals("cc-selection page", "text/html;charset=UTF-8", selectCountryResp.getContentType()); + String selectionPage = selectCountryResp.getContentAsString(); + Assert.assertNotNull("selectionPage is null", selectionPage); + Assert.assertFalse("selectionPage is empty", selectionPage.isEmpty()); + + String pendingReqId = extractRequestToken(selectionPage, + "<input type=\"hidden\" name=\"pendingid\" value=\""); + Assert.assertFalse("PendingReqId", pendingReqId.isEmpty()); + + + // set-up country-selection request + MockHttpServletRequest selectCountryReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + selectCountryReq.setParameter("pendingid", pendingReqId); + selectCountryReq.setParameter("selectedCountry", cc); + + MockHttpServletResponse forwardEidasNodeResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(selectCountryReq, forwardEidasNodeResp)); + + // send country-selection request + signal.performGenericAuthenticationProcess(selectCountryReq, forwardEidasNodeResp); + + //check forward to eIDAS node response + Assert.assertEquals("forward to eIDAS Node", 200, forwardEidasNodeResp.getStatus()); + Assert.assertEquals("forward to eIDAS Node page", "text/html;charset=UTF-8", forwardEidasNodeResp.getContentType()); + String forwardPage = forwardEidasNodeResp.getContentAsString(); + Assert.assertNotNull("forward to eIDAS Node is null", forwardPage); + Assert.assertFalse("forward to eIDAS Node is empty", forwardPage.isEmpty()); + + String eidasNodeReqToken = extractRequestToken(forwardPage, + "<input type=\"hidden\" name=\"token\" value=\""); + Assert.assertFalse("eidas req. token", eidasNodeReqToken.isEmpty()); + + //check eIDAS node request and build respose + String eidasRespToken = validateEidasNodeRequestAndBuildResponse(eidasNodeReqToken); + Assert.assertFalse("eidas resp. token", eidasRespToken.isEmpty()); + + + // set-up eIDAS-node response + MockHttpServletRequest eidasNodeRespReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + eidasNodeRespReq.setParameter("token", eidasRespToken); + + MockHttpServletResponse finalizeResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(eidasNodeRespReq, finalizeResp)); + + injectSzrResponse(); + + //excute eIDAS node response + eidasSignal.restoreEidasAuthProcess(eidasNodeRespReq, finalizeResp); + + //validate state + Assert.assertEquals("forward to finalization", 302, finalizeResp.getStatus()); + Assert.assertNotNull("missing redirect header", finalizeResp.getHeader("Location")); + Assert.assertTrue("wrong redirect header", finalizeResp.getHeader("Location").startsWith(FINAL_REDIRECT)); + String finalPendingReqId = finalizeResp.getHeader("Location").substring(FINAL_REDIRECT.length()); + Assert.assertFalse("final pendingRequestId", finalPendingReqId.isEmpty()); + + + //set-up finalization request + MockHttpServletRequest finalizationReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + finalizationReq.setParameter("pendingid", finalPendingReqId); + + MockHttpServletResponse saml2Resp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(finalizationReq, saml2Resp)); + + // exexcute finalization step + finalize.finalizeAuthProtocol(finalizationReq, saml2Resp); + + //validate state + Assert.assertEquals("forward to finalization", 200, saml2Resp.getStatus()); + Assert.assertEquals("forward to eIDAS Node page", "text/html;charset=UTF-8", saml2Resp.getContentType()); + String saml2RespPage = saml2Resp.getContentAsString(); + Assert.assertNotNull("selectionPage is null", saml2RespPage); + Assert.assertFalse("selectionPage is empty", saml2RespPage.isEmpty()); + + //validate SAML2 response + String saml2RespB64 = extractRequestToken(saml2RespPage, + "<input type=\"hidden\" name=\"SAMLResponse\" value=\""); + Assert.assertNotNull("SAML2 response", saml2RespB64); + + StatusResponseType saml2 = (StatusResponseType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + new ByteArrayInputStream(Base64Utils.decodeFromString(saml2RespB64))); + Assert.assertEquals("SAML2 status", Constants.SUCCESS_URI, saml2.getStatus().getStatusCode().getValue()); + + final AssertionAttributeExtractor extractor = new AssertionAttributeExtractor(saml2); + Assert.assertEquals("wrong resp attr. size", 6, extractor.getAllIncludeAttributeNames().size()); + Assert.assertEquals("Wrong attr: LoA ", "http://eidas.europa.eu/LoA/high", + extractor.getSingleAttributeValue("urn:oid:1.2.40.0.10.2.1.1.261.108")); + Assert.assertEquals("Wrong attr: PVP_VERSION ", "2.2", + extractor.getSingleAttributeValue("urn:oid:1.2.40.0.10.2.1.1.261.10")); + Assert.assertEquals("Wrong attr: EID_ISSUER_NATION ", cc, + extractor.getSingleAttributeValue("urn:oid:1.2.40.0.10.2.1.1.261.32")); + Assert.assertEquals("Wrong attr: eidasBind", eidasBind, + extractor.getSingleAttributeValue("urn:eidgvat:attributes.eidbind")); + Assert.assertNotNull("Wrong attr: authBlock", + extractor.getSingleAttributeValue("urn:eidgvat:attributes.authblock.signed")); + Assert.assertNotNull("Wrong attr: piiTras.Id ", + extractor.getSingleAttributeValue("urn:eidgvat:attributes.piiTransactionId")); + + } + + private void injectSzrResponse() throws Exception { + + when(szrMock, "getStammzahlEncrypted", any(), any()).thenReturn(vsz); + val signContentResp = new SignContentResponseType(); + final SignContentEntry signContentEntry = new SignContentEntry(); + signContentEntry.setValue(eidasBind); + signContentResp.getOut().add(signContentEntry); + when(szrMock, "signContent", any(), any(), any()).thenReturn(signContentResp); + + } + + private String validateEidasNodeRequestAndBuildResponse(String eidasNodeReqToken) + throws SpecificCommunicationException, URISyntaxException { + final SpecificCommunicationService springManagedSpecificConnectorCommunicationService = + (SpecificCommunicationService) wac.getBean( + SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); + + //read request and validate basic properties + ILightRequest req = springManagedSpecificConnectorCommunicationService.getAndRemoveRequest(eidasNodeReqToken, + attrRegistry.getCoreAttributeRegistry().getAttributes()); + + Assert.assertNotNull("eIDAS Node req", req); + Assert.assertEquals("Wrong CC", cc, req.getCitizenCountryCode()); + Assert.assertEquals("Wrong CC", EaafConstants.EIDAS_LOA_HIGH, req.getLevelOfAssurance()); + + + //set response from eIDAS node + BinaryLightToken respoToken = springManagedSpecificConnectorCommunicationService.putResponse( + buildDummyAuthResponse(Constants.SUCCESS_URI, req.getId())); + return Base64Utils.encodeToString(respoToken.getTokenBytes()); + + } + + private AuthenticationResponse buildDummyAuthResponse(String statusCode, String reqId) throws URISyntaxException { + final AttributeDefinition<?> attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); + final AttributeDefinition<?> attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); + final AttributeDefinition<?> attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); + final AttributeDefinition<?> attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_DATEOFBIRTH).first(); + + final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder() + .put(attributeDef, personalId) + .put(attributeDef2, familyName) + .put(attributeDef3, givenName) + .put(attributeDef4, dateOfBirth).build(); + + val b = new AuthenticationResponse.Builder(); + return b.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(statusCode) + .inResponseTo(reqId) + .subjectNameIdFormat("afaf") + .levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH) + .attributes(attributeMap) + .build(); + + } + + private String extractRequestToken(String selectionPage, String selector) { + int start = selectionPage.indexOf(selector); + Assert.assertTrue("find no pendingReqId location start", start > 0); + int end = selectionPage.indexOf("\"", start + selector.length()); + Assert.assertTrue("find no pendingReqId location end", end > 0); + return selectionPage.substring(start + selector.length(), end); + + } + + private void injectSaml2AuthnReq(MockHttpServletRequest saml2Req) throws XMLParserException, UnmarshallingException, + SamlSigningException, CredentialsNotAvailableException, UnsupportedEncodingException, TransformerException, + IOException, MarshallingException, ComponentInitializationException { + final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMessageSigningCredential(), true); + String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + saml2Req.setParameter("SAMLRequest", b64); + + final org.springframework.core.io.Resource resource = resourceLoader.getResource( + "classpath:/data/metadata_valid_without_encryption.xml"); + Timer timer = new Timer("PVP metadata-resolver refresh"); + ResourceBackedMetadataResolver fileSystemResolver = + new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); + fileSystemResolver.setId("test"); + fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); + fileSystemResolver.initialize(); + metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); + + } +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassExecutableModeTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassExecutableModeTest.java new file mode 100644 index 00000000..86df55df --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassExecutableModeTest.java @@ -0,0 +1,113 @@ +package at.asitplus.eidas.specific.connector.test; + +import java.io.IOException; +import java.lang.reflect.Field; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.ignite.Ignition; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.BlockJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.SpringBootApplicationInitializer; +import at.gv.egiz.eaaf.core.impl.logging.DummyStatusMessager; +import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RunWith(BlockJUnit4ClassRunner.class) +public class MainClassExecutableModeTest { + + /** + * jUnit class initializer. + * @throws InterruptedException In case of an error + * + */ + @BeforeClass + public static void classInitializer() throws InterruptedException { + final String current = new java.io.File(".").toURI().toString(); + System.clearProperty("eidas.ms.configuration"); + + //eIDAS Ref. Impl. properties + System.setProperty("EIDAS_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_CONNECTOR_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + + } + + /** + * Initializer. + * @throws InterruptedException In case of an error + * + */ + @AfterClass + public static void closeIgniteNode() throws InterruptedException { + System.out.println("Closing Ignite Node ... "); + + log.info("Stopping already running Apache Ignite nodes ... "); + Ignition.stopAll(true); + Thread.sleep(1000); + + } + + /** + * Test reseter. + * + */ + @After + public void cleanJvmState() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException { + final Field field = LogMessageProviderFactory.class.getDeclaredField("internalMessager"); + field.setAccessible(true); + field.set(null, new DummyStatusMessager()); + + System.clearProperty("eidas.ms.configuration"); + SpringBootApplicationInitializer.exit(); + + } + + + @Test + public void validConfigLocation() throws Throwable { + SpringBootApplicationInitializer + .main(new String[] { + "--spring.config.location=src/test/resources/config/junit_config_2_springboot.properties,classpath:/application.properties", + "--spring.profiles.active=jUnitTestMode" }); + + System.out.println("Is started!"); + + // test Spring-Actuator http Basic-Auth + testSpringActuatorSecurity(); + + } + + private void testSpringActuatorSecurity() throws ClientProtocolException, IOException { + // check if authentication works on actuator end-point + final HttpClientBuilder builder = HttpClients.custom(); + final CloseableHttpClient client = builder.build(); + Assert.assertNotNull("httpClient", client); + + final HttpUriRequest httpGetInfo = new HttpGet("http://localhost:8080/ms_connector/actuator/info"); + final CloseableHttpResponse httpRespInfo = client.execute(httpGetInfo); + Assert.assertEquals("http statusCode", 200, httpRespInfo.getStatusLine().getStatusCode()); + + final HttpUriRequest httpGetHealth = new HttpGet("http://localhost:8080/ms_connector/actuator/health"); + final CloseableHttpResponse httpRespHealth = client.execute(httpGetHealth); + Assert.assertEquals("http statusCode", 503, httpRespHealth.getStatusLine().getStatusCode()); + + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassWebAppModeTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassWebAppModeTest.java new file mode 100644 index 00000000..07ef4968 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassWebAppModeTest.java @@ -0,0 +1,134 @@ +package at.asitplus.eidas.specific.connector.test; + +import java.io.IOException; +import java.lang.reflect.Field; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.ignite.Ignition; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.BlockJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.SpringBootApplicationInitializer; +import at.gv.egiz.eaaf.core.impl.logging.DummyStatusMessager; +import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory; + +@RunWith(BlockJUnit4ClassRunner.class) +public class MainClassWebAppModeTest { + + /** + * jUnit class initializer. + * + */ + @BeforeClass + public static void classInitializer() { + final String current = new java.io.File(".").toURI().toString(); + + //eIDAS Ref. Impl. properties + System.setProperty("EIDAS_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_CONNECTOR_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length()) + + "../basicConfig/eIDAS/"); + + } + + /** + * Initializer. + * + */ + @AfterClass + public static void closeIgniteNode() { + System.out.println("Closing Ignite Node ... "); + Ignition.stopAll(true); + + } + + /** + * Test reseter. + * + */ + @After + public void cleanJvmState() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException { + final Field field = LogMessageProviderFactory.class.getDeclaredField("internalMessager"); + field.setAccessible(true); + field.set(null, new DummyStatusMessager()); + + System.clearProperty("eidas.ms.configuration"); + SpringBootApplicationInitializer.exit(); + + } + + @Test + public void wrongConfigLocation() throws Throwable { + //MS-specific connector property + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + + "src/test/resources/config/notextist.properties"); + + try { + //starting application + SpringBootApplicationInitializer + .main(new String[] { + "--spring.profiles.active=jUnitTestMode" }); + Assert.fail("Missing configuration not detected"); + + } catch (final Exception e) { + Assert.assertNotNull("Exception is null", e); + + } + } + + + @Test + public void systemdConfigLocation() throws Throwable { + //MS-specific connector property + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + + "src/test/resources/config/junit_config_1_springboot.properties"); + + //starting application + SpringBootApplicationInitializer + .main(new String[] { + "--spring.profiles.active=jUnitTestMode,springBoot" }); + + System.out.println("Is started!"); + + // test Spring-Actuator http Basic-Auth + testSpringActuatorSecurity(); + + + + + } + + private void testSpringActuatorSecurity() throws ClientProtocolException, IOException { + // check if authentication works on actuator end-point + final HttpClientBuilder builder = HttpClients.custom(); + final CloseableHttpClient client = builder.build(); + Assert.assertNotNull("httpClient", client); + + final HttpUriRequest httpGetInfo = new HttpGet("http://localhost:8080/ms_connector/actuator/info"); + final CloseableHttpResponse httpRespInfo = client.execute(httpGetInfo); + Assert.assertEquals("http statusCode", 200, httpRespInfo.getStatusLine().getStatusCode()); + + + final HttpUriRequest httpGetHealth = new HttpGet("http://localhost:8080/ms_connector/actuator/health"); + final CloseableHttpResponse httpRespHealth = client.execute(httpGetHealth); + Assert.assertEquals("http statusCode", 503, httpRespHealth.getStatusLine().getStatusCode()); + + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java index b7c6cd44..5c0a1420 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java @@ -2,6 +2,8 @@ package at.asitplus.eidas.specific.connector.test.attributes; import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_AUTHBLOCK_SIGNED_NAME; +import java.util.Base64; + import org.junit.Assert; import org.junit.Before; import org.junit.Rule; @@ -13,6 +15,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import at.asitplus.eidas.specific.connector.attributes.AuthBlockAttributeBuilder; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; @@ -42,6 +45,19 @@ public class AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest } @Test + public void checkName() { + Assert.assertEquals("Wrong attr. name", + ExtendedPvpAttributeDefinitions.EID_AUTHBLOCK_SIGNED_NAME, attrBuilde.getName()); + + } + + @Test + public void checkEmptyAttribute() { + Assert.assertNull("empty attr.", attrBuilde.buildEmpty(gen)); + + } + + @Test public void okTest() { log.info("starting: " + mTestName); try { @@ -50,7 +66,8 @@ public class AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest final String value = attrBuilde.build(spConfig, authData, gen); - Assert.assertEquals("Authblock build wrong", JSW, value); + Assert.assertNotNull("AuthBlock", value); + Assert.assertEquals("Authblock build wrong", JSW, new String(Base64.getDecoder().decode(value))); } catch (final Exception e) { Assert.assertNull("Attr. builder has an exception", e); diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java index 254efb59..9a2c6cdc 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java @@ -1,13 +1,7 @@ package at.asitplus.eidas.specific.connector.test.attributes; -import at.asitplus.eidas.specific.connector.attributes.EidasBindAttributeBuilder; -import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; -import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder; -import at.gv.egiz.eaaf.core.api.idp.IAuthData; -import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; -import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; -import at.gv.egiz.eaaf.core.impl.idp.auth.attributes.AbstractAttributeBuilderTest; -import lombok.extern.slf4j.Slf4j; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.EIDAS_BIND; + import org.junit.Assert; import org.junit.Before; import org.junit.Rule; @@ -17,7 +11,14 @@ import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.EIDAS_BIND; +import at.asitplus.eidas.specific.connector.attributes.EidasBindAttributeBuilder; +import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; +import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder; +import at.gv.egiz.eaaf.core.api.idp.IAuthData; +import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; +import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; +import at.gv.egiz.eaaf.core.impl.idp.auth.attributes.AbstractAttributeBuilderTest; +import lombok.extern.slf4j.Slf4j; @Slf4j @@ -36,6 +37,19 @@ public class EidasBindAttributeBuilderTest extends AbstractAttributeBuilderTest } @Test + public void checkName() { + Assert.assertEquals("Wrong attr. name", + ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME, attrBuilde.getName()); + + } + + @Test + public void checkEmptyAttribute() { + Assert.assertNull("empty attr.", attrBuilde.buildEmpty(gen)); + + } + + @Test public void okTest() { log.info("starting: " + mTestName); try { diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java new file mode 100644 index 00000000..80307ea2 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java @@ -0,0 +1,137 @@ +package at.asitplus.eidas.specific.connector.test.config; + +import java.net.MalformedURLException; +import java.net.URL; +import java.security.cert.CertificateException; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.opensaml.core.config.InitializationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; +import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ + "/applicationContext.xml", + "/specific_eIDAS_connector.beans.xml", + "/eaaf_core.beans.xml", + "/eaaf_pvp.beans.xml", + "/eaaf_pvp_idp.beans.xml", + "/spring/SpringTest-context_simple_storage.xml" }) +@WebAppConfiguration +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +@ActiveProfiles(profiles = {"deprecatedConfig"}) +public class BasicConfigurationTest { + + @Autowired private IConfigurationWithSP basicConfig; + + /** + * jUnit class initializer. + * @throws ComponentInitializationException In case of an error + * @throws InitializationException In case of an error + * @throws CertificateException + * + */ + @BeforeClass + public static void classInitializer() throws InitializationException, + ComponentInitializationException, CertificateException { + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); + + } + + + @Test + public void basicConfig() throws MalformedURLException, EaafException { + Assert.assertEquals("validate req. URL", "http://localhost", + basicConfig.validateIdpUrl(new URL("http://junit/test"))); + + Assert.assertEquals("validate req. URL", "http://localhost", + basicConfig.validateIdpUrl(new URL("http://localhost/test1/test"))); + + } + + @Test + public void loadSpNotExist() throws EaafConfigurationException { + //check + ISpConfiguration sp = basicConfig.getServiceProviderConfiguration( + "https://not/exist"); + + //validate state + Assert.assertNull("spConfig", sp); + + + } + + @Test + public void loadSpDefault() throws EaafConfigurationException { + //check + ISpConfiguration sp = basicConfig.getServiceProviderConfiguration( + "https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata"); + + //validate state + Assert.assertNotNull("spConfig", sp); + Assert.assertEquals("BaseId transfare restrication", true, sp.hasBaseIdTransferRestriction()); + Assert.assertEquals("BaseId process restrication", false, sp.hasBaseIdInternalProcessingRestriction()); + + Assert.assertEquals("req. LoA size", 1, sp.getRequiredLoA().size()); + Assert.assertEquals("req. LoA", EaafConstants.EIDAS_LOA_HIGH, sp.getRequiredLoA().get(0)); + Assert.assertEquals("LoA matching mode", + EaafConstants.EIDAS_LOA_MATCHING_MINIMUM, sp.getLoAMatchingMode()); + + } + + @Test + public void loadSpNoBaseIdTransferRestriction() throws EaafException { + //check + ServiceProviderConfiguration sp = basicConfig.getServiceProviderConfiguration( + "https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata", ServiceProviderConfiguration.class); + + //validate state + Assert.assertNotNull("spConfig", sp); + Assert.assertNull("bPKTarget already set", sp.getAreaSpecificTargetIdentifier()); + + //validate baseId transfer restriction + sp.setBpkTargetIdentifier(EaafConstants.URN_PREFIX_CDID + "ZP"); + Assert.assertEquals("BaseId restrication", false, sp.hasBaseIdTransferRestriction()); + Assert.assertEquals("bPKTarget", EaafConstants.URN_PREFIX_CDID + "ZP", sp.getAreaSpecificTargetIdentifier()); + + sp.setBpkTargetIdentifier(EaafConstants.URN_PREFIX_WBPK_TARGET_WITH_X + "FN+123456h"); + Assert.assertEquals("BaseId restrication", true, sp.hasBaseIdTransferRestriction()); + + } + + @Test + public void loadSpWithMsSpecificConfig() throws EaafConfigurationException { + //check + ServiceProviderConfiguration sp = basicConfig.getServiceProviderConfiguration( + "https://demo.egiz.gv.at/junit_test", ServiceProviderConfiguration.class); + + //validate state + Assert.assertNotNull("spConfig", sp); + Assert.assertEquals("friendlyName", "jUnit test", sp.getFriendlyName()); + Assert.assertEquals("UniqueId", "https://demo.egiz.gv.at/junit_test", sp.getUniqueIdentifier()); + Assert.assertEquals("BaseId restrication", true, sp.hasBaseIdTransferRestriction()); + Assert.assertEquals("generic config value", false, + sp.isConfigurationValue("policy.allowed.requested.targets")); + Assert.assertEquals("generic config value", "test", + sp.getConfigurationValue("policy.allowed.requested.targets")); + Assert.assertEquals("not_exist_value", "true", sp.getConfigurationValue("not.exist", "true")); + + } +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java new file mode 100644 index 00000000..d2c4aff2 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java @@ -0,0 +1,77 @@ +package at.asitplus.eidas.specific.connector.test.controller; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ + "/applicationContext.xml", + "/specific_eIDAS_connector.beans.xml", + "/eaaf_core.beans.xml", + "/eaaf_pvp.beans.xml", + "/eaaf_pvp_idp.beans.xml", + "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) +@WebAppConfiguration +public class ProcessEngineSignalControllerTest { + + @Autowired private ProcessEngineSignalController controller; + + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + + @BeforeClass + public static void classInitializer() { + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); + + } + + /** + * jUnit test set-up. + */ + @Before + public void setUp() throws EaafStorageException, URISyntaxException { + httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + } + + @Test + public void noPendingRequestId() throws IOException, EaafException { + //set-up + + //execute test + controller.performGenericAuthenticationProcess(httpReq, httpResp); + + //validate state + Assert.assertEquals("http StatusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("wrong redirect header", + httpResp.getHeader("Location").startsWith("http://localhost/errorHandling?errorid=")); + + } + + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java new file mode 100644 index 00000000..b04a5bdb --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java @@ -0,0 +1,70 @@ +package at.asitplus.eidas.specific.connector.test.health; + +import java.io.IOException; + +import org.apache.commons.io.IOUtils; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.Health; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ + "/spring/SpringTest-context_healthcheck.xml" }) +@TestPropertySource(locations = {"classpath:/config/junit_config_2_springboot.properties"}) +@WebAppConfiguration +public class EidasNodeMetadataHealthIndicatorNoEndpointTest { + + @Autowired EidasNodeMetadataHealthIndicator health; + + private static MockWebServer mockWebServer = null; + + /** + * Testclass initializer. + * + * @throws IOException In case of an error + */ + @BeforeClass + public static void classInitializer() throws IOException { + mockWebServer = new MockWebServer(); + mockWebServer.start(40900); + mockWebServer.url("/mockup"); + + } + + @AfterClass + public static void resetTestEnviroment() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException, IOException { + mockWebServer.shutdown(); + + } + + @Test + public void noEndpointInConfiguration() throws IOException { + //set-up status + mockWebServer.enqueue(new MockResponse().setResponseCode(200) + .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorNoEndpointTest.class + .getResourceAsStream("/config/log4j.properties"), "UTF-8")) + .setHeader("Content-Type", MediaType.APPLICATION_XML)); + + //perform test + Health status = health.health(); + + //validate state + Assert.assertEquals("wrong healthState", Health.unknown().build().getStatus(), status.getStatus()); + + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java new file mode 100644 index 00000000..b044d4d2 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java @@ -0,0 +1,102 @@ +package at.asitplus.eidas.specific.connector.test.health; + +import java.io.IOException; + +import org.apache.commons.io.IOUtils; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.Health; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ + "/spring/SpringTest-context_healthcheck.xml" }) +@TestPropertySource(locations = {"classpath:/config/junit_config_1_springboot.properties"}) +@WebAppConfiguration +public class EidasNodeMetadataHealthIndicatorTest { + + @Autowired EidasNodeMetadataHealthIndicator health; + + private static MockWebServer mockWebServer = null; + + /** + * Testclass initializer. + * + * @throws IOException In case of an error + */ + @BeforeClass + public static void classInitializer() throws IOException { + mockWebServer = new MockWebServer(); + mockWebServer.start(40900); + mockWebServer.url("/mockup"); + + } + + @AfterClass + public static void resetTestEnviroment() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException, IOException { + mockWebServer.shutdown(); + + } + + @Test + public void httpStatusCode500() throws IOException { + //set-up status + mockWebServer.enqueue(new MockResponse().setResponseCode(500) + .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class + .getResourceAsStream("/data/metadata_valid.xml"), "UTF-8")) + .setHeader("Content-Type", MediaType.APPLICATION_XML)); + + //perform test + Health status = health.health(); + + //validate state + Assert.assertEquals("wrong healthState", Health.down().build().getStatus(), status.getStatus()); + + } + + @Test + public void httpStatusCode200() throws IOException { + //set-up status + mockWebServer.enqueue(new MockResponse().setResponseCode(200) + .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class + .getResourceAsStream("/data/metadata_valid.xml"), "UTF-8")) + .setHeader("Content-Type", MediaType.APPLICATION_XML)); + + //perform test + Health status = health.health(); + + //validate state + Assert.assertEquals("wrong healthState", Health.up().build().getStatus(), status.getStatus()); + + } + + @Test + public void noXmlResponse() throws IOException { + //set-up status + mockWebServer.enqueue(new MockResponse().setResponseCode(200) + .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class + .getResourceAsStream("/config/log4j.properties"), "UTF-8")) + .setHeader("Content-Type", MediaType.APPLICATION_XML)); + + //perform test + Health status = health.health(); + + //validate state + Assert.assertEquals("wrong healthState", Health.down().build().getStatus(), status.getStatus()); + + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java new file mode 100644 index 00000000..bcba3e11 --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java @@ -0,0 +1,337 @@ +package at.asitplus.eidas.specific.connector.test.saml2; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.List; +import java.util.Timer; + +import javax.xml.transform.TransformerException; + +import org.joda.time.DateTime; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.opensaml.core.config.InitializationException; +import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; +import org.opensaml.core.xml.io.MarshallingException; +import org.opensaml.core.xml.io.UnmarshallingException; +import org.opensaml.core.xml.util.XMLObjectSupport; +import org.opensaml.saml.metadata.resolver.impl.ResourceBackedMetadataResolver; +import org.opensaml.saml.saml2.core.RequestAbstractType; +import org.opensaml.saml.saml2.metadata.EntityDescriptor; +import org.opensaml.saml.saml2.metadata.IDPSSODescriptor; +import org.opensaml.saml.saml2.metadata.RoleDescriptor; +import org.opensaml.saml.saml2.metadata.SPSSODescriptor; +import org.opensaml.saml.security.impl.SAMLSignatureProfileValidator; +import org.opensaml.security.credential.Credential; +import org.opensaml.security.x509.BasicX509Credential; +import org.opensaml.xmlsec.signature.support.SignatureException; +import org.opensaml.xmlsec.signature.support.SignatureValidator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ResourceLoader; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.util.Base64Utils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint; +import at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider; +import at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.IRequestStorage; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.utils.DomUtils; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.OpenSaml3ResourceAdapter; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; +import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.utilities.java.support.xml.XMLParserException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ + "/applicationContext.xml", + "/specific_eIDAS_connector.beans.xml", + "/eaaf_core.beans.xml", + "/eaaf_pvp.beans.xml", + "/eaaf_pvp_idp.beans.xml", + "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) +@WebAppConfiguration +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +public class Pvp2SProfileEndPointTest { + + + @Autowired private Pvp2SProfileEndpoint controller; + @Autowired private PvpEndPointCredentialProvider credentialProvider; + @Autowired private PvpMetadataProvider metadataProvider; + @Autowired private ResourceLoader resourceLoader; + @Autowired private IRequestStorage storage; + + private static CertificateFactory fact; + + + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + + + /** + * jUnit class initializer. + * @throws ComponentInitializationException In case of an error + * @throws InitializationException In case of an error + * @throws CertificateException + * + */ + @BeforeClass + public static void classInitializer() throws InitializationException, + ComponentInitializationException, CertificateException { + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); + + EaafOpenSaml3xInitializer.eaafInitialize(); + + fact = CertificateFactory.getInstance("X.509"); + + } + + /** + * jUnit test set-up. + * @throws EaafException + * + */ + @Before + public void initialize() throws EaafException { + httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + } + + @Test + public void authnReqWrongEndpoint() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + ComponentInitializationException { + //initialize test + final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_3.xml")); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + httpReq.setParameter("SAMLRequest", b64); + + final org.springframework.core.io.Resource resource = resourceLoader.getResource( + "classpath:/data/metadata_valid.xml"); + Timer timer = new Timer("PVP metadata-resolver refresh"); + ResourceBackedMetadataResolver fileSystemResolver = + new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); + fileSystemResolver.setId("test"); + fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); + fileSystemResolver.initialize(); + metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); + + + //request SAML2 authentication + try { + controller.pvpIdpPostRequest(httpReq, httpResp); + Assert.fail("wrong AuthnRequest not detected"); + + }catch (EaafException e) { + Assert.assertEquals("wrong errorId", "pvp2.22", e.getErrorId()); + + } + } + + @Test + public void authnReqWrongSigned() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + ComponentInitializationException { + //initialize test + final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + httpReq.setParameter("SAMLRequest", b64); + + final org.springframework.core.io.Resource resource = resourceLoader.getResource( + "classpath:/data/metadata_valid.xml"); + Timer timer = new Timer("PVP metadata-resolver refresh"); + ResourceBackedMetadataResolver fileSystemResolver = + new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); + fileSystemResolver.setId("test"); + fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); + fileSystemResolver.initialize(); + metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); + + + //request SAML2 authentication + try { + controller.pvpIdpPostRequest(httpReq, httpResp); + Assert.fail("wrong AuthnRequest not detected"); + + }catch (EaafException e) { + Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); + + } + } + + @Test + public void authnReqMetadataExpired() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + ComponentInitializationException { + //initialize test + final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMetaDataSigningCredential(), true); + String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + httpReq.setParameter("SAMLRequest", b64); + + final org.springframework.core.io.Resource resource = resourceLoader.getResource( + "classpath:/data/metadata_expired.xml"); + Timer timer = new Timer("PVP metadata-resolver refresh"); + ResourceBackedMetadataResolver fileSystemResolver = + new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); + fileSystemResolver.setId("test"); + fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); + fileSystemResolver.initialize(); + metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); + + + //request SAML2 authentication + try { + controller.pvpIdpPostRequest(httpReq, httpResp); + Assert.fail("wrong AuthnRequest not detected"); + + }catch (EaafException e) { + Assert.assertEquals("wrong errorId", "pvp2.21", e.getErrorId()); + + } + } + + @Test + public void authnReqValid() throws EaafException, XMLParserException, UnmarshallingException, + UnsupportedEncodingException, TransformerException, IOException, MarshallingException, + ComponentInitializationException { + //initialize test + final RequestAbstractType authnReq = (RequestAbstractType) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + Pvp2SProfileEndPointTest.class.getResourceAsStream("/data/pvp2_authn_1.xml")); + authnReq.setIssueInstant(DateTime.now()); + RequestAbstractType signedAuthnReq = + Saml2Utils.signSamlObject(authnReq, credentialProvider.getMessageSigningCredential(), true); + String b64 = Base64Utils.encodeToString(DomUtils.serializeNode( + XMLObjectSupport.getMarshaller(signedAuthnReq).marshall(signedAuthnReq)).getBytes("UTF-8")); + httpReq.setParameter("SAMLRequest", b64); + + final org.springframework.core.io.Resource resource = resourceLoader.getResource( + "classpath:/data/metadata_valid.xml"); + Timer timer = new Timer("PVP metadata-resolver refresh"); + ResourceBackedMetadataResolver fileSystemResolver = + new ResourceBackedMetadataResolver(timer, new OpenSaml3ResourceAdapter(resource)); + fileSystemResolver.setId("test"); + fileSystemResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); + fileSystemResolver.initialize(); + metadataProvider.addMetadataResolverIntoChain(fileSystemResolver); + + + //request SAML2 authentication + controller.pvpIdpPostRequest(httpReq, httpResp); + + + //validate state + Assert.assertEquals("http statuscode", 200, httpResp.getStatus()); + Assert.assertEquals("Wrong http ContentType", "text/html;charset=UTF-8", httpResp.getContentType()); + + String html = httpResp.getContentAsString(); + Assert.assertNotNull("html result is null", html); + Assert.assertFalse("html result is empty", html.isEmpty()); + Assert.assertTrue("Wrong page", html.contains("action=\"/myHomeCountry\"")); + + String pattern = "<input type=\"hidden\" name=\"pendingid\" value=\""; + int pendingIdStart = html.indexOf(pattern) + pattern.length(); + int pendingIdEnd = html.indexOf("\"", pendingIdStart); + String pendingReqId = html.substring(pendingIdStart, pendingIdEnd); + Assert.assertFalse("pendingReqId is empty", pendingReqId.isEmpty()); + + IRequest pendingReq = storage.getPendingRequest(pendingReqId); + Assert.assertNotNull("pendingReq", pendingReq); + Assert.assertNotNull("piiTransId", pendingReq.getUniquePiiTransactionIdentifier()); + Assert.assertNotNull("piiTransId", pendingReq.getUniqueTransactionIdentifier()); + + Assert.assertEquals("wrong OA Id", "https://demo.egiz.gv.at/demoportal-openID_demo", + pendingReq.getRawData(MsEidasNodeConstants.DATA_REQUESTERID, String.class)); + Assert.assertEquals("wrong bPK Target", "urn:publicid:gv.at:cdid+BF", + pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier()); + + + } + + @Test + public void checkSaml2Metadata() throws EaafException, UnsupportedEncodingException, XMLParserException, + UnmarshallingException, CertificateException, SignatureException { + + //request SAML2 Metadata + controller.pvpMetadataRequest(httpReq, httpResp); + + //validate state + Assert.assertEquals("http statuscode", 200, httpResp.getStatus()); + Assert.assertEquals("Wrong http ContentType", "application/xml", httpResp.getContentType()); + + String html = httpResp.getContentAsString(); + Assert.assertNotNull("html result is null", html); + Assert.assertFalse("html result is empty", html.isEmpty()); + + + final EntityDescriptor entity = (EntityDescriptor) XMLObjectSupport.unmarshallFromInputStream( + XMLObjectProviderRegistrySupport.getParserPool(), + new ByteArrayInputStream(html.getBytes("UTF-8"))); + + Assert.assertNotNull("Unmarshalling failed", entity); + Assert.assertNotNull("EntityId is null", entity.getEntityID()); + + Assert.assertNotNull("Signature is null", entity.getSignature()); + final SAMLSignatureProfileValidator sigValidator = new SAMLSignatureProfileValidator(); + sigValidator.validate(entity.getSignature()); + + final Credential cred = new BasicX509Credential((X509Certificate) fact.generateCertificate( + Pvp2SProfileEndPointTest.class.getResourceAsStream("/config/keys/Metadata.pem"))); + SignatureValidator.validate(entity.getSignature(), cred); + + Assert.assertEquals("wrong entityId", "http://localhost/pvp/metadata", entity.getEntityID()); + Assert.assertNotNull("IDPSSODescr", entity.getRoleDescriptors(IDPSSODescriptor.DEFAULT_ELEMENT_NAME)); + Assert.assertNotNull("SPSSODescr", entity.getRoleDescriptors(SPSSODescriptor.DEFAULT_ELEMENT_NAME)); + Assert.assertEquals("SPSSODescr. size", 0, + entity.getRoleDescriptors(SPSSODescriptor.DEFAULT_ELEMENT_NAME).size()); + + List<RoleDescriptor> idp = entity.getRoleDescriptors(IDPSSODescriptor.DEFAULT_ELEMENT_NAME); + Assert.assertEquals("IDP descr. size", 1, idp.size()); + Assert.assertEquals("IDP descr. endpoints", 2, idp.get(0).getEndpoints().size()); + Assert.assertEquals("IDP descr. keyDescr", 1, idp.get(0).getKeyDescriptors().size()); + + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java index 9d590055..4bff9416 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @@ -34,6 +35,7 @@ import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) @WebAppConfiguration public class EvaluateCountrySelectionTaskTest { diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java index 2a1d7cd4..d902f758 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @@ -32,6 +33,7 @@ import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) @WebAppConfiguration public class GenerateCountrySelectionFrameTaskTest { diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java new file mode 100644 index 00000000..5f1c5dcf --- /dev/null +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java @@ -0,0 +1,354 @@ +package at.asitplus.eidas.specific.connector.test.utils; + +import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; + +import java.io.IOException; +import java.security.PublicKey; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.transform.TransformerException; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.opensaml.core.config.InitializationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.w3c.dom.Element; + +import at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; +import at.gv.egiz.eaaf.core.api.idp.IAuthData; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException; +import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException; +import at.gv.egiz.eaaf.core.exceptions.EaafParserException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BpkBuilder; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.SimpleIdentityLinkAssertionParser; +import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({ "/applicationContext.xml", "/spring/SpringTest_connector.beans.xml", "/eaaf_core.beans.xml", + "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) +@WebAppConfiguration +public class AuthenticationDataBuilderTest { + + @Autowired + private AuthenticationDataBuilder authenticationDataBuilder; + + @Autowired(required = true) + private IConfiguration basicConfig; + + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + private TestRequestImpl pendingReq; + + private DummySpConfiguration oaParam; + + private String eidasBind; + private String authBlock; + + @BeforeClass + public static void classInitializer() throws InitializationException, ComponentInitializationException { + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + + "src/test/resources/config/junit_config_3.properties"); + + EaafOpenSaml3xInitializer.eaafInitialize(); + } + + @Before + public void initialize() throws EaafStorageException { + httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + final Map<String, String> spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); + oaParam = new DummySpConfiguration(spConfig, basicConfig); + + pendingReq = new TestRequestImpl(); + pendingReq.setAuthUrl("https://localhost/ms_connector"); + pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + pendingReq.setSpConfig(oaParam); + authBlock = RandomStringUtils.randomAlphanumeric(20); + eidasBind = RandomStringUtils.randomAlphanumeric(20); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.SZR_AUTHBLOCK, authBlock); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.EIDAS_BIND, eidasBind); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setQaaLevel(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)); + pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession( + PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, + RandomStringUtils.randomAlphabetic(2)); + + LocaleContextHolder.resetLocaleContext(); + + } + + @Test + public void eidMode() throws EaafAuthenticationException { + // initialize state + pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); + + // execute + IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); + + // validate state + Assert.assertNotNull("AuthData null", authData); + Assert.assertNotNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); + Assert.assertNotNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); + Assert.assertNotNull("LoA null", authData.getEidasQaaLevel()); + + String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class); + String eidasBind = authData.getGenericData(Constants.EIDAS_BIND, String.class); + + Assert.assertEquals("authBlock not equal", this.authBlock, authBlock); + Assert.assertEquals("eidasBind not equal", this.eidasBind, eidasBind); + Assert.assertEquals("piiTransactionId", + authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class), + this.pendingReq.getUniquePiiTransactionIdentifier()); + Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo()); + Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(), + authData.getEidasQaaLevel()); + Assert.assertEquals("EID-ISSUING-NATION", + pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession( + PvpAttributeDefinitions.EID_ISSUING_NATION_NAME), + authData.getCiticenCountryCode()); + + Assert.assertNull("bPK", authData.getBpk()); + Assert.assertNull("bPKType", authData.getBpkType()); + Assert.assertNull("FamilyName", authData.getFamilyName()); + Assert.assertNull("GivenName", authData.getGivenName()); + Assert.assertNull("DateOfBirth", authData.getDateOfBirth()); + Assert.assertNull("baseId", authData.getIdentificationValue()); + Assert.assertNull("baseIdType", authData.getIdentificationType()); + Assert.assertNull("IDL", authData.getIdentityLink()); + + } + + @Test + public void moaIdMode() throws EaafAuthenticationException, EaafBuilderException { + //initialize state + pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(false); + IIdentityLink idl = buildDummyIdl(); + pendingReq.getSessionData(AuthProcessDataWrapper.class).setIdentityLink(idl); + + //execute + IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); + + //validate state + Assert.assertNotNull("AuthData null", authData); + Assert.assertNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); + Assert.assertNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); + Assert.assertNull("piiTransactionId", + authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class)); + + + Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo()); + Assert.assertNotNull("LoA null", authData.getEidasQaaLevel()); + Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(), + authData.getEidasQaaLevel()); + Assert.assertEquals("EID-ISSUING-NATION", + pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession( + PvpAttributeDefinitions.EID_ISSUING_NATION_NAME), + authData.getCiticenCountryCode()); + + Assert.assertEquals("FamilyName", idl.getFamilyName(), authData.getFamilyName()); + Assert.assertEquals("GivenName", idl.getGivenName(), authData.getGivenName()); + Assert.assertEquals("DateOfBirth", idl.getDateOfBirth(), authData.getFormatedDateOfBirth()); + Assert.assertEquals("bPK", + BpkBuilder.generateAreaSpecificPersonIdentifier( + idl.getIdentificationValue(), EaafConstants.URN_PREFIX_CDID + "XX").getFirst(), + authData.getBpk()); + Assert.assertEquals("bPKType", EaafConstants.URN_PREFIX_CDID + "XX", authData.getBpkType()); + Assert.assertNotNull("IDL", authData.getIdentityLink()); + + + } + + private IIdentityLink buildDummyIdl() { + return new IIdentityLink() { + + String familyName = RandomStringUtils.randomAlphabetic(10); + String givenName = RandomStringUtils.randomAlphabetic(10); + String dateOfBirth = "1955-02-03"; + String baseId = RandomStringUtils.randomAlphanumeric(20); + String saml2Serialized = RandomStringUtils.randomAlphanumeric(150); + + + + @Override + public void setSamlAssertion(Element arg0) throws TransformerException, IOException { + + } + + @Override + public void setPublicKey(PublicKey[] arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setPrPerson(Element arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setIssueInstant(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setIdentificationValue(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setIdentificationType(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGivenName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFamilyName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setDsigReferenceTransforms(Element[] arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setDateOfBirth(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public String getSerializedSamlAssertion() { + return this.saml2Serialized; + } + + @Override + public Element getSamlAssertion() { + IIdentityLink fullIdl; + try { + fullIdl = new SimpleIdentityLinkAssertionParser( + AuthenticationDataBuilderTest.class.getResourceAsStream("/data/test_idl_1.xml")).parseIdentityLink(); + return fullIdl.getSamlAssertion(); + + } catch (EaafParserException e) { + e.printStackTrace(); + } + + return null; + + } + + @Override + public PublicKey[] getPublicKey() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Element getPrPerson() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Date getIssueInstantDate() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getIssueInstant() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getIdentificationValue() { + return this.baseId; + } + + @Override + public String getIdentificationType() { + return EaafConstants.URN_PREFIX_BASEID; + } + + @Override + public String getGivenName() { + return this.givenName; + } + + @Override + public String getFamilyName() { + return this.familyName; + } + + @Override + public Element[] getDsigReferenceTransforms() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getDateOfBirth() { + return this.dateOfBirth; + + } + }; + } + +} diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthnRequestValidatorTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java index 389f561e..9aafb4b6 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthnRequestValidatorTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java @@ -1,4 +1,4 @@ -package at.asitplus.eidas.specific.connector.test; +package at.asitplus.eidas.specific.connector.test.utils; import java.io.IOException; import java.util.HashMap; @@ -22,6 +22,7 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @@ -52,6 +53,7 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) +@ActiveProfiles(profiles = {"deprecatedConfig"}) @WebAppConfiguration @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class AuthnRequestValidatorTest { diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/CountrySelectionProcessImplTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java index 455288f5..d0343eba 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/CountrySelectionProcessImplTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java @@ -1,4 +1,4 @@ -package at.asitplus.eidas.specific.connector.test; +package at.asitplus.eidas.specific.connector.test.utils; import java.util.HashMap; import java.util.Map; diff --git a/connector/src/test/resources/config/junit_config_1.properties b/connector/src/test/resources/config/junit_config_1.properties index 3350f947..f6b3e4c1 100644 --- a/connector/src/test/resources/config/junit_config_1.properties +++ b/connector/src/test/resources/config/junit_config_1.properties @@ -1,6 +1,7 @@ ## Basic service configuration eidas.ms.context.url.prefix=http://localhost eidas.ms.context.url.request.validation=false +eidas.ms.core.configRootDir=file:./src/test/resources/config/ eidas.ms.context.use.clustermode=true @@ -97,19 +98,27 @@ eidas.ms.pvp2.metadata.contact.surname=Mustermann eidas.ms.pvp2.metadata.contact.email=max@junit.test ## Service Provider configuration -eidas.ms.sp.0.uniqueID= +eidas.ms.sp.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata eidas.ms.sp.0.pvp2.metadata.truststore=keys/junit.jks eidas.ms.sp.0.pvp2.metadata.truststore.password=password - -#eidas.ms.sp.0.friendlyName= +eidas.ms.sp.0.friendlyName=jUnit test #eidas.ms.sp.0.pvp2.metadata.url= #eidas.ms.sp.0.policy.allowed.requested.targets=.* #eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false +## Service Provider configuration +eidas.ms.sp.1.uniqueID=https://demo.egiz.gv.at/junit_test +eidas.ms.sp.1.pvp2.metadata.truststore=keys/junit.jks +eidas.ms.sp.1.pvp2.metadata.truststore.password=password +eidas.ms.sp.1.friendlyName=jUnit test +eidas.ms.sp.1.pvp2.metadata.url=http://junit.test/metadata +eidas.ms.sp.1.policy.allowed.requested.targets=test +eidas.ms.sp.1.policy.hasBaseIdTransferRestriction=true + ##only for advanced config eidas.ms.configuration.sp.disableRegistrationRequirement= -eidas.ms.configuration.restrictions.baseID.spTransmission= +#eidas.ms.configuration.restrictions.baseID.spTransmission= eidas.ms.configuration.auth.default.countrycode= eidas.ms.configuration.pvp.scheme.validation= eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/connector/src/test/resources/config/junit_config_1_springboot.properties b/connector/src/test/resources/config/junit_config_1_springboot.properties new file mode 100644 index 00000000..e63cda7b --- /dev/null +++ b/connector/src/test/resources/config/junit_config_1_springboot.properties @@ -0,0 +1,83 @@ +## embbeded Tomcat +tomcat.workingdir=./target/work +tomcat.ajp.enabled=true +tomcat.ajp.port=8009 +tomcat.ajp.networkAddress=127.0.0.1 +tomcat.ajp.additionalAttributes.secretrequired=true +tomcat.ajp.additionalAttributes.secret=junit + +## Basic service configuration +eidas.ms.context.url.prefix=http://localhost +eidas.ms.core.configRootDir=file:./src/test/resources/config/ + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url=http://localhost:40900/mockup + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://eidas.node/junit + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/junit.jks +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password=password +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= + +#tech. AuthBlock signing for E-ID process +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=keys/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=false + + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.type=jks +eidas.ms.pvp2.keystore.path=keys/junit.jks +eidas.ms.pvp2.keystore.password=password +eidas.ms.pvp2.key.metadata.alias=meta +eidas.ms.pvp2.key.metadata.password=password +eidas.ms.pvp2.key.signing.alias=sig +eidas.ms.pvp2.key.signing.password=password +eidas.ms.pvp2.metadata.validity=24 + +eidas.ms.pvp2.metadata.organisation.name=JUnit +eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit +eidas.ms.pvp2.metadata.organisation.url=http://junit.test +eidas.ms.pvp2.metadata.contact.givenname=Max +eidas.ms.pvp2.metadata.contact.surname=Mustermann +eidas.ms.pvp2.metadata.contact.email=max@junit.test + +## Service Provider configuration +eidas.ms.sp.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata +eidas.ms.sp.0.pvp2.metadata.truststore=keys/junit.jks +eidas.ms.sp.0.pvp2.metadata.truststore.password=password +eidas.ms.sp.0.friendlyName=jUnit test +eidas.ms.sp.0.newEidMode=true + +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + +## Service Provider configuration +eidas.ms.sp.1.uniqueID=https://demo.egiz.gv.at/junit_test +eidas.ms.sp.1.pvp2.metadata.truststore=keys/junit.jks +eidas.ms.sp.1.pvp2.metadata.truststore.password=password +eidas.ms.sp.1.friendlyName=jUnit test +eidas.ms.sp.1.pvp2.metadata.url=http://junit.test/metadata +eidas.ms.sp.1.policy.allowed.requested.targets=test +eidas.ms.sp.1.policy.hasBaseIdTransferRestriction=true + diff --git a/connector/src/test/resources/config/junit_config_2_springboot.properties b/connector/src/test/resources/config/junit_config_2_springboot.properties new file mode 100644 index 00000000..ecb22dec --- /dev/null +++ b/connector/src/test/resources/config/junit_config_2_springboot.properties @@ -0,0 +1,83 @@ +## embbeded Tomcat +tomcat.workingdir=./target/work +tomcat.ajp.enabled=true +tomcat.ajp.port=8009 +tomcat.ajp.networkAddress=127.0.0.1 +tomcat.ajp.additionalAttributes.secretrequired=true +tomcat.ajp.additionalAttributes.secret=junit + +## Basic service configuration +eidas.ms.context.url.prefix=http://localhost +eidas.ms.core.configRootDir=file:./src/test/resources/config/ + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://eidas.node/junit + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/junit.jks +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password=password +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= + +#tech. AuthBlock signing for E-ID process +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=keys/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=false + + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.type=jks +eidas.ms.pvp2.keystore.path=keys/junit.jks +eidas.ms.pvp2.keystore.password=password +eidas.ms.pvp2.key.metadata.alias=meta +eidas.ms.pvp2.key.metadata.password=password +eidas.ms.pvp2.key.signing.alias=sig +eidas.ms.pvp2.key.signing.password=password +eidas.ms.pvp2.metadata.validity=24 + +eidas.ms.pvp2.metadata.organisation.name=JUnit +eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit +eidas.ms.pvp2.metadata.organisation.url=http://junit.test +eidas.ms.pvp2.metadata.contact.givenname=Max +eidas.ms.pvp2.metadata.contact.surname=Mustermann +eidas.ms.pvp2.metadata.contact.email=max@junit.test + +## Service Provider configuration +eidas.ms.sp.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata +eidas.ms.sp.0.pvp2.metadata.truststore=keys/junit.jks +eidas.ms.sp.0.pvp2.metadata.truststore.password=password +eidas.ms.sp.0.friendlyName=jUnit test +eidas.ms.sp.0.newEidMode=true + +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + +## Service Provider configuration +eidas.ms.sp.1.uniqueID=https://demo.egiz.gv.at/junit_test +eidas.ms.sp.1.pvp2.metadata.truststore=keys/junit.jks +eidas.ms.sp.1.pvp2.metadata.truststore.password=password +eidas.ms.sp.1.friendlyName=jUnit test +eidas.ms.sp.1.pvp2.metadata.url=http://junit.test/metadata +eidas.ms.sp.1.policy.allowed.requested.targets=test +eidas.ms.sp.1.policy.hasBaseIdTransferRestriction=true + diff --git a/connector/src/test/resources/config/junit_config_3.properties b/connector/src/test/resources/config/junit_config_3.properties index 32e30790..8b2c63a8 100644 --- a/connector/src/test/resources/config/junit_config_3.properties +++ b/connector/src/test/resources/config/junit_config_3.properties @@ -1,6 +1,7 @@ ## Basic service configuration eidas.ms.context.url.prefix= eidas.ms.context.url.request.validation=false +eidas.ms.core.configRootDir=file:./src/test/resources/config/ eidas.ms.context.use.clustermode=true diff --git a/connector/src/test/resources/config/keys/Metadata.pem b/connector/src/test/resources/config/keys/Metadata.pem new file mode 100644 index 00000000..b544c194 --- /dev/null +++ b/connector/src/test/resources/config/keys/Metadata.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC+jCCAeKgAwIBAgIEXjF+fTANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJB +VDENMAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxETAPBgNVBAMMCE1ldGFk +YXRhMB4XDTIwMDEyOTEyNDU0OVoXDTI2MDEyODEyNDU0OVowPzELMAkGA1UEBhMC +QVQxDTALBgNVBAcMBEVHSVoxDjAMBgNVBAoMBWpVbml0MREwDwYDVQQDDAhNZXRh +ZGF0YTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK230G3dxNbNlSYA +O5Kx/Js0aBAgxMt7q9m+dA35fK/dOvF/GjrqjWsMCnax+no9gLnq6x0gXiJclz6H +rp/YDOfLrJjMpNL/r0FWT947vbnEj7eT8TdY5d6Yi8AZulZmjiCI5nbZh2zwrP4+ +WqRroLoPhXQj8mDyp26M4xHBBUhLMRc2HV4S+XH4uNZ/vTmb8vBg31XGHCY33gl7 +/KA54JNGxJdN8Dxv6yHYsm91ZfVrX39W0iYLUNhUCkolwuQmjDVfrExM8BTLIONb +f+erJoCm3A9ghZyDYRQ/e69/UEUqDa6XOzykr88INkQscEiAXCDS+EBPMpKo+t3l +PIA9r7kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAh/2mg4S03bdZy1OVtEAudBT9 +YZb9OF34hxPtNbkB/V04wSIg1d4TBr5KDhV7CdiUOxPZzHpS8LUCgfGX306FB6NX +zh/b67uTOPaE72AB4VIT/Np0fsM7k5WhG9k9NoprIGiqCz2lXcfpZiT+LtSO1vWS +YI87wR9KOSWjcw/5i5qZIAJuwvLCQj5JtUsmrhHK75222J3TJf4dS/gfN4xfY2rW +9vcXtH6//8WdWp/zx9V7Z1ZsDb8TDKtBCEGuFDgVeU5ScKtVq8qRoUKD3Ve76cZi +purO3KrRrVAuZP2EfLkZdHEHqe8GPigNnZ5kTn8V2VJ3iRAQ73hpJRR98tFd0A== +-----END CERTIFICATE----- diff --git a/connector/src/test/resources/config/keys/teststore.jks b/connector/src/test/resources/config/keys/teststore.jks Binary files differnew file mode 100644 index 00000000..fcc6400c --- /dev/null +++ b/connector/src/test/resources/config/keys/teststore.jks diff --git a/connector/src/test/resources/config/templates/error_message.html b/connector/src/test/resources/config/templates/error_message.html index da423592..86f9d29d 100644 --- a/connector/src/test/resources/config/templates/error_message.html +++ b/connector/src/test/resources/config/templates/error_message.html @@ -21,8 +21,8 @@ <div id="alert_area" class="hell" role="application" > <p th:text="#{gui.errorpage.msg.information}">Error Information</p> <br/> - <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${msg.errorCode}"></span></p> - <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg :</b > <span th:text="${#messages.msgWithParams('__${msg.errorCode}__', '__${msg.errorParams}__')}"></span></p> + <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${errorCode}"></span></p> + <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg :</b > <span th:text="${#messages.msgWithParams('__${errorCode}__', '__${errorParams}__')}"></span></p> </div> <!-- errorMsg --> </div> diff --git a/connector/src/test/resources/data/metadata_expired.xml b/connector/src/test/resources/data/metadata_expired.xml new file mode 100644 index 00000000..16364c05 --- /dev/null +++ b/connector/src/test/resources/data/metadata_expired.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="_b67c160c0ad7b4ebd430581df167ac23" entityID="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata" validUntil="2020-12-12T20:41:20.635Z"> + <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:SignedInfo> + <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> + <ds:Reference URI="#_b67c160c0ad7b4ebd430581df167ac23"> + <ds:Transforms> + <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </ds:Transforms> + <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <ds:DigestValue>00SaL0XjeknOb/DttutP50lTyAux1jaRPJIVdSupWvU=</ds:DigestValue> + </ds:Reference> + </ds:SignedInfo> + <ds:SignatureValue>PfEBmLMX/ZgL6ViXghyWtal5MaMoW8k3zjw+54+WK1OAtVsVgOsIDRJE0M/a/VXBbMSifgY6J1gN23xhr61jkrjRQEkbDzLpWZLzWAJ65YqqUQo8wsKI2Gz0j12yY5D8/GOamKOH9KDi5ba1veXR/fnxRINoy7nZo4tcUWZChdl8BWkMN5ugr6dORNIQg/Ym3GabQ/hR5z+9FmveAKphdH63MC6qW3EgM9EMvOVkrLBTP92sNMAAJeaawui9tlxi9anVQ0OqwZsgKLvI7fyV4CM/0sd/ELjeReIlWlHk07Nz4eltMq3eOx3q1YurYvhE8XapHiQMehOtCS+Fzh10sw==</ds:SignatureValue> + <ds:KeyInfo> + <ds:X509Data> + <ds:X509Certificate>MIIDKzCCAhMCBFrxKO4wDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCQVQxDTALBgNVBAoMBEVH +SVoxGDAWBgNVBAsMD2RlbW8uZWdpei5ndi5hdDEiMCAGA1UEAwwZTU9BLUlEIElEUCAoVGVzdC1W +ZXJzaW9uKTAeFw0xODA1MDgwNDM0NTRaFw0yMTAxMzEwNDM0NTRaMFoxCzAJBgNVBAYTAkFUMQ0w +CwYDVQQKDARFR0laMRgwFgYDVQQLDA9kZW1vLmVnaXouZ3YuYXQxIjAgBgNVBAMMGU1PQS1JRCBJ +RFAgKFRlc3QtVmVyc2lvbikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaFnqoaYoq +UptenemC6FiVDg5F2hEjpjix8+ow6/6QhUl2cPOS0uwZHaIvwT/RVbJ9CPdil6+11qaCPfZ+FoY+ +M+ke7TRd2RS1DqFbe1KC0imEnwemyLQrYe5Pm7DNcaY/kHTTq+k0eeGbYH0U/Iopyi0VuN5OWl4F +Vg45pf7knhXkaimItdjnCXnKcYM91mmltCf6TDgUrz7US7PmgvinnhfBgdITAT4GRr4ehliT+/jt +1OzHEyWRHanBGIpXNeZNqxgnpnGtaDh4JZuYR8qfH+GRK6dtW2ziej6rGIiUElGVCkXsohgxMNzq +nWeD9JT8+yyp1XZlyQf+IxhhESQLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIFejAFQepaEl/kC +VLvidMR+MXq5LCGHthUiI6eDTQZ+H7lZdHlj547XwEdX15b6Md3h7eSJ4hwlfV4go/0FaoLPzvVq +itwtYY5htywB3B6ZV34Eyi6C59Gl34XrV8CWxH4KKwLsVAjAy+/p/Xh0q2pzSBkeOChzBMBkjmyc +2Ue4MEKdL9guzp6+Yc/HL/phHAKYapkVyFwvsdqWOgyRzxAHINko8ExImMMB3xB5a52kfqLcui5O +fzEhjwLFJaGBMmFCmFGGOUwtIvl/6ZQ2LLzOE9+giVK9WsIgH11Pu+ejPFAbXf8cf4oWhbAfTkiy +4jpXrp77JXFRSDWddb0yePc=</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </ds:Signature> + <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> + <md:KeyDescriptor use="signing"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:X509Data> + <ds:X509Certificate>MIIBbTCCARKgAwIBAgIEXjF+qTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +HhcNMjAwMTI5MTI0NjMzWhcNMjcwMTI4MTI0NjMzWjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASRt7gZRrr4rSEE7Q922oKQJF+mlkwC +LZnv8ZzHtH54s4VdyQFIBjQF1PPf9PTn+5tid8QJehZPndcoeD7J8fPJMAoGCCqG +SM49BAMCA0kAMEYCIQDFUO0owvqMVRO2FmD+vb8mqJBpWCE6Cl5pEHaygTa5LwIh +ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </md:KeyDescriptor> + <md:KeyDescriptor use="encryption"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:X509Data> + <ds:X509Certificate>MIIDKzCCAhMCBFrxKO4wDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCQVQxDTALBgNVBAoMBEVH +SVoxGDAWBgNVBAsMD2RlbW8uZWdpei5ndi5hdDEiMCAGA1UEAwwZTU9BLUlEIElEUCAoVGVzdC1W +ZXJzaW9uKTAeFw0xODA1MDgwNDM0NTRaFw0yMTAxMzEwNDM0NTRaMFoxCzAJBgNVBAYTAkFUMQ0w +CwYDVQQKDARFR0laMRgwFgYDVQQLDA9kZW1vLmVnaXouZ3YuYXQxIjAgBgNVBAMMGU1PQS1JRCBJ +RFAgKFRlc3QtVmVyc2lvbikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaFnqoaYoq +UptenemC6FiVDg5F2hEjpjix8+ow6/6QhUl2cPOS0uwZHaIvwT/RVbJ9CPdil6+11qaCPfZ+FoY+ +M+ke7TRd2RS1DqFbe1KC0imEnwemyLQrYe5Pm7DNcaY/kHTTq+k0eeGbYH0U/Iopyi0VuN5OWl4F +Vg45pf7knhXkaimItdjnCXnKcYM91mmltCf6TDgUrz7US7PmgvinnhfBgdITAT4GRr4ehliT+/jt +1OzHEyWRHanBGIpXNeZNqxgnpnGtaDh4JZuYR8qfH+GRK6dtW2ziej6rGIiUElGVCkXsohgxMNzq +nWeD9JT8+yyp1XZlyQf+IxhhESQLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIFejAFQepaEl/kC +VLvidMR+MXq5LCGHthUiI6eDTQZ+H7lZdHlj547XwEdX15b6Md3h7eSJ4hwlfV4go/0FaoLPzvVq +itwtYY5htywB3B6ZV34Eyi6C59Gl34XrV8CWxH4KKwLsVAjAy+/p/Xh0q2pzSBkeOChzBMBkjmyc +2Ue4MEKdL9guzp6+Yc/HL/phHAKYapkVyFwvsdqWOgyRzxAHINko8ExImMMB3xB5a52kfqLcui5O +fzEhjwLFJaGBMmFCmFGGOUwtIvl/6ZQ2LLzOE9+giVK9WsIgH11Pu+ejPFAbXf8cf4oWhbAfTkiy +4jpXrp77JXFRSDWddb0yePc=</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </md:KeyDescriptor> + <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/post" index="0" isDefault="true"/> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/redirect" index="1"/> + <md:AttributeConsumingService index="0" isDefault="true"> + <md:ServiceName xml:lang="en">Default Service</md:ServiceName> + <md:RequestedAttribute FriendlyName="BPK" Name="urn:oid:1.2.40.0.10.2.1.1.149" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="PRINCIPAL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.20" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="BIRTHDATE" Name="urn:oid:1.2.40.0.10.2.1.1.55" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="PVP-VERSION" Name="urn:oid:1.2.40.0.10.2.1.1.261.10" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="EID-ISSUING-NATION" Name="urn:oid:1.2.40.0.10.2.1.1.261.32" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.76" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-FULL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.84" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.68" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN" Name="urn:oid:1.2.40.0.10.2.1.1.261.100" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="GIVEN-NAME" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="EID-SECTOR-FOR-IDENTIFIER" Name="urn:oid:1.2.40.0.10.2.1.1.261.34" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE-OID" Name="urn:oid:1.2.40.0.10.2.1.1.261.106" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-IDENTITY-LINK" Name="urn:oid:1.2.40.0.10.2.1.1.261.38" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-CITIZEN-QAA-EIDAS-LEVEL" Name="urn:oid:1.2.40.0.10.2.1.1.261.108" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + </md:AttributeConsumingService> + </md:SPSSODescriptor> + <md:Organization> + <md:OrganizationName xml:lang="de">EGIZ</md:OrganizationName> + <md:OrganizationDisplayName xml:lang="de">E-Government Innovationszentrum</md:OrganizationDisplayName> + <md:OrganizationURL xml:lang="de">http://www.egiz.gv.at</md:OrganizationURL> + </md:Organization> + <md:ContactPerson contactType="technical"> + <md:Company>E-Government Innovationszentrum</md:Company> + <md:GivenName>Lenz</md:GivenName> + <md:SurName>Thomas</md:SurName> + <md:EmailAddress>thomas.lenz@egiz.gv.at</md:EmailAddress> + <md:TelephoneNumber>+43 316 873 5525</md:TelephoneNumber> + </md:ContactPerson> +</md:EntityDescriptor> diff --git a/connector/src/test/resources/data/metadata_valid.xml b/connector/src/test/resources/data/metadata_valid.xml new file mode 100644 index 00000000..06e1e785 --- /dev/null +++ b/connector/src/test/resources/data/metadata_valid.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="_b67c160c0ad7b4ebd430581df167ac23" entityID="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata"> + <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:SignedInfo> + <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> + <ds:Reference URI="#_b67c160c0ad7b4ebd430581df167ac23"> + <ds:Transforms> + <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </ds:Transforms> + <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <ds:DigestValue>00SaL0XjeknOb/DttutP50lTyAux1jaRPJIVdSupWvU=</ds:DigestValue> + </ds:Reference> + </ds:SignedInfo> + <ds:SignatureValue>PfEBmLMX/ZgL6ViXghyWtal5MaMoW8k3zjw+54+WK1OAtVsVgOsIDRJE0M/a/VXBbMSifgY6J1gN23xhr61jkrjRQEkbDzLpWZLzWAJ65YqqUQo8wsKI2Gz0j12yY5D8/GOamKOH9KDi5ba1veXR/fnxRINoy7nZo4tcUWZChdl8BWkMN5ugr6dORNIQg/Ym3GabQ/hR5z+9FmveAKphdH63MC6qW3EgM9EMvOVkrLBTP92sNMAAJeaawui9tlxi9anVQ0OqwZsgKLvI7fyV4CM/0sd/ELjeReIlWlHk07Nz4eltMq3eOx3q1YurYvhE8XapHiQMehOtCS+Fzh10sw==</ds:SignatureValue> + <ds:KeyInfo> + <ds:X509Data> + <ds:X509Certificate>MIIDKzCCAhMCBFrxKO4wDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCQVQxDTALBgNVBAoMBEVH +SVoxGDAWBgNVBAsMD2RlbW8uZWdpei5ndi5hdDEiMCAGA1UEAwwZTU9BLUlEIElEUCAoVGVzdC1W +ZXJzaW9uKTAeFw0xODA1MDgwNDM0NTRaFw0yMTAxMzEwNDM0NTRaMFoxCzAJBgNVBAYTAkFUMQ0w +CwYDVQQKDARFR0laMRgwFgYDVQQLDA9kZW1vLmVnaXouZ3YuYXQxIjAgBgNVBAMMGU1PQS1JRCBJ +RFAgKFRlc3QtVmVyc2lvbikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaFnqoaYoq +UptenemC6FiVDg5F2hEjpjix8+ow6/6QhUl2cPOS0uwZHaIvwT/RVbJ9CPdil6+11qaCPfZ+FoY+ +M+ke7TRd2RS1DqFbe1KC0imEnwemyLQrYe5Pm7DNcaY/kHTTq+k0eeGbYH0U/Iopyi0VuN5OWl4F +Vg45pf7knhXkaimItdjnCXnKcYM91mmltCf6TDgUrz7US7PmgvinnhfBgdITAT4GRr4ehliT+/jt +1OzHEyWRHanBGIpXNeZNqxgnpnGtaDh4JZuYR8qfH+GRK6dtW2ziej6rGIiUElGVCkXsohgxMNzq +nWeD9JT8+yyp1XZlyQf+IxhhESQLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIFejAFQepaEl/kC +VLvidMR+MXq5LCGHthUiI6eDTQZ+H7lZdHlj547XwEdX15b6Md3h7eSJ4hwlfV4go/0FaoLPzvVq +itwtYY5htywB3B6ZV34Eyi6C59Gl34XrV8CWxH4KKwLsVAjAy+/p/Xh0q2pzSBkeOChzBMBkjmyc +2Ue4MEKdL9guzp6+Yc/HL/phHAKYapkVyFwvsdqWOgyRzxAHINko8ExImMMB3xB5a52kfqLcui5O +fzEhjwLFJaGBMmFCmFGGOUwtIvl/6ZQ2LLzOE9+giVK9WsIgH11Pu+ejPFAbXf8cf4oWhbAfTkiy +4jpXrp77JXFRSDWddb0yePc=</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </ds:Signature> + <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> + <md:KeyDescriptor use="signing"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:X509Data> + <ds:X509Certificate>MIIBbTCCARKgAwIBAgIEXjF+qTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +HhcNMjAwMTI5MTI0NjMzWhcNMjcwMTI4MTI0NjMzWjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASRt7gZRrr4rSEE7Q922oKQJF+mlkwC +LZnv8ZzHtH54s4VdyQFIBjQF1PPf9PTn+5tid8QJehZPndcoeD7J8fPJMAoGCCqG +SM49BAMCA0kAMEYCIQDFUO0owvqMVRO2FmD+vb8mqJBpWCE6Cl5pEHaygTa5LwIh +ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </md:KeyDescriptor> + <md:KeyDescriptor use="encryption"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:X509Data> + <ds:X509Certificate>MIIDKzCCAhMCBFrxKO4wDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCQVQxDTALBgNVBAoMBEVH +SVoxGDAWBgNVBAsMD2RlbW8uZWdpei5ndi5hdDEiMCAGA1UEAwwZTU9BLUlEIElEUCAoVGVzdC1W +ZXJzaW9uKTAeFw0xODA1MDgwNDM0NTRaFw0yMTAxMzEwNDM0NTRaMFoxCzAJBgNVBAYTAkFUMQ0w +CwYDVQQKDARFR0laMRgwFgYDVQQLDA9kZW1vLmVnaXouZ3YuYXQxIjAgBgNVBAMMGU1PQS1JRCBJ +RFAgKFRlc3QtVmVyc2lvbikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaFnqoaYoq +UptenemC6FiVDg5F2hEjpjix8+ow6/6QhUl2cPOS0uwZHaIvwT/RVbJ9CPdil6+11qaCPfZ+FoY+ +M+ke7TRd2RS1DqFbe1KC0imEnwemyLQrYe5Pm7DNcaY/kHTTq+k0eeGbYH0U/Iopyi0VuN5OWl4F +Vg45pf7knhXkaimItdjnCXnKcYM91mmltCf6TDgUrz7US7PmgvinnhfBgdITAT4GRr4ehliT+/jt +1OzHEyWRHanBGIpXNeZNqxgnpnGtaDh4JZuYR8qfH+GRK6dtW2ziej6rGIiUElGVCkXsohgxMNzq +nWeD9JT8+yyp1XZlyQf+IxhhESQLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIFejAFQepaEl/kC +VLvidMR+MXq5LCGHthUiI6eDTQZ+H7lZdHlj547XwEdX15b6Md3h7eSJ4hwlfV4go/0FaoLPzvVq +itwtYY5htywB3B6ZV34Eyi6C59Gl34XrV8CWxH4KKwLsVAjAy+/p/Xh0q2pzSBkeOChzBMBkjmyc +2Ue4MEKdL9guzp6+Yc/HL/phHAKYapkVyFwvsdqWOgyRzxAHINko8ExImMMB3xB5a52kfqLcui5O +fzEhjwLFJaGBMmFCmFGGOUwtIvl/6ZQ2LLzOE9+giVK9WsIgH11Pu+ejPFAbXf8cf4oWhbAfTkiy +4jpXrp77JXFRSDWddb0yePc=</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </md:KeyDescriptor> + <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/post" index="0" isDefault="true"/> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/redirect" index="1"/> + <md:AttributeConsumingService index="0" isDefault="true"> + <md:ServiceName xml:lang="en">Default Service</md:ServiceName> + <md:RequestedAttribute FriendlyName="BPK" Name="urn:oid:1.2.40.0.10.2.1.1.149" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="PRINCIPAL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.20" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="BIRTHDATE" Name="urn:oid:1.2.40.0.10.2.1.1.55" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="PVP-VERSION" Name="urn:oid:1.2.40.0.10.2.1.1.261.10" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="EID-ISSUING-NATION" Name="urn:oid:1.2.40.0.10.2.1.1.261.32" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.76" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-FULL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.84" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.68" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN" Name="urn:oid:1.2.40.0.10.2.1.1.261.100" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="GIVEN-NAME" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="EID-SECTOR-FOR-IDENTIFIER" Name="urn:oid:1.2.40.0.10.2.1.1.261.34" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE-OID" Name="urn:oid:1.2.40.0.10.2.1.1.261.106" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-IDENTITY-LINK" Name="urn:oid:1.2.40.0.10.2.1.1.261.38" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-CITIZEN-QAA-EIDAS-LEVEL" Name="urn:oid:1.2.40.0.10.2.1.1.261.108" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + </md:AttributeConsumingService> + </md:SPSSODescriptor> + <md:Organization> + <md:OrganizationName xml:lang="de">EGIZ</md:OrganizationName> + <md:OrganizationDisplayName xml:lang="de">E-Government Innovationszentrum</md:OrganizationDisplayName> + <md:OrganizationURL xml:lang="de">http://www.egiz.gv.at</md:OrganizationURL> + </md:Organization> + <md:ContactPerson contactType="technical"> + <md:Company>E-Government Innovationszentrum</md:Company> + <md:GivenName>Lenz</md:GivenName> + <md:SurName>Thomas</md:SurName> + <md:EmailAddress>thomas.lenz@egiz.gv.at</md:EmailAddress> + <md:TelephoneNumber>+43 316 873 5525</md:TelephoneNumber> + </md:ContactPerson> +</md:EntityDescriptor> diff --git a/connector/src/test/resources/data/metadata_valid_without_encryption.xml b/connector/src/test/resources/data/metadata_valid_without_encryption.xml new file mode 100644 index 00000000..b224c336 --- /dev/null +++ b/connector/src/test/resources/data/metadata_valid_without_encryption.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="_b67c160c0ad7b4ebd430581df167ac23" entityID="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata"> + <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:SignedInfo> + <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> + <ds:Reference URI="#_b67c160c0ad7b4ebd430581df167ac23"> + <ds:Transforms> + <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </ds:Transforms> + <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <ds:DigestValue>00SaL0XjeknOb/DttutP50lTyAux1jaRPJIVdSupWvU=</ds:DigestValue> + </ds:Reference> + </ds:SignedInfo> + <ds:SignatureValue>PfEBmLMX/ZgL6ViXghyWtal5MaMoW8k3zjw+54+WK1OAtVsVgOsIDRJE0M/a/VXBbMSifgY6J1gN23xhr61jkrjRQEkbDzLpWZLzWAJ65YqqUQo8wsKI2Gz0j12yY5D8/GOamKOH9KDi5ba1veXR/fnxRINoy7nZo4tcUWZChdl8BWkMN5ugr6dORNIQg/Ym3GabQ/hR5z+9FmveAKphdH63MC6qW3EgM9EMvOVkrLBTP92sNMAAJeaawui9tlxi9anVQ0OqwZsgKLvI7fyV4CM/0sd/ELjeReIlWlHk07Nz4eltMq3eOx3q1YurYvhE8XapHiQMehOtCS+Fzh10sw==</ds:SignatureValue> + <ds:KeyInfo> + <ds:X509Data> + <ds:X509Certificate>MIIDKzCCAhMCBFrxKO4wDQYJKoZIhvcNAQELBQAwWjELMAkGA1UEBhMCQVQxDTALBgNVBAoMBEVH +SVoxGDAWBgNVBAsMD2RlbW8uZWdpei5ndi5hdDEiMCAGA1UEAwwZTU9BLUlEIElEUCAoVGVzdC1W +ZXJzaW9uKTAeFw0xODA1MDgwNDM0NTRaFw0yMTAxMzEwNDM0NTRaMFoxCzAJBgNVBAYTAkFUMQ0w +CwYDVQQKDARFR0laMRgwFgYDVQQLDA9kZW1vLmVnaXouZ3YuYXQxIjAgBgNVBAMMGU1PQS1JRCBJ +RFAgKFRlc3QtVmVyc2lvbikwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaFnqoaYoq +UptenemC6FiVDg5F2hEjpjix8+ow6/6QhUl2cPOS0uwZHaIvwT/RVbJ9CPdil6+11qaCPfZ+FoY+ +M+ke7TRd2RS1DqFbe1KC0imEnwemyLQrYe5Pm7DNcaY/kHTTq+k0eeGbYH0U/Iopyi0VuN5OWl4F +Vg45pf7knhXkaimItdjnCXnKcYM91mmltCf6TDgUrz7US7PmgvinnhfBgdITAT4GRr4ehliT+/jt +1OzHEyWRHanBGIpXNeZNqxgnpnGtaDh4JZuYR8qfH+GRK6dtW2ziej6rGIiUElGVCkXsohgxMNzq +nWeD9JT8+yyp1XZlyQf+IxhhESQLAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIFejAFQepaEl/kC +VLvidMR+MXq5LCGHthUiI6eDTQZ+H7lZdHlj547XwEdX15b6Md3h7eSJ4hwlfV4go/0FaoLPzvVq +itwtYY5htywB3B6ZV34Eyi6C59Gl34XrV8CWxH4KKwLsVAjAy+/p/Xh0q2pzSBkeOChzBMBkjmyc +2Ue4MEKdL9guzp6+Yc/HL/phHAKYapkVyFwvsdqWOgyRzxAHINko8ExImMMB3xB5a52kfqLcui5O +fzEhjwLFJaGBMmFCmFGGOUwtIvl/6ZQ2LLzOE9+giVK9WsIgH11Pu+ejPFAbXf8cf4oWhbAfTkiy +4jpXrp77JXFRSDWddb0yePc=</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </ds:Signature> + <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> + <md:KeyDescriptor use="signing"> + <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> + <ds:X509Data> + <ds:X509Certificate>MIIBbTCCARKgAwIBAgIEXjF+qTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +HhcNMjAwMTI5MTI0NjMzWhcNMjcwMTI4MTI0NjMzWjA+MQswCQYDVQQGEwJBVDEN +MAsGA1UEBwwERUdJWjEOMAwGA1UECgwFalVuaXQxEDAOBgNVBAMMB3NpZ25pbmcw +WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASRt7gZRrr4rSEE7Q922oKQJF+mlkwC +LZnv8ZzHtH54s4VdyQFIBjQF1PPf9PTn+5tid8QJehZPndcoeD7J8fPJMAoGCCqG +SM49BAMCA0kAMEYCIQDFUO0owvqMVRO2FmD+vb8mqJBpWCE6Cl5pEHaygTa5LwIh +ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L</ds:X509Certificate> + </ds:X509Data> + </ds:KeyInfo> + </md:KeyDescriptor> + <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/post" index="0" isDefault="true"/> + <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/redirect" index="1"/> + <md:AttributeConsumingService index="0" isDefault="true"> + <md:ServiceName xml:lang="en">Default Service</md:ServiceName> + <md:RequestedAttribute FriendlyName="BPK" Name="urn:oid:1.2.40.0.10.2.1.1.149" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="PRINCIPAL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.20" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="BIRTHDATE" Name="urn:oid:1.2.40.0.10.2.1.1.55" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="PVP-VERSION" Name="urn:oid:1.2.40.0.10.2.1.1.261.10" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="EID-ISSUING-NATION" Name="urn:oid:1.2.40.0.10.2.1.1.261.32" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.76" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-FULL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.84" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE" Name="urn:oid:1.2.40.0.10.2.1.1.261.68" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATOR-LEGAL-PERSON-SOURCE-PIN" Name="urn:oid:1.2.40.0.10.2.1.1.261.100" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="GIVEN-NAME" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-SECTOR-FOR-IDENTIFIER" Name="urn:oid:1.2.40.0.10.2.1.1.261.34" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="MANDATE-TYPE-OID" Name="urn:oid:1.2.40.0.10.2.1.1.261.106" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-IDENTITY-LINK" Name="urn:oid:1.2.40.0.10.2.1.1.261.38" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="EID-CITIZEN-QAA-EIDAS-LEVEL" Name="urn:oid:1.2.40.0.10.2.1.1.261.108" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/> + <md:RequestedAttribute FriendlyName="userAuthBlock" Name="urn:eidgvat:attributes.authblock.signed" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="eidBind" Name="urn:eidgvat:attributes.eidbind" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + <md:RequestedAttribute FriendlyName="piiTransactionId" Name="urn:eidgvat:attributes.piiTransactionId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> + </md:AttributeConsumingService> + </md:SPSSODescriptor> + <md:Organization> + <md:OrganizationName xml:lang="de">EGIZ</md:OrganizationName> + <md:OrganizationDisplayName xml:lang="de">E-Government Innovationszentrum</md:OrganizationDisplayName> + <md:OrganizationURL xml:lang="de">http://www.egiz.gv.at</md:OrganizationURL> + </md:Organization> + <md:ContactPerson contactType="technical"> + <md:Company>E-Government Innovationszentrum</md:Company> + <md:GivenName>Lenz</md:GivenName> + <md:SurName>Thomas</md:SurName> + <md:EmailAddress>thomas.lenz@egiz.gv.at</md:EmailAddress> + <md:TelephoneNumber>+43 316 873 5525</md:TelephoneNumber> + </md:ContactPerson> +</md:EntityDescriptor> diff --git a/connector/src/test/resources/data/pvp2_authn_1.xml b/connector/src/test/resources/data/pvp2_authn_1.xml index ff5f08a5..1275b200 100644 --- a/connector/src/test/resources/data/pvp2_authn_1.xml +++ b/connector/src/test/resources/data/pvp2_authn_1.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceIndex="0" Destination="https://vidp.gv.at/ms_connector/pvp/post" ID="_27f4ce57e524e483446654a34cf886e2" IsPassive="false" IssueInstant="2019-12-11T10:50:19.032Z" ProviderName="OpenID Connect Demo" Version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> +<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceIndex="0" Destination="http://localhost/pvp/post" ID="_27f4ce57e524e483446654a34cf886e2" IsPassive="false" IssueInstant="2019-12-11T10:50:19.032Z" ProviderName="OpenID Connect Demo" Version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata</saml2:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> diff --git a/connector/src/test/resources/data/test_idl_1.xml b/connector/src/test/resources/data/test_idl_1.xml new file mode 100644 index 00000000..8151468b --- /dev/null +++ b/connector/src/test/resources/data/test_idl_1.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?><saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:ecdsa="http://www.w3.org/2001/04/xmldsig-more#" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" xmlns:si="http://www.w3.org/2001/XMLSchema-instance" AssertionID="szr.bmi.gv.at-AssertionID1467616845518699" IssueInstant="2016-07-04T09:20:45+01:00" Issuer="http://portal.bmi.gv.at/ref/szr/issuer" MajorVersion="1" MinorVersion="0"> + <saml:AttributeStatement> + <saml:Subject> + <saml:SubjectConfirmation> + <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod> + <saml:SubjectConfirmationData> + <pr:Person si:type="pr:PhysicalPersonType"><pr:Identification><pr:Value>AT/CZ/xWE0vFWarzpzSL4LYlpst9b6vg0=</pr:Value><pr:Type>urn:publicid:gv.at:eidasid+AT+CZ</pr:Type></pr:Identification><pr:Name><pr:GivenName>XXXMaria-Theresia Kunigunda</pr:GivenName><pr:FamilyName primary="undefined">XXXHabsburg-Lothringen</pr:FamilyName></pr:Name><pr:DateOfBirth>1980-02-29</pr:DateOfBirth></pr:Person> + </saml:SubjectConfirmationData> + </saml:SubjectConfirmation> + </saml:Subject> + <saml:Attribute AttributeName="CitizenPublicKey" AttributeNamespace="urn:publicid:gv.at:namespaces:identitylink:1.2"><saml:AttributeValue><ecdsa:ECDSAKeyValue><ecdsa:DomainParameters><ecdsa:NamedCurve URN="urn:oid:1.2.840.10045.3.1.7"/></ecdsa:DomainParameters><ecdsa:PublicKey><ecdsa:X Value="49629022697474602497707473238246914610217535689798527313620157109614355242988" si:type="ecdsa:PrimeFieldElemType"/><ecdsa:Y Value="77111560713755914450736041751615112402310649832147731609221710465065501356492" si:type="ecdsa:PrimeFieldElemType"/></ecdsa:PublicKey></ecdsa:ECDSAKeyValue></saml:AttributeValue></saml:Attribute><saml:Attribute AttributeName="CitizenPublicKey" AttributeNamespace="urn:publicid:gv.at:namespaces:identitylink:1.2"><saml:AttributeValue><dsig:RSAKeyValue><dsig:Modulus>1BFOitiQUc1lAHDGksneXWZGKGaFBcu03HEiIFsjHjNt/IfRZ4IzqHotUKItxnCdNtsFc1MkMJg+ +g0AXHsuU6MNgcbcXPaPfmHp+8+BJh+amDF3FnAN4ceG8oFAGVEZteOgfdWk1r5RQ2SK+0PuXPuLp +Tee7IzXtksReZkVEadUCxn/hiRXZa0dABgkFe3kSXbDr5tKXOF0FCtLKhZBI9z+NbX+aTSKOmAOq +4jyymoo5EP3L+iPecrUwHijD0Bm89h1JjxP521fkYe3Si+0J40okrmCCQHBr+IzB1uX98pKhvs7X +6rPjOJ6lBwP7XjK7D128P/cg4eH6v58cCfbLcQ==</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></saml:AttributeValue></saml:Attribute></saml:AttributeStatement> + +<dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-1-1" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>E+BXH0C2F6EYHjdJrOUKr+DsKT8=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>Hvj40m9ridp2HOz81MTAqzf0q+sZC5YeKpJP43eK5G1HNH1/DNGU/r/6IVPibU9Y +YGYJoXpznxRFibEQ6dFCHAaNPyADmdGHyJSWryI5ypAap4Y8MJnaUGSWY49IZbht +PjfKWB2jUNzj1T2u6ebIifAThAK8ZqIE+e5uaR+qrrLicxIhXcSZoyScbKxMuT1Q +p6zNsNBOHujbVAfKFUE8WmGInyvuoDgerUrA0XstWWg2M9ghytcDJwZpTYwXvmmo +GV47ue0ITrtM+QqWVbt+dHO8369JFnGQ9h/6h/4j9iyNuxfG7u/EyHQiSuy0+FP8 +1lkLsg1YX+2pN0HElyXVqw==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIEqzCCBBSgAwIBAgIHANux81oNezANBgkqhkiG9w0BAQUFADBAMSIwIAYDVQQD +ExlJQUlLIFRlc3QgSW50ZXJtZWRpYXRlIENBMQ0wCwYDVQQKEwRJQUlLMQswCQYD +VQQGEwJBVDAeFw0xMzA5MjcwNTMzMzdaFw0yMzA5MjcwNTMzMzdaMIHkMQswCQYD +VQQGEwJBVDENMAsGA1UEBxMER3JhejEmMCQGA1UEChMdR3JheiBVbml2ZXJzaXR5 +IG9mIFRlY2hub2xvZ3kxSDBGBgNVBAsTP0luc3RpdHV0ZSBmb3IgQXBwbGllZCBJ +bmZvcm1hdGlvbiBQcm9jZXNzaW5nIGFuZCBDb21tdW5pY2F0aW9uczEUMBIGA1UE +BBMLTU9BLVNTIFRlc3QxGDAWBgNVBCoTD0VHSVogVGVzdHBvcnRhbDEkMCIGA1UE +AxMbRUdJWiBUZXN0cG9ydGFsIE1PQS1TUyBUZXN0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAuDjOyf+mY+oQL2FQzzuaiC8C23vVKbq/n2Zi7BqSibZH +mtqMJfmj4pT+hWSNHvVvWsaxFcx4KeNqdCMzwnw1r4P3Sf+2o5uFku5KHEMLMokR +yYQG9VqY/KkB94ye7Pv6zT8gvKqxGFg96UamECep4swPaSZrA8AOER5WAtyGDzKI +Tz+a5zfFaTXDoba7f98PCWR96yKiFjVOhzp38WVz4VJgz+b8ZSY7Xsv5Kn7DXjOL +STX4MevFLki3rFPup3+4vGToaMBW3PEj67HXBdqR855Le6+E6rVxORqsXqlVwhsI +6nuS0CO2LWYmBNR1IB0mXteeYH/HfxvuZc+7yDjdPQIDAQABo4IBhDCCAYAwDgYD +VR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFEmcH6VY4BG1EAGB +TLoNR9vH/g6yMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jYS5pYWlrLnR1Z3Jh +ei5hdC9jYXBzby9jcmxzL0lBSUtUZXN0X0ludGVybWVkaWF0ZUNBLmNybDCBqgYI +KwYBBQUHAQEEgZ0wgZowSgYIKwYBBQUHMAGGPmh0dHA6Ly9jYS5pYWlrLnR1Z3Jh +ei5hdC9jYXBzby9PQ1NQP2NhPUlBSUtUZXN0X0ludGVybWVkaWF0ZUNBMEwGCCsG +AQUFBzAChkBodHRwOi8vY2EuaWFpay50dWdyYXouYXQvY2Fwc28vY2VydHMvSUFJ +S1Rlc3RfSW50ZXJtZWRpYXRlQ0EuY2VyMCEGA1UdEQQaMBiBFnRob21hcy5sZW56 +QGVnaXouZ3YuYXQwHwYDVR0jBBgwFoAUaKJeEdreL4BrRES/jfplNoEkp28wDQYJ +KoZIhvcNAQEFBQADgYEAlFGjUxXLs7SAT8NtXSrv2WrjlklaRnHTFHLQwyVo8JWb +gvRkHHDUv2o8ofXUY2R2WJ38dxeDoccgbXrJb/Qhi8IY7YhCwv/TuIZDisyAqo8W +ORKSip/6HWlGCSR/Vgoet1GtCmF0FoUxFUIGSAuQ2yyt4fIzt5GJrU1X5ujjI1w=</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature></saml:Assertion>
\ No newline at end of file diff --git a/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml b/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml new file mode 100644 index 00000000..3bac88e3 --- /dev/null +++ b/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + + <context:annotation-config /> + + <import resource="classpath:/SpringTest-context_authManager.xml" /> + + <bean id="basicConfig" + class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" /> + + <bean id="eidasNodeMetadata" + class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" /> + +</beans>
\ No newline at end of file diff --git a/connector/src/main/resources/SpringTest_connector.beans.xml b/connector/src/test/resources/spring/SpringTest_connector.beans.xml index 5cf0d5b8..ba385cb9 100644 --- a/connector/src/main/resources/SpringTest_connector.beans.xml +++ b/connector/src/test/resources/spring/SpringTest_connector.beans.xml @@ -21,13 +21,6 @@ <bean id="ProcessEngineSignalController" class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" /> - <bean id="MonitoringController" - class="at.asitplus.eidas.specific.connector.controller.MonitoringController"> - <property name="pvpIdpCredentials"> - <ref bean="PVPEndPointCredentialProvider" /> - </property> - </bean> - <bean id="AuthenticationManager" class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" /> diff --git a/connector_lib/checks/spotbugs-exclude.xml b/connector_lib/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..90ca96f2 --- /dev/null +++ b/connector_lib/checks/spotbugs-exclude.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> + <Match> + <!-- View parameters are hard-coded values --> + <Class name="at.asitplus.eidas.specific.connector.gui.SpringMvcGuiFormBuilderImpl" /> + <Method name="build" /> + <Bug pattern="SPRING_FILE_DISCLOSURE" /> + </Match> +</FindBugsFilter> diff --git a/connector_lib/pom.xml b/connector_lib/pom.xml index 795096f9..f24a2801 100644 --- a/connector_lib/pom.xml +++ b/connector_lib/pom.xml @@ -27,6 +27,10 @@ <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + </dependency> <dependency> <groupId>javax.servlet</groupId> @@ -34,11 +38,30 @@ <scope>provided</scope> </dependency> + <!-- jUnit test dependencies --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf_core_utils</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf-core</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + </dependencies> <build> @@ -69,6 +92,15 @@ </dependencies> </plugin> + <plugin> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs-maven-plugin</artifactId> + <version>${spotbugs-maven-plugin.version}</version> + <configuration> + <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> + </configuration> + </plugin> + </plugins> </build> diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java index 9c80f4ad..cfc434c4 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java @@ -38,8 +38,15 @@ public class MsConnectorEventCodes { public static final int SZR_IDL_RECEIVED = 6200; public static final int SZR_BPK_RECEIVED = 6201; + public static final int SZR_VSZ_RECEIVED = 6202; + public static final int SZR_EIDASBIND_RECEIVED = 6203; + public static final int TECH_AUCHBLOCK_CREATED = 6204; public static final int SZR_ERNB_EIDAS_RAW_ID = 6210; public static final int SZR_ERNB_EIDAS_ERNB_ID = 6211; + + private MsConnectorEventCodes() { + // hidden constructor for class with static values only. + } } diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java index 1300ad74..379ed378 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java @@ -105,7 +105,7 @@ public class MsEidasNodeConstants { - public static final String PROP_CONFIG_SP_LIST_PREFIX = "sp."; + public static final String PROP_CONFIG_SP_LIST_PREFIX = "sp"; public static final String PROP_CONFIG_SP_UNIQUEIDENTIFIER = EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER; public static final String PROP_CONFIG_SP_FRIENDLYNAME = "friendlyName"; public static final String PROP_CONFIG_SP_PVP2_METADATA_URL = "pvp2.metadata.url"; @@ -172,4 +172,8 @@ public class MsEidasNodeConstants { public static final List<String> COUNTRY_SELECTION_PARAM_WHITELIST = Arrays.asList(REQ_PARAM_SELECTED_COUNTRY, REQ_PARAM_SELECTED_ENVIRONMENT); + private MsEidasNodeConstants() { + //hidden Constructor for class with static values only. + } + } diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/BasicConfigurationProvider.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/BasicConfigurationProvider.java index 355c63f2..89ccdfe7 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/BasicConfigurationProvider.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/BasicConfigurationProvider.java @@ -31,6 +31,7 @@ import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; @@ -41,6 +42,7 @@ import at.gv.egiz.eaaf.core.impl.idp.conf.AbstractConfigurationImpl; import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; @Service("BasicMSSpecificNodeConfig") +@Profile("deprecatedConfig") public class BasicConfigurationProvider extends AbstractConfigurationImpl { private static final Logger log = LoggerFactory.getLogger(BasicConfigurationProvider.class); @@ -56,7 +58,7 @@ public class BasicConfigurationProvider extends AbstractConfigurationImpl { if (!spConfigCache.containsKey(entityId)) { log.debug("SP: " + entityId + " is NOT cached. Starting load operation ... "); final Map<String, String> allSPs = getBasicConfigurationWithPrefix( - MsEidasNodeConstants.PROP_CONFIG_SP_LIST_PREFIX); + MsEidasNodeConstants.PROP_CONFIG_SP_LIST_PREFIX + KeyValueUtils.KEY_DELIMITER); for (Entry<String, String> entry : allSPs.entrySet()) { if (entry.getKey().endsWith(MsEidasNodeConstants.PROP_CONFIG_SP_UNIQUEIDENTIFIER) && entry.getValue().equals(entityId)) { diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/ServiceProviderConfiguration.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/ServiceProviderConfiguration.java index 6f7eace3..362d0244 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/ServiceProviderConfiguration.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/ServiceProviderConfiguration.java @@ -57,12 +57,14 @@ public class ServiceProviderConfiguration extends SpConfigurationImpl { } + @Override public boolean hasBaseIdTransferRestriction() { final Boolean spConfigPolicy = isConfigurationValue( MsEidasNodeConstants.PROP_CONFIG_SP_POLICY_BASEIDTRANSFER_RESTRICTION); - if (spConfigPolicy != null) { + if (spConfigPolicy) { return spConfigPolicy; + } else { log.trace("SP configuration defines no baseID transfer restriction. Enforce default policy ..."); for (final String el : getTargetsWithNoBaseIdTransferRestriction()) { diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/SpringBootBasicConfigurationProvider.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/SpringBootBasicConfigurationProvider.java new file mode 100644 index 00000000..76e2c01f --- /dev/null +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/SpringBootBasicConfigurationProvider.java @@ -0,0 +1,122 @@ +package at.asitplus.eidas.specific.connector.config; + +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.lang3.StringUtils; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.idp.conf.AbstractSpringBootConfigurationImpl; +import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class SpringBootBasicConfigurationProvider extends AbstractSpringBootConfigurationImpl { + + private final Map<String, ISpConfiguration> spConfigCache = new HashMap<>(); + + @Override + public ISpConfiguration getServiceProviderConfiguration(String entityId) throws EaafConfigurationException { + if (!spConfigCache.containsKey(entityId)) { + log.debug("SP: " + entityId + " is NOT cached. Starting load operation ... "); + final Map<String, String> allSPs = getBasicConfigurationWithPrefix( + MsEidasNodeConstants.PROP_CONFIG_SP_LIST_PREFIX); + for (Entry<String, String> entry : allSPs.entrySet()) { + if (entry.getKey().endsWith(MsEidasNodeConstants.PROP_CONFIG_SP_UNIQUEIDENTIFIER) + && entry.getValue().equals(entityId)) { + final String listId = KeyValueUtils.getParentKey(entry.getKey()); + log.trace("Find SP configuration with list-Id: " + listId + + ". Extracting configuration elements ... "); + final Map<String, String> spConfig = KeyValueUtils.getSubSetWithPrefix(allSPs, listId + + KeyValueUtils.KEY_DELIMITER); + spConfigCache.put(entityId, + new ServiceProviderConfiguration(spConfig, this)); + break; + } + } + + if (spConfigCache.containsKey(entityId)) { + log.info("SP: " + entityId + " is loaded. Continuing auth. process ... "); + } else { + log.warn("SP: " + entityId + " is NOT found in configuration. Stopping auth. process ... "); + return null; + + } + + } else { + log.trace("SP: " + entityId + " is already cached. Use configuration from there ... "); + } + + return spConfigCache.get(entityId); + } + + @Override + public <T> T getServiceProviderConfiguration(String entityId, Class<T> decorator) + throws EaafConfigurationException { + final ISpConfiguration spConfig = getServiceProviderConfiguration(entityId); + if (spConfig != null && decorator != null) { + if (decorator.isInstance(spConfig)) { + return (T) spConfig; + } else { + log.error("SPConfig: " + spConfig.getClass().getName() + " is NOT instance of: " + decorator + .getName()); + } + + } + + return null; + + } + + @Override + public String validateIdpUrl(URL url) throws EaafException { + log.trace("Validate requested URL: " + url); + String urlPrefixFromConfig = getBasicConfiguration( + MsEidasNodeConstants.PROP_CONFIG_APPLICATION_PUBLIC_URL_PREFIX); + if (StringUtils.isEmpty(urlPrefixFromConfig)) { + log.warn("Application config containts NO URL prefix"); + throw new EaafConfigurationException("config.27", + new Object[] { "Application config containts NO " + + getApplicationSpecificKeyPrefix() + + MsEidasNodeConstants.PROP_CONFIG_APPLICATION_PUBLIC_URL_PREFIX }); + + } + + // remove last slash + if (urlPrefixFromConfig.endsWith("/")) { + urlPrefixFromConfig = urlPrefixFromConfig.substring(0, urlPrefixFromConfig.length() - 1); + } + + if (getBasicConfigurationBoolean( + MsEidasNodeConstants.PROP_CONFIG_APPLICATION_PUBLIC_URL_REQUEST_VALIDATION, false)) { + if (url != null && url.toExternalForm().startsWith(urlPrefixFromConfig)) { + return urlPrefixFromConfig; + } + + log.info("URL: " + url + " does NOT match to allowed application prefix: " + urlPrefixFromConfig); + return null; + + } else { + return urlPrefixFromConfig; + + } + } + + @Override + public String getApplicationSpecificKeyPrefix() { + return MsEidasNodeConstants.PROP_CONFIG_APPLICATION_PREFIX; + + } + + @Override + protected String getBackupConfigPath() { + return null; + + } + +} diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGuiBuilderImpl.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGuiBuilderImpl.java index 7abc6fcb..e7ebc92f 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGuiBuilderImpl.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGuiBuilderImpl.java @@ -33,7 +33,7 @@ import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiBuilderConfiguration; import at.gv.egiz.eaaf.core.exceptions.GuiBuildException; import at.gv.egiz.eaaf.core.impl.gui.AbstractVelocityGuiFormBuilderImpl; -@Service("DefaultVelocityGUIBuilderImpl") +@Service("velocityGUIBuilderImpl") public class DefaultVelocityGuiBuilderImpl extends AbstractVelocityGuiFormBuilderImpl { private static final Logger log = LoggerFactory.getLogger(DefaultVelocityGuiBuilderImpl.class); diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/StaticGuiBuilderConfiguration.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/StaticGuiBuilderConfiguration.java index 65000ffa..25f5beda 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/StaticGuiBuilderConfiguration.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/StaticGuiBuilderConfiguration.java @@ -117,7 +117,7 @@ public class StaticGuiBuilderConfiguration extends AbstractGuiFormBuilderConfigu @Override public void putCustomParameterWithOutEscaption(GroupDefinition group, String key, Object value) { - log.info("Add GUI-Template parameters WITHOUT escaption ARE NOT supported!!!!!"); + setViewParameter(getFromGroup(), key, value); } diff --git a/connector_lib/src/main/resources/common_gui.beans.xml b/connector_lib/src/main/resources/common_gui.beans.xml new file mode 100644 index 00000000..969a40f7 --- /dev/null +++ b/connector_lib/src/main/resources/common_gui.beans.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xmlns:task="http://www.springframework.org/schema/task" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd + http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> + + <bean id="contentNegotiationManager" + class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean" + primary="true"> + <property name="parameterName" value="mediaType" /> + <property name="defaultContentType" value="application/json" /> + <property name="useRegisteredExtensionsOnly" value="false" /> + <property name="mediaTypes"> + <map> + <entry key="json" value="application/json" /> + <entry key="html" value="text/html" /> + </map> + </property> + </bean> + + <bean + class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> + <property name="order" value="1" /> + <property name="defaultViews"> + <list> + <!-- JSON View --> + <bean + class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> + <property name="contentType" value="application/json" /> + </bean> + </list> + </property> + </bean> + + + <bean id="templateEngine" + class="org.thymeleaf.spring5.SpringTemplateEngine"> + <property name="templateResolver" ref="templateResolver" /> + </bean> + + <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> + <property name="order" value="2" /> + <property name="templateEngine" ref="templateEngine" /> + <property name="characterEncoding" value="UTF-8" /> + </bean> + + <bean id="valitatorWithI18nSupport" + class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> + <property name="validationMessageSource" + ref="messageSource" /> + </bean> + +</beans>
\ No newline at end of file diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java new file mode 100644 index 00000000..d1623b00 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java @@ -0,0 +1,156 @@ +package at.asitplus.eidas.specific.connector.test.config; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; +import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { + "/SpringTest-context_basic_realConfig.xml"}) +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +public class BasicConfigProviderTest { + + @Autowired private IConfigurationWithSP basicConfig; + + /** + * jUnit class initializer. + * + */ + @BeforeClass + public static void classInitializer() { + final String current = new java.io.File(".").toURI().toString(); + System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties"); + + } + + @Test + public void configPropInfos() { + Assert.assertEquals("size", 2, MsEidasNodeConstants.COUNTRY_SELECTION_PARAM_WHITELIST.size()); + + } + + @Test + public void loadSpNoExist() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( + RandomStringUtils.randomAlphabetic(5)); + Assert.assertNull("spConfig", spConfig); + + } + + @Test + public void loadSpConfigBasicMode() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration("jUnitTest1"); + + Assert.assertNotNull("spConfig", spConfig); + Assert.assertEquals("uniqueId", "jUnitTest1", spConfig.getUniqueIdentifier()); + Assert.assertEquals("friendlyName", "NO FRIENDLYNAME SET", spConfig.getFriendlyName()); + Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); + String test = RandomStringUtils.randomAlphabetic(5); + Assert.assertEquals("pvp2.password", "1234pass", + spConfig.getConfigurationValue("pvp2.metadata.truststore.password", test)); + Assert.assertEquals("eidMode", true, spConfig.isConfigurationValue("newEidMode")); + Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); + Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); + Assert.assertEquals("fullConfig", 4, spConfig.getFullConfiguration().size()); + + } + + @Test + public void loadSpConfigAdvancedMode() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", ServiceProviderConfiguration.class); + + Assert.assertNotNull("spConfig", spConfig); + Assert.assertEquals("uniqueId", "jUnitTest2", spConfig.getUniqueIdentifier()); + Assert.assertEquals("friendlyName", "jUnit tester 2", spConfig.getFriendlyName()); + Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); + String test = RandomStringUtils.randomAlphabetic(5); + Assert.assertEquals("pvp2.password", test, + spConfig.getConfigurationValue("pvp2.metadata.truststore.notexist", test)); + Assert.assertEquals("eidMode", false, spConfig.isConfigurationValue("newEidMode")); + Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); + Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); + Assert.assertEquals("fullConfig", 5, spConfig.getFullConfiguration().size()); + Assert.assertFalse("baseIdInternal", spConfig.hasBaseIdInternalProcessingRestriction()); + Assert.assertTrue("baseIdTransfer", spConfig.hasBaseIdTransferRestriction()); + + } + + @Test + public void loadSpConfigAdvancedModeWrongDecorator() throws EaafConfigurationException { + ISpConfiguration spConfig1 = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", null); + Assert.assertNull("spConfig", spConfig1); + + String spConfig2 = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", String.class); + Assert.assertNull("spConfig", spConfig2); + + } + + @Test + public void loadConfigValuesString() { + Assert.assertEquals("without default", "ownSpecificConnector", + basicConfig.getBasicConfiguration("auth.eIDAS.node_v2.entityId")); + + Assert.assertEquals("with default", "", + basicConfig.getBasicConfiguration("auth.eIDAS.szrclient.endpoint.prod", + RandomStringUtils.randomAlphabetic(5))); + + String rand1 = RandomStringUtils.randomAlphanumeric(5); + Assert.assertEquals("unknown with default", rand1, + basicConfig.getBasicConfiguration("notexist", rand1)); + + } + + @Test + public void loadConfigValuesBoolean() { + Assert.assertEquals("without default", true, + basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.useTestService")); + + Assert.assertEquals("with default", false, + basicConfig.getBasicConfigurationBoolean("auth.notexist", + false)); + + Assert.assertEquals("unknown with default", false, + basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.params.vkz", true)); + + } + + @Test + public void loadConfigMap() { + Map<String, String> entries = basicConfig.getBasicConfigurationWithPrefix("auth.eIDAS.szrclient"); + Assert.assertEquals("wrong size", 16, entries.size()); + Assert.assertTrue("missing element", entries.containsKey("endpoint.test")); + Assert.assertEquals("wrong entry", "http://localhost:1234/demoszr", entries.get("endpoint.test")); + + } + + @Test + public void validateUrl() throws MalformedURLException, EaafException { + Assert.assertEquals("wrong URL", "http://localhost/test", + basicConfig.validateIdpUrl(new URL("http://localhost/test/" + RandomStringUtils.randomAlphabetic(5)))); + + Assert.assertNull("wrong URL", + basicConfig.validateIdpUrl(new URL("http://localhost/wrong/" + RandomStringUtils.randomAlphabetic(5)))); + + } +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java new file mode 100644 index 00000000..d95e2882 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java @@ -0,0 +1,54 @@ +package at.asitplus.eidas.specific.connector.test.config; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.BlockJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafException; + +@RunWith(BlockJUnit4ClassRunner.class) +public class ServiceProviderConfigurationTest { + + + + @Test + public void spConfigLoad() throws EaafException { + IConfiguration authConfig = new MsConnectorDummyConfigMap(); + + Map<String, String> map = new HashMap<>(); + map.put("uniqueID", RandomStringUtils.randomAlphabetic(10)); + map.put("policy.allowed.requested.targets", "urn:publicid:gv.at:cdid\\+.*"); + + ServiceProviderConfiguration spConfig = new ServiceProviderConfiguration(map, authConfig); + + spConfig.setRequiredLoA(Arrays.asList(EaafConstants.EIDAS_LOA_LOW)); + Assert.assertEquals("LoA", 1, spConfig.getRequiredLoA().size()); + Assert.assertEquals("LoA", "http://eidas.europa.eu/LoA/low", spConfig.getRequiredLoA().get(0)); + + spConfig.setLoAMachtingMode("exact"); + Assert.assertEquals("wrong machtingMode", "exact", spConfig.getLoAMatchingMode()); + + String bpkTarget = EaafConstants.URN_PREFIX_CDID + RandomStringUtils.randomAlphabetic(2); + spConfig.setBpkTargetIdentifier(bpkTarget); + Assert.assertEquals("wrong bPK", bpkTarget, spConfig.getAreaSpecificTargetIdentifier()); + + + try { + spConfig.setBpkTargetIdentifier(EaafConstants.URN_PREFIX_WBPK + RandomStringUtils.randomAlphabetic(2)); + + } catch (EaafException e) { + Assert.assertEquals("ErrorId", "auth.37", e.getErrorId()); + } + + } +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/SpringBootBasicConfigurationProviderTest.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/SpringBootBasicConfigurationProviderTest.java new file mode 100644 index 00000000..4e7e7dd2 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/SpringBootBasicConfigurationProviderTest.java @@ -0,0 +1,148 @@ +package at.asitplus.eidas.specific.connector.test.config; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; +import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { + "/SpringTest-context_basic_realConfig.xml"}) +@TestPropertySource(locations = { "/config/junit_config_1.properties" }) +@ActiveProfiles("springBoot") +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +public class SpringBootBasicConfigurationProviderTest { + + @Autowired private IConfigurationWithSP basicConfig; + + @Test + public void configPropInfos() { + Assert.assertEquals("size", 2, MsEidasNodeConstants.COUNTRY_SELECTION_PARAM_WHITELIST.size()); + + } + + @Test + public void loadSpNoExist() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( + RandomStringUtils.randomAlphabetic(5)); + Assert.assertNull("spConfig", spConfig); + + } + + @Test + public void loadSpConfigBasicMode() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration("jUnitTest1"); + + Assert.assertNotNull("spConfig", spConfig); + Assert.assertEquals("uniqueId", "jUnitTest1", spConfig.getUniqueIdentifier()); + Assert.assertEquals("friendlyName", "NO FRIENDLYNAME SET", spConfig.getFriendlyName()); + Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); + String test = RandomStringUtils.randomAlphabetic(5); + Assert.assertEquals("pvp2.password", "1234pass", + spConfig.getConfigurationValue("pvp2.metadata.truststore.password", test)); + Assert.assertEquals("eidMode", true, spConfig.isConfigurationValue("newEidMode")); + Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); + Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); + Assert.assertEquals("fullConfig", 4, spConfig.getFullConfiguration().size()); + + } + + @Test + public void loadSpConfigAdvancedMode() throws EaafConfigurationException { + ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", ServiceProviderConfiguration.class); + + Assert.assertNotNull("spConfig", spConfig); + Assert.assertEquals("uniqueId", "jUnitTest2", spConfig.getUniqueIdentifier()); + Assert.assertEquals("friendlyName", "jUnit tester 2", spConfig.getFriendlyName()); + Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); + String test = RandomStringUtils.randomAlphabetic(5); + Assert.assertEquals("pvp2.password", test, + spConfig.getConfigurationValue("pvp2.metadata.truststore.notexist", test)); + Assert.assertEquals("eidMode", false, spConfig.isConfigurationValue("newEidMode")); + Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); + Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); + Assert.assertEquals("fullConfig", 5, spConfig.getFullConfiguration().size()); + Assert.assertFalse("baseIdInternal", spConfig.hasBaseIdInternalProcessingRestriction()); + Assert.assertTrue("baseIdTransfer", spConfig.hasBaseIdTransferRestriction()); + + } + + @Test + public void loadSpConfigAdvancedModeWrongDecorator() throws EaafConfigurationException { + ISpConfiguration spConfig1 = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", null); + Assert.assertNull("spConfig", spConfig1); + + String spConfig2 = basicConfig.getServiceProviderConfiguration( + "jUnitTest2", String.class); + Assert.assertNull("spConfig", spConfig2); + + } + + @Test + public void loadConfigValuesString() { + Assert.assertEquals("without default", "ownSpecificConnector", + basicConfig.getBasicConfiguration("auth.eIDAS.node_v2.entityId")); + + Assert.assertEquals("with default", "", + basicConfig.getBasicConfiguration("auth.eIDAS.szrclient.endpoint.prod", + RandomStringUtils.randomAlphabetic(5))); + + String rand1 = RandomStringUtils.randomAlphanumeric(5); + Assert.assertEquals("unknown with default", rand1, + basicConfig.getBasicConfiguration("notexist", rand1)); + + } + + @Test + public void loadConfigValuesBoolean() { + Assert.assertEquals("without default", true, + basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.useTestService")); + + Assert.assertEquals("not exist with default", false, + basicConfig.getBasicConfigurationBoolean("auth.notexist", + false)); + + Assert.assertEquals("exist but empty with default", true, + basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.params.vkz", true)); + + } + + @Test + public void loadConfigMap() { + Map<String, String> entries = basicConfig.getBasicConfigurationWithPrefix("auth.eIDAS.szrclient"); + Assert.assertEquals("wrong size", 16, entries.size()); + Assert.assertTrue("missing element", entries.containsKey("endpoint.test")); + Assert.assertEquals("wrong entry", "http://localhost:1234/demoszr", entries.get("endpoint.test")); + + } + + @Test + public void validateUrl() throws MalformedURLException, EaafException { + Assert.assertEquals("wrong URL", "http://localhost/test", + basicConfig.validateIdpUrl(new URL("http://localhost/test/" + RandomStringUtils.randomAlphabetic(5)))); + + Assert.assertNull("wrong URL", + basicConfig.validateIdpUrl(new URL("http://localhost/wrong/" + RandomStringUtils.randomAlphabetic(5)))); + + } +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java new file mode 100644 index 00000000..42e31377 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java @@ -0,0 +1,112 @@ +package at.asitplus.eidas.specific.connector.test.config.dummy; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import at.gv.egiz.eaaf.core.test.dummy.DummyAuthConfigMap; +import lombok.Setter; + +/** + * MS-Connector specific dummy basic-config implementation. + * + * @author tlenz + * + */ +public class MsConnectorDummyConfigMap extends DummyAuthConfigMap { + + private static final String CONFIG_PREFIX = "eidas.ms."; + + @Setter + private String configRootDirSufix; + + /** + * Creates an emptry configuration. + * + */ + public MsConnectorDummyConfigMap() { + + } + + /** + * Dummy Application-configuration. + * + * @param configIs Property based configuration + * @throws IOException In case of an configuration read error + */ + public MsConnectorDummyConfigMap(final InputStream configIs) throws IOException { + super(configIs); + + } + + /** + * Dummy Application-configuration. + * + * @param path Path to property based configuration + * @throws IOException In case of an configuration read error + */ + public MsConnectorDummyConfigMap(final String path) throws IOException { + super(path); + + } + + + @Override + public String getBasicConfiguration(final String key) { + return super.getBasicConfiguration(addPrefixToKey(key)); + + } + + @Override + public Map<String, String> getBasicConfigurationWithPrefix(final String prefix) { + return super.getBasicConfigurationWithPrefix(addPrefixToKey(prefix)); + + } + + @Override + public void putConfigValue(final String key, final String value) { + super.putConfigValue(addPrefixToKey(key), value); + } + + @Override + public void removeConfigValue(final String key) { + super.removeConfigValue(addPrefixToKey(key)); + + } + + @Override + public URI getConfigurationRootDirectory() { + URI basePath = super.getConfigurationRootDirectory(); + if (StringUtils.isNotEmpty(configRootDirSufix)) { + try { + return new URI(basePath.toString() + configRootDirSufix); + + } catch (URISyntaxException e) { + throw new RuntimeException("Wrong Dummyconfig", e); + + } + + } else { + return basePath; + + } + + + } + + private String addPrefixToKey(final String key) { + if (key.startsWith(CONFIG_PREFIX)) { + return key; + + } else { + return CONFIG_PREFIX + key; + + } + } + + +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java new file mode 100644 index 00000000..b379080d --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java @@ -0,0 +1,28 @@ +package at.asitplus.eidas.specific.connector.test.config.dummy; + +import java.util.List; +import java.util.Map; + +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; +import lombok.Setter; + +public class MsConnectorDummySpConfiguration extends DummySpConfiguration { + + private static final long serialVersionUID = -3249018889871026127L; + + @Setter + private List<String> loa; + + public MsConnectorDummySpConfiguration(Map<String, String> spConfig, IConfiguration authConfig) { + super(spConfig, authConfig); + + } + + @Override + public List<String> getRequiredLoA() { + return loa; + + } + +} diff --git a/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml b/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml new file mode 100644 index 00000000..fbc4640a --- /dev/null +++ b/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + + <context:annotation-config /> + + <beans profile="!springBoot"> + <bean id="BasicMSSpecificNodeConfig" + class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider"> + <constructor-arg value="#{systemProperties['eidas.ms.configuration']}" /> + </bean> + </beans> + <beans profile="springBoot"> + <bean id="springBootMsSpecificNodeConfig" + class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" /> + </beans> + +</beans>
\ No newline at end of file diff --git a/connector_lib/src/test/resources/config/junit_config_1.properties b/connector_lib/src/test/resources/config/junit_config_1.properties new file mode 100644 index 00000000..160725d4 --- /dev/null +++ b/connector_lib/src/test/resources/config/junit_config_1.properties @@ -0,0 +1,124 @@ +## Basic service configuration +eidas.ms.context.url.prefix=http://localhost/test/ +eidas.ms.context.url.request.validation=true +eidas.ms.core.configRootDir=file:./src/test/resources/config/ + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + + +##Specific logger configuration +eidas.ms.technicallog.write.MDS.into.techlog=true +eidas.ms.revisionlog.write.MDS.into.revisionlog=true +eidas.ms.revisionlog.logIPAddressOfUser=true + +##Directory for static Web content +eidas.ms.webcontent.static.directory=webcontent/ +eidas.ms.webcontent.templates=templates/ +eidas.ms.webcontent.properties=properties/messages + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.maxlifetime=300 +eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +eidas.ms.auth.eIDAS.node_v2.forward.endpoint= +eidas.ms.auth.eIDAS.node_v2.forward.method=POST +eidas.ms.auth.eIDAS.node_v2.countrycode=AT +eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=true +eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs=myNode + +eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/..... +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= +eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 +eidas.ms.auth.eIDAS.szrclient.timeout.response=30 +eidas.ms.auth.eIDAS.szrclient.params.vkz= + +eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false + + +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=./../keystore/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true + +eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true +eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true + +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=true + +##without mandates +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true + +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.4=PlaceOfBirth,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.5=BirthName,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.6=Gender,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.7=CurrentAddress,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.8=testtest,false + +##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.path=keys/..... +eidas.ms.pvp2.keystore.password= +eidas.ms.pvp2.key.metadata.alias= +eidas.ms.pvp2.key.metadata.password= +eidas.ms.pvp2.key.signing.alias= +eidas.ms.pvp2.key.signing.password= +eidas.ms.pvp2.metadata.validity=24 + +## Service Provider configuration +eidas.ms.sp.0.uniqueID=jUnitTest1 +eidas.ms.sp.0.pvp2.metadata.truststore= +eidas.ms.sp.0.pvp2.metadata.truststore.password=1234pass +eidas.ms.sp.0.newEidMode=true + +eidas.ms.sp.1.uniqueID=jUnitTest2 +eidas.ms.sp.1.friendlyName=jUnit tester 2 +eidas.ms.sp.1.pvp2.metadata.truststore= +eidas.ms.sp.1.pvp2.metadata.truststore.password= +eidas.ms.sp.1.newEidMode=false + +#eidas.ms.sp.0.friendlyName= +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + + +##only for advanced config +eidas.ms.configuration.sp.disableRegistrationRequirement= +eidas.ms.configuration.restrictions.baseID.spTransmission= +eidas.ms.configuration.auth.default.countrycode= +eidas.ms.configuration.pvp.scheme.validation= +eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml b/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..375f73f4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> + <Match> + <!-- Do not check code generated by Apache CXF framework --> + <Class name="~szrservices.SZRException"/> + </Match> + <Match> + <!-- Logging of SAML2 responses in case of errors or for debugging is allowed --> + <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet" /> + <Method name="getPendingRequestId" /> + <Bug pattern="CRLF_INJECTION_LOGS" /> + </Match> + <Match> + <!-- CSFR protection is implemented by pendingRequestId that is an one-time token --> + <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet" /> + <Method name="restoreEidasAuthProcess" /> + <Bug pattern="SPRING_CSRF_UNRESTRICTED_REQUEST_MAPPING" /> + </Match> + <Match> + <!-- File path is only loaded from configuration --> + <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry" /> + <Method name="initialize" /> + <Bug pattern="PATH_TRAVERSAL_IN" /> + </Match> + <Match> + <!-- Redirect URL is only loaded from configuration --> + <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask" /> + <Method name="execute" /> + <Bug pattern="UNVALIDATED_REDIRECT" /> + </Match> +</FindBugsFilter> diff --git a/eidas_modules/authmodule-eIDAS-v2/pom.xml b/eidas_modules/authmodule-eIDAS-v2/pom.xml index b2e841fb..4f3133f8 100644 --- a/eidas_modules/authmodule-eIDAS-v2/pom.xml +++ b/eidas_modules/authmodule-eIDAS-v2/pom.xml @@ -13,14 +13,6 @@ <name>eIDAS v2 authentication module</name> <description>eIDAS module based on eIDAS node reference implementation v2.x</description> - <properties> - <eidas-commons.version>2.4.0</eidas-commons.version> - <eidas-light-commons.version>2.4.0</eidas-light-commons.version> - <eidas-specific-communication-definition.version>2.4.0</eidas-specific-communication-definition.version> - <eidas-jcache-ignite-specific-communication.version>2.4.0</eidas-jcache-ignite-specific-communication.version> - <org.xerial.sqlite-jdbc.version>3.23.1</org.xerial.sqlite-jdbc.version> - </properties> - <profiles> <profile> <id>default</id> @@ -62,8 +54,6 @@ <dependency> <groupId>eu.eidas</groupId> <artifactId>eidas-commons</artifactId> - <version>${eidas-commons.version}</version> - <!--scope>provided</scope --> <exclusions> <exclusion> <groupId>log4j</groupId> @@ -79,19 +69,16 @@ <dependency> <groupId>eu.eidas</groupId> <artifactId>eidas-light-commons</artifactId> - <version>${eidas-light-commons.version}</version> </dependency> <dependency> <groupId>eu.eidas</groupId> <artifactId>eidas-specific-communication-definition</artifactId> - <version>${eidas-specific-communication-definition.version}</version> </dependency> <dependency> <groupId>eu.eidas</groupId> <artifactId>eidas-jcache-ignite-specific-communication</artifactId> - <version>${eidas-jcache-ignite-specific-communication.version}</version> </dependency> <!-- other third party libs --> @@ -162,6 +149,14 @@ <version>2.0.7</version> <scope>test</scope> </dependency> + + <dependency> + <groupId>at.asitplus.eidas.ms_specific</groupId> + <artifactId>connector_lib</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> <groupId>at.gv.egiz.eaaf</groupId> <artifactId>eaaf_core_utils</artifactId> @@ -251,22 +246,37 @@ <plugin> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> + <version>${spotbugs-maven-plugin.version}</version> + <configuration> + <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> + </configuration> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> - <id>spotbugs_validate</id> + <id>post-unit-check</id> <phase>test</phase> <goals> <goal>check</goal> + <goal>report</goal> </goals> + <configuration> + <haltOnFailure>false</haltOnFailure> + <excludes> + <exclude>**/at/gv/e_government/reference/namespace/persondata/_20020228/*</exclude> + <exclude>**/org/w3/_2000/_09/*</exclude> + <exclude>**/org/w3/_2001/_04/*</exclude> + <exclude>**/szrservices/*</exclude> + <exclude>**/generated/cxf/*</exclude> + </excludes> + </configuration> </execution> </executions> - <configuration> - <failOnError>true</failOnError> - <excludeFilterFile>spotbugs_exclude.xml</excludeFilterFile> - </configuration> </plugin> - <!-- enable co-existence of testng and junit --> <plugin> <artifactId>maven-surefire-plugin</artifactId> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/2.5.0/eidas-parent-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/2.5.0/eidas-parent-2.5.0.pom new file mode 100644 index 00000000..38321046 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/2.5.0/eidas-parent-2.5.0.pom @@ -0,0 +1,898 @@ +<!-- + ~ Copyright (c) 2020 by European Commission + ~ + ~ Licensed under the EUPL, Version 1.2 or - as soon they will be + ~ approved by the European Commission - subsequent versions of the + ~ EUPL (the "Licence"); + ~ You may not use this work except in compliance with the Licence. + ~ You may obtain a copy of the Licence at: + ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the Licence is distributed on an "AS IS" basis, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + ~ implied. + ~ See the Licence for the specific language governing permissions and + ~ limitations under the Licence. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 + http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>eu.eidas</groupId> + <artifactId>eidas-parent</artifactId> + <packaging>pom</packaging> + <name>eIDAS Node Parent</name> + <version>2.5.0</version> + <description> + The EIDAS-Parent provides artifacts versions for Eidas Node components. + </description> + <properties> + <!-- 1) Project properties --> + <proj.name>EIDASParent</proj.name> + <proj.name.eidas>EidasNode</proj.name.eidas> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <app.packaging.type>war</app.packaging.type> + <mod.packaging.type>jar</mod.packaging.type> + <timestamp>${maven.build.timestamp}</timestamp> + <!-- java version targeted in the compile phase --> + <java.version>1.8</java.version> + + <samlspec.version>0.5.2</samlspec.version> + <samlspecacept.version>0.5.1</samlspecacept.version> + + <!-- 2) Library dependency versions --> + <spring.version>4.3.18.RELEASE</spring.version> + <opensaml.not-yet-commons-ssl.version>0.3.9</opensaml.not-yet-commons-ssl.version> + <opensaml.openws.version>1.5.5</opensaml.openws.version> + <opensaml.version>3.4.3</opensaml.version> + <opensaml.api.version>3.4.3</opensaml.api.version> + <opensaml-security-ext.version>1.0.7</opensaml-security-ext.version> + <xmlsec.version>2.1.4</xmlsec.version> + <!--shibboleth.xmlsupport.version>8.0-SNAPSHOT</shibboleth.xmlsupport.version--> + <shibboleth.xmlsupport.version>7.5.0</shibboleth.xmlsupport.version> + <servlet.version>3.0.1</servlet.version> + <jsp.api>2.0</jsp.api> + <jstl.version>1.2.6</jstl.version> + <jasper.version>6.0.53</jasper.version> + <slf4j.version>1.7.10</slf4j.version> + <logback.version>1.2.0</logback.version> + <mockito.version>2.13.0</mockito.version> + <junit.version>4.12</junit.version> + <hamcrest.version>1.3</hamcrest.version> + <commons.codec>1.9</commons.codec> + <commons.collections>3.2.2</commons.collections> + <commons.io>2.4</commons.io> + <commons.lang>2.6</commons.lang> + <commons.logging>1.1.3</commons.logging> + <commons.httpclient>4.5.13</commons.httpclient> + <commons.httpcore>4.4.9</commons.httpcore> + <commons.lang3>3.1</commons.lang3> + <bouncycastle.version>1.64</bouncycastle.version> + <owasp.version>1.1.1</owasp.version> + <owasp.dependency-check.version>1.4.0</owasp.dependency-check.version> + <joda.time.version>2.6</joda.time.version> + <log4j.version>1.2.17</log4j.version> + <log4j.api>2.3</log4j.api> + <xmlunit.version>1.5</xmlunit.version> + <bdr.econnector.version>1.2.2</bdr.econnector.version> + <struts.version>2.3.34</struts.version> + <!--<icu4j.version>55.1</icu4j.version>--> + <vaadin.version>7.4.2</vaadin.version> + <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version> + <vaadin-spring.version>1.0.0.beta1</vaadin-spring.version> + <vaadin4spring.version>0.0.5.RELEASE</vaadin4spring.version> + <jetty.plugin.version>9.2.3.v20140905</jetty.plugin.version> + <guava.version>28.1-jre</guava.version> + <jsr305.version>3.0.1</jsr305.version> + <icu4j.version>57.1</icu4j.version> + + <!-- 3) maven plugin versions --> + <javadoc.plugin.version>2.8.1</javadoc.plugin.version> + <compile.plugin.version>2.3.2</compile.plugin.version> + <surefire.plugin.version>2.19.1</surefire.plugin.version> + <war.plugin.version>3.2.0</war.plugin.version> + <ear.plugin.version>2.7</ear.plugin.version> + <resources.plugin.version>2.4</resources.plugin.version> + <cobertura.plugin.version>2.7</cobertura.plugin.version> + <remote.resources.plugin.version>1.5</remote.resources.plugin.version> + <source.plugin.version>2.1.2</source.plugin.version> + <install.plugin.version>2.5.2</install.plugin.version> + <clean.plugin.version>2.6.1</clean.plugin.version> + <maven.jar.plugin.version>3.1.2</maven.jar.plugin.version> + <jaxb.plugin.version>2.3.1</jaxb.plugin.version> + </properties> + + <dependencyManagement> + <dependencies> + <!-- eIDAS modules --> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>SimpleProtocol</artifactId> + <version>0.0.3</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-commons</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-light-commons</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-configmodule</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-encryption</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-saml-engine</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-updater</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-saml-metadata</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-connector</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-proxyservice</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-communication-definition</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-sp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-idp</artifactId> + <version>${project.version}</version> + </dependency> + <!-- Joda --> + <dependency> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + <version>${joda.time.version}</version> + </dependency> + <!-- SLF4J logging --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>log4j-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>${slf4j.version}</version> + </dependency> + <!-- commons-logging --> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>${commons.logging}</version> + </dependency> + <!-- Log4J --> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>${log4j.version}</version> + <exclusions> + <exclusion> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + </exclusion> + <exclusion> + <groupId>com.sun.jdmk</groupId> + <artifactId>jmxtools</artifactId> + </exclusion> + <exclusion> + <groupId>com.sun.jmx</groupId> + <artifactId>jmxri</artifactId> + </exclusion> + <exclusion> + <artifactId>mail</artifactId> + <groupId>javax.mail</groupId> + </exclusion> + </exclusions> + </dependency> + <!-- LogBack --> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${logback.version}</version> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- Bouncy Castle --> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + <version>${bouncycastle.version}</version> + <!-- Wildfly issue: please keep provided as the default scope for all the components of the project and override it if needed --> + <scope>provided</scope> + </dependency> + <!-- Apache Commons --> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>${commons.codec}</version> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>${commons.collections}</version> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>${commons.httpclient}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>${commons.httpcore}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>${commons.io}</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>${commons.lang}</version> + </dependency> + <dependency> + <groupId>org.owasp.encoder</groupId> + <artifactId>encoder</artifactId> + <version>${owasp.version}</version> + </dependency> + <dependency> + <groupId>org.owasp.encoder</groupId> + <artifactId>encoder-jsp</artifactId> + <version>${owasp.version}</version> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>${guava.version}</version> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <version>${jsr305.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-core</artifactId> + <version>${opensaml.version}</version> + <exclusions> + <exclusion> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </exclusion> + <exclusion> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </exclusion> + <exclusion> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + </exclusion> + <exclusion> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + </exclusion> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>log4j-over-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-saml-api</artifactId> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-saml-impl</artifactId> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>se.swedenconnect.opensaml</groupId> + <artifactId>opensaml-security-ext</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml-security-ext.version}</version> + </dependency> + <dependency> + <groupId>net.shibboleth.utilities</groupId> + <artifactId>java-support</artifactId> + <version>${shibboleth.xmlsupport.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-xmlsec-api</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>${servlet.version}</version> + <scope>provided</scope> + </dependency> + <!-- JSP --> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jsp-api</artifactId> + <version>${jsp.api}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.web</groupId> + <artifactId>jakarta.servlet.jsp.jstl</artifactId> + <version>${jstl.version}</version> + <scope>runtime</scope> + </dependency> + <!-- Spring --> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context-support</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-web</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + <version>${xalan.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-xmlsec-impl</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml.version}</version> + </dependency> + <!-- EIDINT-4171: Override of opensaml-xmlsec-impl sub dependency --> + <dependency> + <groupId>org.apache.santuario</groupId> + <artifactId>xmlsec</artifactId> + <version>${xmlsec.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.apache.tomcat/jasper-el --> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>jasper-el</artifactId> + <version>${jasper.version}</version> + </dependency> + <!-- Struts2 --> + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-core</artifactId> + <version>${struts.version}</version> + </dependency> + <!-- ICU --> + <dependency> + <groupId>com.ibm.icu</groupId> + <artifactId>icu4j</artifactId> + <version>${icu4j.version}</version> + </dependency> + + <!-- UNIT TEST Dependencies --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + <version>${hamcrest.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${mockito.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + <version>${xmlunit.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>${spring.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <!-- Dependencies in common for all modules --> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + </dependency> + + <!-- UNIT TEST Dependencies in common for all modules --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <exclusions> + <exclusion> + <artifactId>hamcrest-core</artifactId> + <groupId>org.hamcrest</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <exclusions> + <exclusion> + <artifactId>hamcrest-core</artifactId> + <groupId>org.hamcrest</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + </dependency> + </dependencies> + + <build> + <pluginManagement> + <plugins> + + <plugin> + <groupId>com.orctom.mojo</groupId> + <artifactId>was-maven-plugin</artifactId> + <version>1.0.8</version> + <configuration> + <wasHome>c:/pgm/wlp</wasHome> + <applicationName>${proj.name}</applicationName> + <host>localhost</host> + <server>server01</server> + <node>node01</node> + <virtualHost>default_host</virtualHost> + <verbose>true</verbose> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.tomcat.maven</groupId> + <artifactId>tomcat7-maven-plugin</artifactId> + <version>2.2</version> + <configuration> + <url>http://localhost:8080/manager/text</url> + <server>tomcat</server> + <path>/${proj.name}</path> + <username>admin</username> + <password>admin</password> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>${war.plugin.version}</version> + <configuration> + <webResources> + <resource> + <directory>${project.basedir}/src/main/webapp/WEB-INF</directory> + <filtering>true</filtering> + <targetPath>WEB-INF</targetPath> + <includes> + <include>**/web.xml</include> + </includes> + </resource> + </webResources> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>${source.plugin.version}</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>verify</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <version>${cobertura.plugin.version}</version> + <configuration> + <formats> + <format>html</format> + <format>xml</format> + </formats> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxb2-maven-plugin</artifactId> + <version>${jaxb.plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>${resources.plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>${maven.jar.plugin.version}</version> + </plugin> + <!--plugin> + <groupId>org.owasp</groupId> + <artifactId>dependency-check-maven</artifactId> + <version>${owasp.dependency-check.version}</version> + <configuration> + <failBuildOnCVSS>8</failBuildOnCVSS> + </configuration> + <executions> + <execution> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin--> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${compile.plugin.version}</version> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${surefire.plugin.version}</version> + <configuration> + <skip>false</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${javadoc.plugin.version}</version> + <configuration> + <detectLinks>true</detectLinks> + </configuration> + </plugin> + </plugins> + </build> + <modules> + <module>../EIDAS-Light-Commons</module> + <module>../EIDAS-Commons</module> + <module>../EIDAS-ConfigModule</module> + <module>../EIDAS-Encryption</module> + <module>../EIDAS-Metadata</module> + <module>../EIDAS-SpecificCommunicationDefinition</module> + <!--start of TODO remove when/if EIDAS-Node pom does not depend on eidas-jcache-dev-node artifact to test--> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Node</module> + <!--TODOEND--> + </modules> + <profiles> + <profile> + <id>NodeOnly</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-SAMLEngine</module> + <module>../EIDAS-UPDATER</module> + <module>../EIDAS-Node</module> + </modules> + </profile> + <profile> + <id>DemoToolsOnly</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <modules> + <module>../EIDAS-SimpleProtocol</module> + <module>../EIDAS-SpecificProxyService</module> + <module>../EIDAS-SpecificConnector</module> + <module>../EIDAS-SP</module> + <module>../EIDAS-IdP-1.0</module> + </modules> + </profile> + <profile> + <id>nodeJcacheIgnite</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Ignite</module> + <module>../EIDAS-JCache-Ignite-Node</module> + </modules> + </profile> + <profile> + <id>nodeJcacheHazelcast</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Hazelcast</module> + <module>../EIDAS-JCache-Hazelcast-Node</module> + </modules> + </profile> + <profile> + <id>nodeJcacheDev</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Node</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheIgnite</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Ignite</module> + <module>../EIDAS-JCache-Ignite-Specific-Communication</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheHazelcast</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Hazelcast</module> + <module>../EIDAS-JCache-Hazelcast-Specific-Communication</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheDev</id> + <activation> + <activeByDefault>false</activeByDefault> + <property> + <name>specificJar</name> + </property> + </activation> + <modules> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Specific-Communication</module> + </modules> + </profile> + </profiles> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-javadoc.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-javadoc.jar Binary files differnew file mode 100644 index 00000000..dd667cd9 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-javadoc.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-sources.jar Binary files differnew file mode 100644 index 00000000..8b6d3da3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.jar Binary files differnew file mode 100644 index 00000000..8439b264 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.pom new file mode 100644 index 00000000..ac302325 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.pom @@ -0,0 +1,101 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>eidas-commons</artifactId> + <packaging>${mod.packaging.type}</packaging> + <name>eIDAS Commons</name> + <description> + The EIDASCommons library provides beans, Java Interfaces and utility classes to integrate EidasNode and SAML + Engine. + </description> + <parent> + <groupId>eu.eidas</groupId> + <artifactId>eidas-parent</artifactId> + <version>2.5.0</version> + <relativePath>../EIDAS-Parent/pom.xml</relativePath> + </parent> + <dependencies> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-light-commons</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </dependency> + <!-- Bouncy Castle --> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + </dependency> + <dependency> + <groupId>org.owasp.encoder</groupId> + <artifactId>encoder</artifactId> + </dependency> + <dependency> + <groupId>javax.cache</groupId> + <artifactId>cache-api</artifactId> + <version>1.1.0</version> + </dependency> + <!-- TEST --> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>aopalliance</groupId> + <artifactId>aopalliance</artifactId> + <version>1.0</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <resources> + <resource> + <directory>${project.basedir}/src/main/resources</directory> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + </plugin> + </plugins> + <testResources> + <testResource> + <directory>src/test/resources</directory> + <includes> + <include>log4j.xml</include> + <include>*.properties</include> + </includes> + </testResource> + </testResources> + </build> + <profiles> + <profile> + <id>metrics</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + </plugins> + </reporting> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-javadoc.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-javadoc.jar Binary files differnew file mode 100644 index 00000000..68bd2496 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-javadoc.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-sources.jar Binary files differnew file mode 100644 index 00000000..cb518da2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.jar Binary files differnew file mode 100644 index 00000000..5e190e0b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.pom new file mode 100644 index 00000000..809d00e4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.pom @@ -0,0 +1,61 @@ +<!--
+ ~ Copyright (c) 2020 by European Commission
+ ~
+ ~ Licensed under the EUPL, Version 1.2 or - as soon they will be
+ ~ approved by the European Commission - subsequent versions of the
+ ~ EUPL (the "Licence");
+ ~ You may not use this work except in compliance with the Licence.
+ ~ You may obtain a copy of the Licence at:
+ ~ https://joinup.ec.europa.eu/page/eupl-text-11-12
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the Licence is distributed on an "AS IS" basis,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ ~ implied.
+ ~ See the Licence for the specific language governing permissions and
+ ~ limitations under the Licence
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>eidas-jcache-ignite-specific-communication</artifactId>
+ <packaging>jar</packaging>
+ <name>eIDAS JCache Ignite Specific Communication</name>
+ <description>Implements JCache using Ignite with Specific Communication Definition's beans configurations.</description>
+
+ <parent>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-parent</artifactId>
+ <version>2.5.0</version>
+ <relativePath>../EIDAS-Parent/pom.xml</relativePath>
+ </parent>
+
+ <properties>
+ <ignite.version>2.8.1</ignite.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-jcache-ignite</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-slf4j</artifactId>
+ <version>${ignite.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-javadoc.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-javadoc.jar Binary files differnew file mode 100644 index 00000000..34d86914 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-javadoc.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-sources.jar Binary files differnew file mode 100644 index 00000000..44b56b3b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.jar Binary files differnew file mode 100644 index 00000000..f055b5e8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.pom new file mode 100644 index 00000000..5e4d6b05 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.pom @@ -0,0 +1,94 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>eidas-jcache-ignite</artifactId>
+ <packaging>jar</packaging>
+ <name>eIDAS JCache Ignite</name>
+ <description>Implements JCache using Ignite.</description>
+
+ <parent>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-parent</artifactId>
+ <version>2.5.0</version>
+ <relativePath>../EIDAS-Parent/pom.xml</relativePath>
+ </parent>
+
+ <properties>
+ <ignite.version>2.8.1</ignite.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-commons</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-core</artifactId>
+ <version>${ignite.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.gridgain</groupId>
+ <artifactId>ignite-shmem</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-spring</artifactId>
+ <version>${ignite.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-indexing</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-expression</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-slf4j</artifactId>
+ <version>${ignite.version}</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-javadoc.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-javadoc.jar Binary files differnew file mode 100644 index 00000000..6f521268 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-javadoc.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-sources.jar Binary files differnew file mode 100644 index 00000000..3e90e3af --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.jar Binary files differnew file mode 100644 index 00000000..de5a51b1 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.pom new file mode 100644 index 00000000..ad62ebda --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.pom @@ -0,0 +1,55 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>eidas-light-commons</artifactId> + <packaging>${mod.packaging.type}</packaging> + <name>eIDAS Light Commons</name> + <description> + The EIDASLightCommons library provides Java Interfaces and utility classes to integrate EIDASCommons and eIDAS Specific Communication Definition. + </description> + <parent> + <groupId>eu.eidas</groupId> + <artifactId>eidas-parent</artifactId> + <version>2.5.0</version> + <relativePath>../EIDAS-Parent/pom.xml</relativePath> + </parent> + <dependencies> + <dependency> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + </dependency> + <dependency> + <groupId>com.ibm.icu</groupId> + <artifactId>icu4j</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + </plugin> + </plugins> + </build> + <profiles> + <profile> + <id>metrics</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + </plugins> + </reporting> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.5.0/eidas-parent-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.5.0/eidas-parent-2.5.0.pom new file mode 100644 index 00000000..38321046 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.5.0/eidas-parent-2.5.0.pom @@ -0,0 +1,898 @@ +<!-- + ~ Copyright (c) 2020 by European Commission + ~ + ~ Licensed under the EUPL, Version 1.2 or - as soon they will be + ~ approved by the European Commission - subsequent versions of the + ~ EUPL (the "Licence"); + ~ You may not use this work except in compliance with the Licence. + ~ You may obtain a copy of the Licence at: + ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the Licence is distributed on an "AS IS" basis, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + ~ implied. + ~ See the Licence for the specific language governing permissions and + ~ limitations under the Licence. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 + http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>eu.eidas</groupId> + <artifactId>eidas-parent</artifactId> + <packaging>pom</packaging> + <name>eIDAS Node Parent</name> + <version>2.5.0</version> + <description> + The EIDAS-Parent provides artifacts versions for Eidas Node components. + </description> + <properties> + <!-- 1) Project properties --> + <proj.name>EIDASParent</proj.name> + <proj.name.eidas>EidasNode</proj.name.eidas> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <app.packaging.type>war</app.packaging.type> + <mod.packaging.type>jar</mod.packaging.type> + <timestamp>${maven.build.timestamp}</timestamp> + <!-- java version targeted in the compile phase --> + <java.version>1.8</java.version> + + <samlspec.version>0.5.2</samlspec.version> + <samlspecacept.version>0.5.1</samlspecacept.version> + + <!-- 2) Library dependency versions --> + <spring.version>4.3.18.RELEASE</spring.version> + <opensaml.not-yet-commons-ssl.version>0.3.9</opensaml.not-yet-commons-ssl.version> + <opensaml.openws.version>1.5.5</opensaml.openws.version> + <opensaml.version>3.4.3</opensaml.version> + <opensaml.api.version>3.4.3</opensaml.api.version> + <opensaml-security-ext.version>1.0.7</opensaml-security-ext.version> + <xmlsec.version>2.1.4</xmlsec.version> + <!--shibboleth.xmlsupport.version>8.0-SNAPSHOT</shibboleth.xmlsupport.version--> + <shibboleth.xmlsupport.version>7.5.0</shibboleth.xmlsupport.version> + <servlet.version>3.0.1</servlet.version> + <jsp.api>2.0</jsp.api> + <jstl.version>1.2.6</jstl.version> + <jasper.version>6.0.53</jasper.version> + <slf4j.version>1.7.10</slf4j.version> + <logback.version>1.2.0</logback.version> + <mockito.version>2.13.0</mockito.version> + <junit.version>4.12</junit.version> + <hamcrest.version>1.3</hamcrest.version> + <commons.codec>1.9</commons.codec> + <commons.collections>3.2.2</commons.collections> + <commons.io>2.4</commons.io> + <commons.lang>2.6</commons.lang> + <commons.logging>1.1.3</commons.logging> + <commons.httpclient>4.5.13</commons.httpclient> + <commons.httpcore>4.4.9</commons.httpcore> + <commons.lang3>3.1</commons.lang3> + <bouncycastle.version>1.64</bouncycastle.version> + <owasp.version>1.1.1</owasp.version> + <owasp.dependency-check.version>1.4.0</owasp.dependency-check.version> + <joda.time.version>2.6</joda.time.version> + <log4j.version>1.2.17</log4j.version> + <log4j.api>2.3</log4j.api> + <xmlunit.version>1.5</xmlunit.version> + <bdr.econnector.version>1.2.2</bdr.econnector.version> + <struts.version>2.3.34</struts.version> + <!--<icu4j.version>55.1</icu4j.version>--> + <vaadin.version>7.4.2</vaadin.version> + <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version> + <vaadin-spring.version>1.0.0.beta1</vaadin-spring.version> + <vaadin4spring.version>0.0.5.RELEASE</vaadin4spring.version> + <jetty.plugin.version>9.2.3.v20140905</jetty.plugin.version> + <guava.version>28.1-jre</guava.version> + <jsr305.version>3.0.1</jsr305.version> + <icu4j.version>57.1</icu4j.version> + + <!-- 3) maven plugin versions --> + <javadoc.plugin.version>2.8.1</javadoc.plugin.version> + <compile.plugin.version>2.3.2</compile.plugin.version> + <surefire.plugin.version>2.19.1</surefire.plugin.version> + <war.plugin.version>3.2.0</war.plugin.version> + <ear.plugin.version>2.7</ear.plugin.version> + <resources.plugin.version>2.4</resources.plugin.version> + <cobertura.plugin.version>2.7</cobertura.plugin.version> + <remote.resources.plugin.version>1.5</remote.resources.plugin.version> + <source.plugin.version>2.1.2</source.plugin.version> + <install.plugin.version>2.5.2</install.plugin.version> + <clean.plugin.version>2.6.1</clean.plugin.version> + <maven.jar.plugin.version>3.1.2</maven.jar.plugin.version> + <jaxb.plugin.version>2.3.1</jaxb.plugin.version> + </properties> + + <dependencyManagement> + <dependencies> + <!-- eIDAS modules --> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>SimpleProtocol</artifactId> + <version>0.0.3</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-commons</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-light-commons</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-configmodule</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-encryption</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-saml-engine</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-updater</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-saml-metadata</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-connector</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-proxyservice</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-communication-definition</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-dev-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-hazelcast-specific-communication</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-node</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-sp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-idp</artifactId> + <version>${project.version}</version> + </dependency> + <!-- Joda --> + <dependency> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + <version>${joda.time.version}</version> + </dependency> + <!-- SLF4J logging --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>log4j-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>${slf4j.version}</version> + </dependency> + <!-- commons-logging --> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>${commons.logging}</version> + </dependency> + <!-- Log4J --> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>${log4j.version}</version> + <exclusions> + <exclusion> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + </exclusion> + <exclusion> + <groupId>com.sun.jdmk</groupId> + <artifactId>jmxtools</artifactId> + </exclusion> + <exclusion> + <groupId>com.sun.jmx</groupId> + <artifactId>jmxri</artifactId> + </exclusion> + <exclusion> + <artifactId>mail</artifactId> + <groupId>javax.mail</groupId> + </exclusion> + </exclusions> + </dependency> + <!-- LogBack --> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${logback.version}</version> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- Bouncy Castle --> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + <version>${bouncycastle.version}</version> + <!-- Wildfly issue: please keep provided as the default scope for all the components of the project and override it if needed --> + <scope>provided</scope> + </dependency> + <!-- Apache Commons --> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>${commons.codec}</version> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>${commons.collections}</version> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>${commons.httpclient}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>${commons.httpcore}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>${commons.io}</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>${commons.lang}</version> + </dependency> + <dependency> + <groupId>org.owasp.encoder</groupId> + <artifactId>encoder</artifactId> + <version>${owasp.version}</version> + </dependency> + <dependency> + <groupId>org.owasp.encoder</groupId> + <artifactId>encoder-jsp</artifactId> + <version>${owasp.version}</version> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>${guava.version}</version> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <version>${jsr305.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-core</artifactId> + <version>${opensaml.version}</version> + <exclusions> + <exclusion> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </exclusion> + <exclusion> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </exclusion> + <exclusion> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </exclusion> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + <exclusion> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + </exclusion> + <exclusion> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + </exclusion> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>log4j-over-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>jul-to-slf4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-saml-api</artifactId> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-saml-impl</artifactId> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>se.swedenconnect.opensaml</groupId> + <artifactId>opensaml-security-ext</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml-security-ext.version}</version> + </dependency> + <dependency> + <groupId>net.shibboleth.utilities</groupId> + <artifactId>java-support</artifactId> + <version>${shibboleth.xmlsupport.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-xmlsec-api</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml.version}</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>${servlet.version}</version> + <scope>provided</scope> + </dependency> + <!-- JSP --> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jsp-api</artifactId> + <version>${jsp.api}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.glassfish.web</groupId> + <artifactId>jakarta.servlet.jsp.jstl</artifactId> + <version>${jstl.version}</version> + <scope>runtime</scope> + </dependency> + <!-- Spring --> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context-support</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-web</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + <version>${xalan.version}</version> + </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-xmlsec-impl</artifactId> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> + <version>${opensaml.version}</version> + </dependency> + <!-- EIDINT-4171: Override of opensaml-xmlsec-impl sub dependency --> + <dependency> + <groupId>org.apache.santuario</groupId> + <artifactId>xmlsec</artifactId> + <version>${xmlsec.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/org.apache.tomcat/jasper-el --> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>jasper-el</artifactId> + <version>${jasper.version}</version> + </dependency> + <!-- Struts2 --> + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-core</artifactId> + <version>${struts.version}</version> + </dependency> + <!-- ICU --> + <dependency> + <groupId>com.ibm.icu</groupId> + <artifactId>icu4j</artifactId> + <version>${icu4j.version}</version> + </dependency> + + <!-- UNIT TEST Dependencies --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + <version>${hamcrest.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${mockito.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + <version>${xmlunit.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>${spring.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <!-- Dependencies in common for all modules --> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + </dependency> + + <!-- UNIT TEST Dependencies in common for all modules --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <exclusions> + <exclusion> + <artifactId>hamcrest-core</artifactId> + <groupId>org.hamcrest</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <exclusions> + <exclusion> + <artifactId>hamcrest-core</artifactId> + <groupId>org.hamcrest</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + </dependency> + </dependencies> + + <build> + <pluginManagement> + <plugins> + + <plugin> + <groupId>com.orctom.mojo</groupId> + <artifactId>was-maven-plugin</artifactId> + <version>1.0.8</version> + <configuration> + <wasHome>c:/pgm/wlp</wasHome> + <applicationName>${proj.name}</applicationName> + <host>localhost</host> + <server>server01</server> + <node>node01</node> + <virtualHost>default_host</virtualHost> + <verbose>true</verbose> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.tomcat.maven</groupId> + <artifactId>tomcat7-maven-plugin</artifactId> + <version>2.2</version> + <configuration> + <url>http://localhost:8080/manager/text</url> + <server>tomcat</server> + <path>/${proj.name}</path> + <username>admin</username> + <password>admin</password> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>${war.plugin.version}</version> + <configuration> + <webResources> + <resource> + <directory>${project.basedir}/src/main/webapp/WEB-INF</directory> + <filtering>true</filtering> + <targetPath>WEB-INF</targetPath> + <includes> + <include>**/web.xml</include> + </includes> + </resource> + </webResources> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>${source.plugin.version}</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>verify</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <version>${cobertura.plugin.version}</version> + <configuration> + <formats> + <format>html</format> + <format>xml</format> + </formats> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxb2-maven-plugin</artifactId> + <version>${jaxb.plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>${resources.plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>${maven.jar.plugin.version}</version> + </plugin> + <!--plugin> + <groupId>org.owasp</groupId> + <artifactId>dependency-check-maven</artifactId> + <version>${owasp.dependency-check.version}</version> + <configuration> + <failBuildOnCVSS>8</failBuildOnCVSS> + </configuration> + <executions> + <execution> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin--> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${compile.plugin.version}</version> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${surefire.plugin.version}</version> + <configuration> + <skip>false</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${javadoc.plugin.version}</version> + <configuration> + <detectLinks>true</detectLinks> + </configuration> + </plugin> + </plugins> + </build> + <modules> + <module>../EIDAS-Light-Commons</module> + <module>../EIDAS-Commons</module> + <module>../EIDAS-ConfigModule</module> + <module>../EIDAS-Encryption</module> + <module>../EIDAS-Metadata</module> + <module>../EIDAS-SpecificCommunicationDefinition</module> + <!--start of TODO remove when/if EIDAS-Node pom does not depend on eidas-jcache-dev-node artifact to test--> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Node</module> + <!--TODOEND--> + </modules> + <profiles> + <profile> + <id>NodeOnly</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-SAMLEngine</module> + <module>../EIDAS-UPDATER</module> + <module>../EIDAS-Node</module> + </modules> + </profile> + <profile> + <id>DemoToolsOnly</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <modules> + <module>../EIDAS-SimpleProtocol</module> + <module>../EIDAS-SpecificProxyService</module> + <module>../EIDAS-SpecificConnector</module> + <module>../EIDAS-SP</module> + <module>../EIDAS-IdP-1.0</module> + </modules> + </profile> + <profile> + <id>nodeJcacheIgnite</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Ignite</module> + <module>../EIDAS-JCache-Ignite-Node</module> + </modules> + </profile> + <profile> + <id>nodeJcacheHazelcast</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Hazelcast</module> + <module>../EIDAS-JCache-Hazelcast-Node</module> + </modules> + </profile> + <profile> + <id>nodeJcacheDev</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Node</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheIgnite</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Ignite</module> + <module>../EIDAS-JCache-Ignite-Specific-Communication</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheHazelcast</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <modules> + <module>../EIDAS-JCache-Hazelcast</module> + <module>../EIDAS-JCache-Hazelcast-Specific-Communication</module> + </modules> + </profile> + <profile> + <id>specificCommunicationJcacheDev</id> + <activation> + <activeByDefault>false</activeByDefault> + <property> + <name>specificJar</name> + </property> + </activation> + <modules> + <module>../EIDAS-JCache-Dev</module> + <module>../EIDAS-JCache-Dev-Specific-Communication</module> + </modules> + </profile> + </profiles> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-javadoc.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-javadoc.jar Binary files differnew file mode 100644 index 00000000..fad96d8a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-javadoc.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-sources.jar Binary files differnew file mode 100644 index 00000000..9a2589d6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.jar Binary files differnew file mode 100644 index 00000000..8b8c387d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.pom new file mode 100644 index 00000000..4fd93c22 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.pom @@ -0,0 +1,136 @@ +<!--
+ ~ Copyright (c) 2020 by European Commission
+ ~
+ ~ Licensed under the EUPL, Version 1.2 or - as soon they will be
+ ~ approved by the European Commission - subsequent versions of the
+ ~ EUPL (the "Licence");
+ ~ You may not use this work except in compliance with the Licence.
+ ~ You may obtain a copy of the Licence at:
+ ~ https://joinup.ec.europa.eu/page/eupl-text-11-12
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the Licence is distributed on an "AS IS" basis,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ ~ implied.
+ ~ See the Licence for the specific language governing permissions and
+ ~ limitations under the Licence.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>eidas-specific-communication-definition</artifactId>
+ <packaging>jar</packaging>
+ <name>eIDAS Specific Communication Definition</name>
+ <description>Defines and implements the communication protocol to be used between specific and node modules.
+ </description>
+ <parent>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-parent</artifactId>
+ <version>2.5.0</version>
+ <relativePath>../EIDAS-Parent/pom.xml</relativePath>
+ </parent>
+ <properties>
+ <lightRequest.xsd>lightRequest.xsd</lightRequest.xsd>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-commons</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-jcache-dev</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxb2-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>xjc</id>
+ <goals>
+ <goal>xjc</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <sources>
+ <source>src/main/resources/xsds/${lightRequest.xsd}</source>
+ <source>src/main/resources/xsds/lightResponse.xsd</source>
+ </sources>
+ <packageName>eu.eidas.specificcommunication</packageName>
+ <noPackageLevelAnnotations>true</noPackageLevelAnnotations>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>specificCommunicationJcacheIgnite</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-jcache-ignite-specific-communication</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>specificCommunicationJcacheHazelcast</id>
+ <dependencies>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-jcache-hazelcast-specific-communication</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>specificCommunicationJcacheProvidedImpl</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ </profile>
+ <profile>
+ <id>specificCommunicationJcacheDev</id>
+ <!-- <activation> -->
+ <!-- <property> -->
+ <!-- <name>specificJar</name> -->
+ <!-- </property> -->
+ <!-- </activation> -->
+ <dependencies>
+ <dependency>
+ <groupId>eu.eidas</groupId>
+ <artifactId>eidas-jcache-dev-specific-communication</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+</project>
diff --git a/eidas_modules/authmodule-eIDAS-v2/spotbugs_exclude.xml b/eidas_modules/authmodule-eIDAS-v2/spotbugs_exclude.xml deleted file mode 100644 index 90d418ff..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/spotbugs_exclude.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<FindBugsFilter> - <Match> - <Class name="~szrservices.SZRException"/> - </Match> -</FindBugsFilter>
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index 15057600..8a1a63f5 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -35,6 +35,7 @@ public class Constants { public static final String DATA_RESULT_MATCHING_BPK = "matching-result-bpk"; public static final String DATA_SIMPLE_EIDAS = "simple_eidas_data"; + // templates for post-binding forwarding public static final String TEMPLATE_POST_FORWARD_NAME = "eidas_node_forward.html"; public static final String TEMPLATE_POST_FORWARD_ENDPOINT = "endPoint"; @@ -53,11 +54,11 @@ public class Constants { public static final String CONIG_PROPS_EIDAS_NODE_FORWARD_METHOD = CONIG_PROPS_EIDAS_NODE + ".forward.method"; public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_DEFAULT_ONLYNATURAL = - CONIG_PROPS_EIDAS_NODE + ".attributes.requested.onlynatural."; + CONIG_PROPS_EIDAS_NODE + ".attributes.requested.onlynatural"; public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_CC_SPECIFIC_ONLYNATURAL = - CONIG_PROPS_EIDAS_NODE + ".attributes.requested.{0}.onlynatural."; + CONIG_PROPS_EIDAS_NODE + ".attributes.requested.{0}.onlynatural"; public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_REPRESENTATION = - CONIG_PROPS_EIDAS_NODE + ".attributes.requested.representation."; + CONIG_PROPS_EIDAS_NODE + ".attributes.requested.representation"; public static final String CONIG_PROPS_EIDAS_NODE_WORKAROUND_ADD_ALWAYS_PROVIDERNAME = CONIG_PROPS_EIDAS_NODE + ".workarounds.addAlwaysProviderName"; public static final String CONIG_PROPS_EIDAS_NODE_WORKAROUND_USEREQUESTIDASTRANSACTIONIDENTIFIER = @@ -78,6 +79,8 @@ public class Constants { + ".debug.logfullmessages"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_USEDUMMY = CONIG_PROPS_EIDAS_SZRCLIENT + ".debug.useDummySolution"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SET_MDS_TO_EIDASBIND = CONIG_PROPS_EIDAS_SZRCLIENT + + ".eidasbind.mds.inject"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_CONNECTION = CONIG_PROPS_EIDAS_SZRCLIENT + ".timeout.connection"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_RESPONSE = CONIG_PROPS_EIDAS_SZRCLIENT @@ -144,6 +147,9 @@ public class Constants { public static final String eIDAS_ATTR_LEGALPERSONIDENTIFIER = "LegalPersonIdentifier"; public static final String eIDAS_ATTR_LEGALNAME = "LegalName"; + public static final String eIDAS_REQ_PARAM_SECTOR_PUBLIC = "public"; + public static final String eIDAS_REQ_PARAM_SECTOR_PRIVATE = "private"; + public static final String POLICY_DEFAULT_ALLOWED_TARGETS = EaafConstants.URN_PREFIX_CDID.replaceAll("\\.", "\\\\.").replaceAll("\\+", "\\\\+") + ".*"; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java index e9302f6d..d3cac80c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java @@ -47,7 +47,7 @@ import eu.eidas.auth.commons.EidasParameterKeys; import eu.eidas.auth.commons.light.ILightResponse; import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames; import eu.eidas.specificcommunication.exception.SpecificCommunicationException; -import eu.eidas.specificcommunication.protocol.impl.SpecificConnectorCommunicationServiceImpl; +import eu.eidas.specificcommunication.protocol.SpecificCommunicationService; /** * Controler implementation for eIDAS Node communication. @@ -108,8 +108,8 @@ public class EidasSignalServlet extends AbstractProcessEngineSignalController { } log.trace("Receive eIDAS-node token: " + tokenBase64 + " Starting transaction-restore process ... "); - final SpecificConnectorCommunicationServiceImpl specificConnectorCommunicationService = - (SpecificConnectorCommunicationServiceImpl) context.getBean( + final SpecificCommunicationService specificConnectorCommunicationService = + (SpecificCommunicationService) context.getBean( SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); final ILightResponse eidasResponse = specificConnectorCommunicationService.getAndRemoveResponse( tokenBase64, diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/EidasPersonalIdStoreDao.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/EidasPersonalIdStoreDao.java deleted file mode 100644 index c7acdb15..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/EidasPersonalIdStoreDao.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2018 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * 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. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - -package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import at.gv.egiz.eaaf.core.impl.data.Pair; - -@Deprecated -public class EidasPersonalIdStoreDao { - public static final String NAME = "foreigneIDMap"; - - // Enum with all cols of this table - public enum Cols { - timestamp, transactionId, eidasId, eidasSourceCountry, eidasDestinationCountry, ernbId - } - - public enum T { - ID("INTEGER"), - BIGINT("VARCHAR(265)"), - URI("VARCHAR(256)"), - DATE("Long"), - TEXT("TEXT"), - Long("BIGINT"), - Int("INTEGER"), - BLOB("BLOB"), - CC("CHAR(2)"), - BOOL("INTEGER"); - - private final String type; - - T(String el) { - type = el; - } - - @Override - public String toString() { - return type; - } - } - - // define Cols of the table - public static final List<Pair<String, T>> TABLE_COLS; - - static { - final List<Pair<String, T>> cols = new ArrayList<>(); - cols.add(Pair.newInstance(Cols.timestamp.name(), T.DATE)); - cols.add(Pair.newInstance(Cols.transactionId.name(), T.TEXT)); - cols.add(Pair.newInstance(Cols.eidasId.name(), T.TEXT)); - cols.add(Pair.newInstance(Cols.eidasSourceCountry.name(), T.CC)); - cols.add(Pair.newInstance(Cols.eidasDestinationCountry.name(), T.CC)); - cols.add(Pair.newInstance(Cols.ernbId.name(), T.TEXT)); - - TABLE_COLS = Collections.unmodifiableList(cols); - - } - - public static final String CREATE = "CREATE TABLE " + NAME - + " (" + "id" + " " + T.ID.toString() - + " PRIMARY KEY AUTOINCREMENT, " + buildCreateTableQuery(TABLE_COLS) + ")"; - - public static final String INSERT = "INSERT INTO " + NAME - + "(" + buildInsertQueryKeys(TABLE_COLS) + ")" - + " VALUES (" + buildInsertQueryValues(TABLE_COLS) + ");"; - - public static final String SELECT_BY_ERNB_ID = "SELECT * FROM " + NAME - + " WHERE " + Cols.ernbId.name() + "=?;"; - - public static final String SELECT_BY_EIDAS_RAW_ID = "SELECT * FROM " + NAME - + " WHERE " + Cols.eidasId.name() + "=?" - + " and " + Cols.eidasSourceCountry.name() + "=?" + ";"; - - /** - * Build a part of a SQL query, which contains the cols of a table that should - * be created. - * - * @param cols List of DB col definitions {@link Pair} - * @return Part of a SQL query, which contains cols that should be created - */ - private static String buildCreateTableQuery(List<Pair<String, T>> cols) { - StringBuffer buf = new StringBuffer(); - for (final Pair<String, T> el : cols) { - buf.append(el.getFirst()); - buf.append(" "); - buf.append(el.getSecond()); - buf.append(","); - - } - String sql = buf.toString(); - return sql.substring(0, sql.length() - 1); - - } - - /** - * Build a part of a SQL query, which contains the cols keys of a table for - * insert operation. - * - * @param cols List of DB col definitions {@link Pair} - * @return Part of a SQL query, which contains cols that should be created - */ - protected static String buildInsertQueryKeys(List<Pair<String, T>> cols) { - - StringBuffer buf = new StringBuffer(); - for (final Pair<String, T> el : cols) { - buf.append(el.getFirst()); - buf.append(","); - - } - String sql = buf.toString(); - return sql.substring(0, sql.length() - 1); - } - - /** - * Build a part of a SQL query, which contains the cols values of a table for - * insert operation. - * - * @param cols List of DB col definitions {@link Pair} - * @return Part of a SQL query, which contains cols that should be created - */ - protected static String buildInsertQueryValues(List<Pair<String, T>> cols) { - - StringBuffer buf = new StringBuffer(); - Iterator<Pair<String, T>> it = cols.iterator(); - while (it.hasNext()) { - buf.append("?,"); - it.next(); - - } - - String sql = buf.toString(); - return sql.substring(0, sql.length() - 1); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java index cb499ca5..2f82387f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java @@ -42,4 +42,5 @@ public interface IErnpClient { void update(RegisterResult registerResult, SimpleEidasData eidData); boolean createNewEntry(SimpleEidasData simpleEidasData); + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java index e3c1e00f..734cf873 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java @@ -23,6 +23,19 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.handler; + +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.commons.lang3.StringUtils; +import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; + +import com.google.common.collect.ImmutableSortedSet; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnbEidData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException; @@ -31,24 +44,15 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRe import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType; import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; import at.gv.egiz.eaaf.core.impl.data.Triple; -import com.google.common.collect.ImmutableSortedSet; -import edu.umd.cs.findbugs.annotations.NonNull; + import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; import eu.eidas.auth.commons.light.impl.LightRequest.Builder; import eu.eidas.auth.commons.protocol.eidas.SpType; -import org.apache.commons.lang3.StringUtils; -import org.joda.time.DateTime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public abstract class AbstractEidProcessor implements INationalEidProcessor { private static final Logger log = LoggerFactory.getLogger(AbstractEidProcessor.class); @@ -61,10 +65,12 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor { @Override public final void preProcess(IRequest pendingReq, Builder authnRequestBuilder) { + buildLevelOfAssurance(pendingReq.getServiceProviderConfiguration(), authnRequestBuilder); buildProviderNameAttribute(pendingReq, authnRequestBuilder); buildRequestedAttributes(authnRequestBuilder); } + @Override public final ErnbEidData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException, EidasAttributeException { @@ -268,10 +274,36 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor { final String providerName = pendingReq.getRawData(Constants.DATA_PROVIDERNAME, String.class); if (StringUtils.isNotEmpty(providerName)) { authnRequestBuilder.providerName(providerName); + authnRequestBuilder.requesterId(providerName); + } } + } + + private void buildLevelOfAssurance(ISpConfiguration spConfig, Builder authnRequestBuilder) { + // TODO: set matching mode if eIDAS ref. impl. support this method + + // TODO: update if eIDAS ref. impl. supports exact matching for non-notified LoA + // schemes + String loa = EaafConstants.EIDAS_LOA_HIGH; + if (spConfig.getRequiredLoA() != null) { + if (spConfig.getRequiredLoA().isEmpty()) { + log.info("No eIDAS LoA requested. Use LoA HIGH as default"); + } else { + if (spConfig.getRequiredLoA().size() > 1) { + log.info( + "Currently only ONE requested LoA is supported for service provider. Use first one ... "); + } + + loa = spConfig.getRequiredLoA().get(0); + + } + } + log.debug("Request eIdAS node with LoA: " + loa); + authnRequestBuilder.levelOfAssurance(loa); + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/AuthBlockSigningService.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/AuthBlockSigningService.java index cfaecfbb..234d52dd 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/AuthBlockSigningService.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/AuthBlockSigningService.java @@ -79,7 +79,8 @@ public class AuthBlockSigningService { EidasAuchBlock authBlock = new EidasAuchBlock(); authBlock.setChallenge(UUID.randomUUID().toString()); authBlock.setTimestamp(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS)); - authBlock.setUniqueId(pendingReq.getRawData(MsEidasNodeConstants.DATA_REQUESTERID, String.class)); + authBlock.setUniqueId(pendingReq.getRawData(MsEidasNodeConstants.DATA_REQUESTERID, String.class)); + authBlock.setPiiTransactionId(pendingReq.getUniquePiiTransactionIdentifier()); String jwsPayload = mapper.writeValueAsString(authBlock); log.debug("Building and sign authBlock with data: {}", jwsPayload); @@ -185,6 +186,9 @@ public class AuthBlockSigningService { @JsonProperty("appId") private String uniqueId; + @JsonProperty("piiTransactionId") + private String piiTransactionId; + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java index 98c4c2de..e73491ab 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java @@ -35,13 +35,13 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; -import edu.umd.cs.findbugs.annotations.NonNull; import eu.eidas.auth.commons.attribute.AttributeRegistries; import eu.eidas.auth.commons.attribute.AttributeRegistry; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java index 69b993a4..1f5837d6 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java @@ -45,6 +45,7 @@ import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; +import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.namespace.QName; @@ -58,8 +59,6 @@ import javax.xml.ws.BindingProvider; import javax.xml.ws.Dispatch; import javax.xml.ws.handler.Handler; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.configuration.jsse.TLSClientParameters; import org.apache.cxf.endpoint.Client; @@ -75,9 +74,14 @@ import org.springframework.stereotype.Service; import org.w3c.dom.Document; import org.w3c.dom.Element; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnbEidData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.data.XmlNamespaceConstants; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.impl.utils.DomUtils; @@ -111,7 +115,8 @@ public class SzrClient { private static final String KEY_BC_BIND = "bcBindReq"; private static final String JOSE_HEADER_USERCERTPINNING_TYPE = "urn:at.gv.eid:bindtype"; private static final String JOSE_HEADER_USERCERTPINNING_EIDASBIND = "urn:at.gv.eid:eidasBind"; - + public static final String ATTR_NAME_MDS = "urn:eidgvat:mds"; + @Autowired private IConfiguration basicConfig; @@ -229,7 +234,7 @@ public class SzrClient { final String resp; try { - resp = this.szr.getStammzahlEncrypted(personInfo, false); + resp = this.szr.getStammzahlEncrypted(personInfo, true); } catch (SZRException_Exception e) { throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); } @@ -242,36 +247,38 @@ public class SzrClient { } - /** - * Signs content. + * Sign an eidasBind data-structure that combines vsz with user's pubKey and E-ID status. * - * @param vsz ? TODO + * @param vsz encryped baseId * @param bindingPubKey binding PublikKey as PKCS1# (ASN.1) container * @param eidStatus Status of the E-ID + * @param eidData eID information that was used for ERnP registration * @return bPK for this person * @throws SzrCommunicationException In case of a SZR error */ - public String getBcBind(final String vsz, final String bindingPubKey, final String eidStatus) - throws SzrCommunicationException { - - final Map<String, Object> bcBindMap = new HashMap<>(); - bcBindMap.put(ATTR_NAME_VSZ, vsz); - bcBindMap.put(ATTR_NAME_STATUS, eidStatus); - bcBindMap.put(ATTR_NAME_PUBKEYS, Arrays.asList(bindingPubKey)); - + public String getEidsaBind(final String vsz, final String bindingPubKey, final String eidStatus, + ErnbEidData eidData)throws SzrCommunicationException { + + final Map<String, Object> eidsaBindMap = new HashMap<>(); + eidsaBindMap.put(ATTR_NAME_VSZ, vsz); + eidsaBindMap.put(ATTR_NAME_STATUS, eidStatus); + eidsaBindMap.put(ATTR_NAME_PUBKEYS, Arrays.asList(bindingPubKey)); + eidsaBindMap.put(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, eidData.getCitizenCountryCode()); + injectMdsIfAvailableAndActive(eidsaBindMap, eidData); + try { - final String serializedBcBind = mapper.writeValueAsString(bcBindMap); + final String serializedEidasBind = mapper.writeValueAsString(eidsaBindMap); final SignContent req = new SignContent(); - final SignContentEntry bcBindInfo = new SignContentEntry(); - bcBindInfo.setKey(KEY_BC_BIND); - bcBindInfo.setValue(serializedBcBind); - req.getIn().add(bcBindInfo); + final SignContentEntry eidasBindInfo = new SignContentEntry(); + eidasBindInfo.setKey(KEY_BC_BIND); + eidasBindInfo.setValue(serializedEidasBind); + req.getIn().add(eidasBindInfo); req.setAppendCert(false); - final JwsHeaderParam bcBindJoseHeader = new JwsHeaderParam(); - bcBindJoseHeader.setKey(JOSE_HEADER_USERCERTPINNING_TYPE); - bcBindJoseHeader.setValue(JOSE_HEADER_USERCERTPINNING_EIDASBIND); - req.getJWSHeaderParam().add(bcBindJoseHeader); + final JwsHeaderParam eidasBindJoseHeader = new JwsHeaderParam(); + eidasBindJoseHeader.setKey(JOSE_HEADER_USERCERTPINNING_TYPE); + eidasBindJoseHeader.setValue(JOSE_HEADER_USERCERTPINNING_EIDASBIND); + req.getJWSHeaderParam().add(eidasBindJoseHeader); log.trace("Requesting SZR to sign bcBind datastructure ... "); final SignContentResponseType resp = szr.signContent(req.isAppendCert(), req.getJWSHeaderParam(), req.getIn()); @@ -486,8 +493,22 @@ public class SzrClient { } + private void injectMdsIfAvailableAndActive(Map<String, Object> eidsaBindMap, ErnbEidData eidData) { + if (basicConfig.getBasicConfigurationBoolean( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SET_MDS_TO_EIDASBIND, false)) { + log.info("Injecting MDS into eidasBind ... "); + final Map<String, Object> mds = new HashMap<>(); + mds.put(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, eidData.getFamilyName()); + mds.put(PvpAttributeDefinitions.GIVEN_NAME_NAME, eidData.getGivenName()); + mds.put(PvpAttributeDefinitions.BIRTHDATE_NAME, eidData.getFormatedDateOfBirth()); + eidsaBindMap.put(ATTR_NAME_MDS, mds); + + } + } + private byte[] sourceToByteArray(Source result) throws TransformerException { final TransformerFactory factory = TransformerFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); final Transformer transformer = factory.newTransformer(); transformer.setOutputProperty("omit-xml-declaration", "yes"); transformer.setOutputProperty("method", "xml"); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java index f9142f8e..b519354c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java @@ -150,38 +150,40 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { // get encrypted baseId String vsz = szrClient.getEncryptedStammzahl(personInfo); - + + //write revision-Log entry and extended infos personal-identifier mapping + revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_VSZ_RECEIVED); + writeExtendedRevisionLogEntry(simpleAttrMap, eidData); + + // get eIDAS bind - String signedEidasBind = szrClient.getBcBind(vsz, + String signedEidasBind = szrClient.getEidsaBind(vsz, authBlockSigner.getBase64EncodedPublicKey(), - EID_STATUS); - + EID_STATUS, eidData); + revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_EIDASBIND_RECEIVED); + authProcessData.setGenericDataToSession(Constants.EIDAS_BIND, signedEidasBind); + //get signed AuthBlock String jwsSignature = authBlockSigner.buildSignedAuthBlock(pendingReq); - - //inject personal-data into session + revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.TECH_AUCHBLOCK_CREATED); authProcessData.setGenericDataToSession(Constants.SZR_AUTHBLOCK, jwsSignature); - authProcessData.setGenericDataToSession(Constants.EIDAS_BIND, signedEidasBind); + + //inject personal-data into session + authProcessData.setEidProcess(true); } else { //request SZR SzrResultHolder idlResult = requestSzrForIdentityLink(personInfo); - // write ERnB input-data into revision-log - if (basicConfig.getBasicConfigurationBoolean( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_WORKAROUND_REVISIONLOGDATASTORE_ACTIVE, false)) { - revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_ERNB_EIDAS_RAW_ID, - (String) simpleAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER)); - revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_ERNB_EIDAS_ERNB_ID, eidData.getPseudonym()); - - } + //write revision-Log entry for personal-identifier mapping + writeExtendedRevisionLogEntry(simpleAttrMap, eidData); //check result-data and write revision-log based on current state checkStateAndWriteRevisionLog(idlResult); - //inject personal-data into session authProcessData.setIdentityLink(idlResult.getIdentityLink()); + authProcessData.setEidProcess(false); // set bPK and bPKType into auth session authProcessData.setGenericDataToSession(PvpAttributeDefinitions.BPK_NAME, extendBpkByPrefix( @@ -217,6 +219,17 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { } } + private void writeExtendedRevisionLogEntry(Map<String, Object> simpleAttrMap, ErnbEidData eidData) { + // write ERnB input-data into revision-log + if (basicConfig.getBasicConfigurationBoolean( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_WORKAROUND_REVISIONLOGDATASTORE_ACTIVE, false)) { + revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_ERNB_EIDAS_RAW_ID, + (String) simpleAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER)); + revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.SZR_ERNB_EIDAS_ERNB_ID, eidData.getPseudonym()); + + } + } + private PersonInfoType generateSzrRequest(ErnbEidData eidData) { log.debug("Starting connecting SZR Gateway"); final PersonInfoType personInfo = new PersonInfoType(); @@ -279,14 +292,18 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { IIdentityLink identityLink = new SimpleIdentityLinkAssertionParser(idlFromSzr).parseIdentityLink(); // get bPK from SZR - String bpk; + String bpk = null; if (basicConfig .getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_USESRZFORBPKGENERATION, true)) { - bpk = szrClient + List<String> bpkList = szrClient .getBpk(personInfo, pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier(), basicConfig - .getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, "no VKZ defined")) - .get(0); + .getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, "no VKZ defined")); + if (!bpkList.isEmpty()) { + bpk = bpkList.get(0); + + } + } else { log.debug("Calculating bPK from baseId ... "); @@ -380,7 +397,7 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { } else { final List<String> natPersonIdObj = EidasResponseUtils - .translateStringListAttribute(el, attributeMap.get(el).asList()); + .translateStringListAttribute(el, attributeMap.get(el)); final String stringAttr = natPersonIdObj.get(0); if (StringUtils.isNotEmpty(stringAttr)) { result.put(el.getFriendlyName(), stringAttr); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java index 0b6e9ee8..92f58877 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java @@ -41,10 +41,8 @@ import at.asitplus.eidas.specific.connector.gui.StaticGuiBuilderConfiguration; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; -import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; @@ -87,9 +85,6 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask { throws TaskExecutionException { try { - // get service-provider configuration - final ISpConfiguration spConfig = pendingReq.getServiceProviderConfiguration(); - // get target, environment and validate citizen countryCode final String citizenCountryCode = (String) executionContext.get( MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY); @@ -110,6 +105,13 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask { final LightRequest.Builder authnRequestBuilder = LightRequest.builder(); authnRequestBuilder.id(UUID.randomUUID().toString()); + // set nameIDFormat + authnRequestBuilder.nameIdFormat(Constants.eIDAS_REQ_NAMEID_FORMAT); + + // set citizen country code for foreign uses + authnRequestBuilder.citizenCountryCode(citizenCountryCode); + + //set Issuer final String issur = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_ENTITYID); if (StringUtils.isEmpty(issur)) { log.error("Found NO 'eIDAS node issuer' in configuration. Authentication NOT possible!"); @@ -119,42 +121,7 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask { } authnRequestBuilder.issuer(issur); - // TODO: set matching mode if eIDAS ref. impl. support this method - - // TODO: update if eIDAS ref. impl. supports exact matching for non-notified LoA - // schemes - String loa = EaafConstants.EIDAS_LOA_HIGH; - if (spConfig.getRequiredLoA() != null) { - if (spConfig.getRequiredLoA().isEmpty()) { - log.info("No eIDAS LoA requested. Use LoA HIGH as default"); - } else { - if (spConfig.getRequiredLoA().size() > 1) { - log.info( - "Currently only ONE requested LoA is supported for service provider. Use first one ... "); - } - - loa = spConfig.getRequiredLoA().get(0); - - } - } - - log.debug("Request eIdAS node with LoA: " + loa); - authnRequestBuilder.levelOfAssurance(loa); - - // set nameIDFormat - authnRequestBuilder.nameIdFormat(Constants.eIDAS_REQ_NAMEID_FORMAT); - - // set citizen country code for foreign uses - authnRequestBuilder.citizenCountryCode(citizenCountryCode); - - // set relay state - /* - * TODO: SecureToken PendingRequestId generates a validation exception in - * eIDASNode because eIDASNode implements limit on size for RelayState - * (80characaters) - */ - // authnRequestBuilder.relayState(pendingReq.getPendingRequestId()); - + // Add country-specific informations into eIDAS request ccSpecificProcessing.preProcess(citizenCountryCode, pendingReq, authnRequestBuilder); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java index 34e258ca..9e5b4d67 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java @@ -296,7 +296,7 @@ public class InitialSearchTask extends AbstractAuthServletTask { } } else { final List<String> natPersonIdObj = EidasResponseUtils - .translateStringListAttribute(el, attributeMap.get(el).asList()); + .translateStringListAttribute(el, attributeMap.get(el)); final String stringAttr = natPersonIdObj.get(0); if (StringUtils.isNotEmpty(stringAttr)) { result.put(el.getFriendlyName(), stringAttr); @@ -309,4 +309,4 @@ public class InitialSearchTask extends AbstractAuthServletTask { log.debug("Receive #" + result.size() + " attributes with names: " + result.keySet().toString()); return result; } -} +}
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java index aafcd8b9..ef8822aa 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java @@ -19,7 +19,7 @@ * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. -*/ + */ package at.asitplus.eidas.specific.modules.auth.eidas.v2.utils; @@ -28,6 +28,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttribute import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType; import at.gv.egiz.eaaf.core.impl.data.Triple; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.AttributeValue; import eu.eidas.auth.commons.attribute.AttributeValueMarshaller; @@ -57,7 +58,7 @@ public class EidasResponseUtils { * * @param uniqueID eIDAS attribute value of a unique identifier * @return true if the uniqueID matches to eIDAS to Unique Identifier - * specification, otherwise false + * specification, otherwise false */ public static boolean validateEidasPersonalIdentifier(String uniqueID) { final Pattern pattern = Pattern.compile(PERSONALIDENIFIER_VALIDATION_PATTERN); @@ -73,10 +74,10 @@ public class EidasResponseUtils { * * @param uniqueID eIDAS attribute value of a unique identifier * @return {@link Triple} that contains: <br> - * First : citizen country <br> - * Second: destination country <br> - * Third : unique identifier <br> - * or null if the attribute value has a wrong format + * First : citizen country <br> + * Second: destination country <br> + * Third : unique identifier <br> + * or null if the attribute value has a wrong format */ public static Triple<String, String, String> parseEidasPersonalIdentifier(String uniqueID) { if (!validateEidasPersonalIdentifier(uniqueID)) { @@ -93,58 +94,79 @@ public class EidasResponseUtils { * Get eIDAS attribute-values from eIDAS Node attributes. * * @param attributeDefinition eIDAS attribute definition - * @param attributeValues Attributes from eIDAS response - * @return Set of attribute values. If more then one value than the first value contains the 'Latin' value. + * @param attributeValues Attributes from eIDAS response + * @return Set of attribute values. If more then one value than the first value + * contains the 'Latin' value. */ // TODO: check possible problem with nonLatinCharacters public static List<String> translateStringListAttribute(AttributeDefinition<?> attributeDefinition, - ImmutableList<? extends AttributeValue<?>> attributeValues) { + @Nullable ImmutableSet<? extends AttributeValue<?>> attributeValues) { final List<String> stringListAttribute = new ArrayList<>(); - final AttributeValueMarshaller<?> attributeValueMarshaller = attributeDefinition - .getAttributeValueMarshaller(); - for (final AttributeValue<?> attributeValue : attributeValues) { - String valueString = null; - try { - valueString = attributeValueMarshaller.marshal((AttributeValue) attributeValue); - - log.trace("Find attr: {} with value: {} nonLatinFlag: {} needTransliteration: {}", - attributeDefinition.getFriendlyName(), attributeValue.toString(), - attributeValue.isNonLatinScriptAlternateVersion(), - AttributeValueTransliterator.needsTransliteration(valueString)); - - // if (attributeValue.isNonLatinScriptAlternateVersion()) { - if (!AttributeValueTransliterator.needsTransliteration(valueString)) { - stringListAttribute.add(0, valueString); - - } else { - log.trace("Find 'needsTransliteration' flag. Setting this value at last list element ... "); - stringListAttribute.add(valueString); + if (attributeValues == null) { + log.info("Can not extract infos from 'null' attribute value"); - } + } else { + final AttributeValueMarshaller<?> attributeValueMarshaller = + attributeDefinition.getAttributeValueMarshaller(); + for (final AttributeValue<?> attributeValue : attributeValues) { + String valueString = null; + try { + valueString = attributeValueMarshaller.marshal((AttributeValue) attributeValue); + + log.trace("Find attr: {} with value: {} nonLatinFlag: {} needTransliteration: {}", + attributeDefinition.getFriendlyName(), attributeValue.toString(), + attributeValue.isNonLatinScriptAlternateVersion(), + AttributeValueTransliterator.needsTransliteration(valueString)); + + // if (attributeValue.isNonLatinScriptAlternateVersion()) { + if (!AttributeValueTransliterator.needsTransliteration(valueString)) { + stringListAttribute.add(0, valueString); + + } else { + log.trace("Find 'needsTransliteration' flag. Setting this value at last list element ... "); + stringListAttribute.add(valueString); + + log.trace("Find attr: {} with value: {} nonLatinFlag: {} needTransliteration: {}", + attributeDefinition.getFriendlyName(), attributeValue.toString(), + attributeValue.isNonLatinScriptAlternateVersion(), + AttributeValueTransliterator.needsTransliteration(valueString)); + + // if (attributeValue.isNonLatinScriptAlternateVersion()) { + if (!AttributeValueTransliterator.needsTransliteration(valueString)) { + stringListAttribute.add(0, valueString); + + } else { + log.trace("Find 'needsTransliteration' flag. Setting this value at last list element ... "); + stringListAttribute.add(valueString); + + } + } + } catch (final AttributeValueMarshallingException e) { + throw new IllegalStateException(e); - } catch (final AttributeValueMarshallingException e) { - throw new IllegalStateException(e); + } } - } + log.trace("Extract values: {} for attr: {}", + StringUtils.join(stringListAttribute, ","), attributeDefinition.getFriendlyName()); - log.trace("Extract values: {} for attr: {}", - StringUtils.join(stringListAttribute, ","), attributeDefinition.getFriendlyName()); + } return stringListAttribute; } + /** * Convert eIDAS DateTime attribute to Java Object. * * @param attributeDefinition eIDAS attribute definition. - * @param attributeValues eIDAS attribute value + * @param attributeValues eIDAS attribute value * @return */ @Nullable public static DateTime translateDateAttribute(AttributeDefinition<?> attributeDefinition, - ImmutableList<? extends AttributeValue<?>> attributeValues) { + ImmutableList<? extends AttributeValue<?>> attributeValues) { if (attributeValues.size() != 0) { final AttributeValue<?> firstAttributeValue = attributeValues.get(0); return (DateTime) firstAttributeValue.getValue(); @@ -158,12 +180,12 @@ public class EidasResponseUtils { * Concert eIDAS Address attribute to Java object. * * @param attributeDefinition eIDAS attribute definition - * @param attributeValues eIDAS attribute value + * @param attributeValues eIDAS attribute value * @return */ @Nullable public static PostalAddress translateAddressAttribute(AttributeDefinition<?> attributeDefinition, - ImmutableList<? extends AttributeValue<?>> attributeValues) { + ImmutableList<? extends AttributeValue<?>> attributeValues) { final AttributeValue<?> firstAttributeValue = attributeValues.get(0); return (PostalAddress) firstAttributeValue.getValue(); } @@ -173,7 +195,7 @@ public class EidasResponseUtils { * * @param currentAddressObj eIDAS current address information * @return current address or null if no attribute is available - * @throws EidasAttributeException if eIDAS attribute is of a wrong type + * @throws EidasAttributeException if eIDAS attribute is of a wrong type */ public static PostalAddressType processAddress(Object currentAddressObj) throws EidasAttributeException { if (currentAddressObj != null) { @@ -198,7 +220,7 @@ public class EidasResponseUtils { * * @param birthNameObj eIDAS birthname information * @return birthName or null if no attribute is available - * @throws EidasAttributeException if eIDAS attribute is of a wrong type + * @throws EidasAttributeException if eIDAS attribute is of a wrong type */ public static String processBirthName(Object birthNameObj) throws EidasAttributeException { if (birthNameObj != null) { @@ -219,7 +241,7 @@ public class EidasResponseUtils { * * @param placeOfBirthObj eIDAS Place-of-Birth information * @return place of Birth or null if no attribute is available - * @throws EidasAttributeException if eIDAS attribute is of a wrong type + * @throws EidasAttributeException if eIDAS attribute is of a wrong type */ public static String processPlaceOfBirth(Object placeOfBirthObj) throws EidasAttributeException { if (placeOfBirthObj != null) { @@ -243,7 +265,7 @@ public class EidasResponseUtils { * * @param dateOfBirthObj eIDAS date-of-birth attribute information * @return formated user's date-of-birth - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static DateTime processDateOfBirth(Object dateOfBirthObj) throws EidasAttributeException { if (!(dateOfBirthObj instanceof DateTime)) { @@ -257,7 +279,7 @@ public class EidasResponseUtils { * * @param dateOfBirthObj eIDAS date-of-birth attribute information * @return formated user's date-of-birth as string - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static String processDateOfBirthToString(Object dateOfBirthObj) throws EidasAttributeException { if (!(dateOfBirthObj instanceof DateTime)) { @@ -271,7 +293,7 @@ public class EidasResponseUtils { * * @param givenNameObj eIDAS givenName attribute information * @return formated user's givenname - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static String processGivenName(Object givenNameObj) throws EidasAttributeException { if (!(givenNameObj instanceof String)) { @@ -285,7 +307,7 @@ public class EidasResponseUtils { * * @param familyNameObj eIDAS familyName attribute information * @return formated user's familyname - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static String processFamilyName(Object familyNameObj) throws EidasAttributeException { if (!(familyNameObj instanceof String)) { @@ -299,7 +321,7 @@ public class EidasResponseUtils { * * @param personalIdObj eIDAS PersonalIdentifierAttribute * @return Unique personal identifier without country-code information - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static String processPseudonym(Object personalIdObj) throws EidasAttributeException { if (!(personalIdObj instanceof String)) { @@ -318,7 +340,7 @@ public class EidasResponseUtils { * * @param taxReferenceObj eIDAS TaxReference attribute information * @return formated user's TaxReference - * @throws EidasAttributeException if NO attribute is available + * @throws EidasAttributeException if NO attribute is available */ public static String processTaxReference(Object taxReferenceObj) throws EidasAttributeException { if (!(taxReferenceObj instanceof String)) { @@ -326,4 +348,4 @@ public class EidasResponseUtils { } return (String) taxReferenceObj; } -} +}
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java index 1836e87b..9d9a0647 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java @@ -29,7 +29,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; @@ -98,8 +98,8 @@ public class EidasResponseValidator { */ final AttributeDefinition<?> attrDefinition = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); - final ImmutableList<? extends AttributeValue<?>> attributeValues = eidasResponse.getAttributes() - .getAttributeMap().get(attrDefinition).asList(); + final ImmutableSet<? extends AttributeValue<?>> attributeValues = eidasResponse.getAttributes() + .getAttributeMap().get(attrDefinition); final List<String> personalIdObj = EidasResponseUtils.translateStringListAttribute(attrDefinition, attributeValues); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml index 32e3241c..fb1fa0f3 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml @@ -105,6 +105,7 @@ class="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask" scope="prototype" /> + <bean id="CreateNewErnpEntryTask" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateNewErnpEntryTask" scope="prototype" /> diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java index c66d8ec0..088c835c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java @@ -30,7 +30,9 @@ import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class EidasAuthenticationModulImplTest { diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java new file mode 100644 index 00000000..62d5c556 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java @@ -0,0 +1,244 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; + +import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; +import at.gv.egiz.eaaf.core.api.IRequestStorage; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.impl.idp.module.test.DummyProtocolAuthService; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import eu.eidas.auth.commons.EidasParameterKeys; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse.Builder; +import eu.eidas.auth.commons.tx.BinaryLightToken; +import eu.eidas.specificcommunication.exception.SpecificCommunicationException; + +@RunWith(SpringJUnit4ClassRunner.class) +@PrepareForTest(CreateIdentityLinkTask.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +@EnableWebMvc +public class EidasSignalServletTest { + + @Autowired private MsConnectorDummyConfigMap basicConfig; + @Autowired private EidasSignalServlet controller; + @Autowired private IRequestStorage storage; + @Autowired private ITransactionStorage transStore; + @Autowired private DummyProtocolAuthService protAuthService; + @Autowired private DummySpecificCommunicationService connector; + + + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + private TestRequestImpl pendingReq; + private MsConnectorDummySpConfiguration oaParam; + + + /** + * jUnit test set-up. + */ + @Before + public void setUp() throws EaafStorageException, URISyntaxException { + httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + final Map<String, String> spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); + oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig); + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH)); + pendingReq = new TestRequestImpl(); + + pendingReq.setSpConfig(oaParam); + pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); + pendingReq.setAuthUrl("http://test.com/"); + pendingReq.setTransactionId("avaasbav"); + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + + connector.setiLightResponse(null); + + + } + + @Test + public void noResponsToken() throws IOException, EaafException { + //set-up + + //execute test + controller.restoreEidasAuthProcess(httpReq, httpResp); + + //validate state + Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertNotNull("missing error", protAuthService.getException()); + Assert.assertEquals("Wrong errorId", "auth.26", + ((EaafException) protAuthService.getException()).getErrorId()); + + } + + @Test + public void unknownResponseToken() throws IOException, EaafException { + //set-up + httpReq.setParameter(EidasParameterKeys.TOKEN.toString(), + RandomStringUtils.randomAlphanumeric(10)); + + //execute test + controller.restoreEidasAuthProcess(httpReq, httpResp); + + //validate state + Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertNotNull("missing error", protAuthService.getException()); + Assert.assertEquals("Wrong errorId", "auth.26", + ((EaafException) protAuthService.getException()).getErrorId()); + + } + + @Test + public void withRelayState() throws IOException, EaafException, SpecificCommunicationException { + //set-up + String relayState = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setPendingReqId(relayState); + storage.storePendingRequest(pendingReq); + + Builder iLightResponse = new AuthenticationResponse.Builder(); + iLightResponse.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(Constants.SUCCESS_URI) + .inResponseTo("_".concat(Random.nextHexRandom16())) + .subjectNameIdFormat("afaf") + .relayState(relayState); + + AuthenticationResponse eidasResp = iLightResponse.build(); + BinaryLightToken token = connector.putResponse(eidasResp); + httpReq.setParameter(EidasParameterKeys.TOKEN.toString(), + Base64.getEncoder().encodeToString(token.getTokenBytes())); + + + //execute test + controller.restoreEidasAuthProcess(httpReq, httpResp); + + + //validate state + Assert.assertNotNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertEquals("wrong eIDAS response", eidasResp, + httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + + Assert.assertNotNull("missing error", protAuthService.getException()); + Assert.assertEquals("Wrong errorId", "PendingRequest object is not of type 'RequestImpl.class'", + ((EaafException) protAuthService.getException()).getErrorId()); + + } + + @Test + public void withOutRelayStateMissingPendingReq() throws IOException, EaafException, SpecificCommunicationException { + //set-up + String pendingReqId = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setPendingReqId(pendingReqId); + storage.storePendingRequest(pendingReq); + + String inResponseTo = "_".concat(Random.nextHexRandom16()); + + Builder iLightResponse = new AuthenticationResponse.Builder(); + iLightResponse.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(Constants.SUCCESS_URI) + .inResponseTo(inResponseTo) + .subjectNameIdFormat("afaf"); + + AuthenticationResponse eidasResp = iLightResponse.build(); + BinaryLightToken token = connector.putResponse(eidasResp); + httpReq.setParameter(EidasParameterKeys.TOKEN.toString(), + Base64.getEncoder().encodeToString(token.getTokenBytes())); + + + //execute test + controller.restoreEidasAuthProcess(httpReq, httpResp); + + + //validate state + Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertNotNull("missing error", protAuthService.getException()); + Assert.assertEquals("Wrong errorId", "auth.26", + ((EaafException) protAuthService.getException()).getErrorId()); + + } + + @Test + public void withInResponseToElement() throws IOException, EaafException, SpecificCommunicationException { + //set-up + String pendingReqId = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setPendingReqId(pendingReqId); + storage.storePendingRequest(pendingReq); + + String inResponseTo = "_".concat(Random.nextHexRandom16()); + transStore.put(inResponseTo, pendingReqId, -1); + + Builder iLightResponse = new AuthenticationResponse.Builder(); + iLightResponse.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(Constants.SUCCESS_URI) + .inResponseTo(inResponseTo) + .subjectNameIdFormat("afaf"); + + AuthenticationResponse eidasResp = iLightResponse.build(); + BinaryLightToken token = connector.putResponse(eidasResp); + httpReq.setParameter(EidasParameterKeys.TOKEN.toString(), + Base64.getEncoder().encodeToString(token.getTokenBytes())); + + + //execute test + controller.restoreEidasAuthProcess(httpReq, httpResp); + + + //validate state + Assert.assertNotNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertEquals("wrong eIDAS response", eidasResp, + httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE)); + + Assert.assertNotNull("missing error", protAuthService.getException()); + Assert.assertEquals("Wrong errorId", "PendingRequest object is not of type 'RequestImpl.class'", + ((EaafException) protAuthService.getException()).getErrorId()); + + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java index 9709aeb9..cf4ed95c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java @@ -31,7 +31,6 @@ import java.io.IOException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchProviderException; -import java.util.Arrays; import java.util.List; import javax.xml.bind.JAXBContext; @@ -40,12 +39,14 @@ import javax.xml.bind.Unmarshaller; import javax.xml.parsers.ParserConfigurationException; import javax.xml.ws.soap.SOAPFaultException; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.binding.soap.SoapFault; +import org.joda.time.DateTime; +import org.jose4j.lang.JoseException; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -59,9 +60,14 @@ import org.springframework.util.Base64Utils; import org.w3c.dom.Element; import org.xml.sax.SAXException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.skjolberg.mockito.soap.SoapServiceRule; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnbEidData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; @@ -69,7 +75,6 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils import at.gv.e_government.reference.namespace.persondata._20020228.PersonNameType; import at.gv.e_government.reference.namespace.persondata._20020228.PhysicalPersonType; import at.gv.egiz.eaaf.core.api.data.EaafConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; import at.gv.egiz.eaaf.core.exceptions.EaafParserException; import at.gv.egiz.eaaf.core.impl.data.Triple; @@ -88,15 +93,17 @@ import szrservices.SignContentResponseType; import szrservices.TravelDocumentType; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) public class SzrClientTest { private static final Logger log = LoggerFactory.getLogger(SzrClientTest.class); - @Autowired - SzrClient szrClient; - @Autowired - IConfiguration basicConfig; + @Autowired SzrClient szrClient; + @Autowired MsConnectorDummyConfigMap basicConfig; + private static ObjectMapper mapper = new ObjectMapper(); + private static final String givenName = "Franz"; private static final String familyName = "Mustermann"; private static final String dateOfBirth = "1989-05-05"; @@ -104,24 +111,12 @@ public class SzrClientTest { private static final String DUMMY_TARGET = EaafConstants.URN_PREFIX_CDID + "ZP"; private SZR szrMock = null; - + ErnbEidData eidData = null; @Rule public SoapServiceRule soap = SoapServiceRule.newInstance(); /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current + "../../basicConfig/default_config.properties"); - - } - - /** * Initialize jUnit test. */ @Before @@ -130,6 +125,16 @@ public class SzrClientTest { szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr"); } + + eidData = new ErnbEidData(); + eidData.setFamilyName(familyName); + eidData.setGivenName(givenName); + eidData.setDateOfBirth(new DateTime()); + eidData.setCitizenCountryCode("IS"); + eidData.setPseudonym("1234sdgsdfg56789ABCDEF"); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject", "false"); + } @@ -158,7 +163,7 @@ public class SzrClientTest { } @Test - public void getBcBindValid() throws SZRException_Exception, SzrCommunicationException { + public void getEidasBindRealSzrResponse() throws SZRException_Exception, SzrCommunicationException, IOException { final SignContentResponse szrResponse = new SignContentResponse(); final SignContentEntry result1 = new SignContentEntry(); final SignContentResponseType content = new SignContentResponseType(); @@ -166,50 +171,116 @@ public class SzrClientTest { szrResponse.setSignContentResponse(content); result1.setKey("bcBindReq"); - result1.setValue(RandomStringUtils.randomAlphanumeric(100)); + result1.setValue(IOUtils.toString(SzrClient.class.getResourceAsStream("/data/szr/signed_eidasBind.jws"))); when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content); final String bcBind = szrClient - .getBcBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), - RandomStringUtils.randomAlphabetic(10)); + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); Assert.assertNotNull("bcBind is null", bcBind); Assert.assertEquals("bcBind not match", result1.getValue(), bcBind); + + } + @Test + public void eidasBindNull() throws SZRException_Exception { when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(null); - try { + + try { szrClient - .getBcBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), - RandomStringUtils.randomAlphabetic(10)); + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); } catch (SzrCommunicationException e) { Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01")); - } - + + } + } + + @Test + public void eidasBindInvalidResponse() throws SZRException_Exception { final SignContentEntry result2 = new SignContentEntry(); final SignContentResponseType content1 = new SignContentResponseType(); content1.getOut().add(result2); when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content1); + try { szrClient - .getBcBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), - RandomStringUtils.randomAlphabetic(10)); + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); } catch (SzrCommunicationException e) { Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01")); + } - + } + + public void eidasBindEmptyResponse() throws SZRException_Exception { + final SignContentEntry result2 = new SignContentEntry(); + final SignContentResponseType content1 = new SignContentResponseType(); + content1.getOut().add(result2); result2.setKey("bcBindReq"); result2.setValue(""); when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content1); + try { szrClient - .getBcBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), - RandomStringUtils.randomAlphabetic(10)); + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); } catch (SzrCommunicationException e) { Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01")); - } + + } } + + @Test + public void eidasBindValid() throws SZRException_Exception, SzrCommunicationException, JsonMappingException, + JsonProcessingException, JoseException { + final SignContentResponse szrResponse = new SignContentResponse(); + final SignContentEntry result1 = new SignContentEntry(); + final SignContentResponseType content = new SignContentResponseType(); + content.getOut().add(result1); + szrResponse.setSignContentResponse(content); + result1.setKey("bcBindReq"); + result1.setValue(RandomStringUtils.randomAlphanumeric(100)); + + when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content); + + final String bcBind = szrClient + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); + + Assert.assertNotNull("bcBind is null", bcBind); + Assert.assertEquals("bcBind not match", result1.getValue(), bcBind); + + } + + @Test + public void eidasBindValidWithMds() throws SZRException_Exception, SzrCommunicationException, JoseException, + JsonMappingException, JsonProcessingException { + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject", "true"); + + final SignContentResponse szrResponse = new SignContentResponse(); + final SignContentEntry result1 = new SignContentEntry(); + final SignContentResponseType content = new SignContentResponseType(); + content.getOut().add(result1); + szrResponse.setSignContentResponse(content); + + result1.setKey("bcBindReq"); + result1.setValue(RandomStringUtils.randomAlphanumeric(100)); + + when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content); + + final String bcBind = szrClient + .getEidsaBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10), + RandomStringUtils.randomAlphabetic(10), eidData); + + Assert.assertNotNull("bcBind is null", bcBind); + Assert.assertEquals("bcBind not match", result1.getValue(), bcBind); + + } + @Test public void getIdentityLinkRawModeValidResponse() throws SZRException_Exception, EaafParserException, NoSuchProviderException, IOException, InvalidKeyException, diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java index 2f573f53..1e7ff369 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java @@ -29,19 +29,26 @@ import java.security.MessageDigest; import java.security.NoSuchProviderException; import java.util.List; +import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; +import org.bouncycastle.util.encoders.Base64; +import org.joda.time.DateTime; +import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.IfProfileValue; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.Base64Utils; import org.w3c.dom.Element; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnbEidData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; @@ -59,9 +66,16 @@ import szrservices.PersonInfoType; import szrservices.SZRException_Exception; import szrservices.TravelDocumentType; -@Ignore + +@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment") @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_basic_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_realConfig.xml"}) +@TestPropertySource(locations = { + //"classpath:/application.properties", + "file:/home/tlenz/Projekte/config/ms_connector/default_config.properties", + }) public class SzrClientTestProduction { private static final Logger log = LoggerFactory.getLogger(SzrClientTestProduction.class); @@ -84,6 +98,33 @@ public class SzrClientTestProduction { } @Test + public void getVsz() throws SzrCommunicationException, EidasSAuthenticationException { + String vsz = szrClient.getEncryptedStammzahl(getPersonInfo()); + Assert.assertNotNull("vsz", vsz); + + } + + @Test + public void getEidasBind() throws SzrCommunicationException, EidasSAuthenticationException { + String vsz = RandomStringUtils.randomAlphanumeric(10); + String bindingPubKey = Base64.toBase64String(RandomStringUtils.random(20).getBytes()); + String eidStatus = "urn:eidgvat:eid.status.eidas"; + ErnbEidData eidData = new ErnbEidData(); + eidData.setFamilyName(familyName); + eidData.setGivenName(givenName); + eidData.setDateOfBirth(new DateTime()); + eidData.setCitizenCountryCode("IS"); + eidData.setPseudonym("1234sdgsdfg56789ABCDEF"); + + + String eidasBind = szrClient.getEidsaBind(vsz, bindingPubKey, eidStatus, eidData); + + Assert.assertNotNull("eidasBind", eidasBind); + + } + + + @Test public void getIdentityLinkRawMode() throws SZRException_Exception, EaafParserException, NoSuchProviderException, IOException, InvalidKeyException, EidasSAuthenticationException { log.debug("Starting connecting SZR Gateway"); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java index dd485ee6..2e6790c5 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java @@ -2,10 +2,10 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.powermock.api.mockito.PowerMockito.when; -import java.io.IOException; -import java.net.URI; import java.net.URISyntaxException; import java.security.KeyStore; import java.security.Provider; @@ -13,11 +13,10 @@ import java.security.cert.X509Certificate; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; -import javax.xml.namespace.QName; - import org.apache.commons.lang3.RandomStringUtils; import org.jetbrains.annotations.NotNull; import org.jose4j.jwa.AlgorithmConstraints; @@ -25,10 +24,10 @@ import org.jose4j.jwa.AlgorithmConstraints.ConstraintType; import org.jose4j.jws.AlgorithmIdentifiers; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.powermock.core.classloader.annotations.PrepareForTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletRequest; @@ -39,19 +38,23 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.skjolberg.mockito.soap.SoapServiceRule; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.AuthBlockSigningService; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils; import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils.JwsResult; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.IRequestStorage; import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; import at.gv.egiz.eaaf.core.api.data.EaafConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; @@ -64,28 +67,31 @@ import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import at.gv.egiz.eaaf.core.impl.utils.Random; import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; -import eu.eidas.auth.commons.attribute.PersonType; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap.Builder; import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; import lombok.val; +import szrservices.JwsHeaderParam; +import szrservices.PersonInfoType; import szrservices.SZR; import szrservices.SignContentEntry; import szrservices.SignContentResponseType; @RunWith(SpringJUnit4ClassRunner.class) -//@RunWith(PowerMockRunner.class) -//@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class) @PrepareForTest(CreateIdentityLinkTask.class) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) public class CreateIdentityLinkTaskEidNewTest { @Autowired(required = true) private CreateIdentityLinkTask task; @Autowired(required = true) - private IConfiguration basicConfig; + private MsConnectorDummyConfigMap basicConfig; @Autowired protected EidasAttributeRegistry attrRegistry; @@ -93,7 +99,7 @@ public class CreateIdentityLinkTaskEidNewTest { EaafKeyStoreFactory keyStoreFactory; @Autowired - private AuthBlockSigningService authBlockSigner; + private IRequestStorage requestStorage; final ExecutionContext executionContext = new ExecutionContextImpl(); private MockHttpServletRequest httpReq; @@ -110,22 +116,14 @@ public class CreateIdentityLinkTaskEidNewTest { AlgorithmIdentifiers.ECDSA_USING_P521_CURVE_AND_SHA512, AlgorithmIdentifiers.RSA_PSS_USING_SHA256, AlgorithmIdentifiers.RSA_PSS_USING_SHA512)); + private static ObjectMapper mapper = new ObjectMapper(); + + private AuthenticationResponse response; + @Rule public final SoapServiceRule soap = SoapServiceRule.newInstance(); /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_3.properties"); - - } - - /** * jUnit test set-up. */ @Before @@ -135,7 +133,9 @@ public class CreateIdentityLinkTaskEidNewTest { httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + final Map<String, String> spConfig = new HashMap<>(); spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); @@ -143,15 +143,17 @@ public class CreateIdentityLinkTaskEidNewTest { oaParam = new DummySpConfiguration(spConfig, basicConfig); pendingReq = new TestRequestImpl(); - final AuthenticationResponse response = buildDummyAuthResponse(); - + response = buildDummyAuthResponse(false); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); + + pendingReq.setSpConfig(oaParam); pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); pendingReq.setAuthUrl("http://test.com/"); pendingReq.setTransactionId("avaasbav"); - + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "XX"); executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true); @@ -159,38 +161,223 @@ public class CreateIdentityLinkTaskEidNewTest { } @Test - public void successfulProcess() throws Exception { + public void successfulProcessWithDeInfos() throws Exception { //initialize test - when(szrMock, "getStammzahlEncrypted", any(), any()).thenReturn(RandomStringUtils.randomNumeric(10)); + response = buildDummyAuthResponse(true); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); + + String vsz = RandomStringUtils.randomNumeric(10); + when(szrMock, "getStammzahlEncrypted", any(), any()).thenReturn(vsz); val signContentResp = new SignContentResponseType(); final SignContentEntry signContentEntry = new SignContentEntry(); signContentEntry.setValue(RandomStringUtils.randomAlphanumeric(10)); signContentResp.getOut().add(signContentEntry); when(szrMock, "signContent", any(), any(), any()).thenReturn(signContentResp); + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + //perform test task.execute(pendingReq, executionContext); - //validate state - final AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); Assert.assertNotNull("AuthProcessData", authProcessData); Assert.assertNotNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); Assert.assertNotNull("AuthBlock", authBlock); - - //check authblock signature + + Assert.assertTrue("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + + // check authblock signature final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT, BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.toArray(new String[BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.size()])); Pair<KeyStore, Provider> keyStore = getKeyStore(); X509Certificate[] trustedCerts = EaafKeyStoreUtils .getPrivateKeyAndCertificates(keyStore.getFirst(), ALIAS, PW.toCharArray(), true, "junit").getSecond(); JwsResult result = JoseUtils.validateSignature(authBlock, Arrays.asList(trustedCerts), constraints); - Assert.assertTrue("AuthBlock not valid", result.isValid()); + Assert.assertTrue("AuthBlock not valid", result.isValid()); + JsonNode authBlockJson = mapper.readTree(result.getPayLoad()); + Assert.assertNotNull("deserialized AuthBlock", authBlockJson); + + Assert.assertNotNull("no piiTransactionId in pendingRequesdt", + storedPendingReq.getUniquePiiTransactionIdentifier()); + Assert.assertEquals("piiTransactionId", storedPendingReq.getUniquePiiTransactionIdentifier(), + authBlockJson.get("piiTransactionId").asText()); + Assert.assertEquals("appId", randomTestSp, authBlockJson.get("appId").asText()); + Assert.assertFalse("'challenge' is null", authBlockJson.get("challenge").asText().isEmpty()); + Assert.assertFalse("'timestamp' is null", authBlockJson.get("timestamp").asText().isEmpty()); + + + // check vsz request + ArgumentCaptor<PersonInfoType> argument4 = ArgumentCaptor.forClass(PersonInfoType.class); + ArgumentCaptor<Boolean> argument5 = ArgumentCaptor.forClass(Boolean.class); + verify(szrMock, times(1)).getStammzahlEncrypted(argument4.capture(), argument5.capture()); + + Boolean param5 = argument5.getValue(); + Assert.assertTrue("insertERnP flag", param5); + PersonInfoType person = argument4.getValue(); + Assert.assertEquals("FamilyName", + response.getAttributes().getAttributeValuesByFriendlyName("FamilyName").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("FamilyName").iterator().next()), + person.getPerson().getName().getFamilyName()); + Assert.assertEquals("GivenName", + response.getAttributes().getAttributeValuesByFriendlyName("FirstName").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("FirstName").iterator().next()), + person.getPerson().getName().getGivenName()); + Assert.assertEquals("DateOfBirth", + response.getAttributes().getAttributeValuesByFriendlyName("DateOfBirth").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("DateOfBirth").iterator().next()) + .toString().split("T")[0], + person.getPerson().getDateOfBirth()); + + Assert.assertEquals("PlaceOfBirth", + response.getAttributes().getAttributeValuesByFriendlyName("PlaceOfBirth").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("PlaceOfBirth").iterator().next()), + person.getPerson().getPlaceOfBirth()); + Assert.assertEquals("BirthName", + response.getAttributes().getAttributeValuesByFriendlyName("BirthName").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("BirthName").iterator().next()), + person.getPerson().getAlternativeName().getFamilyName()); + + Assert.assertEquals("CitizenCountry", "LU", person.getTravelDocument().getIssuingCountry()); + Assert.assertEquals("DocumentType", "ELEKTR_DOKUMENT", person.getTravelDocument().getDocumentType()); + + Assert.assertEquals("Identifier", + response.getAttributes().getAttributeValuesByFriendlyName("PersonIdentifier").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("PersonIdentifier").iterator().next()) + .toString().split("/")[2], + person.getTravelDocument().getDocumentNumber()); + + // check bcBind singing request + ArgumentCaptor<Boolean> argument1 = ArgumentCaptor.forClass(Boolean.class); + ArgumentCaptor<List<JwsHeaderParam>> argument2 = ArgumentCaptor.forClass(List.class); + ArgumentCaptor<List<SignContentEntry>> argument3 = ArgumentCaptor.forClass(List.class); + verify(szrMock, times(1)).signContent(argument1.capture(), argument2.capture(), argument3.capture()); + Boolean param1 = argument1.getValue(); + Assert.assertFalse("addCert flag", param1); + + List<JwsHeaderParam> param2 = argument2.getValue(); + Assert.assertNotNull("JWS Headers", param2); + Assert.assertFalse("JWS Headers empty", param2.isEmpty()); + Assert.assertEquals("Wrong JWS header size", 1, param2.size()); + Assert.assertEquals("Missing JWS header key", "urn:at.gv.eid:bindtype", param2.get(0).getKey()); + Assert.assertEquals("Missing JWS header value", "urn:at.gv.eid:eidasBind", param2.get(0).getValue()); + + List<SignContentEntry> param3 = argument3.getValue(); + Assert.assertNotNull("sign Payload", param3); + Assert.assertEquals("wrong sign-payload size", 1, param3.size()); + Assert.assertNotNull("payload", param3.get(0).getValue().getBytes()); + JsonNode bcBind = mapper.readTree(param3.get(0).getValue().getBytes()); + Assert.assertNotNull("bcbind req", bcBind); + + Assert.assertEquals("vsz", vsz, bcBind.get("urn:eidgvat:attributes.vsz.value").asText()); + Assert.assertEquals("eid status", "urn:eidgvat:eid.status.eidas", + bcBind.get("urn:eidgvat:attributes.eid.status").asText()); + Assert.assertTrue("pubKeys", bcBind.has("urn:eidgvat:attributes.user.pubkeys")); + Assert.assertTrue("pubKeys", bcBind.get("urn:eidgvat:attributes.user.pubkeys").isArray()); + Iterator<JsonNode> pubKeys = bcBind.get("urn:eidgvat:attributes.user.pubkeys").elements(); + Assert.assertTrue("No PubKey", pubKeys.hasNext()); + Assert.assertEquals("Wrong pubKey", + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmxcB5jnrAwGn7xjgVFv1UBUv1pluwDRFQx7x5O6rSn7pblYfwaWeKa8y" + + "jS5BDDaZ00mhhnSlm2XByNrkg5yBGetTgBGtQVAxV5apfuAWN8TS3uSXgdZol7Khd6kraUITtnulvLe8tNaboom5P0zN6UxbJN" + + "NVLishVp80HiRXiDbplCTUk8b5cYtmivdb0+5JBTa7L5N/anRVnHHoJCXgNPTouO8daUHZbG1mPk0HgqD8rhZ+OBzE+APKH9No" + + "agedSrGRDLdIgZxkrg0mxmfsZQIi2wdJSi3y0PAjEps/s4j0nmw9bPRgCMNLBqqjxtN5JKC8E1yyLm7YefXv/nPaMwIDAQAB", + pubKeys.next().asText()); + Assert.assertFalse("More than one PubKey", pubKeys.hasNext()); } @Test + public void successfulProcessWithStandardInfos() throws Exception { + //initialize test + String vsz = RandomStringUtils.randomNumeric(10); + when(szrMock, "getStammzahlEncrypted", any(), any()).thenReturn(vsz); + val signContentResp = new SignContentResponseType(); + final SignContentEntry signContentEntry = new SignContentEntry(); + signContentEntry.setValue(RandomStringUtils.randomAlphanumeric(10)); + signContentResp.getOut().add(signContentEntry); + when(szrMock, "signContent", any(), any(), any()).thenReturn(signContentResp); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + //perform test + task.execute(pendingReq, executionContext); + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNotNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNotNull("AuthBlock", authBlock); + + Assert.assertTrue("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + // check vsz request + ArgumentCaptor<PersonInfoType> argument4 = ArgumentCaptor.forClass(PersonInfoType.class); + ArgumentCaptor<Boolean> argument5 = ArgumentCaptor.forClass(Boolean.class); + verify(szrMock, times(1)).getStammzahlEncrypted(argument4.capture(), argument5.capture()); + + Boolean param5 = argument5.getValue(); + Assert.assertTrue("insertERnP flag", param5); + PersonInfoType person = argument4.getValue(); + Assert.assertEquals("FamilyName", + response.getAttributes().getAttributeValuesByFriendlyName("FamilyName").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("FamilyName").iterator().next()), + person.getPerson().getName().getFamilyName()); + Assert.assertEquals("GivenName", + response.getAttributes().getAttributeValuesByFriendlyName("FirstName").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("FirstName").iterator().next()), + person.getPerson().getName().getGivenName()); + Assert.assertEquals("DateOfBirth", + response.getAttributes().getAttributeValuesByFriendlyName("DateOfBirth").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("DateOfBirth").iterator().next()) + .toString().split("T")[0], + person.getPerson().getDateOfBirth()); + + Assert.assertNull("PlaceOfBirth", person.getPerson().getPlaceOfBirth()); + Assert.assertNull("BirthName", person.getPerson().getAlternativeName()); + + Assert.assertEquals("CitizenCountry", "LU", person.getTravelDocument().getIssuingCountry()); + Assert.assertEquals("DocumentType", "ELEKTR_DOKUMENT", person.getTravelDocument().getDocumentType()); + + Assert.assertEquals("Identifier", + response.getAttributes().getAttributeValuesByFriendlyName("PersonIdentifier").getFirstValue( + response.getAttributes().getDefinitionsByFriendlyName("PersonIdentifier").iterator().next()) + .toString().split("/")[2], + person.getTravelDocument().getDocumentNumber()); + + + } + + @Test public void getStammzahlEncryptedExceptionTest() throws Exception { try { when(szrMock, "getStammzahlEncrypted", any(), any()).thenReturn(null); @@ -242,31 +429,40 @@ public class CreateIdentityLinkTaskEidNewTest { } @NotNull - private AuthenticationResponse buildDummyAuthResponse() throws URISyntaxException { - final AttributeDefinition attributeDef = AttributeDefinition.builder() - .friendlyName(Constants.eIDAS_ATTR_PERSONALIDENTIFIER).nameUri(new URI("ad", "sd", "ff")) - .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "af")) - .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); - final AttributeDefinition attributeDef2 = AttributeDefinition.builder() - .friendlyName(Constants.eIDAS_ATTR_CURRENTFAMILYNAME).nameUri(new URI("ad", "sd", "fff")) - .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "aff")) - .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); - final AttributeDefinition attributeDef3 = AttributeDefinition.builder() - .friendlyName(Constants.eIDAS_ATTR_CURRENTGIVENNAME).nameUri(new URI("ad", "sd", "ffff")) - .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "afff")) - .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); - final AttributeDefinition attributeDef4 = AttributeDefinition.builder() - .friendlyName(Constants.eIDAS_ATTR_DATEOFBIRTH).nameUri(new URI("ad", "sd", "fffff")) - .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "affff")) - .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.DateTimeAttributeValueMarshaller").build(); - - final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder() - .put(attributeDef, "de/st/" + RandomStringUtils.randomNumeric(64)) - .put(attributeDef2, RandomStringUtils.randomAlphabetic(10)) - .put(attributeDef3, RandomStringUtils.randomAlphabetic(10)).put(attributeDef4, "2001-01-01").build(); + private AuthenticationResponse buildDummyAuthResponse(boolean withAll) throws URISyntaxException { + final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); + final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); + final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); + final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_DATEOFBIRTH).first(); + final AttributeDefinition attributeDef5 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PLACEOFBIRTH).first(); + final AttributeDefinition attributeDef6 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_BIRTHNAME).first(); + + final Builder attributeMap = ImmutableAttributeMap.builder(); + attributeMap.put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64)); + attributeMap.put(attributeDef2, RandomStringUtils.randomAlphabetic(10)); + attributeMap.put(attributeDef3, RandomStringUtils.randomAlphabetic(10)); + attributeMap.put(attributeDef4, "2001-01-01"); + if (withAll) { + attributeMap.put(attributeDef5, RandomStringUtils.randomAlphabetic(10)); + attributeMap.put(attributeDef6, RandomStringUtils.randomAlphabetic(10)); + + } val b = new AuthenticationResponse.Builder(); - return b.id("aasdf").issuer("asd").subject("asf").statusCode("200").inResponseTo("asdf").subjectNameIdFormat("afaf") - .attributes(attributeMap).build(); + return b.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(Constants.SUCCESS_URI) + .inResponseTo("_".concat(Random.nextHexRandom16())) + .subjectNameIdFormat("afaf") + .levelOfAssurance(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)) + .attributes(attributeMap.build()) + .build(); } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java new file mode 100644 index 00000000..8c7558dd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java @@ -0,0 +1,464 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; + +import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; +import static org.mockito.ArgumentMatchers.any; + +import java.net.URISyntaxException; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; + +import org.apache.commons.lang3.RandomStringUtils; +import org.jetbrains.annotations.NotNull; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.skjolberg.mockito.soap.SoapServiceRule; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.IRequestStorage; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import eu.eidas.auth.commons.attribute.AttributeDefinition; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; +import lombok.val; +import szrservices.GetBPK; +import szrservices.GetBPKResponse; +import szrservices.GetIdentityLinkEidasResponse; +import szrservices.PersonInfoType; +import szrservices.SZR; +import szrservices.SZRException_Exception; + +@RunWith(SpringJUnit4ClassRunner.class) +@PrepareForTest(CreateIdentityLinkTask.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +public class CreateIdentityLinkTaskTest { + + @Autowired(required = true) + private CreateIdentityLinkTask task; + + @Autowired(required = true) + private MsConnectorDummyConfigMap basicConfig; + @Autowired + protected EidasAttributeRegistry attrRegistry; + + @Autowired + EaafKeyStoreFactory keyStoreFactory; + + @Autowired + private IRequestStorage requestStorage; + + final ExecutionContext executionContext = new ExecutionContextImpl(); + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + private TestRequestImpl pendingReq; + private DummySpConfiguration oaParam; + private SZR szrMock; + + private AuthenticationResponse response; + private Map<String, String> spConfig; + + @Rule + public final SoapServiceRule soap = SoapServiceRule.newInstance(); + + /** + * jUnit test set-up. + */ + @Before + public void setUp() throws EaafStorageException, URISyntaxException { + + httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "false"); + + spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "false"); + oaParam = new DummySpConfiguration(spConfig, basicConfig); + pendingReq = new TestRequestImpl(); + + response = buildDummyAuthResponse(); + + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); + pendingReq.setSpConfig(oaParam); + pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); + pendingReq.setAuthUrl("http://test.com/"); + pendingReq.setTransactionId("avaasbav"); + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "XX"); + executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true); + + szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr"); + } + + + @Test + public void buildIdentityLink() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + + + //perform test + task.execute(pendingReq, executionContext); + + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNull("AuthBlock", authBlock); + + Assert.assertFalse("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + Assert.assertNotNull("IDL", authProcessData.getIdentityLink()); + checkElement("Mustermann", authProcessData.getIdentityLink().getFamilyName()); + checkElement("Hans", authProcessData.getIdentityLink().getGivenName()); + checkElement("1989-05-05", authProcessData.getIdentityLink().getDateOfBirth()); + checkElement("urn:publicid:gv.at:baseid", authProcessData.getIdentityLink().getIdentificationType()); + checkElement("k+zDM1BVpN1WJO4x7ZQ3ng==", authProcessData.getIdentityLink().getIdentificationValue()); + Assert.assertNotNull(authProcessData.getIdentityLink().getSerializedSamlAssertion()); + Assert.assertNotNull(authProcessData.getIdentityLink().getSamlAssertion()); + + Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + Assert.assertEquals("wrong bPK", "XX:FkXtOaSSeR3elyL9KLLvijIYDMU=", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + + } + + @Test + public void buildIdentityLinkWithWbpk() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml"); + spConfig.put("target", EaafConstants.URN_PREFIX_WBPK + "FN+123456i"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true"); + + //perform test + task.execute(pendingReq, executionContext); + + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNull("AuthBlock", authBlock); + + Assert.assertFalse("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + Assert.assertEquals("wrong bPK", "FN+123456i:D26vJncPS2W790RH/LP04V+vNOQ=", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + + } + + @Test + public void buildIdentityLinkWithEidasBpk() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_2.xml"); + spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EU"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true"); + + //perform test + task.execute(pendingReq, executionContext); + + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNull("AuthBlock", authBlock); + + Assert.assertFalse("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + Assert.assertNotNull("IDL", authProcessData.getIdentityLink()); + checkElement("Musterfrau", authProcessData.getIdentityLink().getFamilyName()); + checkElement("Martina", authProcessData.getIdentityLink().getGivenName()); + checkElement("1991-04-15", authProcessData.getIdentityLink().getDateOfBirth()); + checkElement("urn:publicid:gv.at:baseid", authProcessData.getIdentityLink().getIdentificationType()); + checkElement("k+zDM1BV1312312332x7ZQ3ng==", authProcessData.getIdentityLink().getIdentificationValue()); + + Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + Assert.assertEquals("wrong bPK", "AT+EU:AT/EU/1+wqDl059/02Ptny0g+LyuLDJV0=", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + + } + + @Test + public void buildIdentityLinkWithUnknownBpk() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml"); + spConfig.put("target", "urn:notextis:1234"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true"); + + try { + task.execute(pendingReq, executionContext); + Assert.fail("unknown bPKType not detected"); + + } catch (TaskExecutionException e) { + Assert.assertEquals("ErrorId", "builder.33", + ((EaafException) e.getOriginalException()).getErrorId()); + Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) + .getParams().length); + + } + } + + @Test + public void noBpkResult() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml"); + GetBPKResponse getBpkResp = new GetBPKResponse(); + org.mockito.Mockito.when(szrMock.getBPK(any(GetBPK.class))).thenReturn(getBpkResp ); + + spConfig.put("target", "urn:notextis:1234"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "true"); + + try { + task.execute(pendingReq, executionContext); + Assert.fail("unknown bPKType not detected"); + + } catch (TaskExecutionException e) { + Assert.assertEquals("ErrorId", "ernb.01", + ((EaafException) e.getOriginalException()).getErrorId()); + + } + } + + @Test + public void bPKFromSzr() throws Exception { + //initialize test + setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml"); + String bpk = RandomStringUtils.randomAlphanumeric(10); + GetBPKResponse getBpkResp = new GetBPKResponse(); + getBpkResp.getGetBPKReturn().add(bpk); + org.mockito.Mockito.when(szrMock.getBPK(any(GetBPK.class))).thenReturn(getBpkResp ); + + spConfig.put("target", "urn:notextis:1234"); + + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true"); + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "true"); + + //execute test + task.execute(pendingReq, executionContext); + + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNull("AuthBlock", authBlock); + + Assert.assertFalse("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + Assert.assertEquals("wrong bPK", bpk, + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME)); + } + + @Test + public void buildDummyIdl() throws Exception { + //initialize test + String randomTestSp = RandomStringUtils.randomAlphabetic(10); + pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "true"); + + + //perform test + task.execute(pendingReq, executionContext); + + + //validate state + // check if pendingRequest was stored + IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedPendingReq); + + //check data in session + final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertNotNull("AuthProcessData", authProcessData); + Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class)); + + String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class); + Assert.assertNull("AuthBlock", authBlock); + + Assert.assertFalse("EID process", authProcessData.isEidProcess()); + Assert.assertTrue("foreigner process", authProcessData.isForeigner()); + Assert.assertEquals("EID-ISSUING_NATION", "LU", + authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class)); + Assert.assertNotNull("LoA is null", authProcessData.getQaaLevel()); + Assert.assertEquals("LoA", response.getLevelOfAssurance(), + authProcessData.getQaaLevel()); + + Assert.assertNotNull("IDL", authProcessData.getIdentityLink()); + + } + + private void setSzrResponseIdentityLink(String responseXmlPath) throws JAXBException, SZRException_Exception { + final JAXBContext jaxbContext = JAXBContext + .newInstance(szrservices.ObjectFactory.class, org.w3._2001._04.xmldsig_more.ObjectFactory.class, + org.w3._2000._09.xmldsig.ObjectFactory.class, + at.gv.e_government.reference.namespace.persondata._20020228.ObjectFactory.class); + final Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + final GetIdentityLinkEidasResponse szrResponse = (GetIdentityLinkEidasResponse) jaxbUnmarshaller + .unmarshal(this.getClass().getResourceAsStream(responseXmlPath)); + org.mockito.Mockito.when(szrMock.getIdentityLinkEidas(any(PersonInfoType.class))).thenReturn(szrResponse.getGetIdentityLinkReturn()); + + } + private void checkElement(String expected, String value) { + Assert.assertNotNull(value); + Assert.assertEquals(expected, value); + + } + + @NotNull + private AuthenticationResponse buildDummyAuthResponse() throws URISyntaxException { + final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); + final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); + final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); + final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_DATEOFBIRTH).first(); + + final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder() + .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64)) + .put(attributeDef2, RandomStringUtils.randomAlphabetic(10)) + .put(attributeDef3, RandomStringUtils.randomAlphabetic(10)).put(attributeDef4, "2001-01-01").build(); + + val b = new AuthenticationResponse.Builder(); + return b.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode("200") + .inResponseTo("_".concat(Random.nextHexRandom16())) + .subjectNameIdFormat("afaf") + .levelOfAssurance(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)) + .attributes(attributeMap) + .build(); + } +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskFirstTest.java deleted file mode 100644 index e8fcdd3d..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskFirstTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; -import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; -import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; -import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; -import eu.eidas.auth.commons.light.ILightRequest; -import eu.eidas.specificcommunication.exception.SpecificCommunicationException; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") -@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) -public class GenerateAuthnRequestTaskFirstTest { - - @Autowired(required = true) - private GenerateAuthnRequestTask task; - @Autowired(required = true) - private DummySpecificCommunicationService commService; - @Autowired(required = true) - private IConfiguration basicConfig; - - final ExecutionContext executionContext = new ExecutionContextImpl(); - private MockHttpServletRequest httpReq; - private MockHttpServletResponse httpResp; - private TestRequestImpl pendingReq; - private DummySpConfiguration oaParam; - - /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current - + "src/test/resources/config/junit_config_1.properties"); - - } - - /** - * jUnit test set-up. - * - */ - @Before - public void setUp() { - - httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); - httpResp = new MockHttpServletResponse(); - RequestContextHolder.resetRequestAttributes(); - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - - final Map<String, String> spConfig = new HashMap<>(); - spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); - spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); - oaParam = new DummySpConfiguration(spConfig, basicConfig); - - pendingReq = new TestRequestImpl(); - pendingReq.setSpConfig(oaParam); - pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); - pendingReq.setAuthUrl("http://test.com/"); - - } - - @Test - @DirtiesContext - public void withCustomStaticProviderNameForPublicSPs() throws TaskExecutionException, - SpecificCommunicationException { - executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); - - try { - task.execute(pendingReq, executionContext); - - } catch (final TaskExecutionException e) { - // forward URL is not set in example config - org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(), - "Wrong exception"); - Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException()) - .getErrorId()); - Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) - .getParams().length); - Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL, ((EaafException) e - .getOriginalException()).getParams()[0]); - - } - - final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); - - Assert.assertEquals("ProviderName is not Static", "myNode", eidasReq.getProviderName()); - Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); - Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskSecondTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskSecondTest.java deleted file mode 100644 index 10896f48..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskSecondTest.java +++ /dev/null @@ -1,140 +0,0 @@ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; -import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; -import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; -import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; -import eu.eidas.auth.commons.light.ILightRequest; -import eu.eidas.specificcommunication.exception.SpecificCommunicationException; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") -@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) -public class GenerateAuthnRequestTaskSecondTest { - - @Autowired(required = true) - private GenerateAuthnRequestTask task; - @Autowired(required = true) - private DummySpecificCommunicationService commService; - @Autowired(required = true) - private IConfiguration basicConfig; - - final ExecutionContext executionContext = new ExecutionContextImpl(); - private MockHttpServletRequest httpReq; - private MockHttpServletResponse httpResp; - private TestRequestImpl pendingReq; - private DummySpConfiguration oaParam; - - /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current + "../../basicConfig/default_config.properties"); - - } - - /** - * jUnit test set-up. - * - */ - @Before - public void setUp() { - - httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); - httpResp = new MockHttpServletResponse(); - RequestContextHolder.resetRequestAttributes(); - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - - final Map<String, String> spConfig = new HashMap<>(); - spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); - spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); - oaParam = new DummySpConfiguration(spConfig, basicConfig); - - pendingReq = new TestRequestImpl(); - pendingReq.setSpConfig(oaParam); - pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); - pendingReq.setAuthUrl("http://test.com/"); - - } - - @Test - public void noCountryCode() { - try { - task.execute(pendingReq, executionContext); - Assert.fail("No countryCode not detected"); - - } catch (final TaskExecutionException e) { - Assert.assertEquals("wrong pendingReqId", pendingReq.getPendingRequestId(), e.getPendingRequestID()); - org.springframework.util.Assert.isInstanceOf(EidasSAuthenticationException.class, e - .getOriginalException(), "Wrong exception"); - Assert.assertEquals("wrong errorCode", "eidas.03", ((EaafException) e.getOriginalException()) - .getErrorId()); - - } - - } - - @Test - @DirtiesContext - public void withStaticProviderNameForPublicSPs() throws TaskExecutionException, - SpecificCommunicationException { - executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); - - try { - task.execute(pendingReq, executionContext); - - } catch (final TaskExecutionException e) { - // forward URL is not set in example config - org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(), - "Wrong exception"); - Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException()) - .getErrorId()); - Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) - .getParams().length); - Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL, ((EaafException) e - .getOriginalException()).getParams()[0]); - - } - - final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); - - Assert.assertEquals("ProviderName is not Static", - Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, eidasReq.getProviderName()); - Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); - Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java new file mode 100644 index 00000000..c416b515 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java @@ -0,0 +1,486 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; + +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.exceptions.GuiBuildException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import eu.eidas.auth.commons.light.ILightRequest; +import eu.eidas.specificcommunication.exception.SpecificCommunicationException; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +public class GenerateAuthnRequestTaskTest { + + @Autowired(required = true) + private GenerateAuthnRequestTask task; + @Autowired(required = true) + private DummySpecificCommunicationService commService; + @Autowired(required = true) + private MsConnectorDummyConfigMap basicConfig; + + final ExecutionContext executionContext = new ExecutionContextImpl(); + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + private TestRequestImpl pendingReq; + private DummySpConfiguration oaParam; + private Map<String, String> spConfig; + + + /** + * jUnit test set-up. + * + */ + @Before + public void setUp() { + + httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + oaParam = new DummySpConfiguration(spConfig, basicConfig); + + pendingReq = new TestRequestImpl(); + pendingReq.setSpConfig(oaParam); + pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); + pendingReq.setAuthUrl("http://test.com/"); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.entityId", + RandomStringUtils.randomAlphabetic(10)); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", + "http://test/" + RandomStringUtils.randomAlphabetic(5)); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + } + + @Test + public void missingIssuer() { + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.entityId"); + + //execute test + try { + task.execute(pendingReq, executionContext); + Assert.fail("Missing Issuer not detected"); + + } catch (final TaskExecutionException e) { + // forward URL is not set in example config + org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(), + "Wrong exception"); + Assert.assertEquals("wrong errorCode", "config.27", ((EaafException) e.getOriginalException()) + .getErrorId()); + Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) + .getParams().length); + + } + } + + @Test + public void missingForwardUrl() { + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.forward.endpoint"); + + //execute test + try { + task.execute(pendingReq, executionContext); + Assert.fail("Missing Forward-URL not detected"); + + } catch (final TaskExecutionException e) { + // forward URL is not set in example config + org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(), + "Wrong exception"); + Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException()) + .getErrorId()); + Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) + .getParams().length); + Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL, ((EaafException) e + .getOriginalException()).getParams()[0]); + + } + } + + @Test + public void selectUnknownStage() { + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + String stage = RandomStringUtils.randomAlphabetic(5); + executionContext.put("selectedEnvironment", stage); + + //execute test + try { + task.execute(pendingReq, executionContext); + Assert.fail("Missing Forward-URL not detected"); + + } catch (final TaskExecutionException e) { + // forward URL is not set in example config + org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(), + "Wrong exception"); + Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException()) + .getErrorId()); + Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException()) + .getParams().length); + Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL + "." + stage, ((EaafException) e + .getOriginalException()).getParams()[0]); + + } + } + + @Test + public void selectQsEndpoint() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + executionContext.put("selectedEnvironment", "qs"); + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.qs", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + + //perform test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("Wrong redirect endpoint", + ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint)); + + } + + @Test + public void selectTestEndpoint() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + executionContext.put("selectedEnvironment", "test"); + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.test", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + + //perform test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("Wrong redirect endpoint", + ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint)); + + } + + @Test + public void selectDevEndpoint() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + executionContext.put("selectedEnvironment", "dev"); + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.dev", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + + //perform test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("Wrong redirect endpoint", + ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint)); + + } + + @Test + public void noCountryCode() { + try { + task.execute(pendingReq, executionContext); + Assert.fail("No countryCode not detected"); + + } catch (final TaskExecutionException e) { + Assert.assertEquals("wrong pendingReqId", pendingReq.getPendingRequestId(), e.getPendingRequestID()); + org.springframework.util.Assert.isInstanceOf(EidasSAuthenticationException.class, e + .getOriginalException(), "Wrong exception"); + Assert.assertEquals("wrong errorCode", "eidas.03", ((EaafException) e.getOriginalException()) + .getErrorId()); + + } + } + + @Test + public void withStaticProviderNameForPublicSPs() throws TaskExecutionException, + SpecificCommunicationException { + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.publicSectorTargets", ".*"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true"); + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs"); + + + //execute test + task.execute(pendingReq, executionContext); + + //validate state + final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); + + Assert.assertEquals("ProviderName is not Static", + Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, eidasReq.getProviderName()); + Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); + Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); + + } + + @Test + public void withCustomStaticProviderNameForPublicSPs() throws TaskExecutionException, + SpecificCommunicationException { + String cc = RandomStringUtils.randomAlphabetic(2); + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, cc); + + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.publicSectorTargets", ".*"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs", "myNode"); + + //execute test + task.execute(pendingReq, executionContext); + + //validate state + final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); + + Assert.assertEquals("wrong issuer", + basicConfig.getBasicConfiguration("eidas.ms.auth.eIDAS.node_v2.entityId"), eidasReq.getIssuer()); + Assert.assertEquals("ProviderName is not Static", "myNode", eidasReq.getProviderName()); + Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); + Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); + Assert.assertEquals("wrong CC", cc, eidasReq.getCitizenCountryCode()); + Assert.assertEquals("NameIdFormat", Constants.eIDAS_REQ_NAMEID_FORMAT, eidasReq.getNameIdFormat()); + + + } + + @Test + public void withDynamicProviderNameForPublicSPs() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + executionContext.put("selectedEnvironment", "prod"); + + String providerName = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName); + + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false"); + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + //execute test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("Wrong redirect endpoint", + ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint)); + + + final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); + + Assert.assertNotNull("ProviderName found", eidasReq.getProviderName()); + Assert.assertEquals("PrividerName", providerName, eidasReq.getProviderName()); + Assert.assertNull("RequesterId found", eidasReq.getRequesterId()); + Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); + Assert.assertEquals("wrong LoA", EaafConstants.EIDAS_LOA_HIGH, + eidasReq.getLevelOfAssurance()); + + Assert.assertEquals("Wrong req. attr. size", 4, eidasReq.getRequestedAttributes().size()); + + } + + @Test + public void withEidasNodePostReqNotValidTemplate() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + String providerName = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName); + + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false"); + + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "POST"); + + //execute test + try { + task.execute(pendingReq, executionContext); + Assert.fail("Missing template not detected"); + + } catch (TaskExecutionException e) { + Assert.assertEquals("ErrorCode", "Could not resolve view with name 'eidas_node_forward.html' ", + ((GuiBuildException) e.getOriginalException()).getMessage()); + + } + } + + @Test + public void withDynamicProviderNameForPrivateSPs() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + spConfig.put("target", + EaafConstants.URN_PREFIX_WBPK_TARGET_WITH_X + "FN+" + RandomStringUtils.randomNumeric(6)); + String providerName = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName); + + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false"); + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + + //perform test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location")); + Assert.assertTrue("Wrong redirect endpoint", + ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint)); + + + final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); + + Assert.assertEquals("PrividerName", providerName, eidasReq.getProviderName()); + Assert.assertEquals("RequesterId", providerName, eidasReq.getRequesterId()); + Assert.assertEquals("no PublicSP", "private", eidasReq.getSpType()); + Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); + + } + + @Test + public void withoutProviderNameForPublicSPs() throws TaskExecutionException, + SpecificCommunicationException, EaafStorageException { + //set-up test + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); + String providerName = RandomStringUtils.randomAlphanumeric(10); + pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName); + + basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "false"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "false"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false"); + + + String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET"); + + + //execute test + task.execute(pendingReq, executionContext); + + //validate state + Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); + + final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); + + Assert.assertNull("ProviderName found", eidasReq.getProviderName()); + Assert.assertNull("RequesterId found", eidasReq.getRequesterId()); + Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); + Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); + + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskThirdTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskThirdTest.java deleted file mode 100644 index f2e44ed1..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskThirdTest.java +++ /dev/null @@ -1,106 +0,0 @@ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; -import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; -import eu.eidas.auth.commons.light.ILightRequest; -import eu.eidas.specificcommunication.exception.SpecificCommunicationException; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") -@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) -public class GenerateAuthnRequestTaskThirdTest { - - @Autowired(required = true) - private GenerateAuthnRequestTask task; - @Autowired(required = true) - private DummySpecificCommunicationService commService; - @Autowired(required = true) - private IConfiguration basicConfig; - - final ExecutionContext executionContext = new ExecutionContextImpl(); - private MockHttpServletRequest httpReq; - private MockHttpServletResponse httpResp; - private TestRequestImpl pendingReq; - private DummySpConfiguration oaParam; - - /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current - + "src/test/resources/config/junit_config_2.properties"); - - } - - /** - * jUnit test set-up. - * - */ - @Before - public void setUp() { - - httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); - httpResp = new MockHttpServletResponse(); - RequestContextHolder.resetRequestAttributes(); - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - - final Map<String, String> spConfig = new HashMap<>(); - spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); - spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); - oaParam = new DummySpConfiguration(spConfig, basicConfig); - - pendingReq = new TestRequestImpl(); - pendingReq.setSpConfig(oaParam); - pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); - pendingReq.setAuthUrl("http://test.com/"); - - } - - @Test - @DirtiesContext - public void withDynamicProviderNameForPublicSPs() throws TaskExecutionException, - SpecificCommunicationException { - executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC"); - - task.execute(pendingReq, executionContext); - Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus()); - - final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null); - - Assert.assertNull("ProviderName found", eidasReq.getProviderName()); - Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType()); - Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance()); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java index 62c00813..f2dc6d55 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java @@ -72,7 +72,10 @@ import java.util.Random; import static org.junit.Assert.assertThrows; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml" +}) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class InitialSearchTaskFirstTest { @@ -96,17 +99,17 @@ public class InitialSearchTaskFirstTest { private final String randomBirthName = RandomStringUtils.randomAlphabetic(10); private final String randomDate = "2011-01-" + (10 + new Random().nextInt(18)); - /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current - + "src/test/resources/config/junit_config_1.properties"); - } +// /** +// * jUnit class initializer. +// * +// * @throws IOException In case of an error +// */ +// @BeforeClass +// public static void classInitializer() throws IOException { +// final String current = new java.io.File(".").toURI().toString(); +// System.setProperty("eidas.ms.configuration", current +// + "src/test/resources/config/junit_config_1.properties"); +// } /** * jUnit test set-up. diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java new file mode 100644 index 00000000..de9b2d3b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java @@ -0,0 +1,193 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; + +import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; + +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.jetbrains.annotations.NotNull; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAuthnResponseTask; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.IRequestStorage; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import eu.eidas.auth.commons.attribute.AttributeDefinition; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; +import lombok.val; + +@RunWith(SpringJUnit4ClassRunner.class) +@PrepareForTest(CreateIdentityLinkTask.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +public class ReceiveEidasResponseTaskTest { + + @Autowired(required = true) + private ReceiveAuthnResponseTask task; + + @Autowired(required = true) + private MsConnectorDummyConfigMap basicConfig; + @Autowired + protected EidasAttributeRegistry attrRegistry; + + @Autowired private IRequestStorage storage; + + final ExecutionContext executionContext = new ExecutionContextImpl(); + private MockHttpServletRequest httpReq; + private MockHttpServletResponse httpResp; + private TestRequestImpl pendingReq; + private MsConnectorDummySpConfiguration oaParam; + + /** + * jUnit test set-up. + */ + @Before + public void setUp() throws EaafStorageException, URISyntaxException { + + httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); + httpResp = new MockHttpServletResponse(); + RequestContextHolder.resetRequestAttributes(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); + + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); + + final Map<String, String> spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); + oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig); + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH)); + pendingReq = new TestRequestImpl(); + + pendingReq.setSpConfig(oaParam); + pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); + pendingReq.setAuthUrl("http://test.com/"); + pendingReq.setTransactionId("avaasbav"); + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU"); + executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true); + + } + + @Test + public void missingEidasResponse() { + try { + task.execute(pendingReq, executionContext); + Assert.fail("No eIDAS response not detected"); + + } catch (TaskExecutionException e) { + Assert.assertEquals("ErrorId", "eidas.01", + ((EaafException) e.getOriginalException()).getErrorId()); + + } + } + + @Test + public void notSuccessEidasResponse() throws URISyntaxException { + String statusCode = RandomStringUtils.randomAlphabetic(10); + httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, + buildDummyAuthResponse(statusCode)); + + + try { + task.execute(pendingReq, executionContext); + Assert.fail("No eIDAS response not detected"); + + } catch (TaskExecutionException e) { + Assert.assertEquals("ErrorId", "eidas.02", + ((EaafException) e.getOriginalException()).getErrorId()); + Assert.assertEquals("wrong parameter size", 2, ((EaafException) e.getOriginalException()) + .getParams().length); + Assert.assertEquals("wrong errorMsg", statusCode, ((EaafException) e + .getOriginalException()).getParams()[0]); + + } + } + + @Test + public void success() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException { + @NotNull + AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); + httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse); + executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU"); + + //execute test + task.execute(pendingReq, executionContext); + + //validate state + IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId()); + Assert.assertNotNull("pendingReq not stored", storedReq); + + final AuthProcessDataWrapper authProcessData = storedReq.getSessionData(AuthProcessDataWrapper.class); + Assert.assertEquals("LoA", eidasResponse.getLevelOfAssurance(), authProcessData.getQaaLevel()); + Assert.assertNotNull("eIDAS response", + authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE)); + Assert.assertEquals("eIDAS response", eidasResponse, + authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE)); + + } + + @NotNull + private AuthenticationResponse buildDummyAuthResponse(String statusCode) throws URISyntaxException { + final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); + final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); + final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); + final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_DATEOFBIRTH).first(); + + final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder() + .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64)) + .put(attributeDef2, RandomStringUtils.randomAlphabetic(10)) + .put(attributeDef3, RandomStringUtils.randomAlphabetic(10)).put(attributeDef4, "2001-01-01").build(); + + val b = new AuthenticationResponse.Builder(); + return b.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(statusCode) + .inResponseTo("_".concat(Random.nextHexRandom16())) + .subjectNameIdFormat("afaf") + .levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH) + .attributes(attributeMap) + .build(); + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java new file mode 100644 index 00000000..ad38e371 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java @@ -0,0 +1,139 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.utils; + +import java.io.IOException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.Provider; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang3.RandomStringUtils; +import org.jose4j.jwa.AlgorithmConstraints; +import org.jose4j.jwa.AlgorithmConstraints.ConstraintType; +import org.jose4j.jws.AlgorithmIdentifiers; +import org.jose4j.lang.JoseException; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils.JwsResult; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory; +import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreUtils; +import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration; +import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration.KeyStoreType; +import at.gv.egiz.eaaf.core.impl.data.Pair; + +@RunWith(SpringJUnit4ClassRunner.class) +@PrepareForTest(CreateIdentityLinkTask.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +public class JoseUtilsTest { + + @Autowired private EaafKeyStoreFactory keyStoreFactory; + + private static final List<String> AUTH_ALGORITHM_WHITELIST_SIGNING = Collections.unmodifiableList( + Arrays.asList( + AlgorithmIdentifiers.ECDSA_USING_P256_CURVE_AND_SHA256, + AlgorithmIdentifiers.ECDSA_USING_P521_CURVE_AND_SHA512, + AlgorithmIdentifiers.RSA_PSS_USING_SHA256, + AlgorithmIdentifiers.RSA_PSS_USING_SHA512)); + + + @Test + public void missingKey() throws EaafException, JoseException, KeyStoreException, IOException { + + KeyStoreConfiguration config = new KeyStoreConfiguration(); + config.setFriendlyName("jUnittest"); + config.setKeyStoreType(KeyStoreType.JKS); + config.setSoftKeyStoreFilePath("../data/junit.jks"); + config.setSoftKeyStorePassword("password"); + + Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config); + String payLoad = RandomStringUtils.randomAlphanumeric(100); + + //check signing + try { + JoseUtils.createSignature(keyStore, "notExist", "password".toCharArray(), payLoad , true, "jUnitTest"); + Assert.fail("missing Key not detected"); + + } catch (EaafException e) { + Assert.assertEquals("ErrorId", "internal.keystore.09", e.getErrorId()); + + } + } + + @Test + public void createRsaSignature() throws EaafException, JoseException, KeyStoreException, IOException { + + KeyStoreConfiguration config = new KeyStoreConfiguration(); + config.setFriendlyName("jUnittest"); + config.setKeyStoreType(KeyStoreType.JKS); + config.setSoftKeyStoreFilePath("../data/junit.jks"); + config.setSoftKeyStorePassword("password"); + + Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config); + String payLoad = RandomStringUtils.randomAlphanumeric(100); + + //check signing + String result = JoseUtils.createSignature(keyStore, "meta", "password".toCharArray(), payLoad , true, "jUnitTest"); + + Assert.assertNotNull("signed message", result); + Assert.assertFalse("signed msg empty", result.isEmpty()); + + + //validate + List<X509Certificate> trustedCerts = EaafKeyStoreUtils.readCertsFromKeyStore(keyStore.getFirst()); + final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT, + AUTH_ALGORITHM_WHITELIST_SIGNING + .toArray(new String[AUTH_ALGORITHM_WHITELIST_SIGNING.size()])); + JwsResult verify = JoseUtils.validateSignature(result, trustedCerts, constraints); + + Assert.assertTrue("sig. verify", verify.isValid()); + Assert.assertEquals("payload", payLoad, verify.getPayLoad()); + + } + + @Test + public void createEccSignature() throws EaafException, JoseException, KeyStoreException, IOException { + + KeyStoreConfiguration config = new KeyStoreConfiguration(); + config.setFriendlyName("jUnittest"); + config.setKeyStoreType(KeyStoreType.JKS); + config.setSoftKeyStoreFilePath("../data/junit.jks"); + config.setSoftKeyStorePassword("password"); + + Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config); + String payLoad = RandomStringUtils.randomAlphanumeric(100); + + //check signing + String result = JoseUtils.createSignature(keyStore, "sig", "password".toCharArray(), payLoad , true, "jUnitTest"); + + Assert.assertNotNull("signed message", result); + Assert.assertFalse("signed msg empty", result.isEmpty()); + + + //validate + List<X509Certificate> trustedCerts = EaafKeyStoreUtils.readCertsFromKeyStore(keyStore.getFirst()); + final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT, + AUTH_ALGORITHM_WHITELIST_SIGNING + .toArray(new String[AUTH_ALGORITHM_WHITELIST_SIGNING.size()])); + JwsResult verify = JoseUtils.validateSignature(result, trustedCerts, constraints); + + Assert.assertTrue("sig. verify", verify.isValid()); + Assert.assertEquals("payload", payLoad, verify.getPayLoad()); + + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAttributePostProcessingTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java index 55a3ce99..9bb51cd9 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAttributePostProcessingTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java @@ -21,7 +21,7 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation; import static org.junit.Assert.fail; @@ -45,7 +45,9 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.ErnbEidData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) @DirtiesContext(classMode = ClassMode.AFTER_CLASS) public class EidasAttributePostProcessingTest { diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java index 880c32ae..d0ab50f4 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingFirstTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java @@ -21,7 +21,7 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation; import java.io.IOException; import java.util.HashMap; @@ -37,12 +37,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService; import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; @@ -50,7 +52,10 @@ import eu.eidas.auth.commons.light.impl.LightRequest; import eu.eidas.auth.commons.light.impl.LightRequest.Builder; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_realConfig.xml"}) +@TestPropertySource(locations = {"classpath:/config/junit_config_de_attributes.properties"}) @DirtiesContext(classMode = ClassMode.AFTER_CLASS) public class EidasRequestPreProcessingFirstTest { @@ -70,8 +75,9 @@ public class EidasRequestPreProcessingFirstTest { */ @BeforeClass public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current + "../../basicConfig/default_config.properties"); +// final String current = new java.io.File(".").toURI().toString(); +// System.setProperty("eidas.ms.configuration", +// current + "src/test/resources/config/junit_config_de_attributes.properties"); } @@ -95,6 +101,7 @@ public class EidasRequestPreProcessingFirstTest { authnRequestBuilder = LightRequest.builder(); authnRequestBuilder.id(UUID.randomUUID().toString()); authnRequestBuilder.issuer("Test"); + authnRequestBuilder.levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH); } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingSecondTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java index e7bacded..23175a18 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingSecondTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java @@ -21,16 +21,14 @@ * that you distribute must include a readable copy of the "NOTICE" text file. */ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation; -import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -39,22 +37,25 @@ import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService; import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import eu.eidas.auth.commons.light.impl.LightRequest; import eu.eidas.auth.commons.light.impl.LightRequest.Builder; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("/SpringTest-context_tasks_test.xml") +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) @DirtiesContext(classMode = ClassMode.AFTER_CLASS) public class EidasRequestPreProcessingSecondTest { @Autowired - private IConfigurationWithSP basicConfig; + private MsConnectorDummyConfigMap basicConfig; @Autowired private CcSpecificEidProcessingService preProcessor; @@ -62,18 +63,6 @@ public class EidasRequestPreProcessingSecondTest { private DummySpConfiguration oaParam; private Builder authnRequestBuilder; - /** - * jUnit class initializer. - * - * @throws IOException In case of an error - */ - @BeforeClass - public static void classInitializer() throws IOException { - final String current = new java.io.File(".").toURI().toString(); - System.setProperty("eidas.ms.configuration", current - + "src/test/resources/config/junit_config_1.properties"); - - } /** * jUnit test set-up. @@ -95,12 +84,16 @@ public class EidasRequestPreProcessingSecondTest { authnRequestBuilder = LightRequest.builder(); authnRequestBuilder.id(UUID.randomUUID().toString()); authnRequestBuilder.issuer("Test"); + authnRequestBuilder.levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH); } @Test public void prePreProcessDeUnknownAttribute() throws EidPostProcessingException { - + basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs", "myNode"); + basicConfig.putConfigValue( + "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true"); + final String testCountry = "DE"; authnRequestBuilder.citizenCountryCode(testCountry); preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java new file mode 100644 index 00000000..e0f15c8c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java @@ -0,0 +1,333 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation; + +import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; + +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.google.common.collect.ImmutableSet; + +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator; +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import eu.eidas.auth.commons.attribute.AttributeDefinition; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; +import eu.eidas.auth.commons.attribute.ImmutableAttributeMap.Builder; +import eu.eidas.auth.commons.attribute.impl.StringAttributeValue; +import eu.eidas.auth.commons.light.ILightResponse; +import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; +import lombok.val; + +@RunWith(SpringJUnit4ClassRunner.class) +@PrepareForTest(CreateIdentityLinkTask.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +@ContextConfiguration(locations = { + "/SpringTest-context_tasks_test.xml", + "/SpringTest-context_basic_mapConfig.xml"}) +public class EidasResponseValidatorTest { + + @Autowired private MsConnectorDummyConfigMap basicConfig; + @Autowired protected EidasAttributeRegistry attrRegistry; + + private TestRequestImpl pendingReq; + private MsConnectorDummySpConfiguration oaParam; + + + /** + * jUnit test set-up. + */ + @Before + public void setUp() throws EaafStorageException, URISyntaxException { + + final Map<String, String> spConfig = new HashMap<>(); + spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); + spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); + spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); + oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig); + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH)); + pendingReq = new TestRequestImpl(); + + pendingReq.setSpConfig(oaParam); + pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue()); + pendingReq.setAuthUrl("http://test.com/"); + pendingReq.setTransactionId("avaasbav"); + pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); + + } + + + @Test + public void loaFromResponseToLow() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + "LU/AT/" + RandomStringUtils.randomNumeric(10), + EaafConstants.EIDAS_LOA_LOW, + false); + String spCountry = "AT"; + String citizenCountryCode = "XX"; + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.06", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 1, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "http://eidas.europa.eu/LoA/low", + e.getParams()[0]); + + } + } + + @Test + public void noEidasSpCountry() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + "LU/AT/" + RandomStringUtils.randomNumeric(10), + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + String spCountry = null; + String citizenCountryCode = "LU"; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 2, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "PersonIdentifier", + e.getParams()[0]); + Assert.assertEquals("wrong errorMsg", + "Destination country does not match to SP country", + e.getParams()[1]); + + } + } + + @Test + public void noEidasResponseCountry() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + "LU/AT/" + RandomStringUtils.randomNumeric(10), + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + String spCountry = "AT"; + String citizenCountryCode = null; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 2, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "PersonIdentifier", + e.getParams()[0]); + Assert.assertEquals("wrong errorMsg", + "Citizen country does not match to eIDAS-node country that generates the response", + e.getParams()[1]); + + } + } + + @Test + public void wrongEidasResponseCountry() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + "LU/AT/" + RandomStringUtils.randomNumeric(10), + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + String spCountry = "AT"; + String citizenCountryCode = "XX"; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 2, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "PersonIdentifier", + e.getParams()[0]); + Assert.assertEquals("wrong errorMsg", + "Citizen country does not match to eIDAS-node country that generates the response", + e.getParams()[1]); + + } + } + + @Test + public void missingPersonalIdentifier() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + null, + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + String spCountry = "AT"; + String citizenCountryCode = "LU"; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.05", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 1, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "NO 'PersonalIdentifier' attriubte", + e.getParams()[0]); + + } + } + + @Test + public void moreThanOnePersonalIdentifier() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + null, + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + true); + String spCountry = "AT"; + String citizenCountryCode = "LU"; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.05", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 1, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "NO 'PersonalIdentifier' attriubte", + e.getParams()[0]); + + } + } + + @Test + public void emptyPersonalIdentifier() throws URISyntaxException { + //set-up + ILightResponse eidasResponse = buildDummyAuthResponse( + "", + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + String spCountry = "AT"; + String citizenCountryCode = "LU"; + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + try { + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry); + Assert.fail("Wrong eIDAS response not detected"); + + } catch (EidasValidationException e) { + Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId()); + Assert.assertEquals("wrong parameter size", 2, e.getParams().length); + Assert.assertEquals("wrong errorMsg", "PersonIdentifier", + e.getParams()[0]); + Assert.assertEquals("wrong errorMsg", + "Wrong identifier format", + e.getParams()[1]); + + } + } + + @Test + public void validResponse() throws URISyntaxException, EidasValidationException { + //set-up + + String spCountry = RandomStringUtils.randomAlphabetic(2).toUpperCase(); + String cCountry = RandomStringUtils.randomAlphabetic(2).toUpperCase(); + + ILightResponse eidasResponse = buildDummyAuthResponse( + cCountry + "/" + spCountry + "/" + RandomStringUtils.randomAlphanumeric(20), + EaafConstants.EIDAS_LOA_SUBSTANTIAL, + false); + + oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL)); + + + //execute test + + EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, cCountry, attrRegistry); + + } + + + private AuthenticationResponse buildDummyAuthResponse(String personalId, String loa, boolean moreThanOnePersonalId) + throws URISyntaxException { + + + final AttributeDefinition personIdattributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( + Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); + + final Builder attributeMap = ImmutableAttributeMap.builder(); + if (personalId != null) { + if (moreThanOnePersonalId) { + ImmutableSet values = ImmutableSet.of(new StringAttributeValue(personalId), + new StringAttributeValue("XX/YY/" + RandomStringUtils.randomAlphanumeric(10))); + attributeMap.put(personIdattributeDef, values); + + } else { + attributeMap.put(personIdattributeDef, personalId); + + } + } + + val b = new AuthenticationResponse.Builder(); + return b.id("_".concat(Random.nextHexRandom16())) + .issuer(RandomStringUtils.randomAlphabetic(10)) + .subject(RandomStringUtils.randomAlphabetic(10)) + .statusCode(Constants.SUCCESS_URI) + .inResponseTo("_".concat(Random.nextHexRandom16())) + .subjectNameIdFormat("afaf") + .levelOfAssurance(loa) + .attributes(attributeMap.build()) + .build(); + } +} + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_mapConfig.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_mapConfig.xml new file mode 100644 index 00000000..3a9214fb --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_mapConfig.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + + <context:annotation-config /> + + <bean id="dummyMapBasedConfiguration" + class="at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap"> + <constructor-arg value="/config/junit_config_1.properties" /> + <property name="configRootDirSufix" value="src/test/resources/config" /> + </bean> + +</beans>
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_realConfig.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_realConfig.xml new file mode 100644 index 00000000..d4474056 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_realConfig.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + + <context:annotation-config /> + + <!-- + <bean id="BasicMSSpecificNodeConfig" + class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider"> + <constructor-arg + value="#{systemProperties['eidas.ms.configuration']}" /> + </bean> + --> + + <bean id="springBootBasicConfingProvider" + class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" /> + +</beans>
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml index 0bb5d419..956cfcc9 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml @@ -11,6 +11,8 @@ <context:annotation-config /> + + <bean id="SZRClientForeIDAS" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient" /> @@ -58,10 +60,4 @@ <property name="priority" value="0" /> </bean> - <bean id="BasicMSSpecificNodeConfig" - class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider"> - <constructor-arg - value="#{systemProperties['eidas.ms.configuration']}" /> - </bean> - </beans>
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml index e362fd22..e479dc78 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml @@ -17,7 +17,7 @@ <import resource="SpringTest-context_authManager.xml" /> - <import resource="SpringTest-context_basic_test.xml" /> + <import resource="SpringTest-context_basic_test.xml" /> <bean id="mvcGUIBuilderImpl" class="at.asitplus.eidas.specific.connector.gui.SpringMvcGuiFormBuilderImpl" /> @@ -48,6 +48,9 @@ <bean id="authBlockSigningService" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.AuthBlockSigningService" /> + <bean id="EidasSignalServlet" + class="at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet" /> + <!-- Authentication Process Tasks --> <bean id="ConnecteIDASNodeTask" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask" @@ -98,4 +101,5 @@ <bean id="ReceiveMobilePhoneSignatureResponseTask" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveMobilePhoneSignatureResponseTask" scope="prototype" /> + </beans>
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties index 21ed51e7..a662379c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties @@ -101,6 +101,7 @@ eidas.ms.pvp2.metadata.validity=24 eidas.ms.sp.0.uniqueID= eidas.ms.sp.0.pvp2.metadata.truststore= eidas.ms.sp.0.pvp2.metadata.truststore.password= +eidas.ms.sp.0.newEidMode=true #eidas.ms.sp.0.friendlyName= #eidas.ms.sp.0.pvp2.metadata.url= diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties index dcdadce5..7c5e5a40 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties @@ -28,7 +28,7 @@ eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://test eidas.ms.auth.eIDAS.node_v2.forward.method=GET eidas.ms.auth.eIDAS.node_v2.countrycode=AT -eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +#eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=false diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties new file mode 100644 index 00000000..01e72069 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties @@ -0,0 +1,114 @@ +## Basic service configuration +eidas.ms.context.url.prefix= +eidas.ms.context.url.request.validation=false + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + + +##Specific logger configuration +eidas.ms.technicallog.write.MDS.into.techlog=true +eidas.ms.revisionlog.write.MDS.into.revisionlog=true +eidas.ms.revisionlog.logIPAddressOfUser=true + +##Directory for static Web content +eidas.ms.webcontent.static.directory=webcontent/ +eidas.ms.webcontent.templates=templates/ +eidas.ms.webcontent.properties=properties/messages + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.maxlifetime=300 +eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://test +eidas.ms.auth.eIDAS.node_v2.forward.method=GET +eidas.ms.auth.eIDAS.node_v2.countrycode=AT +#eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=false +eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=false + +eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/..... +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= +eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 +eidas.ms.auth.eIDAS.szrclient.timeout.response=30 +eidas.ms.auth.eIDAS.szrclient.params.vkz= + +eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false + + +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=./../keystore/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true + +eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true +eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true + +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=true + +##without mandates +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true + +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.4=PlaceOfBirth,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.5=BirthName,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.6=Gender,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.7=CurrentAddress,false + +##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.path=keys/..... +eidas.ms.pvp2.keystore.password= +eidas.ms.pvp2.key.metadata.alias= +eidas.ms.pvp2.key.metadata.password= +eidas.ms.pvp2.key.signing.alias= +eidas.ms.pvp2.key.signing.password= +eidas.ms.pvp2.metadata.validity=24 + +## Service Provider configuration +eidas.ms.sp.0.uniqueID= +eidas.ms.sp.0.pvp2.metadata.truststore= +eidas.ms.sp.0.pvp2.metadata.truststore.password= + +#eidas.ms.sp.0.friendlyName= +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + + +##only for advanced config +eidas.ms.configuration.sp.disableRegistrationRequirement= +eidas.ms.configuration.restrictions.baseID.spTransmission= +eidas.ms.configuration.auth.default.countrycode= +eidas.ms.configuration.pvp.scheme.validation= +eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties new file mode 100644 index 00000000..6b235667 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties @@ -0,0 +1,116 @@ +## Basic service configuration +eidas.ms.context.url.prefix= +eidas.ms.context.url.request.validation=false +eidas.ms.core.configRootDir=file:./src/test/resources/config/ + + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + + +##Specific logger configuration +eidas.ms.technicallog.write.MDS.into.techlog=true +eidas.ms.revisionlog.write.MDS.into.revisionlog=true +eidas.ms.revisionlog.logIPAddressOfUser=true + +##Directory for static Web content +eidas.ms.webcontent.static.directory=webcontent/ +eidas.ms.webcontent.templates=templates/ +eidas.ms.webcontent.properties=properties/messages + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.maxlifetime=300 +eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://test +eidas.ms.auth.eIDAS.node_v2.forward.method=GET +eidas.ms.auth.eIDAS.node_v2.countrycode=AT +#eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=true + +eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/..... +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= +eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 +eidas.ms.auth.eIDAS.szrclient.timeout.response=30 +eidas.ms.auth.eIDAS.szrclient.params.vkz= + +eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false + + +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=./../keystore/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true + +eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true +eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true + +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=true + +##without mandates +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true + +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.4=PlaceOfBirth,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.5=BirthName,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.6=Gender,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.7=CurrentAddress,false + +##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.path=keys/..... +eidas.ms.pvp2.keystore.password= +eidas.ms.pvp2.key.metadata.alias= +eidas.ms.pvp2.key.metadata.password= +eidas.ms.pvp2.key.signing.alias= +eidas.ms.pvp2.key.signing.password= +eidas.ms.pvp2.metadata.validity=24 + +## Service Provider configuration +eidas.ms.sp.0.uniqueID= +eidas.ms.sp.0.pvp2.metadata.truststore= +eidas.ms.sp.0.pvp2.metadata.truststore.password= + +#eidas.ms.sp.0.friendlyName= +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + + +##only for advanced config +eidas.ms.configuration.sp.disableRegistrationRequirement= +eidas.ms.configuration.restrictions.baseID.spTransmission= +eidas.ms.configuration.auth.default.countrycode= +eidas.ms.configuration.pvp.scheme.validation= +eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/junit.jks b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/junit.jks Binary files differnew file mode 100644 index 00000000..a18df332 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/junit.jks diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/signed_eidasBind.jws b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/signed_eidasBind.jws new file mode 100644 index 00000000..f7c9a1c7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/signed_eidasBind.jws @@ -0,0 +1 @@ +eyJ1cm46YXQuZ3YuZWlkOmJpbmR0eXBlIjoidXJuOmF0Lmd2LmVpZDplaWRhc0JpbmQiLCJhbGciOiJSUzUxMiIsIng1dCNTMjU2IjoiY3FtcXBHdWlnS0NRelVWX1doWURHU1EyNEx6Zkxtd0ZtUlNYQlNYR3o3byJ9.eyJ1cm46ZWlkZ3ZhdDphdHRyaWJ1dGVzLnZzei52YWx1ZSI6IjhEYWNBTUxVSFEiLCJ1cm46ZWlkZ3ZhdDphdHRyaWJ1dGVzLnVzZXIucHVia2V5cyI6WyI1NDZ5OEtXZ3R1V3F1dXVNdC9DUWhKem1pWXZ3bzR1QzhLZWxxdUtMc2VLbG1mQ2dtcnpscGFQd3A1K3Q2NjI4Il0sInVybjplaWRndmF0OmF0dHJpYnV0ZXMuZWlkLnN0YXR1cyI6InVybjplaWRndmF0OmVpZC5zdGF0dXMuZWlkYXMifQ.WiECS-E5RB-zQV3JW6-3B7op093QErqq3yS2S4YVFQq9XmYzTD8UKo63yaHa-2U2WFUbiwNI3OOkwNZIAedMZHHblZ0jzjGTb58zL4Yvm6sPSlq3TP5u0emiQdjIJNQmILE5ZYVOgSA-4MWLXAgRQEl2A1w8lHxptE6ya83GdhA0gP51-rY_536qvVuaZHrQ2Lpahl-lTIY1Zi6Knqj1yFdH-auqkLxB44l-XvMv9QryBZMAkkmiu8J598rzIJ2ifGyw4UqHDJZ53GKUpBbU_X23ZjsZ8B5ZapRTO9JGoEEW3rMDEO5_9cjWYOCn87-CA3bMNVbo1KN146UZGuZbyXuevLPznRkbCtXS--IE0SuuLBaowcktX2ggeeSzaq6UZW7hSmQnErVgxxfP16ijBu8yylo-PFbqgYFNT-Ca2rS8i1Cs0KdPTahYIRm4xLARahYLQbqA15medm7JSoz4tA468c_hcNzyG9aGoXYuw1F5kUrJkHl0IWdHkvSR8RWw
\ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/szr_resp_valid_2.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/szr_resp_valid_2.xml new file mode 100644 index 00000000..f07c67d6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/szr_resp_valid_2.xml @@ -0,0 +1,50 @@ +<ns6:GetIdentityLinkEidasResponse xmlns="http://reference.e-government.gv.at/namespace/persondata/20020228#" xmlns:ns2="http://egov.gv.at/pvp1.xsd" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns4="http://www.w3.org/2001/04/xmldsig-more#" xmlns:ns5="http://schemas.xmlsoap.org/ws/2002/04/secext" xmlns:ns6="urn:SZRServices"><ns6:GetIdentityLinkReturn><ns6:PersonInfo><ns6:Person><Identification><Value>k+zDM1BVpN1WJO4x7ZQ3ng==</Value><Type>urn:publicid:gv.at:baseid</Type></Identification><Name><GivenName>Franz</GivenName><FamilyName>Mustermann</FamilyName></Name><Sex>unknown</Sex><DateOfBirth>1989-05-05</DateOfBirth></ns6:Person></ns6:PersonInfo><ns6:Assertion><saml:Assertion xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:ecdsa="http://www.w3.org/2001/04/xmldsig-more#" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:si="http://www.w3.org/2001/XMLSchema-instance" AssertionID="szr.bmi.gv.at-AssertionID15650069652921" IssueInstant="2019-08-05T14:09:25+01:00" Issuer="http://portal.bmi.gv.at/ref/szr/issuer" MajorVersion="1" MinorVersion="0"> + <saml:AttributeStatement> + <saml:Subject> + <saml:SubjectConfirmation> + <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod> + <saml:SubjectConfirmationData> + <pr:Person si:type="pr:PhysicalPersonType"><pr:Identification><pr:Value>k+zDM1BV1312312332x7ZQ3ng==</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type></pr:Identification><pr:Name><pr:GivenName>Martina</pr:GivenName><pr:FamilyName primary="undefined">Musterfrau</pr:FamilyName></pr:Name><pr:DateOfBirth>1991-04-15</pr:DateOfBirth></pr:Person> + </saml:SubjectConfirmationData> + </saml:SubjectConfirmation> + </saml:Subject> + </saml:AttributeStatement> + <dsig:Signature> + <dsig:SignedInfo> + <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> + <dsig:Reference URI=""> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"> + <dsig:XPath>not(ancestor-or-self::pr:Identification)</dsig:XPath> + </dsig:Transform> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>GZjlsEXIhUPBSbOR1R8P4dzRJHE=</dsig:DigestValue> + </dsig:Reference> + <dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>lCnWsFICFg0ogj0Ha7++Y9gyOQg=</dsig:DigestValue> + </dsig:Reference> + </dsig:SignedInfo> + <dsig:SignatureValue> + a6tPfkdriEzAyQh2jU3/4j48baaPnY/i510OHx0vwHRvXLz80UyZzffdmtaRuk3iHVxgUMd9 + Ld0DLsRt6tFJiPLyBCo0QCuqaOwgTcuUI3Ku/oySpqMjqug3AMdrhxW2j41yQlzvkjiZTT4j + zQ9GHFnZnnob0+bBflqIjZOl4xc= + </dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIICTzCCAbigAwIBAgIBADANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDEwhTWlJQRVJTQjAeFw0wNTA3MDEwMDAwMDBaFw00MDEyMzEyMzU5NTlaMBMxETAPBgNVBAMTCFNaUlBFUlNCMIIBHzANBgkqhkiG9w0BAQEFAAOCAQwAMIIBBwKBgQDGNmo9LOohefioGreKU6j6R05jUwHuddziSOQPolmMSXQG6NnnlLQaITv7BEmFj+EBqaOc+891wgZCRvNA2h+fHdJ69QXi/xjCovJI5SHh9jA+ssqhZ68iXOZHPq4WeegtYiYyJaRxWF+iPLqSm+bknS/KuBUcZol9SM3r6CMf0wKBgHytGrIelzc9ZN97VYXLkOJxi4TNSSj3Q/1TIC0s+HSzjbD694Y6ufINpR+IQm5epLTdXx9Dxv19bYnsLEIt0niMd2Cnm1DxXe8iNaDzpWec7fbRT6vDBwtTnyQkGfu2GGF3nSvVZ5AUDbLdAfZLOlbwsZmPnWU1zktSkLgKnT2XozIwMDAuBglghkgBhvhCAQ0EIRMfQ3JlYXRlZCBieSB6L09TIElDU0YgLSBIQ1I3NzgwIDANBgkqhkiG9w0BAQUFAAOBgQBwPc3l/Qf4myH8rsAAM5HqdCR68bMegWgNVxlPNl5DNJEE2hbPhIJ/K6TF6cjROYKDVuQ/+drtsZcrEOaqhqD3qw7MXAiT9GurV99YM/qTBsMy13yjU3LqeFX25Om8JlccGF5G+iHrVjfNQEUocGnGxCAPMlBvGwia4JjJcIPx7Q==</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo> + <dsig:Object> + <dsig:Manifest Id="manifest"> + <dsig:Reference URI=""> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"> + <dsig:XPath>not(ancestor-or-self::dsig:Signature)</dsig:XPath> + </dsig:Transform> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>SbpaaSlLolEX5D9P7HyTPnImvns=</dsig:DigestValue> + </dsig:Reference> + </dsig:Manifest> + </dsig:Object> + </dsig:Signature> +</saml:Assertion></ns6:Assertion><ns6:AdditionalInfo>ERN</ns6:AdditionalInfo></ns6:GetIdentityLinkReturn></ns6:GetIdentityLinkEidasResponse>
\ No newline at end of file diff --git a/infos/eIDAS_Ref_Impl/eIDAS-Node Migration Guide v2.5.pdf b/infos/eIDAS_Ref_Impl/eIDAS-Node Migration Guide v2.5.pdf new file mode 100644 index 00000000..c550986e --- /dev/null +++ b/infos/eIDAS_Ref_Impl/eIDAS-Node Migration Guide v2.5.pdf @@ -0,0 +1,14427 @@ +%PDF-1.5 +%���� +2 0 obj +<</Parent 1 0 R/Next 3 0 R/Title(Document history)/Dest[7 0 R/XYZ 68 759 0]>> +endobj +3 0 obj +<</Parent 1 0 R/Prev 2 0 R/Next 4 0 R/Title(Table of contents)/Dest[8 0 R/XYZ 68 759 0]>> +endobj +9 0 obj +<</Parent 4 0 R/Next 10 0 R/Title(1. Document structure)/Dest[11 0 R/XYZ 68 649 0]>> +endobj +10 0 obj +<</Parent 4 0 R/Prev 9 0 R/Title(2. Document aims)/Dest[11 0 R/XYZ 68 509 0]>> +endobj +4 0 obj +<</First 9 0 R/Last 10 0 R/Count -2/Parent 1 0 R/Prev 3 0 R/Next 5 0 R/Title(1. Introduction)/Dest[11 0 R/XYZ 68 759 0]>> +endobj +5 0 obj +<</Parent 1 0 R/Prev 4 0 R/Next 6 0 R/Title(2. Prerequisites)/Dest[12 0 R/XYZ 68 759 0]>> +endobj +13 0 obj +<</Parent 6 0 R/Next 14 0 R/Title(1. Summary of changes)/Dest[46 0 R/XYZ 68 734 0]>> +endobj +47 0 obj +<</Parent 14 0 R/Title(Code changes)/Dest[48 0 R/XYZ 68 538 0]>> +endobj +14 0 obj +<</First 47 0 R/Last 47 0 R/Count -1/Parent 6 0 R/Prev 13 0 R/Next 15 0 R/Title(2. Metadata cache)/Dest[48 0 R/XYZ 68 611 0]>> +endobj +49 0 obj +<</Parent 15 0 R/Next 50 0 R/Title(Code changes)/Dest[48 0 R/XYZ 68 170 0]>> +endobj +50 0 obj +<</Parent 15 0 R/Prev 49 0 R/Title(Configuration changes)/Dest[51 0 R/XYZ 68 723 0]>> +endobj +15 0 obj +<</First 49 0 R/Last 50 0 R/Count -2/Parent 6 0 R/Prev 14 0 R/Next 16 0 R/Title(3. Externalize Specific-Communication caches names)/Dest[48 0 R/XYZ 68 292 0]>> +endobj +52 0 obj +<</Parent 16 0 R/Title(Code changes)/Dest[51 0 R/XYZ 68 485 0]>> +endobj +16 0 obj +<</First 52 0 R/Last 52 0 R/Count -1/Parent 6 0 R/Prev 15 0 R/Next 17 0 R/Title(4. Refactoring of Loggers: Centralization of the utils methods)/Dest[51 0 R/XYZ 68 533 0]>> +endobj +53 0 obj +<</Parent 17 0 R/Title(Code changes)/Dest[51 0 R/XYZ 68 242 0]>> +endobj +17 0 obj +<</First 53 0 R/Last 53 0 R/Count -1/Parent 6 0 R/Prev 16 0 R/Next 18 0 R/Title(5. Change how communication cache message is send to loggers)/Dest[51 0 R/XYZ 68 327 0]>> +endobj +54 0 obj +<</Parent 18 0 R/Next 55 0 R/Title(Code changes)/Dest[56 0 R/XYZ 68 454 0]>> +endobj +55 0 obj +<</Parent 18 0 R/Prev 54 0 R/Title(Configuration changes)/Dest[57 0 R/XYZ 68 674 0]>> +endobj +18 0 obj +<</First 54 0 R/Last 55 0 R/Count -2/Parent 6 0 R/Prev 17 0 R/Next 19 0 R/Title(6. Introduction of the Full Message Logging)/Dest[56 0 R/XYZ 68 551 0]>> +endobj +58 0 obj +<</Parent 19 0 R/Next 59 0 R/Title(Code changes)/Dest[57 0 R/XYZ 68 563 0]>> +endobj +59 0 obj +<</Parent 19 0 R/Prev 58 0 R/Title(Configuration changes)/Dest[60 0 R/XYZ 68 693 0]>> +endobj +19 0 obj +<</First 58 0 R/Last 59 0 R/Count -2/Parent 6 0 R/Prev 18 0 R/Next 20 0 R/Title(7. Node Country code publication in metadata)/Dest[57 0 R/XYZ 68 600 0]>> +endobj +61 0 obj +<</Parent 20 0 R/Next 62 0 R/Title(Code changes)/Dest[60 0 R/XYZ 68 512 0]>> +endobj +62 0 obj +<</Parent 20 0 R/Prev 61 0 R/Title(Configuration changes)/Dest[60 0 R/XYZ 68 439 0]>> +endobj +20 0 obj +<</First 61 0 R/Last 62 0 R/Count -2/Parent 6 0 R/Prev 19 0 R/Next 21 0 R/Title(8. Restrict TLS version used by the Node to TLS v1.2)/Dest[60 0 R/XYZ 68 585 0]>> +endobj +63 0 obj +<</Parent 21 0 R/Next 64 0 R/Title(Code changes)/Dest[60 0 R/XYZ 68 233 0]>> +endobj +64 0 obj +<</Parent 21 0 R/Prev 63 0 R/Title(Configuration changes)/Dest[65 0 R/XYZ 68 403 0]>> +endobj +21 0 obj +<</First 63 0 R/Last 64 0 R/Count -2/Parent 6 0 R/Prev 20 0 R/Next 22 0 R/Title(9. Signature algorithm alignment with technical specifications 1.2.)/Dest[60 0 R/XYZ 68 306 0]>> +endobj +66 0 obj +<</Parent 22 0 R/Next 67 0 R/Title(Code changes)/Dest[68 0 R/XYZ 68 503 0]>> +endobj +67 0 obj +<</Parent 22 0 R/Prev 66 0 R/Title(Configuration changes)/Dest[68 0 R/XYZ 68 237 0]>> +endobj +22 0 obj +<</First 66 0 R/Last 67 0 R/Count -2/Parent 6 0 R/Prev 21 0 R/Next 23 0 R/Title(10. Publishing of Non-Notified Levels of Assurance)/Dest[68 0 R/XYZ 68 576 0]>> +endobj +69 0 obj +<</Parent 23 0 R/Next 70 0 R/Title(Code changes)/Dest[71 0 R/XYZ 68 613 0]>> +endobj +70 0 obj +<</Parent 23 0 R/Prev 69 0 R/Title(Configuration changes)/Dest[71 0 R/XYZ 68 474 0]>> +endobj +23 0 obj +<</First 69 0 R/Last 70 0 R/Count -2/Parent 6 0 R/Prev 22 0 R/Next 24 0 R/Title(11. Extension of the LightRequest for the RequesterId)/Dest[71 0 R/XYZ 68 759 0]>> +endobj +72 0 obj +<</Parent 24 0 R/Title(Code changes)/Dest[73 0 R/XYZ 68 515 0]>> +endobj +24 0 obj +<</First 72 0 R/Last 72 0 R/Count -1/Parent 6 0 R/Prev 23 0 R/Next 25 0 R/Title(12. Forward the requesterId from Light Request into the eIDAS Request)/Dest[71 0 R/XYZ 68 378 0]>> +endobj +74 0 obj +<</Parent 25 0 R/Title(Code changes)/Dest[75 0 R/XYZ 68 552 0]>> +endobj +25 0 obj +<</First 74 0 R/Last 74 0 R/Count -1/Parent 6 0 R/Prev 24 0 R/Next 26 0 R/Title(13. Forward requesterId from eIDAS Request into Light Request)/Dest[75 0 R/XYZ 68 625 0]>> +endobj +76 0 obj +<</Parent 26 0 R/Title(Code changes)/Dest[75 0 R/XYZ 68 334 0]>> +endobj +26 0 obj +<</First 76 0 R/Last 76 0 R/Count -1/Parent 6 0 R/Prev 25 0 R/Next 27 0 R/Title(14. Validation of the RequesterId in the Connector)/Dest[75 0 R/XYZ 68 419 0]>> +endobj +27 0 obj +<</Parent 6 0 R/Prev 26 0 R/Next 28 0 R/Title(15. Validation of the requesterId in the proxyService)/Dest[77 0 R/XYZ 68 589 0]>> +endobj +78 0 obj +<</Parent 28 0 R/Next 79 0 R/Title(Code changes)/Dest[77 0 R/XYZ 68 189 0]>> +endobj +79 0 obj +<</Parent 28 0 R/Prev 78 0 R/Title(Configuration changes)/Dest[80 0 R/XYZ 68 443 0]>> +endobj +28 0 obj +<</First 78 0 R/Last 79 0 R/Count -2/Parent 6 0 R/Prev 27 0 R/Next 29 0 R/Title(16. Add RequesterID flag to Proxy-Service's metadata)/Dest[77 0 R/XYZ 68 274 0]>> +endobj +81 0 obj +<</Parent 29 0 R/Title(Code changes)/Dest[80 0 R/XYZ 68 128 0]>> +endobj +29 0 obj +<</First 81 0 R/Last 81 0 R/Count -1/Parent 6 0 R/Prev 28 0 R/Next 30 0 R/Title(17. RequesterID is forwarded from Connector to ProxyService only when SPType is private)/Dest[80 0 R/XYZ 68 225 0]>> +endobj +30 0 obj +<</Parent 6 0 R/Prev 29 0 R/Next 31 0 R/Title(18. Remove validation of ProviderName as not mandatory)/Dest[82 0 R/XYZ 68 348 0]>> +endobj +31 0 obj +<</Parent 6 0 R/Prev 30 0 R/Next 32 0 R/Title(19. Replace Glassfish 5 full platform support by Glassfish 5.0.1 Web profile)/Dest[83 0 R/XYZ 68 759 0]>> +endobj +84 0 obj +<</Parent 32 0 R/Title(Configuration changes)/Dest[83 0 R/XYZ 68 577 0]>> +endobj +32 0 obj +<</First 84 0 R/Last 84 0 R/Count -1/Parent 6 0 R/Prev 31 0 R/Next 33 0 R/Title(20. Adaptation of the eidas.protocol.version from 1.1 to 1.2)/Dest[83 0 R/XYZ 68 649 0]>> +endobj +85 0 obj +<</Parent 33 0 R/Next 86 0 R/Title(Code changes)/Dest[83 0 R/XYZ 68 419 0]>> +endobj +86 0 obj +<</Parent 33 0 R/Prev 85 0 R/Title(Configuration changes)/Dest[83 0 R/XYZ 68 153 0]>> +endobj +33 0 obj +<</First 85 0 R/Last 86 0 R/Count -2/Parent 6 0 R/Prev 32 0 R/Next 34 0 R/Title(21. Publishing custom list of eIDAS attributes at ServiceMetadata)/Dest[83 0 R/XYZ 68 504 0]>> +endobj +87 0 obj +<</Parent 34 0 R/Title(Code changes)/Dest[88 0 R/XYZ 68 575 0]>> +endobj +34 0 obj +<</First 87 0 R/Last 87 0 R/Count -1/Parent 6 0 R/Prev 33 0 R/Next 35 0 R/Title(22. Extension of the LightResponse with Consent and setting the consent in the eIDAS SAML Response)/Dest[88 0 R/XYZ 68 723 0]>> +endobj +89 0 obj +<</Parent 35 0 R/Title(Configuration changes)/Dest[90 0 R/XYZ 68 615 0]>> +endobj +35 0 obj +<</First 89 0 R/Last 89 0 R/Count -1/Parent 6 0 R/Prev 34 0 R/Next 36 0 R/Title(23. Extension of the LightRequest with spCountryCode and removing the option to forward spCountryCode via citizenCountryCode)/Dest[88 0 R/XYZ 68 309 0]>> +endobj +91 0 obj +<</Parent 36 0 R/Title(Code changes)/Dest[90 0 R/XYZ 68 441 0]>> +endobj +36 0 obj +<</First 91 0 R/Last 91 0 R/Count -1/Parent 6 0 R/Prev 35 0 R/Next 37 0 R/Title(24. Level of Assurance Validation for Eidas Request and Eidas Response)/Dest[90 0 R/XYZ 68 516 0]>> +endobj +92 0 obj +<</Parent 37 0 R/Title(Code changes)/Dest[93 0 R/XYZ 68 241 0]>> +endobj +37 0 obj +<</First 92 0 R/Last 92 0 R/Count -1/Parent 6 0 R/Prev 36 0 R/Next 38 0 R/Title(25. Level of Assurance Type Validation for Light Request)/Dest[93 0 R/XYZ 68 375 0]>> +endobj +94 0 obj +<</Parent 38 0 R/Title(Code changes)/Dest[95 0 R/XYZ 68 540 0]>> +endobj +38 0 obj +<</First 94 0 R/Last 94 0 R/Count -1/Parent 6 0 R/Prev 37 0 R/Next 39 0 R/Title(26. Validation for published Levels of Assurance on the Proxy Service)/Dest[95 0 R/XYZ 68 723 0]>> +endobj +96 0 obj +<</Parent 39 0 R/Next 97 0 R/Title(Code changes)/Dest[95 0 R/XYZ 68 347 0]>> +endobj +97 0 obj +<</Parent 39 0 R/Prev 96 0 R/Title(Configuration changes)/Dest[98 0 R/XYZ 68 759 0]>> +endobj +39 0 obj +<</First 96 0 R/Last 97 0 R/Count -2/Parent 6 0 R/Prev 38 0 R/Next 40 0 R/Title(27. Digest method algorithm configuration)/Dest[95 0 R/XYZ 68 420 0]>> +endobj +99 0 obj +<</Parent 40 0 R/Title(Code changes)/Dest[98 0 R/XYZ 68 565 0]>> +endobj +40 0 obj +<</First 99 0 R/Last 99 0 R/Count -1/Parent 6 0 R/Prev 39 0 R/Next 41 0 R/Title(28. Fix digest algorithm list in Node metadata and preference order of algorithms)/Dest[98 0 R/XYZ 68 662 0]>> +endobj +100 0 obj +<</Parent 41 0 R/Title(Configuration changes)/Dest[98 0 R/XYZ 68 200 0]>> +endobj +41 0 obj +<</First 100 0 R/Last 100 0 R/Count -1/Parent 6 0 R/Prev 40 0 R/Next 42 0 R/Title(29. Validation of the response in representation cases)/Dest[98 0 R/XYZ 68 394 0]>> +endobj +101 0 obj +<</Parent 42 0 R/Next 102 0 R/Title(Code changes)/Dest[103 0 R/XYZ 68 662 0]>> +endobj +102 0 obj +<</Parent 42 0 R/Prev 101 0 R/Title(Configuration changes)/Dest[103 0 R/XYZ 68 601 0]>> +endobj +42 0 obj +<</First 101 0 R/Last 102 0 R/Count -2/Parent 6 0 R/Prev 41 0 R/Next 43 0 R/Title(30. Remove unnecessary validation of connector destination url)/Dest[103 0 R/XYZ 68 759 0]>> +endobj +104 0 obj +<</Parent 43 0 R/Next 105 0 R/Title(Code changes)/Dest[103 0 R/XYZ 68 250 0]>> +endobj +105 0 obj +<</Parent 43 0 R/Prev 104 0 R/Title(Configuration changes)/Dest[106 0 R/XYZ 68 403 0]>> +endobj +43 0 obj +<</First 104 0 R/Last 105 0 R/Count -2/Parent 6 0 R/Prev 42 0 R/Next 44 0 R/Title(31. Connector validation for NameID format)/Dest[103 0 R/XYZ 68 505 0]>> +endobj +107 0 obj +<</Parent 44 0 R/Next 108 0 R/Title(Code changes)/Dest[106 0 R/XYZ 68 183 0]>> +endobj +108 0 obj +<</Parent 44 0 R/Prev 107 0 R/Title(Configuration changes)/Dest[109 0 R/XYZ 68 709 0]>> +endobj +44 0 obj +<</First 107 0 R/Last 108 0 R/Count -2/Parent 6 0 R/Prev 43 0 R/Next 45 0 R/Title(32. Generation of LightRequest LightResponse Classes from XSD)/Dest[106 0 R/XYZ 68 306 0]>> +endobj +110 0 obj +<</Parent 45 0 R/Next 111 0 R/Title(CVE-2018-10237)/Dest[109 0 R/XYZ 68 586 0]>> +endobj +111 0 obj +<</Parent 45 0 R/Prev 110 0 R/Next 112 0 R/Title(CVE-2020-1963)/Dest[109 0 R/XYZ 68 513 0]>> +endobj +112 0 obj +<</Parent 45 0 R/Prev 111 0 R/Next 113 0 R/Title(CVE-2019-12400)/Dest[109 0 R/XYZ 68 453 0]>> +endobj +113 0 obj +<</Parent 45 0 R/Prev 112 0 R/Next 114 0 R/Title(CVE-2015-0254)/Dest[109 0 R/XYZ 68 379 0]>> +endobj +114 0 obj +<</Parent 45 0 R/Prev 113 0 R/Next 115 0 R/Title(Upgrade of se.swedenconnect.opensaml:opensaml-security-ext from 1.0.5 to 1.0.7)/Dest[109 0 R/XYZ 68 222 0]>> +endobj +115 0 obj +<</Parent 45 0 R/Prev 114 0 R/Next 116 0 R/Title(Update eIDAS Metadata VERSION 2.5.0 Application Identifier)/Dest[109 0 R/XYZ 68 137 0]>> +endobj +116 0 obj +<</Parent 45 0 R/Prev 115 0 R/Next 117 0 R/Title(Node country consume from metadata)/Dest[179 0 R/XYZ 68 759 0]>> +endobj +117 0 obj +<</Parent 45 0 R/Prev 116 0 R/Next 118 0 R/Title(Support for multiple application identifier values in Metadata)/Dest[179 0 R/XYZ 68 574 0]>> +endobj +118 0 obj +<</Parent 45 0 R/Prev 117 0 R/Next 119 0 R/Title(Support for multiple protocol versions AttributeValue in Metadata)/Dest[179 0 R/XYZ 68 332 0]>> +endobj +119 0 obj +<</Parent 45 0 R/Prev 118 0 R/Next 120 0 R/Title(Metadata retrieval read for active.module.connector or active.module.service are false)/Dest[180 0 R/XYZ 68 759 0]>> +endobj +120 0 obj +<</Parent 45 0 R/Prev 119 0 R/Next 121 0 R/Title(Flow fails with Invalid Light Response error if the connector metadata is not reachable)/Dest[180 0 R/XYZ 68 468 0]>> +endobj +121 0 obj +<</Parent 45 0 R/Prev 120 0 R/Next 122 0 R/Title(Extension of the LightRequest for NonNotified Level of Assurance)/Dest[180 0 R/XYZ 68 356 0]>> +endobj +122 0 obj +<</Parent 45 0 R/Prev 121 0 R/Next 123 0 R/Title(Extension of the EidasAuthenticationRequest for Non-Notified Levels of Assurance)/Dest[181 0 R/XYZ 68 589 0]>> +endobj +123 0 obj +<</Parent 45 0 R/Prev 122 0 R/Next 124 0 R/Title(Forward of Non-notified Levels of Assurance from EIDAS Request to Light Request)/Dest[181 0 R/XYZ 68 286 0]>> +endobj +124 0 obj +<</Parent 45 0 R/Prev 123 0 R/Next 125 0 R/Title(Update the validation of the Levels of Assurance)/Dest[182 0 R/XYZ 68 759 0]>> +endobj +125 0 obj +<</Parent 45 0 R/Prev 124 0 R/Next 126 0 R/Title(Allow validation for non-notified LoA in proxyservice)/Dest[182 0 R/XYZ 68 492 0]>> +endobj +183 0 obj +<</Parent 126 0 R/Title(Code changes)/Dest[182 0 R/XYZ 68 299 0]>> +endobj +126 0 obj +<</First 183 0 R/Last 183 0 R/Count -1/Parent 45 0 R/Prev 125 0 R/Next 127 0 R/Title(Validation of Levels of Assurance in Light Request Builder)/Dest[182 0 R/XYZ 68 384 0]>> +endobj +184 0 obj +<</Parent 127 0 R/Title(Code changes)/Dest[185 0 R/XYZ 68 626 0]>> +endobj +127 0 obj +<</First 184 0 R/Last 184 0 R/Count -1/Parent 45 0 R/Prev 126 0 R/Next 128 0 R/Title(Level of Assurance backwards compatibility with EIDAS protocol version 1.1)/Dest[185 0 R/XYZ 68 759 0]>> +endobj +186 0 obj +<</Parent 128 0 R/Title(Code changes)/Dest[185 0 R/XYZ 68 360 0]>> +endobj +128 0 obj +<</First 186 0 R/Last 186 0 R/Count -1/Parent 45 0 R/Prev 127 0 R/Next 129 0 R/Title(Response Level of Assurance Correlation with Service Metadata Levels of Assurance.)/Dest[185 0 R/XYZ 68 553 0]>> +endobj +129 0 obj +<</Parent 45 0 R/Prev 128 0 R/Next 130 0 R/Title(Log the complete Light Response received by the Proxy-Service)/Dest[185 0 R/XYZ 68 263 0]>> +endobj +130 0 obj +<</Parent 45 0 R/Prev 129 0 R/Next 131 0 R/Title(Log the complete Light Request received by the Connector)/Dest[187 0 R/XYZ 68 759 0]>> +endobj +131 0 obj +<</Parent 45 0 R/Prev 130 0 R/Next 132 0 R/Title(Truncated messages logged in errors based on maximum message length)/Dest[187 0 R/XYZ 68 662 0]>> +endobj +132 0 obj +<</Parent 45 0 R/Prev 131 0 R/Next 133 0 R/Title(Modification of logging processing)/Dest[187 0 R/XYZ 68 541 0]>> +endobj +133 0 obj +<</Parent 45 0 R/Prev 132 0 R/Next 134 0 R/Title(SAML Response message is exposed in the logs when sending big light response)/Dest[187 0 R/XYZ 68 193 0]>> +endobj +134 0 obj +<</Parent 45 0 R/Prev 133 0 R/Next 135 0 R/Title(Add validation for the key length of the certificates used to sign metadata and authentication request)/Dest[188 0 R/XYZ 68 759 0]>> +endobj +135 0 obj +<</Parent 45 0 R/Prev 134 0 R/Next 136 0 R/Title(Add validation of the signature algorithm's hash length of the certificates used to sign the metadata and/or authentication request)/Dest[188 0 R/XYZ 68 553 0]>> +endobj +136 0 obj +<</Parent 45 0 R/Prev 135 0 R/Next 137 0 R/Title(Implementation to determinate digest algorithm)/Dest[188 0 R/XYZ 68 223 0]>> +endobj +137 0 obj +<</Parent 45 0 R/Prev 136 0 R/Next 138 0 R/Title(Update EUID attribute validation)/Dest[189 0 R/XYZ 68 759 0]>> +endobj +138 0 obj +<</Parent 45 0 R/Prev 137 0 R/Next 139 0 R/Title(Update value and validation of Gender possible values based on protocol version)/Dest[189 0 R/XYZ 68 502 0]>> +endobj +139 0 obj +<</Parent 45 0 R/Prev 138 0 R/Next 140 0 R/Title(Citizen country code validation)/Dest[190 0 R/XYZ 68 657 0]>> +endobj +191 0 obj +<</Parent 140 0 R/Title(Code changes)/Dest[190 0 R/XYZ 68 266 0]>> +endobj +140 0 obj +<</First 191 0 R/Last 191 0 R/Count -1/Parent 45 0 R/Prev 139 0 R/Next 141 0 R/Title(Connector check the nationality code of a sending country in assertions)/Dest[190 0 R/XYZ 68 367 0]>> +endobj +141 0 obj +<</Parent 45 0 R/Prev 140 0 R/Next 142 0 R/Title(Update VersionMismatch as StatusCode instead of SubStatusCode in LightResponse.xsd)/Dest[192 0 R/XYZ 68 710 0]>> +endobj +142 0 obj +<</Parent 45 0 R/Prev 141 0 R/Next 143 0 R/Title(Validation of StatusCode and Substatus code values)/Dest[192 0 R/XYZ 68 602 0]>> +endobj +143 0 obj +<</Parent 45 0 R/Prev 142 0 R/Next 144 0 R/Title(XML for failed LightResponse is not valid according XSD)/Dest[192 0 R/XYZ 68 481 0]>> +endobj +144 0 obj +<</Parent 45 0 R/Prev 143 0 R/Next 145 0 R/Title(Externalised maximum parameter length for EIDAS response/request validation)/Dest[192 0 R/XYZ 68 384 0]>> +endobj +145 0 obj +<</Parent 45 0 R/Prev 144 0 R/Next 146 0 R/Title(Discontinue support for sys property "org.opensaml.httpclient.https.disableHostnameVerification")/Dest[192 0 R/XYZ 68 287 0]>> +endobj +146 0 obj +<</Parent 45 0 R/Prev 145 0 R/Next 147 0 R/Title(Remove config parameter "include.assertion.fail.response.application.identifiers")/Dest[192 0 R/XYZ 68 166 0]>> +endobj +147 0 obj +<</Parent 45 0 R/Prev 146 0 R/Next 148 0 R/Title(Fix ProxyService Metadata generator usage of Metadata enabled flag)/Dest[193 0 R/XYZ 68 759 0]>> +endobj +194 0 obj +<</Parent 148 0 R/Title(Code changes)/Dest[193 0 R/XYZ 68 407 0]>> +endobj +148 0 obj +<</First 194 0 R/Last 194 0 R/Count -1/Parent 45 0 R/Prev 147 0 R/Next 149 0 R/Title(Removed Hazelcast from EIDAS-Commons)/Dest[193 0 R/XYZ 68 467 0]>> +endobj +149 0 obj +<</Parent 45 0 R/Prev 148 0 R/Next 150 0 R/Title(Update SimpleProtocol version in EIDAS-Parent dependency management)/Dest[193 0 R/XYZ 68 274 0]>> +endobj +150 0 obj +<</Parent 45 0 R/Prev 149 0 R/Next 151 0 R/Title(Commented code removed from Application Context xml files)/Dest[193 0 R/XYZ 68 189 0]>> +endobj +151 0 obj +<</Parent 45 0 R/Prev 150 0 R/Next 152 0 R/Title(Removed initialization of SubStatusCode in ResponseStatus factory method)/Dest[195 0 R/XYZ 68 759 0]>> +endobj +196 0 obj +<</Parent 152 0 R/Title(Code changes)/Dest[195 0 R/XYZ 68 626 0]>> +endobj +152 0 obj +<</First 196 0 R/Last 196 0 R/Count -1/Parent 45 0 R/Prev 151 0 R/Next 153 0 R/Title(Introduction of MessageLog model to replace StringBuilders in Loggers)/Dest[195 0 R/XYZ 68 662 0]>> +endobj +153 0 obj +<</Parent 45 0 R/Prev 152 0 R/Next 154 0 R/Title(Fix incorrect constant value \(cfr. \(EID-636\) Question on "EIDAS SAML Engine 1.4.1"\))/Dest[195 0 R/XYZ 68 165 0]>> +endobj +154 0 obj +<</Parent 45 0 R/Prev 153 0 R/Next 155 0 R/Title(Fix duplicate filtering of Outgoing EidasResponse in ProxyService)/Dest[197 0 R/XYZ 68 735 0]>> +endobj +155 0 obj +<</Parent 45 0 R/Prev 154 0 R/Next 156 0 R/Title(Fixed concurrency issue in LoggingConcurrencyTest)/Dest[197 0 R/XYZ 68 626 0]>> +endobj +156 0 obj +<</Parent 45 0 R/Prev 155 0 R/Next 157 0 R/Title(Javadoc improvement: Reduce Javadoc warnings)/Dest[197 0 R/XYZ 68 541 0]>> +endobj +157 0 obj +<</Parent 45 0 R/Prev 156 0 R/Next 158 0 R/Title(\(EID-1051\) Fix incorrect usage of retrieveConnectorAttributes)/Dest[197 0 R/XYZ 68 469 0]>> +endobj +158 0 obj +<</Parent 45 0 R/Prev 157 0 R/Next 159 0 R/Title(Creation of an default eidas.xml configuration file)/Dest[197 0 R/XYZ 68 336 0]>> +endobj +159 0 obj +<</Parent 45 0 R/Prev 158 0 R/Next 160 0 R/Title(Avoid Ignite to make http request to verify if version is up-to-date)/Dest[197 0 R/XYZ 68 215 0]>> +endobj +160 0 obj +<</Parent 45 0 R/Prev 159 0 R/Next 161 0 R/Title(Transform EIDAS-Config properties into a deploy-able set of property files)/Dest[198 0 R/XYZ 68 759 0]>> +endobj +161 0 obj +<</Parent 45 0 R/Prev 160 0 R/Next 162 0 R/Title(Inconsistencies in Eidas-attributes.xml config files)/Dest[198 0 R/XYZ 68 619 0]>> +endobj +162 0 obj +<</Parent 45 0 R/Prev 161 0 R/Next 163 0 R/Title(Fix non deterministic build failure build of tests in EIDAS-SAMLEngine Module)/Dest[198 0 R/XYZ 68 510 0]>> +endobj +163 0 obj +<</Parent 45 0 R/Prev 162 0 R/Next 164 0 R/Title(Javadoc is pointing to itself)/Dest[198 0 R/XYZ 68 414 0]>> +endobj +164 0 obj +<</Parent 45 0 R/Prev 163 0 R/Next 165 0 R/Title(Unit tests performance improvements)/Dest[198 0 R/XYZ 68 353 0]>> +endobj +165 0 obj +<</Parent 45 0 R/Prev 164 0 R/Next 166 0 R/Title(Remove rsa-ripemd160 from test code)/Dest[198 0 R/XYZ 68 269 0]>> +endobj +166 0 obj +<</Parent 45 0 R/Prev 165 0 R/Next 167 0 R/Title(Unit test failure on UNIX Cloud environment)/Dest[198 0 R/XYZ 68 148 0]>> +endobj +167 0 obj +<</Parent 45 0 R/Prev 166 0 R/Next 168 0 R/Title(Sonar: EIDAS-SpecificCommunicationDefinition: new vulnerability reported \(minor\))/Dest[199 0 R/XYZ 68 759 0]>> +endobj +168 0 obj +<</Parent 45 0 R/Prev 167 0 R/Next 169 0 R/Title(CertificateUtilTest class refactoring and improvements)/Dest[199 0 R/XYZ 68 674 0]>> +endobj +169 0 obj +<</Parent 45 0 R/Prev 168 0 R/Next 170 0 R/Title(SAMLAuthnResponseDecrypterTest improvements)/Dest[199 0 R/XYZ 68 547 0]>> +endobj +170 0 obj +<</Parent 45 0 R/Prev 169 0 R/Next 171 0 R/Title(Regression: 'testConfiguredCacheMultipleExpiringKeys' unit test failure)/Dest[199 0 R/XYZ 68 473 0]>> +endobj +171 0 obj +<</Parent 45 0 R/Prev 170 0 R/Next 172 0 R/Title(Validation of LightRequest received by the Connector)/Dest[199 0 R/XYZ 68 376 0]>> +endobj +172 0 obj +<</Parent 45 0 R/Prev 171 0 R/Next 173 0 R/Title(\(EID-1139\) Invalid omitXmlDeclaration)/Dest[199 0 R/XYZ 68 154 0]>> +endobj +173 0 obj +<</Parent 45 0 R/Prev 172 0 R/Next 174 0 R/Title(Removed decodeCurrentAddress javascript function)/Dest[200 0 R/XYZ 68 759 0]>> +endobj +174 0 obj +<</Parent 45 0 R/Prev 173 0 R/Next 175 0 R/Title(\(EID-1136\) Typos �metdata� instead of �metadata�)/Dest[200 0 R/XYZ 68 674 0]>> +endobj +175 0 obj +<</Parent 45 0 R/Prev 174 0 R/Next 176 0 R/Title(\(EID-1115\) Wrong error message in XmlSchemaUtilTest)/Dest[200 0 R/XYZ 68 564 0]>> +endobj +176 0 obj +<</Parent 45 0 R/Prev 175 0 R/Next 177 0 R/Title(\(EID-1135\) - Typos "fecther" instead of "fetcher")/Dest[200 0 R/XYZ 68 479 0]>> +endobj +177 0 obj +<</Parent 45 0 R/Prev 176 0 R/Next 178 0 R/Title(\(EID-1119\) � eIDAS-Node Error Codes has not deprecated codes)/Dest[200 0 R/XYZ 68 328 0]>> +endobj +178 0 obj +<</Parent 45 0 R/Prev 177 0 R/Title(Upgrade org.apache.httpcomponents:httpclient to version 4.5.13)/Dest[201 0 R/XYZ 68 722 0]>> +endobj +45 0 obj +<</First 110 0 R/Last 178 0 R/Count -69/Parent 6 0 R/Prev 44 0 R/Title(33. Other fixes/improvements requiring no action)/Dest[109 0 R/XYZ 68 623 0]>> +endobj +6 0 obj +<</First 13 0 R/Last 45 0 R/Count -33/Parent 1 0 R/Prev 5 0 R/Title(3. Changes)/Dest[46 0 R/XYZ 68 759 0]>> +endobj +1 0 obj +<</First 2 0 R/Last 6 0 R/Count 5>> +endobj +202 0 obj +<</Title(eIDAS-Node Migration Guide v2.5.docx)/Author(LEMINEUR Michel)/Creator(PDF CoDe 2018 4.7111.7111 \(c\) 2002-2018 European Commission)/CreationDate(D:20201211123035+01'00')/ModDate(D:20201211123035+01'00')/Producer(PDF CoDe 2018 4.7111.7111 \(c\) 2002-2018 European Commission)/Subject()/Keywords()>> +endobj +203 0 obj +<</Length 3169/Type/Metadata/Subtype/XML>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.0-jc003"> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + dc:format="application/pdf" + pdf:Producer="PDF CoDe 2018 4.7111.7111 (c) 2002-2018 European Commission" + pdf:Keywords="" + xmp:CreatorTool="PDF CoDe 2018 4.7111.7111 (c) 2002-2018 European Commission" + xmp:CreateDate="2020-12-11T12:30:35+01:00" + xmp:ModifyDate="2020-12-11T12:30:35+01:00"> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">eIDAS-Node Migration Guide v2.5.docx</rdf:li> + </rdf:Alt> + </dc:title> + <dc:creator> + <rdf:Seq> + <rdf:li>LEMINEUR Michel</rdf:li> + </rdf:Seq> + </dc:creator> + <dc:description> + <rdf:Alt> + <rdf:li xml:lang="x-default"/> + </rdf:Alt> + </dc:description> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> +endstream +endobj +204 0 obj +<</Type/Catalog/Pages 205 0 R/Lang(en-GB)/StructTreeRoot 206 0 R/Outlines 1 0 R/MarkInfo<</Marked true>>/PageMode/UseOutlines/Metadata 203 0 R>> +endobj +205 0 obj +<</Type/Pages/Count 49/Kids[207 0 R 7 0 R 208 0 R 8 0 R 209 0 R 210 0 R 211 0 R 11 0 R 12 0 R 46 0 R 48 0 R 51 0 R 56 0 R 57 0 R 60 0 R 65 0 R 68 0 R 71 0 R 73 0 R 75 0 R 77 0 R 80 0 R 82 0 R 83 0 R 88 0 R 90 0 R 93 0 R 95 0 R 98 0 R 103 0 R 106 0 R 109 0 R 179 0 R 180 0 R 181 0 R 182 0 R 185 0 R 187 0 R 188 0 R 189 0 R 190 0 R 192 0 R 193 0 R 195 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R]>> +endobj +207 0 obj +<</Type/Page/Parent 205 0 R/Resources<</XObject<</Image5 212 0 R/Image8 213 0 R>>/Font<</F1 214 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 216 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>> +endobj +216 0 obj +<</Filter/FlateDecode/Length 545>>stream +x���[o�@�ߑ����6{��H�$�+�JU�>Xy�l��`���������� +�:���+2���0��<���[C���o����[�j���K��!VѲ��ѯ%�V�WO�mރ"���Z�A�*oNׁg���!�1H����d���=�G?Ky��µ��A������w������.�R�;�U&�DDX�Q_9Wb�s��9�f)�w��"��Bt��C �rT'��S��j�����(���!�?G-D>plg���(~��Q� ��$$;�ҵ��)L!W}��F�� +endstream +endobj +212 0 obj +<</Type/XObject/Subtype/Image/Width 1430/Height 1448/ColorSpace/DeviceRGB/BitsPerComponent 8/Filter/DCTDecode/Interpolate true/Length 43698>>stream +���� +
$.' ",#(7),01444'9=82<.342�� +�� +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� +�� +$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +)���N��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(� +�I��z�Y�n 7�QU$�QEHQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@��b�Sh� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��3袊�R�R���m=�T�@#�]F��� ER +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��"�M���H@#��`õ]V���ڰ$M��ݩ�rD�ک�
Rw +(��Q@�!}���պ�V�}˃�T��QEHQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@�QEhU%H"���PEQ�"�cs����"Ӡu �" +�QW���7��0+QEb +(���9X�dShyHe��KU�|���Vk6�EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP}QZ +^Ԕ�,A&F��t��$���\����má���(e��l��X
��)�P(�Pը�z���V������j�.QHFE-@(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(����� +|o�����Q@���Q����)�I��0(QSM����j�(P)��QE'�� +�T*�Ro^z��
d�� +(�����;U�;�ER��}���5-b�(� +*8��jJ� +�G��:��2�\��Q� +��mQLAEP0�Pɹpz��NF*���U�6�GCVU�.E���;J�VR��IVKIK@M� +(��E�%�M���ժ�Va}�i�*ZeMˑ�UZ�U�Lá�I0!���� + +`-(%NE%��r)H`�h�cs���U
XeGB��ʛV�M��*�z��(��b +PH9�P2�eȥ��>���j�C@QE +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��3袊�R�R�)T�mõ%u:�S��O���Z�FECV� u��U ������E �V�E���(U�d��{t����r)=F]�&O��J��sN�P*)�&���L�QE�������� +r���K���dRԀQE +L�[��K��UZ�� ��)�)G4��j7�ޟU�6:�#"��^T��
GWC.
Te*pi� +ZAKLAN����6���TP�F�ڥ� +(���C&����5B�C&��--A4�?����*Ic�x�j:� +ZJZ`4/���
�]��M�#��'ܼ�jJ���%Lá�QաQL"�+n\�J�'��=
KC,QE QE +U$�J +�E�K��~��ӑ���Q} +�U�M�#��L袊�Q@�1>���*J��iȫJۗ"��"�?�~5
[�*����v����*�Z�&�� +��B-�LFܾ��� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��3袊�R�R��)<��=j�9F��]�i��ړ@Z� �8��� +rFQ��S*�(e�����;�� +��(�B���V�}���9�d~4��˔�4dw����F��M�N���UR85i�QE�K�8=
D)ir��qL��6�����J�T��:���;��QE���۽Y��4M���T���E�(�� +(����(�d�I���5f�Ոd�� +�����=�p�*Z*@�EK,x;�J�� +Z($���sUi���=i42�W�6����R00jPh�a���U�(4Q@�*ۗ4��lv5b��QE +4T�Ǵ�;�U�b +(���/C�JZ +�� +λ[�6������R`�����&��{��V�Fܾ�- +�
nXăުT�էp +(����(�aSC.>SӵC@��*d��z��� +r6���M��-u������-HQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@����잵p� � +�)J�V�(��KPQKq���Z(�84U�b����Ϊ�5i�AESP(�Pը��0z��J S�I���E1:�qO�����Z�Wj c�!��Lh���Q@�#}�۽Y�B��� + +`-Q@�#l���r*�>7(���KWn�@A� V�=�#���� +�q�Nƥ�,�E ��"���(P*y��̿��Z`-QLAEP2H��pz�Tjx��� +�����0���� +��[�V��?*�A�;����R�S��n��(�Q�*�i�*z��tܾ���8�u���u���E@4M���T4��ij��{ңn\Ӫ@�EK*�j*� +r��4�Z`X�KP#m>�=@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@�QEh)i)hQE +4T�Ŵ�^�ʢ�QE)i)hx���z����Y�M���h *9c�2:ԔR�1EO,y��^�Zb +(��X����҂AȤ��[����sN� #�GV�`�wR���������r����V:��RD��O�R���t�x�S�����KC)V�`�|pzS(��*$~ƥ� +CԴ2��Mt�=�L(��(� +(��Q@�1K��=�MT:�����u
-QH �U�����T�0G��-:H�7�cM� +rFc>ݍ2�`���Dc9�=j�:(����(�aJGjJ +(���T�I�'�E--��EE��OZ��:o���85n��7��� +(��ANV*sM����dR��Ӄҧ�5\����7zi�QTS�d`��)i0,�MF�=�� 5�0�J�85b��F
4���s!_qM�ES�&:Ԁ�qPR�A��OE08=x�� + + +ZB +����Ԡ�r(j�-�MG3�Ӫ +�7�� +���4��E5p��N�9?0�j�PȘ��N��:ZJZ� +���*J(�N;�S�9����R`2�(��E%(pi�81��SC��N�EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP}QZEZ�P����(����b�w���MPEPib�̽;����ya�%�ER`A@��T�E)U���J(m:�~4���T�U�p�"��ER���*�)S�W)���;�����)iH*pi*�QE0X�ȫJ��ET���>�-�GQH#"�� +�&��L�D0j��S���m-%-0X�ȫ +ZJZX�l����z(j�_���6>V?CV*�QH%�?2�"����n���4��EU�Q@�T�S)imX0ȧUDr�#�*��EKV�QE �{���pj�1�8����� ��IT ��)��7�pzU��R�&>S�T���P��EHX84T�j���&ESX��O�R�Z�p��R���)ǎG�Q՚���"�`EEU +r9C��Sh�"�a�KUQ�oJ�a�jZ�QE "o�\��Q�a�֚`W���RU��QE!F��O^�-T��}��KC$��L���%��EK"�j*� +PpsIE0,#n�ꬤ��S�- +��EK@:��1��SQH +�S�6���ʠ +p;NE6���� S�S�- +k o�:� +*ya�̟�AV��(��QE +z9C��S(���dS���C�V�Ì��T����@5�8��̥
[���4Ӱ(�:8?�6�AES +�7�pzTb���[<�Z��NJ�PՆQE +�jmP($�J)�:�o�:�T�&x=jZJ(��Q@0�;qO��!*GZJ��Pjw*)���� +pz�W0��֪��8"�;��(��� +�T�u��:� +(��+���2J��1�M=�p�ZuHQ@Q@! +PH9�P2�r���ꖩ +����4�QE �F
W�2�#�Y�#"�`S��$�o#�GT ��)�T�ɏ���QQI��EC��߁�� +(���-%- +�4Ӱ��$��#�Q� +�H���SQ@��<��z���E*h���CE&2�rn���*@(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��#�%����W����ƯR`��N�P��d��+����ӸQ@Q@��(�d�͎��X#��RG!Oq�R�覫�REPLxÏZ}M�����l��
Vt(}���QEP +�pi*ˠa�j�)S�T� KIKL +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +�HC�85-E����u�8�ZHJr9Z����(� ��(P(�PՊ��VR@���UJ"��"�sg���ST(�� +Z(� ��)���r*�8q�U�A �M\e�*4�w�IPMe0i�PfR�����5]���0�(����S#�� �RhTS�pz��@(�� +���@��ڱLd�����R�u��)�'�2� +(��SG&x=j)XE�*(��ߝKP0� �KE +�$���EE+�E@�m���� +:�E +Ub�)(�����Z�Y;7�J�KER +��L +�S� +��m0 +(��A�W��4R�(�U��������( +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��3袊�R�R�(��h��,G?g��~�B��2{�J�.QLI�u��ԀQE +(�� +k(a�N��+2>ڴFF
B���t�L�i)i�R�9�P�`ÊuV��S#��- +6�Z(��&�O����J�� +(�� +(�� +(�� +k(a�N��*�e=ǭ2��/y_ʩ0 ��0ph� +(���z�~���� ����S`�����qF��`-Q@ +�R�*pF)*�(��QE +Q�JJ +Z��ET�QLR�RQ@����ԵR�I +�zT��Rȥ� +(�� +(�� +B�)h��jiF�Z)�(�������EKN1�Ɛ�;PQE�;y��@)��EE+5$w�h�QMK�z�h�� +(�� +(��#x�s��J�E[� �)�Z*G��#�Q�(��*I��ij���W�S�2
+ +:�E +\+p�����#'CǥS�`.�Q$���KREPEPEPMe0E:� +ZJZ`QE +�&#��TTRc.2
-TV*r
N����jZJ(��Q@F��pjJ(�N
%Z*`�^�����ZJZ`��9�P�Ὅ>�ԩ'f��ZZ(�Ҋ@QE +(�� +(��T��c�5% V�*zB�)�h�6 +C�N�2���v�� +(��K����P���]⣢��� ���iA>�X h�4���XQI�R�EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP}QZ +ZJZQ@C�L���r*(�U��A�:��A�8��~�?P��Ha�sKH�(��(��(�����+ӑVh�p)QV�5oc�P4l�zz�&-P ��)�S�B�u�)��qN�� �T�/f��l�QE +(�� +����IE +O/����0Gj��w*lRm�\�E;`�a���6�]��ҘQ@��K��h��{R��(�����f�K��E&�2(h�� +��ڠx];d{U�-%-0AEPEP ��(�fS�qS����{�j+x�)j��'CS���x5--QH�(��(��(��y^
BT��n��F
4��EL��_ʢ ��T� ESh��B�W��S����Uj)42�JG
ϽL#"���( +*�F��~5����)
A�SQE(P(h��=dd�x���Un��I�����+/��5:ȭߟCR���) +pr)X h� =E80=
�(��(��(��(��(��(��(��(��(��(��(��(����Pb�Z(�S����� +ZJZ +�N
R�h��L��=���)i)i�QE(���(2Lz0�j`��ES�H9-n��f�ߝJ# Ԁ�QE +ZJZ +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(������Y�9*N�בT��*4����*@(�� +(����H^**)XT��i�OZVJ)���EPEPEPEPEPI��KE +z�����i��,��1R��9�4���Rq�YnF�:��CSf�uQH�(��(��(��(���n��� +(�� +x����(�����Td��+=����ڋ +z���L��� ocO������R��LY��(�� +ZJ +pb�)����g=~U*��CU(��h��3�ԫ*��+%QH�(��(��(��(� ��h� +PH�i(� ������J�Y���ޞ$ڕ�}QH�(��(��(��(��(��h�����z�l>�%��F�R�N�EEK�I�zQp#���Q����)�M&�E�(������(��(�ɥɤ��u.�m +(���We�jU����-+l0a���c��R,�:�S`,QLY���O�EPEPEPEPM(���Q@����2��QN�W��1zaR:�w(��`-Q@ + )�C�f�E+0u>��J
+=��zp�w╀}�����EPEPEPEPEPEPEPEPEPI��KE +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��Q[����?�ME�������kF��U\ +�T��Σ(��S�
��)��QE!Q@� {ԫ(=x�)iX ����`H�i�R:�J�ME4:���@QE +F7^�i�~����|�Q���Ȧsٿ:w@A@����M�4 +ZJZ +7 + +a�v$S� +*C��4Ҭ:�N�ES +ZAKHAES +zdT�Qp+�b
4��j��:*�Pz��J{b�0詌���v�th�u��Q@��� +(�� +P�:J(A+w�%�CKJ�XCKU�A#��`,QP��N��%��{ӳH�(��(��(��(��(��(��(��(��(��(��(��(��(��(����P`Q�R�@ ����Pv�▊ +�T�%�M0�Ɲ���qF�� +z�(�j)�T=����E �(��(��(��(��(��(��(��(��(��(��(��֊(�����bjJ(#�i�6���p+����U�LJ.T�ғ���TT�W��1����2�v����GcH�(�EPKIK@.�;�Q@iw��e��x��=j*(��z��4��-O�;q��>�f�K�ڐ���R� +ZJZQ@Q@��(�a@��@EP!C���w��GE!���E<N��Z�� - P� +(��Q@E��(�AEP0�����(�AEP0������(�hP�:1�����tQ`&�&^��R�ȑO�R�CUh��[��a�ӄ�J�OEC��%^���IE4:������E +0)h��(�KE +|�R���� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(��h=�4Ɵݧ�@�)�I��ԴS� �jO%���]�\���;�E��n�h�\ +��cb� +O)h�QSyC��y?�~��TT�Sz�O)�(����ޔmoC�Qp�(�EP�E +3E +(�� +(����E +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +(�� +LJ(�Ҍ +(����( +endstream +endobj +214 0 obj +<</Type/Font/Subtype/TrueType/Name/F1/BaseFont/ABCDEE+Verdana/Encoding/WinAnsiEncoding/FontDescriptor 217 0 R/FirstChar 32/LastChar 169/Widths 218 0 R>> +endobj +217 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Verdana/Flags 32/ItalicAngle 0/Ascent 1005/Descent -207/CapHeight 765/AvgWidth 508/MaxWidth 2083/FontWeight 400/XHeight 250/StemV 50/FontBBox[-560 -207 1523 765]/FontFile2 219 0 R>> +endobj +213 0 obj +<</Type/XObject/Subtype/Image/Width 371/Height 286/ColorSpace/DeviceRGB/BitsPerComponent 8/Interpolate false/Filter/FlateDecode/Length 9793>>stream +x��O�mWu�ߴ3!�2�4��B8�D�� +�Fہ$��j[h�Z:�m:H��S�A�����������&5 ,��Ԁ�n����z{��Ͼ��s���~?l�/��{�������^�x$d;^��ޗІ�~�㟽�n� ���}�����*� ���w���*�t�����ַ�$,�Y俽/�����;w�4!,"�����}-�\(?����4ܓ� +]TP����nhf�Q"_�˲BB���SU�������:D��.��F4��&U%� .����
88a�m���I�Q��{�X4:6}ϗ����2�/I�#�ਪ�"���[�t`��k��S����Lr*2)�_�\�`RUv�a���{&)��w +���P����6�*�&� +�&�|�h�_�L�ݻ'��~��!�".��pRU��M�^�j�� ��9,k!;@�v��>��7y���uy"U�K(��ơD0W�|���-�]"w�ܽ>jo�r�B������K�&�"2��GT��{ّ�DpX�B��{冗�;�����O�E��s���&C$N�.^�u}o���R:���a�V�r��]Z��U�F�����IRd7+U尯E�� >��v]��@Z�e-�;2C�>���2��>f�[]�������@!�^O����b�9,��I�+o�����&��h��z��4Er�����;����B�v����~U�����x=a�߉���Dmz&��V�LnK�����,#��:�$�E����Q3.�n\��W��(U9f� +�k�!;��0Q�o�e-��-X>��K.�p�i���� ��xIu*$Ce*�N���*��Z!|�0I��;P~J�*;��KC��$�w��S���ПL�0J#ZQ00����;V�cTүq� �S�X?:���\�-�!o!o$b%�+�.�Ф�!v���\�RYҿoU9f� +��%��X�P���Ñ�l鶔��{�F +z���&+��#���&~�i�C1Ik$,b����I�k�-�"w�!�F5k��N-��S���ݫ�����7w���ݘ��֧�Ȗ��>q[��;ae�e ��S +���n�rߴ�҈���%�����K9� 8�k����jK!I��ɯ�帻Y�0���R��b�֍p�/ӥ����%�\&'�W�FU�Z�hˉ�}�����}��(�-�aY��1��� ���,�n�ˆ��6U.V�ͳ����Õ�T���&��}U�ݴ���/�f�)$hN���D�ջq�a�Dk[�P�ַh�i�h"<�A[��=,*z��i�+���OU���Im����%[�Ոr���c�s*���$&��Jy��m����*[r=��[-�t��۲��V͞T��*o'�_i���x���Ѝ=?��$s�z1'�R'%�M��VTUܦ�E�B>{!)?Y&w�.�:�v�*Ǩ�ߚ^[r��5��j��#�5�ދ�B������ao�D�˶,q���/��Ge�
q!O�VH;#\+d?i�Z�g�J1�$ל��5�J��JNJ�dب�f�- Pד���a5erG��j�+QMO�s'��?�-�4L�(AI��3�� ݽ�d��ǖ_��\�K?�K*��Ww�p�)jѷɞr� ��Lj*o}�Ň���U.JLf�K@l�c3�CsO*��51�N-�;F=*ћ��k�\B��dU��h:����7��3P[��������| +���I6�L�x5_I�4T�� +Ym� �p��[�]��W��rRC��e�$_��/�DÏ�er�4���VΠr��=a�rڢ�6X����jl�'ԅI���HwsfL����&����(^*��a�~�Ae�kLܥ��1ņe���Ж�*E��pt�P�U��%ݢ����_��/^4�.�a)��~�_��o^X>���>���>�_��/}����[ߐ3��t��䒒�� �^�z��W_]rs"�j�G�eS��Z#��Q�*Q��J.2{q�6�Q3~�c_���9��KnNM�Xm���+h�c��;�كU[l��pm(�3Z�8�Aa9��JXfhK�G� �p�
'�E*/t�&�:�jhᝤ�ܽ�gG8 +���P[���(F��9����XC��5uԗLwŰ�f���xg�aGsa9ܟdK�M�B��I����ݻ������o�I��l,I�����.�a�²P[���� �5���>f+�`Ѻw�Da.���5ԣ�4G��?�ė�� �p,�\�P�1�-aږ�&��jc�!�ws�(�1[=l?�5��4���"m8����; +�����Z�h�U$����uIPM� +ש"�X2"Y(̾4w� �ۂ���ub�m��|��΄�y��5�˅�|�$�S֖d���=�oM���|��v��5�M'�&;SP����ʅV�k�����{��~���W���2Z�V�r�2�j9����颡$fko~�L�,�K�_���1#Fv��@�I
�hM� ��$,O=�ȋ/=��2Z���r̗��[V�
�X|>˻���Y0#T�3f�i�Ggo�Bg�����B����蟺ϠV��8��2Z���"37q�s�+V=|��S�%���71�#g��ƌ:M[�BlKwq�����8�n�Ϳ��gDUd�C��b�����p����ص�)h�#F�1�f�)8�OB٘���+�]:lQܼ����R��|�#O��?������o@X���N�������W�$����S�0U�2�-��"Ve��fF���0f|��5f��m��
M-%������o�ڃ��,Ȏ +j[��P5�b/L~C�_����V��F:�@����rѨ����#g�n���}э�a�����kL�@��-��m��uuKvv�*1[[�]��T��n� �̠$�:��������&�p ���%.�s�C ��bf�P7G� +���/=��?�^d�����`VZ+�ޒ_y�D[�סچ�����d�-�;� mCt���]��VDC ˃����>+Ɖ�?�E>2#/D>:7���pwy�9WZ�r7 +Q �K��$�/\�+�F^�|�aNg����V��p#�%,O=�H8��, '>B1�H"r +{P"��m��._���.�&���x��w�A9�����^xX����BdF� �0�� +��D>� +QA[lc�Ī�� +A��'��4)o+�̒3�Mw��f������P��L7k���B�#���=r���Z��1Zq��1*u;�_Ē<�HS������ts�&����8�S�M�@�I3�Z�2��SX����~P���7��$�p��U��Q��9��� +K�<���$��J�&�`9I��A�]x%}c/���a�\�������*$� z��F +�U��Ҥϭ���=�v +�tc��8Ŗ�ئ.~�/}�����2�C�P�_?��1��3�C~�0y0�����BV[�Ds.`+��d�����Ej��o��*D�%m��dR�ŵ�u�(,2g'+�;��װ@.4]�C�S��k����&D�\�O��5�L�N�ظ�^F���QX�Ǥ��.orA�z�m�m�t �����t�4A�K��9���@�4�};���ujr��R+�aь� ��ɂ�<���Q�5J�s�K�������xߪr[Uud�n*VgZ�3�:59�Jt���Cc�[v���Nat�����F���� +�v� W%~���Kzh�������hb�>ݼ�4PBw}�C��=քu��g�|�f������/��xy��PwȘ.a2:���#)��=�U���}O��u���ϖ�R1�.N��V1f�]�;�~���\^�}�|����.~+"_���C~�zh{e���[�*��aҬ�ZL�A.����z䚊����V���6�7��I�-{�&�"��N
�D�M��Q��)+F�+�}�������:Cm�1��-�[��e� s0����� kߧ�,s���U�i�q�4i���*�6�����;6�����C��V���P�cW��.
/������e9M�m����g1t�&aish`���x���i�")�M:>�~��vt�^X�h�� +�1�����ٺ8��7^{`{oh
a9�@9�%��K�3aԷ~��50r5{mݙ�}�M��e{aA���˃����m��Z(,�s_(# =���N���$�@�?ۼd��L�ՑjLrO� ��,���pT�&u,2+=��q��х� �,�`�$��q�R��$>�]j���졁�=m����v�PA^r)i/J������ޤ%b�6 ��|���>ءik���F�� �q��y]v���BУ�ʛ.��.,�;^9r9�i�x��,|�UY[+Ԯ�i������qYߒ��s�lZ��?i�`���}�x1��"�;3�O�
U�_ƶ��R����1C+t�N��v�r��K��c�?�o���ƻ��$,���;���w��i�Q�����z�d��M:�Ԕ_wNJ����V-#�]z���`8��{㽞W]+t� +���Z + 4] /�VǤ��4�nx�IG�Bw��r�ɔ��Y!�"|7v?t��-��7�c�9X.�*���~@��}�{r��4P��I�=I�o�4Y�#'����E��ƀ��d�U�q�n�Q��B�(�Z�L�Ykd�ķ�rgR�]���>'��P��(�P�fǐ敷9���\4#��֎���>#2�Fu� ߅�,����&i�7�P÷P�l��J%�������J�/��#g+%��=U��k�5�մ}߶t��y�zd���^��:U�d���v7[IX@�U�!���U���\ʢ7$6V^#͑H�j]�7j�8�`�QIB�\�YV��"s��d ?n�f��-�����K.�Y�⥜�.죚�X�6^�hv�D����4ч�l&,�E ��b��-s��d@���[������>�+��csr�x�lr��G&w��ٱ�ڌ�8�0�m�~Э�4 +&��1�C�m���Z� +��Ӿ��Q!+��yD1N5Ph�6�~ʶM�6'�Y�m�E�gd������6n��Y����2�si���� +f�%�s�Vp��P��46!]��R(uKF��� +.����m°c��~��I���<*�b(��;l�kFTEt� +m��˓����<(,Î�� +��LN�B�PS��pήX/��Mk9z��[���,PXv<�w���d��,�Rʝ^�۶�G�a�\��Am~���k9�e�܅e�K��[^ǂ*���"5��B eR�0�'�7�U�[כ����@K�.3F���A��91�����+LM*'W�_�N��]��k���A�s)ΟG_MH��>�]�겯ztܬy��[��}X"�0������S�{��0lM��^���$8��`�;�O�5� ���m(���V-�Q�� +#���^�v�՜��h �e��C̒���]F�}�Y2B��&r�Af���G���N͡p���&3��,�����,C��V �,ZCXt̮��T0��B��+
�GHB�{�r�.g*,ڛE�_z�����>���ry+���N�L*��s@�El�Rv^1{o�@s��B�^(�y��o?eЛ���� +�]L��[u��J�G�Fa�t�N�4٨�2��5g|ߪ�ܷ���n��.�^��c���W�� ��U�0��qy6�\��sp�N�q� +#��
w+�N��Y�z����2���=����W��6+����v�xh�l��Z��Y��,=>գ�P9[mN.�h�&�����c���@�w�vm������ +ɜ�8i7�y�u���[N +�Lϫ>v=��І[ȝ:�]�5���9V*���� +��Gs��?u�a�;����Ƙ4���C�c7���VD�0�E��g�dh��>8��A�V���m"S����{�ͨ��� �:g��t��� �d��Ɛ��¾*�W�����%���'�e3ibK�:��k�Y��d#���6�t��� ˍb���RT�����h�|waI85,�PdBTy���z�&��t�M�.�o]�,�A=[9/ +ט=a� +�������Y�٢�C��j��-/�T�˂���G��o�\�H�%,�����o�>���/�xu�6�u��;mg��а���l�̰�Z>}/�L�5� +� +eo��U��1��~�
�r+�u��%�bQ��hma�k�yh�յy�J����.�1�squ�B�BK���%��xu���b�v���R�;�O�,��� +)!]��>Nv�>��7cr�.MXB�e�.LZro㮚�9Ut�i�Y��R��n�1fV���-�-{H�4�oXv�B�q�&��^�öm�pR�g�+?��@a�qݗI��[�-���m(a�Xc���I��h�f�@������y�,�](,7����_�S�=R���elP���tz������
g�](,7���>lV����X 7os��a�Kj蕲��]*�����1N�%ќ�HN���6Gv߮=�~ +��]��#���SX& 㫚�iO3�V�z
�e�q��rvs=�rI����!�DZ����%j +��e'�[fQX�� ,�3��E�iT��z�}#$MԌ�2�h��p?\`�t���$k�cY���.���k�C=?�4�Ϛ�@a���^��|x<\�b��i\u�����x�OX�oV��xB���_�����AavPXV�4`j�->��W��p|��__rsb"Gn�B!�B!�B!�B!�B����3�>��?�[o
�˂2,O~�os��ڝ;���r���|�+�����~���B���������-�O$�#Bv��A{��-�b�3�qy��M�Q�Y}ʟ�>��@�$d3��>���6�����?9^Mg��:V�?���8y��g�#f�����g<{����q��CL�j���Ϳ���� !��JX�YHT%���:"�LDC�A+P�o�rh� +Kx���OB�1��8�(,2�EĜЉ��[_�P�a�����/��O���=!^.�����r�^'\3���_Չ�.B6�����ȅ6��������o_�w����@8�ZG����!d��I,�P/,�9s��E�D�y���r�6�.�jQX�N�K�j�%��� I���2��,,��}�eIz���<��"d(*�E�H�
A�� ,���Y��X����?�*"� �����B��ҡ��!:a����ikK +�b�2pm4��x�c�I��� +b;���-z����9� +!�9�}!�B!�B!�0lG��TЪe��F�^ђ��P6\�=��h��`=���
a��2��i",�善����1Q�o������AVֈ#ڲ0=-N�8���}����v���J2���ͮ��rc<"��@ɳɫ&_Y�/Ax�n"/�+�������)����^������%8��r �D�!��۪��L��ӧ����LդW?�B_�l�!��{I�69\���O��l��t$��u�ۙ!��A|CBG�y.]b��2L�B�?�=nj�Xaю��]���Ua���)���Bl+,r����a&�,B�J�L2��NpݸP��3�7�&Њ.Or��f�x��S�+,���X� �֗}G��nY�4����}�(
!���Ŷ���4�/W�!|I���/�祥 +�EdD�'X)II�}ʾoAXt�F +!��Jo�h +�n�cI}�%���SVX�%��RXY����f�0T4;���zp�;�'\UX��I���@��S�R!,���2ԶA�1�������/r��~��e"��6Լ�^Xr���&��a�@.ܠ����V��i���;��Z�bw �m8��{|$��8O�G0mg�V���l��K�§�}�V؏�ۈ����9�
D!�B!�B!�B!�B!�B!��ʇ>��?�1����w!3��;(,�|��;(,�|��;(,�|��;(,�|��;(,�|��;(,�|��;(,�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�B!�҅�=�O� +endstream +endobj +215 0 obj +<</Type/Font/Subtype/TrueType/Name/F2/BaseFont/ABCDEE+Verdana,Bold/Encoding/WinAnsiEncoding/FontDescriptor 220 0 R/FirstChar 32/LastChar 122/Widths 221 0 R>> +endobj +220 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Verdana,Bold/Flags 32/ItalicAngle 0/Ascent 1005/Descent -207/CapHeight 765/AvgWidth 568/MaxWidth 2257/FontWeight 700/XHeight 250/StemV 56/FontBBox[-550 -207 1707 765]/FontFile2 222 0 R>> +endobj +7 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F6 226 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 227 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 1>> +endobj +227 0 obj +<</Filter/FlateDecode/Length 2019>>stream +x��ZKo9���Q@� ������ ��������`+��]��o�l��I�7:�X���>������n��ٓ�/W��������iu���yu���f�a}w����o_�"o./�Lz�)%�i�!���3m�Q�:I�#�j��2Ev����gߣ�J���<��AY6�QT��T3��>?[��O�o��8a�����zN�~���������b�,��q��7���?����$�kR +jD��rVC�ڊ�߶�R-����M����F.]��/��E�a +0�5���|��1��zӛ�) X�a8�C� �Jb{������� +�I�r5��m�_��n��@�ʁ�%�b|���P��U[�\��� +�F��q�qN.�TD{�(q%��1$,㩄��,d1� ����c���c�ad������K�V�Z?ޑ��q���M/] ���ܔ,���Ŏ�Дp
�P�F?�%�������.�����<�0�hLC�1� ��~��YKkҚ�aRu�&?~�4P��-�q>�!�bf��JJ�J�d�GnXD�)p��C�[�UeT�>�/��f�$���j7>����EsH��â�U@�=B�# +�Ԙ��PKˤQ�HQ��Q�L�!�|F�3E��=i��(iH,����~3�����3���`�@� X8����E�XtLg��)�Gq)����� ��%���SC%P�ñ�KHn�a���i�\��{z$��e�QOaW6�/�v&�x!�zp��y�Y +��`X%�l�����d�씄V�nU#�Ŕ��Շ(x,F +�z�3���v��,9�'�4s�t +�r��t�����{���*��#C�g1T�d��8��0EA�^���Kz����Sw�`��Z�B7��h0I/�(S�qC���V��W�0AI��~���:)f�1�H;῀n����x��L����ϓ: +�uXHLUR�r�v$��Z�d��]��x(����XPLiK*M�e �r$Y(��߳(&ʤ�E���l�#T����rx� +5�S���o��q<��$�E�Q0�(&�Գa�Q>�O��i"�x�.�ʱh�O��i�7Hh�i�8N�u5����uն&K��d:
�^<��
>��Mb����_���Q�`���s��7�V��x@�>����۪MxC~���>< N�iA��S��s|���&ǁ�9����F�ǘ�M�b��OL�)�6�Wq(y$6��,0��Z���/�H0I��M���~ǰt��)g[����_���L^
�6�(�z +��
������4�K���C�]N���"���8�Kۿ���9^Z���
�* +(����� +endstream +endobj +223 0 obj +<</Type/Font/Subtype/Type0/BaseFont/Symbol/Encoding/Identity-H/DescendantFonts 228 0 R/ToUnicode 229 0 R>> +endobj +228 0 obj +[230 0 R] +endobj +230 0 obj +<</BaseFont/Symbol/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 231 0 R/FontDescriptor 232 0 R/W 233 0 R>> +endobj +231 0 obj +<</Ordering(Identity)/Registry(Adobe)/Supplement 0>> +endobj +232 0 obj +<</Type/FontDescriptor/FontName/Symbol/Flags 32/ItalicAngle 0/Ascent 1005/Descent -216/CapHeight 693/AvgWidth 600/MaxWidth 1113/FontWeight 400/XHeight 250/StemV 60/FontBBox[0 -216 1113 693]/FontFile2 234 0 R>> +endobj +224 0 obj +<</Type/Font/Subtype/TrueType/Name/F4/BaseFont/Arial/Encoding/WinAnsiEncoding/FontDescriptor 235 0 R/FirstChar 32/LastChar 121/Widths 236 0 R>> +endobj +235 0 obj +<</Type/FontDescriptor/FontName/Arial/Flags 32/ItalicAngle 0/Ascent 905/Descent -210/CapHeight 728/AvgWidth 441/MaxWidth 2665/FontWeight 400/XHeight 250/Leading 33/StemV 44/FontBBox[-665 -210 2000 728]>> +endobj +225 0 obj +<</Type/Font/Subtype/Type0/BaseFont/Arial/Encoding/Identity-H/DescendantFonts 237 0 R/ToUnicode 238 0 R>> +endobj +237 0 obj +[239 0 R] +endobj +239 0 obj +<</BaseFont/Arial/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 240 0 R/FontDescriptor 241 0 R/W 242 0 R>> +endobj +240 0 obj +<</Ordering(Identity)/Registry(Adobe)/Supplement 0>> +endobj +241 0 obj +<</Type/FontDescriptor/FontName/Arial/Flags 32/ItalicAngle 0/Ascent 905/Descent -210/CapHeight 728/AvgWidth 441/MaxWidth 2665/FontWeight 400/XHeight 250/Leading 33/StemV 44/FontBBox[-665 -210 2000 728]/FontFile2 243 0 R>> +endobj +226 0 obj +<</Type/Font/Subtype/TrueType/Name/F6/BaseFont/ABCDEE+Arial#20Bold,Bold/Encoding/WinAnsiEncoding/FontDescriptor 244 0 R/FirstChar 32/LastChar 121/Widths 245 0 R>> +endobj +244 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Arial#20Bold,Bold/Flags 32/ItalicAngle 0/Ascent 905/Descent -210/CapHeight 728/AvgWidth 479/MaxWidth 2628/FontWeight 700/XHeight 250/Leading 33/StemV 47/FontBBox[-628 -210 2000 728]/FontFile2 246 0 R>> +endobj +208 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 247 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 2>> +endobj +247 0 obj +<</Filter/FlateDecode/Length 2246>>stream +x��YYo�H~7���oCF�>y`� +&�,f2ȣ�Je���|�9�M?c��t��N�R����9+(��2�H�C�{m OH�#��4��e��t��bj3�%����~ux�z;B�%� +��О��Ck�x1���E��,:$/�Nv\7P� +�W�qa˾m�o��;M�험h�S�}��"��P�0Ѭ��tJ�*���d�rM����E��c�#��D�!P���7!E�.�I�Mk��\��D�J�,�{Z�Z٣�K��|�ky�6Z�;��d6ơƻ���P[ +u:���.�^��DU���̿
���K�Y��s���y�$�U��>��1�|g�$I�h�nLڭ��`'Y>n1�}�,�ۆK]�Ily���E-M/Q*8�`��˼U�6����U��M� +ކ`t�Z���!���Ec�c9�c]`X������w�p�G�ɽ*k�����q�R�'��|:���`��
͝0�����s���`ص�����/�[�XV*դ?1��t\/�a��P1��`��u�Ӫ +�[���n�����! ��u��hn%�=mR�� C�ڗJ�M�s3
��T���W�'�ܛ<����T�ޜ���lq��7��#2M���4#R���6mA朗���
*::ٷQ�sD���h��y�9�֑j�܇+8�6TN-ԓ�R��}?U^���\��\wV��J���jN7���Me��*��<.?@�95�����]G�3�ܘ.��ʇR�*�"�f�^lpn���2��hR �Om.�(�3J�>����=�P��j����n�D��G��� �Go�g�v��J�s�%~�X��e���a@7��¢�7̛{<~q +endstream +endobj +8 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F7 248 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R]/MediaBox[0 0 595.32 841.92]/Contents 291 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 3>> +endobj +291 0 obj +<</Filter/FlateDecode/Length 4357>>stream +x�ŝ[o����?��.EI]��dw�"{K�,��z���&N����%KC�ҎҞ��p�#��\H�{x��^^��k����G��l~���>^��=��v�8�8�^������?�W'�,MRQe�?R +��Hs�p����$��(E"K&��%�D�J����n�������w�n/ϒ��e��UM�.���pV�˫�=�R��x*���'�]��������ϓ��@LN�����b�+��i�V��]�,�3O��v�'�����遜|�'4�ɦj�n*&��A1���<���d���۪��47��>�1���΄L�dq���O�����~6f��L���V�4�|�2���yx�c��W0�e�g�ǂzO�j�Uʓ��̽G���$Un�)�Kɴ �h���'�a���C�c{�Z�W�>�Vw.zO�-�>��"�����iz$躬�d_�Lxi�Yv�P瓴'�Z�������%�J3Co�˚���O��)@��ܷ{6�470ÏW��[��|Y����OF�n;�?�LU�Ȫ7���0dR��Ð�<)#������"-��Jݴ�b�J�4 qM�7=9}�}��O�*�wR�\�{���G�l6֤��q*UI�+Ri��A��r ��r��5��� +f�WF�*l;�,&�?̵M�OJGm�c���^�kԪR�)��3.$S��(z�ef�G��*�)�B{1Yj?jR�2E�ͧƇ�Ï�������lvw�&����/��������q��Ldm;]eeV&�
~Y����o:�|��-��fuI�|55�BN)�ͷ�>�VIQ`N�^����g��c!@��jN>hj�g�nz�-|��~��K'�����)�~q��M@�����e" +ܡ�)�ה�Gh������2%
MI�>��!�z�m��5��a��i��z�J@��~8���y���cF
���)�A�����h
��EQ;â�yy����ܱz��?J�?�oz��+1�tz*b�$s9�\�cL�a�$����{�8�P��27��Y�PEҖ됭�橺���C�K#Q�=%Ρq���JZҟk_��|�!�&'��f��K��:b��R���Z�H�y�����gt��=۞I:�.��\��
{���h��,�Q�"y�H{4\��e�� �ܛ�:���3͒;YA��^�D6�dEM֦�y�?���IM�L��� ���e���~�'��e��QX�� +H4{#�\\�WU$��
(z�8@q'4�y,�[��qy�x��u�a��A^�D���}'Ls?[�ߪɭ/c�R�d��G^��aO�B��� <��I�Y�Kx�"\���FZ�p|�}�qW$�Y˹�9��w�,�d� +m��E� �d�ۥ)��.Y +���9�$�w�� +9K ���9�W2�b��9�"�gUj$�O�;�ϓw�i�+Ͼ���>��B�Me��������[F�$[���|ש4~��Ri˂]�6�2���<����c��8�y� m8w�L��+yn����Z�<^M�j��ړ��{�����wWF[[r���Ui�+�b��0�[�+~Y���&�� +a�5��N<�6Ge�G��l�4�6��2�ߴ��,���N���7e`�?�x�mK�n��n1ehT��8T�@4��5T��W�mA_�Z�l�:k/�+;�a_���Wb��+IM4�������hs���R�! ��+�b��h|����,���c��!iT�Sxp����0Ig�vД��{��+hy�p�&�.�<qtaDyR@D�<�9N�\��M$NK��#1�;�@t5�k$�f%��>�g����+��jZ4%�|k~ym��� ������bw�q֥ +��Y)܉�o:7�nڳ%�����ߴ�d�ڱ��8�^�gegK:W��&��R�mrhڶ�N��c�/e�b�iE��ъ���5�� �C�K�my�]:K��\!�;/�.;�aw���]b��.IM4���bT� +m���}�
I�����5Vǁ��v��˂]A3�5M4]�y����.�>Hs�tՇVY������y�cXDYM�} +߆r��=���ol +;)�&�7�4����
�}���k�y:�}ygb�{��{"B�����v�X���W��q�b�hP�˖�9dv�V���-�4���0���؊��e��ܙ8Lk"p +�]�1&�`W��9�DӅ�'�.,MWl=@��˙��S�R��mf�] +��rˣ%�.�ڬ>�930>l�<{ݒ~eπ��\���zQ��.D�굉���[v��E���k��Z�;���Q[��?Krr��`��f�@�@����8'�-���Dc[��͡²϶��������c�e�9���e˂]�� ˴&��� +���cE +endstream +endobj +249 0 obj +<</Subtype/Link/Rect[68.6 715.86 505.1 734.01]/BS<</W 0>>/F 4/Dest[7 0 R/XYZ 68 759 0]/StructParent 4>> +endobj +248 0 obj +<</Type/Font/Subtype/TrueType/Name/F7/BaseFont/ABCDEE+Calibri/Encoding/WinAnsiEncoding/FontDescriptor 292 0 R/FirstChar 32/LastChar 32/Widths 293 0 R>> +endobj +292 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Calibri/Flags 32/ItalicAngle 0/Ascent 750/Descent -250/CapHeight 750/AvgWidth 521/MaxWidth 1743/FontWeight 400/XHeight 250/StemV 52/FontBBox[-503 -250 1240 750]/FontFile2 294 0 R>> +endobj +250 0 obj +<</Subtype/Link/Rect[68.6 697.7 505.1 715.86]/BS<</W 0>>/F 4/Dest[8 0 R/XYZ 68 759 0]/StructParent 5>> +endobj +251 0 obj +<</Subtype/Link/Rect[68.6 679.55 505.1 697.7]/BS<</W 0>>/F 4/Dest[11 0 R/XYZ 68 759 0]/StructParent 6>> +endobj +209 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F7 248 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R]/MediaBox[0 0 595.32 841.92]/Contents 343 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 47>> +endobj +210 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F7 248 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R]/MediaBox[0 0 595.32 841.92]/Contents 391 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 94>> +endobj +211 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F7 248 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R]/MediaBox[0 0 595.32 841.92]/Contents 435 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 143>> +endobj +11 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R/F8 392 0 R/F10 437 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[438 0 R 439 0 R 440 0 R 441 0 R 442 0 R]/MediaBox[0 0 595.32 841.92]/Contents 443 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 184>> +endobj +252 0 obj +<</Subtype/Link/Rect[92.7 664.4 505.1 679.55]/BS<</W 0>>/F 4/Dest[11 0 R/XYZ 68 649 0]/StructParent 7>> +endobj +253 0 obj +<</Subtype/Link/Rect[92.7 649.24 505.1 664.4]/BS<</W 0>>/F 4/Dest[11 0 R/XYZ 68 509 0]/StructParent 8>> +endobj +254 0 obj +<</Subtype/Link/Rect[68.6 628.09 505.1 649.24]/BS<</W 0>>/F 4/Dest[12 0 R/XYZ 68 759 0]/StructParent 9>> +endobj +12 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 444 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 190>> +endobj +255 0 obj +<</Subtype/Link/Rect[68.6 609.94 505.1 628.09]/BS<</W 0>>/F 4/Dest[46 0 R/XYZ 68 759 0]/StructParent 10>> +endobj +46 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 445 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 191>> +endobj +256 0 obj +<</Subtype/Link/Rect[92.7 594.78 505.1 609.94]/BS<</W 0>>/F 4/Dest[46 0 R/XYZ 68 734 0]/StructParent 11>> +endobj +257 0 obj +<</Subtype/Link/Rect[92.7 579.63 505.1 594.78]/BS<</W 0>>/F 4/Dest[48 0 R/XYZ 68 611 0]/StructParent 12>> +endobj +48 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 446 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 192>> +endobj +258 0 obj +<</Subtype/Link/Rect[122.45 564.48 505.1 579.63]/BS<</W 0>>/F 4/Dest[48 0 R/XYZ 68 538 0]/StructParent 13>> +endobj +259 0 obj +<</Subtype/Link/Rect[92.7 549.32 505.1 564.48]/BS<</W 0>>/F 4/Dest[48 0 R/XYZ 68 292 0]/StructParent 14>> +endobj +260 0 obj +<</Subtype/Link/Rect[122.45 534.17 505.1 549.32]/BS<</W 0>>/F 4/Dest[48 0 R/XYZ 68 170 0]/StructParent 15>> +endobj +261 0 obj +<</Subtype/Link/Rect[122.45 519.02 505.1 534.17]/BS<</W 0>>/F 4/Dest[51 0 R/XYZ 68 723 0]/StructParent 16>> +endobj +51 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[447 0 R 448 0 R 449 0 R]/MediaBox[0 0 595.32 841.92]/Contents 450 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 193>> +endobj +262 0 obj +<</Subtype/Link/Rect[92.7 503.86 505.1 519.02]/BS<</W 0>>/F 4/Dest[51 0 R/XYZ 68 533 0]/StructParent 17>> +endobj +263 0 obj +<</Subtype/Link/Rect[122.45 488.71 505.1 503.86]/BS<</W 0>>/F 4/Dest[51 0 R/XYZ 68 485 0]/StructParent 18>> +endobj +264 0 obj +<</Subtype/Link/Rect[92.7 473.56 505.1 488.71]/BS<</W 0>>/F 4/Dest[51 0 R/XYZ 68 327 0]/StructParent 19>> +endobj +265 0 obj +<</Subtype/Link/Rect[122.45 458.4 505.1 473.56]/BS<</W 0>>/F 4/Dest[51 0 R/XYZ 68 242 0]/StructParent 20>> +endobj +266 0 obj +<</Subtype/Link/Rect[92.7 443.25 505.1 458.4]/BS<</W 0>>/F 4/Dest[56 0 R/XYZ 68 551 0]/StructParent 21>> +endobj +56 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F8 392 0 R/F9 436 0 R/F2 215 0 R/F10 437 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 451 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 197>> +endobj +267 0 obj +<</Subtype/Link/Rect[122.45 428.1 505.1 443.25]/BS<</W 0>>/F 4/Dest[56 0 R/XYZ 68 454 0]/StructParent 22>> +endobj +268 0 obj +<</Subtype/Link/Rect[122.45 412.94 505.1 428.1]/BS<</W 0>>/F 4/Dest[57 0 R/XYZ 68 674 0]/StructParent 23>> +endobj +57 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F11 452 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 453 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 198>> +endobj +269 0 obj +<</Subtype/Link/Rect[92.7 397.79 505.1 412.94]/BS<</W 0>>/F 4/Dest[57 0 R/XYZ 68 600 0]/StructParent 24>> +endobj +270 0 obj +<</Subtype/Link/Rect[122.45 382.64 505.1 397.79]/BS<</W 0>>/F 4/Dest[57 0 R/XYZ 68 563 0]/StructParent 25>> +endobj +271 0 obj +<</Subtype/Link/Rect[122.45 367.48 505.1 382.64]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 693 0]/StructParent 26>> +endobj +60 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 454 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 199>> +endobj +272 0 obj +<</Subtype/Link/Rect[92.7 352.33 505.1 367.48]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 585 0]/StructParent 27>> +endobj +273 0 obj +<</Subtype/Link/Rect[122.45 337.18 505.1 352.33]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 512 0]/StructParent 28>> +endobj +274 0 obj +<</Subtype/Link/Rect[122.45 322.02 505.1 337.18]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 439 0]/StructParent 29>> +endobj +275 0 obj +<</Subtype/Link/Rect[92.7 306.87 505.1 322.02]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 306 0]/StructParent 30>> +endobj +276 0 obj +<</Subtype/Link/Rect[122.45 291.72 505.1 306.87]/BS<</W 0>>/F 4/Dest[60 0 R/XYZ 68 233 0]/StructParent 31>> +endobj +277 0 obj +<</Subtype/Link/Rect[122.45 276.56 505.1 291.72]/BS<</W 0>>/F 4/Dest[65 0 R/XYZ 68 403 0]/StructParent 32>> +endobj +65 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Annots[455 0 R]/MediaBox[0 0 595.32 841.92]/Contents 456 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 200>> +endobj +278 0 obj +<</Subtype/Link/Rect[92.7 261.41 505.1 276.56]/BS<</W 0>>/F 4/Dest[68 0 R/XYZ 68 576 0]/StructParent 33>> +endobj +68 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 457 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 202>> +endobj +279 0 obj +<</Subtype/Link/Rect[122.45 246.26 505.1 261.41]/BS<</W 0>>/F 4/Dest[68 0 R/XYZ 68 503 0]/StructParent 34>> +endobj +280 0 obj +<</Subtype/Link/Rect[122.45 231.1 505.1 246.26]/BS<</W 0>>/F 4/Dest[68 0 R/XYZ 68 237 0]/StructParent 35>> +endobj +281 0 obj +<</Subtype/Link/Rect[92.7 215.95 505.1 231.1]/BS<</W 0>>/F 4/Dest[71 0 R/XYZ 68 759 0]/StructParent 36>> +endobj +71 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 458 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 203>> +endobj +282 0 obj +<</Subtype/Link/Rect[122.45 200.8 505.1 215.95]/BS<</W 0>>/F 4/Dest[71 0 R/XYZ 68 613 0]/StructParent 37>> +endobj +283 0 obj +<</Subtype/Link/Rect[122.45 185.64 505.1 200.8]/BS<</W 0>>/F 4/Dest[71 0 R/XYZ 68 474 0]/StructParent 38>> +endobj +284 0 obj +<</Subtype/Link/Rect[92.7 170.49 505.1 185.64]/BS<</W 0>>/F 4/Dest[71 0 R/XYZ 68 378 0]/StructParent 39>> +endobj +285 0 obj +<</Subtype/Link/Rect[122.45 155.34 505.1 170.49]/BS<</W 0>>/F 4/Dest[73 0 R/XYZ 68 515 0]/StructParent 40>> +endobj +73 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F12 459 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 460 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 204>> +endobj +286 0 obj +<</Subtype/Link/Rect[92.7 140.18 505.1 155.34]/BS<</W 0>>/F 4/Dest[75 0 R/XYZ 68 625 0]/StructParent 41>> +endobj +75 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 461 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 205>> +endobj +287 0 obj +<</Subtype/Link/Rect[122.45 125.03 505.1 140.18]/BS<</W 0>>/F 4/Dest[75 0 R/XYZ 68 552 0]/StructParent 42>> +endobj +288 0 obj +<</Subtype/Link/Rect[92.7 109.88 505.1 125.03]/BS<</W 0>>/F 4/Dest[75 0 R/XYZ 68 419 0]/StructParent 43>> +endobj +289 0 obj +<</Subtype/Link/Rect[122.45 94.724 505.1 109.88]/BS<</W 0>>/F 4/Dest[75 0 R/XYZ 68 334 0]/StructParent 44>> +endobj +290 0 obj +<</Subtype/Link/Rect[92.7 79.571 505.1 94.724]/BS<</W 0>>/F 4/Dest[77 0 R/XYZ 68 589 0]/StructParent 45>> +endobj +77 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 462 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 206>> +endobj +343 0 obj +<</Filter/FlateDecode/Length 4593>>stream +x��]�o�6�n����ݪ@dQ�^@Q�y4�!鹱����Y;j���N���C�1���XQ�;�u�3�!��')����ps��<D?�xrz8�/?m>F�O.����\|�ߜ���o�և���O?EO�?�N^�7yt�?>J�4o�(M����*-����QQ&���:OdɪH�:��$��ns|t���џ-��R��Ctw|TfI�D�2�J������G'?���.���D����H�2ɣ���.n�s�>�O���������&~��^�����y�{t���Jܯ_;x�%e6��ɢ�I��m�D�>��4��X����M��Z]�'��Hn�m���KM��A��&k��S8�e�@�I����~������IZ}�ae�&��bi�n�ֺď`A
�JٙG�FO�ł#�HjߜGS� I�ҒS���)������t*'z�Fy.��{�=��>g�G3P�+��U�gz��?���i���1_�������;)�jQ>�����W��
X���O����+��)��7�u�(܀�?۪_oL�Ǎ��~�w�Ҝ�6O���j��f�O��2dR���ː�2����z*9�4O�D<R��I��K*E���#-Ę��������qTA��Lj�ձ'���1`MZ^�W�E�{DEZ�G(|�BH�T!G�ocѬ��Z�<�UaE�'�Ϥ���W��q��]��-�x�?uj��� +c�@�I{�&��)}N�J� +0��f�KU�VT;?�2Qgh��M�U�����9d + �%�0p���Rd �*�J,
���K"�|��;���甝WL;��q�y͋!eU&��1d�4�HC�i���\��4��DCM�!���PÅ��B"�NJ�I��P���Hq�<m����e�g�58Ӻ�XM�#��|�I����t}�����c7x�_ַ}��5�v�w���ZK�D��f`�7� �-�U6����o=)�4�a<�!z.��� +*CU[n�D*�D�m7���%x�~-|f�_b�^���U�R�h?���۔|�)*���K��=�� +g�C�G�4�dgii�' +%{���N� +4z�]�5]�]ai07�� +�$���A3��ɮcHu����$T�C>> Elg +�2t@�i�]��Q��)�!�����"x3�8��σ�%�1�Z
���<�ШD�@��٘c>!eHo��K�j"��wOE]$E�-��Hr���Z,Wx[��t��%��.p +ߏB����U\���F|�4j"�ڨ�9^�v]D�`�nj�V>���SA��?z +�Y��9��@�0����H��F$�P�C5}��P#0wV����ˬ�}�I&�X��tK���P'�$��!3�ȭ�hu��!�k�\a�P>�}�O�Px�r�&��ؑ��m.O��#1��KБ'g?�귞,Z��H�����Z
c$�c̀`\�0�֙auHG +ܮFJБ:�Ui���&;*Hrؑ"-t�X��s��$��!3��\��.�:�W*���2US����ޭG{�L�w�=�tz�m��:6j��>�>ĥ۹�:��?����ˮ'm�R�LGc��u'���n0�>��}?��Ћ��Ʌh�$Ǥn[�ሸyp�\8Jv�T�t�݂o�I�+fy��b�I:D��r���"-�D�t�����6�:N����x>�`���������;rm\�>��6=;ψz���6����1�$�
#j�=m�BB�h� +�(�������~��A�ߑ���j����o��\��'��~��h�sr��9��Q��ߙ뤔im���v�OT�������������hul?D��H*+ĵ��9n��K*JĒ:�f�X�t��бk0�tE�I�)O8dʘ�k�����q�2��f�����=�c
e%�Y �`.�LVBJ�A���f`��]���8AD�dY#�bF���{D����W�ά�����`c|��u���h7�&�伤?wZ�u��6�sx�Y�+4��p��>� +H�a�,�Yl�q˲�:TY��-T���,S�)�6����4z0Sƚ.�)[�u�:SvH��9Y�41�0�<%�ɭ�hu��"*f��_zEyF�羌��\�pe����ۡ�.6s'��7����]���b���\E�ۏ��9�d��p��)�a뷹}o�rٱ��f@�I�3���-���~ѧ[�/�����Q���C$9�b-�K-
��<FR������,����<��"S8������ +���k0h&�N%��B��3���-;hu���Q�o����$No_�H�<b.i�\�f��\���M}l{ ��gE��{(�t�@-�--�E���]f���HB1���$��=���.����O�X"��i�`��E����$��!3��.@Hu��an 8��O��j
���v�li0h:;$����a��b�>�D� �q��"6�D��oȢ���^���t�u +8B��A�>=��s.���yB�t�*�@w�6��[~��L�vU��J�}+U��Q�"na��&6���<������7��\!C(Gq��uv��`>����QsL}�F��@���藋 x=�Z� ^A���נ�j#�b�$|�y��F�2Z����D +endstream +endobj +295 0 obj +<</Type/ExtGState/BM/Normal/ca 1>> +endobj +296 0 obj +<</Type/ExtGState/BM/Normal/CA 1>> +endobj +297 0 obj +<</Subtype/Link/Rect[92.7 744.23 505.1 759.38]/BS<</W 0>>/F 4/Dest[77 0 R/XYZ 68 274 0]/StructParent 46>> +endobj +298 0 obj +<</Subtype/Link/Rect[122.45 729.07 505.1 744.23]/BS<</W 0>>/F 4/Dest[77 0 R/XYZ 68 189 0]/StructParent 48>> +endobj +299 0 obj +<</Subtype/Link/Rect[122.45 713.92 505.1 729.07]/BS<</W 0>>/F 4/Dest[80 0 R/XYZ 68 443 0]/StructParent 49>> +endobj +80 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 463 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 207>> +endobj +300 0 obj +<</Subtype/Link/Rect[68.6 701.77 526.75 713.92]/BS<</W 0>>/F 4/Dest[80 0 R/XYZ 68 225 0]/StructParent 50>> +endobj +301 0 obj +<</Subtype/Link/Rect[68.6 686.61 505.1 701.77]/BS<</W 0>>/F 4/Dest[80 0 R/XYZ 68 225 0]/StructParent 51>> +endobj +302 0 obj +<</Subtype/Link/Rect[122.45 671.46 505.1 686.61]/BS<</W 0>>/F 4/Dest[80 0 R/XYZ 68 128 0]/StructParent 52>> +endobj +303 0 obj +<</Subtype/Link/Rect[92.7 656.31 505.1 671.46]/BS<</W 0>>/F 4/Dest[82 0 R/XYZ 68 348 0]/StructParent 53>> +endobj +82 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 464 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 208>> +endobj +304 0 obj +<</Subtype/Link/Rect[92.7 641.15 505.1 656.31]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 759 0]/StructParent 54>> +endobj +83 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 465 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 209>> +endobj +305 0 obj +<</Subtype/Link/Rect[92.7 626 505.1 641.15]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 649 0]/StructParent 55>> +endobj +306 0 obj +<</Subtype/Link/Rect[122.45 610.85 505.1 626]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 577 0]/StructParent 56>> +endobj +307 0 obj +<</Subtype/Link/Rect[92.7 595.69 505.1 610.85]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 504 0]/StructParent 57>> +endobj +308 0 obj +<</Subtype/Link/Rect[122.45 580.54 505.1 595.69]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 419 0]/StructParent 58>> +endobj +309 0 obj +<</Subtype/Link/Rect[122.45 565.39 505.1 580.54]/BS<</W 0>>/F 4/Dest[83 0 R/XYZ 68 153 0]/StructParent 59>> +endobj +310 0 obj +<</Subtype/Link/Rect[68.6 553.23 526.75 565.39]/BS<</W 0>>/F 4/Dest[88 0 R/XYZ 68 723 0]/StructParent 60>> +endobj +88 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F13 466 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 467 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 210>> +endobj +311 0 obj +<</Subtype/Link/Rect[68.6 538.08 505.1 553.23]/BS<</W 0>>/F 4/Dest[88 0 R/XYZ 68 723 0]/StructParent 61>> +endobj +312 0 obj +<</Subtype/Link/Rect[122.45 522.93 505.1 538.08]/BS<</W 0>>/F 4/Dest[88 0 R/XYZ 68 575 0]/StructParent 62>> +endobj +313 0 obj +<</Subtype/Link/Rect[68.6 510.77 526.75 522.93]/BS<</W 0>>/F 4/Dest[88 0 R/XYZ 68 309 0]/StructParent 63>> +endobj +314 0 obj +<</Subtype/Link/Rect[68.6 495.62 505.1 510.77]/BS<</W 0>>/F 4/Dest[88 0 R/XYZ 68 309 0]/StructParent 64>> +endobj +315 0 obj +<</Subtype/Link/Rect[122.45 480.47 505.1 495.62]/BS<</W 0>>/F 4/Dest[90 0 R/XYZ 68 615 0]/StructParent 65>> +endobj +90 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 468 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 211>> +endobj +316 0 obj +<</Subtype/Link/Rect[92.7 465.31 505.1 480.47]/BS<</W 0>>/F 4/Dest[90 0 R/XYZ 68 516 0]/StructParent 66>> +endobj +317 0 obj +<</Subtype/Link/Rect[122.45 450.16 505.1 465.31]/BS<</W 0>>/F 4/Dest[90 0 R/XYZ 68 441 0]/StructParent 67>> +endobj +318 0 obj +<</Subtype/Link/Rect[92.7 435.01 505.1 450.16]/BS<</W 0>>/F 4/Dest[93 0 R/XYZ 68 375 0]/StructParent 68>> +endobj +93 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F8 392 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 469 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 212>> +endobj +319 0 obj +<</Subtype/Link/Rect[122.45 419.85 505.1 435.01]/BS<</W 0>>/F 4/Dest[93 0 R/XYZ 68 241 0]/StructParent 69>> +endobj +320 0 obj +<</Subtype/Link/Rect[92.7 404.7 505.1 419.85]/BS<</W 0>>/F 4/Dest[95 0 R/XYZ 68 723 0]/StructParent 70>> +endobj +95 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 470 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 213>> +endobj +321 0 obj +<</Subtype/Link/Rect[122.45 389.55 505.1 404.7]/BS<</W 0>>/F 4/Dest[95 0 R/XYZ 68 540 0]/StructParent 71>> +endobj +322 0 obj +<</Subtype/Link/Rect[92.7 374.39 505.1 389.55]/BS<</W 0>>/F 4/Dest[95 0 R/XYZ 68 420 0]/StructParent 72>> +endobj +323 0 obj +<</Subtype/Link/Rect[122.45 359.24 505.1 374.39]/BS<</W 0>>/F 4/Dest[95 0 R/XYZ 68 347 0]/StructParent 73>> +endobj +324 0 obj +<</Subtype/Link/Rect[122.45 344.09 505.1 359.24]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 68 759 0]/StructParent 74>> +endobj +98 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F9 436 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 471 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 214>> +endobj +325 0 obj +<</Subtype/Link/Rect[68.6 331.93 526.75 344.09]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 68 662 0]/StructParent 75>> +endobj +326 0 obj +<</Subtype/Link/Rect[68.6 316.78 505.1 331.93]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 68 662 0]/StructParent 76>> +endobj +327 0 obj +<</Subtype/Link/Rect[122.45 301.63 505.1 316.78]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 68 565 0]/StructParent 77>> +endobj +328 0 obj +<</Subtype/Link/Rect[92.7 286.47 505.1 301.63]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 116 394 0]/StructParent 78>> +endobj +329 0 obj +<</Subtype/Link/Rect[122.45 271.32 505.1 286.47]/BS<</W 0>>/F 4/Dest[98 0 R/XYZ 68 200 0]/StructParent 79>> +endobj +330 0 obj +<</Subtype/Link/Rect[92.7 256.17 505.1 271.32]/BS<</W 0>>/F 4/Dest[103 0 R/XYZ 68 759 0]/StructParent 80>> +endobj +103 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F9 436 0 R/F2 215 0 R/F14 472 0 R/F10 437 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 473 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 215>> +endobj +331 0 obj +<</Subtype/Link/Rect[122.45 241.01 505.1 256.17]/BS<</W 0>>/F 4/Dest[103 0 R/XYZ 68 662 0]/StructParent 81>> +endobj +332 0 obj +<</Subtype/Link/Rect[122.45 225.86 505.1 241.01]/BS<</W 0>>/F 4/Dest[103 0 R/XYZ 68 601 0]/StructParent 82>> +endobj +333 0 obj +<</Subtype/Link/Rect[92.7 210.71 505.1 225.86]/BS<</W 0>>/F 4/Dest[103 0 R/XYZ 68 505 0]/StructParent 83>> +endobj +334 0 obj +<</Subtype/Link/Rect[122.45 195.55 505.1 210.71]/BS<</W 0>>/F 4/Dest[103 0 R/XYZ 68 250 0]/StructParent 84>> +endobj +335 0 obj +<</Subtype/Link/Rect[122.45 180.4 505.1 195.55]/BS<</W 0>>/F 4/Dest[106 0 R/XYZ 68 403 0]/StructParent 85>> +endobj +106 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F14 472 0 R/F9 436 0 R/F15 474 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 475 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 216>> +endobj +336 0 obj +<</Subtype/Link/Rect[92.7 165.25 505.1 180.4]/BS<</W 0>>/F 4/Dest[106 0 R/XYZ 68 306 0]/StructParent 86>> +endobj +337 0 obj +<</Subtype/Link/Rect[122.45 150.09 505.1 165.25]/BS<</W 0>>/F 4/Dest[106 0 R/XYZ 68 183 0]/StructParent 87>> +endobj +338 0 obj +<</Subtype/Link/Rect[122.45 134.94 505.1 150.09]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 709 0]/StructParent 88>> +endobj +109 0 obj +<</Type/Page/Parent 205 0 R/Resources<</Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F15 474 0 R/F2 215 0 R/F14 472 0 R/F9 436 0 R/F11 452 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 476 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 217>> +endobj +339 0 obj +<</Subtype/Link/Rect[92.7 119.79 505.1 134.94]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 623 0]/StructParent 89>> +endobj +340 0 obj +<</Subtype/Link/Rect[122.45 104.63 505.1 119.79]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 586 0]/StructParent 90>> +endobj +341 0 obj +<</Subtype/Link/Rect[122.45 89.479 505.1 104.63]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 513 0]/StructParent 91>> +endobj +342 0 obj +<</Subtype/Link/Rect[122.45 74.326 505.1 89.479]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 453 0]/StructParent 92>> +endobj +391 0 obj +<</Filter/FlateDecode/Length 4738>>stream +x��\[o7�~7�����^@���oA +���^��mq�����I�x}v��S}���o��O��e��E`Γ�NT�M`���ɉ^\��k��Z\$��>9i��d�o��> +��.|�H�����n����(�RmƢ���N/��4`�o_��3R32/4:�a�4X��d*BV4����� m�Q�H��`QiZ�"˫и�h��4&8�U� Y�,0SЄ +�NZ��v����~�|�Ph�W��!���ܟqIa�� �N���6}��C�dӯ��'��P<�e���s�4[ +4�mA����y]qڣ(}U�m�Kp����5�8�u���L�� +c��?�}��<@��.���ɕ�ߌ��x�G��/S�{j�H�tG��G|�G�GQi�pT�pTCNW[��m�����-��zvF}k�W�e���`��!�ʛ�Ő{YS�¬vY���j[��i��"�l0�cX3'O�o��F�!o�C�Cqi�0� +1�Ԩ�f}.�����_�]?8 ���Z��!ٚ�Z��B7<#0�OO�v�f�@|0�4 ����ܴs�F� ƭ7�ȳ
Y6*�VͰ����b��2ú��&akU��c�Q�ơƘȠ�H��I��fj�0������Ԟ� +���!Y8Cp9i�`�Ȅ����g%�,���g�r�؏.�A�!� �U%��|��Օ�[� +$�(��w�>��xZ��9�@�Ky�a�٧b�����1X,�5n�Q4���ں�~I'�'�Ǫf�>P���qo)�M~�J��P5�B�.��vNWr�rz�%�Mi�fV5��_9AU
�����-5c)n�(tV�j�sx-�ق�_�)P�m��L=�\��^RJ��'��J����MN:�e�NԳ
y���#����PhT���0�(��F��"�y�P�f�qqf�&L+H +ty����I�l�ߜ=���Y�I��� U�ApNp�C3*`�`s����֤;�v�OK�? +R)<Sۣ�e�vֵ�36o6p���@Mw>�=��=b��Ip�bR�6�)���}d:�0��c:YH�qqfuRX�� +�VD�LZ��Sre�g��01=,�����OI����4iZq%M�g�����=�=xFD�������Q��mb]Ia���12��Fx�,�xJ�Ȝ���$W��&��ꪳ��.�,� +'��{�b�Z�B��W�_[N�����l��XER���7�{jua%�9|gϊw���@��Z�=��a7��F� �KM�Ù��
�sCO�C��r�Nq�b�#�*>@�U�47��3�U��PCl�X����v�>��+<��F��� +t�N����&�X���6����0�}6:�$�G�$>@�$igI�<��L��N���pli]�����coz��ց�����qK��a<�Ì�u�H�哹��V��!�"��� +���zG)�xI����p1�d������qqf����z��3L�.ީĝ���ۦ-�d&�Y��l����*���'W�p
_�&�ŕ�cTS���>7��ϫY0+0#�Y��֖e���|0���g����n��|����$|\_�9+�=���o�y�_� +�=Cjse�c���f��[����w���s�E�t�0��u�p��.��]��(�蒦����E�0�/�n��<��o`{!�
|�y!��h�N�w��ն�Ix
�|B{�d5�;�[!���+�R|�G�?.��*a��n�]�����kezq��)o=Ƞ�cq�L���UF��z�J<+-}��l1!x'�n7���f��_[������Xx�8��ޝ��j��}F{�H�.I����^e���+�22���zUIS��8�z%L��/����$
���*��p4��=6��*R:��n(��°Ͱ>�h�î��JO�o a�K&7�a*�bJ���řŔ0o�F,w��U÷[Wc����i��{h&F���l��?���o�T���|V��>��.��`W1���c�B$�����A�G�z"��F�o@�4���P'�c�5v���;8�t ^˷Y��l&n�%K|L���ѹ�i/�f�����u��o!g?��6�1���q@�q�mg���Ú��2�i��~����Zg��o|��������(��6�^6������(���2z��ol�� WT�Y-�[9D��uT����G<�/������4�R.e#]��¡�#ז�����h�s��3����F�^�ř��6az�?�u���ii\F'Mߠb��cr3^j�;����;a���F�M6(wKt������t�Js�-�;I�9#�@)�"�K�">@��Z�L�řE�4�Ⱥ�'��.b�{ˊ���yf���M�r�oG�+��3(��=x���@�{�x��~���˛i,
�������~E�l�}��H<�&NpQ2t�^�������T��8��sl�����t��EU���H�8�XѤVTb��>�$ +endstream +endobj +344 0 obj +<</Subtype/Link/Rect[122.45 744.23 505.1 759.38]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 379 0]/StructParent 93>> +endobj +345 0 obj +<</Subtype/Link/Rect[68.6 732.07 526.75 744.23]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 222 0]/StructParent 95>> +endobj +346 0 obj +<</Subtype/Link/Rect[68.6 716.92 505.1 732.07]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 222 0]/StructParent 96>> +endobj +347 0 obj +<</Subtype/Link/Rect[122.45 701.77 505.1 716.92]/BS<</W 0>>/F 4/Dest[109 0 R/XYZ 68 137 0]/StructParent 97>> +endobj +348 0 obj +<</Subtype/Link/Rect[122.45 686.61 505.1 701.77]/BS<</W 0>>/F 4/Dest[179 0 R/XYZ 68 759 0]/StructParent 98>> +endobj +179 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 477 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 218>> +endobj +349 0 obj +<</Subtype/Link/Rect[122.45 671.46 505.1 686.61]/BS<</W 0>>/F 4/Dest[179 0 R/XYZ 68 574 0]/StructParent 99>> +endobj +350 0 obj +<</Subtype/Link/Rect[122.45 656.31 505.1 671.46]/BS<</W 0>>/F 4/Dest[179 0 R/XYZ 68 332 0]/StructParent 100>> +endobj +351 0 obj +<</Subtype/Link/Rect[68.6 644.15 526.75 656.31]/BS<</W 0>>/F 4/Dest[180 0 R/XYZ 68 759 0]/StructParent 101>> +endobj +180 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F11 452 0 R/F10 437 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 478 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 219>> +endobj +352 0 obj +<</Subtype/Link/Rect[68.6 629 505.1 644.15]/BS<</W 0>>/F 4/Dest[180 0 R/XYZ 68 759 0]/StructParent 102>> +endobj +353 0 obj +<</Subtype/Link/Rect[68.6 616.85 526.75 629]/BS<</W 0>>/F 4/Dest[180 0 R/XYZ 68 468 0]/StructParent 103>> +endobj +354 0 obj +<</Subtype/Link/Rect[68.6 601.69 505.1 616.85]/BS<</W 0>>/F 4/Dest[180 0 R/XYZ 68 468 0]/StructParent 104>> +endobj +355 0 obj +<</Subtype/Link/Rect[122.45 586.54 505.1 601.69]/BS<</W 0>>/F 4/Dest[180 0 R/XYZ 68 356 0]/StructParent 105>> +endobj +356 0 obj +<</Subtype/Link/Rect[68.6 574.39 526.75 586.54]/BS<</W 0>>/F 4/Dest[181 0 R/XYZ 68 589 0]/StructParent 106>> +endobj +181 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 479 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 220>> +endobj +357 0 obj +<</Subtype/Link/Rect[68.6 559.23 505.1 574.39]/BS<</W 0>>/F 4/Dest[181 0 R/XYZ 68 589 0]/StructParent 107>> +endobj +358 0 obj +<</Subtype/Link/Rect[68.6 547.08 526.75 559.23]/BS<</W 0>>/F 4/Dest[181 0 R/XYZ 68 286 0]/StructParent 108>> +endobj +359 0 obj +<</Subtype/Link/Rect[68.6 531.93 505.1 547.08]/BS<</W 0>>/F 4/Dest[181 0 R/XYZ 68 286 0]/StructParent 109>> +endobj +360 0 obj +<</Subtype/Link/Rect[122.45 516.77 505.1 531.93]/BS<</W 0>>/F 4/Dest[182 0 R/XYZ 68 759 0]/StructParent 110>> +endobj +182 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 480 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 221>> +endobj +361 0 obj +<</Subtype/Link/Rect[122.45 501.62 505.1 516.77]/BS<</W 0>>/F 4/Dest[182 0 R/XYZ 68 492 0]/StructParent 111>> +endobj +362 0 obj +<</Subtype/Link/Rect[122.45 486.47 505.1 501.62]/BS<</W 0>>/F 4/Dest[182 0 R/XYZ 68 384 0]/StructParent 112>> +endobj +363 0 obj +<</Subtype/Link/Rect[68.6 474.31 526.75 486.47]/BS<</W 0>>/F 4/Dest[185 0 R/XYZ 68 759 0]/StructParent 113>> +endobj +185 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 481 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 222>> +endobj +364 0 obj +<</Subtype/Link/Rect[68.6 459.16 505.1 474.31]/BS<</W 0>>/F 4/Dest[185 0 R/XYZ 68 759 0]/StructParent 114>> +endobj +365 0 obj +<</Subtype/Link/Rect[68.6 447.01 526.75 459.16]/BS<</W 0>>/F 4/Dest[185 0 R/XYZ 68 553 0]/StructParent 115>> +endobj +366 0 obj +<</Subtype/Link/Rect[68.6 431.85 505.1 447.01]/BS<</W 0>>/F 4/Dest[185 0 R/XYZ 68 553 0]/StructParent 116>> +endobj +367 0 obj +<</Subtype/Link/Rect[122.45 416.7 505.1 431.85]/BS<</W 0>>/F 4/Dest[185 0 R/XYZ 68 263 0]/StructParent 117>> +endobj +368 0 obj +<</Subtype/Link/Rect[122.45 401.55 505.1 416.7]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 759 0]/StructParent 118>> +endobj +187 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 482 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 223>> +endobj +369 0 obj +<</Subtype/Link/Rect[68.6 389.39 526.75 401.55]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 662 0]/StructParent 119>> +endobj +370 0 obj +<</Subtype/Link/Rect[68.6 374.24 505.1 389.39]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 662 0]/StructParent 120>> +endobj +371 0 obj +<</Subtype/Link/Rect[122.45 359.09 505.1 374.24]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 541 0]/StructParent 121>> +endobj +372 0 obj +<</Subtype/Link/Rect[68.6 346.93 526.75 359.09]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 193 0]/StructParent 122>> +endobj +373 0 obj +<</Subtype/Link/Rect[68.6 331.78 505.1 346.93]/BS<</W 0>>/F 4/Dest[187 0 R/XYZ 68 193 0]/StructParent 123>> +endobj +374 0 obj +<</Subtype/Link/Rect[68.6 319.63 526.75 331.78]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 759 0]/StructParent 124>> +endobj +188 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 483 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 224>> +endobj +375 0 obj +<</Subtype/Link/Rect[68.6 304.47 505.1 319.63]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 759 0]/StructParent 125>> +endobj +376 0 obj +<</Subtype/Link/Rect[68.6 292.32 526.75 304.47]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 553 0]/StructParent 126>> +endobj +377 0 obj +<</Subtype/Link/Rect[68.6 280.17 526.75 292.32]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 553 0]/StructParent 127>> +endobj +378 0 obj +<</Subtype/Link/Rect[68.6 265.01 505.1 280.17]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 553 0]/StructParent 128>> +endobj +379 0 obj +<</Subtype/Link/Rect[122.45 249.86 505.1 265.01]/BS<</W 0>>/F 4/Dest[188 0 R/XYZ 68 223 0]/StructParent 129>> +endobj +380 0 obj +<</Subtype/Link/Rect[122.45 234.71 505.1 249.86]/BS<</W 0>>/F 4/Dest[189 0 R/XYZ 68 759 0]/StructParent 130>> +endobj +189 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 484 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 225>> +endobj +381 0 obj +<</Subtype/Link/Rect[68.6 222.55 526.75 234.71]/BS<</W 0>>/F 4/Dest[189 0 R/XYZ 68 502 0]/StructParent 131>> +endobj +382 0 obj +<</Subtype/Link/Rect[68.6 207.4 505.1 222.55]/BS<</W 0>>/F 4/Dest[189 0 R/XYZ 68 502 0]/StructParent 132>> +endobj +383 0 obj +<</Subtype/Link/Rect[122.45 192.25 505.1 207.4]/BS<</W 0>>/F 4/Dest[190 0 R/XYZ 68 657 0]/StructParent 133>> +endobj +190 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F10 437 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 485 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 226>> +endobj +384 0 obj +<</Subtype/Link/Rect[122.45 177.09 505.1 192.25]/BS<</W 0>>/F 4/Dest[190 0 R/XYZ 68 367 0]/StructParent 134>> +endobj +385 0 obj +<</Subtype/Link/Rect[68.6 164.94 526.75 177.09]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 710 0]/StructParent 135>> +endobj +192 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 486 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 227>> +endobj +386 0 obj +<</Subtype/Link/Rect[68.6 149.79 505.1 164.94]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 710 0]/StructParent 136>> +endobj +387 0 obj +<</Subtype/Link/Rect[122.45 134.63 505.1 149.79]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 602 0]/StructParent 137>> +endobj +388 0 obj +<</Subtype/Link/Rect[122.45 119.48 505.1 134.63]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 481 0]/StructParent 138>> +endobj +389 0 obj +<</Subtype/Link/Rect[68.6 107.33 526.75 119.48]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 384 0]/StructParent 139>> +endobj +390 0 obj +<</Subtype/Link/Rect[68.6 92.173 505.1 107.33]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 384 0]/StructParent 140>> +endobj +435 0 obj +<</Filter/FlateDecode/Length 5083>>stream +x��][s�6�~w���/;�U��m�T%�N��x�+�T%�@�fd�Z������t�ҙ:N,ͥh�__ѠOϷ�ͪ]t�7ߜ�w]����J~;�\o�yz��Y�~h�o���f}wv��~s�di&�\�RJ�UV&��/�2-UR�2Uu��"��$�i�����՟_���� �?��ܽ|Q�iF�*U����������oE�$���/D���D"2�ʤjD���[��~|���o���D����ٛ��&�߿|�V���uJ��e����i�������]��e&�b�~.g7�jv
�l�Hn������K���^��Y�� �K�"��YZ믶���P���6*ͪ��iU��y�̕�1^�ނ#JPWZ��0{��(�8c���]���~$��M�S雒k*i��`�l������4`�^��n}�mfr9�-����R��̿}�e��l���1_��������&iK�Q^�7p���l{Z��~t �|{�X� H���S�v�h܀�_���[ +�o������y%E�BX��'�Y7#�}({�M��13�|�n�����i�16=E�k�K3�9S��ʬ�O�Ni�o`3{X��K=J�����6ٴ[�wac1��>�L/t�C�yq��\�2�B���OF�n �t�2�N�үZ� +�)��۬5�Q�G3��Ckƚe +R�Ϝ@c�h�V%wA0�&� �V!�1�(H���������C5e ��1TK.���L�Z�P]ꔥ�����sO�&���Z��Q��#������R|�{Ђeo�+��}mr��Ks���ʹ��~�^;,��iW �_���q�V�g��q՟���z��z���#��D�G9Y@��@)�@�K3�� � +u0d�l���Z�_�%�XK�sw�ztH"�����\�Q�ċ�uT�7�'A�&�G"_h)rDխ6¢��.�g�{��#�2B6;�a�}xƋ���$e�b��b2*�&k&&K�����y���1hI>kv�q8���]3^^-z�c���91uP9���"&1�ݼ~�}��ʼL�/n�R�E���� +�{��j9����+?�]<2��f��mU�R�����۬����N{��gf�R��G{m���T��UL}{�ɑ�jI.�������
W-��L��`&���r`_rҪdm���M��y@o�u>�
]q4+;X���b�!�<�Bk,��.���_e�ԍS�<�����]v����_���h"c��D�T4��&^qq&��̼�\���Ѓes�;�B�`���]��6���0�lN|����O0���Kt*�d�.�s�i1v?-!�ob+}�q��P�څ���3BX*k���6{�}�� +�j�� +Jق�7ӱVAH�b~�� ����רPx���W��B�Vn^fRg�y]�˃��`���J��Ew�Ž&��jTP�sI���(Lq,�F����I�_�yn������� +W?<)�Я��%��n�m_$�s��z�U +����z�D�k�OHGj�ec��c`��'�řD3Q,t����կ(�v-������1�]2Qy�V��H`�{��ZS��ѿ�+�I�7C���GRА�z��`/pǣ-%���}n���?�� �nRͫW���$>�x�~��<EQ�4RX1���_�z}�:"U�x�e�:���ûn��=�)0��$x�����Hq5&��Sc�@Ը��17���3���ܺ(��1]�FG5}`eBm���sG����A��� +�9��bx�;���~� +�T���>�% +���W�,G��.*� +�2�W�/b +3a,d�6�؆���k\�o���/u�X|g71����a�aIz&�)��S.A�]��!k���E�P���o%��!#�C��ɹ�a\�I�0��Bg�u�d�o��=�FA>���ݿ��� |��oY`�J�9��ȸ��|�>�M�!@�������8B)X]�P�<��M! +��@{��� ����� 7!��3�nF�������O2�>���}�P�' +,Sx�"�~B�����Џ����k���hkq�jd6��;�߃1��33�8���R�O��w��_l�{��~5��� �aK����2�a�N���L�N)�p죍�Ap/���q�J���)�'W� `X��C�mr����TDA���~z�v2��[�ch������� +��?B{<�Ge��c`����řD3�W�y��"�빤t�m���^��*���ܶ��o��|�0����>L�âĖ�w]ҹݳ�2Y?X=��a�]k��{oX��H�=�֦ƻ��Vy��%���:u�{��>d�r�A�ؐ#8�Do����X�r�&U���i���HS�W���9���9�(�J��:��L)�df�i��^�[
kc6w+כ�Ž%,o���E��8ؤ �T���]�֝��5�}��.��t)����o�ܡ�*�}T}�o�F�b]����j|�q7N�룚Φ����x鉋|sp�¥T�6}챺�y�h�"�ʇ_p���B�=J!K�[�$x�/U�)����xJO�J/��b\�I�g��JJ�Co���S?2Ng�-]��|��o;앣�Q�f h�#i����S�:4���b���Hm�����x��Ė�>E]� %c�@J� ��qq&A��U!v���P�}�+�ٛ���$��u +��si4��K��ݯP��m~
C0 +�����$"H��
$n^gH̼H��66�_�#Z(�
{��2���t4�hA���iY�f�l�.Пѽ��YP�<l��
n��Żҕ�k���y��d�d?ǥ5�`����I�"L���0�F�NTK�k2���;�ݟ�η��}v;J�z�p�Y!�\���YhM)(�Q�ٲB%�<W��wt4R\�ɵ�2����=�řTjn��ɴp������[�sg3���GG
��n7�[Eu=���{ W��'��?�
#�`��00���#M����������;o��3 fޔ��3�=e_�9�����u��T��G�=���qӹ�˭���Ck��� +�'�;y˽N +N�e��������h�W:&UU�*.�� +f�Wv�FԵۨrn�i������^�4���O^�=��ghh}O�C4�q� ��*����}=�h�#�ǝ��O`��@t��� +�C��Xo��'�SNOP6�({7U��3�=f����_Z�)o)zp���kg��;��pg�3��ޏ������O:�ΠZ��\�-s��t~�De��.�w�a߈[���k��X"��D�X�fKqq&��̖r��Kybǣ�{��ѣ��(��,���q�-=�;l1�j�7$H��q �Q�/L +�;�Bš��{��I��GB{�Bl{y<�D�)t47S��3 hf������A�������/�S�)�-�ϯ\���xzط�~0�c�-z�H +���M���?Z@�9@��H� +���(x]꿍y�]��H�-���|T\��L�*x���<;�-�ki�2M/tBT��ʌ����|����ʰ�˧#�36�8��U��|��۳��5|�!��3[NQNN���Ή&k< ��!��R2"O1([1��LT���61��T�ʟ�� ��5A�(H��J���ٺ<������bb����^b =���}N���g� +���\��*R�8�C�p�1pqXr��8�8d&6�&�y*)�!RZ��`T̙��ȄO���t��^����f�����9��"��vշt��2���(��qy�V}�=����d���������1��c�Ay�PO?)���,.Τ2033Q�'=U(�!e���(G2��X�j +��q�����֔ڗ<Z,���Kheb-K.��f3�\���I$y��JW� +endstream +endobj +393 0 obj +<</Subtype/Link/Rect[68.6 747.23 526.75 759.38]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 287 0]/StructParent 141>> +endobj +394 0 obj +<</Subtype/Link/Rect[68.6 732.07 505.1 747.23]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 287 0]/StructParent 142>> +endobj +395 0 obj +<</Subtype/Link/Rect[68.6 719.92 526.75 732.07]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 166 0]/StructParent 144>> +endobj +396 0 obj +<</Subtype/Link/Rect[68.6 704.77 505.1 719.92]/BS<</W 0>>/F 4/Dest[192 0 R/XYZ 68 166 0]/StructParent 145>> +endobj +397 0 obj +<</Subtype/Link/Rect[122.45 689.61 505.1 704.77]/BS<</W 0>>/F 4/Dest[193 0 R/XYZ 68 759 0]/StructParent 146>> +endobj +193 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 487 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 228>> +endobj +398 0 obj +<</Subtype/Link/Rect[122.45 674.46 505.1 689.61]/BS<</W 0>>/F 4/Dest[193 0 R/XYZ 68 467 0]/StructParent 147>> +endobj +399 0 obj +<</Subtype/Link/Rect[68.6 662.31 526.75 674.46]/BS<</W 0>>/F 4/Dest[193 0 R/XYZ 68 274 0]/StructParent 148>> +endobj +400 0 obj +<</Subtype/Link/Rect[68.6 647.15 505.1 662.31]/BS<</W 0>>/F 4/Dest[193 0 R/XYZ 68 274 0]/StructParent 149>> +endobj +401 0 obj +<</Subtype/Link/Rect[122.45 632 505.1 647.15]/BS<</W 0>>/F 4/Dest[193 0 R/XYZ 68 189 0]/StructParent 150>> +endobj +402 0 obj +<</Subtype/Link/Rect[68.6 619.85 526.75 632]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 759 0]/StructParent 151>> +endobj +195 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 488 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 229>> +endobj +403 0 obj +<</Subtype/Link/Rect[68.6 604.69 505.1 619.85]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 759 0]/StructParent 152>> +endobj +404 0 obj +<</Subtype/Link/Rect[122.45 589.54 505.1 604.69]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 662 0]/StructParent 153>> +endobj +405 0 obj +<</Subtype/Link/Rect[68.6 577.39 526.75 589.54]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 165 0]/StructParent 154>> +endobj +406 0 obj +<</Subtype/Link/Rect[68.6 562.23 505.1 577.39]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 165 0]/StructParent 155>> +endobj +407 0 obj +<</Subtype/Link/Rect[122.45 547.08 505.1 562.23]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 68 735 0]/StructParent 156>> +endobj +197 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 489 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 230>> +endobj +408 0 obj +<</Subtype/Link/Rect[122.45 531.93 505.1 547.08]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 68 626 0]/StructParent 157>> +endobj +409 0 obj +<</Subtype/Link/Rect[122.45 516.77 505.1 531.93]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 108 541 0]/StructParent 158>> +endobj +410 0 obj +<</Subtype/Link/Rect[122.45 501.62 505.1 516.77]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 68 469 0]/StructParent 159>> +endobj +411 0 obj +<</Subtype/Link/Rect[122.45 486.47 505.1 501.62]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 68 336 0]/StructParent 160>> +endobj +412 0 obj +<</Subtype/Link/Rect[122.45 471.31 505.1 486.47]/BS<</W 0>>/F 4/Dest[197 0 R/XYZ 68 215 0]/StructParent 161>> +endobj +413 0 obj +<</Subtype/Link/Rect[68.6 459.16 526.75 471.31]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 759 0]/StructParent 162>> +endobj +198 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 490 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 231>> +endobj +414 0 obj +<</Subtype/Link/Rect[68.6 444.01 505.1 459.16]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 759 0]/StructParent 163>> +endobj +415 0 obj +<</Subtype/Link/Rect[122.45 428.85 505.1 444.01]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 619 0]/StructParent 164>> +endobj +416 0 obj +<</Subtype/Link/Rect[68.6 416.7 526.75 428.85]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 510 0]/StructParent 165>> +endobj +417 0 obj +<</Subtype/Link/Rect[68.6 401.55 505.1 416.7]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 510 0]/StructParent 166>> +endobj +418 0 obj +<</Subtype/Link/Rect[122.45 386.39 505.1 401.55]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 414 0]/StructParent 167>> +endobj +419 0 obj +<</Subtype/Link/Rect[122.45 371.24 505.1 386.39]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 353 0]/StructParent 168>> +endobj +420 0 obj +<</Subtype/Link/Rect[122.45 356.09 505.1 371.24]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 269 0]/StructParent 169>> +endobj +421 0 obj +<</Subtype/Link/Rect[122.45 340.93 505.1 356.09]/BS<</W 0>>/F 4/Dest[198 0 R/XYZ 68 148 0]/StructParent 170>> +endobj +422 0 obj +<</Subtype/Link/Rect[68.6 328.78 526.75 340.93]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 759 0]/StructParent 171>> +endobj +199 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 491 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 232>> +endobj +423 0 obj +<</Subtype/Link/Rect[68.6 313.63 505.1 328.78]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 759 0]/StructParent 172>> +endobj +424 0 obj +<</Subtype/Link/Rect[122.45 298.47 505.1 313.63]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 674 0]/StructParent 173>> +endobj +425 0 obj +<</Subtype/Link/Rect[122.45 283.32 505.1 298.47]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 547 0]/StructParent 174>> +endobj +426 0 obj +<</Subtype/Link/Rect[122.45 268.17 505.1 283.32]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 473 0]/StructParent 175>> +endobj +427 0 obj +<</Subtype/Link/Rect[122.45 253.01 505.1 268.17]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 376 0]/StructParent 176>> +endobj +428 0 obj +<</Subtype/Link/Rect[122.45 237.86 505.1 253.01]/BS<</W 0>>/F 4/Dest[199 0 R/XYZ 68 154 0]/StructParent 177>> +endobj +429 0 obj +<</Subtype/Link/Rect[122.45 222.71 505.1 237.86]/BS<</W 0>>/F 4/Dest[200 0 R/XYZ 68 759 0]/StructParent 178>> +endobj +200 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R/F16 492 0 R/F8 392 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 493 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 233>> +endobj +430 0 obj +<</Subtype/Link/Rect[122.45 207.55 505.1 222.71]/BS<</W 0>>/F 4/Dest[200 0 R/XYZ 68 674 0]/StructParent 179>> +endobj +392 0 obj +<</Type/Font/Subtype/Type0/BaseFont/ABCDEE+Verdana/Encoding/Identity-H/DescendantFonts 494 0 R/ToUnicode 495 0 R>> +endobj +494 0 obj +[496 0 R] +endobj +496 0 obj +<</BaseFont/ABCDEE+Verdana/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 497 0 R/FontDescriptor 498 0 R/W 499 0 R>> +endobj +497 0 obj +<</Ordering(Identity)/Registry(Adobe)/Supplement 0>> +endobj +498 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Verdana/Flags 32/ItalicAngle 0/Ascent 1005/Descent -207/CapHeight 765/AvgWidth 508/MaxWidth 2083/FontWeight 400/XHeight 250/StemV 50/FontBBox[-560 -207 1523 765]/FontFile2 219 0 R>> +endobj +431 0 obj +<</Subtype/Link/Rect[122.45 192.4 505.1 207.55]/BS<</W 0>>/F 4/Dest[200 0 R/XYZ 68 564 0]/StructParent 180>> +endobj +432 0 obj +<</Subtype/Link/Rect[122.45 177.25 505.1 192.4]/BS<</W 0>>/F 4/Dest[200 0 R/XYZ 68 479 0]/StructParent 181>> +endobj +433 0 obj +<</Subtype/Link/Rect[122.45 162.09 505.1 177.25]/BS<</W 0>>/F 4/Dest[200 0 R/XYZ 68 328 0]/StructParent 182>> +endobj +434 0 obj +<</Subtype/Link/Rect[122.45 146.94 505.1 162.09]/BS<</W 0>>/F 4/Dest[201 0 R/XYZ 68 722 0]/StructParent 183>> +endobj +201 0 obj +<</Type/Page/Parent 205 0 R/Resources<</ExtGState<</GS93 295 0 R/GS94 296 0 R>>/Font<</F1 214 0 R/F3 223 0 R/F4 224 0 R/F5 225 0 R/F2 215 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[0 0 595.32 841.92]/Contents 500 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 234>> +endobj +443 0 obj +<</Filter/FlateDecode/Length 3624>>stream +x��[�o�F�n��?�ELs_|���+|h����}p���h�W�QQr�����.�]�����D�����y�汫�7���]5�G�~{�f����z�^�l��^�<o�ˏ��ú�?l��}�}w�I*J��Y��??SY��(/D"�H�*I���$�Ѯ>?�����3�yG���h}~��$�He2ᙇ� Joo��.�2��;?cQ +�X�R��(/Y"��~�/ߟ�����B̮�b��ͧ�����g��OuI���{ּ��eI�Y��M|!g�!m3���C,f�E>��ov��<��f�8�Q�@"4���zs!���4)����O�?��˖2I����R� ����b��k@֙����A��wy8�zl����JYR��<��O���:9(��0tR��Ӊ���.=��v��oV>lӋ���s��H�����i�F~�/����"a�3��'��Hꌼ�lQ��q>�=�W��.�e����J�Z��m;Ǯ��=�joWhL�� +���h�t�[��h ހ��熐���F�"eFp��a��X�wk|�'tőR�ԓ�g�� +b������8���T�{K�z��:6�b�fd�غ�p�I/�l��'.` +^:{�G�C�=�������*�����`h)J�[n�D�M,�J�Ӗw�I���+wBaYY���>�B%Q�j"����:��i������u�HWZ����O�$c.��"w�'� +t�-�T����j$�/z���O"�Dx � +lIJ%�E������9���5��m���Ic��:�7mv�� �¥r�`M�BLݷ����nS�&�jC� +����C��2�&(���s +�b!")�D� �r@T^b�u��U�Q�ung"�ٱ �"�M�E�jM|1������6U#q�{]�b��:�+)>:��y���R%j�^�e�t�=�]G}a�����V�5�L�Ol�]�����cou���� +�aOI�ͪ���5 +�Yn}S��c/�����te�`��I�\Ӓ��W�%�<��x�!�{_����<1�����0�ͼ(/8G�Z��ü +4�7��oÎ�Al��K64֛5( +�AbS��*Y������`q+N�ds��T�u�$ ���$/K�)TƪЖ +�M��PQ��M!h�rN'S�N x*���*��yb�7IU�����\bэ�� +�H� �&�KI#��s�)=vJ����!�Cih���_7S����� +\{��iV!Jb����FV�y�����C�/���S�Nj�YP 0x�]�B��Y +endstream +endobj +436 0 obj +<</Type/Font/Subtype/TrueType/Name/F9/BaseFont/Arial,Bold/Encoding/WinAnsiEncoding/FontDescriptor 501 0 R/FirstChar 32/LastChar 122/Widths 502 0 R>> +endobj +501 0 obj +<</Type/FontDescriptor/FontName/Arial,Bold/Flags 32/ItalicAngle 0/Ascent 905/Descent -210/CapHeight 728/AvgWidth 479/MaxWidth 2628/FontWeight 700/XHeight 250/Leading 33/StemV 47/FontBBox[-628 -210 2000 728]>> +endobj +437 0 obj +<</Type/Font/Subtype/TrueType/Name/F10/BaseFont/ABCDEE+Verdana,Italic/Encoding/WinAnsiEncoding/FontDescriptor 503 0 R/FirstChar 32/LastChar 122/Widths 504 0 R>> +endobj +503 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Verdana,Italic/Flags 32/ItalicAngle -13/Ascent 1005/Descent -207/CapHeight 765/AvgWidth 508/MaxWidth 2038/FontWeight 400/XHeight 250/StemV 50/FontBBox[-453 -207 1585 765]/FontFile2 505 0 R>> +endobj +438 0 obj +<</Subtype/Link/Rect[111.83 558.13 122.69 570.29]/BS<</W 0>>/F 4/Dest[12 0 R/XYZ 68 759 0]/StructParent 185>> +endobj +439 0 obj +<</Subtype/Link/Rect[135.22 558.13 204.56 570.29]/BS<</W 0>>/F 4/Dest[12 0 R/XYZ 68 759 0]/StructParent 186>> +endobj +440 0 obj +<</Subtype/Link/Rect[111.83 527.83 122.69 539.98]/BS<</W 0>>/F 4/Dest[46 0 R/XYZ 68 759 0]/StructParent 187>> +endobj +441 0 obj +<</Subtype/Link/Rect[135.22 527.83 182.74 539.98]/BS<</W 0>>/F 4/Dest[46 0 R/XYZ 68 759 0]/StructParent 188>> +endobj +442 0 obj +<</Subtype/Link/Rect[68.6 108.64 479.36 126.66]/BS<</W 0>>/F 4/A<</Type/Action/S/URI/URI(https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf)>>/StructParent 189>> +endobj +444 0 obj +<</Filter/FlateDecode/Length 1318>>stream +x��X[o�V~G�?�G{%�~�F�rk�J��.j�}���.�'����c��m�-�V2�0�3�|3���*�='�99�eY���>���d��u<�xM�w�t�H��rqzJ�//�LzJIxZf�j:hC�"�I�QVS成�)�J���O����o���YFPV2e���K��`�+'�L��N��3E%��SE&s<���z8x��x$���E�g_�d��ppF���K)�->GGud�m���2�� 3i�XG���f��FS<Y%������"6A��
n$�m�����""J3���t��G��ӭW���ݭҌ�6���0�5ܵ)���8���@���G����-�Zj�%#ԛ�E��;��};�����[��|�e�y���e-�8�HK��N;S�;�����9�]E�'*�8 ��"y�|���6ZͰ+C���##��zX��D���u��I�7��Kx�#��c����.��\6����ZUS�k�p.^�P���z
B�z�Z���%*��\�U����}E׀�~���E/o���o&m��q���^�3AM�q�Ĉ5Ua��?�4�W"�\݃o�a@���U��2�>z�ni��*BF��0����֠`jkSVcA���L1.4��KE��F�W�ʏ����HAY`1�G�*�Xi���p�!{�^�\Va(A8�׳�G��p1�.�A>��C�r�>�W!=A����9�W��p=��� +��1��[�����,]�Q�5�˪���P�R^�Ҏ��-���9O!@��A�Ȩi�p�ΒlV+�77ȱ:�p�ͅ*ox��2�e��5Q2(�l �$�P/���K7:]��eVeMX�ʲ�)\��۔�S� ���$�"0 +�M��`���-�=����A�$�3�U9韹�`e�d��F�]��(P +endstream +endobj +445 0 obj +<</Filter/FlateDecode/Length 3548>>stream +x��[[o��~7��@�bqLs/�E�v�q��n �"˲N,ɵd���gfvI�RZr����ٝ�vn�:>y��oƓM���'��xr;��>_���:�z�������f�Z��c���4J�TU��Z�g������ ˓\GE�]F�Ȓ���JR=Ln�?<�� /��G�Ã\&)*�=C
�������'U���၈R�'"��DEE%]-��?�|M�#5z����������Ãs���+R�$��G�TP�9���#=���2�8]�j4�����<�7H2�/�6-㜨�<�F��r� K�D�q����ì}���}K��N��_��4�>�kc��5�:�&��3(�]�H���4�o(1KER���Y�6HR��8E� +e�Iq�t{����4:�8��f���6#\uVP�I�u��DI���4=�?�"
���Uy�J�ϙ'25�e��"F��{�s\��-i����&���GK,BE�=�+ +���V7z��-|5^�N�o�Rj2w�]{��%�F��qg�C
Q�͚��Q:j��!��usH?��o�?G�02�����ls��Hn +���8��B=�ƨ���WGE���fNϫ3/�~��<�G���9��A���/O�C�.�E8�5���q�t��D��F�<)w���UL�]U�*v���qi��V*G[�^���l~��Lm��U���PY�������h����$.�)|OH4^î����f&�A���Z���aK;jD)����%��k�5�q|�쪷�D��D +R�r?q�!#qZc��Z���;�dtc +�<��`�9i�7��Ѩ�]��Yc$Rޯ��1��nא��*��ڟ�AN��y��6��'4���-& i��>��`��&}���RCS�b{M���R�{������V%�#���}��P
X> +�:��M���m�tT�S���T=���-}nj���m�6����5mz� ++rM����Z>�[>+ �(����:`y�2gX��H��߮�ڄ���2PR��%���카���-�},E�E�LJ�-�ef�Q��̗�ERV.#��$I!1��H���H��Qу#о���g���8��q$�������(h&G-mG� +s�˚�ݮ8$�:��n�*mIU��;\{!��!��$e"IA��8��8��ߨ�ڴ��p�US����R�=m��V'8�����L������%��H����#'S��N6v,�K����c#�@��7�_�l���c�M�l� E�',��U����D䋺@�7
�Di��3���X&�K�u +�d��I��C���$*�������� 0o�o�sں�1c� +i�`����:Y�nd�$h����v��i�'�k�ۦ��l�+��Wx`L~��Y���-��Β�_��)8@��t7�;�@�v��ƒ�� +Ea�Π��R$jOO�Y�0�i
���&�`��a�ӆ%�a31Q6�6�<>l�U�D�$]J·�J +�i�X�S&T��|UBWHH� z�ê*����� +�rc��� +�`����\��C�*Z�u�
�����%:��Y���i-�d� �d<'� ��x��#]ع7����7
���}Úl�m�����N�l��|�@�+����]���K�j���*WRc��0�u0���!'H�'������ض�l������kvD�x��Ǿ�X���֙�q�m̝��-]a�a�+�T�&R���m����$��S8��wh���`ÇI"�;��wh�6�W�{�l�7��;4m ?�s�_�y�|�c%Q��p���Y�pM�ل��(g�Bj1�cy��H��¶a�������F�uF��¨ +�Q�$#N���qHI��-�*���T +o]:�ut��G���A�gj���N�AؤDm�or���.lK���o�=��\#��mc�� �R(R'N��H�6�K�Bz���ƞ��Rl/4r�!4rZ�F^ۇI2h�CN��^T�]�%���ʜ(l��g1�ٚ+uT�C��r,{��#�]�Y�O�Еo�#����f�"\O�Zʼ���B�p�!�pZ���g�$N:N{F�)�O��n�����å�n�%:%��Rԙ@�u������K�7c���:��qG�M�l�ԃ���۠^
n㪧�.!Ʀ{⊳��Z\���I2��C�ji��V�N�����Әc#��#v�b�����E�|M��7�a�u��o¥�rI��f�Qӗ�Q�͵��C�I�_��\���6�z�٢�ڋ�/C��:�4��"-<��DHsH��О5�T�U�3�����Cl�F��5�M<��o�����W�ݳ�f�*2}襁m�������ٚ�[��fa��A���9i�퐶���tΜ��g���xw�G�W����,�JSa�``��Z�k���z��j}�]�)�}mC�.��r����/�&�j������~�NP%��Ȭ��m�>���Lg�~���Ʌ��~'#�s����><��c`�(�<#��m� +���wx�K�ŝ��y���
@�a�{a�=�^�o�kw�̶���.�B��,�t��,)�C�syB���' +endstream +endobj +446 0 obj +<</Filter/FlateDecode/Length 3551>>stream +x��[�o�F�n���"��"Zs|���K]�AZ�z$�@˒����$'v����]������\��L�����7�e���ۻY9ٲo�=:�n�����}<�\�~=�|ZM�>�7w�r{�\|�{sz�]��lb�B��k��3�S��9<HR�j����,�qΤ�f�����Ã�-�R���8<H%�Q��2
��#������?+����@��LĚ+��kv9��7������h���,�G��ѯ��Ã� �?���<��5�_u��g�u�/��]� �,JF��E�lt�O��I���MF�(%�w�"��_o�Ri���8�9���i��L�g_s�B�8�˗�I�e�~��1�z�N]|��DW`W簍�+��Ă�3����#��''�H�B�����]9��9�U +]E�Vud�Q��!~���s�&����6�eS�E��6j�'�Ī�J���F�ՃԲ�ԃԚgIS0K6�T��0R&�ҡ�Z@��a��h����>�qd{��MrV +�6���2B_�̻�%���0�N��_���|�G���#!Bl��r�D\Ed�?��?�r�,�/]�� Y�c�S���L!��,)��Xq�&!XZpBu�fM�U;��O������S{��/�/���~2z�4"���?���*����:���P\Z0,�����)�.57�%z�J���'
�M2��>�h,$�%�6��h\����} �������_��UM���Xh�i+FT�W2zP�/͆�RBʧ}�Ŵm[�f�縑�v�_�|˰N)�
��g����H�`��%Vut2��O[��*Qa,:l��� +�m۞*����<�e��.���d��Z�x�K��S]�K2��j�!�"0��G���J �^��^��2Y}���?\��UЈ3��|5C�##����8?��t�U`�:P�ʲ��q�Vx��]�}Vvi����V����K���.�+� WByW��� )�MĖ�\p�` 80�n�-<�nK���9@�pU���q +HN�S�[l��y
���t.�-�6�*W��`s��J�hl�tl�ܾ6p�X~auٺ+��-f>���������=��F��k7���ԔR~!�J�ܪ��7�9��o��,��J�ľ��g���p�����Ѫ�q�N3pctQk����� +]����![u�( �Qۊ��!���)�P�@���dP
�-Zj���u9:�-�P���n{r +��0�Q�]1%�ok��=|��=��i�M��a +�����W&�9ԇud�z|�8���x��2Ta�~��]uH�}J���x����s?;���:r.V�ڇk�m�]6�B��Hx�y�k_^���Dy|����+�/�_����κ�<��F�ZU +m.�:5�M�pNd.��1'`4�9 ���*����ޞwp5m�����Ɣ ����?���r�o��wq�WB�Z���,S㉼�R!���H�.�7��ޗ�i/42H +�� +|(vM�j��]���N���ד8��i�@�gb���q�Y�~��6�Y�)�7��ˬ��pF��+E�,B��W�2p�(4��4�NQ����Bg�I����r�KX�R���>%%+*�gU�9���kN!�̱������ p���:H��_�������6�k.��2�ޕx��P)��p�[��cR� +B��M�[0`w���љ݁3��j��L�o����x٤.[�8���^=W������9������F���"�{�M��2Ą���~q��tuzA���;�[������-��Օg +endstream +endobj +450 0 obj +<</Filter/FlateDecode/Length 3836>>stream +x��[Ys�F~W���Ln��J�J�c���)�J`���IYq~�v��1 �x��s��|��1㳋��~Z�wɷߞ]�v�x>�Kn�nV�_�n>�'g�����ݯ����嫫���u%����$K3Q�$K����d3;=Qy�ˤ(E*�D*�ʄ�4��frz2���������?���I���*�)�#C������5K��fzz���e2IQ�T&7�~��ޜ��&Ñ���W��_����|���W�<�yd��W�(O��<߯�#9���2������pTf�ͦ�a�{xm�`9̩՛G�53����\��I��%��̚�I��kN[�4+��i��R����Ro�f���-���XWD��� ���3���elͭ���
�Vy0N��A�B�q2'�'��=�U��.W��jc9=�h��,�J�D��4���Yv!ϛ)u?��W�iƃ~����5-SN1�Z� +jHI�[ap��&0�����������VC��L
��'8���W�^�ARO��p�iM�`t�ߏ�=&Q�V�ɲ�w�Ib����������f���";ֶ_^i�B����f �k'� �9�S� ����no���ΌX��ϴ��
�y�#�+����ԡ��j9E�` +�������,��f�����q$�q�֎�\p��D�ALp�=�y�}�Ӳx.���=�F߯,ѷ�ц�j#٨{�6�>2���{�� +*���7ر�
$[9���o�b���n��8,`�����^�SQ�2��c�R��w��E����9����+�]|D���U*ƻw�f�9��9N�D��ă�`�(�3���w��[9z%�P#h�3'4f�����Q�PϨ���qo� �M=Co��0~)V;�(qY(��*l�dJ����ܾp��'��8j�3*9�=���v��b�
QQo%V��Ne���M��@�k���������*�&Vйs�}�+U(ϣ��T�b�N��A���Ee�Ν7�I���Ӭ%^ \X�<N`ʼ%���ϩ��Ml����ڪ�wMa����X$�0'��x[Ԯ +�r8(�*��:J(c�YW�R��-ֵ}6�;�����Z�/���,�p�t��q�]7�C
�uq-XD�|y���o��/m +�^0�&��KH�[+yVb�7�W��=�G����0n �U�u{���2��R�1]Y��y%�B�������@.j��-Ó��C'��`�𪀖F?�a>�1�������_&���&�r�w?��>ï����ݕ�%+[�db1�x�3�j�aS��5���jЅΆ ���JG�9oT�ݓh�c93��%��c_)6L{�%z.����� +^���a�^P�7�#m+�}�Z�t^cF�Z�˪�6h&5��2<�ۙbciR/�x�뱉.��킧v��Z�1f�*p]�>7�Hя3��pDя�#�~�gH�Ͽ����>�u���<q))?�@��� +��:�ҹ���o��cM��pu�zP�����̉�}�V�*[�E��Ѻ����C��E�2e �$��֚]��L}]�^�X$V,�C�-�m�q=�7KҾ��,�4M�թ�+N{|�v:�h5�W��y����eW%^�7i���,�݈�`cx�ˏ&�3;��f�mM�@3��^�����/6 ����-:�SVm\�I���^����GUq>M�T�s��*�� +���ZWR3A�T �"�N�|�t+�77�;~����L��?��s�GW��{�� n��G�y�0�h)�����+����β@%fӁ���h�FKN[zl-�0��ӊ��9cVT���F�KIJ��j�o�*���l�l6�'x�h����W�"����J�*M[
���/������:��[Z�;b7��;�v+��⋧�}N�/� +�� +endstream +endobj +447 0 obj +<</Subtype/Link/Rect[195.69 412.43 229.26 424.58]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 662 0]/StructParent 194>> +endobj +448 0 obj +<</Subtype/Link/Rect[228.28 412.43 526.75 424.58]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 662 0]/StructParent 195>> +endobj +449 0 obj +<</Subtype/Link/Rect[68.6 388.27 199.42 412.43]/BS<</W 0>>/F 4/Dest[195 0 R/XYZ 68 662 0]/StructParent 196>> +endobj +451 0 obj +<</Filter/FlateDecode/Length 3843>>stream +x��[�o���n���/'^#�K��Q��v���k�ܡ�eIV/z�%����3��\�qF�^�ܝ���of�'g��٤m�W�N�6�jt7�
��\/W��\?��'���lQmf���i���yp���L����(��L�8�<��<���Ȣ�y�F�x.���4�yp?>>��x|��ļ���c�8>ʒ(�He<J2�-�^_��cA\O��X��X�b�A^���s|>ŏ��G_�p�>�����U�kp��㣷@�?�d�DY�Ys��eQ�Y��2��-�bp��Y8�S|r_mp�^�X1X��z� +LS}D$1X`&�8�wp��c�bp� ����5�e� 8��|��������G�k�3I������
ѡA�[J�cZ�`
�+�>�����D�ҭ�X����j4S!X�l�o��0�|gr�g�>�ss9�>�ł� ������R� +g>��<�����e�RԒ�Xj�BT��X�j�����*{���x�F#ѻ���ᾖAGɖO�5�������E�I�}]j���&9��!�R�0�.�*T���@,�t5F\F�햮%��U�Vf��7y@�p3�ԋ�j�]����lJ@�(��A/EJ˿�j4��DTj�~�{�]{���S�m]k�!9��0w�����Ҳ5y\R��%�w݄�R3r�ع��C�<a���F���Dɢ,WD��'��v3�Bf�/9e�X�A^u�xYJ9�i��j5B�#S����0D�<wّ�T�^�R�G��H�c�P�?���`0^�\��]3y@"�ey$�Jy�՟j�-S*���M���������}}���,�������C(u��5���U������)q���x~�����iʞ�Ք�����Ƞ%��G��W���g~�ԗ9�c�f!��-촥��G ���V^�)�Ȱ�E�b�
5G�� ��Q�2�h�\�ʮ��wc���C�����$.I�kH�� +>�c��YS�)�ʴ.�)��������� 씻"c`�S��j;�B���OE���>��Z��>�Y0y@�%K�9͘f�F��F�$�'L�4ZU]M?'`Vi�k!�3 4�!���d¿���v��W@�iB
E���!�����\�b��
����-��S��)a�-Їq# �K��VGM�&�Ko�������^���MЗ������k�*>l�dG�]+�'��$TP'�$:������bd�X0��&O-Y#�-ϊ���O�&"�[Tݍ�M���tx�
AJk�u�N�.�Q�1��<�釧1�s:�c ��>�J�8}�Mj<�`�� �� B�G����Cy�}��%���:�#V��))bg_�3�HL5;�:�lװC�&Z��w���b�����;7ި|?5VC�tg�`�($��e��Ñ]�%�������G�Qe�s��2��<3���� +n +EsF +y���������!�g����Q�ow����k��\��\}� +m���> +!� +)u�@�x�o*������{)��Q.��i+���ø�v:*Iz +}�w�4+V7���\��M���f�&�U;ڡ�{�b�� {]-��es�qn�������?��B�2`��o�u��tď9�����s�t1~��$Ou[��lG��d�X�4�}d�A�� j�yX�!J�������ej��.�V�ZAOj��\��:�Zys-&�5N�nUa��&�l>ݘ a��d���\EIp�kD5pV�t���p4�|mKi�1���ý��K +h�`�W�E���]�-zw�6�%"��1Ѧ�(�ф�ڐ��l��LwB��k�T�q:�߫���mw�eY�{m������d +endstream +endobj +453 0 obj +<</Filter/FlateDecode/Length 3731>>stream +x��[mo�F�n��a�/���˷C��c�F��ĭ��IQВ,��z�D�������\Jv�CQ���evv�gf7�G���������N'����r�����jzxQ��U}�\��{{r̢0J����gel=��K�0,/�PL�i,N�H��t������T#�m����b/���*a�y��2�۫��ß9+����g���D����`Ws|?Ï���O�ip�������2��]�c���k�L�0�=s|Ӊ�0���a��WH�dA::��]p��f�f]���~���hd���4B�T�o'p��-8 +�i=k�%�ٷ��a��ߧi�>;�=rc��ufo�7�����<�8{b��p�4�a�[ski�X��e挓æ� B��q"'��NϏ١��.�z9�a��<i��(�R��a�̟~��#�S3��'Z��,�b��#'v2M�0u�/Wh +�~��mSRC�x�Y-�wQ��L:��aT�i��҉��qˀ��p%9��j��b��fSFn>��-��1 +�£F�^@��]���H�xb�V�bT%+��E�g�v����B��xG���:/Ⱦ�ӿ�A[&I©��\y`�Awo��<��8���j��
���?�������D����W}M�9F�����RXE|c�G:Z�Ȁze�NQ��09��~��i<(�f��^Q���/Gg������?�������|��g���l��c��ԕt��b�G����$� g���CdJ +�c��3@� �E~3`�RReDV�"��RR��y)�������ك��i<���~���,��^"H �Ё��d�1��ޢ�T
"�6�B�dƸ��P�e�=f;F�,H�dd\�k���Ҭ�ǵt^;�����i�) ��$aTQ�Y ��\�v^w����E�n�$E;lf��v�� +>�&@�C�^��a
U�g�+y7�=[`�{4/��Mx*�#�! +IX?���
X@RV:�X7��Uù +��MT
������Iz�ERX� �<#��|������aŧ�#Aj�:�����2?��0l�(߄w"�����g,�"Tؘ�����M#�:�����W���)6�����]��4m~�#�5l�j��cX�� +HNr�r
��8ڑݤ�S�Bv�P�x ���G��̈�L�K܇Π�0�m����xG�
��v(�]�"��U�VR2��e+��� +ݟW�[y��8|��K�b�A��]��R��ؘ�R�Vߗ)�����m��V�U|sk��v�qd������§�� +!��v۶ҟ� ���T�U&s>
r�i��Z#i���u�L�L�j�?������2$uIɺ��-��XٜO�[�[����)$�0ȼ�u
j'�^c�I�E�W���EF�t�Y�O^��<d֖�~��R��+����2���dF��Ȭ)n���rLX��u����I&B�ې}e��I +�d�)�/�=eW�lN�bcR��%������b��'A�'VFqڮ�x��������w�
ɓ�Ρ��@��9z�n_�Jk7Z�t�K�슧gxLg�%]�ʨ:$#ai%�C�Ʋ�T�'1B�#��R�Z�����SG�6�V�.�*0���5�4m�S%`v�
����u��g�TB�n���+1�+���*ղc��4�Z�t�&���j��T��Z�Jٝ�v<�����<m�Lvv�� +��}+���C�W���W�h9B��[IK�L6L�G� +endstream +endobj +452 0 obj +<</Type/Font/Subtype/TrueType/Name/F11/BaseFont/ABCDEE+Segoe#20UI/Encoding/WinAnsiEncoding/FontDescriptor 506 0 R/FirstChar 32/LastChar 119/Widths 507 0 R>> +endobj +506 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Segoe#20UI/Flags 32/ItalicAngle 0/Ascent 1079/Descent -210/CapHeight 728/AvgWidth 539/MaxWidth 2431/FontWeight 400/XHeight 250/StemV 53/FontBBox[-432 -210 1999 728]/FontFile2 508 0 R>> +endobj +454 0 obj +<</Filter/FlateDecode/Length 3450>>stream +x��[[o�~��@�UԌHQ���@6٦9�f/q[,����N��N-%���33ԅ�LYq�y8X��%�pf8�oFڣ�Mq7Ϧ�駣�Ȧ����h�~��h��0;��-�VYq�^��3{{z�|���?J���,G��I�U�Tr?a2�b������Ã��E¹���� ��7XE����j���Ã�_K�d~x �����S��,��?���f�8�{�������M�}x��|��[�Gұ���n�ر�����
jHj2/���ѝ7�G��� +\r7`m8Zy�:{�в��� ,��#�}���͢����g�s�Tq?�ǷU�ϥ�~��>�M���#��$1D�C��s#��;����K�j�&<�,>1����#�ˇ�{����(�KWnӛ-
���J� 恤��������fKM�Zti�}i�Yr"Q�4��d����ţ��%��-~?�=��x"@W Fudg^ +��!~���K�&���_9~ɫ_D��zm}�N�<Zvx+w�A*٢s�A*��K#8�x�� +�� �`���8��m�4 M�-�%c8}��&a�-������^>v�
�hɔO�V�bΜ��e�"��&����,� �p�
�e������ۑ��Z&��2�2�ׂ��o9lp�̇!����:$�� +�=��aѸ}F�(��B.HF�-���pĿA��]6�xH�Ԭc�`/��pgO�7��3�A�
t,�f1��&:=.\6Q!6��`�YK�k�M1�����q@�gc,�2������7, +��2�(0��j��[9���&�rmPB&�x�3$<R���ۑ���'T�Ckog�1e�2q�e��/Ø��&8�J�{C#�_����'����%Z�t�R�]�R�͠��{���N��dK���z��N� �4ҫ�m�Ue�|Gl�r0d�ȹGt�A'�@Dx:�s>��,�]URas�2�`e8-�C-�ڪP"��BJ��Z��k���%tI.��w`aq��|+o*&D{x"|�F +��O]�S �+ۈ +Ԣ�rVfD�3 �=51�څA�U��Q�9�n��"4�A�
'�_x����T��TI��٪ �����v�M��XJ�p>l��s�L�����\Rfj���Q� ���3mSg��'m2.ݢZ S�bc�6{���)T"u��U\���̓�EE +y*:PԨ§x��@�_���q��M�N. �]}%G���8o/��O���}��d��'`� ��C�u9�xe�f���� q�Bfľ�0e����U�ac�_�G��qh0֭�.��$,�!3�RY�wD� +��U
�ue�&P���ۢ� 7�D��xDkGP>��cLg^Z��@pq��� +u#�������|!$G�>�v���̉�a~��@'���5��*j +���`��o�zH�` �O�U~��D�2��lY���d�����ɉ���[�T�'qOe�]4�.��C�ki��?H����wy� +�_��v�ؘUK}�E�=�ה�(��(��|˳ҡ�`S]]�v.g��V��v\[e���ޑ5;�pl$��ݜ^n�nŲW����-v�/�<�����T�#�N[��LƬ����<J�C��04�0��5�ӫ����o��7@����ݮP���')J��@���j���P�';�3�ZJh�t�����>b|#v��P���tڥ��l���Xg-��S�8~� +8�v�U��4�0SED�?��L�[��NGl,*�_4�ș@99^p�1��v
+��� +��[���h���N+��d�V�M�?��1��י�ɋ��D*|�Tz��l4�д��M;-*��zM�,sv�QD}̭�AGОs�ڷ-�S����ߟkG�%���j��B������ +�tz!C���g�����*������:�sz��M�����l +���7�.ZVѪ��M�z�f5,@�\�h�U�6��1��gڍZ�y�l�:�?)c���,��S�'LrH�q��L�t)2��P\��r����{�G�Q��<������U��M�㋋h�?ޡeN������Q�l�3y���Wz���)=C+��Wx��j�%���8 +�tN�vM��k�����֠}�eM��f���%��X^h�����)�f�T�k��e궢R
|!#�i����m�&���$��1L�w�+d�Z�G�{� +���/8ү���A�M1��� ���M��h����<����U��9sȨ(My�|��*/�1-tN��4���Őj�kV��Q +���@��i�M�~�vǪ]�-
z� +endstream +endobj +456 0 obj +<</Filter/FlateDecode/Length 3440>>stream +x��[mo�F�n��a��"5Պ�]�E��q�� �ݻFQ0�$gK�D�ɿ��Y.�Kr)J�9Phrwvv晗�!�/7��<�*�?L_E~u3�f�Ӌ�������l�>_�.��v���G��� ��9�$[l���,dWJ�o�l�8>�b+������$�A�B��6�����G�A�;��߲��Q��"+�R;(��8>��$X�.��G��O0(.Y� ���=��q��'؛���l<����t�����v���S ��..C����5'ϺP��:�V�]�i�l���rt;�$������06-�1�z� +�c�������[("J0尗) ]x�9�-��#�HS[����z�|��|�@{4!mW@�}���BB� ��?��%^.̮����"��14ؚ��y�珷��EL����1��;4k�x>��^P�<�*%qm8*�V.��HN� Ήd8Q�%ݫ���:�@�Wm{o�S��b�p�ĞfcՒ��p"�˽M�l+�۶!,�hjG{�9,g��'�X�j��3�4ؖ��`٩Y�>�\�Z�����-���X�tB�tbHu��$B;%>�*���������O��J`-��a����ޡ���q���U��D�2$�28�f ��{�� +B�^����A� �ā����({�W�(��]���~!��,ke�-%Sܸځ(��ڈ! +�"ʚ���_%�lw!������A�=�DT$p�ڗA�OkmD�>D5��2�C9�dO-J%)QI�*�,5ե�ѷϠX(��̤�:�.��Hg�We� �}���A��� Q�>�E]-/vd�T�=��~?�PI����ر�i����i�Ф�jw�k}\Y�y�:�x���)�4�s��r���]��:�LO�#Igbʣ|�I)R���g�zB|�������+�r�/q~[�k}'���ʎ����*��Z��{q��_�aV��l0������YY%4:̯�Z�.j�� ������b��@�Y��}?f<66r1�n]Fen{��6�/�hj)�f��/ƺP�-�Q�6G=٨�������o��{�ӹѪ��5ً�\�-N�:n�}��Z��f�ȊG[������Y�i��b80�:��?����v]Sί�ʎ�����r�?\UUs�-�e���� +��J���=��&\�>�^��UC;
��]b�M��c�;Lc�~g��ݼ�+�'�%�*�5��![�y���_[��e\ݐ�r��������ąᅣ�f{�0Ӂ�*����U�=#�g:���E��-�U���n��I�oBTj7�mإ{��au�Ӹ{��8 +�u
Pӝi�[������~o�6g����C�2Hy&;�sw�&vY��+6�STqU��#��2��Cq�K�+mJbeݡ�3�N4Q��� +B����^�*�t� ��j&��B`졃�~T)�0��ݽ��
|IdXI��Mfa7�K2V�>'q��uFLmQ���п��N��v։��^�m������a��i':�:T���|wY>Τ���²C�UXn��z��,9��P�K)���f1���9�U�Xb}��n�6�����7�-�6��n�8��]7�Tטy7ހ�[�� �Xp���k�QM�#�U��� {!�u���aϞ�WE̙�n!̙����{p��#8������:up8[��� �y��Q��40��G%\��=|BN�p�|}=�Omtt�P��M�}�a�ۥ{엩�����93�ll�[Z�~����q8�mW`1�
蕩�qB�~+�^&��Y��}z����4�Z2����0��x���mJ�-XFlg�V�0�:�:c�k;S���U�갠bM�+�����a��.���x�ݡ�OZ��{�?�eO��/l�W�-ū�N���Լ5w?���ѽ=o����s�2J�@���S@.��zWF�bS�W M��h� /��A`�lr߽�d��L���ǀ���_s������_�m�l�mv���mv&�R��:(wW=_�d��AF�݁��_�P7 Z�u���7���ye5��'�a]}?a}�-�a��N'�8;�u�̐���\��8V~f�$�o뼟� 룉xׇEo�h�%)~b�5;��G�4�}�Tɦ�����k +endstream +endobj +455 0 obj +<</Subtype/Link/Rect[68.6 626.46 388.88 650.61]/BS<</W 0>>/F 4/A<</Type/Action/S/URI/URI(http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1)>>/StructParent 201>> +endobj +457 0 obj +<</Filter/FlateDecode/Length 3789>>stream +x��[m��6����"��V��EIw� +��\���xuz�a2�Β��(����1��]����%L���.�H�e`ͳ����Y`�w��LMf�C�&����(�,��l��ove�"K�d��:�$��,Bb�诧�LGD8�<��v���ҟ}�e������Jc.C8�9R�1� +l�]|E
��+����9��~��X�<�罭}�L��͓�S$��%�<1���^�}����lSכU�������J�$㉤�?<����[ҌS{� +�c����A�h�S�����)�&�%�%��
~�?_�X"� T�ɶ��2* +H��ehD689�$�`�� ��qVF�5�Ѽ�^'<�4������r�a"��0�rG�$\Ed���ԿtGH��K�a��rկp%L��B�D��H�Zb9āG��`�� L�2���%P[�S�|ߐ;�t����,�(��/OP?�<��a�H+���3��1��!�|����L�LA@,��҉)
����,/oA(5B�����4L�#U����1\�k�Pzrk����GOC�2!��݂o��\*��x��́q�?�x���S���_��������y�p����VX�"2ƽ�~�q�>��B6UU k�E� ��i��W��,%��j�������IuS����2b��dܢI +L_��h��
��ґ����˾�}��+@�wљ����82N��r�AIR,>J��?;�:U������䨑�ҘE-�\�QP5y%W�s�����<�%g�J���PrePJj$�4fQ%Wv�FM�@ɕ�\(�c���\�A��@ItPR_�N�a(���P§�,���z�r �L�ԗ��g�� u��GxY�x|��ݑ_���k�L@������� +�jm3�-�ΎV�J�U9��-�f��[RGz*��#o㽘�=�Ĺ�9^���e��ݾ��;�9v��/n���_ QI,�ܥ~� +�q��Qćw�;����q�Dz�U@���6�v_V���H��7��G���W��"�l��α#�7.A�ucw���P�jf7ƆW���1ҧE�v�*+�a�[�!�J�Ւ7Q/������"θ�,M�IC��� +�8�?3Oql��_�y�q�&wW`4��R�/��i����Ǎ�J��;�d[�rp����(�EO�&NjCX��kp1)3�E�h���#J�oQg͐kC���(�&U�p�NU�)�%�N4u�=E�5�-ZH0��=#���US����Ǽjdo4�c~�jj%�2�j�<57s���߿��K)0�ir+���{5_�Mc5k⣝�"�94%L�� �´�{?hO�n,���*65}����5>��j�|=\>v�~�K��n�:�� 2�c�0R��E���.�;T��t7���5�A���;�®�Z��W��c�
6���E +��&̠�p���bg�$��O���4
TU4e�ޗ��|���C��r^��[P�̫��eG�;PO2W��#�@����*���/��XVo�2���覤|_R�a&-iӫ� ^j=�L�f��.��B�4u�V]�#���2��_c�q0�.2�3k�a����{��D��C��H��K�1p �+83����ۮ���(X�kl�ޒ��B�c�7t�}\������]Rg\����)���1�, +����-N|��hxc��I? +%��B��$����cFWcHv��F5�gb�HlQe�m�YӞk+%��"�D�amr�ܖC�G��4���^�!��͒E��CXQO~�]�t�9w�TG�m@Q�`�Z!���S����Ļm�D�
�$����խ���[[�(
���m^�LN0�8�����(�y��ƦCe�����T�ɜ*d��H���_<�ۑ)�B��ӹ
�C)���#�;�S{�uy� %ҷ�X�S-_��XHzbA'���Ok4�v6H@��b�uq��2&lʮr�ܰi�l��e�A���a{��[�\�C�^����x^Vs�( +�$����sɭ��_��Rkn;��ye�p�`����çj��K��<g#�*{�M����_�^��Ю��;��ᆷMN����j��i�'��m�YJƦ�O �ޠ��ebi�f��x;�6��M]F��������t
�6JB�����i��\I��Н�m�0 +m�>z���_�*M]< +��"�:�U�`O'���r����mWk���۶�M�u[�̚���=j�y�W�I�7z����pb��az��{�qU���֥��1��B�c{�s�6Ιm��"��&�9M�[vv������Q�k�;�|Ajr�-Ït{���վ�Pm�wY�6����&��tn>���]{�u���z�k���w���c���������������� ����Q;$�3��5T�ѹ�+p���QMP��MA>ܩ ��ZA����8`��Js�� +endstream +endobj +458 0 obj +<</Filter/FlateDecode/Length 3623>>stream +x��[�O�8G���e;��ĉ�Z�����̉ػ��}Mh8Mw3If���*ǎ���
�N:!ѡc����U�9>����r_~9>i�r~Wݰ��W뇿���?T���~U���կ���g�,�a\D�!e��0e��� Iy*Y��\�Lf s�<���n:<��
�Q����҈��T�(���A������o�����@�~��1� +�%�Z�������� +���y���N.����?�����q��ȳ�ѫ.��̳�?������ �,Hf�xve�~S�-��06����F�� +��Գ2@]�����Kg��u����|u5�<�o� +E� M�X��H +-%�9�Nc%������{@�e���^R�E�s$:�h��O6�mP��ޠ~^�H�N�;|T;�W�.�X}���77Z<��i����Z�ݕ8�}{��3c�X��d��_lԑ��Fp%Z��F�<O8���.o����ӑ��� + �%��奈� A�
�}(�Z[9
ܡ��
�b��(ؓr3�^i/>-+�;$���J�~mr +Ď��B2��9����jwڡ�fys��P���S:>�C��ga��f��{M�X*0�;������`�0u$�6I�қyb�8lat�ڶ�)�1�mOи���y� +�~�j�]�`���`9�y�ҎF�����:ە��V�ޭ1_�"����<��v��46�3��i�a +���H)q��D�����S�IUHL�HU���&y��2b��_c��1��ԁ�6��T!QO3�u"D�Q�"&-�:���*��R�Ω^4�#Y�Ș�r���]������.�{B�$~%[+<�jM��5�3�'���$pr +0<�}���(����|�{����q���Y[�����C�Z�Y�:��2V7���(B��1����|,��-bJ_�#�zDZ��'� +��=��d�������-��Щ1�O���3I��G��g�_=��G!�H�XR���W6
��M�N��X��!2.&��K�/r��R![s�'d{�@��3�;��GU�P������=�HS�!�v���mƾU�T�Ȯ�P<�*@�k=�*��ւ"ᙟ��J ^�"Ä�eJ`�}��IT +-�qF��I�(�j�X/�I�?��ғ�8G�,��>���H�L$���xAr��2v���:�)AhIg����|7��/j�d!ґ,� {ۻ���F����i��:g�s�5鰾�ޑ*vHcc����a=���(7��F5�R�7(��;�2$�}�L������L�jq_�����g�ap؉����Bn�Jү��+��谷�$��-G�!O\�G̋��װ��<`���^?T5�-:�WmUFU+�!�-�,��J�V�=��>T�)qY<v�O�8��O�5�V�Q,W:\EP5�M]M��NVq�P{+�!�;K6�꺉��X��;��>��8���ϴU���E\��������{_-�B2v��7v�#��oՀ�����g�o�m��4��q���~�Z|��.߷�' ���L�
���)�PPi���3���y�w]}ݠ��@t/�� �# @$��ȯ%��F�[�B�.��;jhh�fF���:ǧ3\�$����X����!5ɧ�6�r�f�j9F�-�bψ��~�=Ǔv�S7��N�㒝���Ju�t+�/�����4� 1�g�B�RTt����h{2]��v���ҝ�[��d�4!�C�1��Z�u)�j@W���"+�N{M�s���GC� +���m�Ռ�$�Z��&�ro��Hx"�mO�C#���8�Asp����G:��������*��Bv�}��$�����NQ_�Pr���8y������@�� +�Rf<�].N[����DbS����+��09����Mii�3�w"<�ݥC2���?]k\��������+���XM���J��E0؛H�*�o_h���Ca'fX��\���^��;.K��c3e���J_��� +E3��4�T�U)�Տ�;�w 1���v�GU�ʙ�k�_X�J/� Oj9�َ�M`7Q����UՃi�
F���
+L��Q +fIsԅ��~y�h�� ��c�������C>����-���f�Q��t��CJ�����;�&b'�b +�U���~��� +�~cDqƎĦh"4���8�C��=Q +�K�K
�%�Q��B�G+��]��j|ޙ^�1f���w!.4��{��:�_� +endstream +endobj +460 0 obj +<</Filter/FlateDecode/Length 3569>>stream +x��[�o�6�n���eԍiQ"uA�q�^Į���(�"P��c7sd$����=R��J��]��H����;(��۫bZ�g�������.����r�����jvxQ\�.��v������1;|5�cv]��<��\��i������Jx"Y��\fL����bJ����]������Q����{I���R��Q�Yj`����×��lr��'X�&B�c��K6��s ��ğ`���ޏf�A<:
�ы�q�'��k��{��O���fσG�(�g��ep G��!��5:��mp����ɺ�p�-���j���$B����#8�%G�hQ�^����o�~���撇��|[�B���@jŬK�u�V�#R���g +"ܝ�wT�����koZ��<q�IA)���f�� 7�a'g�\�{����܇wz��A��\J�<�h�����H��l���μ<�a��s��Ivhƕ���x�B����-�%��
^*�ד;2�@�h*�he=�r0t��%���5���J�Q�w4S�
���
_�yw��<�C$��<�")y���Ԓ�44���݆�p�i��P)�U�݆ʼ;���+ +c��f�*L�-�&�h2}?�o� +���%S����e�`�%9�aQ���@������5vx�pvv|���d��%�dRZ.��]���P���M��f��ơ��"��$K���x�Qd��2>��Ăh�4c+�w�6_��3&�93�v�H�F$��j6�P0�P��k`����y��~Ɵw5ye��w���8�T�-���"�������b��/Il��+���y
�j {Bl|�I���NJ���>��
W�� +iH�"B��ckζ��r.�3�VC�$��F*�^����� �r�jW�"�¬�j���D�zn��]e��dWU"�u�o���y��AA%iΌE�����s}@��J�M��8"JgCp)+2�5^N�R`_�ԑݬ�U[REY�z5����7B��BZ�:��� �[����(
yg�vd3 G���u�XϿ�E��i57�g����EctmӬnj0`>/��҈S��� +,4�
��$���Ae�=�χ���~@�)�is^�\V�)�ls�5EhִF���[�B�ӪE +��Ov�{=�?��k
z| @�o˕� +7���%���;�����lQ�b��(*F2w����|��gՂk�4$R�0��nߚ�M�m�GJ:D9��ڑ��ƶ���j�xtl�[�>��ɺ��J�#���q���!ϕ
i_t���2�#�0�0.A ��$����0R�������Wd��� +%U1 5r�4�C��n<n����c��u�+�<K
�"�0e 66sC~硦�xy9�f�|Cr+����4�>�-!2�Up�� �;vU%V��F�>��C�R��bi����|Zí� +�8V�)�&�����' +47|sD�s��:l�Y-�ҵ��D�m��4��)���ؑl%i����`�^w�����5E�W[���5 F����7eys3��T7���W.���H�7��ٶ�r?�ŀ���-3�y?R�:�j�4<��P�eŦ��R?ʟ�D�]*��谇����HA]�S�;]�� �z��=A\/��iPT��9�=Zn(�6ּ�4l +endstream +endobj +459 0 obj +<</Type/Font/Subtype/TrueType/Name/F12/BaseFont/ABCDEE+DejaVu#20Sans#20Mono/Encoding/WinAnsiEncoding/FontDescriptor 509 0 R/FirstChar 32/LastChar 32/Widths 510 0 R>> +endobj +509 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+DejaVu#20Sans#20Mono/Flags 32/ItalicAngle 0/Ascent 928/Descent -240/CapHeight 760/AvgWidth 602/MaxWidth 1275/FontWeight 400/XHeight 250/StemV 60/FontBBox[-558 -240 718 760]/FontFile2 511 0 R>> +endobj +461 0 obj +<</Filter/FlateDecode/Length 3732>>stream +x��[[o۸~������"��.��i���t�&�}(�A�->X۩�$Ϳ?3C�"%�Vrz +����\��fȜ�mv�Y5ޱ_==�����t¾�^�o�>�~���~��U�[�W���^�:gI��2����'�̏�Tg�先e�d��`���6�����G��F<�ꯟ���(K��*�q��:0�����ל��zv|�Y�8㉌�KKv���s�xs|�e4�N��mT�^�]E��ߏ�.`����"��40���(���<��щMp��M��e$F��$��ɦ�a����j��2j��$B���?n���1Z���$.��f�|�D�g?r�R�I��V�$NCv�g$�b6[�u�������+Hq���~��*�q�skk�A�2���A)),!�8 ��t�a���4 +@���T&����Ц����Úʲ����7 +tV +T����*B[�̻�D��0�VI�O�N�>���1�M��A_n���g�y��c
˟�u{�X`]�u�`U������*��\H�Jl��`�ee,`P���*nU$��X�;��pvy��K<�ڃ�`O���\.�`H;�� ���}��@?h��Nx6���lwl]��j�����=x��8`>8�����_?n�[�C��ʘ��p����3 +R���c� ��L��ռ�y���k�x����D \��ݠ]�>T��g�5��p�ɈO/'�lm�=[�YjX_G:�L���?MD�al4�n&V|�{�QY˼IyTZ�6��Q@:������Ԑ�q�l����� �K� +2V H*-�%X�SY��6댐{^�v���( +^�k�%�V�j�^�z%u�n�v��M$и$�k�%
j���)$�H�O�e@T&�M���r�n�C�-�(�N^�x�X��Q��< +Җ�#5np썉0]�qՒ�&��4��C�[5B���$C��$<a )O��/Dcux��1���h�J'������f��&��E��#2�~�+�M� +�t�_|�Z�"�K���BT +�1z��s?܋�5Q渁CE��
g}[��G_ʨ���2�z)]RXc�a� ��!ӈ����t�V��0�]��?���{p���")e�!L-�"�w*[�V-<�V-x�O��[��r`*!��(�_�蜸�Ds�B9�OY�G.2���\(ݟ�u��y>��n�f�x8� ���p7���H�rd�ӕ.�<�)8�S���!D�1WWt�1Q��� �%H2���-����I�ĕ������G&:_�'�h6��F�%�,͘s�P�������r-[:��4y��h��Gí�Q���M+�N��"�F�Z���W�?�:_�U�,4;da�5lj��A��K\����H�U�:d=\����2��K��)��<X�q�=P���]��Fyj!����1���^;H�v=���o�L:e3�>yA�vOu���'��&ܘ��Z|�XW��\�>�1��5[ޥn_� �}�G\�$�U�&ڷ������cS�x����q��^�� +y���1�&����E�7��f�F������4�}Ն2gzg��*Ұ']�F)9���cc�1�CZ����E� VuD<)�Σ���!����4קl���&���͓��B(_W1��7bc1�W��v���pq�>iO�0FY�j���Y䕸j��'�S���u�:��Vs���p#�jz͐#��Gp���E�Y�s��=���3�4���MN\O4ean�hٯ֜B� �%�|)��Ez��Z��h�:�|�R�06a�]�Eߵ�v�R��2�k�ͭP�t�]��i]����$����G�H�oJ��+�m���C�`ڟ`drW:σtC�۔�[-���"Kq��wM ?�xT�A�u�*���қg*���4�:����^���Ʒ�Q���i��-6��J皊V7�#��*�˼�}�[[P�9e n�s{�����Ak{�:D�Ja]?$ޮ��s����,ͻ}��z�c?��U>*�����&A + +���� +���-xm߯#{i��a +endstream +endobj +462 0 obj +<</Filter/FlateDecode/Length 3806>>stream +x��[mo�6�n���藬��,�]���c��{q�؛܇�(�}��/Y�v|��f�/"��v��\�D���3����m��������i]���}<�7���7ӓ�r�X��b���W�������-"6���?���~G�7R��%���,�#?�Y�%~��0�m��G������F���_?���Q��!*��0u��#������7� +6�q��� �#��h��a��������㣏��7��^>8?���d�ߏ�.@ܻ�;x�i�]�9���~����ƃ ���ɼdp�E��7�s|�-kl���6���Z�~ +*��z��^{=I�W#?�Zzx��C��~N=�q�g6Ma[���F��EqX�88�i��4��*�aM�����5�����#�+�$Gg�� i��F;+=��ys�$���0�N���
�H�������q�/�W@흣�̷ױ������=��1��pu�`����B\)�a�2yȣ�%E����`�����8X�[,+��N�;�F8�:�<g�Y=x �LJ�et'0b��{oμ!������M���7����� +�����{x��*�ǞJ�R1�@�Ǡ�D�-�fz���[V��0��[�&%H�<��YÔy.��_yO��h��3�G^!j2�'�k��%r&���*��`y,5v�����Ϛ���[��KT +���=i��5.6�����{R�Qll6{�\/߈�q.�,���߾�9���S[���3�h*3ݫːZ�Rk���p�s��=ak���g�u;����Pk�-� +��� ���ؚp��a7%
��w�wF�h�{��pT�;@֗wq�F��ᶅ���"�u-ԍ_>O��k��!�)�qIt���0<5��u�[r�N�vr��6 +j��=���ْ�D�bh��_+#�9ũ=�af�aN{"��f +�2U��}MJ����{��HX�LhH��, �Rˣ'5h-G��`�wn�1<@���� +X�'� ��j:��Ṭڧk�i��s�R�ԆΘ��(B�o������Qi���P�¾�"K+��1��wJ����Y��4a����{�H�^Pru��zG�j]��1d�Qb��ɣ���#�).��X�sCx�YČПVWnqǵv� +?��g��>���I�#���[7H#چ�h��7c0X%f �
���(�3��d10-ܮ�����2{���XD�����f��:|�8K�K����䭦����ɣ�ؒ�4z?�gM�����a�h��@�
�V�u�tW{�C�P����� +,?-KJ_}e�C�Of*��?�J��P�|�ȍ�8[1��&ɋ���v@��̀j�z6%'=�s.�.�z�����<o����I�d�b�@]>�vL�8�&�)V�,���Ol�U��<�T-dI��i&*Q�~���:�(!��%,�Ȑ#j��(�b.�1��p�B"���g輦���������lc{�+<��`'&*�D���� ���+����q�-Ѝp �Ѕf��rW����"EŶ�9��s��Zf�<<O��=N̝�8�*�]l�9��x�E��[����ȋ~"�u|���)"E���{��0����K�ŝ�e�� ��G,�Gb|� l臐������M(�q.��H��_�a"F��Bg������l�V'�V��(ɝ���~�n +�����4�UuR�_R#Z1�����q��{�f�[����t�=�B�~C��Ǹ`�"�dc�����*ɂ�A���Jܷ�~�0�̞X�iJ�c5Q� +�ޮ��P��@Q����˚lS+[��V�ɒ�M�H�q⺻T~n9['��L�J��)lx�vKf4f�*��sٷ���e�$K��,3/��Pn��)���܀$#��6蟒k=/�a�����k�S��.'�l�!qC3{C�gNP�Zg5�QFx�x1��w8����n�ehڳ��G<���dx�^�1 +�2P�b���ݔ�Z��̚Rh�!�����ewe?g
+�Cn�Ұ&wRCg��MR��tu$�I�>\�Ukw�Xp�I���>fZ��6��f�N i�]�j��MU��N�^2c���T�\����A�Z�ܭ�w3$#u�|q�i�L��C<}U����纖��,h��|~h�8���
9�)x!�1L�
҅/�c��aa=T~�j�3��t��z2 0��/�8/�1˰�:ۂ� +�����?b��`.���j#����ml k���u/Â�5�7����/.���eX]F>!oTt���
����T�P���0��#It���M�=����ȴu�JF���Ol��p�|P�!sLg
}T�[v5oc��An��<�Ū��IsE�vJ�Ĭ� +���@�ӫGy�i�7�
��2kb�n�D�-���3���T���XR�kN���}�F�8��
~CL2��i���V���NP�ZF���Bsf��سB8�D�^G�d��묒��Q�P��so�v��˃��X�f8����}"�l�!���pVC� +endstream +endobj +463 0 obj +<</Filter/FlateDecode/Length 3029>>stream +x��ZYs�F~W��Ô_L������u�,�*�F�,2Ƀ�r��$�<LB��ﷻ`@�x�T*4 �����1:>Yw�|X�/�O�"ގG���`���x�_�ӻy^�-�/_�Wg�,��$�����$��jzx�<�,I�)�I�ÔI�C�V�Ã�O�_K"���'6?<�%[Ś�سՎ�^
�_�����@��L��+�d�k6���)~\�덃#ջ���I?��
�sxp����T���s�ѓ��sΛEp�{#���dAԻ +T�.8JzS|��$��@��ALT��"+W?�Ri���8�)�ZM��7�?{�c3���?VG!�>?�=��0�5�:n�� 9H�.O��F�'F��O�ho��,v�I�(XHT�O�������Sv��W��X�|�fW- ҔgZ3�p%��w/��D���4�tk]�P:�>q�%My��;],�����ð��ŏ����=9K ���-md�A��!~���3�&���_k���~�JC��6bUq�Zzx%w�Aj�Z�ՃԚ'{��`�d/R��e���po�$ޗT���ڤg� +#�y�ҙo$�Tw3X [�BF���BieTK,�8p +�ˤ~�yD�e���="6_O��0���>���-9�~��`����� +������>�先gak�F�k��h�E�!�(�8��#5��1���Gd��:_���Y�ׂ�c�f�oIq�S�4�r\+���a�g2吾�լ�*^F&m�9*�bb�M���B���)�"��f!���lqM�5$5���o�P�m�1O�6"��OD +�àe�i�7[�����YG����r]�+G�
���� +_�f�H3w" '�V�"��Uo�R�1C�]��5� +�k:lU���4�P` Oe@� +4��U��a�<��ޡ�(2j �al����]����#�a������bn*H���tBf(�֝A�;�.�\��Qy#�@a�S��j�7���:ب�c��s�����o$.u@_I�����5��/'�4^���/qY�?��% �4f�:C�lX�I���C�=��:��;���Ո�1�aź��h�=��O���- 2�������+*ZQ+�&���,"�5u�:��5Ƒj�����Vb>�I���y|��oÔ����bUf<��FK�>C���j��?@b]��G�Kh�!�:wJ�vHF<jV��Ր��qY�C+'�w��\ҷ �����)p�9�^ +�c=�0qO���Gp�t�Y�)x�\����S�+�tdݶf���ʨin��������~�ƂǑ�dw�v�%\T�ѧ�&�Z�)��(>�7��-�@�{ĩ�<�+ u�v@�Cl�]��n��y5��2^1��/+i��?1$��ȕ�[��^�d��҆1�n��Q��u��v0���t�rs,Qm)��g�3��o<4����|��W�{j +�4)KSe�.�����-�on��c4ĺS
۪r�I�h��K�z���@!��D{pkG6�|i $�~���p#r�q#J:��Q�vī*��(G4|��<�3�9��-���ݵ���Pi����.�w�6*�)f�c� +21���ʮ�L�IPW9oF�<uO,�5w��f���Q:�Q�������v��T!�"���l�
+s�Ww&e�Y+B<��jr��������@ �M�d�F��Bc�E���η. +w�"�Fx7���]IU�V��R�*U<k)��l5��t�ivy1� +;�3J���<�R�~VBX���Θ�U���B���I���&b/��0k���{Q�m�bt+���R!�w�d��>�(����Aj=/F�� �p��[�6�t�+|���_*Mn�J��[��߄��)�u���6�-1��ے䔴�h�h��x�Ӯ �LS���ad�\�v�qo�x&.>��غRcamn�����ɩ��3l��h�i�U�1���'A���,G#���Q5��uQ�G�&������1��. +B +�3��J��țRױK۷����2�u���qTk��'����qSy�9>���9����g[�Q�m̦,ݠ�<��Jʒ���LH�+5�HG�=G:����|��t��'/q�5S�wƝ���߇|�U�dg���=�5<��z�������
�k8U<%A�������X�!ʽ�'p +X�>k���q�� +endstream +endobj +464 0 obj +<</Filter/FlateDecode/Length 2919>>stream +x��Z[S�~������l�b4�ܶR�"������Cj&���mbX���ni4��5���Uf�ѥ���Oݒ����e9\�w���W�rx=��{���{�����yy5����|��=�px�����dW�ݝ�G��Yĕ��E)[\��$)O�r�U�T��(g��b�����/�;�M#�m��6��Ic5�J�S�PO��a����/� +6���,�?�D��dY!�b�)�~�ǻ;_�qؓ�I�����O6�mw���w��1OcϜ�W�(�g��y�S�5$5Y���&a/��E��&xm�`�����f��� K��#G<�W������g�9m�x���iU����Jf��Ӧ ^Q�<���H���H^q�$<���R�sc^��8%2iƉp�h}vt +|塸��j>����\�4�s^(�d�eL3}E��}=��Z���G��ϑ;٦9O�)���-:�c�� �%��5~�~ݑ��B�����Fv�8�sx��7���-�aY}���m��'Y�Uɥl��!~�Xŭ~^b�x�e�̒m�T��vMU�u�,ݶ�*�vMU�nzxr$|2��Ȟm�c��T�������!��rh�9_I�m��I��S����`t#}�ث�+���YD�]=� �%x��G�"�y�R��,V���;eH��S�B*� dK,�8p�,-��AU�fL�U5ҝφ���9�����!����K�'ȟ4.�k����.aODp! +�>'� +w*����VU�V���W��:�V��P�:uݑ�+X��?�����P��]h(w����E��JCI(���8�;�ܗ�3�rd��S�9v�ٍ�%��H�����*ٮ��$�W�ne; + �[Q�h���*�� ����R��ٍZGa!sXh� ɍ�'V��tݻw���̞���2�y��RGi!S��I<~J[�_>���4�tU�(u��P}��@�z�b:�Jt�c:z�k�oz�b�8"�R�1�W`Z@l:��p3��>h.+����|��U���><�C�v6�F���8+)��E�đ�q6'#d�۴Ĺf#2�|��ó �vd�t���m���EM��
�͡������y���-��%�&�RsN����U��5����v���g+�
�l�/|�Xk7:�퇛�w6V�+6���S-� +�|"Q�9m[k +o�I�m�� +�8�x�>0�{����19�>aXۮמ�O�LP�m((-�W�2�m=��Ɵ�/S��>~���%�8��DSm�~Iݞ +��ʛ��P|M���)��ǧ��ބ�(�f�=��Y�ܧp�v�����a9*r��/��P��['�LX�e������5��ґCɐ��VK
<�!s�d�m�P�>җ�ꩱ�j:���6���V� +�/uС�(�%���t�++�&ۆ +����bo֛�v�6�!:��)�-�� +����E�����U���c�G�9^�ԣ|�҇u╃K�u�C��0F��ؚLm.
@p��C�H�D��Ǒ���������]!���@/��_M�D +��x��s-(��k_�є:ݸ[֒��|����6>�����a9Db�m�{�:�099��Y���:3x�H�8�mJ�U6�X���f7�qʱ{�f�q�zG�T���_�'x���˺+������Y��~ؾ��N��\[C��Jϻ(��M7��}I�}7�2� +i5;��zGxK��glb�o�X=���PIv_��U����/�:z���=2{6z���C�ٱN�:�#���t�T�,Bgôk=�E������*_j�Л����<P�T�� +�����\�P�CX +endstream +endobj +465 0 obj +<</Filter/FlateDecode/Length 3492>>stream +x��ZYo7~��@�izQM�
d�+xw�ul9y��КKB4Gfz���oU�h�g��>,�3�dU�ί�s~�if��a?�t~�4��~:a��7����7/����z��������٫ח���c�����$�qRI�4M�o�l3?=�r���(��,-2�L&<N�fzz2���ɟz����lyz�K;���<@��W7�'���b7���b�'��S���<e7|>�?W�'��it���F������wv�ӓ7@�oe�H�� +�{��0��fG��]%�md�Q��!~����&�� +)��eUh��^¤�W<�iiM��U;p�����{Lgחo_��KY)�k_IH��P +d>1jT�7w/���Ǯ� +F +�w��t;��Ao���#1���H�P{[Y���y\��G�[�Ѷ��E���=�[�X���j�x +�1 Y5.M������]�ʬ�jq�
�D} �4�ҩ�l���1^��w +"��#M�252��?zo��cC la��=��|�l�#��#)��!��\�c�k"��Of�{Ρ�����k���+x�Hkk8
�&3}�{��hC�:��sf(�5:��J6�!ok�4E��2�h�Q7@����2�"rs�L����I����ɦ� p��2�⫱2��PP��`Yd +o�,ŵB���ޠh�A�}�����?b�<O��Q�|^E���[#����l01�U:�8�߂�PT�s=ƽ����,��|s
w�.�^NP5V�Fet�z.#]�W3Sy�����O&P]�H\W�f9 �R.��O�H�%3���H�����p�a��T��G}G�gŨn#L�)BU���eO�eYƽe9X�s +\��-LЀ���uM�^�v\�x��������ή�A�X�iQ_)fHC��3&��5AI�?"EɳJw�Зg%�?�/���`����wbP❂���
sx�Ǧ�^˾������P�g �_���ڂg���q�^N<'��RYZ�=Bl3S1�C)���+�L{c� +l�z��ہ�C�X�hwe�+ԍ?}Z�-��,�F +P,��25;���F#�4���!x����hf +uC�sC�n�z�C��2��q�t0I*vЍ&�k��ԓѕ�e!|��<I�����ߏoD��!�>Sp�"; +p�N�f
:/����1�*Δ�+�b��ۇή��R.���C�����l�M��}rc��!�D��8��
���X�@�ܢ�XkK��#w�=��������4�yb�@�ԋ�$�vV�q�Y��B�q9��~C}><��%�����R� [LMr�'z�G�^���%�D��)w��I;�ц +�yI�!�) +�?��yBzIUp�}Л� S���p���� +,Gq[/)���{�V[�Ǎ��/�W
�i�D�b�*�*pc���=vW�����0��� �9vB����z��0c���� +3I�̓�?��p�ɲ���O�c��s۲{�6�t���v0s# +{m�V";�1�P� ���FG�*>=�*7!�z��]��
��v���ī��kⱅ��hP'�oC��1{)�*��.��q'�,λ�
�K@2�/�Z�2�����u��"ߚW��xw2sc�)��C��.S���ے���ԟ4��/��9:RԗJ�PwS�ٱ�Z�Kꋔ\CF�2���N����H�np}����'�C�K#��F�+.G�(���.F��������on���4N��/Μpy�E���ydg�+U��mz ?�~�<C
�P�J/o%84 �؉�/} +�~ڗ��Q�Pe,�<�L�z���_�(�p[rD�q���� �m�, +��9�tjq�v.��U���P:�S�C;F����j6S��j��(�VG��� +�=�g�Y.�X��}e�'�2� +endstream +endobj +467 0 obj +<</Filter/FlateDecode/Length 3780>>stream +x��[Yo�H~7��И�1�f�8N6��db��1�Lٞ�������[U}��TSrb,��>����j��d��Ϫi�~����m��]}î�/����/�W�����~Q����o��w�O��NjR���� +#Q�, +�D��<����� ��,ay!¤`I��Q�bF [ׇ�_��A�;�߿���A���T��q�Yj�J�.���Y�.g��E�?�x����%v9��A|<_B������դ���,(&�O.����?>�r���"�������U7��ܳ����(��� �,H'�1����-���Zr`l:Y�����05���E�oXGa�ַ��/$?{�m�$�����I����$�0�t��&xE ���#A��� F��;�ߙ{G��Z$,3g����P�D�N4\�}����w˶]�}x'7�EX& y(b����(:I~붔�2�ؙ�ȉ���"L�-&��:�s�O����w��e��Æ�%�]ELV&�����?]��9z���o
~h�7�)���X�==��w�!N��<��$ �=�f`�|����,��D{ͳ}�&B%�ohR���?� |v雑�\mR`��P���}F?���āy{�4a��[�Q�n���H�O�S���7����Y������=�ğ�w{g��G���M�dU$�}#��8�5y�E��2�� +�0 ��2�h��)� +�R��a0���Z�*�\�R�yJ��0���D��-�z-���� z��IF,��>�^�"��Q9y��GG� +�A��A�*��Z�|g����BZ��<Q�.A�$.fp��}z���C�I���H ~Gj��+{GΑ��>�xQ��7vZI���U_�Xpn��j[��'����Jj�)�S�1�vP6�ܵ��;cZ6��V�;�%�t����֪���D�SB/%Ŀ|*Dw�,a��Q�G��$��H�P<b&�7�����Y�{�����S[/��A%�#��i&�v���ưŇ��Pr�;Rb>��j�uVd�� +� +�L�E��֦;3������.�ah˨�a���c0��$����IR�&�[�b*���7�䡒Q�1���5N�у�,}|4�y���L��$Z%�}F)�58�(Ҩ�ԁ?>�8�DC�w ��0-��$��+�rG�7����PE��j=
�Ƚ5h��+J���@�X#=��1��&��=��6��d-�:AvR��V^~d?���O8Cy>��p#N�M����јVL�gӈyץ���ȓ̂D=�I��~���F�(���Fd�iD��D��z�qd��J��}��s6�):���)��m�O�:���\��6^���y����lVx��$<��S(���H8$ Z�яFξ��Iek�W�5;]�pM�,~�w��0�qf��ޢ=,D�`CBA +Qʠ���.7>��._M~p.�L�i/�����aTR�ȳ�bѺ�����_n��A���2���c�|�y�?��9��o-����^��������8�P#��[ +:lJ6��"P��&�_*�j���}`�xp�!]��=(zR|��^bq/2lioO�������9H +�C�g���Y��3I3�t�ȹd��Ec9��ح�S�$S~d#
P�"^�F�X������EzQ��"L�U�xk.Q��a)�P7�H�認T� +^����uk�?��P�>�1p��RR��gl�hr��n~^+Rl�k���+BR;��$��n����tlk��Z]��-�{f�+�^3ť�$�9w<��@�jG�����u���t�2cYO�q�s�<����(�4̴?��\����St���������A�F�%��aځ�5��VK%�Z��J���6�طZ�t+�v�����g sx�`�q7��[��ać���<n�xĦi���ʦ��Md6�d�ڹ}�PC�h^�8Wn�ʭ�D�žE�K�E����
ʟ��v} y�#��b������<Ҵ"
c����NkQWMۼ鵪�wx+A~�f���5�o֒�ݯ���ڷ:S�V�+������T���Ԫ���7o���V���1��a-�#��}�r;�� _ +L�t�m?A� �H��:ݳc'%�e�×}�T]�8ĺ���d�{�����%��\|f�a�R�� ���84��W62��o.9Vk���3��F�" �� +���m�F����-븐�� Ezށ�xV�/�$ +�|[�Agdw+�~P�]�y{t`����[2ݚ�8��3`�uӮ����p�Z]���>7�½VWm�v/3YrN�ϴq�g�db?���Mɑ�8"����v�>T�ޗxƺ����r��l�2O�oϖ�+�ò{�lW����i�o����n,��GC6\�Z�4�:��GDPmy�5P�W�[6�G^�ׅ��( +���ذ~U6/��*۟[ +���n�-6P�L��.�%�1��6��hi��z+� +�O�G��H����|>�a���,�����{�M�zXP
�X{����Et����]+�ؘ��%�45�|N9�@���G��#�^'t!}���F!z�h]��?�PI����4p��oʀ�=`<]:����W�u��m�y�%i��i�1X~Wr����bК���'���A?L)>ÿ u��ڸ�諪#��=l�eI6�7�~���w;HuohW�)��/g̝�u��I�_zd-�X�c�� r$�l4hzo��$]n�C�p���'"�0����F'r�Bnn�|��$ߋ��4w��0���*�0N�/���/ +){U4;�H<���g[��N�ܚ�\����7��x�@&K������c<(<��4�5�EƳ��n�xk���=�'KS6�n��sH�u��Oy��E���?ļ��%U�&�����tF������ +endstream +endobj +466 0 obj +<</Type/Font/Subtype/TrueType/Name/F13/BaseFont/ABCDEE+Segoe#20UI,Italic/Encoding/WinAnsiEncoding/FontDescriptor 512 0 R/FirstChar 46/LastChar 117/Widths 513 0 R>> +endobj +512 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Segoe#20UI,Italic/Flags 32/ItalicAngle -12/Ascent 1079/Descent -210/CapHeight 728/AvgWidth 543/MaxWidth 1880/FontWeight 400/XHeight 250/StemV 54/FontBBox[-458 -210 1422 728]/FontFile2 514 0 R>> +endobj +468 0 obj +<</Filter/FlateDecode/Length 3181>>stream +x��[Qs۸~����*�T0A y�Ɍ�i�$��N�4s�adY��-)"�;��ww� %P/�S��|��.�~�]莎W��u>)ٳgG�e�On�W����b�����rzt��n�yy��?�^�<aG�.��͊Ã��q��K��$�l5;<P�kɒ4�2e2Q<LY�P�������Ãov�����l~x�#:Si�#�j�L/.��"X�.���D(y̒Lp�.��9��듴>�^|M�q<z��������o��0��?�<����ڭ��wU�y���n��� +WH�d��
��m0NF3|��Kr/`��M�^=�Gh���~G��
��j5k>����{��$���Z�B�p�1�fcV�Z�[�-H�3�j�`���U(x�[sgi�Ix�[�$�)���v�� ��a�o��<d�bQ��{��qgi�3)Y��8"͟���|ި4r�#�iF-���(TM�j��,��� �n1,)Do�O�����%1B%-����!~�����&�s� +�PT�HҌ
��Qk��8���E����:r^?DR�dǡ�%�ihܟe�
���C��P) T�݆ʬ;���W@¯/}���qOR�6����,k�E�>�<�
�*�ml��<�� +�&�B��Lg<�Ie�f���4t��������ۓ�/Yx�&���h:����%O�0"O +�F�Mzn���W$0-�=`��+�\��*��\iG������$=�H��u��@��X�ZZVǔKU�m�_�O��Dj��ϑɍ�]y�ߍʂU��Ԭ�1�_�����b�%�qm,��ۚ\�b:!��و�MG�lh�Ų�n*y�k�zP����}��PG��M(v��
cP&��G�3>2�~K/��i`�l��'��?�da��x�X�� <�ȈMBh�XUj+�C��ЯT�_��)$�ѝ���P���JWv/X�O�f�Kg9"5��7��������ih; +�~�s��H�Q";���B��u�c���N)!0�y��go��<>!#����i�X�Pc�)���f�;z�~�|�q�.�?}A�7��/�~�������;�3����C>�[r������99G����8�I�c3��?���NT�/o a��f��b�������ۅ/�X��){qµ�� +������o��H}E���i��b�E��A|�Z��<VxV�+c��-) ��:�-@}m"��f�h�� Wh!Fk\�
[ұ-�� ��#�W���'I�Ҷ@/l� �@&P� +9"=Wh����`��<��K +(<��ޮi������=�u'g�X�7K +@j͓����o,$�@U����'0�m�:$��) +endstream +endobj +469 0 obj +<</Filter/FlateDecode/Length 3393>>stream +x��[Ys�8~w��ũLɭ��d�l9�L��>$����1kK�('����� +���a����p�Y�)�3�ӄ���ǚ���GW?}u�Dp�?~b��##y�2�K ��������K�rvqu|$X� &b�Ks�5���������ѧ�<���(=�~�~g?>zD~��K*ɍ�9~҅O�����zt��,JFo"5�����߬�5��`l2ZD�F�z��07��6,��o�1���u����Ϟr�\�8��/����>F�*fU�����'�A��uv qu�H�p�$<��a�W��M�N +J���T9:1҉�t؋7g�$��N����>�����A��\k�R�$���YO��Y��ӝy��l�k�'�C3����- +��ܚS �VY�;�:��Nޡ;{s��9�[.k�� {���'ȟ�\���0�5>����6s���E�M�Q��F=�Z� +�"�� ��#��9�>c����|!1����ի! ���@]��F�~��%��\�����ڨʸ��
X~��~�X���q��� +�" + +���}�s�\�O�KZ�1��s VbH�iТ��Z�q��o0��#V���1��� T��y��f��b�ۇ��u��D����Թ@�m��ssEϟ�!`�=Zkb�Suc�7H�Z�� +���Y�����&��? +r�E�03�.)�RO�*l��(�d�9�
����y��`H�?X�k�5����n�e�y���7 +���ckjq��
[��E���iw��� +����B
X��s��AљC���)O�ð������/��� +�|?��f�_�s���l"�:#?^�џ(y�������[��@�|��.�Fs�V����&�TX*�6~-���w�2��a\�⢽�^�al'[=��Xri�x�i�E$�|"�A��Lj,����şx���%θ����$��̏�>��m}���;�!d�)i���<z���-4���zH(js�u���cn�b}���u��\�u�^XoM��F��-��_~A��;#Q^���|?�A�
��/�u;e�s��[�q��!.�m_�G} +jo�r�+V��&c_Ӊ��A1Cg�ȝ:�̮*[�.���(�=�^9r0�e�z2P#����iX2r@2��z�@��Q(&\&핇��2 �3?�@����?��Cj���>i����>�2<���X`<9�s���?q�X�ҳ5�����lVUZ�FH[w��6���ؗr���p���7w?��[e�PBmO�y3��GAwa6ל���S�dN��A;�ܪ�� +=8�h �1t� +��Tv�*˱������V�N[��t��2�\���� +1����kA[:�&:�p��t(�じ�w���1�}�� + n@6�<�Z���ly?j,:@A��v��&��fX%�M��[9�IS�����]��
�NQ#J�����,O�OJڡ�D�+�"�2D��p����SM۩(�6�'������/h��oh-�J<�H&cӘTcx�� +�~�L�u5%�£2�i��]��_��YH�5Q�b[a���.=��(�3���7MYwv�f��¾�)a ���Q�r���mwB���G-.����E�`ۭ�tV�[���v/M�f��W)��^v�������&�@���v^-��ֵ��9�$B��7�xS���R�����[(����q�7��F��5,sQ_���hSh)R���ҍ?!�[>} +��Ne�h#E�7�\6%���MƘ�7��7[ϖ���݇�&6��U�sY8�PnP�j�m]���7��4�����%;�2V#{�F�̯�Oۖv��z�N��]:�����;x7�:-�v�EA�;H@�}+6����Տ7,ۇ�;�3ū��竼3*�]ݔ ��.
�0��J!��OdfT��6�꙽�iݤ��fw�<W��������A���57�%�a�n:RWRM��i{wZ*��<�� +dB6���-��s�*��&nKMv�vI拘��g���]�����gA���}A�1!��
�&�(�D���i��P�1���:Q�jv�e��@wGķ4�E���zR�@Dl�pK��|Lpɞ�ϟ=���@���a��N���m�#��u�H��n�Q�rO������5-�b�Du��柫�5]������)��F��Q��u��}�[�A�����@c��e���]%�˨}��ꣅ�a�����}Q_����E&Ra��~��_?�RW��[U�wh��g�{�%ڙհ�\.uxh�l��L���D�@y��_T���b7�,�X+l�����o���C +endstream +endobj +470 0 obj +<</Filter/FlateDecode/Length 3671>>stream +x��Z[o�F~7��0h��XD4�ފ�����&i�݇��n�ֺT��x����pH���E +}M5`��/"?=έ� in!�H����&�&�^���"S�y�%�?��&`=r��o$�L��� +d�2��q[�A0 ��`Q��i� +�Pzn�`Jֶ/<�38�PlԸ��8p��"�~�A�S�]���Cz]g�����Dw�~W,q,�c��V�c�x��B2��j�3����J�EKc��@�[�<��t�`2���L� +!k�+����)��"�翡�� +C�#h����QC���<V�~"�sHI���]&˗�W��.��E#�/p]D0��t�P�QT��#��(������>��� C֞�pø�o����I��'4��/̠�0 G�g��83���/,�n�;�}6�Hj�ӏ��[��<�}��ԗ���~��U�%&PW5���`�����\iY����_��qP$��x��
hO��41��pCӛe��8��[t�q\3C}�҈��{��t�̩��p�+�Џ27�RW�$��Y�9�䴙[�&u��G��T���{��uC�� 5�"Q~U�P� +�w"� +�CQVQ��4��n���c��ۗ��5��tLE�ʖ|��Վ�$`t�H-v�w�> ���}�<�*��b�k�v'В��э辆�ir���Y�A�ɾ}�Xu����qf?��-�6�)_���4$����Oz(�����g� �����3�q�q�7��}�rW=�\�M��M�!eBqn���Ҿ\�TXWt��q��p�af=*���`��
a�'���u����d1���k��&J��P2���*h��z�=7��}7w�2r;���1�q����=�?j�%|�g�ر^K�J�I�?���� �"����|��멏S�3�o�>�z״���a�9n�7��#?s�Ηk�-�m�wrE�g���I�y��ο��Il�ߣ
\O}���yOj�^n��ll�E�c �(���[���%����=���}�����T�i�G\qT�����@��}�pֱd?�[8�_;���u���Y���J�lU�d�)�ymSHsu����o�lC�-7�q�pOqPt�?'ѯ[���,{��
�b4�Dqc�+���L��l���V,�C˯ԯv���|DI<�s���>
�wxώ��3���8{�3�0��ל
��A�z/��Ӧ���?UP� +endstream +endobj +471 0 obj +<</Filter/FlateDecode/Length 3143>>stream +x��Zmo�6�n����UQӢD����9���qr�~�w�/������������J�;8�9g�yf��W��j^N�ŋ˫á�.��ty���qy�eW]�-�MyXm7?��^��f���1[��g!�"b!�2��Y�����,Iy*Y��\�Lf s�<�l_���<?�K�Q���m��҈���T�(��:!������/��n~~&X���1� +�%�[�sP�'i��>?�4���x�&�'�������݀�ww�8�i�]]�y�]Jy�Y��mp!'3�!m���6�'��"�,�ɾ<������d�4��#X�����O�(�}��8�9��/�Ͽ���{.[Hf��ee����f_��S���yq�� ��9��|��P�ܷ����YBx�:r28�T�b-'D9�vs������a���Z<�� �y!%�3G��ax%n�T�dg^��0r�9z�fh�w���v��%�&��%�����y$g D��OvMd�A��!~���k�&���o5~��7�����$G��8���et���:�v����ȡ)K6jh�_��p��,;T +�h�PYt��z�@�͝oFvR8�I���BAҝ����פ��zI�l�['a�.�.�H���)�M�&��Y!���"2��c�����3�̣����*�Ê�E\)Q�2E$bɒ"��r�0 �҂� Tf +W,g��DF��9;,�+bp +g�/����ig�L���P�,w��ʘ}���gB#y�@�����GMoG�}�'�x��u=2N�7N +�$���{�8����q��R1��9�}PU>��L�#)�n��~��� �Mh"�X +)<5xQ��G4Q�)�䈔�ܖ�i���3S�!ұ +���Y���b�Im�u �z��B�㐃�[�ц�JFGq�p]QV�L�fx��
�-��ݾ�W"j���VlK�f՞ޓ&s�̅�:,� ��Ї/ֵ7K���;�1�cP�'! +��� +.�|�{3Uj +k@y����5�hc�ٽ!׳��SY0�D��8����R�I�����.����,kɿ��T)'@)��@�9�T9�N��5�-\x�==�Zj�6��K��S��j:���<s�V�NF�}+KU�DiM&y.��-���Nd�[�6t��fM�0���h�,,O:��
�������<�:��?�GE�CSᴱԜּ-Z���(���͵M_��U��ɧ@��N4�f�6p�"�=�[�Z� <=��X�zXO]i��]�*���Ky8���ob�!Nuv$a�!��,,79��m�
�R_�ؚzM�5��{×�}�m�I}2n�ʸ��ʄ�D�FI��Z�3�SU�����ç�6|�W�u�t��RJ�m�)���6>E��D� +x�c�����H#�9������u�t +endstream +endobj +473 0 obj +<</Filter/FlateDecode/Length 4040>>stream +x���nI�=R�����tuU�")$bC��a:����v�� +���a��J.�����@nU�^��qj����w'oNY�,ńh�W� +X����)QX]���KS��~��Y� +F�ot +����ڄ�c��-�ӫ��/��=�/|��; ���+
���<�
���}tPN^��sXO~���cл��;��[:�TՄ}����lP�_qIu����L��\�ۣ���U�=�Īz�XƊ�E�� +��Ak3fd��;"�p6�l��I��@BM|�e�ۍ�E�uz�Z ���v�l��#m�6�+V�
�K�L{7�<��J�lC�L�"��J�&��8�A$
�s�8-��Z�� +A����f��O&R$�]wy1�p^��}��-�\� �vvcu�q�V���X��Z=>=��4���'h
J�� +�ҥE��F���N�P-�Q�(�� +��+����s|�Z�Ge�O@����:��?U�,|vnP>��)(o&Aw3HGU��Q�Ӽ�Y�*��#G�kt}?FJ٧��A���D�Y�kB�n�R�����i�hv����l"G%!vM��4�iڱ����{s�[�.c{oa�B�T~�6m0�jr%L��l�ďt_��l=�Sp�
i5ր��؈�
���K���|M :EAg���l.}_�R�s4d"P�{���M0I(գ�� )��M�B��.�{S4YoO�УB�\���藖��g������cҼv����<'i�i�u�s� +!�'w)� �Fi��A62�5 +^��w w� +k�#M��t~( ��h��x7Jq���Z�%^q�3��P�d��k`\ܵ�Df��!��G�͈(�������Q����B��K��-��ʦ�j��= +��e�%�jSi�U�:�������,~F +�:Ī���[�e�r� �,#�s�$Ҷ����!�Gu�2�BЫZ7w�������Ie�>3��dAy��B�����Y�;�XbC�y7g��50Lrz��à��7��x��]R+>��N��1�nK��ھ9����V��������G��/�\G��ak��I{��,����Z�e��c���yQ�̎\���2��v��S�T� �j�1U+x��q�O�K��ږ��p"��p1Ay��Ū�P#c�(vBPJ����1�"^���f +�^�t�l�
����?�W�L ��i���R��[��O7&ex�h]17�3����f�ݓI����s��g�MMލQ�G+����\�$���6檒��|�ᅌ�WN���Q�W���]��Ct +endstream +endobj +472 0 obj +<</Type/Font/Subtype/Type0/BaseFont/Times#20New#20Roman/Encoding/Identity-H/DescendantFonts 515 0 R/ToUnicode 516 0 R>> +endobj +515 0 obj +[517 0 R] +endobj +517 0 obj +<</BaseFont/Times#20New#20Roman/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 518 0 R/FontDescriptor 519 0 R/W 520 0 R>> +endobj +518 0 obj +<</Ordering(Identity)/Registry(Adobe)/Supplement 0>> +endobj +519 0 obj +<</Type/FontDescriptor/FontName/Times#20New#20Roman/Flags 32/ItalicAngle 0/Ascent 891/Descent -216/CapHeight 693/AvgWidth 401/MaxWidth 2614/FontWeight 400/XHeight 250/Leading 42/StemV 40/FontBBox[-568 -216 2046 693]/FontFile2 521 0 R>> +endobj +475 0 obj +<</Filter/FlateDecode/Length 3968>>stream +x��[mo۶� ���j
#J��0HӮ��d]����A��[b���4���J"e�vr����m���<��!wz�\�n��J�����jU���X|:���^?.���d6/V�j�����sq��*�Ĥ>> +d���<� ���Q��D�4��΄Ncd"�d�Ų<>�����i�����%���-��3Ԟ�^]���D.�o����?%T�e$�\I-���� >�}�Óh�n�
^�]
��?��A~�_��B���9O��D�L=�\V�=� +i�b.��`6<I�eY���^@�x0&���4B�L�o'pi�aI�^-'��$�����Z��}Z2����C͆Y֠��6�7� K!�<�8�1�o8c(����[گ� 2O�qR0J"��'�q��qě�+Ľ�V��އr<y�[A��\k�2 +i�O?��������^�<�A��s��Nm�L����j��8L��%��+��7kr����U�����b���`��W����3�Vㇺ�F=�����x#V#E==� +��!�a��W��2=�ifIj���aMupp�49��V*�aMu�o���[ +T�*T�q[ā��`I.#T� +x��Fh��j�w�z��)mܵ^���n�,���ao��~����e�u���M�L ̚G,h3�(�ypA���b���f_�'9�x\�Kl�eFӏJ-����[c��|C��� )X;�Nu�K^!)���)�c�/��P��P��'��{֬��R���8�-*� +���w���$��ְ�fUB�E��-�p��D�(ji(d��ޣo�43��/k�[1)��z��/w}���Q�<ê���'3��7�h��b`/�5:/Z�#���o�{�Φ�3�B�gz7i�<1�$Vh���x��6�H�}�J�)m�qG������ �@9"Gy{�2I��n�ٝ�ŃR���?q�k����d��dғ&�k+[�uЭ���?���ZaqeZ��/�/W����aS]�G�b<n���U薠Q��u���ᶉgj<��@�h� +3�ij +(��E֣�F��M +s���&����dw<TM�~�e���w�Veu���r(��zM��W� �<O�Vߧ������r����P�W����Y�
B,?O�Vߧ)�������j��/���^Q6������r�4� +v���cb|����D,�G0��} +X>��!ub~�yX�z_�Sά�c�6rQD��,iw�7�� +��!��
�ɐ �l\n�a�m��&Fe�0�o ��qK��������R,|����l2��D����3�]c��W.�� +#D�������<$���1K��F���F��_ ��^�sQ�i"H����rf��["��QN�N����+2)/^�!︠�#�1Z��I*2�h��ۍъqk�>�݊�:�(����>�wv �5�}�ST��;歃���mb\�Z�<|�� +�����IC����Y������ބ;�vD:�M��Ӗ&����r�=/Me�8Q��ݶ2��VOA6���>�C��K*���C}e<.�Ӹ��o0 ށ�iΰ����$��s�4���Z����p�s +��� +9��ʳ�U1]I��;ʻ6�ax��V%�9�~��v\��w�:�Н�p� ,��eK�}J��#����U�&�<�~�Ŝ!�S�~i���!�c��Oy���̔=�'�ZL�� ��`�<����zPv��k+W1�$�3*�M�wȫ���9 K�c]ϰ�C!l�������$�����)��<P|���2�Pc��4Y`�浠J�%���-�ׂ�S
�K�� +�X�J]:�2e)h�����v��m㴌d�9-1'���%�������HG@ܠ�H�P�ϫ�l̔�Tg�Dk��@9愲LF��m��89���A�R�'�
��%a�lo��&nv:j��Ķ�Kۉ�� �[���� +�t;�~�(�M����@-�������c&��.�8���\��H"[�EK��4��\q]�L������Z��[�W�&�� Ln��=F՚u<FsG&hz9��_����`J��5�yDZ�"W�&�ɓ��ںU�h?7�2�0���� +endstream +endobj +474 0 obj +<</Type/Font/Subtype/TrueType/Name/F15/BaseFont/Times#20New#20Roman/Encoding/WinAnsiEncoding/FontDescriptor 522 0 R/FirstChar 32/LastChar 121/Widths 523 0 R>> +endobj +522 0 obj +<</Type/FontDescriptor/FontName/Times#20New#20Roman/Flags 32/ItalicAngle 0/Ascent 891/Descent -216/CapHeight 693/AvgWidth 401/MaxWidth 2614/FontWeight 400/XHeight 250/Leading 42/StemV 40/FontBBox[-568 -216 2046 693]>> +endobj +476 0 obj +<</Filter/FlateDecode/Length 4163>>stream +x��[mo�8� ���CÈ���"@������6�{@�[N�Kl�v����̐�HYR���hbK�p8�y��9>��n�l�^�:>���M9g��/W�?�/���������ݮ�''���9Kx�r ��V�3M,�\˭fi��ΘN
O2&O4۔��|�Do�?����V�$e5��G���.�� +�����` �L$�+��kvy�ϯ��O��&��HM.���������o@ȯuH%��=c�Ё,O{�y����gH�dS3y7U���Q:��'�b�Mn��5���R���"����q +K�9zD�q�3x��n>�F��9l�y��߇�&��~�j�0�-�چK�5�R��
$��A
�G4��Yߜ[S�5�s�IaQ$��*/'A9ɾ���9;����n����67�j� �x�5S)W�F��*IN�I3��[�r�����Nuӌ�x���j��}�N6���7�c���r��P�*j��#����8��+�x��D?n��?l�o�ӵ���c�bUq�Zv8�O�Aj���k�5OG6��,騦 +?��5��覩�T9����M__� |q��#}R8�I��C�i���~VL��t��x&Q<��&����<��}�(��M�z��j�;�Hy<��� +15��-s9=�&7%��=8Uq?fRn ?���HN��G���ޖ���� v��6��>\=г���>\m��Z�>�B�#�}(�5�r�����������MAڰ+�Q.���Z�$7c�X��iB �dK�����֩?H��`8�r��)G���v����G�S�{�%�p�D�v�Œ +���ݑmg7% )^0ң[�эs;/P{�*�����j�M�<� p��p=`E,lM�� +��o��-i�,���Lu�M��g�Y1!��d+��퉈r껞5 +)s�+��D'%r��̭-�l�
��m�������L#���.�LW��Y�m�Ʋ�d�,�=�R����@!Sxa�/� +�u^�7"I���Dh�a��v��H@$��WçI0 +���X''�#,Y(���Os�/��
#|�i��r���α�S�כ�W"K���R�-�rL�_��CM*65��Fh�O+�>o�ޞ�@B� F��Mc�� +�������g�Wi����g�"��C+��0�
��u��C6�9�A�g2_U����fhyG�2C�w��h�%)DK�L������uq[a��3t��R,�-)��$U:(Nu��[��Y{'�Jz�������[�m��{�ʨ[b�+�!Wd��M�ϊ�J��%U6a���z���S����]�m����{&r|ϝ�}g��ښI\��dh�`�rǠ yja@K�nHa+<��lWP��Qۯ�#�7��E� x�כ���*����D`e��@���2�"��7R��2E��x�ǟ)�J{~nҴ���Y���irE��u����n�����
���N��ڳ@c8E:9u.x*�_s= �"�G�`Ч�{jFR<j¯�R��j��Ivc/�f$t�jPZ'CnLL,m�HW#����{pwy�,�����H�����;>1{�C �;�j�o1žt���'i8��$D �Q��U@I��Q�"�^R��YN| +M�瓮�?��Ԅ�\���/����dF��U��-��!gא�ʹ +�%��v���N���5�;��L8���3`&����ICR]������;�;�R�L�{1��/���gvܔ����q����gս��K�qC�nQGm�K=}V�e�^+8L('��%���e ]���
���� +W9H���l����\�Ͼ⎳��
�ƕ�a��|�?�٨���������-�h��'�0�MkW��D35��tf&l?��A��c�0�`^�@fM4D��@J����\�}g�JX.Ө�pfV2L�;����}IV�%��`è�w¢�A�A���#eR.ҿ!Ӫ���g�`�'��2��6�ReZ3(�3��L��:��˴��ġ�у�:������a��G&Z�$����)#�JQ�hŵ睢�
��ysO�+�ՄPN_� � )��nw����8J�}O����ȑ�SB��M�R��)�1���wI�W�W�\Q�B����j�㶄6g)���,r��!�����5���]3�M��i�R���@I��{4�8�i���7m[[4��c�c�
bq&���]��E�¤�4�z�B^�-]+_K�p!����A�,�\��_�o��l�.�J��zlw�U��H2R�q8��wUVZ5��Q��j2�#��+�a|d�A�]�ߛ]��*%_��kh%'֑��?�������Q�����s�h�TL���G"�c�gB�9ø�V��P��qe�C�2��r�wq�����̘�mh ��
y�����7Q���(�5����F$�Q�'"Mf��4F���zSy�Kn�b,�t���zq�-齃�6��g�H��G��Q{G�jWL���
��9�Fs���C�˭nyi� +|*t[�P{���ɩ]���rz[oh��tn֖��#��G�ݾt*�L~���~�Ѧj8ó�j��1S'���/���m}8S��S�@-��V�aO��<#�[���Ϡ�_�־2��~I�xo����m�nl]ǂ~�zQ#�X ��Z�����2P���t
��j@��Ȝ����J@=�y�T�% ^�\_S�v��0��g�`tٽsrj�}���y�1�����]9�q��r��ġ�"�=m�ܹ�8��~��`Ȇ]%(��XN��rOw�� +S���7{�Tww��v�Z$�Ю����>W$��F�@VC���Esf�=���,#����85\�a�*dk!)�d�q� ��^�j(��$|������֘_�a�����,��Ff�f���*�����Ԥ��,�U���!�7q���.����e�= +,��4� �)�C���]p���AS�)aƍ���u%���2�~w4���(�����c�,�� +��p�קh���+�(Zv�E�gA<�v���
��o/~�������B�aNq�xM���pua����*ш%���+�r3� +endstream +endobj +477 0 obj +<</Filter/FlateDecode/Length 3373>>stream +x��[mo�F�n��a��x�i.w�/�����.Aڸ�A?вd�j��D������]�r)-%;A��l�ܗٙg�y���b�.�մe�~{~Ѷ�t1�a�ί�������}u�\W��^�{��P +v�==I�D�)Kb)�̓�mnOOTg�先e�d��`���6�ӓ�_OO~1�xpԿ��֧'Y'��2�Y`�+��:=9�;g%����p��?�x"c��ǒ]��9���t>�^��|�̢31y������?NO^�r���"��t�����n��y`�wut&'7xB:&���m$&��,���M��%���j��2��4B���'p*d���I����ܺ�?���kn[�8��m�J�4����Ԇ�lA�Y�_Q�"?H���1����*�q:��h�����['�� B.�: ����^�� +��m�U����bp���K)��c��Ο�M����Rϓ�ye'�7ϓ'١E��-&�u� +��.�6)�Y}*P�y�gU�X����S����`���߂�a"����&B��q�WVB・�<��Q��s@wpF�!��eh�B���J O��S.$S�����a�ee,`Q���@�U$���{Cj��=����7/Yb(��iF]#��BbR�bH�xj�Y�{���2�]��\�(��E�B�.w��lP� +�D�9�+&���լ���MoZT
)���w6�i��=q����4�R�ݘ�&��UMX�}C^�_��BW�`}���B����0C�1�$�+� ����j[���3L!�a��oM�M���]`$�!��e�Ma�lu��(tI�q�]�m�Ovʤ�{@+���8s��5Y��3sV��23��D$5��(I��[N;q7�OϚ�/9�V�N���`������ÿq/\xھe���c
��w��>��vf�[C�w'TZ?(k�u�
ʖO�ss�Mw�c��c6��[��#�k�i�AV�P\Ry\r���8����ַl2[���!�BC�C6�:��w^�4 /��ù� ������x��"o")�<�ȻC+jM��������uo��T:D;�t��EBۋ��>�@�_C�I�c`��9wL��eH��gZ�M}�z�����a��g�׀Y���Z]I�n��9�f/\�R݀|��������9+����K�G�k�^�r4���L3`^J[���(i@qktGXh�0�Ĭ��aT�C�f�'�c! +�M�(�a߿���C��,&�V7��ҫ�-��Ԩ�q�` +d�^.��Tw�M}bBl!�a'�r� +ӜrO���qb�v��bR +� w]�g�����G�Xr� ��DV�ģ�*e�RI� &$�S�h�]Yf+�4r���Af�m"��)5����U��t���;]_��J�0�5d�;��k�B���w�!�&\�ԡ�/�Z�9��Pi+A�4�.#��#�����|vt5ϓ=nmz�=�0%�G��*-b����οt�j�����kۃ����Q@3w�� +endstream +endobj +478 0 obj +<</Filter/FlateDecode/Length 4112>>stream +x��kO�F�;���_2��v�_�(a9�K�B�{Q�5���˿���=���NQ�����U]U{x�nfӲj�?5MY��7����r�����>�,og���-?��~zw�O� +�n7�{Q�"fQ(���,J��v/I�T�,�̙̒0�Y,�H�u��7�~�^�W��=[��qy�R�� +v=���,��8�� +Jv=���q���qRbr�wGW�����{' +sx��u�?��[[�0�����$ +�!=�-�J0�
�:�E�
1�3��b<=4�oxb�0��C�/��H[p2J(dBÉN�
���5��~Z6�r>����CA����Ld����?Dё�����ξ"
�����'n�K�0i19^�P��l���Y����G���䁔%�UELVֲˠ +���|�@H������'j٭}Ύ�3�z�?N��|�ax����)����W��F��_t�+�s�3p���pb���g��E��]��6����r�Q��D��#�|���<�)�a��� +���l�7�r��ڋ`�Kg�U���i�<e�;�������XÁ�s�R2&<
�o��_�1���Pח� wα��4sj4��d/��Yު�l"�2�^���4f:�U�I��FH��P6�� �nt�t����b���3��YB�-�6{�r!�'�&/{=�/�50�m:�#���S"��2��D �KS��>�I��R��%S�`�}�4�ٹ��
y_Q��2A^�p������������V���])�l�6����o�-���69</�lR/�ٍ��w@��ʦ��h��W�V����rRڢ}�Ab�@F�mg�X0�5�M�3�O���P� 20�[��3'ݑ9IV�I�q��{�S2{��e��`�k��1��@)�%���ٙ��c=���8�ٮ�'I(�.�qHmD6��h턱� +�F��)���XP_(�ssd���ae���؏3$ߕ!���}�6X��?ҝ��H�cuB�J$[1Ɓ$����8�]9eة�p�']Ӊ����wj�l� �������i{:�4��w"J�=-�F�G;rI�1:k�%ȇu�h��[E��U���[�)x�7Ĭ1�r�/�q��M�8�j��~C�$H$��e=�c�TJ�#^].��}@,Y<Q�R&]6��{�v\�� Y�u?��T���-m��v������Q6�P��r���Ԧ�Z��a�f+�x�)������䊾/r�`}k]|R�x�WU[���D0HA" b�>ڰh��H�I6Vr],��z@J��])�"���UF5�[}��&!�����;M%���R��Ҙ�x�<���\o�m�!g��S�՝����)R(Mu�������僽�ي�R)���v~S�D!Qz��E�g��(�]"�0��Kz��(���St��G��LFn���i��RRF��X�}Y��a����{����9�փw��PX��{�X�a�z�(�b�@�^Q��<^o���pH�o�E��w䞸�
V���I)���t +Ѱ�o��������F�Bu�THŞ����;�B�ڂA�iA��Q�ڕ)c'J�u�lGy[��jy�������aMi[õ>�d�Y��Ɨ��Ϩ��������/�4�6� �J�A
�Ý�D +�A��w�$TA �R)�븘!$S�PBp%�/̴|��]x383��x�C���1*���I]Ấ5 ���Q�s�������R]��'�qA�,��yA�g�����\���wG���G�� +1=kI�6�'c�ڕ��g�������O��X�b''tQS��ei�J[�h����g���f��!���5GD�K:*27�i˰_�6*���})�fH1x�ǴO��:�:������j&�:%��tO���;"k�*B>�j���;��
��la�����W}/ɞ�Z�S|A�ccP:A��m����A +ʱh���M�����3�y#r�R��v�A��� +U������'a�Y��p����J +endstream +endobj +479 0 obj +<</Filter/FlateDecode/Length 3851>>stream +x��[mo�F�n��a�/����@Q����E����@ZhY��Z�#�q��o^��]�K*�q0`SԾ��<�����t[-�?�trZU��v~->�L7��L���'ʛ庬����?��g��ɛ�"7�Ã��"���Tlo��Oc���"�?�E�A,��Ãŏ���F���??���A��1T�a�jd���Ã��Rb�8<�"�)d��� +��b����|�_L���������;�&^>9;����_�a�����Q�a{�z��g�(�3�<�7�q<���6��L�y�d�g�|�-+l��/�m2Y{)�z� +d���2�Q,�"�$r�0 ��`�8X��XV�������w�.�D`A� +��Ovے�a������#��<�P�i������� �J�ԍ�����+��[�<'?��&ܹ"p0�9��YR~{��%�Ǎ�^_J�Ѓ�f��%)8Wג:z�+����.<)'��1��s�����U?B�������B�?�qo��QN�^����>L��mI'��~�aH2Wsl'vԷ�X��.X��,�{�
���uPw�q��'$�d���� +��Q=�����I����:~�4i�@{��(y=��{��%�a���(��;[Q�k��1/i�-u~G�$�hM$d��N>�C��,��x1�ݑ�����>J�IP��|��Qc��JOC|�Π�)
$(X �7���V +��ܖ䈒�p�i�18�����f��Ǎ2����4FN���vV��<�&�̞uPaB�¤p&����Jj��Hh��1 d�uE +=�H[�55|�N��o���S=�X��Ķf��ф�F�Տ4�
����'@�j��6��^�� �-9O&�<��~9���%��� +O�Vӫ)��^NzE_�Ζ������C
̈Ab=��L�R�}D&-1x\8��)gH v�C����F0���L�P�+"��1�ӌS(�`�A�QP����`�ݯtz����kA�P� �|;���d��
%D��v8%W�s�Ak +���4��r"?�*p�|�V8c�=�A�ܝ>�ж��ݔ�O]n�&�3hb���"��Z̉���&*���Hd���M�i�2�W� +!����>)�B ��ߢ�0"��fJ����͈�E�Rn"�MJ�帺o�0�Z��U�ۉ�aJ9"z�o�#����Ҟ���P�2��G���Fc�(�'uݥ0f4!�@�H�|5X=�jc��������aQFE�>����}-^f�'����TY?���l�˫���ں��a�2������{(Պ3\dltl�1����s@�nb���]��S�4��;fTv�V�+0
a��6��a��/3���ӊf�̣L G�2�� j�*9���d&�R������pҼ9�6�V���UZ�P�M�@�1[���w$�.C�6�-�Z�"����^��� +�+քi�Y1�i����a��ǚ�/A�5�sbs��<n!�jNS�ֆ����8����oWd��c'���7��tq}'�%�+:!�M�Ӯ:h��8���Ē$�i�m܄!����e�=�ɝ�X�#���k&h�Qi�����|-�XΪ#߫�gD����5�� +?T�9���pĵz��B����Zc�G�u0Tj��X����9ߌ���(��T�c��t/�����,�N%j��[�N��H]@r�_�4l��h9���:���.�bL�g�}�;%D����C��ѻq��o1�w3������^ȕ���\�s���B���*�k�Nas}�vd�6c�ޮf�uz�ܩ$��;&YkMJWtn��6�����+��+����0�t���4�3�Rb,��9�E[gYD�[��6~ki��f��7')gC���]*
V�d_�JDH�%���d_�J��e�(���8�k�]�B��;��pJŻ�G��"ެ*�*mV��]���� K�g�8�L��aN�*��ɱRvs��o��N6�E��Y8X
��0���(��Z�R�qP�寈.�]Nڷ����t�_-����\�4��^rB��:�K���x�s?��.�\MG�yԂh���5�\o��-�䍍�L���� +Gه��3���w.: �d��)�r�e�U�K)����ַ�&�r�d��
P�8��R�9���x��l�|e�P�g�'��C��F6Ӂ���"u�c�:��4��7e��ʅY�vU�s$��t�ӑx�L�m��x
��ʀژ0���*_�6+�K%gt-䒢���_Wڪڅ��qDs$Vv�lœ��W9���&A<�xmk-����J�j��3Zߕ!6������o��o��0XR�5�:0�6 +�B]�{��#m�v@�Ui�s�&�� �c}�Yɓ� \9�%#�ܜg{�k|"&���u�� +endstream +endobj +480 0 obj +<</Filter/FlateDecode/Length 3960>>stream +x��[[o۸~����Z�"J����ݢi�ۦ��>(�s�Ml�V��ߟ��)��{�8(��93�|s!{<]��Wͬ/^O۶���/ŗ������������vѴ���ɉx��T��Tg�zsx��IV�"����L +��><ȋ�P���XUB�y�T"��D������_�_� �ǿ���H��!U�8-�vPzy~xp���8�:<�"�R�Dř(k+q~��A|\���I�����de��Q5y5��)��sx����O�gi\�}���OeT�e���et�&��BZ���ɻ(��FG���������OQA��<�Fh����N3�m8'q������$���lk'����ʓ8
����Yo@ׅ�?Q��?H�"���"�<�qZsoi�9D��蔰))�Pf�N�t�m:��;@� +�[9n~�]A� %XT>i�dJ�D{����HOq�CR>q��<UOz����o@B R�ӳ9S��E�l����)���=��u��<�o�WO��'��U�������<e���4��v|�"���S�'�����1=�]`j�r4��-�<��Z�Z���\BD�"-94�Eg!wcv�SV,X����e��Ga���Qę$g�=��;�QAsiߧ4 ����b�� +���9-�iLU͊����Ȣ���HF�!Z��d���]��0�v^k�!���nhO�Ŭ�#�J��CnɌ�"xc��^U�^��e�>w׀�|lXA�6������m��:m�!�;���9���>r�ݐS��}�����s'�$��`�+ +Hw|�uB�����O��4��2��}�X���
(9)�%�4[����}K9����%�?��_���M+P9z7�2�xO����24��s��͊���9�/�p��0��s�K&@�Wv�n֣�`��c�*n�� +�����g���pكj!��w8��yԣ�V�" + +g��zX^�q�ker2�EH���2%p]QCC�F���X�ݷ�@�����7)��7�y�~V@1cn�����ݻ#���G�ֺ�ブ
��W��F����<�U���r3�Q�5���9��pklY�+X�*�.�g翲�A�OL��I�mLb��U0q��z����f���y4x츐W����t�ZQ���e}�� }s�]�wY�eʄ(��ơ�s������o��H;,&"�w�D��>N +��p�{j��w\i��ȓ�ht��[&&+kHx�+��Bp�
qm�������� +uK���{d�K���S�'.t���%h� +�~©;�N1+���Hh�ET��:��j:T�&���Z�2 1��6���̠q֊�oa�M�Y�V��O{C��i\d���6<R�(��A���]P�6�Ȯ�l�a{^�[���Z�V���:*�V%�wf2
� +�(��ko�^�n⿈A��P-���q;� ��&Yx��n?EBn�r�i{'Vڞ0���s8o��N�p��5"r�*���G���2+��G��r�$��l�4�_Cs�~�W����JL5U��^j��I/f�0,b�ftMooZ�=u$�������r��C7��1�WC1'�x��]���9YV�U�s~�*g��PN���sO���'F\��)��r�l���轏�ڥ(��p��s'Pq�B4�c�:���a.��
{� ab;P#��r�m��~&���q�fH���>�齦NX�+��=\��V�|ש���0x�S
d����B��'�uřX,��={�.�@c�!$��am�߲�C�����f�C�n>��U�²��Nh͟�WGMM.��u�_����y���s�fI�'��eg?���˹�f7� +'�*]�a'�T���j�T�ob���}=���^����˸ g�g��ZL拣ϟ��Y�ܪb�煽��"I�j�~n�ѝdw����*������$�:=�}�jzrD_���7/�w����I����+f8#���+�q^��/����)Ō�y7��%N��f@o%�Jd�WDzW17ZI$���nP����)0 ��DK�d�j�<��x ��T��Jos�<����]ߢ�,Lz�$(tsb�H��O +endstream +endobj +481 0 obj +<</Filter/FlateDecode/Length 3819>>stream +x��ZYo��~7��0�KŢ�9�Y'Ms�i�ih�ZZk�D��g��P$%����,��Ι9��i9���ߟ_�u9�W���f�����iS�,g�UY/֫~�^_���E$f�ӓ��"���͂Tlg�'I꧱��ȏsg��"�� ���d����?���m��7buz��~`
��~��u`�W7�'�?JQ������B����~,n��~�ޞ�|U�Y4z����ޟ��?�'o`�_��)��OÞ9�^t���z�������wH�^2z�E��w��f�f[��d�m2Zy)�z{�f���-8�b-�Zq���i;k�?���KN[�~��ߧ������7/f�lw ��V�� ���zV��>,#y��@�yߞ[[���/Rg����H��8��8��{���{������x<��8Q�G!���� ��h��~q�_��A��s։�L��O�)F��
�����tKr�9���}sO���M%m�g�^��.~���%Z�Y��>��/��m��~�=_��(j��UxPa����!�c?;�i +jɎj��qM���Yzl�X����5��v��������u����P���}D;+=��y{�$���8�N�ԝB�!}�W7�ϣ(��&A_v�����"3����?����`=늋�n��xxa�C +d���2�Q,�"�$r�0 ��`�8XS*n���E��8��p����k(�sMQAֈ�0��8�}Y�A�F����kF,���pya��" +�{/9n^U��2���;�<����# +�� +� ��97���B�1yx +��
ٖY2��D�g�EcXP�1�X�W:b*-��!�i{]�E��V_���#�9����*[#����SZ�dg�B�
s���P+{��a-w����[B��0r`��%}���bI>�l�7� ��t�.嬯-�I�a����nL`�2ŕN����y�<3S?I���)!O ��x�j' �gE4��u��r[yd.J�K�=��fSF'^꒖�̠j��=���i�6���f)���n��3�%n�1��߸��r;� �g�ђ�N�pw�$j�����;]#�$�;˻u��_ٳ4�~�u��*m�;�vɳ�K�\���)�t�� :%0����@�� 7s#H���[]+r�{�lay�忽���J��n����9=�5vET�J Vkn{���,MP�-�W0�1��hc���ڎ��6����LJAs���rA���GY��I.K_ +��k�A��,'F_�X�����H�?g����rImn~��O8����{2�+���I-�z(D�+b:�=�W�`[ܚ�5�W��(� +S�Κ���fJ����
�3r�]����Ϭ�H�y�N;��'�LB��bHL^Җ�H�H`eI�l��TH�LlEPC��z�9Ya2������Di];뼤��-�}�� �˂�Ϊ�ыۉ�uE����+� u��R�I���j�{�7�z:�Kb�#�~:�Lʠ?�Ld��Q�&>��?dPRv�I�'���R�G�O\$~��?����o96).mg��v�x��0��퐣���#[a{��E;�v8�����d8�f�����+���H��w_��@�l�g��Y�t�2v�V���Z}��Fà����LS�)�x�s������r��M��Z��!E�
S p�H�|����.
9uFT gWR˪v
�f�L�JKʤ�m6~���� +@W�jY��$�8դ���5�_$&_�(Խ�y�糚h��e�6�U��5�V������^F��LL�;1�P&�Kb�R�Q��
_X"�S��3�-k���f����hΈ�J��␈�U�jc�-�zK�C���f�1M���S�t��vHҷ�d%�9V��a�d����v:�&�'��%�&-ϳ�^Vz�L�x;%X{꺏R�U�����tH�q�'�Z��[�+��{lj#���ғ�X;jlXr�I��t�]X61\�V���/�J�*��}/ʀ�'�8��iW�W5�Xď(S�%�KK{uг���<'ww�ժn�ڊ���� +DA��R��ln��ū�6Y�kvC�wu<X�������#/+���+����æ)<�d)�1�a��(6Bd'7���4Vyy����@l��9�i�'#�R��h��U��7�W +?�9��Z&9M�iksg�m��=�:������m ΤHI�d6iP��=�+n�]x��b�e4�`z�_4��]�q$G�Q�����צ������5�}�GfL���E;c���&�Q5_Zt�v�4+ݪ���8=�;�~S�Q!bЎ62�A~��c$*��o�^#.�Y��G���dp]+c�ܵ;.T
p�锦@�o�ޘ �> ��J�o�"�2u��<Z�@�k������1�/�t*n�4�4l X{Qi�ԳO���m�6������q�y���.v�� +
��q��k�M���/�~&�r�:�3,��P@��&���G���oI>�&;�MJ�Q�0��P�FmBr�TG7�����0#'P�ev�$�6���v�����)<?�5����0lJ��A0K����mu�j�1�R�#�aH�zj�aT`=J��:X�ˏ�.a�u�g߷Y��&TM�j�x��y���\��T 3]-�sf$�y��>q����cm��jMt�s,l>T���I�V0Ӝj����v��t�Zt��X�~l��1�U����U, �� /��1]d����Y�{����"�@�1r
�u���'�FM0����3J��z+5S��s���͝���<�)��oi▦�5��OB�E[!��P�Cq�OM��I�I:�^fG��� �;���0_�7�f��6.����KC?���@&Vt�V7�uqw��[]�\ +r�Vɑ��#��O�*��j�6?��,=�%��Ӓa1ʂ.f�Y�D`�,F����`���õ���ͺ�E��%���{ߛ꺹��Z�K��^_�-rp]az�Q�X��)kY]�x�RD�g/kS���\�g",7+���v���� +X�w�k�:���l&"H|��.w0]'[������-�6sQnyh�i�����匁"���Ft�H-/��*B��q�̗.�����y�U�sέ����������^�* +^�Ə�?�����@����ߚ�Q�WV=3�Q�_�]tgJRU�Zg2�s� +�ٜMџ�c�8֗C��a!X�ƿ�e���Cb��?�ҹ �5ۍ2��
�MЗ�2c�#�A��Ƒ�[�/�=� +endstream +endobj +482 0 obj +<</Filter/FlateDecode/Length 3703>>stream +x��[Io�H��(���F\fq��@g��;vw�>��,�Z"�Y���[��E�EKcD�Z^��{[����^�ǓZ�����O�gS���v������vv~=^,��z�Y���xs�V���)c��NOB�e$B�$1|�a&v�ӓ4�Y"�"�I!�<�a!�X����NO濜�|у�w�_����I��Y*Kd�y�zb�7��'��T����%B��� +��T2�+|���:��OO>�f�Y<����7����_�'�`������HfQww��ًn��ܳ��&8KFS<!S��c���Y>Z��ݸ�!K�Ʀ�u�Ѩ����g��Q�H�
��P��n�|�D�ܶLd��߷M�PF>=�3HX0� +x��"xA +���CA��K #}��P��w���~w�e�Z'�D@B�uB\'�_G�����7��ެ|xǛǝ�,�DĹ�#���a�:��ْ�%�ye&è5�E'N�C�����lQ~�h�D�$�ǏZ��GR�@Ũ*�hk-{��8h�o7�u��DKx��Ke�h&�
��I�l5�q��Û�I>DIԙ��C�$2?phb����aC���yv��D��D�
M��Ћ��?��f�O.�2)�X�P�v�]���Ե���~i��0�Nì��8�@^�N>���7M���Y!���r�>�ȟ�v{gD�����MgU$Ä}�X)TQ�k�HʼnH��&Q�� +�|L� �ֳO`aV5.�Ǥ���\��~��pW���@�얐O��%�X!Sh��(��1~%:����/3s5�ڝ���|��7[��dI���D&��|�Z�G+>��f��l(aB]��v�z|]�� +Oq5���\5�i��#1��G�G�����PbN���D�u�m@�H���l][�e�� +I�7�h�������2M4{���c��.(W��ٳ��ʨ�Ѡ#�<aF�0�-��0#?0�� 2n��'?�'�Yct��)}G�_��+�x��������Z7��/i8e�kA�ޑ� �4^�2:a��fm}>��1[\J�ZP�"_&P�~VNj���N�����T��!��j�p� ��F�ʤ*�"��S�<�9� �A���4� +�'я�B�Ĕ�T`Cͥ�ā�o�fY~���B��S��q�� ͝�@^���cta�fO�{�ۃ��@���`��Ơh �P\���ƨa�V�aL��54��"m�Θɨ�:���Y��7ܛ���
9Q�y��De9��B�&�y�H}� :�_o@�dR�� +J�;����㺡�؇@ݎ�؛q +iFRT�� ��;x��}P�#����2n��Ma�������cu�5}���:U�$vnwb&�lK=�db� +���ջ�x�"�l��ϰV�~����~]�s�1/��9 ��-����U�^:ۆ(i2W��=����bc����E*��}�a����B@"��M�m,wC��`n剌�m��E_S�;b��h������:�kM<�ln�h������_W�3���e,Z��������}Q��E�d�\Q8s��;� +͙{��܉/gB�J��t0mO0T�; +�T(���}�DϒH�d�\�8s���;��٦�rcK/$��
��k<��=�m$~@�B4�i�%?Kaa��%��=N��C%qpW�r���M��� �S����2I�#���ϓ�;�(��&��u���W-9ڃD�,r���%�>K"E�ׂ�'g�qq'�������y�(CK�}_.�O.]�de��^r ��L��l�'���ګJ��K����W���Oxi�/��'����X}��-�]�4ǔ�%ҩTq"���K���v�)o�\�sn�~�t�^������5�����yX��O���M���.�:�3R�������B�/��V�K>�|B$|�:��0�Laf�_�_�8�;w�HJ�b jT�fwGBs.��V/C�~#�Dp�W���1-8��̅�a�� +�Ӳh��/T'r�Pw�`��:�6�ֆ�F�����l{W� +<�W��a�����q?��me��o�X݂�fC�ݧV�v���O��Tq�����A���b�_�n +���R�� �1�W�����&Lk:�����2w`�풩�5h w��0�z����U��������[��B�w{��@�2��~�os��ڀlt�w������_ r�v�R������>��������ڋ��n��{��_�C�h +endstream +endobj +483 0 obj +<</Filter/FlateDecode/Length 3612>>stream +x��[[o�6~����������( +d2�i��"m������r�N|KI���BR�,ʞ6��[&��;�g�z9/���曳�.��r&��n7�_�n_���uq�\�r���[��݅8{���:=���d��7���?=��D"�Be"Jc�e"��]yz2����Z�;W��+�>=I�Y��H���JooOO���\��OO|����H�"�}��>��?�OO�F�x���������Wq��ӓK ��_=2d8Μ��A�L���O��%$1�8}���x����ɮ�q�~���h=Nh��G�-S�_�� �$z�ű'3�iw�|����ylI/��Ş\~��qĆ�U���6�+r��]<]�+�{��\2wD��""�E'��B*:������W�{����ʅr|xؑ �dE"Le��w�x�y�ms$�:��DzAk_�O�d�f2n1��l�^��h�İ�]��Z���Gr���������b���`�_l�� +���,�[�*��v��qW�x/VC�=�
�!���>��(��K0Kz��?Ϗ[yG/M�c�F>�Jp��(�.}w�@��ֵ#=Hm�a��� ��F?+��kQ���b/��qn{I�1���N�Fa��惽�]�w�⧲-�؟�w;w �����$�,f�3UH��H��0qC�$2��`�%��h��)�@m�yV��5qv�p�����d��&���k�Y )&�c�f��= +~�}�5s��rA d/�d2�t�����9���ߧ� >�[�聱��6g�řa&��mf�F��#�,~�k8l-��?{ + ������]��(���v/cnHJ��X�r�[;�ѩ��J?r���Xό +d�����u�Q�Eج�r�k��cY�hƏz
"_z��hOʷ��-��&����� �C�,$D�կ�Β���.�gD�@�Aj?�$�;�����V����"!�U��t�F��uSEKT�@�sx�$����)�N���щz�PX��2��bEF���ݘ�[�ÉM5�����t�)Bm�hEz�
�f��~�e��{�]��l1�Q%����C>���W�� +��$�z�L�2�T��j�� +�@�Kt0�:�~��s�'B-�h�O��VXA��N �,�>����P� �C�(3W*g�o)�ԁ2oͩ,�@t');�D���+�~�4Z��Kf�4-��y�0�bf0r����%TɊ��B��8���Zy5�2��ɥw�K��T�3����A9���3v,*49鄢Q�?��11X�g�����j�I��ժ����&��.EF َqyѠ�Z�v�I$T�}g>�x\�y�xx�ߏ��b����Q����
�m�Q������.@�@}� +��� ƯλUgKg��8ei>��@� N����9*�RK�:�n�٪�%��{2Lۇ�d���"�����nB�p��v�UK���O��KF����3�M����R���v���Kb���͏7�2��|:Q�v�8�e�����(Vȩ����lI�jA���MF_w�&��,�#e����P���J�?j,Uk/JU�9�pJ��*T��6@��SH�X�yÚHn�A� NR�Jo����`��,���J�di���%��h�0o/cp�Z����������]gc2W3�*:�(лga[�A��}o@�Ӥ%<��zG6�q��(|��7�[[]'�5��rL���q�6?)����$�^nKvg�gԄ2�� +��N����^�!v�����/�jA���,����\�#�y[�D���iձ�Vm1v8TIWL����'a@"
�o�`����C=�#f�r�G��|{f +���2�5:�(d��;l�*É�EA���@��ʍ��c�M"@�bw-�6�Xh�j�C�&m��RG�XYi��hә�� +]+��46QE!�\P4�jk�J��ԅ�x�)9���XPQE��Hq����y���Q@7�-m�D��(�q��Lw�7Ƞ�|M��m�W��J�.M�NД03��%��B��G
j�@>p��=)�FmS, +��g�R���x����5Fa����P-�T�U�.�Y�������yBOV���Ϫ�Tۊ\�5o�ɟ�@����3�M!��b�O����,ӽf�co[P��Ҫ�U�Cl��,C�vl�r�"�w��xy�T��fZi�ڛq�d
f�TY��X� �[���6�����]>�,��c�}����`�����4�����
�\f���sF=�T�B��֥�#�<jf�譩I�|퀯�T��b�����ړ�����jD��ے�T����@�-�̗߱�m��sٮ���f��4��l��?�x(���?��7YY�>Za�ڝY��in��Hr(źSD�ߖf8��P�醅�X=�]�\"�W����x/Ld���M\k�>6h��@j����8x߸n�2�z0��qUl�}��jd��s�2d3����;��~(�����/7���a�6W��,��~1*��^����Cz������NOo�fT��g��O8�~�I@U[
i��*P�ݶ�^;��
ENc~�@����9;���oD��BB���x�r�?�p��q_���R +�1����~��퍤~��I}�����|0=K'0~���dP�4
�ƞ��c\��E2�R�k<�SOBs�����~��퍯���3�Β|��h@8M���k�o���<�$�k*���^��~fv�A���T��c +����,���9� O�Z�{�:I�����Jd��ͫZ�P�7,Цgj���2�nn������{�Nwt�� �f�����0����a�G��?�%�P���� +�̚Йp`oWS��K<Fp`� �J3&�=銑�d��u]��O7?�w��]�|�\��Io8 +endstream +endobj +484 0 obj +<</Filter/FlateDecode/Length 3722>>stream +x��[[o��~7����KŢZs����(��9��4������,�F�K$:Nί?3��\Ji���+Q{���73�2g��aY���g�MS������l���l�e�8{]�=���a���'���]�T)�۟��<N���\��q�vw�'Y�sɊ2�d��x\�$�d������ӓ�z�����l}z�'<v��%O��RVz>;=9��`�-OO��?�D,yʊJp�f+|���$�O��ӓw�E4M'�Q9�<���`�������~���� ϓ��z��7�(�E`�W�h*'�xB:&����(�<D�br�Ovu�C��M�QN��A#4L��v'�����1/��]��7��}�m+����Vf1OB~�6��0�=�:wM�
%(��� ��A���ł��3w�����ro����E�q���{��+ +J����,n������¤ޑ����h�*�-���H�}E�<��5���ϛu��V��臊n������Fk�������T������
� �)��^�q��=>�n��s<��H��IK���bhK��#���.���o�6p�� ���>��@ϐ���W�ս�����*��:�5j��]'�X!�owm8R�����~��L� +�9 +�����ȼ��j'?��^߱�b=}su��n� + +��7R: +��{��.uq��bK�� +OM<�3��4saS��ch �Ď�!��hk��=M�7D�����g �6AZ�J�vy�kq�}�) +��`�i��$��ꤳѠK +z1Hi�J�d{��`P����)g&�GU�Fi䒈"�[�-�l�(�k��.�D�e(;mE{et@�����C[=" ��h����}1a���߉�&���
�d��L���� +}�g������`5�Tn.9�^y�NP+��-:�
;�X���:����ѥ�,5!�z�(��i�����ԡ��$��,j{;J�֛&�'����-<�$b�IbhK��X�� �E�AQw����2[��q��*�@���J*2N�2�k8��o���@.��6H����FD��!����z��qrj?=�� ;bU�b��^-�)�2=��Ԫ�<��%Gv�hV�ZϩK��Svh�(ڷ1�B٥��^ +L����o�uo��* +,J<�ƣf�-Ss�,5�z��W�`��` ҋ�'��-�~c���7V�/*J[>���{�K�u�b�~��AY���/�*�T-}g�u�����aNp/���h=����� +��>I'�֯�*�i���X��X�� +endstream +endobj +485 0 obj +<</Filter/FlateDecode/Length 3559>>stream +x��Z�n�}�h�E� j;\dZ�p)�E;FF�o,R�$+_���u�R�q!����T��N�����^/�i�~��켮��j>c_�&ۻ?�&Ow���r�)��v������1;{{]DlY����<�#������GI�Әey���Y�����c��-~8>�K +��~��m��Ґ��Ri��ԱԞ�^O������M�G��/`��eE�c6���K�x{|�e4�N��;/�9���`�_��.`��v�(�i�����n��̱���;�G3<!�y��ҋFk�4-�ɮ�q�~���h�4��= B����'p�-��9��[��I~�=�-b�g��m����>{�P̮�S[�Q�<�rH���H�㎉��u���>X��"m���RB!��:>��w�a��!�������('6�Z'�s^�1�2���|�<��l)�ŭyE���1�!'N�Cs�4���wh +y�TP9(���)(u��l1x���F�IvL�K!/j��+��+�CG��� +w(7���!�K�:(���Ćj������ ��Lq8cUy��\����;��6����r�d����ӵ�Nkm��F���Bz������""����ĝ� ( !�'��{-Z"Uq�����O�PT,1�Cz�jx9���-b��%�E��yz��g�טx� A�d���;-F��\u�|���]�#l��4�:A2On��9�田^�"��������><{� +�<�G`�(P�/\���� +!�j^��� �1H�i�BĬ��C̞x�=TD����cbM�7�U�y.��O|�k����:�&/�7���Rx��σמ�V愍̅2G!J� ���eX�A��|���@�NK�}��*��Q%Z����B�%�svT�J�!�����( +��TAE}硨��k��^�='�� �n ��MM������l��!���<��Ɍ��#�(Q!�!dr�\^�L�Q��[H�B32�j~CɕX�&�6�Y��lyy�IvF���@��e�S����W��֙i2�&��_E����[��TX��v�!6a��>ؕ��H�b�2��bi�R�c�?2/n��?x���I���@2� +p� �UKҏ�T��Z�x����=���T��R-# +kog�TyO\�A��P��RIl��6�ҫ��,�~#��T�S1��[6*�|jf5@f�~��)U�!�3��d��)@�L�ɏ�DZYGo��H3�:��N�VT�,��i�tEO�Ji���鷬mM����
���%i1:Q��b�su{�R婽%P��<K$���E��G�J{�Rۈ�^�(�o���֫��/����4�T84v����'Qs���U��!t��A�ĕ�QM�L��?�O���T�_���U�v�[Ɛ?ݰt�-�0�i$Wymʼ�:4�%V��|���ꫩ%�M鉏� +I��Z���w�I�Q`�6� +��1{��)�U�l4%�"����^8�QE�8}���>�daa`j���-g�~#U��[�]6�4��桇m6��8����s�}�E���_�k��T��F�Cx��q�SS��~QNU!��+)M�� +"� �uK��^Eqv;ߧ&YCd�=%��׆���wV���J٘�|�cރ`7Ԥ�/�t�d�h�?(kT.!3,q:1X4gP�B����"�['b�+��#r:��,�p3�r�xe��J����&��rR�HZF����T�C�����M)�(���^(�>yz�~�$�7����M��(��~�'I{�Az`s1����\�n6�˴�p�PI|�C
"��+��S�9b�gC9��e�! E�^$8Ԃ��ג��ny`���/kaT�m9k��6Q��4�a�b�Iw(�Sn���D��`'Ux�0�Aa�����ơ���6i�Xq�ۤ����鱤��/��I�h�h :O�H`;� .n�S�?��X�$��\A��0}L�v�]��h�"�>{b����bx��U7��m�Y���2���*��υI�z��5��:�Y���}E:��D�ݍ5N��"ʪ��5�d72n���z��ǒ�*o<pE���.m����%����P�T��7�R}��Rdmc�ڿ:�ʤj�[�=�{T���|e<��co4��P[R�aCHm�Jm�H�Q?��dF��oe�2��n�p������篨���X2�qu����N6s%S"�܅^��^����� �F���"MSR��YR��W�N�Qfo����)��p'#=�����U4�]�pBv
{�}ghEʃ��ި앚vO3�m`�c4F��Џf�K�g��[Bך�vw��X)��-��IH:,��=�"ȭKK�+��~�b $�?�h +�^�ޒ�\/}�Э*��� !��=_��?Mx�4O��XEt@�K��Ry}T`�y�U�ZW�ڰ�>g����U��z���"=����B1�@��q�q��kS���u٦CV;S� +�#��>�ar�G��O�n��D�ų�҂V��]y3C���U����nb��WWh�� ��lbgQ�c +����NЂ�'���6���;Wj��Y��L-��]b�h�0�]��B�|(��E�iE�m=d��&����M�IӵW����N��� +�ʕ}Z�@���H���I/�#�ߟ��;8��ii�\2��?0�P� +ܠshL�����3���>�F�^C"3�jc�B��7)�����4�=H���*�>���")�̊��K˺V��y%��X�?�4 +endstream +endobj +486 0 obj +<</Filter/FlateDecode/Length 4068>>stream +x��[mo�8� ���ڋ�%R/�b������v�M�W��8(��x�~YKI���7/$Eٖ���\Y��p8�<3C��l�̮�I#�����i��m5O/���O/V����f�(��r�����sq��E�����(�QR�"�Z'�E�X��T�Zdy"u.tfd��8���������?m#���߉��Q�(*�2N{��3ҳ����(�����SBEZ&"+���r��A|\���)�����Q5>IF/�����b��������:y�4ޜ��y�M'Je�3ϛ��D���BZ����q2��O��
�Y�
6����Z�t�f���8N�D�$�d?�o��w$����ZF��}Zm"������Yנ�4܂o(A����H���0�pF)���yci���"팓��� B��q"'�G�x
��vϖM����O�l� �e��H2��4����L��N���F�"�Q��ב;���4�)Fϗ+4��q6Z��-�Eo���⎌e�4�d��]�0t��Kx��5�����P�oԓێ7�c�|5�I���g�^=�:���Xk��4�m�j� +�����7��$�u�� ����8z5����T� +RmB ��9� RC��:0��emw����@4ȩ����-���_��z�CQ?r}�_j����i<��3|.I�]�b���Bp�X�>�ѳE����`�5O]?e��{���\����4ңׯ�r�Q����0��O� +����_N�^�[qφ��ɪd�9��w��ǸI^�<�y���5Y&�Lą�Y6�ف�k2�E}5�G�@�}r\8-�)Eu W��C>x�ܳ��^�5���=wW5�J����5lo6�X�Aę��ӏ���tGt]i:��U �-�P5{��8����ζ��r���ݺ�D���dN�@�7���hRQ�hI�`���v'2���[ +��'˲�)V�}6!�@v̇`��)�'���39�^�����Q��רBjGzmnH��FR|ēp��
�l��v���I�����9�K�i�6��4329O0[���6�cw��V2�W�l�yn��knᣏ�e�}�l��b�}�2L�X�d;���sH��Q�5�@����T�=��H��l��첹�40�]��1�}�R=Ga�p�@���a
���1kЗ2v�}` +�5�t�1ȵ�%b,oVS"dN�i7#�Yt�G;��) +��y�llE�
�^��Ʉ�j
�L9��}�����w%�:�u����m�>��5VJ��-p�.��c�:vy +�������D��$�%�� f�{>�^����v�1�5 +!��r�&� �h������ I,y��#*�h�����f���,�7!U�̊� +�!��0\��d0R�\9�p������>%}��B +����N~ +��A�v�3�/����q�\�Ȕ(��a�]#T��� +��/�p2Ǿ�w���| +�3���=I�6�p`�0���W�*{[&w'�m�v�n Nj�R� �{��DX-�{��㨇r�4� ��"w��n#��<�Y'N�L�W��9�H��fD
]'\0r�ܭ0c*�A��%܅��;,F[$�_�*��a�c�H���z�}��c�����D��s#�| X1i�Xy!/@2��
s� +3/�B�~E�j9��n�E�����gJ k./J0+�zO��Kc^� +�J�f�� +ZH�"ڠ�u���'4j 괡F;� ��Vݒ�u�+,�t\�{�j������&m�^�H��O�'�����Ƶ�M�+ +rm�N]�^���<�
T���-�(� +�E_x +�aP��Q��ާ����YUx�W�y��f�Q��6� �ِ��n�CL��m����n_9 +��0�˶T�@v�AW1�VW75�Н���:1
]� +�7CC������p�黻��������; +݂�� +endstream +endobj +487 0 obj +<</Filter/FlateDecode/Length 3909>>stream +x��[[s۶~����*v*� �<��#;i:u��N�C�Y�lͱ.��[��] +�fq"ت:<�|x�ă���=��4NRJĩ +�z�қ�Ã�����jrx�Y�q�g,/y,�����?A�������^�����蝞\F����ow�,�U���Y��MRqX��"��wH�d��GYo���
>Y
78d +/`���#E��݃Dh����N3�m8'q�V7����?��˖"N����B&q���#��Z�����o�A���8Hq�ؐ�pE���ykk�9D�RytrPJ +,䙡� �d�;;� +�ݛ�f����N/�m��(�R��q��ʟL�q�,�牭y���ԛ���E,�%z��
�9�{�)�%��-~l~�ݓ�D<CS�z�ڳ�Q ��.>X��Z}L�����/���F���;���Y�%�7�rHE�5/(�T�8�8T�Z�NC3����6T$����P��U�nCE�=���; +��؟�+%<�H��<L��&V�x�I��8�"X3*�,�H���7j����|���%��\�FT�5�,��Ϋ��&�C�{���"nM��\� 6�쥅B&K +�;u�|;%<!�a +q���<�-��/+��������'`�`wN(yO�%f�ӷ�0�D���U+D1z� H���5&+�憦�ń�i�ˋTs\�]��;|F��zrg�َ=��SGȵ�A�!]��_.��STKhLe�wc�����"6��tE�/"�c��)xB@�@���?9�蓍"^��C��^��H�k�3g��U���Eƴ�:������g��^�?�B�|P8\�W��g�1��F�*�,�z��k|xW������p��+ʯ@���k]h�v�����dcB�#B�
��6���N�̪#m~(RR֫{�yBC$���Ç)Ir��2��Ii`¬*o��B��.�YLO>j�Rk�g6���G�@�)����#�5ҫ���_{�o�b�fa��u4%_'9RJĆ�eD�)� F��D�XXS`�!�pfŴ1 ��=��^oufDdn�H+�]W��ZE�N�zb�(�(ڔG�����#:���ހl�W0���g`���կ@�#�E7T��6�.HY��p��������i���q�uD��v�!8:���AV���56`2Һ�L�rFh9�M�[-�PҖ�R�|�<�j2�f�4�ޠ�r�0��%�S�(j�s��pR�\�[Bi[�h�v�Ş�`U� >X���溲63�L�O�(���Awq�"'����y;$O&���������D�Җ�5\�[R���<�Zt��ɖ
G��i�g�!s0Q +#W܈��s�����+`a��ؙFu���8���Q�E$��~����5����a��(gW�>�ܯ�7��@��ԭ]�`�ܢs~^���ߒ<�� +�( +�������4����˻�4߆[ץ
���n���<��X���[�\��9T9�u���>k�-�d���:ߡ��k8��e�"@
�:���q����'���F��C�5^�k略�4�L��;�d��=�� +�:v�}��8��8��#-yy�����"щ�C-z6��k��t����M��$(6�u�9�<�;�3�Ɵ,���m��0U�0e.b.
������l����A^כu#��e��&X��gs"�6��i���6B�7I��Ҽ�:d4u�ҶO+�r�2�s��U���/��
�b���2�#R�H�P�e�P������teFmo�n[gO1h�vob����_zs��Gք�T0(,�)c����o?�l�� +!�W�b��UE5��"���K�\B���i�ݢ��b�?��u'��v݉�H��V)ܮ�~�$5��!�s:)X��E����7��6KӒj��%�Q��k���u�@eg���V-;�(AL�W�7�5�M4i�hF��.Z]V��vb��)Z#!�؛x��_w��WWݵ+LQ��nG9 '���K��l�迨�jj�O�Ι��G;�O�R?^ox5'��Y�n)y��P{�nn��oJ�Ye�5�H�>Mg+�*����v���i��H����i��!$��k�>V��CE�D���tY
��"�ݡ�(kR��^�dE�;{JO(��I#�c�i!c����X�Ke_'-����b6#]��ՊR�"خj��@�<N��iA�g�z�C�uA1���R�п �E-�ƥK~���9�+��A�h���KN2n��z���ظ�q^�/����� +)�n�;me^�^G�ȅ�F��9��m�*Z�A8XԦzO��rۡ�l�\��Z��SX6��u9���j"�gTK������.�7Y2Q�y^�f�U�x�:�C�É�e�3V���:>h9�+t�bAX�U�r�H7�q͙��h-ƶ�`���)�}�Q�c./���:l�=iU@Fq�uM�ߟ� �� +�b�m�����< ��n[� (�ˢ�"*�ol�Ǽأˠ`Ug��=jҳ8X�%�ގe8;�xˬ�~\�m
�!G��K�AK.%��>���v���F?n��χ�
s��6N�R��g�x��&ػ���9��1�v��E�V��-�0��O^_L��I"�q?�ߢ8V�G��Ŀ�q?��k�X�O��=";��/�1��7���7��x�x�O5�VJ��"��y+�R4)���fͼ�/0f�˪����/n,s6��3�RPfo��a��7�i��bE4�DIO\��7f��x�ǽ��w���9ǿ9��gj������9]�s4F����:�G�`�g�SH鴊H���kq�_|iQ`�� �q���V�KC7�RQ"�b�IUk�v�*�B�o&c��y�8��`�2��K�u>[�ѥ���B�}] .�"}��AC� +�av���L��o +A���;��/���[Y��E�n��B1�Wnfh{[T.����f�
U+�jI9�\����s-��X���^v�Uz��V�����x-|�ڍKv���<�FR�G�J��K��4vk�pzE�ki/�l.���t7�ͱ.u0t�[|^7��S)/��&��u(%���V���y�L�eݕ���jʳ����)/���U�Nu{B�Hś�K���{�7�[��eS��9U�a�GP'!k��I�k:lN^�.�=�E
�fs��ʞ��d]_z ��m~��Ȏr�]�H�rS}�?�*r��Tg
F�>�|����+g+���`ڵ��U�ׇ�@KkD��u�o�G��ajV3ml��X���%��r�+�S}xc�w35e�� +�͢tsyÞf�O�#τ�Nu�X�ݍ]A�nK�Bqd��ʎ�˱����@�0�5�O���Ӑf.��zV�����m|�
���D��)�v������uK�n��������s�`+r�I,���I�s�8�8
�G`jD�ҝ�$txE��h[c�$�s�^[��ž[8�r��0˛�^����m� 5��wB0�\�3WC#n�j�戽6��M�4��EA��yx�� +�_��Dқ�R�3�u +p'� +�|&1T{����+��_�*�q����Wk,�x�� +i���ʠ +endstream +endobj +488 0 obj +<</Filter/FlateDecode/Length 3917>>stream +x��[�O#9����`�~IV���v�N����q�Yf`�NbW�&$�;H�I�,��_U���;�C'�(t��v�~Ue��xU>L�q�~���,�����]/�]�.'G���a^���O?��'��ǫ\���� B�G,�� [��$H$K3Ȍ�4E"%[M����q�|��I��DQ�a�����Ã��9��������8�KsHv���a��?I�������`2���0�_
�`�?<8v����E$Qsv=��M'J��3ϧ�p$w�C�&ƃ��<G�`�OVE�C����aB�>>�Dh��~�GBhΊ� �W�Y�����崹���>��� ���oC��Z��Wo��,?� ��XF��3�!2ߞ[��0 ��'�D��Th>!� �|��D.O�{�(�œ/ީ�EcY�R2�"��o~�c�S5���
�< ¨FW['١Yק|X,� +<|^cb�aq7A"B�It_&4x�\��Z!,5��jZ +zpW��&�^��9�M<O���{��5|<�[��������(���\�2&�n2�\K'�F��W����T��D��3cŕ�+���ES=�τlEO�F��i��7�Zެ`0���0�Y-h��W0����lC��2�-�𑖈ߞ&s�併'La���8���߈)����R%���S<�T>�ߕ��z��&M�s�!k�.�JK ���P�E��g�d�˔*��;x��w��w��[��-�\iZz�K~�rztו�4D��&��~�fJ[O�!�9�ǯ�(����u��4�V2E�r.V��ÒW|q�z�@9�-G����`e͕�$�u��y�,�����}��I��:�Ǖw��M��4'6�����6xXsI�ƺ7J��KD��$ј��X�l�v $�bg�;�m�+����qIj�:zn���A����lrN`��Q�y"@#?��1�ǯ+2�%�;�'��'Z� +����բ��d�3�L"���]O�%�&�-8��C�|R�95�����Y�j8,ƴ������F����`bú��u`\PO��5x���ܗ>(�W�!x�5�4�O�8�PA�0"��
X���P�MżG�9�T�����b�r71���2����j��G��|����a��Ի���$
rn��4�~����ߥ�(�:�M{B�𢥢s�������;w[.|/��P��+�v7�����O�dEe����i7�s�Z�r�����A"���C��]�!�Ba�0iSUp�_����-O��<�,��=����&O����p:>CQ*��H����cL��l�P�%Cb_:����%얡5E +�H�NFܿж㎜Ť!0K7Ej�䪦L4l��v��[�5`��a_��Y��[�V�G+�_�c�$$��+Q\�ZMת�e��<�U�%dF�~z2�M��R�sk�]׆:C�[ �g���uUs���+� ��d���|{]R�dɤ!�Rc�+eX��R�VqJp/��g�� ��Ū|��-Z9�'T�� +�ڊ�ݴ�N6��)fA�%��.L���G�~�p��'R�T��(��Jՠ�Uܢ������?�&�itz���o�����r�:��ˆEYg����_�J��:��n��(U�#�� +k�%<����W +Y�ƒmY���/�m-@mcdB'���=�u��24n�m�X�����#E��5}�e ���{� +endstream +endobj +489 0 obj +<</Filter/FlateDecode/Length 3903>>stream +x��[[o��~7����K�"���./E�qRI��n��#Q�α.)�>����^�+i)�4(����������ź�M�Q˾����m��m=f�o��?�oW���j:[T�l������%;�K��iszGqZ&,��H�3�3�����,�ˋ4���%i��OO&ߝ�|֍x���߱��I�D�3T&�$u`��7�'�/9+�����q�c�,/y$�����Q>A�q���������a1xq���Ov���� +����N�&Q�lϮ�<��eQ���rx&c���dC9x;L��Y>��u�b����r�f���4B�t�o��$چ��8*��z�}�@�g�r�RDq��O+d%!;�m(�Ƭ�u�n�7\A���V���,C~�ẹ"$�h?;�De捓æ$��<���8N�;�z� +v�D>�u�_n���g�y�˱��O���=�,��2�
�U!����R��c�Rob����`Y�0����� +/��!��Y�i���m�%����0��>[�е#]��[�s�en�m���C +h)�E#�No�p˚��K�}e����2*��gNd�?x��s�H�A�2C$���� +�rCL���%y�U㾘���%/�,��п�}��0T���q�B�WD��#�e�+�H̸�� +����ܵ�{�@�Z�7*d�hQ���{�����4AA�P H���ӦW�}�\Z�9�� ��86����nPQ���'®/$l��"��/�%uۦ���pwL}Z����S��v9ӿU�5~�H1�n�B�\t��v�pg�R-B�WsA����ZƳn�{�(ƍ�~��X�7�ۥI�Z�2"֛W����S��\�铥�]��ˢ���s��$RD ����, +K7���� c��,=��u���65�����V�C� �����7o���x�~[J#aU[kSr~q�_;��F��F*�Te����tw�AlS���۲�k�h��=���S��� +������]��'q?)d�Ns6���^!խ��\�Q��XNGU��P�lg�+Mt����HȭJ���HL,�Q�N��9��= �YS���?v|���4@dR�D<�I��DIdRN,�k���Z�&tV�Ζ��SAlQ1��+��k�� %F�;
�*��)eW*�@u�=�M�B�������͡��>%�@��JW)��*;�=$E�wfN 4SQ����吏'�n��Z�r+�T}�u��׃P���F&�S?m�S�n:y�S�@a@�X�t���dX�\��پ0�(+,^y��,T��9���<� +�U�r"��Q�3.v3,3����'�;�83B��G! +]�ڍ'�p�� +��9Z��U[���~����L˝�H�p�J$��� ��7Vyt����.:S�b~wl��������X#RG�ʰ��'�3T(�5Ƶ)�;flwZ���o��}R)�<~���F���<� �!�MJ<nT��d��x��/�!B�AL�\�kK�Q/��)U!;$��j���������c� ��X�L��~/)�� �L����r,�w�lƺ"�S�� ���%�����2-*Zܶ튩��3�4�F�45���[?�GKif�����}w��1����i|F��³U�ՍTD��ׁBP��F�J�y�n���o�ƫϹ?
տ�}ut!�x�h���s�IE������z6�ʈ�=:W��{0�~�h����.����%��Fs�u��˒����BN�Z[ؠ����"`YAk3r��ۗ +?#�� +���һ}�Q��� �\�%I���\��p5�kZu�G���N��@����X� +jKd���M5��lfmK�ƫ��&����6i�ڌJ���
}��1�J��^7WK�";��ws�S�\c�]����]�^G� +-D�T�.z�*�6��!<>xMޝ$\H�ݦ;V�?]L� +endstream +endobj +490 0 obj +<</Filter/FlateDecode/Length 4500>>stream +x��[[o�~�� ��V�ъ��EQ ��[lڴɶ��A���8��BR�n��,0�2E���|3ü��7�e9o��{y�4���Zx�^�ow�����^ޖ��M٬����~xu����c}~�,"/�X�g�����,I�4��\q��Y��� ��}u~�����5H����os~�FAhM��A��Lud����^�Kx�w�<?^��'�8�^V� �����G�b�Ox?����U������٫�;�o����k���uqi�]]�y�EJ�ld�_��E<[�����'�_�V�E6{�'���!+��&���Ҩ`���rG2�7,�� �������I~�K.[�A��ߗ��0����?���`��ނ/(A��9� ��#��+&��1�;��fM�3O���T�8O؟ǻ����M�]��/.;�yPı'�@F�����2��]�ߋ;�iF�{���������j�C��g�� +�%�'�h<��>���B����Μ��/�q��_m����>V�����&����$��*);v�!:j�(�:��!�� ;qh +ے�4T��iC���Yz��X�Q�Nݡ�^� ��~����'9V +��{��g���;0o���2�Ns�$L�%�$��~�n�c� �/���Ə�"���c�/��G߈R�1���� X��`�W +E���"2��"���p�$K�@¤q���XVZ��7j��[����ׯ�PA�kʈ +�F��� ��~ +YP��=�y�����0�]�pV/nrz����Q\+���o�0�㶼�%���\�"�|�7��$��$ +>�'��\=S.� ��YGb�K�}�iR/��B�p�����İ�d2H�^Xkѫ����F��m��8�$'Pp0�'.�U��2���T�X��e��L��c<����p�2zu���W�LI� +��Ux:�#D.��]O�dU;;���Xg��M����ĕï�h�
�NU�� +�+"v+ڊf�($ׁ+� �����\�3{�+��p������!N�@���pQJ� �P��A��ZS�e��m��\���.�s�N/�)�(
�ܕb�|F��,���,w� �
��k<L�G2*P��?,�L�S$�K�q^)�J�7��-�|�����"*H�v�#(�'���fܯS_z
��Vu�3�T�3�B�3�`]c��(较�4M[q�.|P�'��x�d�Ty�:��v��M��u(~���Vwo�}�8�4+�8'_�ǂׂ�7o$��Hթ$"��o����c�)'�~-Fh��0�e�v�Ʃx�nR���e����6�!T�TU�N��֗�t7&v����M�+{5v� +����l'h���S�R�W+ê���p��QD�����r\��Z��iIoH0."K$�=����pa +>-7e�Q�s��gθ�P"ky�V�d�,�|lG+@ɡ��j:� k=�J�9 ,��Bsϱ@�8�t�HIJ��]n�"!s@D y?%2����H$��Pd�M$~.A��d"��,��������#q��~8�#E���F�#w���A�2�P�5��.Lle��8;1��4úS7Լ-OPn�t�;��=2�A_��h��x��撩NTu\��oJ:���`�%�3j�(�""��
��5�\�i|D�����T�:�}>~k�/���5L:�9ߒ0W#�ۖ���fΠ��|O���;�QA��ZW�e�L���?��:K�#֖�T'3�#2��w[yV����G�P�/�/=���Ȼ��BKnh�o�<�0S�ߚ~� +�vl��#�� +��̼�B�gGK:TIN�qi���Q�R�K��<�-��x�FX�GQ0Z�)v՝�YΑĺ�4��Po��;߹�T�9�@�j-��kN�{�_\�4C�2�4b�6��Go﮶# +��4�i��5"�5א{�o��4���!� #���-��V�J�( +��5,�f�Ң�.+����Z&�]��^�0������@���|rM����� �z�R߲1�Z1g����z�����zoVQ`�T�%/;�S{��ꭧ�ֺ���UUJg��*�R4��4w�"�Yk�0C��8����nz[�p���Ţ���w_�;9ɦ�x?�}uI���Qtv� �|jg�ߋ1>���f�ȱ+�ʶ�o��T��yL�I�u�(��\8�NO{�Mk�ksn��3!mU��
Rgm�Nڲ��8s�u/�~����4�a@�����_ƒM��0r&j��̈́���c*��]��&9N�8¢Dq�8�g�IbBi
u�`m����\9�R�̪�Y���rAۄ�5�m�ѐ�٭���ېkĩ�<ՙ(��ڨjJ'�P�<"�����r]�[XWe]M���r$�m�2L:l�;���M�p6����#�; T7H�Lj�<��QR��+���.5]2ۺ��ݧ�U��,�Mڏ�����4�ڻ� +��{G4�j[��a�����]'��|۠Qw��7t�g�ub�.8�N��4X +>�ϯ)u���D��ʐV\瓹h۷�h��W�
D}���
w�O��LՅ���o|uo��.���ہEҕ�t���V��������v>9����{�N(i��?��5Hg����-8 �!AK�)�j��Y�\v#����Ϧ��Z��]� +����� +��twFr�o�����aK��/���;C�v?�Z�G��sj@N����?:� )�ci˚=L�/ $�� +endstream +endobj +491 0 obj +<</Filter/FlateDecode/Length 4460>>stream +x��[mo�6�� ���/���"�]EQ �d�s;�ێӽdŖ�l��r���{^H��%ř��"�9|��C��b[���i-��������]57���Ϳί�7��/��~U����?�w�cq�㤈�bwz�AT�"��8��,H�vqz��~�,��8q��A.��b��NO�ߞ�����V���X����X����Q/Hzw}zr�7) +q=?=�"�?)d��� +���z����8���'ŏ�'7��;�F�|ty1��%����� +���W�B?
ۣ�1Ͼ�@�������;�G3�!MSx���l��_�e�M���MF+/�V?��"�L��z +�Q�clX~�����O������d��a�$�þ8���c�;�uj��+j�g��z4qt�H��I ��oέ��j �ԑ��SBP!��� +)�*)%��3&'P�]�i^��7d��ӱ�=,e:��-$s�� +�'��4|<���I���D�S�[`���$��]k��)�m�=c.�;l��Ĕ)bb=<^W���K�M.��V�j�j{�㽇U��N�Rb�Q�v<�m �d��6���*���a)�ԖK|�״�M:-q�HX,���L�(`�����5���w���lts��r=���B�[�d�8ǜC��2�ѭF���!���]�jQS/|(�bQ�� �b{���[l��|@y@ ���H��M2��?\Қ����#t�?�6�L����
�U�S�4EI:�NhI�MP��ʐFe��a��>���]�(f���칎xqI��
��V�*�n��S��L�ق�k^*R�K]�����%���Qo���6.V i$D����&!��W�X�,RWۡ�Ƞ-���Vt��ab竊B�7��0�\��������q����Σ%�r��h�܉��*@�B��K��f�7*�����GΗ�j�C��.;�Ô��_��)��S92(��ɴ�O$��ʃ��/]���خq��!uWhe��� X����T¹� +*1;��mm�af �T���'q$�HC�J�DEB�J���D���7���
�j��|m3�DIqLߟ�jw����گ�ySԸ��};�0�~(]]�9O�Êt�6ad+�y�$tQc6RTlm�� +���]Q�\�[��;vm�e��d���RGT%\QT�}�ڎ��:��۾�`R3�4[`?o�?�;�lEmLv����#�ҥ��<�b1bZ2�g`t��sO�r5�F#"][�Υ�Jhsᨭߔ�-d�ckr]�w�}��P��3�,�sm�#��K���.E�=D�L���_dlr���_�g +�$���M�)gT�"ۗ�FOzp���k[�z�M�x=&�ZA[�7 r_�q_�<��O�C��0��p�+.4�G��i���҄���h���N��f�Uːi�0liq3Z}b�����i���j�}�0T��s�zئ]��NE�
�$����e+Iސ�$��I�/��K#,�d_�a�G�i<=���P_�>�G��l�<��K���4�������x�y�>{�Ỉ�ѕ��̦��[� +=��^��I�Z#�2J�Z��S`����-F?i�z���%06�H�#K����lܸ��D����H=�YИ�Jҭ��@i]W�,ȥ� +�A߶�3!���CߝrO��M��[��mJ�O�8�j��{@ +� +��e�6r��C̔&�M]��{ޫ=vX�j^����~����N��]ێ�rr�����&��u�ma�l��=!1^�jL�u�WoW��`N-�����@�l��2�����\�8��DE�,) j�a&�}E�n"�z�s���ڑo�6�,��|�������P���T�t�Fٸ' GI�G��s�`N�L�QB_����+�9Ǩ/���#���d�������7w5m���}�S�M|���}�OQ�#hs��g�o}W���kʵ���2n�&1c�f�2�K.:��;��v�A"lN%��%���c�˦f֠�UQM�|�����!Դ.̞����6�C.�>��abS�ѐ +���MH���O�Y��wd��ށ��������)tm���1_z��k�$��:Rp�N� +ܿP�gHj�%5��#�^�Y=��=��%�y������K����+S�"nҼR��M���Z��GaA�c�58�XY{��i�����N�q:Xե��hj5�}��^��go +�~?ZW맵0ta�y�������L�I/���ہ�K�ޤ�"m��~�܊m�G+Dv9�Ҍ�.�4��;0��L7�whȷtv�2Jx�Sy�5 ����k'���.Sa�7�F��KOec��[ҹ��N�P��[O}/��ێ�@���� +endstream +endobj +493 0 obj +<</Filter/FlateDecode/Length 3379>>stream +x���n�F�݀���K� ��'�E`�W��ٙس �F���-)=��oUu7�M���,�E�뮮�=G'�����7���e1~�N�ۣ���ף�ϋ�����qV�����qtz~���Et�:<H�D�<Jb)|������J�ZFi&b�E2Uq�E\ĉ���Ã�����X窟��f��lj�J˘�T0��}ˢ<��;<`Q�X��(�Y,��g��|��cћÃ��t8��a68?���|wxp���Y�ǚ7�[��W%�㴃���H&(!�
��j(��Q:��;ˢ�%�� +��8� ������5,z|=�Vs��(�@��42�S�\�i�����G�&XD@���`:�O������C�(Lg� ƻ��\���*B����| ����xٌ��h��ڮ`<����R������j��e66W��g}tD�<�ҢMkƴ��6ww��X#(��dI�b��&/�$�9z6��y%V�~+H
�)l"-�Ŀ��;X�HWO��_��jx�ֽ����%¤����3�Cu�|�o�o�1:F�#�Ab�D +���C��� 9�ɒ��V+���C�� ����"��z +e��������('�j�1bΌCv�� +:ѭ�u�˽̎%b���=����^��g�y<5塖�b��Ǯ� +Dg�̙���iS�jr�iS %�jpkm��v�g���ٺ=UG%�x�*LǺ�dz�RP�g/�^ +����hn�Y{EI�_��1jA��eH�[���^����>"+-]�<��W>��zE�<l�笠s#����3�|��c���
V��}2����ͪ�2oRr��3��ix�eG��W͎���:�]�����}_�1g��[�U�N��C=� +S0��4?5��txL��� �≮��f3O��i!�fn`~x=��:��2l4�;��Mwo�QL� �����v����"���+\#:B��|"�NƮVR���K20+ͻ��h*�����'d�>�:�T*�i��<fio��|��!!K)�������l��hn\v� +��b�[v�߱��]��-q�ҵl�˩!�բ�J��F�xᮻ������r�Y�< +���1�X�8�Ì1_�w7捌��W�&���Z�R���S�9 +�&��6BB�#B���F��y�v��YB\e�VY���f`Bex\b?��`w��j�^^�y�u ��lxE�ǵ��#><A�_��%{�Ŕm���L[�63.e��v�x�J�\T��� ��p��9ra�*B�uy�S�T8����tv�������f���tA�����*�
�j�0�!�nN��W&r&r!��Z���A;����}��sxV�?�e����Ķ�9<_)�
m���y47���g>`q�|�6[l� +�4�>
�X�;O��'���8�?E�Z�pKb�^�f:�pz��{����<A���4�m�¹�����{R
</lM�5f�gs2�Ĝ'�;t���Ta6/��tLi�@��e:�� L'� +s�I�!i�4m��ݒ��\j�)���̑7#���X�����/�����~�m����uB���*"�'�>�RX-wÔ����>ʳ�R8����h8E��\bg����=u����hML>AbU��������+��_��we[�窎�0���L��X8I��J+�4_��V���EV�8�u/x���uk� +N8u�xDuՔ�N�Y�y�/�ҭ���X�F�m�����[���ơ<��;��p��U{��;'Ac�����z�>��$4r?��aw�.0�.�$���ޥڊ�Bթ�K����S�vcͯ1`�U��g��x����[A��n�)�Ƙ-��eQ��e��qz�Kկ��f���1����|�ie;���]q��Q�E�ߥQ�b����B�:��B˼�>kȝ��U>���c��T����0� +endstream +endobj +492 0 obj +<</Type/Font/Subtype/Type0/BaseFont/ABCDEE+Verdana,Bold/Encoding/Identity-H/DescendantFonts 524 0 R/ToUnicode 525 0 R>> +endobj +524 0 obj +[526 0 R] +endobj +526 0 obj +<</BaseFont/ABCDEE+Verdana,Bold/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 527 0 R/FontDescriptor 528 0 R/W 529 0 R>> +endobj +527 0 obj +<</Ordering(Identity)/Registry(Adobe)/Supplement 0>> +endobj +528 0 obj +<</Type/FontDescriptor/FontName/ABCDEE+Verdana,Bold/Flags 32/ItalicAngle 0/Ascent 1005/Descent -207/CapHeight 765/AvgWidth 568/MaxWidth 2257/FontWeight 700/XHeight 250/StemV 56/FontBBox[-550 -207 1707 765]/FontFile2 222 0 R>> +endobj +500 0 obj +<</Filter/FlateDecode/Length 1334>>stream +x��WYo�F~����d +ǘ$X�](�}�̳,�\3�o�BsXZ[�*� ؚL�#���$ī�%�>�EzG �?@v9�C +�!B��N���o/0@��!�x��V_��c�;�ͤz��݉� +;P���� �0?T�0KR�W�6��������Ll + +X���e�Y����i[�P�d�#88J촞}��14��q�B��̺�u���z�J��6#�4AU]��ƬH)��շO]����G�Շ�MB�iO#�Q���'Rp&������?���� +endstream +endobj +206 0 obj +<</Type/StructTreeRoot/RoleMap 530 0 R/ParentTree 531 0 R/K[532 0 R]/ParentTreeNextKey 235>> +endobj +530 0 obj +<</Footnote/Note/Endnote/Note/Textbox/Sect/Header/Sect/Footer/Sect/InlineShape/Sect/Annotation/Sect/Artifact/Sect/Workbook/Document/Worksheet/Part/Macrosheet/Part/Chartsheet/Part/Dialogsheet/Part/Slide/Part/Chart/Sect/Diagram/Figure>> +endobj +531 0 obj +<</Nums[0 533 0 R 1 534 0 R 2 535 0 R 3 536 0 R 4 537 0 R 5 538 0 R 6 539 0 R 7 540 0 R 8 541 0 R 9 542 0 R 10 543 0 R 11 544 0 R 12 545 0 R 13 546 0 R 14 547 0 R 15 548 0 R 16 549 0 R 17 550 0 R 18 551 0 R 19 552 0 R 20 553 0 R 21 554 0 R 22 555 0 R 23 556 0 R 24 557 0 R 25 558 0 R 26 559 0 R 27 560 0 R 28 561 0 R 29 562 0 R 30 563 0 R 31 564 0 R 32 565 0 R 33 566 0 R 34 567 0 R 35 568 0 R 36 569 0 R 37 570 0 R 38 571 0 R 39 572 0 R 40 573 0 R 41 574 0 R 42 575 0 R 43 576 0 R 44 577 0 R 45 578 0 R 46 579 0 R 47 580 0 R 48 581 0 R 49 582 0 R 50 583 0 R 51 583 0 R 52 584 0 R 53 585 0 R 54 586 0 R 55 587 0 R 56 588 0 R 57 589 0 R 58 590 0 R 59 591 0 R 60 592 0 R 61 592 0 R 62 593 0 R 63 594 0 R 64 594 0 R 65 595 0 R 66 596 0 R 67 597 0 R 68 598 0 R 69 599 0 R 70 600 0 R 71 601 0 R 72 602 0 R 73 603 0 R 74 604 0 R 75 605 0 R 76 605 0 R 77 606 0 R 78 607 0 R 79 608 0 R 80 609 0 R 81 610 0 R 82 611 0 R 83 612 0 R 84 613 0 R 85 614 0 R 86 615 0 R 87 616 0 R 88 617 0 R 89 618 0 R 90 619 0 R 91 620 0 R 92 621 0 R 93 622 0 R 94 623 0 R 95 624 0 R 96 624 0 R 97 625 0 R 98 626 0 R 99 627 0 R 100 628 0 R 101 629 0 R 102 629 0 R 103 630 0 R 104 630 0 R 105 631 0 R 106 632 0 R 107 632 0 R 108 633 0 R 109 633 0 R 110 634 0 R 111 635 0 R 112 636 0 R 113 637 0 R 114 637 0 R 115 638 0 R 116 638 0 R 117 639 0 R 118 640 0 R 119 641 0 R 120 641 0 R 121 642 0 R 122 643 0 R 123 643 0 R 124 644 0 R 125 644 0 R 126 645 0 R 127 645 0 R 128 645 0 R 129 646 0 R 130 647 0 R 131 648 0 R 132 648 0 R 133 649 0 R 134 650 0 R 135 651 0 R 136 651 0 R 137 652 0 R 138 653 0 R 139 654 0 R 140 654 0 R 141 655 0 R 142 655 0 R 143 656 0 R 144 657 0 R 145 657 0 R 146 658 0 R 147 659 0 R 148 660 0 R 149 660 0 R 150 661 0 R 151 662 0 R 152 662 0 R 153 663 0 R 154 664 0 R 155 664 0 R 156 665 0 R 157 666 0 R 158 667 0 R 159 668 0 R 160 669 0 R 161 670 0 R 162 671 0 R 163 671 0 R 164 672 0 R 165 673 0 R 166 673 0 R 167 674 0 R 168 675 0 R 169 676 0 R 170 677 0 R 171 678 0 R 172 678 0 R 173 679 0 R 174 680 0 R 175 681 0 R 176 682 0 R 177 683 0 R 178 684 0 R 179 685 0 R 180 686 0 R 181 687 0 R 182 688 0 R 183 689 0 R 184 690 0 R 185 691 0 R 186 692 0 R 187 693 0 R 188 694 0 R 189 695 0 R 190 696 0 R 191 697 0 R 192 698 0 R 193 699 0 R 194 700 0 R 195 701 0 R 196 701 0 R 197 702 0 R 198 703 0 R 199 704 0 R 200 705 0 R 201 706 0 R 202 707 0 R 203 708 0 R 204 709 0 R 205 710 0 R 206 711 0 R 207 712 0 R 208 713 0 R 209 714 0 R 210 715 0 R 211 716 0 R 212 717 0 R 213 718 0 R 214 719 0 R 215 720 0 R 216 721 0 R 217 722 0 R 218 723 0 R 219 724 0 R 220 725 0 R 221 726 0 R 222 727 0 R 223 728 0 R 224 729 0 R 225 730 0 R 226 731 0 R 227 732 0 R 228 733 0 R 229 734 0 R 230 735 0 R 231 736 0 R 232 737 0 R 233 738 0 R 234 739 0 R]>> +endobj +532 0 obj +<</P 206 0 R/S/Part/Type/StructElem/K[740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R 1327 0 R 1328 0 R 1329 0 R 1330 0 R 1331 0 R 1332 0 R 1333 0 R 1334 0 R 1335 0 R 1336 0 R 1337 0 R 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1342 0 R 1343 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R 1352 0 R 1353 0 R 1354 0 R 1355 0 R 1356 0 R 1357 0 R 1358 0 R 1359 0 R 1360 0 R 1361 0 R 1362 0 R 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1369 0 R 1370 0 R 1371 0 R 1372 0 R 1373 0 R 1374 0 R 1375 0 R 1376 0 R 1377 0 R 1378 0 R 1379 0 R 1380 0 R 1381 0 R 1382 0 R 1383 0 R 1384 0 R 1385 0 R 1386 0 R 1387 0 R 1388 0 R 1389 0 R 1390 0 R 1391 0 R 1392 0 R 1393 0 R 1394 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1401 0 R 1402 0 R 1403 0 R 1404 0 R 1405 0 R 1406 0 R 1407 0 R 1408 0 R 1409 0 R 1410 0 R 1411 0 R 1412 0 R 1413 0 R 1414 0 R 1415 0 R 1416 0 R 1417 0 R 1418 0 R 1419 0 R 1420 0 R 1421 0 R 1422 0 R 1423 0 R 1424 0 R 1425 0 R 1426 0 R 1427 0 R 1428 0 R 1429 0 R 1430 0 R 1431 0 R 1432 0 R 1433 0 R 1434 0 R 1435 0 R 1436 0 R 1437 0 R 1438 0 R 1439 0 R 1440 0 R 1441 0 R 1442 0 R 1443 0 R 1444 0 R 1445 0 R 1446 0 R 1447 0 R 1448 0 R 1449 0 R 1450 0 R 1451 0 R 1452 0 R 1453 0 R 1454 0 R 1455 0 R 1456 0 R 1457 0 R 1458 0 R 1459 0 R 1460 0 R 1461 0 R 1462 0 R 1463 0 R 1464 0 R 1465 0 R 1466 0 R 1467 0 R 1468 0 R 1469 0 R 1470 0 R 1471 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R 1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R 1486 0 R 1487 0 R 1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R 1505 0 R 1506 0 R 1507 0 R 1508 0 R]>> +endobj +740 0 obj +<</P 532 0 R/S/Figure/Alt(Description: Description: Description: C:\\Documents and Settings\\lenain\\Local Settings\\Temporary Internet Files\\Content.Word\\griffe_2.jpg)/Type/StructElem/K[0]/Pg 207 0 R>> +endobj +533 0 obj +[740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R] +endobj +741 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 207 0 R>> +endobj +742 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 207 0 R>> +endobj +743 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 207 0 R>> +endobj +744 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 207 0 R>> +endobj +745 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 207 0 R>> +endobj +746 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 207 0 R>> +endobj +747 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 207 0 R>> +endobj +748 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 207 0 R>> +endobj +749 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 207 0 R>> +endobj +750 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 207 0 R>> +endobj +751 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 207 0 R>> +endobj +752 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 207 0 R>> +endobj +753 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 207 0 R>> +endobj +754 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 207 0 R>> +endobj +755 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 207 0 R>> +endobj +756 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 207 0 R>> +endobj +757 0 obj +<</P 532 0 R/S/H1/Type/StructElem/K[0]/Pg 7 0 R>> +endobj +534 0 obj +[757 0 R 1509 0 R 1510 0 R 1510 0 R 1510 0 R 1511 0 R 1512 0 R 1512 0 R 1512 0 R 1513 0 R 1514 0 R 1514 0 R 1514 0 R 1515 0 R 1516 0 R 1516 0 R 1516 0 R 1517 0 R 1518 0 R 1519 0 R 1519 0 R 1519 0 R 1520 0 R 1521 0 R 1521 0 R 1521 0 R 1522 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1523 0 R 1524 0 R 1525 0 R 1525 0 R 1525 0 R 1526 0 R 759 0 R 760 0 R] +endobj +758 0 obj +<</P 532 0 R/S/Table/Type/StructElem/K[1527 0 R 1528 0 R]/Pg 7 0 R>> +endobj +1527 0 obj +<</P 758 0 R/S/TR/Type/StructElem/K[1529 0 R 1530 0 R 1531 0 R 1532 0 R 1517 0 R]/Pg 7 0 R>> +endobj +1529 0 obj +<</P 1527 0 R/S/TH/Type/StructElem/K[1509 0 R 1510 0 R]/Pg 7 0 R>> +endobj +1509 0 obj +<</P 1529 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 1>> +endobj +1510 0 obj +<</P 1529 0 R/S/P/Type/StructElem/K[2 3 4]/Pg 7 0 R>> +endobj +1530 0 obj +<</P 1527 0 R/S/TH/Type/StructElem/K[1511 0 R 1512 0 R]/Pg 7 0 R>> +endobj +1511 0 obj +<</P 1530 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 5>> +endobj +1512 0 obj +<</P 1530 0 R/S/P/Type/StructElem/K[6 7 8]/Pg 7 0 R>> +endobj +1531 0 obj +<</P 1527 0 R/S/TH/Type/StructElem/K[1513 0 R 1514 0 R]/Pg 7 0 R>> +endobj +1513 0 obj +<</P 1531 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 9>> +endobj +1514 0 obj +<</P 1531 0 R/S/P/Type/StructElem/K[10 11 12]/Pg 7 0 R>> +endobj +1532 0 obj +<</P 1527 0 R/S/TH/Type/StructElem/K[1515 0 R 1516 0 R]/Pg 7 0 R>> +endobj +1515 0 obj +<</P 1532 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 13>> +endobj +1516 0 obj +<</P 1532 0 R/S/P/Type/StructElem/K[14 15 16]/Pg 7 0 R>> +endobj +1517 0 obj +<</P 1527 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 17>> +endobj +1528 0 obj +<</P 758 0 R/S/TR/Type/StructElem/K[1533 0 R 1534 0 R 1535 0 R 1536 0 R 1526 0 R]/Pg 7 0 R>> +endobj +1533 0 obj +<</P 1528 0 R/S/TD/Type/StructElem/K[1518 0 R 1519 0 R]/Pg 7 0 R>> +endobj +1518 0 obj +<</P 1533 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 18>> +endobj +1519 0 obj +<</P 1533 0 R/S/P/Type/StructElem/K[19 20 21]/Pg 7 0 R>> +endobj +1534 0 obj +<</P 1528 0 R/S/TD/Type/StructElem/K[1520 0 R 1521 0 R]/Pg 7 0 R>> +endobj +1520 0 obj +<</P 1534 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 22>> +endobj +1521 0 obj +<</P 1534 0 R/S/P/Type/StructElem/K[23 24 25]/Pg 7 0 R>> +endobj +1535 0 obj +<</P 1528 0 R/S/TD/Type/StructElem/K[1522 0 R 1523 0 R]/Pg 7 0 R>> +endobj +1522 0 obj +<</P 1535 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 26>> +endobj +1523 0 obj +<</P 1535 0 R/S/P/Type/StructElem/K[27 28 29 30 31 32 33 34 35]/Pg 7 0 R>> +endobj +1536 0 obj +<</P 1528 0 R/S/TD/Type/StructElem/K[1524 0 R 1525 0 R]/Pg 7 0 R>> +endobj +1524 0 obj +<</P 1536 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 36>> +endobj +1525 0 obj +<</P 1536 0 R/S/P/Type/StructElem/K[37 38 39]/Pg 7 0 R>> +endobj +1526 0 obj +<</P 1528 0 R/S/Span/Type/StructElem/Pg 7 0 R/K 40>> +endobj +759 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 7 0 R>> +endobj +760 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[42]/Pg 7 0 R>> +endobj +761 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 208 0 R>> +endobj +535 0 obj +[761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R] +endobj +762 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 208 0 R>> +endobj +763 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 208 0 R>> +endobj +764 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 208 0 R>> +endobj +765 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 208 0 R>> +endobj +766 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 208 0 R>> +endobj +767 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 208 0 R>> +endobj +768 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 208 0 R>> +endobj +769 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 208 0 R>> +endobj +770 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 208 0 R>> +endobj +771 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 208 0 R>> +endobj +772 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 208 0 R>> +endobj +773 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 208 0 R>> +endobj +774 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 208 0 R>> +endobj +775 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 208 0 R>> +endobj +776 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 208 0 R>> +endobj +777 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 208 0 R>> +endobj +778 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 208 0 R>> +endobj +779 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 208 0 R>> +endobj +780 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 208 0 R>> +endobj +781 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 208 0 R>> +endobj +782 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 208 0 R>> +endobj +783 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 208 0 R>> +endobj +784 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 208 0 R>> +endobj +785 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 208 0 R>> +endobj +786 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 208 0 R>> +endobj +787 0 obj +<</P 532 0 R/S/H1/Type/StructElem/K[0]/Pg 8 0 R>> +endobj +536 0 obj +[787 0 R 1537 0 R 1538 0 R 1539 0 R 1540 0 R 1541 0 R 1542 0 R 1543 0 R 1544 0 R 1545 0 R 1546 0 R 1547 0 R 1548 0 R 1549 0 R 1550 0 R 1551 0 R 1552 0 R 1553 0 R 1554 0 R 1555 0 R 1556 0 R 1557 0 R 1558 0 R 1559 0 R 1560 0 R 1561 0 R 1562 0 R 1563 0 R 1564 0 R 1565 0 R 1566 0 R 1567 0 R 1568 0 R 1569 0 R 1570 0 R 1571 0 R 1572 0 R 1573 0 R 1574 0 R 1575 0 R 1576 0 R 1577 0 R 1578 0 R 1579 0 R 1580 0 R 1581 0 R 1582 0 R 1583 0 R 1584 0 R 1585 0 R 1586 0 R 1587 0 R 1588 0 R 1589 0 R 1590 0 R 1591 0 R 1592 0 R 1593 0 R 1594 0 R 1595 0 R 1596 0 R 1597 0 R 1598 0 R 1599 0 R 1600 0 R 1601 0 R 1602 0 R 1603 0 R 1604 0 R 1605 0 R 1606 0 R 1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R 1613 0 R 1614 0 R 1615 0 R 1616 0 R 1617 0 R 1618 0 R 1619 0 R 1620 0 R 1621 0 R 1622 0 R 1623 0 R 1624 0 R 1625 0 R 1626 0 R 1627 0 R 1628 0 R 1629 0 R 1630 0 R 1631 0 R 1632 0 R] +endobj +788 0 obj +<</P 532 0 R/S/TOC/Type/StructElem/K[1633 0 R 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R 1639 0 R 1640 0 R 1641 0 R 1642 0 R 1643 0 R 1644 0 R 1645 0 R 1646 0 R 1647 0 R 1648 0 R 1649 0 R 1650 0 R 1651 0 R 1652 0 R 1653 0 R 1654 0 R 1655 0 R 1656 0 R 1657 0 R 1658 0 R 1659 0 R 1660 0 R 1661 0 R 1662 0 R 1663 0 R 1664 0 R 1665 0 R 1666 0 R 1667 0 R 1668 0 R 1669 0 R 1670 0 R 1671 0 R 1672 0 R 1673 0 R 1674 0 R]/Pg 8 0 R>> +endobj +1633 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[537 0 R 1538 0 R 1539 0 R 1540 0 R]/Pg 8 0 R>> +endobj +537 0 obj +<</P 1633 0 R/S/Link/Type/StructElem/K[1675 0 R 1537 0 R]/Pg 8 0 R>> +endobj +1675 0 obj +<</Type/OBJR/Obj 249 0 R/Pg 8 0 R>> +endobj +1537 0 obj +<</P 537 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 1>> +endobj +1538 0 obj +<</P 1633 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 2>> +endobj +1539 0 obj +<</P 1633 0 R/S/Link/Type/StructElem/K[3]/Pg 8 0 R>> +endobj +1540 0 obj +<</P 1633 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 4>> +endobj +1634 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[538 0 R 1542 0 R 1543 0 R 1544 0 R]/Pg 8 0 R>> +endobj +538 0 obj +<</P 1634 0 R/S/Link/Type/StructElem/K[1676 0 R 1541 0 R]/Pg 8 0 R>> +endobj +1676 0 obj +<</Type/OBJR/Obj 250 0 R/Pg 8 0 R>> +endobj +1541 0 obj +<</P 538 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 5>> +endobj +1542 0 obj +<</P 1634 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 6>> +endobj +1543 0 obj +<</P 1634 0 R/S/Link/Type/StructElem/K[7]/Pg 8 0 R>> +endobj +1544 0 obj +<</P 1634 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 8>> +endobj +1635 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[539 0 R 1546 0 R 1547 0 R 1548 0 R]/Pg 8 0 R>> +endobj +539 0 obj +<</P 1635 0 R/S/Link/Type/StructElem/K[1677 0 R 1545 0 R]/Pg 8 0 R>> +endobj +1677 0 obj +<</Type/OBJR/Obj 251 0 R/Pg 8 0 R>> +endobj +1545 0 obj +<</P 539 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 9>> +endobj +1546 0 obj +<</P 1635 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 10>> +endobj +1547 0 obj +<</P 1635 0 R/S/Link/Type/StructElem/K[11]/Pg 8 0 R>> +endobj +1548 0 obj +<</P 1635 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 12>> +endobj +1636 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[540 0 R 1550 0 R 1551 0 R 1552 0 R]/Pg 8 0 R>> +endobj +540 0 obj +<</P 1636 0 R/S/Link/Type/StructElem/K[1678 0 R 1549 0 R]/Pg 8 0 R>> +endobj +1678 0 obj +<</Type/OBJR/Obj 252 0 R/Pg 8 0 R>> +endobj +1549 0 obj +<</P 540 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 13>> +endobj +1550 0 obj +<</P 1636 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 14>> +endobj +1551 0 obj +<</P 1636 0 R/S/Link/Type/StructElem/K[15]/Pg 8 0 R>> +endobj +1552 0 obj +<</P 1636 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 16>> +endobj +1637 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[541 0 R 1554 0 R 1555 0 R 1556 0 R]/Pg 8 0 R>> +endobj +541 0 obj +<</P 1637 0 R/S/Link/Type/StructElem/K[1679 0 R 1553 0 R]/Pg 8 0 R>> +endobj +1679 0 obj +<</Type/OBJR/Obj 253 0 R/Pg 8 0 R>> +endobj +1553 0 obj +<</P 541 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 17>> +endobj +1554 0 obj +<</P 1637 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 18>> +endobj +1555 0 obj +<</P 1637 0 R/S/Link/Type/StructElem/K[19]/Pg 8 0 R>> +endobj +1556 0 obj +<</P 1637 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 20>> +endobj +1638 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[542 0 R 1558 0 R 1559 0 R 1560 0 R]/Pg 8 0 R>> +endobj +542 0 obj +<</P 1638 0 R/S/Link/Type/StructElem/K[1680 0 R 1557 0 R]/Pg 8 0 R>> +endobj +1680 0 obj +<</Type/OBJR/Obj 254 0 R/Pg 8 0 R>> +endobj +1557 0 obj +<</P 542 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 21>> +endobj +1558 0 obj +<</P 1638 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 22>> +endobj +1559 0 obj +<</P 1638 0 R/S/Link/Type/StructElem/K[23]/Pg 8 0 R>> +endobj +1560 0 obj +<</P 1638 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 24>> +endobj +1639 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[543 0 R 1562 0 R]/Pg 8 0 R>> +endobj +543 0 obj +<</P 1639 0 R/S/Link/Type/StructElem/K[1681 0 R 1561 0 R]/Pg 8 0 R>> +endobj +1681 0 obj +<</Type/OBJR/Obj 255 0 R/Pg 8 0 R>> +endobj +1561 0 obj +<</P 543 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 25>> +endobj +1562 0 obj +<</P 1639 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 26>> +endobj +1640 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[544 0 R 1564 0 R]/Pg 8 0 R>> +endobj +544 0 obj +<</P 1640 0 R/S/Link/Type/StructElem/K[1682 0 R 1563 0 R]/Pg 8 0 R>> +endobj +1682 0 obj +<</Type/OBJR/Obj 256 0 R/Pg 8 0 R>> +endobj +1563 0 obj +<</P 544 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 27>> +endobj +1564 0 obj +<</P 1640 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 28>> +endobj +1641 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[545 0 R 1566 0 R]/Pg 8 0 R>> +endobj +545 0 obj +<</P 1641 0 R/S/Link/Type/StructElem/K[1683 0 R 1565 0 R]/Pg 8 0 R>> +endobj +1683 0 obj +<</Type/OBJR/Obj 257 0 R/Pg 8 0 R>> +endobj +1565 0 obj +<</P 545 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 29>> +endobj +1566 0 obj +<</P 1641 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 30>> +endobj +1642 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[546 0 R 1568 0 R]/Pg 8 0 R>> +endobj +546 0 obj +<</P 1642 0 R/S/Link/Type/StructElem/K[1684 0 R 1567 0 R]/Pg 8 0 R>> +endobj +1684 0 obj +<</Type/OBJR/Obj 258 0 R/Pg 8 0 R>> +endobj +1567 0 obj +<</P 546 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 31>> +endobj +1568 0 obj +<</P 1642 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 32>> +endobj +1643 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[547 0 R 1570 0 R]/Pg 8 0 R>> +endobj +547 0 obj +<</P 1643 0 R/S/Link/Type/StructElem/K[1685 0 R 1569 0 R]/Pg 8 0 R>> +endobj +1685 0 obj +<</Type/OBJR/Obj 259 0 R/Pg 8 0 R>> +endobj +1569 0 obj +<</P 547 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 33>> +endobj +1570 0 obj +<</P 1643 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 34>> +endobj +1644 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[548 0 R 1572 0 R]/Pg 8 0 R>> +endobj +548 0 obj +<</P 1644 0 R/S/Link/Type/StructElem/K[1686 0 R 1571 0 R]/Pg 8 0 R>> +endobj +1686 0 obj +<</Type/OBJR/Obj 260 0 R/Pg 8 0 R>> +endobj +1571 0 obj +<</P 548 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 35>> +endobj +1572 0 obj +<</P 1644 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 36>> +endobj +1645 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[549 0 R 1574 0 R]/Pg 8 0 R>> +endobj +549 0 obj +<</P 1645 0 R/S/Link/Type/StructElem/K[1687 0 R 1573 0 R]/Pg 8 0 R>> +endobj +1687 0 obj +<</Type/OBJR/Obj 261 0 R/Pg 8 0 R>> +endobj +1573 0 obj +<</P 549 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 37>> +endobj +1574 0 obj +<</P 1645 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 38>> +endobj +1646 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[550 0 R 1576 0 R]/Pg 8 0 R>> +endobj +550 0 obj +<</P 1646 0 R/S/Link/Type/StructElem/K[1688 0 R 1575 0 R]/Pg 8 0 R>> +endobj +1688 0 obj +<</Type/OBJR/Obj 262 0 R/Pg 8 0 R>> +endobj +1575 0 obj +<</P 550 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 39>> +endobj +1576 0 obj +<</P 1646 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 40>> +endobj +1647 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[551 0 R 1578 0 R]/Pg 8 0 R>> +endobj +551 0 obj +<</P 1647 0 R/S/Link/Type/StructElem/K[1689 0 R 1577 0 R]/Pg 8 0 R>> +endobj +1689 0 obj +<</Type/OBJR/Obj 263 0 R/Pg 8 0 R>> +endobj +1577 0 obj +<</P 551 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 41>> +endobj +1578 0 obj +<</P 1647 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 42>> +endobj +1648 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[552 0 R 1580 0 R]/Pg 8 0 R>> +endobj +552 0 obj +<</P 1648 0 R/S/Link/Type/StructElem/K[1690 0 R 1579 0 R]/Pg 8 0 R>> +endobj +1690 0 obj +<</Type/OBJR/Obj 264 0 R/Pg 8 0 R>> +endobj +1579 0 obj +<</P 552 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 43>> +endobj +1580 0 obj +<</P 1648 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 44>> +endobj +1649 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[553 0 R 1582 0 R]/Pg 8 0 R>> +endobj +553 0 obj +<</P 1649 0 R/S/Link/Type/StructElem/K[1691 0 R 1581 0 R]/Pg 8 0 R>> +endobj +1691 0 obj +<</Type/OBJR/Obj 265 0 R/Pg 8 0 R>> +endobj +1581 0 obj +<</P 553 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 45>> +endobj +1582 0 obj +<</P 1649 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 46>> +endobj +1650 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[554 0 R 1584 0 R]/Pg 8 0 R>> +endobj +554 0 obj +<</P 1650 0 R/S/Link/Type/StructElem/K[1692 0 R 1583 0 R]/Pg 8 0 R>> +endobj +1692 0 obj +<</Type/OBJR/Obj 266 0 R/Pg 8 0 R>> +endobj +1583 0 obj +<</P 554 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 47>> +endobj +1584 0 obj +<</P 1650 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 48>> +endobj +1651 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[555 0 R 1586 0 R]/Pg 8 0 R>> +endobj +555 0 obj +<</P 1651 0 R/S/Link/Type/StructElem/K[1693 0 R 1585 0 R]/Pg 8 0 R>> +endobj +1693 0 obj +<</Type/OBJR/Obj 267 0 R/Pg 8 0 R>> +endobj +1585 0 obj +<</P 555 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 49>> +endobj +1586 0 obj +<</P 1651 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 50>> +endobj +1652 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[556 0 R 1588 0 R]/Pg 8 0 R>> +endobj +556 0 obj +<</P 1652 0 R/S/Link/Type/StructElem/K[1694 0 R 1587 0 R]/Pg 8 0 R>> +endobj +1694 0 obj +<</Type/OBJR/Obj 268 0 R/Pg 8 0 R>> +endobj +1587 0 obj +<</P 556 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 51>> +endobj +1588 0 obj +<</P 1652 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 52>> +endobj +1653 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[557 0 R 1590 0 R]/Pg 8 0 R>> +endobj +557 0 obj +<</P 1653 0 R/S/Link/Type/StructElem/K[1695 0 R 1589 0 R]/Pg 8 0 R>> +endobj +1695 0 obj +<</Type/OBJR/Obj 269 0 R/Pg 8 0 R>> +endobj +1589 0 obj +<</P 557 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 53>> +endobj +1590 0 obj +<</P 1653 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 54>> +endobj +1654 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[558 0 R 1592 0 R]/Pg 8 0 R>> +endobj +558 0 obj +<</P 1654 0 R/S/Link/Type/StructElem/K[1696 0 R 1591 0 R]/Pg 8 0 R>> +endobj +1696 0 obj +<</Type/OBJR/Obj 270 0 R/Pg 8 0 R>> +endobj +1591 0 obj +<</P 558 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 55>> +endobj +1592 0 obj +<</P 1654 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 56>> +endobj +1655 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[559 0 R 1594 0 R]/Pg 8 0 R>> +endobj +559 0 obj +<</P 1655 0 R/S/Link/Type/StructElem/K[1697 0 R 1593 0 R]/Pg 8 0 R>> +endobj +1697 0 obj +<</Type/OBJR/Obj 271 0 R/Pg 8 0 R>> +endobj +1593 0 obj +<</P 559 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 57>> +endobj +1594 0 obj +<</P 1655 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 58>> +endobj +1656 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[560 0 R 1596 0 R]/Pg 8 0 R>> +endobj +560 0 obj +<</P 1656 0 R/S/Link/Type/StructElem/K[1698 0 R 1595 0 R]/Pg 8 0 R>> +endobj +1698 0 obj +<</Type/OBJR/Obj 272 0 R/Pg 8 0 R>> +endobj +1595 0 obj +<</P 560 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 59>> +endobj +1596 0 obj +<</P 1656 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 60>> +endobj +1657 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[561 0 R 1598 0 R]/Pg 8 0 R>> +endobj +561 0 obj +<</P 1657 0 R/S/Link/Type/StructElem/K[1699 0 R 1597 0 R]/Pg 8 0 R>> +endobj +1699 0 obj +<</Type/OBJR/Obj 273 0 R/Pg 8 0 R>> +endobj +1597 0 obj +<</P 561 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 61>> +endobj +1598 0 obj +<</P 1657 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 62>> +endobj +1658 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[562 0 R 1600 0 R]/Pg 8 0 R>> +endobj +562 0 obj +<</P 1658 0 R/S/Link/Type/StructElem/K[1700 0 R 1599 0 R]/Pg 8 0 R>> +endobj +1700 0 obj +<</Type/OBJR/Obj 274 0 R/Pg 8 0 R>> +endobj +1599 0 obj +<</P 562 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 63>> +endobj +1600 0 obj +<</P 1658 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 64>> +endobj +1659 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[563 0 R 1602 0 R]/Pg 8 0 R>> +endobj +563 0 obj +<</P 1659 0 R/S/Link/Type/StructElem/K[1701 0 R 1601 0 R]/Pg 8 0 R>> +endobj +1701 0 obj +<</Type/OBJR/Obj 275 0 R/Pg 8 0 R>> +endobj +1601 0 obj +<</P 563 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 65>> +endobj +1602 0 obj +<</P 1659 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 66>> +endobj +1660 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[564 0 R 1604 0 R]/Pg 8 0 R>> +endobj +564 0 obj +<</P 1660 0 R/S/Link/Type/StructElem/K[1702 0 R 1603 0 R]/Pg 8 0 R>> +endobj +1702 0 obj +<</Type/OBJR/Obj 276 0 R/Pg 8 0 R>> +endobj +1603 0 obj +<</P 564 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 67>> +endobj +1604 0 obj +<</P 1660 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 68>> +endobj +1661 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[565 0 R 1606 0 R]/Pg 8 0 R>> +endobj +565 0 obj +<</P 1661 0 R/S/Link/Type/StructElem/K[1703 0 R 1605 0 R]/Pg 8 0 R>> +endobj +1703 0 obj +<</Type/OBJR/Obj 277 0 R/Pg 8 0 R>> +endobj +1605 0 obj +<</P 565 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 69>> +endobj +1606 0 obj +<</P 1661 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 70>> +endobj +1662 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[566 0 R 1608 0 R]/Pg 8 0 R>> +endobj +566 0 obj +<</P 1662 0 R/S/Link/Type/StructElem/K[1704 0 R 1607 0 R]/Pg 8 0 R>> +endobj +1704 0 obj +<</Type/OBJR/Obj 278 0 R/Pg 8 0 R>> +endobj +1607 0 obj +<</P 566 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 71>> +endobj +1608 0 obj +<</P 1662 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 72>> +endobj +1663 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[567 0 R 1610 0 R]/Pg 8 0 R>> +endobj +567 0 obj +<</P 1663 0 R/S/Link/Type/StructElem/K[1705 0 R 1609 0 R]/Pg 8 0 R>> +endobj +1705 0 obj +<</Type/OBJR/Obj 279 0 R/Pg 8 0 R>> +endobj +1609 0 obj +<</P 567 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 73>> +endobj +1610 0 obj +<</P 1663 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 74>> +endobj +1664 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[568 0 R 1612 0 R]/Pg 8 0 R>> +endobj +568 0 obj +<</P 1664 0 R/S/Link/Type/StructElem/K[1706 0 R 1611 0 R]/Pg 8 0 R>> +endobj +1706 0 obj +<</Type/OBJR/Obj 280 0 R/Pg 8 0 R>> +endobj +1611 0 obj +<</P 568 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 75>> +endobj +1612 0 obj +<</P 1664 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 76>> +endobj +1665 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[569 0 R 1614 0 R]/Pg 8 0 R>> +endobj +569 0 obj +<</P 1665 0 R/S/Link/Type/StructElem/K[1707 0 R 1613 0 R]/Pg 8 0 R>> +endobj +1707 0 obj +<</Type/OBJR/Obj 281 0 R/Pg 8 0 R>> +endobj +1613 0 obj +<</P 569 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 77>> +endobj +1614 0 obj +<</P 1665 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 78>> +endobj +1666 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[570 0 R 1616 0 R]/Pg 8 0 R>> +endobj +570 0 obj +<</P 1666 0 R/S/Link/Type/StructElem/K[1708 0 R 1615 0 R]/Pg 8 0 R>> +endobj +1708 0 obj +<</Type/OBJR/Obj 282 0 R/Pg 8 0 R>> +endobj +1615 0 obj +<</P 570 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 79>> +endobj +1616 0 obj +<</P 1666 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 80>> +endobj +1667 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[571 0 R 1618 0 R]/Pg 8 0 R>> +endobj +571 0 obj +<</P 1667 0 R/S/Link/Type/StructElem/K[1709 0 R 1617 0 R]/Pg 8 0 R>> +endobj +1709 0 obj +<</Type/OBJR/Obj 283 0 R/Pg 8 0 R>> +endobj +1617 0 obj +<</P 571 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 81>> +endobj +1618 0 obj +<</P 1667 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 82>> +endobj +1668 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[572 0 R 1620 0 R]/Pg 8 0 R>> +endobj +572 0 obj +<</P 1668 0 R/S/Link/Type/StructElem/K[1710 0 R 1619 0 R]/Pg 8 0 R>> +endobj +1710 0 obj +<</Type/OBJR/Obj 284 0 R/Pg 8 0 R>> +endobj +1619 0 obj +<</P 572 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 83>> +endobj +1620 0 obj +<</P 1668 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 84>> +endobj +1669 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[573 0 R 1622 0 R]/Pg 8 0 R>> +endobj +573 0 obj +<</P 1669 0 R/S/Link/Type/StructElem/K[1711 0 R 1621 0 R]/Pg 8 0 R>> +endobj +1711 0 obj +<</Type/OBJR/Obj 285 0 R/Pg 8 0 R>> +endobj +1621 0 obj +<</P 573 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 85>> +endobj +1622 0 obj +<</P 1669 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 86>> +endobj +1670 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[574 0 R 1624 0 R]/Pg 8 0 R>> +endobj +574 0 obj +<</P 1670 0 R/S/Link/Type/StructElem/K[1712 0 R 1623 0 R]/Pg 8 0 R>> +endobj +1712 0 obj +<</Type/OBJR/Obj 286 0 R/Pg 8 0 R>> +endobj +1623 0 obj +<</P 574 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 87>> +endobj +1624 0 obj +<</P 1670 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 88>> +endobj +1671 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[575 0 R 1626 0 R]/Pg 8 0 R>> +endobj +575 0 obj +<</P 1671 0 R/S/Link/Type/StructElem/K[1713 0 R 1625 0 R]/Pg 8 0 R>> +endobj +1713 0 obj +<</Type/OBJR/Obj 287 0 R/Pg 8 0 R>> +endobj +1625 0 obj +<</P 575 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 89>> +endobj +1626 0 obj +<</P 1671 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 90>> +endobj +1672 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[576 0 R 1628 0 R]/Pg 8 0 R>> +endobj +576 0 obj +<</P 1672 0 R/S/Link/Type/StructElem/K[1714 0 R 1627 0 R]/Pg 8 0 R>> +endobj +1714 0 obj +<</Type/OBJR/Obj 288 0 R/Pg 8 0 R>> +endobj +1627 0 obj +<</P 576 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 91>> +endobj +1628 0 obj +<</P 1672 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 92>> +endobj +1673 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[577 0 R 1630 0 R]/Pg 8 0 R>> +endobj +577 0 obj +<</P 1673 0 R/S/Link/Type/StructElem/K[1715 0 R 1629 0 R]/Pg 8 0 R>> +endobj +1715 0 obj +<</Type/OBJR/Obj 289 0 R/Pg 8 0 R>> +endobj +1629 0 obj +<</P 577 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 93>> +endobj +1630 0 obj +<</P 1673 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 94>> +endobj +1674 0 obj +<</P 788 0 R/S/TOCI/Type/StructElem/K[578 0 R 1632 0 R]/Pg 8 0 R>> +endobj +578 0 obj +<</P 1674 0 R/S/Link/Type/StructElem/K[1716 0 R 1631 0 R]/Pg 8 0 R>> +endobj +1716 0 obj +<</Type/OBJR/Obj 290 0 R/Pg 8 0 R>> +endobj +1631 0 obj +<</P 578 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 95>> +endobj +1632 0 obj +<</P 1674 0 R/S/Span/Type/StructElem/Pg 8 0 R/K 96>> +endobj +789 0 obj +<</P 532 0 R/S/TOC/Type/StructElem/K[1717 0 R 1718 0 R 1719 0 R 1720 0 R 1721 0 R 1722 0 R 1723 0 R 1724 0 R 1725 0 R 1726 0 R 1727 0 R 1728 0 R 1729 0 R 1730 0 R 1731 0 R 1732 0 R 1733 0 R 1734 0 R 1735 0 R 1736 0 R 1737 0 R 1738 0 R 1739 0 R 1740 0 R 1741 0 R 1742 0 R 1743 0 R 1744 0 R 1745 0 R 1746 0 R 1747 0 R 1748 0 R 1749 0 R 1750 0 R 1751 0 R 1752 0 R 1753 0 R 1754 0 R 1755 0 R 1756 0 R 1757 0 R 1758 0 R]/Pg 209 0 R>> +endobj +1717 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[579 0 R 1759 0 R]/Pg 209 0 R>> +endobj +579 0 obj +<</P 1717 0 R/S/Link/Type/StructElem/K[1760 0 R 1761 0 R]/Pg 209 0 R>> +endobj +1760 0 obj +<</Type/OBJR/Obj 297 0 R/Pg 209 0 R>> +endobj +1761 0 obj +<</P 579 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 0>> +endobj +580 0 obj +[1761 0 R 1759 0 R 1762 0 R 1763 0 R 1764 0 R 1765 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1773 0 R 1774 0 R 1775 0 R 1776 0 R 1777 0 R 1778 0 R 1779 0 R 1780 0 R 1781 0 R 1782 0 R 1783 0 R 1784 0 R 1785 0 R 1786 0 R 1787 0 R 1788 0 R 1789 0 R 1790 0 R 1791 0 R 1792 0 R 1793 0 R 1794 0 R 1795 0 R 1796 0 R 1797 0 R 1798 0 R 1799 0 R 1800 0 R 1801 0 R 1802 0 R 1803 0 R 1804 0 R 1805 0 R 1806 0 R 1807 0 R 1808 0 R 1809 0 R 1810 0 R 1811 0 R 1812 0 R 1813 0 R 1814 0 R 1815 0 R 1816 0 R 1817 0 R 1818 0 R 1819 0 R 1820 0 R 1821 0 R 1822 0 R 1823 0 R 1824 0 R 1825 0 R 1826 0 R 1827 0 R 1828 0 R 1829 0 R 1830 0 R 1831 0 R 1832 0 R 1833 0 R 1834 0 R 1835 0 R 1836 0 R 1837 0 R 1838 0 R 1839 0 R 1840 0 R 1841 0 R 1842 0 R 1843 0 R 1844 0 R] +endobj +1759 0 obj +<</P 1717 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 1>> +endobj +1718 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[581 0 R 1763 0 R]/Pg 209 0 R>> +endobj +581 0 obj +<</P 1718 0 R/S/Link/Type/StructElem/K[1845 0 R 1762 0 R]/Pg 209 0 R>> +endobj +1845 0 obj +<</Type/OBJR/Obj 298 0 R/Pg 209 0 R>> +endobj +1762 0 obj +<</P 581 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 2>> +endobj +1763 0 obj +<</P 1718 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 3>> +endobj +1719 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[582 0 R 1765 0 R]/Pg 209 0 R>> +endobj +582 0 obj +<</P 1719 0 R/S/Link/Type/StructElem/K[1846 0 R 1764 0 R]/Pg 209 0 R>> +endobj +1846 0 obj +<</Type/OBJR/Obj 299 0 R/Pg 209 0 R>> +endobj +1764 0 obj +<</P 582 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 4>> +endobj +1765 0 obj +<</P 1719 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 5>> +endobj +1720 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[583 0 R 1767 0 R]/Pg 209 0 R>> +endobj +583 0 obj +<</P 1720 0 R/S/Link/Type/StructElem/K[1847 0 R 1848 0 R 1766 0 R]/Pg 209 0 R>> +endobj +1847 0 obj +<</Type/OBJR/Obj 300 0 R/Pg 209 0 R>> +endobj +1848 0 obj +<</Type/OBJR/Obj 301 0 R/Pg 209 0 R>> +endobj +1766 0 obj +<</P 583 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 6>> +endobj +1767 0 obj +<</P 1720 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 7>> +endobj +1721 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[584 0 R 1769 0 R]/Pg 209 0 R>> +endobj +584 0 obj +<</P 1721 0 R/S/Link/Type/StructElem/K[1849 0 R 1768 0 R]/Pg 209 0 R>> +endobj +1849 0 obj +<</Type/OBJR/Obj 302 0 R/Pg 209 0 R>> +endobj +1768 0 obj +<</P 584 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 8>> +endobj +1769 0 obj +<</P 1721 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 9>> +endobj +1722 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[585 0 R 1771 0 R]/Pg 209 0 R>> +endobj +585 0 obj +<</P 1722 0 R/S/Link/Type/StructElem/K[1850 0 R 1770 0 R]/Pg 209 0 R>> +endobj +1850 0 obj +<</Type/OBJR/Obj 303 0 R/Pg 209 0 R>> +endobj +1770 0 obj +<</P 585 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 10>> +endobj +1771 0 obj +<</P 1722 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 11>> +endobj +1723 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[586 0 R 1773 0 R]/Pg 209 0 R>> +endobj +586 0 obj +<</P 1723 0 R/S/Link/Type/StructElem/K[1851 0 R 1772 0 R]/Pg 209 0 R>> +endobj +1851 0 obj +<</Type/OBJR/Obj 304 0 R/Pg 209 0 R>> +endobj +1772 0 obj +<</P 586 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 12>> +endobj +1773 0 obj +<</P 1723 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 13>> +endobj +1724 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[587 0 R 1775 0 R]/Pg 209 0 R>> +endobj +587 0 obj +<</P 1724 0 R/S/Link/Type/StructElem/K[1852 0 R 1774 0 R]/Pg 209 0 R>> +endobj +1852 0 obj +<</Type/OBJR/Obj 305 0 R/Pg 209 0 R>> +endobj +1774 0 obj +<</P 587 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 14>> +endobj +1775 0 obj +<</P 1724 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 15>> +endobj +1725 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[588 0 R 1777 0 R]/Pg 209 0 R>> +endobj +588 0 obj +<</P 1725 0 R/S/Link/Type/StructElem/K[1853 0 R 1776 0 R]/Pg 209 0 R>> +endobj +1853 0 obj +<</Type/OBJR/Obj 306 0 R/Pg 209 0 R>> +endobj +1776 0 obj +<</P 588 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 16>> +endobj +1777 0 obj +<</P 1725 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 17>> +endobj +1726 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[589 0 R 1779 0 R]/Pg 209 0 R>> +endobj +589 0 obj +<</P 1726 0 R/S/Link/Type/StructElem/K[1854 0 R 1778 0 R]/Pg 209 0 R>> +endobj +1854 0 obj +<</Type/OBJR/Obj 307 0 R/Pg 209 0 R>> +endobj +1778 0 obj +<</P 589 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 18>> +endobj +1779 0 obj +<</P 1726 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 19>> +endobj +1727 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[590 0 R 1781 0 R]/Pg 209 0 R>> +endobj +590 0 obj +<</P 1727 0 R/S/Link/Type/StructElem/K[1855 0 R 1780 0 R]/Pg 209 0 R>> +endobj +1855 0 obj +<</Type/OBJR/Obj 308 0 R/Pg 209 0 R>> +endobj +1780 0 obj +<</P 590 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 20>> +endobj +1781 0 obj +<</P 1727 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 21>> +endobj +1728 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[591 0 R 1783 0 R]/Pg 209 0 R>> +endobj +591 0 obj +<</P 1728 0 R/S/Link/Type/StructElem/K[1856 0 R 1782 0 R]/Pg 209 0 R>> +endobj +1856 0 obj +<</Type/OBJR/Obj 309 0 R/Pg 209 0 R>> +endobj +1782 0 obj +<</P 591 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 22>> +endobj +1783 0 obj +<</P 1728 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 23>> +endobj +1729 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[592 0 R 1785 0 R]/Pg 209 0 R>> +endobj +592 0 obj +<</P 1729 0 R/S/Link/Type/StructElem/K[1857 0 R 1858 0 R 1784 0 R]/Pg 209 0 R>> +endobj +1857 0 obj +<</Type/OBJR/Obj 310 0 R/Pg 209 0 R>> +endobj +1858 0 obj +<</Type/OBJR/Obj 311 0 R/Pg 209 0 R>> +endobj +1784 0 obj +<</P 592 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 24>> +endobj +1785 0 obj +<</P 1729 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 25>> +endobj +1730 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[593 0 R 1787 0 R]/Pg 209 0 R>> +endobj +593 0 obj +<</P 1730 0 R/S/Link/Type/StructElem/K[1859 0 R 1786 0 R]/Pg 209 0 R>> +endobj +1859 0 obj +<</Type/OBJR/Obj 312 0 R/Pg 209 0 R>> +endobj +1786 0 obj +<</P 593 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 26>> +endobj +1787 0 obj +<</P 1730 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 27>> +endobj +1731 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[594 0 R 1789 0 R]/Pg 209 0 R>> +endobj +594 0 obj +<</P 1731 0 R/S/Link/Type/StructElem/K[1860 0 R 1861 0 R 1788 0 R]/Pg 209 0 R>> +endobj +1860 0 obj +<</Type/OBJR/Obj 313 0 R/Pg 209 0 R>> +endobj +1861 0 obj +<</Type/OBJR/Obj 314 0 R/Pg 209 0 R>> +endobj +1788 0 obj +<</P 594 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 28>> +endobj +1789 0 obj +<</P 1731 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 29>> +endobj +1732 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[595 0 R 1791 0 R]/Pg 209 0 R>> +endobj +595 0 obj +<</P 1732 0 R/S/Link/Type/StructElem/K[1862 0 R 1790 0 R]/Pg 209 0 R>> +endobj +1862 0 obj +<</Type/OBJR/Obj 315 0 R/Pg 209 0 R>> +endobj +1790 0 obj +<</P 595 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 30>> +endobj +1791 0 obj +<</P 1732 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 31>> +endobj +1733 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[596 0 R 1793 0 R]/Pg 209 0 R>> +endobj +596 0 obj +<</P 1733 0 R/S/Link/Type/StructElem/K[1863 0 R 1792 0 R]/Pg 209 0 R>> +endobj +1863 0 obj +<</Type/OBJR/Obj 316 0 R/Pg 209 0 R>> +endobj +1792 0 obj +<</P 596 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 32>> +endobj +1793 0 obj +<</P 1733 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 33>> +endobj +1734 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[597 0 R 1795 0 R]/Pg 209 0 R>> +endobj +597 0 obj +<</P 1734 0 R/S/Link/Type/StructElem/K[1864 0 R 1794 0 R]/Pg 209 0 R>> +endobj +1864 0 obj +<</Type/OBJR/Obj 317 0 R/Pg 209 0 R>> +endobj +1794 0 obj +<</P 597 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 34>> +endobj +1795 0 obj +<</P 1734 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 35>> +endobj +1735 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[598 0 R 1797 0 R]/Pg 209 0 R>> +endobj +598 0 obj +<</P 1735 0 R/S/Link/Type/StructElem/K[1865 0 R 1796 0 R]/Pg 209 0 R>> +endobj +1865 0 obj +<</Type/OBJR/Obj 318 0 R/Pg 209 0 R>> +endobj +1796 0 obj +<</P 598 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 36>> +endobj +1797 0 obj +<</P 1735 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 37>> +endobj +1736 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[599 0 R 1799 0 R]/Pg 209 0 R>> +endobj +599 0 obj +<</P 1736 0 R/S/Link/Type/StructElem/K[1866 0 R 1798 0 R]/Pg 209 0 R>> +endobj +1866 0 obj +<</Type/OBJR/Obj 319 0 R/Pg 209 0 R>> +endobj +1798 0 obj +<</P 599 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 38>> +endobj +1799 0 obj +<</P 1736 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 39>> +endobj +1737 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[600 0 R 1801 0 R]/Pg 209 0 R>> +endobj +600 0 obj +<</P 1737 0 R/S/Link/Type/StructElem/K[1867 0 R 1800 0 R]/Pg 209 0 R>> +endobj +1867 0 obj +<</Type/OBJR/Obj 320 0 R/Pg 209 0 R>> +endobj +1800 0 obj +<</P 600 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 40>> +endobj +1801 0 obj +<</P 1737 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 41>> +endobj +1738 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[601 0 R 1803 0 R]/Pg 209 0 R>> +endobj +601 0 obj +<</P 1738 0 R/S/Link/Type/StructElem/K[1868 0 R 1802 0 R]/Pg 209 0 R>> +endobj +1868 0 obj +<</Type/OBJR/Obj 321 0 R/Pg 209 0 R>> +endobj +1802 0 obj +<</P 601 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 42>> +endobj +1803 0 obj +<</P 1738 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 43>> +endobj +1739 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[602 0 R 1805 0 R]/Pg 209 0 R>> +endobj +602 0 obj +<</P 1739 0 R/S/Link/Type/StructElem/K[1869 0 R 1804 0 R]/Pg 209 0 R>> +endobj +1869 0 obj +<</Type/OBJR/Obj 322 0 R/Pg 209 0 R>> +endobj +1804 0 obj +<</P 602 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 44>> +endobj +1805 0 obj +<</P 1739 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 45>> +endobj +1740 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[603 0 R 1807 0 R]/Pg 209 0 R>> +endobj +603 0 obj +<</P 1740 0 R/S/Link/Type/StructElem/K[1870 0 R 1806 0 R]/Pg 209 0 R>> +endobj +1870 0 obj +<</Type/OBJR/Obj 323 0 R/Pg 209 0 R>> +endobj +1806 0 obj +<</P 603 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 46>> +endobj +1807 0 obj +<</P 1740 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 47>> +endobj +1741 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[604 0 R 1809 0 R]/Pg 209 0 R>> +endobj +604 0 obj +<</P 1741 0 R/S/Link/Type/StructElem/K[1871 0 R 1808 0 R]/Pg 209 0 R>> +endobj +1871 0 obj +<</Type/OBJR/Obj 324 0 R/Pg 209 0 R>> +endobj +1808 0 obj +<</P 604 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 48>> +endobj +1809 0 obj +<</P 1741 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 49>> +endobj +1742 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[605 0 R 1811 0 R]/Pg 209 0 R>> +endobj +605 0 obj +<</P 1742 0 R/S/Link/Type/StructElem/K[1872 0 R 1873 0 R 1810 0 R]/Pg 209 0 R>> +endobj +1872 0 obj +<</Type/OBJR/Obj 325 0 R/Pg 209 0 R>> +endobj +1873 0 obj +<</Type/OBJR/Obj 326 0 R/Pg 209 0 R>> +endobj +1810 0 obj +<</P 605 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 50>> +endobj +1811 0 obj +<</P 1742 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 51>> +endobj +1743 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[606 0 R 1813 0 R]/Pg 209 0 R>> +endobj +606 0 obj +<</P 1743 0 R/S/Link/Type/StructElem/K[1874 0 R 1812 0 R]/Pg 209 0 R>> +endobj +1874 0 obj +<</Type/OBJR/Obj 327 0 R/Pg 209 0 R>> +endobj +1812 0 obj +<</P 606 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 52>> +endobj +1813 0 obj +<</P 1743 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 53>> +endobj +1744 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[607 0 R 1815 0 R]/Pg 209 0 R>> +endobj +607 0 obj +<</P 1744 0 R/S/Link/Type/StructElem/K[1875 0 R 1814 0 R]/Pg 209 0 R>> +endobj +1875 0 obj +<</Type/OBJR/Obj 328 0 R/Pg 209 0 R>> +endobj +1814 0 obj +<</P 607 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 54>> +endobj +1815 0 obj +<</P 1744 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 55>> +endobj +1745 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[608 0 R 1817 0 R]/Pg 209 0 R>> +endobj +608 0 obj +<</P 1745 0 R/S/Link/Type/StructElem/K[1876 0 R 1816 0 R]/Pg 209 0 R>> +endobj +1876 0 obj +<</Type/OBJR/Obj 329 0 R/Pg 209 0 R>> +endobj +1816 0 obj +<</P 608 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 56>> +endobj +1817 0 obj +<</P 1745 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 57>> +endobj +1746 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[609 0 R 1819 0 R]/Pg 209 0 R>> +endobj +609 0 obj +<</P 1746 0 R/S/Link/Type/StructElem/K[1877 0 R 1818 0 R]/Pg 209 0 R>> +endobj +1877 0 obj +<</Type/OBJR/Obj 330 0 R/Pg 209 0 R>> +endobj +1818 0 obj +<</P 609 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 58>> +endobj +1819 0 obj +<</P 1746 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 59>> +endobj +1747 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[610 0 R 1821 0 R]/Pg 209 0 R>> +endobj +610 0 obj +<</P 1747 0 R/S/Link/Type/StructElem/K[1878 0 R 1820 0 R]/Pg 209 0 R>> +endobj +1878 0 obj +<</Type/OBJR/Obj 331 0 R/Pg 209 0 R>> +endobj +1820 0 obj +<</P 610 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 60>> +endobj +1821 0 obj +<</P 1747 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 61>> +endobj +1748 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[611 0 R 1823 0 R]/Pg 209 0 R>> +endobj +611 0 obj +<</P 1748 0 R/S/Link/Type/StructElem/K[1879 0 R 1822 0 R]/Pg 209 0 R>> +endobj +1879 0 obj +<</Type/OBJR/Obj 332 0 R/Pg 209 0 R>> +endobj +1822 0 obj +<</P 611 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 62>> +endobj +1823 0 obj +<</P 1748 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 63>> +endobj +1749 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[612 0 R 1825 0 R]/Pg 209 0 R>> +endobj +612 0 obj +<</P 1749 0 R/S/Link/Type/StructElem/K[1880 0 R 1824 0 R]/Pg 209 0 R>> +endobj +1880 0 obj +<</Type/OBJR/Obj 333 0 R/Pg 209 0 R>> +endobj +1824 0 obj +<</P 612 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 64>> +endobj +1825 0 obj +<</P 1749 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 65>> +endobj +1750 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[613 0 R 1827 0 R]/Pg 209 0 R>> +endobj +613 0 obj +<</P 1750 0 R/S/Link/Type/StructElem/K[1881 0 R 1826 0 R]/Pg 209 0 R>> +endobj +1881 0 obj +<</Type/OBJR/Obj 334 0 R/Pg 209 0 R>> +endobj +1826 0 obj +<</P 613 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 66>> +endobj +1827 0 obj +<</P 1750 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 67>> +endobj +1751 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[614 0 R 1829 0 R]/Pg 209 0 R>> +endobj +614 0 obj +<</P 1751 0 R/S/Link/Type/StructElem/K[1882 0 R 1828 0 R]/Pg 209 0 R>> +endobj +1882 0 obj +<</Type/OBJR/Obj 335 0 R/Pg 209 0 R>> +endobj +1828 0 obj +<</P 614 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 68>> +endobj +1829 0 obj +<</P 1751 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 69>> +endobj +1752 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[615 0 R 1831 0 R]/Pg 209 0 R>> +endobj +615 0 obj +<</P 1752 0 R/S/Link/Type/StructElem/K[1883 0 R 1830 0 R]/Pg 209 0 R>> +endobj +1883 0 obj +<</Type/OBJR/Obj 336 0 R/Pg 209 0 R>> +endobj +1830 0 obj +<</P 615 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 70>> +endobj +1831 0 obj +<</P 1752 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 71>> +endobj +1753 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[616 0 R 1833 0 R]/Pg 209 0 R>> +endobj +616 0 obj +<</P 1753 0 R/S/Link/Type/StructElem/K[1884 0 R 1832 0 R]/Pg 209 0 R>> +endobj +1884 0 obj +<</Type/OBJR/Obj 337 0 R/Pg 209 0 R>> +endobj +1832 0 obj +<</P 616 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 72>> +endobj +1833 0 obj +<</P 1753 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 73>> +endobj +1754 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[617 0 R 1835 0 R]/Pg 209 0 R>> +endobj +617 0 obj +<</P 1754 0 R/S/Link/Type/StructElem/K[1885 0 R 1834 0 R]/Pg 209 0 R>> +endobj +1885 0 obj +<</Type/OBJR/Obj 338 0 R/Pg 209 0 R>> +endobj +1834 0 obj +<</P 617 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 74>> +endobj +1835 0 obj +<</P 1754 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 75>> +endobj +1755 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[618 0 R 1837 0 R]/Pg 209 0 R>> +endobj +618 0 obj +<</P 1755 0 R/S/Link/Type/StructElem/K[1886 0 R 1836 0 R]/Pg 209 0 R>> +endobj +1886 0 obj +<</Type/OBJR/Obj 339 0 R/Pg 209 0 R>> +endobj +1836 0 obj +<</P 618 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 76>> +endobj +1837 0 obj +<</P 1755 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 77>> +endobj +1756 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[619 0 R 1839 0 R]/Pg 209 0 R>> +endobj +619 0 obj +<</P 1756 0 R/S/Link/Type/StructElem/K[1887 0 R 1838 0 R]/Pg 209 0 R>> +endobj +1887 0 obj +<</Type/OBJR/Obj 340 0 R/Pg 209 0 R>> +endobj +1838 0 obj +<</P 619 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 78>> +endobj +1839 0 obj +<</P 1756 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 79>> +endobj +1757 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[620 0 R 1841 0 R]/Pg 209 0 R>> +endobj +620 0 obj +<</P 1757 0 R/S/Link/Type/StructElem/K[1888 0 R 1840 0 R]/Pg 209 0 R>> +endobj +1888 0 obj +<</Type/OBJR/Obj 341 0 R/Pg 209 0 R>> +endobj +1840 0 obj +<</P 620 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 80>> +endobj +1841 0 obj +<</P 1757 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 81>> +endobj +1758 0 obj +<</P 789 0 R/S/TOCI/Type/StructElem/K[1842 0 R 621 0 R 1844 0 R]/Pg 209 0 R>> +endobj +1842 0 obj +<</P 1758 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 82>> +endobj +621 0 obj +<</P 1758 0 R/S/Link/Type/StructElem/K[1889 0 R 1843 0 R]/Pg 209 0 R>> +endobj +1889 0 obj +<</Type/OBJR/Obj 342 0 R/Pg 209 0 R>> +endobj +1843 0 obj +<</P 621 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 83>> +endobj +1844 0 obj +<</P 1758 0 R/S/Span/Type/StructElem/Pg 209 0 R/K 84>> +endobj +790 0 obj +<</P 532 0 R/S/TOC/Type/StructElem/K[1890 0 R 1891 0 R 1892 0 R 1893 0 R 1894 0 R 1895 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R 1907 0 R 1908 0 R 1909 0 R 1910 0 R 1911 0 R 1912 0 R 1913 0 R 1914 0 R 1915 0 R 1916 0 R 1917 0 R 1918 0 R 1919 0 R 1920 0 R 1921 0 R]/Pg 210 0 R>> +endobj +1890 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[622 0 R 1922 0 R]/Pg 210 0 R>> +endobj +622 0 obj +<</P 1890 0 R/S/Link/Type/StructElem/K[1923 0 R 1924 0 R]/Pg 210 0 R>> +endobj +1923 0 obj +<</Type/OBJR/Obj 344 0 R/Pg 210 0 R>> +endobj +1924 0 obj +<</P 622 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 0>> +endobj +623 0 obj +[1924 0 R 1922 0 R 1925 0 R 1926 0 R 1927 0 R 1928 0 R 1929 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1934 0 R 1935 0 R 1936 0 R 1937 0 R 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R 1944 0 R 1945 0 R 1946 0 R 1947 0 R 1948 0 R 1949 0 R 1950 0 R 1951 0 R 1952 0 R 1953 0 R 1954 0 R 1955 0 R 1956 0 R 1957 0 R 1958 0 R 1959 0 R 1960 0 R 1961 0 R 1962 0 R 1963 0 R 1964 0 R 1965 0 R 1966 0 R 1967 0 R 1968 0 R 1969 0 R 1970 0 R 1971 0 R 1972 0 R 1973 0 R 1974 0 R 1975 0 R 1976 0 R 1977 0 R 1978 0 R 1979 0 R 1980 0 R 1981 0 R 1982 0 R 1983 0 R 1984 0 R 1985 0 R 1986 0 R] +endobj +1922 0 obj +<</P 1890 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 1>> +endobj +1891 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[624 0 R 1926 0 R]/Pg 210 0 R>> +endobj +624 0 obj +<</P 1891 0 R/S/Link/Type/StructElem/K[1987 0 R 1988 0 R 1925 0 R]/Pg 210 0 R>> +endobj +1987 0 obj +<</Type/OBJR/Obj 345 0 R/Pg 210 0 R>> +endobj +1988 0 obj +<</Type/OBJR/Obj 346 0 R/Pg 210 0 R>> +endobj +1925 0 obj +<</P 624 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 2>> +endobj +1926 0 obj +<</P 1891 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 3>> +endobj +1892 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[625 0 R 1928 0 R]/Pg 210 0 R>> +endobj +625 0 obj +<</P 1892 0 R/S/Link/Type/StructElem/K[1989 0 R 1927 0 R]/Pg 210 0 R>> +endobj +1989 0 obj +<</Type/OBJR/Obj 347 0 R/Pg 210 0 R>> +endobj +1927 0 obj +<</P 625 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 4>> +endobj +1928 0 obj +<</P 1892 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 5>> +endobj +1893 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[626 0 R 1930 0 R]/Pg 210 0 R>> +endobj +626 0 obj +<</P 1893 0 R/S/Link/Type/StructElem/K[1990 0 R 1929 0 R]/Pg 210 0 R>> +endobj +1990 0 obj +<</Type/OBJR/Obj 348 0 R/Pg 210 0 R>> +endobj +1929 0 obj +<</P 626 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 6>> +endobj +1930 0 obj +<</P 1893 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 7>> +endobj +1894 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[627 0 R 1932 0 R]/Pg 210 0 R>> +endobj +627 0 obj +<</P 1894 0 R/S/Link/Type/StructElem/K[1991 0 R 1931 0 R]/Pg 210 0 R>> +endobj +1991 0 obj +<</Type/OBJR/Obj 349 0 R/Pg 210 0 R>> +endobj +1931 0 obj +<</P 627 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 8>> +endobj +1932 0 obj +<</P 1894 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 9>> +endobj +1895 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[628 0 R 1934 0 R]/Pg 210 0 R>> +endobj +628 0 obj +<</P 1895 0 R/S/Link/Type/StructElem/K[1992 0 R 1933 0 R]/Pg 210 0 R>> +endobj +1992 0 obj +<</Type/OBJR/Obj 350 0 R/Pg 210 0 R>> +endobj +1933 0 obj +<</P 628 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 10>> +endobj +1934 0 obj +<</P 1895 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 11>> +endobj +1896 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[629 0 R 1936 0 R]/Pg 210 0 R>> +endobj +629 0 obj +<</P 1896 0 R/S/Link/Type/StructElem/K[1993 0 R 1994 0 R 1935 0 R]/Pg 210 0 R>> +endobj +1993 0 obj +<</Type/OBJR/Obj 351 0 R/Pg 210 0 R>> +endobj +1994 0 obj +<</Type/OBJR/Obj 352 0 R/Pg 210 0 R>> +endobj +1935 0 obj +<</P 629 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 12>> +endobj +1936 0 obj +<</P 1896 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 13>> +endobj +1897 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[630 0 R 1938 0 R]/Pg 210 0 R>> +endobj +630 0 obj +<</P 1897 0 R/S/Link/Type/StructElem/K[1995 0 R 1996 0 R 1937 0 R]/Pg 210 0 R>> +endobj +1995 0 obj +<</Type/OBJR/Obj 353 0 R/Pg 210 0 R>> +endobj +1996 0 obj +<</Type/OBJR/Obj 354 0 R/Pg 210 0 R>> +endobj +1937 0 obj +<</P 630 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 14>> +endobj +1938 0 obj +<</P 1897 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 15>> +endobj +1898 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[631 0 R 1940 0 R]/Pg 210 0 R>> +endobj +631 0 obj +<</P 1898 0 R/S/Link/Type/StructElem/K[1997 0 R 1939 0 R]/Pg 210 0 R>> +endobj +1997 0 obj +<</Type/OBJR/Obj 355 0 R/Pg 210 0 R>> +endobj +1939 0 obj +<</P 631 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 16>> +endobj +1940 0 obj +<</P 1898 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 17>> +endobj +1899 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[632 0 R 1942 0 R]/Pg 210 0 R>> +endobj +632 0 obj +<</P 1899 0 R/S/Link/Type/StructElem/K[1998 0 R 1999 0 R 1941 0 R]/Pg 210 0 R>> +endobj +1998 0 obj +<</Type/OBJR/Obj 356 0 R/Pg 210 0 R>> +endobj +1999 0 obj +<</Type/OBJR/Obj 357 0 R/Pg 210 0 R>> +endobj +1941 0 obj +<</P 632 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 18>> +endobj +1942 0 obj +<</P 1899 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 19>> +endobj +1900 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[633 0 R 1944 0 R]/Pg 210 0 R>> +endobj +633 0 obj +<</P 1900 0 R/S/Link/Type/StructElem/K[2000 0 R 2001 0 R 1943 0 R]/Pg 210 0 R>> +endobj +2000 0 obj +<</Type/OBJR/Obj 358 0 R/Pg 210 0 R>> +endobj +2001 0 obj +<</Type/OBJR/Obj 359 0 R/Pg 210 0 R>> +endobj +1943 0 obj +<</P 633 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 20>> +endobj +1944 0 obj +<</P 1900 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 21>> +endobj +1901 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[634 0 R 1946 0 R]/Pg 210 0 R>> +endobj +634 0 obj +<</P 1901 0 R/S/Link/Type/StructElem/K[2002 0 R 1945 0 R]/Pg 210 0 R>> +endobj +2002 0 obj +<</Type/OBJR/Obj 360 0 R/Pg 210 0 R>> +endobj +1945 0 obj +<</P 634 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 22>> +endobj +1946 0 obj +<</P 1901 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 23>> +endobj +1902 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[635 0 R 1948 0 R]/Pg 210 0 R>> +endobj +635 0 obj +<</P 1902 0 R/S/Link/Type/StructElem/K[2003 0 R 1947 0 R]/Pg 210 0 R>> +endobj +2003 0 obj +<</Type/OBJR/Obj 361 0 R/Pg 210 0 R>> +endobj +1947 0 obj +<</P 635 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 24>> +endobj +1948 0 obj +<</P 1902 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 25>> +endobj +1903 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[636 0 R 1950 0 R]/Pg 210 0 R>> +endobj +636 0 obj +<</P 1903 0 R/S/Link/Type/StructElem/K[2004 0 R 1949 0 R]/Pg 210 0 R>> +endobj +2004 0 obj +<</Type/OBJR/Obj 362 0 R/Pg 210 0 R>> +endobj +1949 0 obj +<</P 636 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 26>> +endobj +1950 0 obj +<</P 1903 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 27>> +endobj +1904 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[637 0 R 1952 0 R]/Pg 210 0 R>> +endobj +637 0 obj +<</P 1904 0 R/S/Link/Type/StructElem/K[2005 0 R 2006 0 R 1951 0 R]/Pg 210 0 R>> +endobj +2005 0 obj +<</Type/OBJR/Obj 363 0 R/Pg 210 0 R>> +endobj +2006 0 obj +<</Type/OBJR/Obj 364 0 R/Pg 210 0 R>> +endobj +1951 0 obj +<</P 637 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 28>> +endobj +1952 0 obj +<</P 1904 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 29>> +endobj +1905 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[638 0 R 1954 0 R]/Pg 210 0 R>> +endobj +638 0 obj +<</P 1905 0 R/S/Link/Type/StructElem/K[2007 0 R 2008 0 R 1953 0 R]/Pg 210 0 R>> +endobj +2007 0 obj +<</Type/OBJR/Obj 365 0 R/Pg 210 0 R>> +endobj +2008 0 obj +<</Type/OBJR/Obj 366 0 R/Pg 210 0 R>> +endobj +1953 0 obj +<</P 638 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 30>> +endobj +1954 0 obj +<</P 1905 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 31>> +endobj +1906 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[639 0 R 1956 0 R]/Pg 210 0 R>> +endobj +639 0 obj +<</P 1906 0 R/S/Link/Type/StructElem/K[2009 0 R 1955 0 R]/Pg 210 0 R>> +endobj +2009 0 obj +<</Type/OBJR/Obj 367 0 R/Pg 210 0 R>> +endobj +1955 0 obj +<</P 639 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 32>> +endobj +1956 0 obj +<</P 1906 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 33>> +endobj +1907 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[640 0 R 1958 0 R]/Pg 210 0 R>> +endobj +640 0 obj +<</P 1907 0 R/S/Link/Type/StructElem/K[2010 0 R 1957 0 R]/Pg 210 0 R>> +endobj +2010 0 obj +<</Type/OBJR/Obj 368 0 R/Pg 210 0 R>> +endobj +1957 0 obj +<</P 640 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 34>> +endobj +1958 0 obj +<</P 1907 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 35>> +endobj +1908 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[641 0 R 1960 0 R]/Pg 210 0 R>> +endobj +641 0 obj +<</P 1908 0 R/S/Link/Type/StructElem/K[2011 0 R 2012 0 R 1959 0 R]/Pg 210 0 R>> +endobj +2011 0 obj +<</Type/OBJR/Obj 369 0 R/Pg 210 0 R>> +endobj +2012 0 obj +<</Type/OBJR/Obj 370 0 R/Pg 210 0 R>> +endobj +1959 0 obj +<</P 641 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 36>> +endobj +1960 0 obj +<</P 1908 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 37>> +endobj +1909 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[642 0 R 1962 0 R]/Pg 210 0 R>> +endobj +642 0 obj +<</P 1909 0 R/S/Link/Type/StructElem/K[2013 0 R 1961 0 R]/Pg 210 0 R>> +endobj +2013 0 obj +<</Type/OBJR/Obj 371 0 R/Pg 210 0 R>> +endobj +1961 0 obj +<</P 642 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 38>> +endobj +1962 0 obj +<</P 1909 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 39>> +endobj +1910 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[643 0 R 1964 0 R]/Pg 210 0 R>> +endobj +643 0 obj +<</P 1910 0 R/S/Link/Type/StructElem/K[2014 0 R 2015 0 R 1963 0 R]/Pg 210 0 R>> +endobj +2014 0 obj +<</Type/OBJR/Obj 372 0 R/Pg 210 0 R>> +endobj +2015 0 obj +<</Type/OBJR/Obj 373 0 R/Pg 210 0 R>> +endobj +1963 0 obj +<</P 643 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 40>> +endobj +1964 0 obj +<</P 1910 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 41>> +endobj +1911 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[644 0 R 1966 0 R]/Pg 210 0 R>> +endobj +644 0 obj +<</P 1911 0 R/S/Link/Type/StructElem/K[2016 0 R 2017 0 R 1965 0 R]/Pg 210 0 R>> +endobj +2016 0 obj +<</Type/OBJR/Obj 374 0 R/Pg 210 0 R>> +endobj +2017 0 obj +<</Type/OBJR/Obj 375 0 R/Pg 210 0 R>> +endobj +1965 0 obj +<</P 644 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 42>> +endobj +1966 0 obj +<</P 1911 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 43>> +endobj +1912 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[645 0 R 1968 0 R]/Pg 210 0 R>> +endobj +645 0 obj +<</P 1912 0 R/S/Link/Type/StructElem/K[2018 0 R 2019 0 R 2020 0 R 1967 0 R]/Pg 210 0 R>> +endobj +2018 0 obj +<</Type/OBJR/Obj 376 0 R/Pg 210 0 R>> +endobj +2019 0 obj +<</Type/OBJR/Obj 377 0 R/Pg 210 0 R>> +endobj +2020 0 obj +<</Type/OBJR/Obj 378 0 R/Pg 210 0 R>> +endobj +1967 0 obj +<</P 645 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 44>> +endobj +1968 0 obj +<</P 1912 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 45>> +endobj +1913 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[646 0 R 1970 0 R]/Pg 210 0 R>> +endobj +646 0 obj +<</P 1913 0 R/S/Link/Type/StructElem/K[2021 0 R 1969 0 R]/Pg 210 0 R>> +endobj +2021 0 obj +<</Type/OBJR/Obj 379 0 R/Pg 210 0 R>> +endobj +1969 0 obj +<</P 646 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 46>> +endobj +1970 0 obj +<</P 1913 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 47>> +endobj +1914 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[647 0 R 1972 0 R]/Pg 210 0 R>> +endobj +647 0 obj +<</P 1914 0 R/S/Link/Type/StructElem/K[2022 0 R 1971 0 R]/Pg 210 0 R>> +endobj +2022 0 obj +<</Type/OBJR/Obj 380 0 R/Pg 210 0 R>> +endobj +1971 0 obj +<</P 647 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 48>> +endobj +1972 0 obj +<</P 1914 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 49>> +endobj +1915 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[648 0 R 1974 0 R]/Pg 210 0 R>> +endobj +648 0 obj +<</P 1915 0 R/S/Link/Type/StructElem/K[2023 0 R 2024 0 R 1973 0 R]/Pg 210 0 R>> +endobj +2023 0 obj +<</Type/OBJR/Obj 381 0 R/Pg 210 0 R>> +endobj +2024 0 obj +<</Type/OBJR/Obj 382 0 R/Pg 210 0 R>> +endobj +1973 0 obj +<</P 648 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 50>> +endobj +1974 0 obj +<</P 1915 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 51>> +endobj +1916 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[649 0 R 1976 0 R]/Pg 210 0 R>> +endobj +649 0 obj +<</P 1916 0 R/S/Link/Type/StructElem/K[2025 0 R 1975 0 R]/Pg 210 0 R>> +endobj +2025 0 obj +<</Type/OBJR/Obj 383 0 R/Pg 210 0 R>> +endobj +1975 0 obj +<</P 649 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 52>> +endobj +1976 0 obj +<</P 1916 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 53>> +endobj +1917 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[650 0 R 1978 0 R]/Pg 210 0 R>> +endobj +650 0 obj +<</P 1917 0 R/S/Link/Type/StructElem/K[2026 0 R 1977 0 R]/Pg 210 0 R>> +endobj +2026 0 obj +<</Type/OBJR/Obj 384 0 R/Pg 210 0 R>> +endobj +1977 0 obj +<</P 650 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 54>> +endobj +1978 0 obj +<</P 1917 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 55>> +endobj +1918 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[651 0 R 1980 0 R]/Pg 210 0 R>> +endobj +651 0 obj +<</P 1918 0 R/S/Link/Type/StructElem/K[2027 0 R 2028 0 R 1979 0 R]/Pg 210 0 R>> +endobj +2027 0 obj +<</Type/OBJR/Obj 385 0 R/Pg 210 0 R>> +endobj +2028 0 obj +<</Type/OBJR/Obj 386 0 R/Pg 210 0 R>> +endobj +1979 0 obj +<</P 651 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 56>> +endobj +1980 0 obj +<</P 1918 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 57>> +endobj +1919 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[652 0 R 1982 0 R]/Pg 210 0 R>> +endobj +652 0 obj +<</P 1919 0 R/S/Link/Type/StructElem/K[2029 0 R 1981 0 R]/Pg 210 0 R>> +endobj +2029 0 obj +<</Type/OBJR/Obj 387 0 R/Pg 210 0 R>> +endobj +1981 0 obj +<</P 652 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 58>> +endobj +1982 0 obj +<</P 1919 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 59>> +endobj +1920 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[653 0 R 1984 0 R]/Pg 210 0 R>> +endobj +653 0 obj +<</P 1920 0 R/S/Link/Type/StructElem/K[2030 0 R 1983 0 R]/Pg 210 0 R>> +endobj +2030 0 obj +<</Type/OBJR/Obj 388 0 R/Pg 210 0 R>> +endobj +1983 0 obj +<</P 653 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 60>> +endobj +1984 0 obj +<</P 1920 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 61>> +endobj +1921 0 obj +<</P 790 0 R/S/TOCI/Type/StructElem/K[654 0 R 1986 0 R]/Pg 210 0 R>> +endobj +654 0 obj +<</P 1921 0 R/S/Link/Type/StructElem/K[2031 0 R 2032 0 R 1985 0 R]/Pg 210 0 R>> +endobj +2031 0 obj +<</Type/OBJR/Obj 389 0 R/Pg 210 0 R>> +endobj +2032 0 obj +<</Type/OBJR/Obj 390 0 R/Pg 210 0 R>> +endobj +1985 0 obj +<</P 654 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 62>> +endobj +1986 0 obj +<</P 1921 0 R/S/Span/Type/StructElem/Pg 210 0 R/K 63>> +endobj +791 0 obj +<</P 532 0 R/S/TOC/Type/StructElem/K[2033 0 R 2034 0 R 2035 0 R 2036 0 R 2037 0 R 2038 0 R 2039 0 R 2040 0 R 2041 0 R 2042 0 R 2043 0 R 2044 0 R 2045 0 R 2046 0 R 2047 0 R 2048 0 R 2049 0 R 2050 0 R 2051 0 R 2052 0 R 2053 0 R 2054 0 R 2055 0 R 2056 0 R 2057 0 R 2058 0 R 2059 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R 2064 0 R 2065 0 R 2066 0 R 2067 0 R]/Pg 211 0 R>> +endobj +2033 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[655 0 R 2068 0 R]/Pg 211 0 R>> +endobj +655 0 obj +<</P 2033 0 R/S/Link/Type/StructElem/K[2069 0 R 2070 0 R 2071 0 R]/Pg 211 0 R>> +endobj +2069 0 obj +<</Type/OBJR/Obj 393 0 R/Pg 211 0 R>> +endobj +2070 0 obj +<</Type/OBJR/Obj 394 0 R/Pg 211 0 R>> +endobj +2071 0 obj +<</P 655 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 0>> +endobj +656 0 obj +[2071 0 R 2068 0 R 2072 0 R 2073 0 R 2074 0 R 2075 0 R 2076 0 R 2077 0 R 2078 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2085 0 R 2086 0 R 2087 0 R 2088 0 R 2089 0 R 2090 0 R 2091 0 R 2092 0 R 2093 0 R 2094 0 R 2095 0 R 2096 0 R 2097 0 R 2098 0 R 2099 0 R 2100 0 R 2101 0 R 2102 0 R 2103 0 R 2104 0 R 2105 0 R 2106 0 R 2107 0 R 2108 0 R 2109 0 R 2110 0 R 2111 0 R 2112 0 R 2113 0 R 2114 0 R 2115 0 R 2116 0 R 2117 0 R 2118 0 R 2119 0 R 2120 0 R 2121 0 R 2122 0 R 2123 0 R 2124 0 R 2125 0 R 2126 0 R 2127 0 R 2128 0 R 2129 0 R 2130 0 R 2131 0 R 2132 0 R 2133 0 R 2134 0 R 2135 0 R 2136 0 R 2137 0 R 2067 0 R] +endobj +2068 0 obj +<</P 2033 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 1>> +endobj +2034 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[657 0 R 2073 0 R]/Pg 211 0 R>> +endobj +657 0 obj +<</P 2034 0 R/S/Link/Type/StructElem/K[2138 0 R 2139 0 R 2072 0 R]/Pg 211 0 R>> +endobj +2138 0 obj +<</Type/OBJR/Obj 395 0 R/Pg 211 0 R>> +endobj +2139 0 obj +<</Type/OBJR/Obj 396 0 R/Pg 211 0 R>> +endobj +2072 0 obj +<</P 657 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 2>> +endobj +2073 0 obj +<</P 2034 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 3>> +endobj +2035 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[658 0 R 2075 0 R]/Pg 211 0 R>> +endobj +658 0 obj +<</P 2035 0 R/S/Link/Type/StructElem/K[2140 0 R 2074 0 R]/Pg 211 0 R>> +endobj +2140 0 obj +<</Type/OBJR/Obj 397 0 R/Pg 211 0 R>> +endobj +2074 0 obj +<</P 658 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 4>> +endobj +2075 0 obj +<</P 2035 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 5>> +endobj +2036 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[659 0 R 2077 0 R]/Pg 211 0 R>> +endobj +659 0 obj +<</P 2036 0 R/S/Link/Type/StructElem/K[2141 0 R 2076 0 R]/Pg 211 0 R>> +endobj +2141 0 obj +<</Type/OBJR/Obj 398 0 R/Pg 211 0 R>> +endobj +2076 0 obj +<</P 659 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 6>> +endobj +2077 0 obj +<</P 2036 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 7>> +endobj +2037 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[660 0 R 2079 0 R]/Pg 211 0 R>> +endobj +660 0 obj +<</P 2037 0 R/S/Link/Type/StructElem/K[2142 0 R 2143 0 R 2078 0 R]/Pg 211 0 R>> +endobj +2142 0 obj +<</Type/OBJR/Obj 399 0 R/Pg 211 0 R>> +endobj +2143 0 obj +<</Type/OBJR/Obj 400 0 R/Pg 211 0 R>> +endobj +2078 0 obj +<</P 660 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 8>> +endobj +2079 0 obj +<</P 2037 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 9>> +endobj +2038 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[661 0 R 2081 0 R]/Pg 211 0 R>> +endobj +661 0 obj +<</P 2038 0 R/S/Link/Type/StructElem/K[2144 0 R 2080 0 R]/Pg 211 0 R>> +endobj +2144 0 obj +<</Type/OBJR/Obj 401 0 R/Pg 211 0 R>> +endobj +2080 0 obj +<</P 661 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 10>> +endobj +2081 0 obj +<</P 2038 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 11>> +endobj +2039 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[662 0 R 2083 0 R]/Pg 211 0 R>> +endobj +662 0 obj +<</P 2039 0 R/S/Link/Type/StructElem/K[2145 0 R 2146 0 R 2082 0 R]/Pg 211 0 R>> +endobj +2145 0 obj +<</Type/OBJR/Obj 402 0 R/Pg 211 0 R>> +endobj +2146 0 obj +<</Type/OBJR/Obj 403 0 R/Pg 211 0 R>> +endobj +2082 0 obj +<</P 662 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 12>> +endobj +2083 0 obj +<</P 2039 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 13>> +endobj +2040 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[663 0 R 2085 0 R]/Pg 211 0 R>> +endobj +663 0 obj +<</P 2040 0 R/S/Link/Type/StructElem/K[2147 0 R 2084 0 R]/Pg 211 0 R>> +endobj +2147 0 obj +<</Type/OBJR/Obj 404 0 R/Pg 211 0 R>> +endobj +2084 0 obj +<</P 663 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 14>> +endobj +2085 0 obj +<</P 2040 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 15>> +endobj +2041 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[664 0 R 2087 0 R]/Pg 211 0 R>> +endobj +664 0 obj +<</P 2041 0 R/S/Link/Type/StructElem/K[2148 0 R 2149 0 R 2086 0 R]/Pg 211 0 R>> +endobj +2148 0 obj +<</Type/OBJR/Obj 405 0 R/Pg 211 0 R>> +endobj +2149 0 obj +<</Type/OBJR/Obj 406 0 R/Pg 211 0 R>> +endobj +2086 0 obj +<</P 664 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 16>> +endobj +2087 0 obj +<</P 2041 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 17>> +endobj +2042 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[665 0 R 2089 0 R]/Pg 211 0 R>> +endobj +665 0 obj +<</P 2042 0 R/S/Link/Type/StructElem/K[2150 0 R 2088 0 R]/Pg 211 0 R>> +endobj +2150 0 obj +<</Type/OBJR/Obj 407 0 R/Pg 211 0 R>> +endobj +2088 0 obj +<</P 665 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 18>> +endobj +2089 0 obj +<</P 2042 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 19>> +endobj +2043 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[666 0 R 2091 0 R]/Pg 211 0 R>> +endobj +666 0 obj +<</P 2043 0 R/S/Link/Type/StructElem/K[2151 0 R 2090 0 R]/Pg 211 0 R>> +endobj +2151 0 obj +<</Type/OBJR/Obj 408 0 R/Pg 211 0 R>> +endobj +2090 0 obj +<</P 666 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 20>> +endobj +2091 0 obj +<</P 2043 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 21>> +endobj +2044 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[667 0 R 2093 0 R]/Pg 211 0 R>> +endobj +667 0 obj +<</P 2044 0 R/S/Link/Type/StructElem/K[2152 0 R 2092 0 R]/Pg 211 0 R>> +endobj +2152 0 obj +<</Type/OBJR/Obj 409 0 R/Pg 211 0 R>> +endobj +2092 0 obj +<</P 667 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 22>> +endobj +2093 0 obj +<</P 2044 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 23>> +endobj +2045 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[668 0 R 2095 0 R]/Pg 211 0 R>> +endobj +668 0 obj +<</P 2045 0 R/S/Link/Type/StructElem/K[2153 0 R 2094 0 R]/Pg 211 0 R>> +endobj +2153 0 obj +<</Type/OBJR/Obj 410 0 R/Pg 211 0 R>> +endobj +2094 0 obj +<</P 668 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 24>> +endobj +2095 0 obj +<</P 2045 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 25>> +endobj +2046 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[669 0 R 2097 0 R]/Pg 211 0 R>> +endobj +669 0 obj +<</P 2046 0 R/S/Link/Type/StructElem/K[2154 0 R 2096 0 R]/Pg 211 0 R>> +endobj +2154 0 obj +<</Type/OBJR/Obj 411 0 R/Pg 211 0 R>> +endobj +2096 0 obj +<</P 669 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 26>> +endobj +2097 0 obj +<</P 2046 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 27>> +endobj +2047 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[670 0 R 2099 0 R]/Pg 211 0 R>> +endobj +670 0 obj +<</P 2047 0 R/S/Link/Type/StructElem/K[2155 0 R 2098 0 R]/Pg 211 0 R>> +endobj +2155 0 obj +<</Type/OBJR/Obj 412 0 R/Pg 211 0 R>> +endobj +2098 0 obj +<</P 670 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 28>> +endobj +2099 0 obj +<</P 2047 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 29>> +endobj +2048 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[671 0 R 2101 0 R]/Pg 211 0 R>> +endobj +671 0 obj +<</P 2048 0 R/S/Link/Type/StructElem/K[2156 0 R 2157 0 R 2100 0 R]/Pg 211 0 R>> +endobj +2156 0 obj +<</Type/OBJR/Obj 413 0 R/Pg 211 0 R>> +endobj +2157 0 obj +<</Type/OBJR/Obj 414 0 R/Pg 211 0 R>> +endobj +2100 0 obj +<</P 671 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 30>> +endobj +2101 0 obj +<</P 2048 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 31>> +endobj +2049 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[672 0 R 2103 0 R]/Pg 211 0 R>> +endobj +672 0 obj +<</P 2049 0 R/S/Link/Type/StructElem/K[2158 0 R 2102 0 R]/Pg 211 0 R>> +endobj +2158 0 obj +<</Type/OBJR/Obj 415 0 R/Pg 211 0 R>> +endobj +2102 0 obj +<</P 672 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 32>> +endobj +2103 0 obj +<</P 2049 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 33>> +endobj +2050 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[673 0 R 2105 0 R]/Pg 211 0 R>> +endobj +673 0 obj +<</P 2050 0 R/S/Link/Type/StructElem/K[2159 0 R 2160 0 R 2104 0 R]/Pg 211 0 R>> +endobj +2159 0 obj +<</Type/OBJR/Obj 416 0 R/Pg 211 0 R>> +endobj +2160 0 obj +<</Type/OBJR/Obj 417 0 R/Pg 211 0 R>> +endobj +2104 0 obj +<</P 673 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 34>> +endobj +2105 0 obj +<</P 2050 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 35>> +endobj +2051 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[674 0 R 2107 0 R]/Pg 211 0 R>> +endobj +674 0 obj +<</P 2051 0 R/S/Link/Type/StructElem/K[2161 0 R 2106 0 R]/Pg 211 0 R>> +endobj +2161 0 obj +<</Type/OBJR/Obj 418 0 R/Pg 211 0 R>> +endobj +2106 0 obj +<</P 674 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 36>> +endobj +2107 0 obj +<</P 2051 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 37>> +endobj +2052 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[675 0 R 2109 0 R]/Pg 211 0 R>> +endobj +675 0 obj +<</P 2052 0 R/S/Link/Type/StructElem/K[2162 0 R 2108 0 R]/Pg 211 0 R>> +endobj +2162 0 obj +<</Type/OBJR/Obj 419 0 R/Pg 211 0 R>> +endobj +2108 0 obj +<</P 675 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 38>> +endobj +2109 0 obj +<</P 2052 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 39>> +endobj +2053 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[676 0 R 2111 0 R]/Pg 211 0 R>> +endobj +676 0 obj +<</P 2053 0 R/S/Link/Type/StructElem/K[2163 0 R 2110 0 R]/Pg 211 0 R>> +endobj +2163 0 obj +<</Type/OBJR/Obj 420 0 R/Pg 211 0 R>> +endobj +2110 0 obj +<</P 676 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 40>> +endobj +2111 0 obj +<</P 2053 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 41>> +endobj +2054 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[677 0 R 2113 0 R]/Pg 211 0 R>> +endobj +677 0 obj +<</P 2054 0 R/S/Link/Type/StructElem/K[2164 0 R 2112 0 R]/Pg 211 0 R>> +endobj +2164 0 obj +<</Type/OBJR/Obj 421 0 R/Pg 211 0 R>> +endobj +2112 0 obj +<</P 677 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 42>> +endobj +2113 0 obj +<</P 2054 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 43>> +endobj +2055 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[678 0 R 2115 0 R]/Pg 211 0 R>> +endobj +678 0 obj +<</P 2055 0 R/S/Link/Type/StructElem/K[2165 0 R 2166 0 R 2114 0 R]/Pg 211 0 R>> +endobj +2165 0 obj +<</Type/OBJR/Obj 422 0 R/Pg 211 0 R>> +endobj +2166 0 obj +<</Type/OBJR/Obj 423 0 R/Pg 211 0 R>> +endobj +2114 0 obj +<</P 678 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 44>> +endobj +2115 0 obj +<</P 2055 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 45>> +endobj +2056 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[679 0 R 2117 0 R]/Pg 211 0 R>> +endobj +679 0 obj +<</P 2056 0 R/S/Link/Type/StructElem/K[2167 0 R 2116 0 R]/Pg 211 0 R>> +endobj +2167 0 obj +<</Type/OBJR/Obj 424 0 R/Pg 211 0 R>> +endobj +2116 0 obj +<</P 679 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 46>> +endobj +2117 0 obj +<</P 2056 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 47>> +endobj +2057 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[680 0 R 2119 0 R]/Pg 211 0 R>> +endobj +680 0 obj +<</P 2057 0 R/S/Link/Type/StructElem/K[2168 0 R 2118 0 R]/Pg 211 0 R>> +endobj +2168 0 obj +<</Type/OBJR/Obj 425 0 R/Pg 211 0 R>> +endobj +2118 0 obj +<</P 680 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 48>> +endobj +2119 0 obj +<</P 2057 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 49>> +endobj +2058 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[681 0 R 2121 0 R]/Pg 211 0 R>> +endobj +681 0 obj +<</P 2058 0 R/S/Link/Type/StructElem/K[2169 0 R 2120 0 R]/Pg 211 0 R>> +endobj +2169 0 obj +<</Type/OBJR/Obj 426 0 R/Pg 211 0 R>> +endobj +2120 0 obj +<</P 681 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 50>> +endobj +2121 0 obj +<</P 2058 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 51>> +endobj +2059 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[682 0 R 2123 0 R]/Pg 211 0 R>> +endobj +682 0 obj +<</P 2059 0 R/S/Link/Type/StructElem/K[2170 0 R 2122 0 R]/Pg 211 0 R>> +endobj +2170 0 obj +<</Type/OBJR/Obj 427 0 R/Pg 211 0 R>> +endobj +2122 0 obj +<</P 682 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 52>> +endobj +2123 0 obj +<</P 2059 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 53>> +endobj +2060 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[683 0 R 2125 0 R]/Pg 211 0 R>> +endobj +683 0 obj +<</P 2060 0 R/S/Link/Type/StructElem/K[2171 0 R 2124 0 R]/Pg 211 0 R>> +endobj +2171 0 obj +<</Type/OBJR/Obj 428 0 R/Pg 211 0 R>> +endobj +2124 0 obj +<</P 683 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 54>> +endobj +2125 0 obj +<</P 2060 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 55>> +endobj +2061 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[684 0 R 2127 0 R]/Pg 211 0 R>> +endobj +684 0 obj +<</P 2061 0 R/S/Link/Type/StructElem/K[2172 0 R 2126 0 R]/Pg 211 0 R>> +endobj +2172 0 obj +<</Type/OBJR/Obj 429 0 R/Pg 211 0 R>> +endobj +2126 0 obj +<</P 684 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 56>> +endobj +2127 0 obj +<</P 2061 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 57>> +endobj +2062 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[685 0 R 2129 0 R]/Pg 211 0 R>> +endobj +685 0 obj +<</P 2062 0 R/S/Link/Type/StructElem/K[2173 0 R 2128 0 R]/Pg 211 0 R>> +endobj +2173 0 obj +<</Type/OBJR/Obj 430 0 R/Pg 211 0 R>> +endobj +2128 0 obj +<</P 685 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 58>> +endobj +2129 0 obj +<</P 2062 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 59>> +endobj +2063 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[686 0 R 2131 0 R]/Pg 211 0 R>> +endobj +686 0 obj +<</P 2063 0 R/S/Link/Type/StructElem/K[2174 0 R 2130 0 R]/Pg 211 0 R>> +endobj +2174 0 obj +<</Type/OBJR/Obj 431 0 R/Pg 211 0 R>> +endobj +2130 0 obj +<</P 686 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 60>> +endobj +2131 0 obj +<</P 2063 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 61>> +endobj +2064 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[687 0 R 2133 0 R]/Pg 211 0 R>> +endobj +687 0 obj +<</P 2064 0 R/S/Link/Type/StructElem/K[2175 0 R 2132 0 R]/Pg 211 0 R>> +endobj +2175 0 obj +<</Type/OBJR/Obj 432 0 R/Pg 211 0 R>> +endobj +2132 0 obj +<</P 687 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 62>> +endobj +2133 0 obj +<</P 2064 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 63>> +endobj +2065 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[688 0 R 2135 0 R]/Pg 211 0 R>> +endobj +688 0 obj +<</P 2065 0 R/S/Link/Type/StructElem/K[2176 0 R 2134 0 R]/Pg 211 0 R>> +endobj +2176 0 obj +<</Type/OBJR/Obj 433 0 R/Pg 211 0 R>> +endobj +2134 0 obj +<</P 688 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 64>> +endobj +2135 0 obj +<</P 2065 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 65>> +endobj +2066 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[689 0 R 2137 0 R]/Pg 211 0 R>> +endobj +689 0 obj +<</P 2066 0 R/S/Link/Type/StructElem/K[2177 0 R 2136 0 R]/Pg 211 0 R>> +endobj +2177 0 obj +<</Type/OBJR/Obj 434 0 R/Pg 211 0 R>> +endobj +2136 0 obj +<</P 689 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 66>> +endobj +2137 0 obj +<</P 2066 0 R/S/Span/Type/StructElem/Pg 211 0 R/K 67>> +endobj +2067 0 obj +<</P 791 0 R/S/TOCI/Type/StructElem/K[68]/Pg 211 0 R>> +endobj +792 0 obj +<</P 532 0 R/S/H1/Type/StructElem/K[0]/Pg 11 0 R>> +endobj +690 0 obj +[792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 797 0 R 797 0 R 797 0 R 797 0 R 797 0 R 797 0 R 797 0 R 797 0 R 2178 0 R 2179 0 R 2180 0 R 2181 0 R 2182 0 R 2183 0 R 2184 0 R 2185 0 R 2186 0 R 2187 0 R 2188 0 R 2189 0 R 800 0 R 801 0 R 2190 0 R 2190 0 R 2190 0 R 2190 0 R 2190 0 R 2191 0 R 2191 0 R 2191 0 R 2191 0 R 2191 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 2192 0 R 2193 0 R 2194 0 R 2195 0 R 2196 0 R 2197 0 R 2198 0 R 2199 0 R 2200 0 R 2201 0 R 2202 0 R 2203 0 R 2204 0 R 2205 0 R 2206 0 R 813 0 R 813 0 R] +endobj +793 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 11 0 R>> +endobj +794 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 11 0 R>> +endobj +795 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[3]/Pg 11 0 R>> +endobj +796 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 11 0 R>> +endobj +797 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5 6 7 8 9 10 11 12 13]/Pg 11 0 R>> +endobj +798 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2178 0 R 2179 0 R 691 0 R 2181 0 R 692 0 R 2183 0 R]/Pg 11 0 R>> +endobj +2178 0 obj +<</P 798 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 14>> +endobj +2179 0 obj +<</P 798 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 15>> +endobj +691 0 obj +<</P 798 0 R/S/Link/Type/StructElem/K[2207 0 R 2180 0 R]/Pg 11 0 R>> +endobj +2207 0 obj +<</Type/OBJR/Obj 438 0 R/Pg 11 0 R>> +endobj +2180 0 obj +<</P 691 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 16>> +endobj +2181 0 obj +<</P 798 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 17>> +endobj +692 0 obj +<</P 798 0 R/S/Link/Type/StructElem/K[2208 0 R 2182 0 R]/Pg 11 0 R>> +endobj +2208 0 obj +<</Type/OBJR/Obj 439 0 R/Pg 11 0 R>> +endobj +2182 0 obj +<</P 692 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 18>> +endobj +2183 0 obj +<</P 798 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 19>> +endobj +799 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2184 0 R 2185 0 R 693 0 R 2187 0 R 694 0 R 2189 0 R]/Pg 11 0 R>> +endobj +2184 0 obj +<</P 799 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 20>> +endobj +2185 0 obj +<</P 799 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 21>> +endobj +693 0 obj +<</P 799 0 R/S/Link/Type/StructElem/K[2209 0 R 2186 0 R]/Pg 11 0 R>> +endobj +2209 0 obj +<</Type/OBJR/Obj 440 0 R/Pg 11 0 R>> +endobj +2186 0 obj +<</P 693 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 22>> +endobj +2187 0 obj +<</P 799 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 23>> +endobj +694 0 obj +<</P 799 0 R/S/Link/Type/StructElem/K[2210 0 R 2188 0 R]/Pg 11 0 R>> +endobj +2210 0 obj +<</Type/OBJR/Obj 441 0 R/Pg 11 0 R>> +endobj +2188 0 obj +<</P 694 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 24>> +endobj +2189 0 obj +<</P 799 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 25>> +endobj +800 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[26]/Pg 11 0 R>> +endobj +801 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 11 0 R>> +endobj +802 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2211 0 R 2212 0 R]/Pg 11 0 R>> +endobj +2211 0 obj +<</P 802 0 R/S/LI/Type/StructElem/K[2190 0 R]/Pg 11 0 R>> +endobj +2190 0 obj +<</P 2211 0 R/S/LBody/Type/StructElem/K[28 29 30 31 32]/Pg 11 0 R>> +endobj +2212 0 obj +<</P 802 0 R/S/LI/Type/StructElem/K[2191 0 R]/Pg 11 0 R>> +endobj +2191 0 obj +<</P 2212 0 R/S/LBody/Type/StructElem/K[33 34 35 36 37]/Pg 11 0 R>> +endobj +803 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[38]/Pg 11 0 R>> +endobj +804 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[39]/Pg 11 0 R>> +endobj +805 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[40]/Pg 11 0 R>> +endobj +806 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 11 0 R>> +endobj +807 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[42]/Pg 11 0 R>> +endobj +808 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[43]/Pg 11 0 R>> +endobj +809 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[44]/Pg 11 0 R>> +endobj +810 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[45]/Pg 11 0 R>> +endobj +811 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[46]/Pg 11 0 R>> +endobj +812 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2192 0 R 2193 0 R 2194 0 R 2195 0 R 2196 0 R 2197 0 R 2198 0 R 2199 0 R 2200 0 R 2201 0 R 2202 0 R 2203 0 R 2204 0 R 695 0 R 2206 0 R]/Pg 11 0 R>> +endobj +2192 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 47>> +endobj +2193 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 48>> +endobj +2194 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 49>> +endobj +2195 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 50>> +endobj +2196 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 51>> +endobj +2197 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 52>> +endobj +2198 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 53>> +endobj +2199 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 54>> +endobj +2200 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 55>> +endobj +2201 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 56>> +endobj +2202 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 57>> +endobj +2203 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 58>> +endobj +2204 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 59>> +endobj +695 0 obj +<</P 812 0 R/S/Link/Type/StructElem/K[2213 0 R 2205 0 R]/Pg 11 0 R>> +endobj +2213 0 obj +<</Type/OBJR/Obj 442 0 R/Pg 11 0 R>> +endobj +2205 0 obj +<</P 695 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 60>> +endobj +2206 0 obj +<</P 812 0 R/S/Span/Type/StructElem/Pg 11 0 R/K 61>> +endobj +813 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[62 63]/Pg 11 0 R>> +endobj +814 0 obj +<</P 532 0 R/S/H1/Type/StructElem/K[0]/Pg 12 0 R>> +endobj +696 0 obj +[814 0 R 815 0 R 2214 0 R 2214 0 R 2214 0 R 2214 0 R 2214 0 R 2214 0 R 2214 0 R 2215 0 R 2215 0 R 2215 0 R 2215 0 R 2215 0 R 2215 0 R 2215 0 R 2215 0 R 2216 0 R 2216 0 R 2216 0 R 2216 0 R 2216 0 R 817 0 R] +endobj +815 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 12 0 R>> +endobj +816 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2217 0 R 2218 0 R 2219 0 R]/Pg 12 0 R>> +endobj +2217 0 obj +<</P 816 0 R/S/LI/Type/StructElem/K[2214 0 R]/Pg 12 0 R>> +endobj +2214 0 obj +<</P 2217 0 R/S/LBody/Type/StructElem/K[2 3 4 5 6 7 8]/Pg 12 0 R>> +endobj +2218 0 obj +<</P 816 0 R/S/LI/Type/StructElem/K[2215 0 R]/Pg 12 0 R>> +endobj +2215 0 obj +<</P 2218 0 R/S/LBody/Type/StructElem/K[9 10 11 12 13 14 15 16]/Pg 12 0 R>> +endobj +2219 0 obj +<</P 816 0 R/S/LI/Type/StructElem/K[2216 0 R]/Pg 12 0 R>> +endobj +2216 0 obj +<</P 2219 0 R/S/LBody/Type/StructElem/K[17 18 19 20 21]/Pg 12 0 R>> +endobj +817 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 12 0 R>> +endobj +818 0 obj +<</P 532 0 R/S/H1/Type/StructElem/K[0]/Pg 46 0 R>> +endobj +697 0 obj +[818 0 R 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R] +endobj +819 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[1]/Pg 46 0 R>> +endobj +820 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 46 0 R>> +endobj +821 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 46 0 R>> +endobj +822 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 46 0 R>> +endobj +823 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 46 0 R>> +endobj +824 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 46 0 R>> +endobj +825 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 46 0 R>> +endobj +826 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 46 0 R>> +endobj +827 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 46 0 R>> +endobj +828 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 46 0 R>> +endobj +829 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 46 0 R>> +endobj +830 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 46 0 R>> +endobj +831 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 46 0 R>> +endobj +832 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 46 0 R>> +endobj +833 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 46 0 R>> +endobj +834 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 46 0 R>> +endobj +835 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 46 0 R>> +endobj +836 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 46 0 R>> +endobj +837 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 46 0 R>> +endobj +838 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 46 0 R>> +endobj +839 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 46 0 R>> +endobj +840 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 46 0 R>> +endobj +841 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 46 0 R>> +endobj +842 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 46 0 R>> +endobj +843 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 46 0 R>> +endobj +844 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 48 0 R>> +endobj +698 0 obj +[844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 852 0 R 852 0 R 853 0 R 2220 0 R 2221 0 R 2222 0 R 855 0 R 856 0 R 2223 0 R 2224 0 R 858 0 R 859 0 R 860 0 R 861 0 R 861 0 R 861 0 R 862 0 R] +endobj +845 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 48 0 R>> +endobj +846 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 48 0 R>> +endobj +847 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 48 0 R>> +endobj +848 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 48 0 R>> +endobj +849 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 48 0 R>> +endobj +850 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[6]/Pg 48 0 R>> +endobj +851 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 48 0 R>> +endobj +852 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10]/Pg 48 0 R>> +endobj +853 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 48 0 R>> +endobj +854 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2225 0 R 2226 0 R 2227 0 R]/Pg 48 0 R>> +endobj +2225 0 obj +<</P 854 0 R/S/LI/Type/StructElem/K[2220 0 R]/Pg 48 0 R>> +endobj +2220 0 obj +<</P 2225 0 R/S/LBody/Type/StructElem/K[12]/Pg 48 0 R>> +endobj +2226 0 obj +<</P 854 0 R/S/LI/Type/StructElem/K[2221 0 R]/Pg 48 0 R>> +endobj +2221 0 obj +<</P 2226 0 R/S/LBody/Type/StructElem/K[13]/Pg 48 0 R>> +endobj +2227 0 obj +<</P 854 0 R/S/LI/Type/StructElem/K[2222 0 R]/Pg 48 0 R>> +endobj +2222 0 obj +<</P 2227 0 R/S/LBody/Type/StructElem/K[14]/Pg 48 0 R>> +endobj +855 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 48 0 R>> +endobj +856 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 48 0 R>> +endobj +857 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2228 0 R 2229 0 R]/Pg 48 0 R>> +endobj +2228 0 obj +<</P 857 0 R/S/LI/Type/StructElem/K[2223 0 R]/Pg 48 0 R>> +endobj +2223 0 obj +<</P 2228 0 R/S/LBody/Type/StructElem/K[17]/Pg 48 0 R>> +endobj +2229 0 obj +<</P 857 0 R/S/LI/Type/StructElem/K[2224 0 R]/Pg 48 0 R>> +endobj +2224 0 obj +<</P 2229 0 R/S/LBody/Type/StructElem/K[18]/Pg 48 0 R>> +endobj +858 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 48 0 R>> +endobj +859 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[20]/Pg 48 0 R>> +endobj +860 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 48 0 R>> +endobj +861 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[22 23 24]/Pg 48 0 R>> +endobj +862 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 48 0 R>> +endobj +863 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 51 0 R>> +endobj +699 0 obj +[863 0 R 864 0 R 864 0 R 864 0 R 865 0 R 866 0 R 2230 0 R 2231 0 R 2232 0 R 2233 0 R 868 0 R 869 0 R 869 0 R 869 0 R 2234 0 R 2235 0 R 2236 0 R 2237 0 R 2238 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 875 0 R 875 0 R 876 0 R 877 0 R] +endobj +864 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[1 2 3]/Pg 51 0 R>> +endobj +865 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 51 0 R>> +endobj +866 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 51 0 R>> +endobj +867 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2239 0 R 2240 0 R 2241 0 R 2242 0 R]/Pg 51 0 R>> +endobj +2239 0 obj +<</P 867 0 R/S/LI/Type/StructElem/K[2230 0 R]/Pg 51 0 R>> +endobj +2230 0 obj +<</P 2239 0 R/S/LBody/Type/StructElem/K[6]/Pg 51 0 R>> +endobj +2240 0 obj +<</P 867 0 R/S/LI/Type/StructElem/K[2231 0 R]/Pg 51 0 R>> +endobj +2231 0 obj +<</P 2240 0 R/S/LBody/Type/StructElem/K[7]/Pg 51 0 R>> +endobj +2241 0 obj +<</P 867 0 R/S/LI/Type/StructElem/K[2232 0 R]/Pg 51 0 R>> +endobj +2232 0 obj +<</P 2241 0 R/S/LBody/Type/StructElem/K[8]/Pg 51 0 R>> +endobj +2242 0 obj +<</P 867 0 R/S/LI/Type/StructElem/K[2233 0 R]/Pg 51 0 R>> +endobj +2233 0 obj +<</P 2242 0 R/S/LBody/Type/StructElem/K[9]/Pg 51 0 R>> +endobj +868 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[10]/Pg 51 0 R>> +endobj +869 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13]/Pg 51 0 R>> +endobj +870 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2234 0 R 700 0 R 2236 0 R 701 0 R 2238 0 R]/Pg 51 0 R>> +endobj +2234 0 obj +<</P 870 0 R/S/Span/Type/StructElem/Pg 51 0 R/K 14>> +endobj +700 0 obj +<</P 870 0 R/S/Link/Type/StructElem/K[2243 0 R 2235 0 R]/Pg 51 0 R>> +endobj +2243 0 obj +<</Type/OBJR/Obj 447 0 R/Pg 51 0 R>> +endobj +2235 0 obj +<</P 700 0 R/S/Span/Type/StructElem/Pg 51 0 R/K 15>> +endobj +2236 0 obj +<</P 870 0 R/S/Span/Type/StructElem/Pg 51 0 R/K 16>> +endobj +701 0 obj +<</P 870 0 R/S/Link/Type/StructElem/K[2244 0 R 2245 0 R 2237 0 R]/Pg 51 0 R>> +endobj +2244 0 obj +<</Type/OBJR/Obj 448 0 R/Pg 51 0 R>> +endobj +2245 0 obj +<</Type/OBJR/Obj 449 0 R/Pg 51 0 R>> +endobj +2237 0 obj +<</P 701 0 R/S/Span/Type/StructElem/Pg 51 0 R/K 17>> +endobj +2238 0 obj +<</P 870 0 R/S/Span/Type/StructElem/Pg 51 0 R/K 18>> +endobj +871 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 51 0 R>> +endobj +872 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 51 0 R>> +endobj +873 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[21]/Pg 51 0 R>> +endobj +874 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 51 0 R>> +endobj +875 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[23 24 25]/Pg 51 0 R>> +endobj +876 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 51 0 R>> +endobj +877 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 51 0 R>> +endobj +878 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 56 0 R>> +endobj +702 0 obj +[878 0 R 879 0 R 880 0 R 881 0 R 2246 0 R 2247 0 R 883 0 R 884 0 R 885 0 R 885 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 2248 0 R 2249 0 R 2250 0 R 2251 0 R 2252 0 R 2253 0 R 2254 0 R 2255 0 R 891 0 R 892 0 R] +endobj +879 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 56 0 R>> +endobj +880 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 56 0 R>> +endobj +881 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 56 0 R>> +endobj +882 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2256 0 R 2257 0 R]/Pg 56 0 R>> +endobj +2256 0 obj +<</P 882 0 R/S/LI/Type/StructElem/K[2246 0 R]/Pg 56 0 R>> +endobj +2246 0 obj +<</P 2256 0 R/S/LBody/Type/StructElem/K[4]/Pg 56 0 R>> +endobj +2257 0 obj +<</P 882 0 R/S/LI/Type/StructElem/K[2247 0 R]/Pg 56 0 R>> +endobj +2247 0 obj +<</P 2257 0 R/S/LBody/Type/StructElem/K[5]/Pg 56 0 R>> +endobj +883 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[6]/Pg 56 0 R>> +endobj +884 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 56 0 R>> +endobj +885 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10]/Pg 56 0 R>> +endobj +886 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 56 0 R>> +endobj +887 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 56 0 R>> +endobj +888 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 56 0 R>> +endobj +889 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 56 0 R>> +endobj +890 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2258 0 R 2259 0 R 2260 0 R 2261 0 R 2262 0 R 2263 0 R 2264 0 R 2265 0 R]/Pg 56 0 R>> +endobj +2258 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2248 0 R]/Pg 56 0 R>> +endobj +2248 0 obj +<</P 2258 0 R/S/LBody/Type/StructElem/K[15]/Pg 56 0 R>> +endobj +2259 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2249 0 R]/Pg 56 0 R>> +endobj +2249 0 obj +<</P 2259 0 R/S/LBody/Type/StructElem/K[16]/Pg 56 0 R>> +endobj +2260 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2250 0 R]/Pg 56 0 R>> +endobj +2250 0 obj +<</P 2260 0 R/S/LBody/Type/StructElem/K[17]/Pg 56 0 R>> +endobj +2261 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2251 0 R]/Pg 56 0 R>> +endobj +2251 0 obj +<</P 2261 0 R/S/LBody/Type/StructElem/K[18]/Pg 56 0 R>> +endobj +2262 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2252 0 R]/Pg 56 0 R>> +endobj +2252 0 obj +<</P 2262 0 R/S/LBody/Type/StructElem/K[19]/Pg 56 0 R>> +endobj +2263 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2253 0 R]/Pg 56 0 R>> +endobj +2253 0 obj +<</P 2263 0 R/S/LBody/Type/StructElem/K[20]/Pg 56 0 R>> +endobj +2264 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2254 0 R]/Pg 56 0 R>> +endobj +2254 0 obj +<</P 2264 0 R/S/LBody/Type/StructElem/K[21]/Pg 56 0 R>> +endobj +2265 0 obj +<</P 890 0 R/S/LI/Type/StructElem/K[2255 0 R]/Pg 56 0 R>> +endobj +2255 0 obj +<</P 2265 0 R/S/LBody/Type/StructElem/K[22]/Pg 56 0 R>> +endobj +891 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 56 0 R>> +endobj +892 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 56 0 R>> +endobj +893 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 57 0 R>> +endobj +703 0 obj +[893 0 R 894 0 R 895 0 R 895 0 R 895 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 896 0 R 897 0 R 898 0 R 898 0 R 898 0 R 899 0 R 2266 0 R 2267 0 R 2268 0 R 2269 0 R 2270 0 R 901 0 R 902 0 R 2271 0 R 2272 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R] +endobj +894 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 57 0 R>> +endobj +895 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[2 3 4]/Pg 57 0 R>> +endobj +896 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5 6 7 8 9 10 11 12 13 14 15 16 17]/Pg 57 0 R>> +endobj +897 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[18]/Pg 57 0 R>> +endobj +898 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[19 20 21]/Pg 57 0 R>> +endobj +899 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 57 0 R>> +endobj +900 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2273 0 R 2274 0 R 2275 0 R 2276 0 R 2277 0 R]/Pg 57 0 R>> +endobj +2273 0 obj +<</P 900 0 R/S/LI/Type/StructElem/K[2266 0 R]/Pg 57 0 R>> +endobj +2266 0 obj +<</P 2273 0 R/S/LBody/Type/StructElem/K[23]/Pg 57 0 R>> +endobj +2274 0 obj +<</P 900 0 R/S/LI/Type/StructElem/K[2267 0 R]/Pg 57 0 R>> +endobj +2267 0 obj +<</P 2274 0 R/S/LBody/Type/StructElem/K[24]/Pg 57 0 R>> +endobj +2275 0 obj +<</P 900 0 R/S/LI/Type/StructElem/K[2268 0 R]/Pg 57 0 R>> +endobj +2268 0 obj +<</P 2275 0 R/S/LBody/Type/StructElem/K[25]/Pg 57 0 R>> +endobj +2276 0 obj +<</P 900 0 R/S/LI/Type/StructElem/K[2269 0 R]/Pg 57 0 R>> +endobj +2269 0 obj +<</P 2276 0 R/S/LBody/Type/StructElem/K[26]/Pg 57 0 R>> +endobj +2277 0 obj +<</P 900 0 R/S/LI/Type/StructElem/K[2270 0 R]/Pg 57 0 R>> +endobj +2270 0 obj +<</P 2277 0 R/S/LBody/Type/StructElem/K[27]/Pg 57 0 R>> +endobj +901 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[28]/Pg 57 0 R>> +endobj +902 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 57 0 R>> +endobj +903 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2278 0 R 2279 0 R]/Pg 57 0 R>> +endobj +2278 0 obj +<</P 903 0 R/S/LI/Type/StructElem/K[2271 0 R]/Pg 57 0 R>> +endobj +2271 0 obj +<</P 2278 0 R/S/LBody/Type/StructElem/K[30]/Pg 57 0 R>> +endobj +2279 0 obj +<</P 903 0 R/S/LI/Type/StructElem/K[2272 0 R]/Pg 57 0 R>> +endobj +2272 0 obj +<</P 2279 0 R/S/LBody/Type/StructElem/K[31]/Pg 57 0 R>> +endobj +904 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[32]/Pg 57 0 R>> +endobj +905 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[33]/Pg 57 0 R>> +endobj +906 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[34]/Pg 57 0 R>> +endobj +907 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[35]/Pg 57 0 R>> +endobj +908 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[36]/Pg 57 0 R>> +endobj +909 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[37]/Pg 57 0 R>> +endobj +910 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[38]/Pg 57 0 R>> +endobj +911 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[39]/Pg 57 0 R>> +endobj +912 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2280 0 R 2281 0 R 2282 0 R 2283 0 R 2284 0 R]/Pg 60 0 R>> +endobj +2280 0 obj +<</P 912 0 R/S/LI/Type/StructElem/K[2285 0 R]/Pg 60 0 R>> +endobj +2285 0 obj +<</P 2280 0 R/S/LBody/Type/StructElem/K[0]/Pg 60 0 R>> +endobj +704 0 obj +[2285 0 R 2286 0 R 2287 0 R 2288 0 R 2289 0 R 913 0 R 913 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 918 0 R 918 0 R 919 0 R 920 0 R 920 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 925 0 R 925 0 R 926 0 R 2290 0 R 2291 0 R 928 0 R 929 0 R] +endobj +2281 0 obj +<</P 912 0 R/S/LI/Type/StructElem/K[2286 0 R]/Pg 60 0 R>> +endobj +2286 0 obj +<</P 2281 0 R/S/LBody/Type/StructElem/K[1]/Pg 60 0 R>> +endobj +2282 0 obj +<</P 912 0 R/S/LI/Type/StructElem/K[2287 0 R]/Pg 60 0 R>> +endobj +2287 0 obj +<</P 2282 0 R/S/LBody/Type/StructElem/K[2]/Pg 60 0 R>> +endobj +2283 0 obj +<</P 912 0 R/S/LI/Type/StructElem/K[2288 0 R]/Pg 60 0 R>> +endobj +2288 0 obj +<</P 2283 0 R/S/LBody/Type/StructElem/K[3]/Pg 60 0 R>> +endobj +2284 0 obj +<</P 912 0 R/S/LI/Type/StructElem/K[2289 0 R]/Pg 60 0 R>> +endobj +2289 0 obj +<</P 2284 0 R/S/LBody/Type/StructElem/K[4]/Pg 60 0 R>> +endobj +913 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 60 0 R>> +endobj +914 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 60 0 R>> +endobj +915 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 60 0 R>> +endobj +916 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[10]/Pg 60 0 R>> +endobj +917 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 60 0 R>> +endobj +918 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[12 13 14]/Pg 60 0 R>> +endobj +919 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 60 0 R>> +endobj +920 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[16 17 18]/Pg 60 0 R>> +endobj +921 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 60 0 R>> +endobj +922 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 60 0 R>> +endobj +923 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[21]/Pg 60 0 R>> +endobj +924 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 60 0 R>> +endobj +925 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[23 24 25]/Pg 60 0 R>> +endobj +926 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 60 0 R>> +endobj +927 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2292 0 R 2293 0 R]/Pg 60 0 R>> +endobj +2292 0 obj +<</P 927 0 R/S/LI/Type/StructElem/K[2290 0 R]/Pg 60 0 R>> +endobj +2290 0 obj +<</P 2292 0 R/S/LBody/Type/StructElem/K[27]/Pg 60 0 R>> +endobj +2293 0 obj +<</P 927 0 R/S/LI/Type/StructElem/K[2291 0 R]/Pg 60 0 R>> +endobj +2291 0 obj +<</P 2293 0 R/S/LBody/Type/StructElem/K[28]/Pg 60 0 R>> +endobj +928 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 60 0 R>> +endobj +929 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[30]/Pg 60 0 R>> +endobj +930 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 65 0 R>> +endobj +705 0 obj +[930 0 R 931 0 R 932 0 R 933 0 R 2294 0 R 2295 0 R 935 0 R 936 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R 938 0 R 939 0 R 940 0 R 941 0 R 941 0 R 941 0 R 942 0 R 943 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 2300 0 R 945 0 R 2301 0 R 947 0 R 948 0 R 2302 0 R 2303 0 R 2304 0 R 950 0 R] +endobj +931 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 65 0 R>> +endobj +932 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 65 0 R>> +endobj +933 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 65 0 R>> +endobj +934 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[706 0 R 2295 0 R]/Pg 65 0 R>> +endobj +706 0 obj +<</P 934 0 R/S/Link/Type/StructElem/K[2305 0 R 2294 0 R]/Pg 65 0 R>> +endobj +2305 0 obj +<</Type/OBJR/Obj 455 0 R/Pg 65 0 R>> +endobj +2294 0 obj +<</P 706 0 R/S/Span/Type/StructElem/Pg 65 0 R/K 4>> +endobj +2295 0 obj +<</P 934 0 R/S/Span/Type/StructElem/Pg 65 0 R/K 5>> +endobj +935 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 65 0 R>> +endobj +936 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 65 0 R>> +endobj +937 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2306 0 R 2307 0 R 2308 0 R 2309 0 R]/Pg 65 0 R>> +endobj +2306 0 obj +<</P 937 0 R/S/LI/Type/StructElem/K[2296 0 R]/Pg 65 0 R>> +endobj +2296 0 obj +<</P 2306 0 R/S/LBody/Type/StructElem/K[8]/Pg 65 0 R>> +endobj +2307 0 obj +<</P 937 0 R/S/LI/Type/StructElem/K[2297 0 R]/Pg 65 0 R>> +endobj +2297 0 obj +<</P 2307 0 R/S/LBody/Type/StructElem/K[9]/Pg 65 0 R>> +endobj +2308 0 obj +<</P 937 0 R/S/LI/Type/StructElem/K[2298 0 R]/Pg 65 0 R>> +endobj +2298 0 obj +<</P 2308 0 R/S/LBody/Type/StructElem/K[10]/Pg 65 0 R>> +endobj +2309 0 obj +<</P 937 0 R/S/LI/Type/StructElem/K[2299 0 R]/Pg 65 0 R>> +endobj +2299 0 obj +<</P 2309 0 R/S/LBody/Type/StructElem/K[11]/Pg 65 0 R>> +endobj +938 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 65 0 R>> +endobj +939 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 65 0 R>> +endobj +940 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 65 0 R>> +endobj +941 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[15 16 17]/Pg 65 0 R>> +endobj +942 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 65 0 R>> +endobj +943 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 65 0 R>> +endobj +944 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2310 0 R]/Pg 65 0 R>> +endobj +2310 0 obj +<</P 944 0 R/S/LI/Type/StructElem/K[2300 0 R]/Pg 65 0 R>> +endobj +2300 0 obj +<</P 2310 0 R/S/LBody/Type/StructElem/K[20 21 22 23 24 25 26 27 28 29 30 31 32 33 34]/Pg 65 0 R>> +endobj +945 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[35]/Pg 65 0 R>> +endobj +946 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2311 0 R]/Pg 65 0 R>> +endobj +2311 0 obj +<</P 946 0 R/S/LI/Type/StructElem/K[2301 0 R]/Pg 65 0 R>> +endobj +2301 0 obj +<</P 2311 0 R/S/LBody/Type/StructElem/K[36]/Pg 65 0 R>> +endobj +947 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[37]/Pg 65 0 R>> +endobj +948 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[38]/Pg 65 0 R>> +endobj +949 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2312 0 R 2313 0 R 2314 0 R]/Pg 65 0 R>> +endobj +2312 0 obj +<</P 949 0 R/S/LI/Type/StructElem/K[2302 0 R]/Pg 65 0 R>> +endobj +2302 0 obj +<</P 2312 0 R/S/LBody/Type/StructElem/K[39]/Pg 65 0 R>> +endobj +2313 0 obj +<</P 949 0 R/S/LI/Type/StructElem/K[2303 0 R]/Pg 65 0 R>> +endobj +2303 0 obj +<</P 2313 0 R/S/LBody/Type/StructElem/K[40]/Pg 65 0 R>> +endobj +2314 0 obj +<</P 949 0 R/S/LI/Type/StructElem/K[2304 0 R]/Pg 65 0 R>> +endobj +2304 0 obj +<</P 2314 0 R/S/LBody/Type/StructElem/K[41]/Pg 65 0 R>> +endobj +950 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[42]/Pg 65 0 R>> +endobj +951 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 68 0 R>> +endobj +707 0 obj +[951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 956 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 963 0 R 963 0 R 964 0 R 965 0 R 966 0 R] +endobj +952 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 68 0 R>> +endobj +953 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 68 0 R>> +endobj +954 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[3]/Pg 68 0 R>> +endobj +955 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 68 0 R>> +endobj +956 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 68 0 R>> +endobj +957 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 68 0 R>> +endobj +958 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 68 0 R>> +endobj +959 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 68 0 R>> +endobj +960 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 68 0 R>> +endobj +961 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 68 0 R>> +endobj +962 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 68 0 R>> +endobj +963 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[14 15 16]/Pg 68 0 R>> +endobj +964 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 68 0 R>> +endobj +965 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 68 0 R>> +endobj +966 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 68 0 R>> +endobj +967 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[0]/Pg 71 0 R>> +endobj +708 0 obj +[967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 972 0 R 972 0 R 973 0 R 2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R 975 0 R 975 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R] +endobj +968 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 71 0 R>> +endobj +969 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 71 0 R>> +endobj +970 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 71 0 R>> +endobj +971 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 71 0 R>> +endobj +972 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 71 0 R>> +endobj +973 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 71 0 R>> +endobj +974 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2320 0 R 2321 0 R 2322 0 R 2323 0 R 2324 0 R]/Pg 71 0 R>> +endobj +2320 0 obj +<</P 974 0 R/S/LI/Type/StructElem/K[2315 0 R]/Pg 71 0 R>> +endobj +2315 0 obj +<</P 2320 0 R/S/LBody/Type/StructElem/K[9]/Pg 71 0 R>> +endobj +2321 0 obj +<</P 974 0 R/S/LI/Type/StructElem/K[2316 0 R]/Pg 71 0 R>> +endobj +2316 0 obj +<</P 2321 0 R/S/LBody/Type/StructElem/K[10]/Pg 71 0 R>> +endobj +2322 0 obj +<</P 974 0 R/S/LI/Type/StructElem/K[2317 0 R]/Pg 71 0 R>> +endobj +2317 0 obj +<</P 2322 0 R/S/LBody/Type/StructElem/K[11]/Pg 71 0 R>> +endobj +2323 0 obj +<</P 974 0 R/S/LI/Type/StructElem/K[2318 0 R]/Pg 71 0 R>> +endobj +2318 0 obj +<</P 2323 0 R/S/LBody/Type/StructElem/K[12]/Pg 71 0 R>> +endobj +2324 0 obj +<</P 974 0 R/S/LI/Type/StructElem/K[2319 0 R]/Pg 71 0 R>> +endobj +2319 0 obj +<</P 2324 0 R/S/LBody/Type/StructElem/K[13]/Pg 71 0 R>> +endobj +975 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[14 15 16]/Pg 71 0 R>> +endobj +976 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 71 0 R>> +endobj +977 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[18]/Pg 71 0 R>> +endobj +978 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 71 0 R>> +endobj +979 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 71 0 R>> +endobj +980 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 71 0 R>> +endobj +981 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 71 0 R>> +endobj +982 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 71 0 R>> +endobj +983 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 73 0 R>> +endobj +709 0 obj +[983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 987 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 2325 0 R 996 0 R 997 0 R] +endobj +984 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 73 0 R>> +endobj +985 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 73 0 R>> +endobj +986 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 73 0 R>> +endobj +987 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[4 5 6]/Pg 73 0 R>> +endobj +988 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 73 0 R>> +endobj +989 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 73 0 R>> +endobj +990 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 73 0 R>> +endobj +991 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 73 0 R>> +endobj +992 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 73 0 R>> +endobj +993 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 73 0 R>> +endobj +994 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 73 0 R>> +endobj +995 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2326 0 R]/Pg 73 0 R>> +endobj +2326 0 obj +<</P 995 0 R/S/LI/Type/StructElem/K[2325 0 R]/Pg 73 0 R>> +endobj +2325 0 obj +<</P 2326 0 R/S/LBody/Type/StructElem/K[14]/Pg 73 0 R>> +endobj +996 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 73 0 R>> +endobj +997 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 73 0 R>> +endobj +998 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 75 0 R>> +endobj +710 0 obj +[998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1004 0 R 1004 0 R 1004 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1009 0 R 1009 0 R 1009 0 R 1009 0 R 1010 0 R 1011 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 1013 0 R 1014 0 R 1015 0 R] +endobj +999 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 75 0 R>> +endobj +1000 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 75 0 R>> +endobj +1001 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 75 0 R>> +endobj +1002 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[4]/Pg 75 0 R>> +endobj +1003 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 75 0 R>> +endobj +1004 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[6 7 8 9 10]/Pg 75 0 R>> +endobj +1005 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 75 0 R>> +endobj +1006 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 75 0 R>> +endobj +1007 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[13]/Pg 75 0 R>> +endobj +1008 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 75 0 R>> +endobj +1009 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[15 16 17 18 19]/Pg 75 0 R>> +endobj +1010 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 75 0 R>> +endobj +1011 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 75 0 R>> +endobj +1012 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2331 0 R 2332 0 R 2333 0 R 2334 0 R]/Pg 75 0 R>> +endobj +2331 0 obj +<</P 1012 0 R/S/LI/Type/StructElem/K[2327 0 R]/Pg 75 0 R>> +endobj +2327 0 obj +<</P 2331 0 R/S/LBody/Type/StructElem/K[22]/Pg 75 0 R>> +endobj +2332 0 obj +<</P 1012 0 R/S/LI/Type/StructElem/K[2328 0 R]/Pg 75 0 R>> +endobj +2328 0 obj +<</P 2332 0 R/S/LBody/Type/StructElem/K[23]/Pg 75 0 R>> +endobj +2333 0 obj +<</P 1012 0 R/S/LI/Type/StructElem/K[2329 0 R]/Pg 75 0 R>> +endobj +2329 0 obj +<</P 2333 0 R/S/LBody/Type/StructElem/K[24]/Pg 75 0 R>> +endobj +2334 0 obj +<</P 1012 0 R/S/LI/Type/StructElem/K[2330 0 R]/Pg 75 0 R>> +endobj +2330 0 obj +<</P 2334 0 R/S/LBody/Type/StructElem/K[25]/Pg 75 0 R>> +endobj +1013 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 75 0 R>> +endobj +1014 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 75 0 R>> +endobj +1015 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[28]/Pg 75 0 R>> +endobj +1016 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 77 0 R>> +endobj +711 0 obj +[1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1029 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R] +endobj +1017 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 77 0 R>> +endobj +1018 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 77 0 R>> +endobj +1019 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 77 0 R>> +endobj +1020 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[4]/Pg 77 0 R>> +endobj +1021 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 77 0 R>> +endobj +1022 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 77 0 R>> +endobj +1023 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 77 0 R>> +endobj +1024 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 77 0 R>> +endobj +1025 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 77 0 R>> +endobj +1026 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 77 0 R>> +endobj +1027 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[11]/Pg 77 0 R>> +endobj +1028 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 77 0 R>> +endobj +1029 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[13 14 15]/Pg 77 0 R>> +endobj +1030 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 77 0 R>> +endobj +1031 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 77 0 R>> +endobj +1032 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 77 0 R>> +endobj +1033 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 80 0 R>> +endobj +712 0 obj +[1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1044 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1054 0 R 1054 0 R 1055 0 R] +endobj +1034 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 80 0 R>> +endobj +1035 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 80 0 R>> +endobj +1036 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 80 0 R>> +endobj +1037 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 80 0 R>> +endobj +1038 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 80 0 R>> +endobj +1039 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 80 0 R>> +endobj +1040 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 80 0 R>> +endobj +1041 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 80 0 R>> +endobj +1042 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 80 0 R>> +endobj +1043 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 80 0 R>> +endobj +1044 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13]/Pg 80 0 R>> +endobj +1045 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 80 0 R>> +endobj +1046 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 80 0 R>> +endobj +1047 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 80 0 R>> +endobj +1048 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 80 0 R>> +endobj +1049 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 80 0 R>> +endobj +1050 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 80 0 R>> +endobj +1051 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 80 0 R>> +endobj +1052 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[21]/Pg 80 0 R>> +endobj +1053 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 80 0 R>> +endobj +1054 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[23 24 25]/Pg 80 0 R>> +endobj +1055 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 80 0 R>> +endobj +1056 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 82 0 R>> +endobj +713 0 obj +[1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R] +endobj +1057 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 82 0 R>> +endobj +1058 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 82 0 R>> +endobj +1059 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 82 0 R>> +endobj +1060 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 82 0 R>> +endobj +1061 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 82 0 R>> +endobj +1062 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 82 0 R>> +endobj +1063 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 82 0 R>> +endobj +1064 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 82 0 R>> +endobj +1065 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 82 0 R>> +endobj +1066 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 82 0 R>> +endobj +1067 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 82 0 R>> +endobj +1068 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 82 0 R>> +endobj +1069 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 82 0 R>> +endobj +1070 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 82 0 R>> +endobj +1071 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 82 0 R>> +endobj +1072 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[16]/Pg 82 0 R>> +endobj +1073 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 82 0 R>> +endobj +1074 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 82 0 R>> +endobj +1075 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 82 0 R>> +endobj +1076 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 82 0 R>> +endobj +1077 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2339 0 R 2340 0 R 2341 0 R 2342 0 R]/Pg 82 0 R>> +endobj +2339 0 obj +<</P 1077 0 R/S/LI/Type/StructElem/K[2335 0 R]/Pg 82 0 R>> +endobj +2335 0 obj +<</P 2339 0 R/S/LBody/Type/StructElem/K[21]/Pg 82 0 R>> +endobj +2340 0 obj +<</P 1077 0 R/S/LI/Type/StructElem/K[2336 0 R]/Pg 82 0 R>> +endobj +2336 0 obj +<</P 2340 0 R/S/LBody/Type/StructElem/K[22]/Pg 82 0 R>> +endobj +2341 0 obj +<</P 1077 0 R/S/LI/Type/StructElem/K[2337 0 R]/Pg 82 0 R>> +endobj +2337 0 obj +<</P 2341 0 R/S/LBody/Type/StructElem/K[23]/Pg 82 0 R>> +endobj +2342 0 obj +<</P 1077 0 R/S/LI/Type/StructElem/K[2338 0 R]/Pg 82 0 R>> +endobj +2338 0 obj +<</P 2342 0 R/S/LBody/Type/StructElem/K[24]/Pg 82 0 R>> +endobj +1078 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[0]/Pg 83 0 R>> +endobj +714 0 obj +[1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1083 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1087 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1093 0 R 1093 0 R 1094 0 R] +endobj +1079 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 83 0 R>> +endobj +1080 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 83 0 R>> +endobj +1081 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[3]/Pg 83 0 R>> +endobj +1082 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 83 0 R>> +endobj +1083 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 83 0 R>> +endobj +1084 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 83 0 R>> +endobj +1085 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[9]/Pg 83 0 R>> +endobj +1086 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 83 0 R>> +endobj +1087 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13]/Pg 83 0 R>> +endobj +1088 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 83 0 R>> +endobj +1089 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 83 0 R>> +endobj +1090 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 83 0 R>> +endobj +1091 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 83 0 R>> +endobj +1092 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 83 0 R>> +endobj +1093 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[19 20 21]/Pg 83 0 R>> +endobj +1094 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 83 0 R>> +endobj +1095 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 88 0 R>> +endobj +715 0 obj +[1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1099 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R] +endobj +1096 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[1]/Pg 88 0 R>> +endobj +1097 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 88 0 R>> +endobj +1098 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 88 0 R>> +endobj +1099 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[4 5 6]/Pg 88 0 R>> +endobj +1100 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 88 0 R>> +endobj +1101 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 88 0 R>> +endobj +1102 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 88 0 R>> +endobj +1103 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 88 0 R>> +endobj +1104 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 88 0 R>> +endobj +1105 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 88 0 R>> +endobj +1106 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 88 0 R>> +endobj +1107 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[14]/Pg 88 0 R>> +endobj +1108 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 88 0 R>> +endobj +1109 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 88 0 R>> +endobj +1110 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 88 0 R>> +endobj +1111 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2347 0 R 2348 0 R 2349 0 R 2350 0 R]/Pg 88 0 R>> +endobj +2347 0 obj +<</P 1111 0 R/S/LI/Type/StructElem/K[2343 0 R]/Pg 88 0 R>> +endobj +2343 0 obj +<</P 2347 0 R/S/LBody/Type/StructElem/K[18]/Pg 88 0 R>> +endobj +2348 0 obj +<</P 1111 0 R/S/LI/Type/StructElem/K[2344 0 R]/Pg 88 0 R>> +endobj +2344 0 obj +<</P 2348 0 R/S/LBody/Type/StructElem/K[19]/Pg 88 0 R>> +endobj +2349 0 obj +<</P 1111 0 R/S/LI/Type/StructElem/K[2345 0 R]/Pg 88 0 R>> +endobj +2345 0 obj +<</P 2349 0 R/S/LBody/Type/StructElem/K[20]/Pg 88 0 R>> +endobj +2350 0 obj +<</P 1111 0 R/S/LI/Type/StructElem/K[2346 0 R]/Pg 88 0 R>> +endobj +2346 0 obj +<</P 2350 0 R/S/LBody/Type/StructElem/K[21]/Pg 88 0 R>> +endobj +1112 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R]/Pg 90 0 R>> +endobj +2351 0 obj +<</P 1112 0 R/S/LI/Type/StructElem/K[2356 0 R]/Pg 90 0 R>> +endobj +2356 0 obj +<</P 2351 0 R/S/LBody/Type/StructElem/K[0]/Pg 90 0 R>> +endobj +716 0 obj +[2356 0 R 2357 0 R 2358 0 R 2359 0 R 2360 0 R 1113 0 R 1113 0 R 1113 0 R 2361 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1118 0 R 1118 0 R 1119 0 R 2362 0 R 1121 0 R 2363 0 R 1123 0 R 2364 0 R 1125 0 R 2365 0 R 1127 0 R 2366 0 R 1129 0 R 2367 0 R 1131 0 R 2368 0 R] +endobj +2352 0 obj +<</P 1112 0 R/S/LI/Type/StructElem/K[2357 0 R]/Pg 90 0 R>> +endobj +2357 0 obj +<</P 2352 0 R/S/LBody/Type/StructElem/K[1]/Pg 90 0 R>> +endobj +2353 0 obj +<</P 1112 0 R/S/LI/Type/StructElem/K[2358 0 R]/Pg 90 0 R>> +endobj +2358 0 obj +<</P 2353 0 R/S/LBody/Type/StructElem/K[2]/Pg 90 0 R>> +endobj +2354 0 obj +<</P 1112 0 R/S/LI/Type/StructElem/K[2359 0 R]/Pg 90 0 R>> +endobj +2359 0 obj +<</P 2354 0 R/S/LBody/Type/StructElem/K[3]/Pg 90 0 R>> +endobj +2355 0 obj +<</P 1112 0 R/S/LI/Type/StructElem/K[2360 0 R]/Pg 90 0 R>> +endobj +2360 0 obj +<</P 2355 0 R/S/LBody/Type/StructElem/K[4]/Pg 90 0 R>> +endobj +1113 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 90 0 R>> +endobj +1114 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2369 0 R]/Pg 90 0 R>> +endobj +2369 0 obj +<</P 1114 0 R/S/LI/Type/StructElem/K[2361 0 R]/Pg 90 0 R>> +endobj +2361 0 obj +<</P 2369 0 R/S/LBody/Type/StructElem/K[8]/Pg 90 0 R>> +endobj +1115 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 90 0 R>> +endobj +1116 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[10]/Pg 90 0 R>> +endobj +1117 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 90 0 R>> +endobj +1118 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[12 13 14]/Pg 90 0 R>> +endobj +1119 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 90 0 R>> +endobj +1120 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2370 0 R]/Pg 90 0 R>> +endobj +2370 0 obj +<</P 1120 0 R/S/LI/Type/StructElem/K[2362 0 R]/Pg 90 0 R>> +endobj +2362 0 obj +<</P 2370 0 R/S/LBody/Type/StructElem/K[16]/Pg 90 0 R>> +endobj +1121 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 90 0 R>> +endobj +1122 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2371 0 R]/Pg 90 0 R>> +endobj +2371 0 obj +<</P 1122 0 R/S/LI/Type/StructElem/K[2363 0 R]/Pg 90 0 R>> +endobj +2363 0 obj +<</P 2371 0 R/S/LBody/Type/StructElem/K[18]/Pg 90 0 R>> +endobj +1123 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 90 0 R>> +endobj +1124 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2372 0 R]/Pg 90 0 R>> +endobj +2372 0 obj +<</P 1124 0 R/S/LI/Type/StructElem/K[2364 0 R]/Pg 90 0 R>> +endobj +2364 0 obj +<</P 2372 0 R/S/LBody/Type/StructElem/K[20]/Pg 90 0 R>> +endobj +1125 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 90 0 R>> +endobj +1126 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2373 0 R]/Pg 90 0 R>> +endobj +2373 0 obj +<</P 1126 0 R/S/LI/Type/StructElem/K[2365 0 R]/Pg 90 0 R>> +endobj +2365 0 obj +<</P 2373 0 R/S/LBody/Type/StructElem/K[22]/Pg 90 0 R>> +endobj +1127 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 90 0 R>> +endobj +1128 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2374 0 R]/Pg 90 0 R>> +endobj +2374 0 obj +<</P 1128 0 R/S/LI/Type/StructElem/K[2366 0 R]/Pg 90 0 R>> +endobj +2366 0 obj +<</P 2374 0 R/S/LBody/Type/StructElem/K[24]/Pg 90 0 R>> +endobj +1129 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 90 0 R>> +endobj +1130 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2375 0 R]/Pg 90 0 R>> +endobj +2375 0 obj +<</P 1130 0 R/S/LI/Type/StructElem/K[2367 0 R]/Pg 90 0 R>> +endobj +2367 0 obj +<</P 2375 0 R/S/LBody/Type/StructElem/K[26]/Pg 90 0 R>> +endobj +1131 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 90 0 R>> +endobj +1132 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2376 0 R]/Pg 90 0 R>> +endobj +2376 0 obj +<</P 1132 0 R/S/LI/Type/StructElem/K[2368 0 R]/Pg 90 0 R>> +endobj +2368 0 obj +<</P 2376 0 R/S/LBody/Type/StructElem/K[28]/Pg 90 0 R>> +endobj +1133 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 93 0 R>> +endobj +717 0 obj +[1133 0 R 1134 0 R 2377 0 R 1136 0 R 2378 0 R 1138 0 R 2379 0 R 1140 0 R 2380 0 R 1142 0 R 2381 0 R 1144 0 R 1145 0 R 2382 0 R 2383 0 R 2384 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1152 0 R 1152 0 R 1152 0 R 1153 0 R 1154 0 R 2385 0 R 2386 0 R] +endobj +1134 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 93 0 R>> +endobj +1135 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2387 0 R]/Pg 93 0 R>> +endobj +2387 0 obj +<</P 1135 0 R/S/LI/Type/StructElem/K[2377 0 R]/Pg 93 0 R>> +endobj +2377 0 obj +<</P 2387 0 R/S/LBody/Type/StructElem/K[2]/Pg 93 0 R>> +endobj +1136 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 93 0 R>> +endobj +1137 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2388 0 R]/Pg 93 0 R>> +endobj +2388 0 obj +<</P 1137 0 R/S/LI/Type/StructElem/K[2378 0 R]/Pg 93 0 R>> +endobj +2378 0 obj +<</P 2388 0 R/S/LBody/Type/StructElem/K[4]/Pg 93 0 R>> +endobj +1138 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 93 0 R>> +endobj +1139 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2389 0 R]/Pg 93 0 R>> +endobj +2389 0 obj +<</P 1139 0 R/S/LI/Type/StructElem/K[2379 0 R]/Pg 93 0 R>> +endobj +2379 0 obj +<</P 2389 0 R/S/LBody/Type/StructElem/K[6]/Pg 93 0 R>> +endobj +1140 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 93 0 R>> +endobj +1141 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2390 0 R]/Pg 93 0 R>> +endobj +2390 0 obj +<</P 1141 0 R/S/LI/Type/StructElem/K[2380 0 R]/Pg 93 0 R>> +endobj +2380 0 obj +<</P 2390 0 R/S/LBody/Type/StructElem/K[8]/Pg 93 0 R>> +endobj +1142 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 93 0 R>> +endobj +1143 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2391 0 R]/Pg 93 0 R>> +endobj +2391 0 obj +<</P 1143 0 R/S/LI/Type/StructElem/K[2381 0 R]/Pg 93 0 R>> +endobj +2381 0 obj +<</P 2391 0 R/S/LBody/Type/StructElem/K[10]/Pg 93 0 R>> +endobj +1144 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 93 0 R>> +endobj +1145 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 93 0 R>> +endobj +1146 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2392 0 R 2393 0 R 2394 0 R]/Pg 93 0 R>> +endobj +2392 0 obj +<</P 1146 0 R/S/LI/Type/StructElem/K[2382 0 R]/Pg 93 0 R>> +endobj +2382 0 obj +<</P 2392 0 R/S/LBody/Type/StructElem/K[13]/Pg 93 0 R>> +endobj +2393 0 obj +<</P 1146 0 R/S/LI/Type/StructElem/K[2383 0 R]/Pg 93 0 R>> +endobj +2383 0 obj +<</P 2393 0 R/S/LBody/Type/StructElem/K[14]/Pg 93 0 R>> +endobj +2394 0 obj +<</P 1146 0 R/S/LI/Type/StructElem/K[2384 0 R]/Pg 93 0 R>> +endobj +2384 0 obj +<</P 2394 0 R/S/LBody/Type/StructElem/K[15]/Pg 93 0 R>> +endobj +1147 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 93 0 R>> +endobj +1148 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[17]/Pg 93 0 R>> +endobj +1149 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 93 0 R>> +endobj +1150 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 93 0 R>> +endobj +1151 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 93 0 R>> +endobj +1152 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[21 22 23 24]/Pg 93 0 R>> +endobj +1153 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 93 0 R>> +endobj +1154 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 93 0 R>> +endobj +1155 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2395 0 R 2396 0 R]/Pg 93 0 R>> +endobj +2395 0 obj +<</P 1155 0 R/S/LI/Type/StructElem/K[2385 0 R]/Pg 93 0 R>> +endobj +2385 0 obj +<</P 2395 0 R/S/LBody/Type/StructElem/K[27]/Pg 93 0 R>> +endobj +2396 0 obj +<</P 1155 0 R/S/LI/Type/StructElem/K[2386 0 R]/Pg 93 0 R>> +endobj +2386 0 obj +<</P 2396 0 R/S/LBody/Type/StructElem/K[28]/Pg 93 0 R>> +endobj +1156 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 95 0 R>> +endobj +718 0 obj +[1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1160 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1166 0 R 1166 0 R 1167 0 R 1168 0 R 2397 0 R 2398 0 R 2399 0 R 1170 0 R 1171 0 R] +endobj +1157 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[1]/Pg 95 0 R>> +endobj +1158 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 95 0 R>> +endobj +1159 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 95 0 R>> +endobj +1160 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[4 5 6]/Pg 95 0 R>> +endobj +1161 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 95 0 R>> +endobj +1162 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 95 0 R>> +endobj +1163 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 95 0 R>> +endobj +1164 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[10]/Pg 95 0 R>> +endobj +1165 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 95 0 R>> +endobj +1166 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[12 13 14]/Pg 95 0 R>> +endobj +1167 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 95 0 R>> +endobj +1168 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 95 0 R>> +endobj +1169 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2400 0 R 2401 0 R 2402 0 R]/Pg 95 0 R>> +endobj +2400 0 obj +<</P 1169 0 R/S/LI/Type/StructElem/K[2397 0 R]/Pg 95 0 R>> +endobj +2397 0 obj +<</P 2400 0 R/S/LBody/Type/StructElem/K[17]/Pg 95 0 R>> +endobj +2401 0 obj +<</P 1169 0 R/S/LI/Type/StructElem/K[2398 0 R]/Pg 95 0 R>> +endobj +2398 0 obj +<</P 2401 0 R/S/LBody/Type/StructElem/K[18]/Pg 95 0 R>> +endobj +2402 0 obj +<</P 1169 0 R/S/LI/Type/StructElem/K[2399 0 R]/Pg 95 0 R>> +endobj +2399 0 obj +<</P 2402 0 R/S/LBody/Type/StructElem/K[19]/Pg 95 0 R>> +endobj +1170 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 95 0 R>> +endobj +1171 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 95 0 R>> +endobj +1172 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2]/Pg 98 0 R>> +endobj +719 0 obj +[1172 0 R 1172 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1179 0 R 1179 0 R 1180 0 R 2403 0 R 2404 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1189 0 R 1189 0 R 1190 0 R] +endobj +1173 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 98 0 R>> +endobj +1174 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 98 0 R>> +endobj +1175 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 98 0 R>> +endobj +1176 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[6]/Pg 98 0 R>> +endobj +1177 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 98 0 R>> +endobj +1178 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 98 0 R>> +endobj +1179 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[9 10 11]/Pg 98 0 R>> +endobj +1180 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 98 0 R>> +endobj +1181 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2405 0 R 2406 0 R]/Pg 98 0 R>> +endobj +2405 0 obj +<</P 1181 0 R/S/LI/Type/StructElem/K[2403 0 R]/Pg 98 0 R>> +endobj +2403 0 obj +<</P 2405 0 R/S/LBody/Type/StructElem/K[13]/Pg 98 0 R>> +endobj +2406 0 obj +<</P 1181 0 R/S/LI/Type/StructElem/K[2404 0 R]/Pg 98 0 R>> +endobj +2404 0 obj +<</P 2406 0 R/S/LBody/Type/StructElem/K[14]/Pg 98 0 R>> +endobj +1182 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 98 0 R>> +endobj +1183 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 98 0 R>> +endobj +1184 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[17]/Pg 98 0 R>> +endobj +1185 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 98 0 R>> +endobj +1186 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 98 0 R>> +endobj +1187 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 98 0 R>> +endobj +1188 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 98 0 R>> +endobj +1189 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[22 23 24]/Pg 98 0 R>> +endobj +1190 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 98 0 R>> +endobj +1191 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[0]/Pg 103 0 R>> +endobj +720 0 obj +[1191 0 R 1192 0 R 1193 0 R 1194 0 R 1194 0 R 1194 0 R 1195 0 R 1196 0 R 1196 0 R 1196 0 R 1196 0 R 1197 0 R 2407 0 R 2408 0 R 1199 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1204 0 R 1204 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R] +endobj +1192 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 103 0 R>> +endobj +1193 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 103 0 R>> +endobj +1194 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[3 4 5]/Pg 103 0 R>> +endobj +1195 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 103 0 R>> +endobj +1196 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[7 8 9 10]/Pg 103 0 R>> +endobj +1197 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 103 0 R>> +endobj +1198 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2409 0 R 2410 0 R]/Pg 103 0 R>> +endobj +2409 0 obj +<</P 1198 0 R/S/LI/Type/StructElem/K[2407 0 R]/Pg 103 0 R>> +endobj +2407 0 obj +<</P 2409 0 R/S/LBody/Type/StructElem/K[12]/Pg 103 0 R>> +endobj +2410 0 obj +<</P 1198 0 R/S/LI/Type/StructElem/K[2408 0 R]/Pg 103 0 R>> +endobj +2408 0 obj +<</P 2410 0 R/S/LBody/Type/StructElem/K[13]/Pg 103 0 R>> +endobj +1199 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[14]/Pg 103 0 R>> +endobj +1200 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]/Pg 103 0 R>> +endobj +1201 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[34]/Pg 103 0 R>> +endobj +1202 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[35]/Pg 103 0 R>> +endobj +1203 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[36]/Pg 103 0 R>> +endobj +1204 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[37 38 39 40]/Pg 103 0 R>> +endobj +1205 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 103 0 R>> +endobj +1206 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[42]/Pg 103 0 R>> +endobj +1207 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[43]/Pg 103 0 R>> +endobj +1208 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 106 0 R>> +endobj +721 0 obj +[1208 0 R 1209 0 R 1210 0 R 1211 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R 2415 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1216 0 R 1216 0 R 1217 0 R 2416 0 R 2417 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1222 0 R 1222 0 R 1223 0 R 1224 0 R] +endobj +1209 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 106 0 R>> +endobj +1210 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 106 0 R>> +endobj +1211 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 106 0 R>> +endobj +1212 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2418 0 R 2419 0 R 2420 0 R 2421 0 R 2422 0 R]/Pg 106 0 R>> +endobj +2418 0 obj +<</P 1212 0 R/S/LI/Type/StructElem/K[2411 0 R]/Pg 106 0 R>> +endobj +2411 0 obj +<</P 2418 0 R/S/LBody/Type/StructElem/K[4]/Pg 106 0 R>> +endobj +2419 0 obj +<</P 1212 0 R/S/LI/Type/StructElem/K[2412 0 R]/Pg 106 0 R>> +endobj +2412 0 obj +<</P 2419 0 R/S/LBody/Type/StructElem/K[5]/Pg 106 0 R>> +endobj +2420 0 obj +<</P 1212 0 R/S/LI/Type/StructElem/K[2413 0 R]/Pg 106 0 R>> +endobj +2413 0 obj +<</P 2420 0 R/S/LBody/Type/StructElem/K[6]/Pg 106 0 R>> +endobj +2421 0 obj +<</P 1212 0 R/S/LI/Type/StructElem/K[2414 0 R]/Pg 106 0 R>> +endobj +2414 0 obj +<</P 2421 0 R/S/LBody/Type/StructElem/K[7]/Pg 106 0 R>> +endobj +2422 0 obj +<</P 1212 0 R/S/LI/Type/StructElem/K[2415 0 R]/Pg 106 0 R>> +endobj +2415 0 obj +<</P 2422 0 R/S/LBody/Type/StructElem/K[8]/Pg 106 0 R>> +endobj +1213 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 106 0 R>> +endobj +1214 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 106 0 R>> +endobj +1215 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 106 0 R>> +endobj +1216 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[12 13 14]/Pg 106 0 R>> +endobj +1217 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 106 0 R>> +endobj +1218 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2423 0 R 2424 0 R]/Pg 106 0 R>> +endobj +2423 0 obj +<</P 1218 0 R/S/LI/Type/StructElem/K[2416 0 R]/Pg 106 0 R>> +endobj +2416 0 obj +<</P 2423 0 R/S/LBody/Type/StructElem/K[16]/Pg 106 0 R>> +endobj +2424 0 obj +<</P 1218 0 R/S/LI/Type/StructElem/K[2417 0 R]/Pg 106 0 R>> +endobj +2417 0 obj +<</P 2424 0 R/S/LBody/Type/StructElem/K[17]/Pg 106 0 R>> +endobj +1219 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[18]/Pg 106 0 R>> +endobj +1220 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 106 0 R>> +endobj +1221 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 106 0 R>> +endobj +1222 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[21 22 23]/Pg 106 0 R>> +endobj +1223 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 106 0 R>> +endobj +1224 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 106 0 R>> +endobj +1225 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 109 0 R>> +endobj +722 0 obj +[1225 0 R 1226 0 R 1227 0 R 1227 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1230 0 R 1230 0 R 1230 0 R 1230 0 R 1230 0 R 1230 0 R 1230 0 R 1231 0 R 1232 0 R 1232 0 R 1232 0 R 1232 0 R 1232 0 R 1232 0 R 1232 0 R 1233 0 R 1234 0 R 1234 0 R 1234 0 R 1234 0 R 1234 0 R 1234 0 R 1234 0 R 1235 0 R 1236 0 R 1236 0 R 1236 0 R 1236 0 R 1236 0 R 1236 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1240 0 R 1240 0 R 1240 0 R 1240 0 R 1240 0 R 1240 0 R 1240 0 R 1241 0 R 1242 0 R 1242 0 R 1242 0 R 1243 0 R] +endobj +1226 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 109 0 R>> +endobj +1227 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[2 3 4]/Pg 109 0 R>> +endobj +1228 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 109 0 R>> +endobj +1229 0 obj +<</P 532 0 R/S/H2/Type/StructElem/K[6]/Pg 109 0 R>> +endobj +1230 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[7 8 9 10 11 12 13 14]/Pg 109 0 R>> +endobj +1231 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 109 0 R>> +endobj +1232 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[16 17 18 19 20 21 22]/Pg 109 0 R>> +endobj +1233 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 109 0 R>> +endobj +1234 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[24 25 26 27 28 29 30]/Pg 109 0 R>> +endobj +1235 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[31]/Pg 109 0 R>> +endobj +1236 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[32 33 34 35 36 37 38]/Pg 109 0 R>> +endobj +1237 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[39]/Pg 109 0 R>> +endobj +1238 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[40]/Pg 109 0 R>> +endobj +1239 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 109 0 R>> +endobj +1240 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[42 43 44 45 46 47 48 49]/Pg 109 0 R>> +endobj +1241 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[50]/Pg 109 0 R>> +endobj +1242 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[51 52 53]/Pg 109 0 R>> +endobj +1243 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[54]/Pg 109 0 R>> +endobj +1244 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2]/Pg 179 0 R>> +endobj +723 0 obj +[1244 0 R 1244 0 R 1244 0 R 1245 0 R 2425 0 R 2426 0 R 1247 0 R 1248 0 R 1249 0 R 1249 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1256 0 R 1256 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R] +endobj +1245 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 179 0 R>> +endobj +1246 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2427 0 R 2428 0 R]/Pg 179 0 R>> +endobj +2427 0 obj +<</P 1246 0 R/S/LI/Type/StructElem/K[2425 0 R]/Pg 179 0 R>> +endobj +2425 0 obj +<</P 2427 0 R/S/LBody/Type/StructElem/K[4]/Pg 179 0 R>> +endobj +2428 0 obj +<</P 1246 0 R/S/LI/Type/StructElem/K[2426 0 R]/Pg 179 0 R>> +endobj +2426 0 obj +<</P 2428 0 R/S/LBody/Type/StructElem/K[5]/Pg 179 0 R>> +endobj +1247 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 179 0 R>> +endobj +1248 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 179 0 R>> +endobj +1249 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10]/Pg 179 0 R>> +endobj +1250 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 179 0 R>> +endobj +1251 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 179 0 R>> +endobj +1252 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 179 0 R>> +endobj +1253 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 179 0 R>> +endobj +1254 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 179 0 R>> +endobj +1255 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 179 0 R>> +endobj +1256 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[17 18 19 20]/Pg 179 0 R>> +endobj +1257 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 179 0 R>> +endobj +1258 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 179 0 R>> +endobj +1259 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 179 0 R>> +endobj +1260 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 179 0 R>> +endobj +1261 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 179 0 R>> +endobj +1262 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 179 0 R>> +endobj +1263 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3]/Pg 180 0 R>> +endobj +724 0 obj +[1263 0 R 1263 0 R 1263 0 R 1263 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1270 0 R 1271 0 R 1271 0 R 1271 0 R 1271 0 R 1272 0 R 1273 0 R 1273 0 R 1273 0 R 1273 0 R 1273 0 R 1274 0 R 2429 0 R 2430 0 R 2431 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R] +endobj +1264 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4 5 6 7 8 9 10 11 12 13 14]/Pg 180 0 R>> +endobj +1265 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 180 0 R>> +endobj +1266 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 180 0 R>> +endobj +1267 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 180 0 R>> +endobj +1268 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 180 0 R>> +endobj +1269 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 180 0 R>> +endobj +1270 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20 21]/Pg 180 0 R>> +endobj +1271 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[22 23 24 25]/Pg 180 0 R>> +endobj +1272 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 180 0 R>> +endobj +1273 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[27 28 29 30 31]/Pg 180 0 R>> +endobj +1274 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[32]/Pg 180 0 R>> +endobj +1275 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2432 0 R 2433 0 R 2434 0 R]/Pg 180 0 R>> +endobj +2432 0 obj +<</P 1275 0 R/S/LI/Type/StructElem/K[2429 0 R]/Pg 180 0 R>> +endobj +2429 0 obj +<</P 2432 0 R/S/LBody/Type/StructElem/K[33]/Pg 180 0 R>> +endobj +2433 0 obj +<</P 1275 0 R/S/LI/Type/StructElem/K[2430 0 R]/Pg 180 0 R>> +endobj +2430 0 obj +<</P 2433 0 R/S/LBody/Type/StructElem/K[34]/Pg 180 0 R>> +endobj +2434 0 obj +<</P 1275 0 R/S/LI/Type/StructElem/K[2431 0 R]/Pg 180 0 R>> +endobj +2431 0 obj +<</P 2434 0 R/S/LBody/Type/StructElem/K[35]/Pg 180 0 R>> +endobj +1276 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[36]/Pg 180 0 R>> +endobj +1277 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[37]/Pg 180 0 R>> +endobj +1278 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[38]/Pg 180 0 R>> +endobj +1279 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[39]/Pg 180 0 R>> +endobj +1280 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[40]/Pg 180 0 R>> +endobj +1281 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 181 0 R>> +endobj +725 0 obj +[1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1285 0 R 1285 0 R 1285 0 R 1285 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1290 0 R 1290 0 R 1290 0 R 1290 0 R 1290 0 R 1291 0 R 1292 0 R] +endobj +1282 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 181 0 R>> +endobj +1283 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[2]/Pg 181 0 R>> +endobj +1284 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 181 0 R>> +endobj +1285 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[4 5 6 7 8 9]/Pg 181 0 R>> +endobj +1286 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 181 0 R>> +endobj +1287 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 181 0 R>> +endobj +1288 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 181 0 R>> +endobj +1289 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 181 0 R>> +endobj +1290 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[14 15 16 17 18 19]/Pg 181 0 R>> +endobj +1291 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 181 0 R>> +endobj +1292 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 181 0 R>> +endobj +1293 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2]/Pg 182 0 R>> +endobj +726 0 obj +[1293 0 R 1293 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1299 0 R 1299 0 R 1299 0 R 1299 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1302 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 2435 0 R 2436 0 R] +endobj +1294 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 182 0 R>> +endobj +1295 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 182 0 R>> +endobj +1296 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 182 0 R>> +endobj +1297 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 182 0 R>> +endobj +1298 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 182 0 R>> +endobj +1299 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10 11 12 13]/Pg 182 0 R>> +endobj +1300 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 182 0 R>> +endobj +1301 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 182 0 R>> +endobj +1302 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[16 17 18]/Pg 182 0 R>> +endobj +1303 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 182 0 R>> +endobj +1304 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[20]/Pg 182 0 R>> +endobj +1305 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 182 0 R>> +endobj +1306 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 182 0 R>> +endobj +1307 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2437 0 R 2438 0 R]/Pg 182 0 R>> +endobj +2437 0 obj +<</P 1307 0 R/S/LI/Type/StructElem/K[2435 0 R]/Pg 182 0 R>> +endobj +2435 0 obj +<</P 2437 0 R/S/LBody/Type/StructElem/K[23]/Pg 182 0 R>> +endobj +2438 0 obj +<</P 1307 0 R/S/LI/Type/StructElem/K[2436 0 R]/Pg 182 0 R>> +endobj +2436 0 obj +<</P 2438 0 R/S/LBody/Type/StructElem/K[24]/Pg 182 0 R>> +endobj +1308 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3]/Pg 185 0 R>> +endobj +727 0 obj +[1308 0 R 1308 0 R 1308 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1313 0 R 1313 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1319 0 R 1319 0 R 1319 0 R 1319 0 R 1319 0 R 1320 0 R] +endobj +1309 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 185 0 R>> +endobj +1310 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 185 0 R>> +endobj +1311 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[6]/Pg 185 0 R>> +endobj +1312 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 185 0 R>> +endobj +1313 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10 11]/Pg 185 0 R>> +endobj +1314 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 185 0 R>> +endobj +1315 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 185 0 R>> +endobj +1316 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 185 0 R>> +endobj +1317 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[15]/Pg 185 0 R>> +endobj +1318 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 185 0 R>> +endobj +1319 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[17 18 19 20 21 22]/Pg 185 0 R>> +endobj +1320 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 185 0 R>> +endobj +1321 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3 4]/Pg 187 0 R>> +endobj +728 0 obj +[1321 0 R 1321 0 R 1321 0 R 1321 0 R 1321 0 R 1322 0 R 1323 0 R 1323 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R 1326 0 R 1326 0 R 1326 0 R 1327 0 R 1328 0 R 1329 0 R 2439 0 R 2440 0 R 2441 0 R 2442 0 R 2443 0 R 2444 0 R 2445 0 R 2446 0 R 1331 0 R 1332 0 R 1333 0 R 1334 0 R 1334 0 R 1334 0 R 1334 0 R 1335 0 R] +endobj +1322 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 187 0 R>> +endobj +1323 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[6 7 8]/Pg 187 0 R>> +endobj +1324 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 187 0 R>> +endobj +1325 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 187 0 R>> +endobj +1326 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13 14]/Pg 187 0 R>> +endobj +1327 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 187 0 R>> +endobj +1328 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 187 0 R>> +endobj +1329 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 187 0 R>> +endobj +1330 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2447 0 R 2448 0 R 2449 0 R 2450 0 R 2451 0 R 2452 0 R 2453 0 R 2454 0 R]/Pg 187 0 R>> +endobj +2447 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2439 0 R]/Pg 187 0 R>> +endobj +2439 0 obj +<</P 2447 0 R/S/LBody/Type/StructElem/K[18]/Pg 187 0 R>> +endobj +2448 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2440 0 R]/Pg 187 0 R>> +endobj +2440 0 obj +<</P 2448 0 R/S/LBody/Type/StructElem/K[19]/Pg 187 0 R>> +endobj +2449 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2441 0 R]/Pg 187 0 R>> +endobj +2441 0 obj +<</P 2449 0 R/S/LBody/Type/StructElem/K[20]/Pg 187 0 R>> +endobj +2450 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2442 0 R]/Pg 187 0 R>> +endobj +2442 0 obj +<</P 2450 0 R/S/LBody/Type/StructElem/K[21]/Pg 187 0 R>> +endobj +2451 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2443 0 R]/Pg 187 0 R>> +endobj +2443 0 obj +<</P 2451 0 R/S/LBody/Type/StructElem/K[22]/Pg 187 0 R>> +endobj +2452 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2444 0 R]/Pg 187 0 R>> +endobj +2444 0 obj +<</P 2452 0 R/S/LBody/Type/StructElem/K[23]/Pg 187 0 R>> +endobj +2453 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2445 0 R]/Pg 187 0 R>> +endobj +2445 0 obj +<</P 2453 0 R/S/LBody/Type/StructElem/K[24]/Pg 187 0 R>> +endobj +2454 0 obj +<</P 1330 0 R/S/LI/Type/StructElem/K[2446 0 R]/Pg 187 0 R>> +endobj +2446 0 obj +<</P 2454 0 R/S/LBody/Type/StructElem/K[25]/Pg 187 0 R>> +endobj +1331 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 187 0 R>> +endobj +1332 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 187 0 R>> +endobj +1333 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[28]/Pg 187 0 R>> +endobj +1334 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[29 30 31 32]/Pg 187 0 R>> +endobj +1335 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[33]/Pg 187 0 R>> +endobj +1336 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3 4]/Pg 188 0 R>> +endobj +729 0 obj +[1336 0 R 1336 0 R 1336 0 R 1336 0 R 1336 0 R 1337 0 R 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1341 0 R 1341 0 R 1341 0 R 1341 0 R 1342 0 R 1343 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R 2455 0 R 2456 0 R 2457 0 R 1349 0 R 1350 0 R 1350 0 R 1350 0 R 1351 0 R] +endobj +1337 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 188 0 R>> +endobj +1338 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 188 0 R>> +endobj +1339 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 188 0 R>> +endobj +1340 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 188 0 R>> +endobj +1341 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[9 10 11 12 13]/Pg 188 0 R>> +endobj +1342 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 188 0 R>> +endobj +1343 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 188 0 R>> +endobj +1344 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 188 0 R>> +endobj +1345 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 188 0 R>> +endobj +1346 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 188 0 R>> +endobj +1347 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 188 0 R>> +endobj +1348 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2458 0 R 2459 0 R 2460 0 R]/Pg 188 0 R>> +endobj +2458 0 obj +<</P 1348 0 R/S/LI/Type/StructElem/K[2455 0 R]/Pg 188 0 R>> +endobj +2455 0 obj +<</P 2458 0 R/S/LBody/Type/StructElem/K[20]/Pg 188 0 R>> +endobj +2459 0 obj +<</P 1348 0 R/S/LI/Type/StructElem/K[2456 0 R]/Pg 188 0 R>> +endobj +2456 0 obj +<</P 2459 0 R/S/LBody/Type/StructElem/K[21]/Pg 188 0 R>> +endobj +2460 0 obj +<</P 1348 0 R/S/LI/Type/StructElem/K[2457 0 R]/Pg 188 0 R>> +endobj +2457 0 obj +<</P 2460 0 R/S/LBody/Type/StructElem/K[22]/Pg 188 0 R>> +endobj +1349 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 188 0 R>> +endobj +1350 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[24 25 26]/Pg 188 0 R>> +endobj +1351 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 188 0 R>> +endobj +1352 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2]/Pg 189 0 R>> +endobj +730 0 obj +[1352 0 R 1352 0 R 1352 0 R 1353 0 R 1354 0 R 1355 0 R 2461 0 R 2462 0 R 1357 0 R 1358 0 R 1359 0 R 1360 0 R 1360 0 R 1360 0 R 1360 0 R 1361 0 R 1362 0 R 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1369 0 R] +endobj +1353 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 189 0 R>> +endobj +1354 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 189 0 R>> +endobj +1355 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 189 0 R>> +endobj +1356 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2463 0 R 2464 0 R]/Pg 189 0 R>> +endobj +2463 0 obj +<</P 1356 0 R/S/LI/Type/StructElem/K[2461 0 R]/Pg 189 0 R>> +endobj +2461 0 obj +<</P 2463 0 R/S/LBody/Type/StructElem/K[6]/Pg 189 0 R>> +endobj +2464 0 obj +<</P 1356 0 R/S/LI/Type/StructElem/K[2462 0 R]/Pg 189 0 R>> +endobj +2462 0 obj +<</P 2464 0 R/S/LBody/Type/StructElem/K[7]/Pg 189 0 R>> +endobj +1357 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 189 0 R>> +endobj +1358 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 189 0 R>> +endobj +1359 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 189 0 R>> +endobj +1360 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13 14]/Pg 189 0 R>> +endobj +1361 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 189 0 R>> +endobj +1362 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 189 0 R>> +endobj +1363 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 189 0 R>> +endobj +1364 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 189 0 R>> +endobj +1365 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 189 0 R>> +endobj +1366 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 189 0 R>> +endobj +1367 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 189 0 R>> +endobj +1368 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 189 0 R>> +endobj +1369 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 189 0 R>> +endobj +1370 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 190 0 R>> +endobj +731 0 obj +[1370 0 R 2465 0 R 2466 0 R 2467 0 R 2468 0 R 2469 0 R 1372 0 R 1372 0 R 1372 0 R 1373 0 R 1374 0 R 1375 0 R 1376 0 R 1377 0 R 1378 0 R 1379 0 R 1379 0 R 1379 0 R 1379 0 R 1380 0 R 1381 0 R 1382 0 R 1383 0 R 1384 0 R 1385 0 R] +endobj +1371 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2470 0 R 2471 0 R 2472 0 R 2473 0 R 2474 0 R]/Pg 190 0 R>> +endobj +2470 0 obj +<</P 1371 0 R/S/LI/Type/StructElem/K[2465 0 R]/Pg 190 0 R>> +endobj +2465 0 obj +<</P 2470 0 R/S/LBody/Type/StructElem/K[1]/Pg 190 0 R>> +endobj +2471 0 obj +<</P 1371 0 R/S/LI/Type/StructElem/K[2466 0 R]/Pg 190 0 R>> +endobj +2466 0 obj +<</P 2471 0 R/S/LBody/Type/StructElem/K[2]/Pg 190 0 R>> +endobj +2472 0 obj +<</P 1371 0 R/S/LI/Type/StructElem/K[2467 0 R]/Pg 190 0 R>> +endobj +2467 0 obj +<</P 2472 0 R/S/LBody/Type/StructElem/K[3]/Pg 190 0 R>> +endobj +2473 0 obj +<</P 1371 0 R/S/LI/Type/StructElem/K[2468 0 R]/Pg 190 0 R>> +endobj +2468 0 obj +<</P 2473 0 R/S/LBody/Type/StructElem/K[4]/Pg 190 0 R>> +endobj +2474 0 obj +<</P 1371 0 R/S/LI/Type/StructElem/K[2469 0 R]/Pg 190 0 R>> +endobj +2469 0 obj +<</P 2474 0 R/S/LBody/Type/StructElem/K[5]/Pg 190 0 R>> +endobj +1372 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[6 7 8]/Pg 190 0 R>> +endobj +1373 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 190 0 R>> +endobj +1374 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 190 0 R>> +endobj +1375 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 190 0 R>> +endobj +1376 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 190 0 R>> +endobj +1377 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[13]/Pg 190 0 R>> +endobj +1378 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 190 0 R>> +endobj +1379 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[15 16 17 18]/Pg 190 0 R>> +endobj +1380 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 190 0 R>> +endobj +1381 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[20]/Pg 190 0 R>> +endobj +1382 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 190 0 R>> +endobj +1383 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 190 0 R>> +endobj +1384 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 190 0 R>> +endobj +1385 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 190 0 R>> +endobj +1386 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 192 0 R>> +endobj +732 0 obj +[1386 0 R 1387 0 R 1387 0 R 1387 0 R 1387 0 R 1388 0 R 1389 0 R 1389 0 R 1389 0 R 1390 0 R 1391 0 R 1392 0 R 1392 0 R 1392 0 R 1393 0 R 1394 0 R 1394 0 R 1394 0 R 1394 0 R 1395 0 R 1396 0 R 1396 0 R 1396 0 R 1396 0 R 1397 0 R 1398 0 R 1398 0 R 1398 0 R 1398 0 R 1399 0 R] +endobj +1387 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[1 2 3 4]/Pg 192 0 R>> +endobj +1388 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 192 0 R>> +endobj +1389 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[6 7 8]/Pg 192 0 R>> +endobj +1390 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 192 0 R>> +endobj +1391 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 192 0 R>> +endobj +1392 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13]/Pg 192 0 R>> +endobj +1393 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[14]/Pg 192 0 R>> +endobj +1394 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[15 16 17 18]/Pg 192 0 R>> +endobj +1395 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 192 0 R>> +endobj +1396 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[20 21 22 23]/Pg 192 0 R>> +endobj +1397 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[24]/Pg 192 0 R>> +endobj +1398 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[25 26 27 28]/Pg 192 0 R>> +endobj +1399 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 192 0 R>> +endobj +1400 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2]/Pg 193 0 R>> +endobj +733 0 obj +[1400 0 R 1400 0 R 1400 0 R 1401 0 R 1402 0 R 1403 0 R 1404 0 R 2475 0 R 2476 0 R 2477 0 R 1406 0 R 1407 0 R 1407 0 R 1407 0 R 1407 0 R 1407 0 R 1408 0 R 1409 0 R 1410 0 R 1411 0 R 1412 0 R 1412 0 R 1412 0 R 1412 0 R 1412 0 R 1413 0 R 1414 0 R 1414 0 R 1414 0 R 1415 0 R 2478 0 R 2479 0 R] +endobj +1401 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[3]/Pg 193 0 R>> +endobj +1402 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 193 0 R>> +endobj +1403 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 193 0 R>> +endobj +1404 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 193 0 R>> +endobj +1405 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2480 0 R 2481 0 R 2482 0 R]/Pg 193 0 R>> +endobj +2480 0 obj +<</P 1405 0 R/S/LI/Type/StructElem/K[2475 0 R]/Pg 193 0 R>> +endobj +2475 0 obj +<</P 2480 0 R/S/LBody/Type/StructElem/K[7]/Pg 193 0 R>> +endobj +2481 0 obj +<</P 1405 0 R/S/LI/Type/StructElem/K[2476 0 R]/Pg 193 0 R>> +endobj +2476 0 obj +<</P 2481 0 R/S/LBody/Type/StructElem/K[8]/Pg 193 0 R>> +endobj +2482 0 obj +<</P 1405 0 R/S/LI/Type/StructElem/K[2477 0 R]/Pg 193 0 R>> +endobj +2477 0 obj +<</P 2482 0 R/S/LBody/Type/StructElem/K[9]/Pg 193 0 R>> +endobj +1406 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 193 0 R>> +endobj +1407 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13 14 15]/Pg 193 0 R>> +endobj +1408 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 193 0 R>> +endobj +1409 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[17]/Pg 193 0 R>> +endobj +1410 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 193 0 R>> +endobj +1411 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 193 0 R>> +endobj +1412 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[20 21 22 23 24]/Pg 193 0 R>> +endobj +1413 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[25]/Pg 193 0 R>> +endobj +1414 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[26 27 28]/Pg 193 0 R>> +endobj +1415 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 193 0 R>> +endobj +1416 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2483 0 R 2484 0 R]/Pg 193 0 R>> +endobj +2483 0 obj +<</P 1416 0 R/S/LI/Type/StructElem/K[2478 0 R]/Pg 193 0 R>> +endobj +2478 0 obj +<</P 2483 0 R/S/LBody/Type/StructElem/K[30]/Pg 193 0 R>> +endobj +2484 0 obj +<</P 1416 0 R/S/LI/Type/StructElem/K[2479 0 R]/Pg 193 0 R>> +endobj +2479 0 obj +<</P 2484 0 R/S/LBody/Type/StructElem/K[31]/Pg 193 0 R>> +endobj +1417 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3]/Pg 195 0 R>> +endobj +734 0 obj +[1417 0 R 1417 0 R 1417 0 R 1417 0 R 1418 0 R 1419 0 R 1419 0 R 1419 0 R 1420 0 R 1421 0 R 2485 0 R 2486 0 R 2487 0 R 2488 0 R 2489 0 R 1423 0 R 1424 0 R 1425 0 R 1426 0 R 1427 0 R 2490 0 R 2491 0 R 2492 0 R 2493 0 R 2494 0 R 2495 0 R 2496 0 R 2497 0 R 1429 0 R 1430 0 R 1431 0 R 1431 0 R 1431 0 R 1431 0 R 1431 0 R 1431 0 R 1432 0 R] +endobj +1418 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 195 0 R>> +endobj +1419 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[5 6 7]/Pg 195 0 R>> +endobj +1420 0 obj +<</P 532 0 R/S/H4/Type/StructElem/K[8]/Pg 195 0 R>> +endobj +1421 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 195 0 R>> +endobj +1422 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2498 0 R 2499 0 R 2500 0 R 2501 0 R 2502 0 R]/Pg 195 0 R>> +endobj +2498 0 obj +<</P 1422 0 R/S/LI/Type/StructElem/K[2485 0 R]/Pg 195 0 R>> +endobj +2485 0 obj +<</P 2498 0 R/S/LBody/Type/StructElem/K[10]/Pg 195 0 R>> +endobj +2499 0 obj +<</P 1422 0 R/S/LI/Type/StructElem/K[2486 0 R]/Pg 195 0 R>> +endobj +2486 0 obj +<</P 2499 0 R/S/LBody/Type/StructElem/K[11]/Pg 195 0 R>> +endobj +2500 0 obj +<</P 1422 0 R/S/LI/Type/StructElem/K[2487 0 R]/Pg 195 0 R>> +endobj +2487 0 obj +<</P 2500 0 R/S/LBody/Type/StructElem/K[12]/Pg 195 0 R>> +endobj +2501 0 obj +<</P 1422 0 R/S/LI/Type/StructElem/K[2488 0 R]/Pg 195 0 R>> +endobj +2488 0 obj +<</P 2501 0 R/S/LBody/Type/StructElem/K[13]/Pg 195 0 R>> +endobj +2502 0 obj +<</P 1422 0 R/S/LI/Type/StructElem/K[2489 0 R]/Pg 195 0 R>> +endobj +2489 0 obj +<</P 2502 0 R/S/LBody/Type/StructElem/K[14]/Pg 195 0 R>> +endobj +1423 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 195 0 R>> +endobj +1424 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[16]/Pg 195 0 R>> +endobj +1425 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[17]/Pg 195 0 R>> +endobj +1426 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 195 0 R>> +endobj +1427 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[19]/Pg 195 0 R>> +endobj +1428 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2503 0 R 2504 0 R 2505 0 R 2506 0 R 2507 0 R 2508 0 R 2509 0 R 2510 0 R]/Pg 195 0 R>> +endobj +2503 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2490 0 R]/Pg 195 0 R>> +endobj +2490 0 obj +<</P 2503 0 R/S/LBody/Type/StructElem/K[20]/Pg 195 0 R>> +endobj +2504 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2491 0 R]/Pg 195 0 R>> +endobj +2491 0 obj +<</P 2504 0 R/S/LBody/Type/StructElem/K[21]/Pg 195 0 R>> +endobj +2505 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2492 0 R]/Pg 195 0 R>> +endobj +2492 0 obj +<</P 2505 0 R/S/LBody/Type/StructElem/K[22]/Pg 195 0 R>> +endobj +2506 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2493 0 R]/Pg 195 0 R>> +endobj +2493 0 obj +<</P 2506 0 R/S/LBody/Type/StructElem/K[23]/Pg 195 0 R>> +endobj +2507 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2494 0 R]/Pg 195 0 R>> +endobj +2494 0 obj +<</P 2507 0 R/S/LBody/Type/StructElem/K[24]/Pg 195 0 R>> +endobj +2508 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2495 0 R]/Pg 195 0 R>> +endobj +2495 0 obj +<</P 2508 0 R/S/LBody/Type/StructElem/K[25]/Pg 195 0 R>> +endobj +2509 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2496 0 R]/Pg 195 0 R>> +endobj +2496 0 obj +<</P 2509 0 R/S/LBody/Type/StructElem/K[26]/Pg 195 0 R>> +endobj +2510 0 obj +<</P 1428 0 R/S/LI/Type/StructElem/K[2497 0 R]/Pg 195 0 R>> +endobj +2497 0 obj +<</P 2510 0 R/S/LBody/Type/StructElem/K[27]/Pg 195 0 R>> +endobj +1429 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[28]/Pg 195 0 R>> +endobj +1430 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 195 0 R>> +endobj +1431 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[30 31 32 33 34 35]/Pg 195 0 R>> +endobj +1432 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[36]/Pg 195 0 R>> +endobj +1433 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[0]/Pg 197 0 R>> +endobj +735 0 obj +[1433 0 R 1434 0 R 1434 0 R 1434 0 R 1434 0 R 1435 0 R 1436 0 R 1437 0 R 1437 0 R 1437 0 R 1438 0 R 1439 0 R 1439 0 R 1439 0 R 1439 0 R 1440 0 R 1441 0 R 1441 0 R 1441 0 R 1441 0 R 1441 0 R 1442 0 R 1443 0 R 1444 0 R 1444 0 R 1444 0 R 1445 0 R 1446 0 R 1447 0 R 1447 0 R 1447 0 R 1447 0 R 1447 0 R 1447 0 R 1447 0 R 1448 0 R 1449 0 R 1450 0 R] +endobj +1434 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[1 2 3 4]/Pg 197 0 R>> +endobj +1435 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 197 0 R>> +endobj +1436 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[6]/Pg 197 0 R>> +endobj +1437 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[7 8 9]/Pg 197 0 R>> +endobj +1438 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[10]/Pg 197 0 R>> +endobj +1439 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[11 12 13 14]/Pg 197 0 R>> +endobj +1440 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 197 0 R>> +endobj +1441 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[16 17 18 19 20]/Pg 197 0 R>> +endobj +1442 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[21]/Pg 197 0 R>> +endobj +1443 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[22]/Pg 197 0 R>> +endobj +1444 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[23 24 25]/Pg 197 0 R>> +endobj +1445 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[26]/Pg 197 0 R>> +endobj +1446 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 197 0 R>> +endobj +1447 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[28 29 30 31 32 33 34]/Pg 197 0 R>> +endobj +1448 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[35]/Pg 197 0 R>> +endobj +1449 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[36]/Pg 197 0 R>> +endobj +1450 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[37]/Pg 197 0 R>> +endobj +1451 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3 4 5 6 7]/Pg 198 0 R>> +endobj +736 0 obj +[1451 0 R 1451 0 R 1451 0 R 1451 0 R 1451 0 R 1451 0 R 1451 0 R 1451 0 R 1452 0 R 1453 0 R 1454 0 R 1454 0 R 1454 0 R 1454 0 R 1454 0 R 1455 0 R 1456 0 R 1456 0 R 1456 0 R 1456 0 R 1456 0 R 1456 0 R 1456 0 R 1457 0 R 1458 0 R 1458 0 R 1458 0 R 1459 0 R 1460 0 R 1460 0 R 1460 0 R 1461 0 R 1462 0 R 1462 0 R 1462 0 R 1462 0 R 1462 0 R 1463 0 R 1464 0 R 1464 0 R 1464 0 R 1465 0 R] +endobj +1452 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[8]/Pg 198 0 R>> +endobj +1453 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[9]/Pg 198 0 R>> +endobj +1454 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[10 11 12 13 14]/Pg 198 0 R>> +endobj +1455 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[15]/Pg 198 0 R>> +endobj +1456 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[16 17 18 19 20 21 22]/Pg 198 0 R>> +endobj +1457 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 198 0 R>> +endobj +1458 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[24 25 26]/Pg 198 0 R>> +endobj +1459 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 198 0 R>> +endobj +1460 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[28 29 30]/Pg 198 0 R>> +endobj +1461 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[31]/Pg 198 0 R>> +endobj +1462 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[32 33 34 35 36]/Pg 198 0 R>> +endobj +1463 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[37]/Pg 198 0 R>> +endobj +1464 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[38 39 40]/Pg 198 0 R>> +endobj +1465 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 198 0 R>> +endobj +1466 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3 4 5 6]/Pg 199 0 R>> +endobj +737 0 obj +[1466 0 R 1466 0 R 1466 0 R 1466 0 R 1466 0 R 1466 0 R 1466 0 R 1467 0 R 1468 0 R 1468 0 R 1468 0 R 1468 0 R 1469 0 R 1470 0 R 1470 0 R 1470 0 R 1470 0 R 1470 0 R 1471 0 R 1472 0 R 1472 0 R 1472 0 R 1472 0 R 1473 0 R 1474 0 R 1474 0 R 1474 0 R 1475 0 R 1476 0 R 2511 0 R 2512 0 R 2513 0 R 2514 0 R 1478 0 R 1479 0 R 1480 0 R 1480 0 R 1480 0 R 1480 0 R 1480 0 R 1480 0 R 1481 0 R] +endobj +1467 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[7]/Pg 199 0 R>> +endobj +1468 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[8 9 10 11]/Pg 199 0 R>> +endobj +1469 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 199 0 R>> +endobj +1470 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[13 14 15 16 17]/Pg 199 0 R>> +endobj +1471 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[18]/Pg 199 0 R>> +endobj +1472 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[19 20 21 22]/Pg 199 0 R>> +endobj +1473 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[23]/Pg 199 0 R>> +endobj +1474 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[24 25 26]/Pg 199 0 R>> +endobj +1475 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[27]/Pg 199 0 R>> +endobj +1476 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[28]/Pg 199 0 R>> +endobj +1477 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2515 0 R 2516 0 R 2517 0 R 2518 0 R]/Pg 199 0 R>> +endobj +2515 0 obj +<</P 1477 0 R/S/LI/Type/StructElem/K[2511 0 R]/Pg 199 0 R>> +endobj +2511 0 obj +<</P 2515 0 R/S/LBody/Type/StructElem/K[29]/Pg 199 0 R>> +endobj +2516 0 obj +<</P 1477 0 R/S/LI/Type/StructElem/K[2512 0 R]/Pg 199 0 R>> +endobj +2512 0 obj +<</P 2516 0 R/S/LBody/Type/StructElem/K[30]/Pg 199 0 R>> +endobj +2517 0 obj +<</P 1477 0 R/S/LI/Type/StructElem/K[2513 0 R]/Pg 199 0 R>> +endobj +2513 0 obj +<</P 2517 0 R/S/LBody/Type/StructElem/K[31]/Pg 199 0 R>> +endobj +2518 0 obj +<</P 1477 0 R/S/LI/Type/StructElem/K[2514 0 R]/Pg 199 0 R>> +endobj +2514 0 obj +<</P 2518 0 R/S/LBody/Type/StructElem/K[32]/Pg 199 0 R>> +endobj +1478 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[33]/Pg 199 0 R>> +endobj +1479 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[34]/Pg 199 0 R>> +endobj +1480 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[35 36 37 38 39 40]/Pg 199 0 R>> +endobj +1481 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[41]/Pg 199 0 R>> +endobj +1482 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[0 1 2 3]/Pg 200 0 R>> +endobj +738 0 obj +[1482 0 R 1482 0 R 1482 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R 1485 0 R 1485 0 R 1485 0 R 1485 0 R 1486 0 R 1487 0 R 2519 0 R 2520 0 R 1489 0 R 1489 0 R 1489 0 R 1489 0 R 1489 0 R 1490 0 R 1491 0 R 1491 0 R 1491 0 R 1491 0 R 1491 0 R 1491 0 R 1491 0 R 1491 0 R 1492 0 R 1493 0 R 2521 0 R 2522 0 R 2523 0 R 2524 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1495 0 R 1496 0 R 1497 0 R 2525 0 R 1499 0 R 1500 0 R 2526 0 R 1502 0 R 1503 0 R 2527 0 R 2528 0 R] +endobj +1483 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[4]/Pg 200 0 R>> +endobj +1484 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 200 0 R>> +endobj +1485 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[6 7 8 9 10]/Pg 200 0 R>> +endobj +1486 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[11]/Pg 200 0 R>> +endobj +1487 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[12]/Pg 200 0 R>> +endobj +1488 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2529 0 R 2530 0 R]/Pg 200 0 R>> +endobj +2529 0 obj +<</P 1488 0 R/S/LI/Type/StructElem/K[2519 0 R]/Pg 200 0 R>> +endobj +2519 0 obj +<</P 2529 0 R/S/LBody/Type/StructElem/K[13]/Pg 200 0 R>> +endobj +2530 0 obj +<</P 1488 0 R/S/LI/Type/StructElem/K[2520 0 R]/Pg 200 0 R>> +endobj +2520 0 obj +<</P 2530 0 R/S/LBody/Type/StructElem/K[14]/Pg 200 0 R>> +endobj +1489 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[15 16 17 18 19]/Pg 200 0 R>> +endobj +1490 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[20]/Pg 200 0 R>> +endobj +1491 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[21 22 23 24 25 26 27 28]/Pg 200 0 R>> +endobj +1492 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[29]/Pg 200 0 R>> +endobj +1493 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[30]/Pg 200 0 R>> +endobj +1494 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2531 0 R 2532 0 R 2533 0 R 2534 0 R]/Pg 200 0 R>> +endobj +2531 0 obj +<</P 1494 0 R/S/LI/Type/StructElem/K[2521 0 R]/Pg 200 0 R>> +endobj +2521 0 obj +<</P 2531 0 R/S/LBody/Type/StructElem/K[31]/Pg 200 0 R>> +endobj +2532 0 obj +<</P 1494 0 R/S/LI/Type/StructElem/K[2522 0 R]/Pg 200 0 R>> +endobj +2522 0 obj +<</P 2532 0 R/S/LBody/Type/StructElem/K[32]/Pg 200 0 R>> +endobj +2533 0 obj +<</P 1494 0 R/S/LI/Type/StructElem/K[2523 0 R]/Pg 200 0 R>> +endobj +2523 0 obj +<</P 2533 0 R/S/LBody/Type/StructElem/K[33]/Pg 200 0 R>> +endobj +2534 0 obj +<</P 1494 0 R/S/LI/Type/StructElem/K[2524 0 R]/Pg 200 0 R>> +endobj +2524 0 obj +<</P 2534 0 R/S/LBody/Type/StructElem/K[34]/Pg 200 0 R>> +endobj +1495 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[35 36 37 38 39 40 41 42 43 44]/Pg 200 0 R>> +endobj +1496 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[45]/Pg 200 0 R>> +endobj +1497 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[46]/Pg 200 0 R>> +endobj +1498 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2535 0 R]/Pg 200 0 R>> +endobj +2535 0 obj +<</P 1498 0 R/S/LI/Type/StructElem/K[2525 0 R]/Pg 200 0 R>> +endobj +2525 0 obj +<</P 2535 0 R/S/LBody/Type/StructElem/K[47]/Pg 200 0 R>> +endobj +1499 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[48]/Pg 200 0 R>> +endobj +1500 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[49]/Pg 200 0 R>> +endobj +1501 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2536 0 R]/Pg 200 0 R>> +endobj +2536 0 obj +<</P 1501 0 R/S/LI/Type/StructElem/K[2526 0 R]/Pg 200 0 R>> +endobj +2526 0 obj +<</P 2536 0 R/S/LBody/Type/StructElem/K[50]/Pg 200 0 R>> +endobj +1502 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[51]/Pg 200 0 R>> +endobj +1503 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[52]/Pg 200 0 R>> +endobj +1504 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2537 0 R 2538 0 R]/Pg 200 0 R>> +endobj +2537 0 obj +<</P 1504 0 R/S/LI/Type/StructElem/K[2527 0 R]/Pg 200 0 R>> +endobj +2527 0 obj +<</P 2537 0 R/S/LBody/Type/StructElem/K[53]/Pg 200 0 R>> +endobj +2538 0 obj +<</P 1504 0 R/S/LI/Type/StructElem/K[2528 0 R]/Pg 200 0 R>> +endobj +2528 0 obj +<</P 2538 0 R/S/LBody/Type/StructElem/K[54]/Pg 200 0 R>> +endobj +1505 0 obj +<</P 532 0 R/S/L/Type/StructElem/K[2539 0 R]/Pg 201 0 R>> +endobj +2539 0 obj +<</P 1505 0 R/S/LI/Type/StructElem/K[2540 0 R]/Pg 201 0 R>> +endobj +2540 0 obj +<</P 2539 0 R/S/LBody/Type/StructElem/K[0]/Pg 201 0 R>> +endobj +739 0 obj +[2540 0 R 1506 0 R 1507 0 R 1507 0 R 1507 0 R 1508 0 R] +endobj +1506 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[1]/Pg 201 0 R>> +endobj +1507 0 obj +<</P 532 0 R/S/H3/Type/StructElem/K[2 3 4]/Pg 201 0 R>> +endobj +1508 0 obj +<</P 532 0 R/S/P/Type/StructElem/K[5]/Pg 201 0 R>> +endobj +495 0 obj +<</Filter/FlateDecode/Length 365>>stream +x�}�]k�0�����.�&ZWA�jW�b����� 3�h/����ԮtЀ�'9� �_��R�#��m/+Y�jea�OV;�����j�x&�ˮ6�i�+u�{i��w9�vb[����߬��#{�**��ɘ�@�,�)h\��ڼ�0�V�r��8�\�_��d� dNbd�`0�[�#xi�V�ҽ[�Z��'�uh�wm1:t�A �� J��D�D�DRȉb��(!��vD[$AyGugbQuBPA��h�+�En�%(��N&H}T���E:F�t��p[���B�w_w��u��Eм��r�!��#�9�)n��sR�GtX�ה��\k��0��b6y��������j����fΚ�_���m +endstream +endobj +219 0 obj +<</Filter/FlateDecode/Length 50116/Length1 96564>>stream +x��\SW�����AB D�$P$��9<��@"��"��Z?�_تm�־m��N۩Ђ�#}�״֩ӗSm�igJkߝ*9��'`u�s����������g��\g��J +��;76��r;���R
yN�y���,�m6�ڞ>�f�8ˋq�xYJ���=�}�a6S�T�C�o#�D�c�x#<{~�o@+M�����,��I?�[���q� +&�(�� ��c܅q:�'��p'ƕ�r�Z�w�`�F��h���fa�A���W=��Cb&�sp���!U���m��[,s�Ӡ�?� +[1���a{�A7k3��:��*�u5�ML�9E2��&���NX��+���R�����i�O����iL?r�Y>�4+��Կ����,; �Y��\��3���p����h����W�;�b��8�;���A\��X��[���H@�@���5��ہ�"� +^g�?=�������s��Pg�`<��+������s�9�~?��l����^�� ���/83������ +C0>�~��S��>v�ۡ�߈y�B�� p-���o�jAW�3�R�F��p+��mUC:�{l�jXʟ�6��u�\������X��X-�u%��_�a�����|5��b����0�a����X^X��'�zWat ��8���B�+(�!����^������i��p�_��>w
L����q +ƕK1��X�1�-������@�� +Tr +�����Q0J>���3���X��a��X����8�lH�B;��B<�#�@&@"2��I��a�A����dHF���D~���L�4�8�tA:2����x���t�� �Hd��@��l�FN� ��A^�a"�"sar���0���H���S���(@B��%A1�� �(,�d)��_�T��,�i�i09]�p�|ʡ9f"g�,�,��0f#+�Y ��*��P-� +k�Y��9P����)�΅��z�G6@r̗��.��FhD.�����r��p94!�.�E�fhF^Wȟ�i��X�Upr ,A�@��1,�e�e +[��mȫ�j�O��#��vd����Vʧ�:��࿐��p5�F�i-��N�D^�!����+�n�O�ZX�\��ar��Q���� 6!o���7�f�f䇰� ��V��p3��y+��~��
nCn�m��a;r;�!�;� w!�Rx7܍��?�{�;�;��#��?��S��!�C +w�.�<�F�Z�#�(�Q���c���x�8�F�?үp�߃n�F�@/��"��>�>��<��~d?�G�'�O"߁p +?����pN!O�i�i��O +?���7���g��/ +?�O��0(���g����|���D~��|_!��������o�;�w���{��W�+�8�<��W�!� �(�AF�9��8�"f�"��)�P +����L +�C������VS��0,���d̈́]݄��[���/ͨ^U���P���u���0Ω�;��6�K�]�����Ү��~>�������M[���_�h�����+����lu�XhL]��e�?JhAUu��I�-��;珔�]��V�U���3����u���{c�����~�7���aT>���d�#�?�4�iW]W����-���q�m����v6�'���A +�*�T}��e䭪/�oU�yK�������%�#c�1������>/��#�rR�뮜�C=FJ�H*��V��$�H��g /��F��L&��PX�$���5��[b�#����%�{�],��v:������l͋�7�ĠN&�
#%��i"6r ^��5��x�0<�l�*�Ҭ�a3�b9%[�9*[���E�,��ޔ�x�ke�r_3�vd��T�ɪ?�d�R��'[CqV�8w5Iǂ��p�+����떼0���n��1���,�G��#Ni�8�OU�?���ҟp�Xs�O|pB��=y����7 �A�⺓3�»m�R���������7��wk��tSV�e��,k!�WY�hye}%]RA��]Ag��Ϛm�gϊ⧖��K��)�| �RO����'y'�v��k���<�F�'��p7�nO&�ɬ�3=q���3�dr}�g=��%Y}���p^?�t�j}V���_��u��G)�$���z�%��
�|˕-�T��R�SL�t�)6K�}�����Z�6Ҫ�A�V�Y�E��z�u�u�ks���
[nv�����u��,�2�2*-Uk�����H�/|��=/=Oa>����4o�<��CҌ>�;�9|�1�O6F�Vco��6c.����7�N�c�٘�Ga�Hn���0��d�+�҇�XA$�gˬ�gʬ��2��p���?Uf��ˬt���+��e�g�I�L�>%U�[��ۭO�[�y�9����u�������}O�i�t�Rg?����+߷f�����L���>y�J���:�GQQ�nT��#� +g���*��c��&�I>h4j�_*�P�
��~��~w�F<����*@���p-z��7�.ڎ#a;z���'xaت��D��qf +�
�����s>vA�%�7oAv!��g��G� h�a�J6�-�B�C�~5���p�LüI�7s��_����OX�Pw���B?�}IR0�1���R��7���]�%�^���'ڻ�ک��{뇗�m���.X+A fR�}�l=v4�ߠ�1�~M�7�n��.lN��L��_8,���3���`K���`o�����ƒq�
���?T�S�'��(��jdh�U��\��I��!��y��o�|�=�6�A������}���ҎR�7�u�z=��������C��~X��Z"s�B���Hy`��ڱ��O��D�R?t +��0�Vq 8� +*=�d>^���J����>�Xox8��ħ�z����W�So���I��V��@�O�?'��'}�t���� ��"7�̏�>����/��?���Q�0w��E�2�$)��"B�jIM�T`v*��t�\��\�ەl��q����E��S��E�O�~^¹����#-��U�6�E��a��aFUg1���Q$*N��4�CT�ѣ �4E��8��#Ώ1�o %��!���:�%���Qfb���F�QA�k��C���|(��Ӈ���Px}^_Ĩ�`0�ۥܻ\�������`�-e������s�(;�T�ǮD7�D� /z�Hf��M�6�d8J��^%�Xt�"Ɛ�>�K"���
�sȯX\O�ד��,�
܀�n��\�=�>m�����1�\mzT�œ6yR�y���p�����o��\ա_nY��2�ūTb��mT�,�cv�7Y�bI�NW�k��הj��,Ŷi����ܙ�ݜ�E�e�+�
�8��d�9b8fzL���=�KUOj�:4q�T�d�� ����E�,� �9 �H\\�Qg&fsdTRkq����|,P�����k���z�:�ta&~Ƨ�|(��$G�e4��ʊ$�"�wF�2�!�1F� �̬쬬줤`abO�4�ܬ$��������� �['[G'<z�� rEF.Y����3k�f:M���y<�����h�m�\�F(�w�/�)k+w��~|ʘ��n�Coh8�8����_=_�n�k���%+2�sw�K]�:���6�!sBW:n���ar��g�$
��R9e��]�
B�sn�Xco���c�(�� +�DCbB�rc�rR�!��>d Y����vqMHD!ڕ<Q��@�EۡR�U����` +�z��D��b�l���#��#��QL�4�1�d��O�y�=�f���-+��{��@�+�8Z�i��+�҃k:o�|4p����"�-̭�F:���Y�912���L"I\RdR�"qR䔨܌��!r,�-\K�rcT�W����C��{ـYBҳA�ZA���2*�[�ߎ=��8<��Fx2阤�1�)�����5qr��I�[g�Dhn�H�����ŎN2�ѝdlǚ���W6��+��p7�H�1�W���CH��#�:IG�QM'!$Ex4D�Qb�'�0�|�$sQ1��a��np��������#3�%vP����6S/� +x�$3I!N�Z%8�ڈ����E�g 5SJ]>�¿�p)�%�H�
���qbZJ�0��A�sjz۴IF�����r(�^�#�2�d���9��V�B��eu��*���UDi�O�X�0y�Љ�τA<�Lr����?��D�0�W���,)�# I$� +I��\C�
���G�V!x]>��A�����ܿ�/����2��Q>�o>����'��,����11:3����j�"ʢ�Q�jj/�4�<��=���HPz���m8��>v���r�[P&v�A4{�&���4V�G���X<<1!ijc�S4�.b])�U��J����=ס��D��| +eĤ���ƶ�݆.g�'3 %ꮠ��J��r6�}���~ j��.�WGLL�cE���S�}E��U�����F��t��HG`�3s��K�_zi���6����Kg]�/��p�� +GA���F�6�Ѕ+s�L����('��HZʪ�EQ˅q%D�7X
T�V=��a�4�tZ�Xf�^n ��q��x�B��8�DŽlaR��X-Nd�ӉH��1�}n�[N���r�n�@�ǖh�m%�'CQ踥��s��ޭ��<�]$};wzC�1fz������p3��6��fΰ6X���eH0L&�<a^�7.�Z&����-�q��z����9�*C}��X��zK}\3�(.4̏Z�B�k�kF��K�I}���N�ް����i*��t������$-N���"�����S#)�N%*+U�i.X����*�jUv���L��6�Lv&&�֨��z3�l�����e~�=�[�")bD�"?<N�Xǧ#�%��"[�l�1%�f�r ����|.|ё9���8��5S��"�3e̢�+N.��k{k�����z)�M�%Ǟ��5r{��+��;u�{���CC�94ʕ��J��
���g����\U�F� �t5�^�j�m]�j�t�3/)��N��I3�Ѵ��V�x��YuT�3LUk��q^f1�{��&�y���E&��q��*��W�ך�ܸ�KЋ��ʪ�*+q�W�z�����}Nè�p'{A�*6����.�����a���6lCg���h)g\��Rg۞Չ2�����S�^Y���t}��+��Sǥ���:��o�;.�9r��z�2?TP2u�5��k��.��oq�D�� SS�S�g�Xg�К�Y3�fc��Î�cS�7�Y��r�&�����h
���Ո:P�$�H��$T#�B=� # :�P���eFd$A� )���u �L]��E'j�����\pZ1D�+%�cX� p!��j�5O���hy��g>L���Ɗ�6�Z'�����R(� DÊ����/�2XYB��U�����ԓH�}��V��Kt�("%��q+*)��b�ED�˙;��ؠd}�?�$��s ��'n��n |ϱ��lz��X`��A�`�G<͕�[Fw5�=�$�NR�X�}Dn��rK�ը�*�j��c�d*SjU�ͪ�*��b.e'��R�ttm�}j�G�+�N6U���U��5�����[���v�l���%�Iʢ�`��b<�S�k�v�YԠT��R���T���� ����P��������
1Ň���݁;�adS�k�嗼x��/
��~�iW�mu�N�:�����ͨ&�4�6��̝p$�tl���|z�-�����@�'gf?>l=�!��9�-�L��D�xwvib����zR��a�a_h�z|��K.�DF��j��ԃ��9���>�7�F��
e����I:�I����Xs�kdS��&EO�ˮ�Z�Xu�� A3VQ9�t�2�e�L���#zB��!F`RL��̈�&�(�"��0�'͋]������W�&���3�5��N��Q^Q��W���Z&U�2�Ҽ�qWxo~�|�Q�Da�l��$㚥k4�����W���g���|+�lƱ)�d�OxR���}'j��pE�Оg@[����� ��g�B�ܵj�� ����j�w?bCk�}�1U�J���:(����ٍ���xؖ2且�8����l�����ܣ��s~�,���0!~7�ve��G�n�+����M��! ���Ab�p"a$�Iij�[�Ri��(w|�LwaT^|�"���91���֊�zgMj�� +wEv�j~����1
��1�ÖGt�������I�h�I��9˔p�)�%v��2+ˋY^�Z�
"Id$�4�� +%_p�%���dޙ��md��x�NYh6��M@1�u��������6�.ގ�O��ȶƋ��Z:8lˢ�c?�դnL�ɩ�Ǖ��r9���;�D���%Y���8�\�A��֭�{�+�0lv��ǝw�M�'���1#�<w���/'�^��J�o}@4�W����_u����M��Yg.w��j��r�nr��2��쪗&���e?����f��~Z~Ś��J%G\��y��n�SR���������X*��LK�J�*>�O�ss��q��9�U���|ѳb[HG��`�(5&�E˰����+5�6�EO��Jy��nFDm�ݬ�f�4ocz�bV9�i�Rt�V�!"��z��*[&jP�B�y�p^%� +���� |֟Y���4�;k��Ww[Yu
I}�ʾ�ʺ�� �+�[weIiW�_���p\���gZ�� +բ. �O&�'dN:p�IWP0;pv�]2���>Xߞf�J����^.�}�w����TQA�T!�&`�e�7�Ne�P�˄ǨR7-�'��ٗ�N��|�p[Ӥl��͂YL�������j�F��>D�t%�T�D�˗��!-� +pĉV:��.#�+�]�2o��zn`ģ�t���Z}o�@R�~(%i���8+�P_1�$�H�JRQ^@U%����f�\�j��ãr|z��j)T�+8ʉXm �5ėH<$����j��s˸��)YEIo����Lߐf�v�qE�&T��Bd��&��V����u�(����>�v�����g���ȅ�:����Z��fe��zWq$��y��) +l���� +zlwd������p�p�_!"� ͔�L�#l>���|n�tH�%�Ȧ�!�o��Y�6��=�BWv?�� ����⇉#���V��T�(���]��5b3j
��'�DzJl
�\�Fb6�FbGu�FҴh8�Z#rD������� ZH�����m�\��G�)d ӅJa��!���h��|A���3��ߴ} `U����<�9g�pr2''!! fI������ �I�0�����:����u�}վ*T�yJ�K�>[�Z��j�*�RK)�����k�����އ���&g���Z�Z��Mc#)�����NA���O> +��T�h���s�Q4t|�0m���I7�y���%��W\�9�����_]���3{�L{z�M�ָV�+BY�/B���GK/;���;fv~|���Mo���
�`<��\�}=����dW8� 6�6��r۶�o�`T�Z�:�n6����X�e�� "��n��c�1=��CTt!�jC�=V�7b�Gi�)�0oZ(?�q�2mq�Oo[v�ec��B��|��۶�;x��~vӛ�e��K�����/2^��cǦ֖������lcX���X���'�F�H�Hre
,�6 �gd$3�n'�b�B�#��@�(�QQ * +��DA +��q��RM6\ב�srF���Jpo��s�o���Ɗ����])��=��
ȵ���dN��K#����7t7�z���p���&X��I +�����@u���ku�
�;<����鐠u@n�~ �fw�����Ż�u���W��� +EȥO��"��\1�w5�:P�k��O�Ӗ�6�6��BTX��<�P��ͭ��� +*�(�x��w�r��2p|�г�-�W3< �c!�E�Gg!����u�*0�J�%z ��R�
(�ez�`R�P��(r*eE�%�LP@u����G]�� +�����X��b��&��}-���P@�bD�\ƚ�`-��2agU+r*W�d�U֒��ؤչ�r ��=�p�Z8^p�d�� �^��o�x�'��C�=]�٭�)LC<@Ҙ7��������w���y��E�;U�&w��[�v �W�$I�甬,�Ż̻��;ۛ��!hYvq�b���/(��#�e�M�`���!$�I�.K��6!B�Ψ���G�|����-���f���`��7���\y�egp}���zca`��o�(s�Ř<+e�e��B�N����2U�C�%�FԨ4h�C��]�����V�ò�.t'N{�M��^Vì�*ɬ%�U���gjp��w㏽�:�3�����06s�?�q۴mc����W_o�T�Y��n4i����a� +��pP�����O�:�����Sd�N��|g���;�1&�"�^�3<��1!1��梹
�"m�s�wQօ!O��+��=)pg���6�>���5<jX"�2��%���$3��b�a?����ظ��]�Hw�����-�YRw&� +5t�6t]���PCW�'���`���33���O)<�|&u4�����>M_�ۧ�?�<��w���{R�7�f���ז۫�Ky���ϟ93��`UM�#;g�/�e����YE0a\.�Ę(fƢ��F����\��@8�{�6�9�{1F����܍���X_lS��*��8��i��y����yY"S��� +0��J2pR2<d��@6����;;SU�4�)4�mhdo�s�!w]������а*aO$+��Dp4&,4�f�D�ej�%݁���j2��Lj�G��l +�
���41V��3\&NN6m����J�*0)�,~�_zU��p�癨1ns;���s��� ��Ҹ�s��#*��s�G���O�>VF�� +��s������I4�=߿�d{�>��h��%���x�h=���y{t����H +�35��)�� +�U4�!t�� +Í��5�ȣ�Pa�d-�f��X�\.�U7��<�b�*��S=YSc�K[+�a\��z�.�,��-K�Vo����7Vl���W��.�x��`�荖�b<^\ͷzQ��Q*\f��� +L<�04�w����n�u��ײʪ�tȞt �v���9IO40�;�l�wy�V��k�ה�ὫL%P�K�$�Dɯx{,���DI��h� +쬎�7o���ڵ�}w�ˋ�t>v��gQ�_�ř��������w�����zx�#����'.�nÒ�Q�_�������H���V�V���{�����[y�%de�Όl�d�z4����d�S��Y�X�0��� ���hA�@�3Gt
�![�8����Wgab�7��9�0��$�t���"����������I&��r|?��i=R�+O�&)3���Y���'�ƒ=*��I�������Ijq � d�j��FI���A27�ܱXL�qn�(ܦ]�M����ÿ3���Y>�]�q����FN������d��q����TZs���Kv��k�^��P�6k毮����Ym㥕w�������Av��1mz��O�m�z}c��ɍ���#��}8�ym�C��H�i-Yv�@c%o>��:����dj�n�$q�x�ȉ~|nA�������XNF�0��`EF`ɐ�>���8���2��^7�g���>��\&�e��4.�5p=\�����Ñ����P����)h�Y�72-�9�?4N�?|��^��m5��P��w1N�o�Wl���)��̛�� +��g����;���~�l�s[9Ή4��Yg�ZE���#Z9W.�k�F������:�<��m�[���S�AI���0W����}h�ǯV)}$��7�;���m�Ï/V�F&� �V������q�YKr"S/v2��6f�(2�q���Z�p��r����`�-Ԙ��Qdvl���$���������o�o����;��_�FT��:Oȿq��-�oN��;j�rK�96��I� +O�� +g��;���6�UyA����/T�+3���<n?O��t�s��~��\�U�k��
jH#�P��$s~��(J/!UY�9���v�� +����F�]XYRy��:� Scژnlf˜�"F�r�Ql���́���|{�V ll�̬Q$��ef�� 3�� i�E���߲�!|�nAw����n�/}� �i�A6Ő�^�KFEP=w�S��
79c}N�������/�$�.uK+�~I
��T,����>q�,�D��Õe������$c�%Tcj�:����K��ݿY��L�
(Q�${�2�c4q>E�S:�^H���� +�$P/����� e"���v���08}�`��w���ա��v7?����Xᷱ���'Vx��,�7>�I�(g�%�8y�<G^&o���˲�$q8LZa،$�g�
�2Z�M��z*�o�َ��;@M��^P\�Oo�n���=��۽�_�{��[��
o����'P7������U3tnC��d��3����l�u��Myv��Ǭ�wsҡ�5P�'|Dʕ�Z��]��.�\���][�]�����^��r٤��e��|9��ᗬ3��]9(''ܜϏm�U$�sQ���'�s����q�kz�(�j +����J��چ6��<���ǣ͜�.�~!l���T�QM�GT�W7�(�B��k�!�U(C;v�X5�t~R0��1� �S@� +�9�Y�� w S�����X���d���ȁ-G�_>�h�K�ݨ�o�O�T�<9�O=�P������:������w�!�0���)�o����y�@��c5�����hM΄������y� +�ߣ���-.�y���g162}�Q��#~�\^�iz�݂� ��)�a�'#�� +`�M6N���{���+8��DŽ�,ȓ!=�͂�&���(� e���a~�`4���Wp��U܊��ںFe�Y�ބ#��!�����X5�?��2.��� +Ĺ�ɧ��=.;&�Ɛ�p�kq��y\dn��SI��6�i䵵�i{]mM�4����� ��V�*l��쀘>�ScKK��A{>��W!,T�.��価�����C&�ʘ�O��]�Ԡ���IY�W�V�WӪtfͨ�\�Y� +����/(��x���Ò���d�]�=���sLK@r�H���,RG��pv��Xj�Q��n�{�*���=ۿ��j�k��y�")a��@!zNd�)n��:�Կ�aH*L�[1��0��0K6���$d�_�kG�����0B:��}\�����8��?���q|�ó�1���~��0��-�Nk��ŋ������;�={��k������_Ø���Z��NAq$��ꌶ�Ҳ��߰�r_98�\3��SK�p|�mz68�S��Żr��z,; ́�u06 +�fV+xH����e���Z,�9�>P>a���G +9���o66r���#���u��B���7��=��`F�.��l����FA�f�W
�G
��d�C ����"���^X�27D��,�!�|BD Јܚ= +��ڏl�|T
�ta��d +�v�H[aC�
`A�Qٕ�j��y���S�C"W��C�^-���l�,�*�k�9�o�a�����Z����p +r;c(��9�P��Fӵ����6Dց�0��f���� !�\�U���\�p^pG�3�<PD�����l�Ámq`�O�bmX�f�g�m�E6��[��7���x�k�t<d��:e�4���l��9斆�x�Ȉ��IC�68�Ǝ���>�h�������!���_.'� +A*fll�?A#�����!�����2D+���+�-��eأ��W)�e� �o�"����o�f¢�l57�l�#�=Xg��Y��|�Aa���;H�����L���T.�f<�B��%���o��3�¨��sׇ3,=n��Of�㓣�kGfF���֥�!f���5���F�c���}F�+�ʳ���[�[K����(Fű�94�����'G֫P���J����^�U����� �B0�dkZ�ԓ +�3XR���&W�B��@hά���8�\μ�Цǖ��~���K�?��h��,Q�5)4)/���~uY"A����1������C�cQ���X��ɈC����נ
�?X�'���q/��a��&�z"�ŀM�hS��"�
xp��`P��P���_�5�1!ԫG'��=����NW������� +h�TǨ�#C��:��VU����������a����@����М�ZB=A�٧��i7GܑX�9�6��h ��I2���H�]:h���e�T�"�iE�M��d,�I)� +?��w=�ȝ���c|i�����7�x�����_����"=c)3����ԋk��@m��#09�o�������<]T4���m/�Ԝ0g�,��B�w�ڜ�;s�ٺ;qv#��5�#qf#��M�L�ݑ�\�7�H��%�{6���I\�6y�ҹ7tv>�����Yuvo�w7۴���*)3*��oj�1~m|�ҡi��E�7�F-�j��=1����9/���3=����ˇu�y���7���(Ͳ_�k������Sz��u�/�����]H�@Y��aS�,B��wV��E>]��y����{f�z�Y%ip��^����N$�o�݃l���#��6�!c)���y����wvt���=�n)���s/��Ƙё[��W��g���Ǎc��-(r��c����u��uHT���dCE�H �\�HQ�BE����+ +2�l~�RDp����8����-�]Y_�%l`BB6$�Ϣ�z��k��:�<le%w��̜4�'>��d� ��L�so�[�:t�>Wd�� +C� �i���X��C��Ea�=Xר��+�.�|�L���xXZC'�������r��g=I=�I�`w���_�0� H�$��KQ0�k��>ҁ�<�Ӭh�����jcT��)4ԗ�s�-v�0d�r���[�ww�z�:���;�/)Y]���۶7�7�'�.}�Um�Ւ�7&*�'qe[�|�_���=grAAX �J�l궚��c_l��`jaa�V�:�c�9���c��W�"��y��*dg��9�+w �u1���NU����c��0�Dx�<��z�<QU�HWC"�/lt�Ά�7 +!Ɇ��D �A����G +�~�]9�6��='j� +N]�9�n�eIɦ��@�G���t÷��x��� ���!��3��,
��˷�����P���}7oI��8[�r�)fvs�� �Kt�&F�m� +E�NT$����q�A�=�gqq� +G(�;a�
���̸a���E��z�LG�d;g�z�TU2�'2�N!S��'���CM�F� P�&��7X��D���s=�r���h���?������+��z�&*�fL�&�1���Ǻ��a�T38<GG-EJ��A�a4hU�gM_5!Y���Fq�!��B����^A�d�-ʱ\S�M`�sә6n���t���+��<(��^�x�;�f�����)�eq}�&��r`w�w%�TR8Ȧ̍^�������d`m�h�?F��EI����|jh'�_���ם��8~pd��M5:n:2��r�cUp:��f��[���BO�9����*Q[��%B�����D�u +s�<~�0W[�^�/�W)K�K���[�z~��]٠n��D�RTDF�(�BPU�Ǟ=�R$�b�9& +����F����Z���䌐uЉ|��%'����vHւ�G�� ��� +݃�#��RCD����o|M����rא�Ec��}���x� ��IE�F~�/e+�\���LD�\=_/�K�I���r�|��*u*3�$��B��Tz����[)�Jk�eZ��e�f�F�bu�[l?FcT�T�)���(/��0�E^$ƙK���G��#�u",f��U��l�"���3;ȓTu�"'/�<�!$��%�T-K'�0����D�k�Y��(k�8�s������G�D��;��ĸ��bk�����$cO�,��q���PaV,����4:���
ok+�>9��.�n�W�E�����n3�?���������̾&�}�l@BH cV�0@��$l"�I�I ���\� + +�!*"� +�L;\YU�,�(�D�+ �9�kf°�{�����]�)j�tWUWUWw�ӧ�NgjA��P +�ؗ�a�$���R�1�M)� ��F,���F5eb��K�'����2��hB|ϼ�
x�-�N�=m�U�����3:�> ��P�/����X�ee0��4�&�
�1�6o������@�*�e���^�R6D5J5�MPi�JV +��\X:�*P�:X��2' +�QZ�1�hy������o�<� �N|��[�}f�3�e���d�VEvI�T����
x�ظᝇ�ho��<��m�zmȴ�`ɓB��@KЪ�����Ȱh:V�+���WD�1`@a��=��|:����k�ح�e�V|�X$����L�K��}$ڲ��g�B�Wf�`K�����}�����;_?gڌٳgL�#�_dU���ȭ��^�vժ5zv��g +���C�::�/��K��2������HvV�{�[F9˘�{�ܺ�Z9�z�� �,�[�,�{�II� +C_�
~�Z���1�y\婒7�/p�B*��^��6At(�?��Y'��ި]����˗.r�~�\��4��W��v/�A��w�B��"��V.OB��2��/�� +,((���(5QzIR��:J�
���O��-h8%Z4�A��˄C�(�"��>�5�j�(\��E���K�\��u��p�^���4m�4x_�dk|O� +�sBȜ!dO��L)Z����s�W�H�H/{�����̠����Mզ��G�f�&��6�%��YB
�D +��`S� Z�
w��2�n�G�v���\�X�ץ����d�q�X�Y����'e��C� +�K +j�ƌҫ~Lcx��3G��@�G�PF#�=J*�jNf9���_�]i�8UE�LU}��=��h
Y)�J���|_�C�������Q%��D�Up����!8Μ�!ET���j�M-i���mi�=���&�����أ�WϷw�m���o鑝�pă���>.�xzʄ�:a��>N1�[��G;kF<�$�r�ĸ���Ȇ������܀��� Έ�gQ�2��h� 䳭Rߙ��ڣ���\IM�Œ��D���D������fs�`�������A�m{ϳ��*��/^yW�T^��(D��Ey���H6Y�I&}�!��Y*!**�81Q[�@�� +#~ +l9�DA���a�sX��&����XbL-t]�1z�����#2|Ce��ឭ��r9y#��j����s,|�@������g�pRf�a��b�1A�B��#�};��Q��=ig�4�i�v�"�*6 �2К�OJV��E����84�8e�gӆ��mާ�m�e��ݿ�.����lpDI��_iTR>r�����:w +铚�.4�G��ɹ�SW���o/�vߴvbRE�G��3���x��8Za��-�]�E�M�O���5Zi��u���@��M�goJ�`D"�z�Fcb�B`11.?���M� ������q{��Լ�tZ��iG���SgZ�8zr�;o������\VH'H0�#6{$L�����, �X����i��A�#��Fﮐei9�:X�9s����yՆ��)U*|�:��2��o4O|����oo���.
�K��x��S�L�>��hn��s_h8�i+
�Q��9n�� +�n���ޖ�#�$�t���`�ja��b�Je�b1tRņ˞���f>��\�.l�@�imV�)6���Y@8�%�/�P��[�_/�O��t�kB����D��T(
/X�̼fy���^���np��F�E�&��)�.B\������K�ed����-`o3%?���v?�
w��pw/�w/����[�.%�컫��w��me!4�qf��x�G�y6����ݥtȽ���w��6ޔ���P�K�}�����v�c/�Mp�;��7��c�5�KP��@O� +�T��)�e�$�תS IK�B�
��/Ӛidž�J���R"u�%�����H��^X�x�.Oyͼ�5�����y�����<t��{�>�4:�z�V�.?hYe0���a��{)5X�a�P0���f�EhJ�/n3�45�U�W����ȫ�3Y[���f�Rj�L����Q��v���e�s)w3\���Z����@�U"I"�� }�!�#��6ΰ/ۃŜ��FM ���s�f���~ŷ�P�#o}���@]$��
�H����
$�ط�~�&�[�q5X���ص/�!�2�K6�3=�@�q�g�l!$~�&cF�k�YN�7�ز�_ + Q*�tD��6��`��f���ԕ�0k��-��W��t�9��c���r���Wl۽n�b�r�GO�H-�7WOfm�����t\�����|���'@��aLbI�]c����e +���'�����]˗4���I`q��KH*�1�HD���1�ۇ[c�v�;O'�5�[aYk;*��8/u|���3���8K�'ֻh�����1&������QƑHh�_"�4�7^�]=Q�2�t��r��;,F���?�5%zgd0�TzG�|�A��3�*�>��F��Nݐ�3���oK�\���u�W�(E�W�������')�ɮ�7�I���Mc|��9��~9���3'?��_�~/·LbH�]� ��$�h�A�<��7D��;
ʃ���=��<��1_,�cJB���R�K�O�0b;�Ȅ���R������\*�iG5ת��9K��w�u�rO/�����R.��. +�|��;��m��ul?���h0�����:�h$ʘN���CuܤP��Qa☎���6Ӂt��<,b��ܚ5Bؚ5/��_l��@z�/ ����$��z�H�Z���
@Z�ȧQ�Mg�>O��.���Rn5t��.����_�~;~��B�K^=mE������[�i�� �4����CO97��ש��
��sr�y۷�'� +�|Nv�n�)p�m�c���64�����d~ +j����O��m���gm:葁���$�tQc6C[ +2xڒӢ3�N�1I�����!�_��C1oÊ�)SI=���'����9����R,�A�eh�-l)����S[~OpA4@�N �v}�ժP���(�w�$�(�5�6}ݯ�3-|Fb����WQ7�rH��-k� ��
������[w~s8�����x�[�O�k��=�ܽ�����)�m����>y%���|�f.]h�����aҢRS�wJ\-��T�'xm +�8��e��>��l9��v��}A�<����V��-���r���W��-���,�m�����o��/��!���F��[FBb�Wy���%!�8a\.֞�b�l��N\)�+�(�T~��P5��ij45��A�B�\~�,z�~���a��N��5]7W(FZ,�AK�g��f��60�@x]�&�)Rl��#ãFE����uil��Q�=�%Nm�j�S�=I�$��8-E�)�SC�iڴ��k:_���x���W���E��˙�Ϧ��U�v��\������救������������73g
�������kv���������òɞ��t�����M9�9����{����]Ů��.��]^f^i���Ȼ\C�g�o+�)^���J��ns����k���wO�^�}u��z{�{L��F��z*z��9������o,��+���^K{}��������p����H,�Y�"��R��)�+*,�_TZ4�hFѳE��(j.�[t�����!��:&UO�0�&"it/���$ +('�h�\�I$�D,D��I"% +:<Ё)N��-����d8�<��k8��a#D���BF +��SxY��&����=��B��#Q�#�s�7p ���x ����\ +4{ +�t%�҆�H�0���I$�����"��7�!�\�5~u�r9�#��K7p\�q�S��@�[�����z�`��0,{����'�O������W�ɬ��K�y�_iM��%�:�jt]���G�=k�&�֕�W�֤Z��o��3�~���rReݔʊ�a�u�5�֪I�rk}]yEeuy�8k�#����~����N���G�VO(������v3�G��r����u�s0�f�ں(�BS�=���+�F�N�V�O�N�T ��#�5���I� �u�U���և�#�^C�w��u�cB]m����֪�ԱU������jF��\E�k�U�&��5P� +2��\�5��V�ښ�ӭ������B7I��2�U"�^QU3�+���j4W�w(�F�+ +С +��WVs�Uک5�k������I+�P�Z`pr����֊�)U�+y����'�V����r�ҦN��Z��D��a��ã��}�!� +�7Tl!DKi�@�5�+/*� M P$q��)P%vc �R�t��i' +�]��J
rrx��'L�h���!O�ɽ�7�3����fp,����0�w��=�e���}~��^h��y�9����%��+F�{�h:�"S[F�)����� +K��G��ȱg�d�s�e��oW�k�Dn?�1��$���h���읧�~X�$I����JU�X�c��Vg�S5�Ϲ�'�6O�#�mԱ]u����A�;V?�\U�,��P�q�*�*u�������ϲ�Bj�R�;K��{��>W٠@�r��6W�k���Z�ޥ�O��|�L�����6]�}���j�g>w�<{�:��n��S�^���g�{��g��S, 5��%O]��9��YlY�j�����5��9��M�v͉��j[_ɧ\���J��j���<��2����BK��r��ѼV��(eўL���3��U�Ū������]�X��w$�,��TqhQ����G�Q��3�3��'�sﷳw&u�I��:�^���|H�#�~J;�?��I�1VI$��T���%*ӹ
R���,W��̽4�X�}�%,,ЗiW,�=�%/��[N����r�y�����
��
�1��$�Ϡ���-��@Ybk���sW�jw����}�z�����"}�6O�/P�K��r�����K��V� g�k��G�*d��,S ؒ;�үb�ǧŖ��^��I{�.!+ayB���g^�}��Su���6\���_��E.p�%/�81)q��W�x՜��^k
>�;���%Cw��UR��_�><ib��$#�WIN���R���kخ�aɞ�˒��_Ó��8�����3��\�_��q]�uY�������#SFݘ<gԼQ���уb�a��l�FHٜ�B���)#���''�����5�|�w|;��R��<~X�mI��<��I��bgK�ܶ%e��Kʒ�$���*W��|����у����1��)w5�} ��уF��u���~���ǧ���=yM���ذ]7��o�>A�c�%��4�߸~���p�K�o��;�L�N�Q��~���N/5�ptb��&�x��!�^�o�����M�1iޤ��v�k����@ۃ>���{S���=5m����͜3k��!g�8���6u��_��u���՜;��z�kW�R��owN�O�{���ޓ���5����E��xM/��fΉ�fm���tNo)���M���j]j:�ZΜ�����M���3��7��>�6s�'I� G��K�d^�u�&��W�Jߝ���~����>�oN��6Mqb������R��������5ye-�W�e��ve��������4�ӵ<W�A�*t5�
Fע��!h
Z� +ы���-��j���-���m��S��;�3���$��R��\�r!���"�˶'��V�<�_���*T�>�Y����=n�v���X^F�2��Q���e/�w�˝~�˸]F�2f������
SO�ҕy.�̗�~���C���Po�z;�ۡ��v��C�jQF-ʨE�v(�C�J�x��<h����}�ze#��Q#dzE���f5s����5��A��]�}��g�չU����+w���<��gg�Wja�f_�Z��¾%5(�AI
Jj��kP�Rʾ�Ny�!O5䙆<ѐ�bay�!O2�9�<Őg�C�&ɽ$yv!O.l�or�D���uR���<�����tR��P��P���y���)S�2E<n��{��������'ww��=����*�������y�q��/w���N������=}y�!�;��}���C��}z�K��݊ǔh���d�=��ă�%�p��/�����z��(y�_z��� +{��Ux�6<r�
�܆Gn�#�����mx�6<r�g�&�����{h8�~�~�F�п�Qh4JAc�M�ft�����Xt�݅�F��{�84M��Yއ�Gih��@���4MC��4�B���h.JG��|l�ze ��v6vY�����1�8Z��@�Qʕ�u�h�c�J��V��8Z��`?/�����c��=��AP!�=��h#z�m�|[X���/��6��^B/��l/a�/X7�/Q)��
�-�W�kh�ڍ^Go �����FD���ȏ>@jD��0�A����:�>G��ԁ"�KE_qF��{�l�u�c<<�WG��^9��N</��E����"xSo��M�)B�Gh�-��#�|�����Z�l����ꤵ:i�NZ!��%Bt!"D�}X��J���J)"D��v��%�Y�D���Nڨ�(ۉ=;ٻ����(]�P�Sy:)�&�ɤ<�����LR�����/���-���uw+���6�=d���8�9NT.��N��N���_2�]���nbߛ�-�V4�sLa9MC��4�B��BΝ��l��-AK�c�q�=�������D:Z�N��Osލ��sƢ���-�_f�D�P��2�a�����x�[���SOj����M?Tπ��e��<��'��\V���3�,�ˊE��<��'�o�X5�U�X4�E%>��6��O�s�����Cף���t+����ih:��f�Y�w�U, b� �b��G���Ǒ���O��(�r�'��V���ѧ�g#��K_f]���X��z�$σoS�ɩ}�Ǟ�n�z����H2y�,��N�A{��C=��N���'������?A��[5�O���O�=A�� }O��G�YM�#6����� +��L�L�L�L�L�L�L�L�L�Lv����ؽ�Wc�j�� �L�~&H?�� ���g��3A�� �L�~Fڨ�6����i�j�� �ǟ<�J�C��44 MF��C�=�i�jڳ����=�i�jڳ�������?���OQ�����^���e}��l����4������ϲ��j�j�� �@��_D����@5�x$���A�}�x$���A�}�x$���A�V
Y��� �>H���� �>H̪&���Ab~���{"d����(��翠F� +�O��:�����sԎ�@(��DQ��{A���g���ݩ"����2�Af3t���>�TV��ʜ�����Vsd&�\u��xzXE�_S�cꉫ�g�����\����4C�d�y7�\�]�`��2{A�.���� �d�X�� +2[A�*�L�,5"XK�QA"e����IR���<��������-�6��7/�M�7/�^!�ya�s^���&Ü�&Ü�|o)��6� +�6�6�a!f�af�af�af�af�aN���p8'��d8�¡�p�C/z���^8�¡���Ms3�݊R�v;e��@w�����t/�ƣ �;݇�Gih��@����;MC��4�B����3��yh>�y=�2P&��z���=�G��h9�A��I��(��D�hz�mh5Z�
�\��h-��X�g�OX>M��a}�|�,˟"�m��9��6��r3��8r��������NXH?��x�A<��䁅Ą���=��O ����&�%��f��/���S��߰�[�C��*���.�;��m����LN����G�&nx�^z�lb������e��,����X��r�������u|��]Ȉ3�8�%��%�x�#^∗8�%�x�#^∗8�%�x�#^∗8�%�x�#^∗8�%�x�X�Ԍ,�###����P�sK�ݑy@�qX���#sudnJ�/��X�bՒ9�q��`ԁ� +�|�>�����l`ӁM.�xW[a1�>Xt`с�VX�b}p����:0���{�9p���w�9p�k�����k�9p���_|9����K9p���G9p���G9p���G9p���G9�')�g:Iɡ�ȼ���8I +��$ł���_ %)!H A�H AJRH AJRB���:H AJ�� �5>։� c�t�I9���g
��#���Ht�4 +�F)hb�-�� +h��\L���i�bbP1(��FJ#��҈AiĠ4bP1(��FK�Ӓ�d:-�NK��b�A2�A1� � �d�b�A2�A-���_J�/���b�A2�A1� � �d�b�A2�A� �d�b�A2�A1� � oJǛ��t�)oJǛ��t�)�d�b�A2�AĠbP1��T��x���x���x���x���x����q�x\1W���q�x\1WL* � +�Ai� �d�҈A1��$wH҉A1� ��b�AF]�Ǧ��AF]��㽳�G���V���Y)&.���A\�;-�xv1�3Ħ4b�Al2�M�� 6�&��d�b�Al2�M�I�Ф���M�����?����>TEo�>K?� +����,����"F�#3��,<-�)S���"C��+�%Xd �g��,2�LA�sȟ���3H�`�d����r�"{�<{��z���",�~���,����<��Xd�.ny>$G���Xw�_�N#�OP}�����QtG��v��@�%�����S��D~c�ݰ\��D~["�,�ߕȯJ��{� �8d%B� Y��eB� Y&d�C� Y&d��eB� Y&d���Y&d�C� Y�!�Y&�o'���3(3�,��,��,��,��,��,��,��,�L(3�̄2�L(3�̄2�L(3�̄�|(ˇ�|(ˇ2�L(3�̄2�L(3�̄2�L(3�̄2�L(3�̄2�L(3�̄2��,��,��,��,�L(3�̄2�VC�j([
e��l5����e>(3�̄2�L(3�̄2�L(3�̤���{��=|�>�p�8 ��(4�ЄB +�ЄB +�ЄB +M(̇B +M(L�B +M(̀�|(4�Є�(�����bx1۶���h�И�&4��hBc>�= +�O��:�����sԎ�@(��DQ��kj��3���������?�X��>�>�����G��� +]��A�ѵ�;�hꙅ�~wm����]G���a����2�u*y��l�β�%ٹ��VA�ޢ��c)w�F���Eu�?��^j��K�'H�q��Jb��Ь%F��*bc����XEl�"6V���U��*b��v��o�)(3�`�,V����ScUm�8?c�����3��o�G :�B�9:��P�CM&���C�1:ĤB�1���#dC�z(Ɇ��o1�H��T(I��T(I�Jt(ѡD�Jt(ѡD�Jt(�!B��L�Ȅ�L�Ȅ�L�Ȅ�L�Ȅ�L�ȄthСA�thСA�R�!R�!R�!R�!thСA��-�-�-o�ƛ���l�9o�ě3����H@Ǜ��H@Ǜ3�foNś3�f=>��fo�oNśu�YǛ��f���xt*����G�ã3����H@ǣu<:�Nţ���qG�x��G_�G�x��Gg�ѳ�h���h�Nţu<Zg$��W�x��W���f���x�5x�z<[dz���:����s�l�����x��g�óu<[dz��l�������w{��d�{>ޭ���x��w�x��w�x��w�x��w�x��w�x��w�x��w�x��w�x�����u�;+��'�{d;���ϰ���s(mD��������?���~�?��,��,���� +??+������)��\G��)�_�������)�_�������)�_�����@)ُ�y)N��.����bF�� f`<@��q��G���_��m�.�P�qdG�qTG�q��_��`/m1��PnC�
�6���mC�
�6tېmC�
�6D�iC�
�6D�iC�
�6D�iC�
}6���gC�
}6���gC�
}6t��eC�
]6��PbC�
6d�PaC�
6D��`C�
6�P`��d@�
6��vr?"l��!�&�ɀ +*l����� +�h7*ll�6dؐac�t��a��E Ď?��!��rǠĆ����G�����bC��ղ!ņRlH�!ņRlH�!ņRlH�!ņRlH�U�U�~U�_�WE�U�~U��%>�]��E�+�r�+YBW���5h0�}}
Q~����"x^ϋp����^dY�|+��b��A���s�\�Z[��Z��� �z����'�� �z����'�� �z³��r����� ��Z ��Z ��#�k>Z��p�ZT���3�^@/�y;��{���ݫ��z�{��.�*/�h��0�D�F��v�L3�>J��R������}2�]���N�'p�)l�����h��f��h>�x=�2P&�暋��=�G��h9�A���I��(�D�hz��oD�Y���(�l��b��D�F�q�� +�w�.����ꩼG��{���ރ����5x�{��ڥ�Rm'�v�����boK�x��~��_����y�u�f�7Q�k�NU���x�- ��a� +�Q���2 -����+-Bg����6l�
i�Fk��k���G������vm�]a���l�1i�F��k��Fx�6��.�v��d9�2`(#�͈�7��[����p��B������Ե��VP� +�ZA]+�ku���Ե���S�r�i��v�i��v�i��v�i��v�i��vxi��vxi��vxi��vxi?+/)OZ���\h5Zõע��?ͱ��odY�~/��2�%,w�ܣ]�
���*��#&�<���ݓHG+����X"sG:b��r/��1�ܿh�R�X�K5c�f,Ռ���T3�j�R��^1A�ś)}3��~M��f2�����~��ƸQ�}��b�a� +S��j<�"K;��d� ����&�5��xM�N�i����Q�6j�FMۨi5m��mԴ���Q�6jZCMkα��ZӞ�l��m�Բ-^˶x-�T-oR�����Z���c��j9f�x��xF�#5=9�<[^�H
�A#5h���Sk�M,?y�{$'�\���4�̊�NĈ��&>jV�:&�cԈ�ӭ9Y;�'k��|�-kh�ڲ����-kh�ڲ����-khKFԮI[��f ����6V���5�yM�� +YW��/�'R4�Ƌj�ܨƌ�(�kb$B�P���)>��Vw�슙WP�s�-�=�y +�j�I����<�^1=�V�[t�m�ϴJ�$���$��\�=^�L;Jɢ�,Jɢ�,Jɢ�,Jɢ�L�r��E)Y��E)Y��E)Y��E{��sѓHG+T;��i���:J��������| %�bg����k��1ɘ�'����*�'�C�g���C�������\�Vӫ�c�Cxf=�Y�g���xf=�Y�g���xf=�Y�g������"4��#μSOo]Oo]Oo]O����~���z<��v<���@!뱼���:�����z�7��,A*p���Լ��m�}��=t�I�U�����Լ���S�rj^N�˩y95/����\F�M�@>Є4�M�@>Є4�M����Y<�g���+Q>Z%�g��Z�\�&=�f��}�iy���Դ?h�Y�E�
���Xd�;���TT�Yw]����@�7P�
�x5�@�7P�
�x5�@�7�5��l��V�5��j�!_�^5ؠj� +�%��p_"#��_��Qψ�DJ\K�劵\��+�r�Z�X�k�b-W��J�\�V�4�^+�3��tV�CG|D�s���W���c��Nt�݃�E��xm�iq?-������������~�ݏ���w�)���P��&|������� +l��݂��Xh"HEQ�K���[DM�=JLT����w
[CO�{�='������~��Z��^����{�Y�W&�Jc^ʧ��lK#�Wⵤ3rh����B(�i. �� ߾��-�K�߷Ē��GNq������+�|x"�ȇ'��|x"�ȇ'��|x"}S���F�T�o��7��j�M5���7�S>�a>ϟ����|�[5����>��>�U>���w�*Wq��WT�5F�. +�¿��Z-�wM~uuWG%�A]����wR$m����Q�VHQ�¶�J����^�J��J�>����|���O9|
��G�k��ƨM +RCZ��~����:(�u���ي��ي�������cڇa���-fb���W��)֭�d*���*��,T0M91��8*V��5Y�?�'��S\�S\��z��)g�_��S~F�/s��־Ƹ߂q����,��m<" +p(��c�+C�W�k�{�}ըkP@][[L�5�`��i�ڬ� +mW��Z���ض��C�-^��P7��h��]��@��1�cQ�4 ��z�Љ��������Z[NSkO�i��p�t�Mg��sp|.��ñ��3Q/@�����Ҋ�Aۃ����5=LT�Q�>���������4^��y�\±+�5�:��Q�Ĺ^o�j|���JAFT��;�Fm1��\U,����v��*k�}m��l�q���_�I�#E�E�)�̪Ĭ����z,$ +I��P�YP�)U�<��j����������������M���J�|9z��Y�ެDo�#�T~�:m�-��s���{3�W����y�P�[�f(Ph�rދ���q�}n
��g�g�{�T� +�� +��z�s����F��XL���fxm�z(<=�v�U��$�V`�
px +��
�79�2��#W�)!wI ��2�<&�d$yCޒP*P����2N��2M5���ZT�DR=�G�P}j@��15&1Ԕ��XjN�ImK��X�HI"u�.dB��$H�x:�'�H:�$�`L&�hG&��@���t<I��4�L���$�F'��d:�J���Bf��t�C��Ed.]Cא�4��'K�F��d��t3YA�i>YI��d�C��l���#k�z���S��H�h�D��d3�L/�|z�^'[��'��ޢ�ZJK�A����C��>%�i�"G�+���o�r�����p�@NLP"� +j�:)4MR$h��;AW�%�fB3rAh!� ��\Z ��e�R�$W{��|/t�uq�8���sɏ�U�*�I�&^#7�ş�-������%w�ȔH)Se6��ٲT�ub�9�d��
�b�Ԃ���4��fs�H6�-��,���1l#�H'�|�OS�6��Nf��:�b�i:;���9��ҥ��H����*�b�X1]�n�4�=`�V��h�bU4���1�Gꁙ�y��� �� +ʄ`\t Fl5+gTz�X�����_�@g>X�m�,Wc�e�+�|��o����?��=�u̠���h�GB'C�����������.�W?���4�cҞ<A�@^�t�z���t&5(]�6�ʵ�U�J�U���;U��'�I�hCڐ8�F�q�:T���&� q�MiS��L�ڂ� �� +]8�N�.���X�N�I<4�l� +���)���F�jq��wV�mns��;��msn��ζ��Z�h
�v�0�(C���N2�2�M6 �ޏ<�r�\#��CR����A��RC�Z��gu5bF]�@QO�)�|ݶR�Q�7(��úZYP�rE�UݸR�����N�y*^����.��UG*ꔺ�����]Wk*�xE�����՚���G��k�)�oa,h� +%6,��1v�}�N�v��b��7�[v��E��%�fkX�ek�:��m@mf[��nE�`;�.���a{�>)�e��~��#ș��Ƨ<��ĘMFf��-e��rd�+�J� +YC +�¦�T6�Mg3�L��fI�3�@�<��g�l!��-b�����.��wS!��}5��6F�ƀ mM-�5��hgڍ�B�x��<q8����4���$:�N�i��4�.���J�M����n���~�=F�7������5z�ޢw�CZF+h}%�H��$� ����+� ����Z��;x���M�%� �/�G��Å`a�)��B�0Q�"� �B��),� +�l!O� l�����W�1�@�F(���k�
�pWx(� B��Jx'|���j�@-��c���a3@;&0'��?~L�5&x���#L�Z@#@�� +�� +t0w�7��F��'0H�D@Z����1`�- +�@o���À L +����_$���#�_�?w�x��e?�����~b��V��{���Ϭ�=e�X%�b����_i;��[R7oPd|)���ǿ +��|��1qA�uk5����{��R���fo�G �0��F�A3�G�8��t"""/&�<JX@���2vYZ�f��v�}Ϯ�묘��w솤S�mZ��=��*h�����e�_�W��ʂ�`NT{���B��ŵndq�G��@�-D��[������xF<+���"�;�xA�X$S2M|/V�5������oϘ�)1e��T�Sg
��d
�kĴ�k̚��)k��>3em�5k���c�X֕�c^̇y�l�"�h�Z��,�%��l8Kfv,�
f�l3f&̜��5�e�̕�1֛�a�lʆ��CX�&���;�cf��å9��=sdY/փuf=�3sa�/�3?֟��,�Ų(�X6�0#��X�g�YC��Vk\�0x$�L��rH.��(��!��{����#��҉<@�LJQ��2���ʼn�F����~5J��"J�TD|�C|��g�B��7� +6W.#/��G������WD*�9N���+�ӻ���BO�_���K<�L��0��a�o9[J���y��ع�e�y�r^8/����e�e%��ʜ�U8/�r^V㌌L� �R%\��͛K"/C�x���^�/�3=�qؾ�U�_������_�'u�+����D�_��磤j���ZI|N��3vu(�U��*��j����ȃ���*AҦu(������G?�0U��4W\X0I ��$�t�"�ܸ��X�S
�=�ۤt��W�K\O����J��r�i��Q�w�Լh1��Qr�OIe��d~u�@��#��Ց7�6Tt�%��� O���ՒkJ;�u�}�B�ccBm
���5�&�"B�cbG%9�����%F��rc鸨�W�xh��oDx�j���Sn�T���Vn+����ٵ�M{���M�����kӐ�K��uX���>�����<����������Մ4JI��c���KW*U뱯�Q���v��M��u�+w�Fg��aٶw�l]�_?a6�����S��}� +�dԔZR�l�0��8ve���j6k]=�9�6|��;R���l_4}Xō�c;x~=DmЫ�;������ͦ��w�M�^��>�.���aI�������\,�)�D����i��s_�|��h��֗[��Ʈ:� n����uX�/��E�aCZm���Mi�<��k���_c���}n�K*B���&�d��ٞ��v���T�iYY����W�z�� +���AƔN:Z>G��kM�T���9{�Y_V��oW=��l��G^ksO����zA���w�byo7D-���'7ߝ��q�6ߚ��O��b����cf=,��ݔk���/����s���>{]�� ��G52��i��+J�z罝���{cմ53~8�]i�2�h��~>p����)+�5;'��_��v��s��}��_��Mϛ��}+;Y`�����ᑍ�ޟ��bo���=D>-��|�-�O��y��
Y�/�iZ��ts{���7!����u����KR��Z�q2Pt�p���m�<�<��e�8vht����&-8h}U;o^t��A�9/#�7'��;������wh�����^,�B+�[�&;3���3�&7��/��h~���'.�R��)>����$�����VXk�V�w��ח�c�����:��� +endstream +endobj +499 0 obj +[0[1000] 3[352] 5[459 818] 9[727 269 454 454] 14[818 364 454 364 454 636 636 636 636 636 636 636 636 636 636 454 454 818 818 818] 36[684 686 698 771 632 575 775 751 421 455 693 557 843 748 787 603 787 695 684 616 732 684 989 685 615 685] 66[636] 68[601 623 521 623 596 352 623 633 272 344 592 272 973 633 607 623 623 427 521 394 633 592 818 592 592 525] 177[636 1000 459 459] 182[269]] +endobj +218 0 obj +[352 0 459 818 0 0 727 269 454 454 0 818 364 454 364 454 636 636 636 636 636 636 636 636 636 636 454 454 818 818 818 0 0 684 686 698 771 632 575 775 751 421 455 693 557 843 748 787 603 787 695 684 616 732 684 989 685 615 685 0 0 0 0 636 0 601 623 521 623 596 352 623 633 272 344 592 272 973 633 607 623 623 427 521 394 633 592 818 592 592 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000] +endobj +525 0 obj +<</Filter/FlateDecode/Length 331>>stream +x�}��j�0�����^,&��./�Cm@�q�1D�·o�l��-TP��9sN�DU}���i��F��L{m��i<9 ���6��Ti9�)|��Zyq�L3��GR4z��iv�ܫ��;=;N�#ݼW���d�'`f�HYR���ڧv +&�Jp�9)�JZ<��$`�M=GU�ˏօ��w3�2P���E��#eH �)��RH�.�!�ً;_� + ���s7��mP�Ѳ���)�$x���=E�<�r�o�Rt��'칧�������p/����X��^�˒��9��p��bוj�kgG�����?�� +endstream +endobj +222 0 obj +<</Filter/FlateDecode/Length 43255/Length1 77560>>stream +x�� |TE�迪���N��$t�ӝ�B� �}�4 !$!$� +>���U�) +s��.E���U��C�,�do�xގ��pHv>;����>��|>{�F��]�$! +��?j�ڌ��4n+�a���J�a�.��a�h��=�͒�{�Ka��ϭ����1���/B�(���|E���\���!�=������ +lE���U��6��~P���G�5���{����w����c_!�(�OП�w��'�������qh3C������������~r?��ý��菣?�_?c������_���v���������]��}ng���@�� +!��@w7,d߀dnދ�J��BX���\�H�!��������z���Nh���*3g�����=��1�7��|#��=��˰��C6����n~>��q'�^���.�ޫC�w�{��`�� +�1`��@!ޛ���~r�3������%x�G��<�߆�}���g���i���r?�/�9Dt +P"�U�B@ +�@2F G�i�a�o!����H����w��H�
l�(�FFC2�
�B,r$�D�A2�H;�2$@2��`�I�$H�^�d�)��L�Td�!�!��5dH̄Ldd!�!��ދ�y�<�-q�A�C��8a,r��(@B!r���
�`<r<#�%N� �(��J�Y��Y.qL� +�@V�d�d����� +�� +Y
�ȩ09
�#�C��KܝD�B-��3`&r&�{�B��Y0� +�ȥ��L�rX�\+��@'t"W�*�*��a5���C7t#o�ۑ���;$��5ޏ�N�y܅\��$������=�
���F�
?C����A�~�����ar���"�������`+r+l�m����;a'�Ax��gxH��.�.����G�����[���1������ x���=��)���_z߇_��ȧ��3�F�%�B��O�}�~x�,<�|�"�"߃}�9 +�*�a��^2~�"t|QN/�:1����it��绝\��Ú���������>|m8f�ň�/tˤv-���F7l��&�l�B���bki���k�>�]�Z-ʱH��V����%�1�R�j鱉�(ju!m����lSa�Z�٭ǰȭ����D��LOQ�<����Ykq�\�ݧV����!��"V���/���8|c���5_ls~��Ϣ���
���n�� -jʼni�g�zz�ZlE-�-����j)��i�(�q��,|�JO\�j�>a�M�);fkg�M���?3��Z��`nK��
SjlX4K��,�iΒ��ZK���o��h����5���v��9��>Z�5����6��WO〷��f��zz��zڋ\�je
�5�=�����֭u�������䛭���d�pP�P�T�pP +�W�P�P]c�����ԚQN5b��PT$T�,�c��D�κ&�B�j�sÀ�0��\�K[���N���%>~4U|�=����.��dʂ��k��PԚ�&����پ�nCa
c���53bLiǕ���c|��'�
�[kws5��Z�V�@��*[��KQ�5-���G*������ǿ�D�����e�������u�K�
&+k����rz(#eը�hg +zmd��^'YWUW�_��ƺ�>Jh����7 +��� +c�hH!Q���۬CX�0�����k��Z҈��@��2
��|��Ӎ������*,cǜ���}�tbZ�� +�r�o�Y��0���[�,���d�.�� o������������p�?l��-}^��i�7�D��� +;6���n
�*<�5^�k�pƝ[�V,���ws��e�]ش�*�f"64s�J��9(td�د�O5���#�o����˖���L��D{�r�Z����:�柭8�$�����)���G~����n���GQ�i���_�
y��ț]�������w�A�/����ռ@�/��gtB�3D��� �a}�г�!��J֭ ֢�kM�p��pǚa
VӶg����{X��D;�2�9���5��"��U*tc�[\��������h5V�/�x�/��U0�ㅄDM�=pd�&&60*Zi�X5B ��x�W�@�� +���p`�ކ�����9W.hr��- K.T���Ђ�
�}eU�T{��)�{�[Q9������b�����v����U�)�nF� +��<�����x�`M������y��ZX{��;��C WV{Gy�8�6�s��U��Spe�l�<pI3�@�.J�V,�K}
_�˟��� ���ed=�W���x��E��x��~�c���d�Yu��������B��5����(����a(�����7�*��r +R��h�#p�8�ce�G��Evx�{��W�g��u�h(<μ��F�����a���5��igб��L+k�u�X�C�TPl�\*z�Ou賳�6l҇
��K^/z�8�O�E/~À-P"����*F�ta�]��]�&_5�\{�<�ia��� �s&T�2Z�W�H�����6�D�h�%�1�5�!_3�>g�^{� +���5���Lk��xd��L�L�g�����d��-�ye%c�����"�3~�?^��Rχ���|������H��l��8�`��q�J���.�ep�i;�nh7�5�',�����K7�GKe���}z����M����������[sǔ���o�L��y��=Q���$��v�ȥ+������ n�<3��A��9��m���upN6�s��>3o��W(O,��>,��gW�8�xH���H�8�kVQi==h(c��d_�f1éa���k�q6���9�L���hv;�㼮�F��
!V¾|�S�1���yBV��m����W�"mP�L.�E���RS�Pvv���9�R=�ˬ;��"��!Ro :b=��:�.֟ÿ�zb�2��E�����4}fFFj�)ؤ�1�H^�5��dp�qJ?���ْ҂q��gw?�YiI�g������/_@���������Dl_"�MM�[�<����?���\��s���=˽Hw +ܓ]<�� +UG�y�舝.�II �E�L��mS����T
���'9�� +�T���jF-MQ�w�.��8F�3�%U��%!�w��D���ImJKU +ڠ����AR_Ol����(�"����MC���=:t�SA�{%3��u�~:b�ԁݨ��_;�;'��闛��Du*�+�
HՍeJ�cu��5��y��rmDĈ1��cx�W*���
�S����-�҈$OYJ����8��s�k3,����Ԣ}�/S+�%$�o^L\����_m�<)~ƛ��[�6Gt��1u��I`mCㅆ����g�!�t�\<��dF��� �1��0�,�$h� ��(��|N����qO����~4�w�%)R�IYNE�rlVeXuD�mjTKDS�beG`�v�yQ��L}8��i1�F��zY�N>4<�d +�[/�o$����7�L�}6�nj#!�O�F�)�����h�wa䃌b�hX'TO���=w}P1�U7��d�S���mS�h*�y�}ΪO�Ք��I���&&X+ɕů�N*)�F�/��$-i_i�<R[>1*{dB�o<#�+K����([����;��Q;x(w&�ɂl�-I�����0PFgPO�im�m���\x Ľٷ�QI�QP_�R�%U=�vPܬpz9��,O5=8İ��O^��>K�ql�~ȕs F�mtNe�q�!��dž�'W�e���\�0+�:�:��Y5[7;��|S�������)!<u�'%8�қ%t���F$��e�g�
�1��Z5g�L���:և&�� f�V��#(�B:�IӉZ���Ƙ]�U���rՋ��dN�M)KaRr�Y�en86.���g^2�F�*NxLzZFf�DY}�-��t�?��i�c�ߢ��=�x�{�l�Ē;�}�@d�H��y��yIcT�S81��h�HaB�u��^t�2�4!*��:ru\^�C3�5��ۻ��/Ǟ��X�� +9�N��e�r�6Sƴ��J�4 �ض��N�1x��JZ���:|%���0;2/*/�4�$�$�N[�ojQg��sSN]έҬ�2Go�d�N��[dhv���"<WI~��pI��kC<C�axm�т��u{��_,(4���}ad�ep���#�Ki��tF�D���ڪ��W5�r���I3fznsąO��-� +��Ѷ�����������K��e$:����!%=Ξ{x�W$�����-af��u���0�)8@'��Rt:�x��}�SCޥ�.'�� +�yJ�O{��c�����3���{d��������L�����)<U(�rJn���ao�8>�ϒ���d3�j�B�I���E�9e�������2�[��$�#�ay�\�TpJ�8 +�?;�Jm&gE�&�@�@8q���A��W�H�5[Q��*Xű���~�vhppP�|?��(WP���Z� +��YE���C�����1�}�>��9������>�dx��p�A�P��-3���y�%�=�]��&7��muE<A#"d�[�L��i�>A��E����.�si�KC)x
��$c����?:��,����r��pc��>���#C�҂g�2�jQ��<�hG��[��ftG�Yfe$>4�:쑍�y��{� +���!q�M�%�K^�.�k�oy]p�Л��5��MCC����\\K7��2��v�~�k�|�n���s�" �1! �11l�ܡp��l������
���Y��8��6C��5Fl +`-�I����D611f��^�ސ�XV���PH��K)��[/�G+���C�ww!�o#��Յ�0U'�Sx��1ϧ�g�͟�H�=�p.�K����]2y�ܒ������_��\m�5'��;����D�%����t���@H�Œ���}�32�Q�!��� � ��~4jI ��������t��V�\͛6˙��2�*%���� 8�J� F���[`��b�9���'���
��|�mZ��7t���%�����7u�v�ll\�=z^��
Ͼ��4���Y��om9�tuf�5�w�lb/��K;G(6%�N�ŷ�ݼ�GG�M�Qn"rq��h�2�@�+��s��9�K�)�ۊ��^�r�M*�wu�}�q�I��χ[>�-+��i�6%Q'uQ� +�I���6u +5�CTU��R��[7d{�W�p��z�g��h�Н��Y;����srh
�"��)�4�mܿ4>}U
xO:�PUm�]f��kL�as�y�[�U��[����6�����K�ͦ`�|u��Kͪ��� +6|cp�*��
x�ں �CF��� >�g�}��K��Sd�C'�X�zQ�ń]���"G�$[@�q�������)�;��ٻ۳�3���5[����)9;��y� ���L�&��������A� +�{��!�W-��jq���|�>q�t�� U�"[���W�D*�+nU)Yj��Lu1�C%�Ǣ�ʔ:U�"r�E�y�s�*"�eŞE�RUԉҥ*%3ܿ +E�բ*����Z�%-I����2VaY���?V[�Wܕ�FK+i�9������Z�*�<�P����Q54�3����J+ +�QQ��"�l�ڑ��;ς��u�ol�]���h�-% ���l +�'[W��d�C=#�E_�������X<�@Ov�$�v�����M$#wlG"�P��k��Qd9u�f��8��ErY+BM�% ���� +���C�`�Q�ҨP��x��[�r��iPE\��)�����@"�Z�M�bB)J^"� �o��VDL�:V} +���(5-Z�047�vDI�ܹQ�)~���t�w@|O�I���!4�g!�hB:\��Ÿ҂[`>jUD�V9-g����l�i�hN;�.�^~M> +wH2�'�w}�.f),��'�Z%a$��.,��-"E�^8���X��C�B���(�ؘ`Da�'lʠ<�Q�fs w���"1�Q��☔�瘕X�X��65�l�]�`�{&Q��d��ƾǶ�Pk�7���3+z-Dž��c�}'��x�����e8�.�����X:���zʚ��W=����gj��i�V����l��
\���oc�oB|��6�zEa��#�~ ���Qo���i?����V~j+[Ò%
Ra�LM�f,/p����zR_�'�<��c���u�����t��t�C�֭��.����ֵ�-�p��.,�"��!pA�ә���h��@�W���_O�u�n��#�����E��v�����.�t�Xp3����a��`�B<��dT�VE
��xNM�O����>�g�r~��O�[x�qe���,��u�W<w3%���xY��!��Ah]��P�ɤ&Hf��Z�X�:��
���]x6�Ϳ�]p�i��$�� ^ڎ +D�DR���2(J"��P��^ {Ȟ�O�S��t�jj̰e���i�o���y��� +�T��k�0��V���V�8���%| +��+�����/��;����2G�ݴF;�s�.�}�~��/���'�����e��uT�8̾Q��Sз̼��,SZّ�9��@�avT'�[�T�$��TeEKW� R��JZ$�J��.㗋��U +��EP�e���d���D^k�P0��"����W\!�C��u`��]��~)M�"��3��ؙgQ80�Eb�M��20�b3@Ӣ[�L�
^K��5v�1���
�q��Ӈ�/�h�L���� +d�iX��j��k�h���4?Ppfˁ\��u9W��j+ߚ-���5vP��X�� >�Mj�5t��(��&6@YBf�4�s�0Wf���5�Ӫ�Ϟ��EGO�?i^��_V8���I-���EՂ���A
�a����t�a����M�,�֡B�1-�5r��@��q��Q��!����м�Ma{A�7RF��Y�{�
���R
k�o�U���Q����X�v��PL���h,DZ��8��1b����o���Ɯ�0k���&u�V��*a`6�ϻ�9��9�L�r��NLy�'���n����C���xS��s����=;O�T^�v���9��|��!��أ.J���t��P
L����/�h���eME'��n�p�6��p�6�\^`�t *��Ws������T�0#���C��Ct�K}G��s3a���^;��! +����͛���e����z�c�'$"���y�P�?��g�䃜�S��AAtCzB�$,)2�2���G[�GiS���I�9�<y�{�o)Y)/�/u�����5{�SC�&M�fHK$^��V�,{����\�m��!b�5�@�{<Ez ��Ǒoj���U�����,Zul����O�qH�n�>:�e� �v{CR�����l��u����I��_�@��r!���1��wx�"�w;T�ł�_���0Jk�:Ͷ�Fl5g�2���`H��X���Z����HA17�u����s�W�F�q�}�pܺr�*:G-��u�I����,9Eo侄�P +n�w���6o^��r���b`UЍ������̡�����M���((��6�����c3�@�N^�PQ�qy8Z<�l�=.͎l��*͚�E4�����0�,Au+�8.TX��4���N}���]W6�?����O��w���5bE;N@N:R?��GX��S83�je����:Ps;Q�a
<N�.� +�J!�H#e,�:|U�FR�hU����u,���� +�$? +�ۑfȾȢ$IX��4JiRY���"Ȼ�~|�2���1r#��N���.��Ō���X����z�*�`��l�.�/�*��D���1ϥ� +�N��Ό��q+��J��� +c���q+�|��0�֯>��>�G�G�8�w��x��kRF��}xd�_X��\�ˉ��v�2q���Y�K�H~2m�)����� +I�����F��u|#��υ���>���JƲ��;���*��iFM��?e4b@Fl
����n��?�2[�Z
R����y
iT� lQ����X��i)W*����xߌ����qGTa,�Ba���8 +Y%�"�N�[ر�F.̞�O��߿���@��븱�0R��H�hܼt}��+������]܋0f�/r!��)����(G� ����M�#0�G�ee���;���j8n SA.��h�@���y��1*r��|2}LYO�g�?���f���C_����G��&��$���5f�|~']�q;#��:�Ⱥl��L�� }jJ���w��W��,���U�6��b!�5+��.�=�-!��|����I�Q�XkB��Г�2�&�+�u����y�n� +�8g����!����Z�kX9~-�y���ϳ�K>RI������A� +=�?�yb��� �3 Uy2�2؍��9F +��6$���X@C��l�ɧ��O��}�4�B�����a���v"�z�������'N�����'���弳3J��dٽ��y�s(�*tg�����O�t��(��L4*S�����M�Z�h\ũ����i�t�)�S���e�U�� [�����r����O��ՌT�1��ieg�vG��������|� ������I�ᇱ��G����m!��������69����GO�v�~dh�>���Ȫ�B>O�� %������Z���n��P��<t���]�g�ɽT�ʭ̶8��azK�4 y8�Т~�˘�_&y���AѴ,Z,>��N��qt��ڏ�p�I���@
-v���"�Bf}�»^�2�aH��1�H��o�Gz����]k�>�����i�������Ya4<�������*`��B(Ěq �N�s��p�?;"�t�r�0��X��O�IČQ
;�H96%��ͣ��l�G���[���������������@��Ws~W��-���vvv�/��zBݝ �K$F����(���=� �f#EJ�Q22��t>�1z���Ř|0�R�U�H�闇��<�;U��pmcGl�[�ٯ�C�'�W����=��@��<T��-;���.�,�uǏŽ��%��_B��B�o e/��~|���@]]؇}��"�ʸ.�E8.�5t +�3= +�,�pb_�a(Ç�%^��3)�����d�&6��� ����V
J�'�?�g��/��D]���8�g��o�
3?{W�C��d�u�{�?��QCڃ�y9y>
�XU%5����{C,W�<�v�� �bk!x*ǐ��P��Δc#�ؐEC������UjG*�S\@X��������_.8�ΖMf�b&�����O��G��H]�s?է���G����~y�M��5/<�v0�ES!T���sƤ}YN�XT�q�MB +d��Z҉"�t�����oa��$��~ +��ʍ8F�7�G�䝫^5��nh����^�Oa���Go<�l� +��&�sFȨu�<�\I8�8�,P�w��T��%�$KyD�Z��s��FG�2ڦ���{��c��Hp^۶{�q��3�8r��:�;�9?��� +�i�w�����h&��W��r�?��`W1L����~@rF���!{��Y�Ń8zYG<q\{B鱌00��/!$��p�)kouv���V�s^�q���]��;�_9Tz���.�7���;{���-*w��.p��j�۰�
��}���d�dw��u���������y'�s��ze�E�pc�7��+"M�6����qڪ��i��t-3-���!C�c�ر�Fƨ������D|������#SC� +�uǧ��ǥ��ܠ��f���M�O���'r�M$v�b�ӊ����^ay�ҒU� +���Uޢ�,���֦#�m��:_v<�q��\���ye�?ʷTlZy���eΥ�A0��!}5�W!_��9L���2�ȑ��!/� c�������_�f��E�5���!���M,�O�p��lm��v�e
�k띭"g��X+�����{�
;���ލ�l��c̗���37�2�>���=���Mf�C02���!9��(��x���o���$_�<���X��,�O +��ZNKc�Xi�d��Fgz2�S����Y7ǹI�Z��qnpꄸ��{q�|�5�C��Tz��x��4��|ك���#R�
���;SE*g� ��5����w����0_�є� +\�9?}�/v���$1Pܢ�+U�]AP:��W�`E�$��|b��~"�-�hJdt�6��Hw�zZk_�I�=K<�$����e{��t��c�|�~�.��az�nxt���W�B%��@~ ��K�%L�\I�Ω�s�r�������g�s���>p՚W�O�2Gh��������(��h)Ir�@�7GD'`*��Vq�p��ut�r:?�b�*Vwow�^�0�N�yV�fD�w��鼴��b�(֢��܇��Z2�4ɓ-oO�)�B�F�>qU0>^�kWё��~B8��-d��I��iSO%P�BLg����|��ߓCP�3����D�];���\5ha�6�|>�������#F�,KhL�ҞCIb�Ss�e���@G�� +�>>2�����-U�P����˱��*ٵ����z�s����r +k��K�=��,��+���{����#��Vs����V����c�j2��k<�&1(٬����X�?����ޡ�ޟ�3�<%�Ps��ѻT��ۑ�4}�4��w�[�4�W�����3���K�[x�3�W9:�?�Y7-��_������WM��9eШ�;W?��M%���!5n9��l�����o�ҕ��I�F@kaR�/Ṡ�
$��:c��G�eb���1�٩��觵�ā>79ZF�EZð�f�vW�Q�VGS�� ��v�r�տ�9����W?��5���n�Wц+'����#O��Pxs�i2�2e�*3���rH,��<IFMR�+Օ�2\�ql�<PFF١�XYFF���V2�;����9�Aĉ������W��Y����s�\����]�M�&�:�?�?�o����+�1#��l!���pgx
w�|���)�s�����TJ]�D�W��y@��K���l�a��o�8c�����c)O�My��^�J���fJ@V��1a�<
����\{��v�E�~�q�o�TO��]��S�7��w +{^���_�c�k�9�O�>b�nտө�q�u�%��\���}�C�2h�%��E�(rG'#ɯ������;#�b�z_���e�甁�p�âF:G$���g7������;��w�S�K\��G��j�w������^��46��O�v�w�Cs�Ej�b}�Q'���g��������;>���:^��'���]�0۳��=���z����ό6n4cdG�'>Šݭ �c7z9��{�д�gVsl�!u�I�c+#ԱOձ�D���Ǎ�£E�q�ާ.�2��|����K��M�υ|����}�b��9�����=��}�ar���]ƋB>� ���aN䈱�xLȧzj?����[Α��[����)������~�1˸�D.y���{����7=�=�N��y�M�U�����o��&nI�+��oN�p[���
�O
H�I�-'.�q�'�;�`��K)Mٝ��������A��=��M�$�G���8�eHʐ{�N������]ҫ�_�V��n6��㖛b�����?��oq���,�#��#��1��?�����2��ؕ�`Ɠ/g�.�=�HF$��x(sZ�Yc�Vgݛ��E�~0�={FvUv���'Y�����,�k��O�{��|�s�I�;r�=e��cw�}=7+wE�m���!y���$��q���<����������9aτ��g�o���?h���Y�o������W�k���+������U��`p���s +J +V�\Sp�����y�e���=I��
n�y؊�u�Ԯ��
-M[+���7��.����ny_7V�h3z��j��=���O9A,d�-'j���W�M�v��X��F���b�__+�Z�~�*����W�ʦ��_��9uԷ�ʦ6D_��������ʦ6\�^��'k��Ъ�\�p���c�+�8cs�L���X�E�g���G��[�W����}�p�O�r�~��Y���-sO��R�#�2zp�E��Ä��X�Բ�ݪ,�N��ɏ��'��D�'y�M-����I���X�zb�H}z���ѧ�L��sΉ�ce��٨ʃ؟�y V6�lOT�i���bey���<T�(V��G�0L��+c_�7�<B�wk�,��c�:t����A��-��+c_oT�����cey�Y��ѳ����}������>���9?����c�80�`������5�������ԕ�W�TO�Z�6PW�ju��@]��ʺ
�ί��(�.T�����**וխ �\�_]٧�Uu5
�rwyͺڲ���z��S�욵���Z`ʄ���r���zj��SVW_YwQMC`]٦@��J���j��e���u���+++7�.�����8Z�6j�j*��UՁ����W���uUu�چ +.�� TT��]Ke�\U� �UY]?!��vM��M������u+�EǪ��9��=R�WTU��Z���*����:���5Cu ��V�+�IS�U�jE���5e}��eўV�����l��m�TTn�*��笮\[{�@���kO��߸q�u=&�����7�֬�+�]�)_6�>_;_��� +�L�m1۫�S�ճ}��z�A$P��ߑ�خ��,UO���
�����x�Ͻ�� +un
��x-G�H�+bmU�j(��U�>�7�(�<�V�r�j,ki啽-��W��j��::V{��iU�/֫~�����e��_3�h@J��^��� +YT� +�lT��(�>��Q=���Jeך�gT�h���Z�P�ݠ���G��V���Yh��\-,�g٨� J�dzdB�M��7) W)k�a{{�X����Uu������)m�yFC�3�V-�W��W���i ��sj��#'?_]y��y|���NztIL��'�!���d�zef�E�s�9՜f�g����jX�/���;1���G��"oM,T���,mB��p�v�?;,8ë��$��h��i�k����-W�|O�9��٫��iF����Zꪺ�5Z�ڲ�j���ڊ�/�5W�-�S��).���K�]�߯�#:��hI�#Z2��k��jE�s����>�����T�Uk��ϕ�s���V����B}�1O���姉|�t-K���wy��%���y�G�%kbQ��Q��(b��8h^gte{��'��>ۿ���ߓ00aH��I)�Ӳ�����@lc4��$��~�_Az�O�TJ����5�3����a�#gK����|4}e��̃�(�����Ⱥ��� ��iqL���t�;a�<7���:(ێ�+=>�]����y�<V��I�O�H�-�����Y��Kz���At�l��T�Fz<u��3�� C�Ӳ�$�O��9.e�ʟ>fyֻ ��Y���m�4=|7g��5g��5z���G?����,g�<KJ��1v�Xk��j�Q�A�w��0J�ro�ݝ�`O��t��?d|��O&|�_�??���'Y�u���S6Li?5���͞�3���r[�/\�6.�g�&Yː _GZ8���]�挷'^.[o;���r�?�匧��˅��[�͎.�?�.3��EJZ�[�wƴI����t&RN�|��9�gm�/���<�_0ɚ�����-��䕳JIf�νev��j\.�_(���p�¹�}P�u�E�9�!*��{��[O��h��/��yrY�����E%��]������l|i6�40CA:��`$���������/�T31��Lb+9b�)��ٮ +-�~����9�=)�SU?m�i�O�~��Ӧ�6���M?m�i��;����Ck6�ٴfӚm^I=��UJyls��ɦ'��ۼM��FF���i�?���� �����;��2�9t����� �7#3�7#3=��E�,zd��hѢ5Kɟb�!�E�]��E���E-]��E-]��A-��A-��a�d��?QS5u�OFB�3�״}�F�{���CF7p@��k@ +�d0L��tp�Ng�"0�Y`6���sY� �g�y`>X +P.C/��jP.k�Z�T�P˹W�:�Գ�l +9w2���9Ա���` 8���`� +lF�-�� +�Q���v�_�zm\��z����Fe�v�a�x&��"���a��N��E���Ľ0q/L���Ľ0q/L���Ľ0qOzr;�E���Ľ0q/L���p���&���}ab_o�`�f��~�l���Np|��O���|����s��|������$���V�kA|�_�kA|-����kAr~+��߂�[�oA���o5�[����k�¿V�p�C|�\���W��+���� +|p>�\���k��|���k�� >���`�A|0��� >���$P�5��0Lc�t�p�Ng�"0�Y`6�ùs���,p6��`!XS�` 8���`� +\ր�`�5�\��zP�N��\ɾM�*�n���`�Yog�5�wЯk)_G�z����F`��&��L�{��?$"/#��KTn5���X����!\X�p!�X�>��>4��{9v���#/Í ��q��Ml?@�A�3��>���(�x�}�Ի7r6y�]�$�g�p&H���M�|���[h�֯�W��u�o�ߑ)������_�CA8� +�V�2�����~�q��7��!<<���\�:��!<�u<��{87������Yܪ���N5��yv��Np���\9���~�cߏ���'`x +����╍5m�icMk�ǚ���~��+I�HK�'O���Oc��h>�����Pl��:��Y��Q3����p�.[H\�-�l�e��e.[py\���-�l���l���l��h�BKMh� .7��&��.��"�\���r\.��Ep�.��"�Z�VK�j Z-A�%pق�\���-�l�e.[pق�\�ಅ�`�-XaV��-�l�e.[pق�\���-�l�e.��\���-�l�e.[pق��-��%X�˖`�,[�eK�l \���-�l��py\��w��X���ַ����-�oa}�[X����o��MX� �7a�&�߄���~\��w��p�.[pق�Epق�;ಜq��e.[p�.[p�b�ׄ���g>[����&<i.�nR��;"W�o9Sm��E�ۂ���3�����Up��[p܂����-8n�q�[p܂��3�8��-8n�q�[p܂��̗�t��~�l�6�t���cp|>]�3���/���+�u��y�Iɻ/̃D�ք�m���OF���}���3�u�� +P �n��;8��x��H�6N�#7"�~ts�>���eӹ�40�� +�{��cN�ϜNgt�{�]_�ь�`��^2��`���u��R y)
8�x�|T�Ct�����x���y���VO���y�����~��s=��c�����=��{1�K���g/} +�������$�����8�Ł-��Ł-lq`�[������������-Y��!wn&wfŮa���$D��saN"�I�9�0'�$D�� +sRaN*�I�9�0ǁ9�q`�s����80ǁ9�q`N*�I�9�0'�80ǁ9�q`�s����80ǁ9�q`�s����80ǁ9�q`�sRaN*�I�9�0'�T�� +s����80g�s���q0g�ɂ9Y0'�80ǁ9�q`�s����80�!�f�C�ȡY��,rh>94��O͇Y�r`��a��������,f��,f90+f90ˁYi0+f90ˁYi0+�<�����u|�>���h>K�as`��Rɣ��,�%�2�9��Q��賊,s`Y:,s`��X��2 �X�����́e,K�eY�l9,�b�E����X��2�9�́e,˂e,k�X��e���6���;���g{`\{���w1�/����^�08 +����aPj��K���8"!..����H +꓂���>)�O +��>.��>.��>.��>.��>.��6.j@m�M +J��Ҥ�4)(M +J��Ҹ(��Ҹ(�KD@/��x� +�@ܘ:����:<�:��.��[��"� +P�Q1upQup���PupQ� +upQupQ���E\�!upQuH!J��ԡq����?B\��%r�:����:lA\�a��.]�����>�Ex5�lA
\�` j�.j�.j�.j�.j�.j�.j�.j�.j�攜�=G��X�ޗ���� +^0WSJ8� +ќ�ne�[��V����ne�[��V����ne�[��V����ne�[���f�[ESؓ{*��|�)�h����x�K�c� +�\a�)�z�_C���o��[;��N���t�4�`-1V�0ڇ�>��a��}���f6�0ه�>��a��|���<��0χy>��a��|���(F�0ʇQ>��a��|��(��0Ƈ1>��a�|��>Q��>��>���>��>���>>H#Z}����&Z=��'Z}���7iD�O��D�O��X���$:}l����NV�>���D��}���ruD�Ot�Ǫ�#k��|"�'2�<�'2}"�'2}"�'2}"�'2}"�'2}"�'2}"�'2}"�'2}"�7�������U�J�W�Q�qğ�6DYkU��-����h
�A���MU�� +�XA�UyD^[�0����hb�E�����[
{+%�Ɇa����ְ��Z�^k�k
{�a�5쵆�ְ�5!bϥ칔=���d�01LF����c9�X�>�sd5Y
GVÑ��k�hX9GW�f��5a)� +�<�ČZϫo G�3�J�'�����멄�9�C�!���:OtQ����#� +�ư��`H���9�����>�f��`����s�<0, +�M��i`:����(�Rŧ�&���2�T��8�~�X+e��c��:Ũ��+�`���ޖ���������Ց�X=��u(�ɺ����)����{4����*�������ّT8
Nc�9�ހ���u�9kE��:��hsm��a�9�6���0�F��hs�FF��\{���&���$�:��Q�����j��a�9�����0�ZF[k�vz�c��ݔc�f�H����)����hkm
�
�Hg�AF[�hC�)����L�O��:�凵��a"���I����0��M���))�V����0Q&��Dy�(�UDyQ^E�W�=��0Q&��Dy�(�a�<L��� }��n��+�&��Dy�(�a�<L����0Q&��Dyk�c�r�Y�5˱��X�}��>�|�(�a�����:��g������7*
�l�/��C���)թ�;����}Ϛ���c~8��i�1�hӊ��D���_2ʳ��wr
�������ߔ�!|S�oJcW�BDf6��Mdf��Df6��Mdf��Df6��Mdn 27�R|W��J�])�+�w���ߕ�R�7��J�])�+�w���ߕ�R|W�3�����"����l"8�/4g���Rs��q��f���?J����l�8���7��*`>��8R%M.?�<~�܍�i�73�����<;���#���o�!|��<$Zg����`apFs��}s]m�XO��3�Xn����#=w�h� +�>�4�v���sl�eǍ4x�H�i#-c�e�����1�2FZ�H�i#-d��g8������Q�1ʲ�FYeYl�ef�=ᐞ[z�F��?���(�3��pƋ�8E��8z���#OW�1�"FP������QEG�O�r��]��Z$��Ϣ��f��%pl�l"�,R��s}���љh�vtf�g|Y�/�e!�,ė���_��B|Y�/�QG���ugf ���%&�n�x���y�1+-絩��|qJQ�/�Yr��3n0�.�Z��l����b"���1�<���pDg�ߧ}�,K��8�o���֑�׃���j=�9�G��;đ�bs�.�ٱ����CY�#qd!�,đ�8�G�ȴ*�8�G��BY�#qd!�,t�}6��y�]�C��?t�Cu(6?���w��C�Y�}���Ṫ���.Dh Z'RC��,P6�U蹮�>w�<�Ǯ��'2��"���, 2��"���, 2��"���,P}�^_p�\�ׁ��
�FЏ}_G�z>���&���~���, ��~���� +buC�WO�Y��G�z���Z�F`ꇈ/�2�\�[��c:��:C'�&1�\F���sy.#�e乌<���2�\F�g���@51PMT��@51PMTձ�����w|f������~}~��d�e�]���:����'1�����z#�s�'Y���W�*S�2��K�*�����ed #^�0�%�x #^�0�%�x #^rZ���v�Om� �Kb���2�%F-6�z#�7E��"Q_���Fa�".�qG\���c{�b�U챊=V��*�XŞ��K{)�1�J3������A�K�?6�(��`<(>㺢���W�k���:p=�����b<^�Nj��m��6�}�x/&ދ����j�b�}��%V�kx��uu���ԓ�-����x����:z��[�l,���_S�k.��b�����#!�U��l7���5�Z���ؼ*K�a�<,��%�D���yX"K��|S�oj�M
���75���Ԝ4�c�yf��̜���o5���х�]�Q���fTy}�<��զ�-ˣGx�gP�?�x�u�����Q�5���]��6�k�����>CJ����,in��EϤ��Τ��:��k��Xt86���Q�zS�>}Gp�\�Ϻ��$0h��4�S�X���b���V���X]3��t. c���լ=k�/v�,:3��-�' +"���g���Ζ��Ζ%��\�����ϔ������)K���"�ם+7�=+V|����Ί���z�Wk��ԋxs��3�D.jw��>*�}�se��se��+{���_ћ����dp�պ
p5z�N_�����S�r�U�͙S��8��I���K�g�N��]�d����vqt����]FI���]����.�'�(RA�����T\�Dt��=�{�w�'r@�W���s�l ���`����#�S����l�7���6��{��,0�s�<��E +��\�B*$רjU-ת�8%�D�� ���X�Y
� .��F��[�0N��o?��S` eTG�?�b���� [ه�U�������?�߁%��_C�5��)Y<A�t>�ϻ�QD�Ӆ��� +i?KS���,����"~ �,W�Z�ަJA?ꩢ�a���FW���/�ŵ��l$���A�7�:�Fy�<[���d3�_��-�M��l)�s�b�l-[�A��l#�vTQC�y�<q���n1��Py��H3�p�Ev#LE�j*��r�@}6�,;J�C��n��P�
�è�F��g#�H�Qr��K������wP��jl���ƚjl����L56^N���ئʩTl��4*���}Tl3�*�Yr�9'V�M��1��m���-��m3L�6���!j�����p�z�#W�b.5\��G
�J̗k���ǩ�ur���T?��ǡ�Y$�wջ����7�����}��7�=���MEC�D4�rnO��]��^��������<���q��D4\�ֻQ%� ���^�מ�2�͞�h�mD"�3�ӛX�T\M.h�I���R�+�sk=�[\F<�#6�k5��oF�ߊ�����ʽ��Ñ]Neޟ�|���&Jߴ�M�Ӵ���I�Ӧ�R��7�g�fΚ!���i�tk ��O�;~��شI��`ڮ��>s��Z��7�ӎ0���Yӭ{L;��Z��v�i�v�i����0�jӮ7�3�}n��I3�l��ܴ����|��v�i�3�y���[{M[n�OM{����͜b}i�#���iL�8o���v�iۚ��i;���y�_a�2m_�^o������=rނ���;L;ִ�L;ݴ���텦]l�e��4��S~�[�Ҷ=�m��M���_?�W�ٸ����~3���l�����&��%�����iM{�)m��l[��Ӷ8�M6mkӶ:�mc�s��M��m{�9��2��"f����W���i��¼�5f�o���G��8H�8B~h*�d{yq�⇢=Y#�7��D#E�}� ?�~K�}�W��?��
�X�=��E��G��G���X��X����b��h�xT�%�7i��������hߴk��>����c�?�O +%_m~)�+��d��]C!�5&��n��\mf��_�ߨ�T���ڮ~��V���y���ԏ�&��S��~��0{}A���2�9����<���zU�/�LV���l�zC�3kb�rﱙ�e�$�WK�?��RO+�9�Գj��*C=�����#�Q�\�P?Գg����j�Z��P��z���23�S����X���s" ��(/�]�e���R������C��#��w��'�)r��)�ʅr�̐�ȕ�ɵr�|Z>+�����U��W�k2O��@�-w���n���+?���2$�jY��IX�o%XM��V��l��:Z[]�ˬX��u�u�5�b
�FZ������k�5ݚi͵Z��k���z�Zk��������6[[��V������g�V�����z��m}d��>��[�Z!�Um�Zu�[a�z�5�!�#~W�y +�T�<�L?�L?�L?��<�L%����'~I��<�K�����j���x�'vI� +���`(H������<�K*�Y�� +����.� `�g4��`X ��ʤ� +;hjW�oٟ�u�[#��v5��b��}���ڟۇ���۵v�������]s�u��Z5�����mZ�|Sm�06xT,�fz�� ���_>�٢�%Q>%�����bќc�-��ڲ�X\Y}��9c�+̾-�_�Ōad�*<�]�U�lWbm�����;r��C$�}�L}���JU� +�r�'�_�Y��U����!�WU����s��X�o]�|�go⿁���&���OP6y�,���Ol.�է�R}�j��K��Dr�f��|��)_�8��G�MF~R(2�3B?S�b����Bj�>�~������G�X����W�N��u���,gkA�F8(���Y~e5�^�3����y�V'��hh��z�F�!?�X�W�s��*_4�u�hB���3߱w�N�]{�]d�g�op|$ˆ�a������>bG�@�,F�T��W
TC�H%��Tc�D5Ug�D�L5W-�9��j��U�T{�V]�:���%��k�Z
U��H5B����5]ݫ����m����Vc��z���N�S�S竎��JRm��� +�Uݤ�Aj��Yݪ�Rw�1��D5SݧP��u*Y]�.R��.�R�K]�~�RTou��^�U7�~���nQ��(5\ݣ��5K���j����v�����j��_�W�ɕ�|M1�Lc�M�'̚=����r������K��3Kd�+>c�J�X�X�_�\K�Y�l�k���!K��&?@1u�Y� S��JkJ��W�S�5'K�#�!K$�$�D+ي,��z
�me[�D{ٞ,сZ6���#Y�By!Y�b*�Q���L��*��%��>d���Md��r Yb�L��Y�L�*��%���d�T�J��U�J��M�F��]�N��S�I��[�M�#ǐ%��qd��r<Yb��H��,'�%X���t�D�L'K̔3���l��\9�,1_�'K,��0�C���,�X.&Kd���R��,�L.#K,���?�?$K��+���j��Z��,�|B,�B]O�x�~�,��j���ĸD����u5���o+��T�^vR������XE��9��� K}�����X$P���g����:C��ه�=X
�@��Vo3{ ���s��&1slŜ3��e[T5E+�5�f>jzfk�L�a,Si��.>g��W�����Y�[7�o���o�af�F�Q\33zk�R��Q��+�V��F���eit�2�l]VF��.�]n`t����FF��"3�@t.��x�l�B�Ut�wS���0�p���s��5�-�S���v�ɻ�Ϩ>��_��aIK��T$��,yd|��+��� ��M˒���u��W�սQ|�%Mm+9Nt�pI<%��ޖT�n�ڽ�q����~i[O/�)��gwN6OD�V/��?nc�=�,H����Kƍ���{�e-/��Lm����d�� �[�z����M����pst�m*��Ww��P���c�a��w2���Bv�2B(���i�b��%k2�Hd�$�-K�--�LB���m��y��������5sι���:�|�s_�ǁ�&bQ +���0 + +����|���mE�����rn��=X1r�@-���,�fbGpX����'��N_R�% +\36�t�>U��,gW\��M��~ˡ�Q������'b�$]lz#��|�ܵ�<^��,J�9�W��_%Ҭ����ߨ7�Ħ��5Սl"H��ʜ�T6��۳K�s���1��v�Uˠ��q���}b�j�טM$i1o+,-n1ɟ�-�c>�X#���<4�����I�ז����5\u}U��M��h�ۯh4���ȡ@���P�Z +I��&0�� +,�xy��L�7vȗ�7ʎjt��� +��ƴ�� +>j��p�u������><��&������D/8+e8霽q���-�.�^�;�R��n�A/�D@��Z5�D8��dk���o{/�����[[w��`��ۢT뚛�x��$��,6�є��d����f����)�Zz�=M%��}!!��a��ɿ�HT +]���GD���;m��H�{�v"�� +1E�^!oDj�K�l�̡�DcW�q
��$ƨ�o�V���s���ύlV��VJ����#�w~�P���Y�b`�V � +�Ƨ��Ӵ��v5/-�.�fw"�ǰJ냌c �ű�ŒD%�V�8��V�`5�_F����pYl���ι���\>
S'K�sjm�'-�: y�\r6\zF]�?��I,�v �Eڭ�卝Sݹy�CM��.UF.i���'�RU��fwF�Jf�N���a��W�-W�I�D�V�y�'�0�O�}+���B�v\Q�Ɵjkw��/ET����o5I��p8Ei��cH�ܯ��K���3��W��`��>�0����a +q�������G��aL^}��t]��R���*<���@裹���vڏK�՟�z$��Z��M|���H���>����}Ж�w�rO�C~�O�d�� +�#XRd�qՆ&�c��No��NJX �t��=�����#��:]*j������x3c�9b-��X�z��f�"6�z��#� +��cn������l�w6!�]Ϧ>z���)�ꪚ�戈Amψ�xw�y>�Ve��!����J�iHn��!e[�Δ۬�p�hvA���^�gλ���U�UpbL�F=���w9o�4�{�%I�sޯL͝�h^��qf�B>q������������0,�Y�����Y�|q�� �Zf]W���R�W�銀�A���`Vd��b���]d�Kʊ)��F�#�I2�� �I�1��bW��e�d_��[煮
�:_<�s�O���S]^�XL��g� ǝt{:O���-��bs�K`;�V<�Ϗ"��*�,��� +��� +���2�d/�����b�\<9�;�4MȔ%�t���H���B[\,���H��@u�U �/���^�7�XYdlne�J�+����7z��0���ȵ�5 4�3|C�И_������'T�C5��+6:h=όRt�C��Uʂk�L�j�cصyh����� 3ch�"����:ԕ�Gck�8��}�j�`�Q�i�Б��V�%�i�#BЈ����3ݯ�Ai�7b�wb�Fg��C&W⟏�x�i|�8˄ g�8'/)�����灩���G�����G��j�[2��-f�Nv;xRΈ�e�-v`
��Hlw&��W���&��ٙ��)-ʛ��4L��i�#��h@[m���-���~�!W�[��n�h��bxD�����D�-F}� +��8ɽ�N�Sb:,�Ԫ.�#B�a��PۥU�b�Upճ��r
���t +B#c���A��cެ�[�*�Kز2`=C��]bòk������X�E{�Q��j�B��4�A�uj�˚���ZY�!�c�'�B���C�A�Q�$�J���� �J�H�i������I��A�?�%p +"M0���FM9����I�v�����[���ϼ�K�����N�ձۨ���qC�7R��Fȓ]\��3W��4�}@t���<�l��TS����`��ih��,>�m퀁%��ہmG��,��䱁��u7ٖ�$u����\ҦQY��P���JZ',��".ݑ�U��X"ǚ.uR7��N#�,)H�L��a�-�!�0�ػ�=\f�qg�7�������Rf�ů��mZr��o�9��s���ȥ�i��z��z`K��&{��q���=T +L���8� K�!@�j0�������8�/����[�l�����W�fa�n��x<�Uū��6��%o� F-��f�4o�j_������ +endstream +endobj +529 0 obj +[0[1000] 3[342] 5[587] 10[332 543 543] 16[480 361 689 711 711 711 711 711 711 711 711 711 711 402] 36[776 762 724 830 683 650 811 837 546 555 771 637 948 847 850 733 850 782 710 682 812 764 1128 764] 68[668 699 588 699 664 422 699 712 342 403 671 342 1058 712 687 699 699 497 593 456 712 650 980 669 651 597] 177[711] 179[587 587]] +endobj +221 0 obj +[342 0 587 0 0 0 0 332 543 543 0 0 0 480 361 689 711 711 711 711 711 711 711 711 711 711 402 0 0 0 0 0 0 776 762 724 830 683 650 811 837 546 555 771 637 948 847 850 733 850 782 710 682 812 764 1128 764 0 0 0 0 0 0 0 0 668 699 588 699 664 422 699 712 342 403 671 342 1058 712 687 699 699 497 593 456 712 650 980 669 651 597] +endobj +229 0 obj +<</Filter/FlateDecode/Length 234>>stream +x�]��j�0��~ +�Cq��C0t�9��� +�3��oF�Lp�Ldžz/��gjN�X���A�w�ȎX}ۤ�9�_�"TB)�اA'�zD�[76�]\։�s|-a[���x�S�YӀ��R)��R)�d���W��͏���?ew��WYvE�>���S���ffN��EJ��ޏ|�T~�4r2 +endstream +endobj +234 0 obj +<</Filter/FlateDecode/Length 12608/Length1 24832>>stream +x��\ \���?����a�~0���J2���� +f�00 +�� i>�E#3z-�-��z��\ ++��֧��*�L��bYi>3��Ͻ3cH���}��{�}�{���{�{a +��I�������81X3�e���
<+s�
�C�;�f��!҉�+���YX�s��.��|=x��pD.��4C��t���Ǥ����,�;yq�`���1�G����]��X���$�����n��;�$5`�O���M����z��d�`�_4�/'Y�rxv�Ki��}�p���x"�y\τm�,�K!�b?�n�JP"��;�x�}� ��^���
�⯸��}��|���� P� +�_��E0q +LO�T��8��t��8f C1�L��8J��f#Ά9�s`���eX +��eP�X��`�x +���P�X����B�[�+�"ī�jīa��
,�*�*�#���j�F� +m�m�q�#�õ���r� +X�x�D\ B��{a�F\
k����1���
p�p�M�q-�C\7�_��Ё�� ނx��z�[�V�
p������p;rn�?#�g����N���.��n؈��?�{�^�{a�&��>�_��G���~6#��� �B|?��a�x����_� +�!>[��6�l����q�cx����?�'�I�'��h�n�#��;`'�N�v��nx +�)x�i�A�=�{���<��,<����^x�y؇�}������"�����ˈ/�+��� +���*�����u�_�7߀�#�"�C���M�7�m�=x�����;��.��!��#����p���!�?߁�#ď�cď��6�O?�O?��ķ�3��s8���p�D�K8�xz���D�'G<'�Cp�B<��+�Z<_�7�������)�S��wp�{�A�;�������r~�3�g����������98��/��<��x������W�CN�A?D�D����])����Nn�N���R��(�I�Xd0��X��ad!����O�/���I��zd���R~s&o/7�A�>z}^ó]G= +�\�
#O孼L��g��P6�b��爵>���B.��K̽3����
�˰�gx�r�Ұ�2����L��x���,���g��P6����t �9Sp�ڠY�%�vݮF1����j1R +V�
n#����ٮ�ż^F�^�o��p����ٮ�N��z.dž�k�?�A9��K���r)�"6G�k\SȈ�ё�h��e�9<[�R�
����z���c��%d�����R���54]�6r)�9Sr|��u� +.����Q�9�.�7g*.L�d��B.�px��oF`�bF�%L���8O��#����ٮ�x��?4]b�6M�vQ�x<AF�^_��l�Qg����שk�>bmME.����^_��l�Ki��y����$�9�����"�� ���_P��~'I˒���vx����^ߥӲː�2b��=����Nǜ�u��t��OE���C��ǜ��~�+����&]�;qBN���c�23����Ԕ�Ą��XuL���������pW�)�2������T ��*�$^=mZ-����aT�dMq��ULLp�ԡd�E�:��nP���\�MK�Ԃ�P�Z�!�V }k��R��b�,FK�Y����B( +�/�J(�Oi��(�*D}���u�Q�� +�Jw$ݑ��-�$haT4���'���.,�����|\���>gnEQaXtteZ����vPO�{�0(`��ev9�F0Qs��;u��TW�xԨk�*켾��ᓂ�ڃ��
����}*��
�;��M-vt��]s+��FS��Dؖ��R�1�^�^,.�7��� +;���%�*�}Fu�T-�n�����%U87�v(m����#~�EBGy�:ڞ����w�CGi����Z��ڭ�q8����Ixx%��u�b�*.�,�#ROLj�GR�F��)��Ð�b�* �������nU� �O�ۥq*��q0ԧ�u��Y��,P���`�a� +�R�P�� +N���?Q��SQĶSu��rː�ɸ���ɸ�����*��"*화#*���ݺ�t߭R���Zl_U-ݺ��
9���PO�z�}��Xhש�����T/�����nX^T^ѽ\g,ܑ��/R�+�@ ��N�������dR�{�=���L�=�l��
����������X�+a=��Ω�V��J\�콓sW�\T�EWNTY&����2� �;�}�9��J�O˧U0�ʋ~�:��WN�{�<�R!�G=RZR.JV� ��TH�q?�j�oTfJe +H���L��'���^RţΧ��R<%] +��%�' ��j���#���u5�]f��p�'�0��o�*�6�̀��i���խC<�� +[��'I'[���w�n��
�J�8��~3�A����95��*._�{~!lG�_������@��(�����$n�� +����+`�n�N��v�v��>�/��p�q8 ��H�F%IƬ�<���2�,&u�J6��Hy��L�&g�1�8.��͕ru���q������q��O8� |o���o�_�_���?ƨ�!�KL�ɝ���i�I��j��R�������+�xq�X-�*vb>�>���j��gΪ�~����5���w7�EwÃ�;꽧���(}�~�ކ�ѾO�K�mt�/�D�4�����Lż穕� ��� ��Mvc�O>A+����\%w5�ʭ�n�6r�q{���a� ���L�S�b~%5o��������7�=�~� '� �#i�\/�<$yR��=�'R�t���]�[�Wz\�+�����z�2E�™v«�
�/��uDE��o�/�Wq� +Ν;L�H�" 8��� ~�F�w��do �kH-������pP�D��9��$�W�K��vp;xN������v��
�Ҿ�b%�2��{#�:ȅ$I(�r${H���?Az`�\����X���a�)��נ���s�V)�(� ��'��8�>�I��&�-�>�UZ�U�pn��w}߇�}�f�} ��ӗ�`���q��������x�;�p�0���#��6�i�ï�'��2�G,�7��5���<��D]�Ln�۞Tb�A)�x�u�KBI��)%�3���rKT?��R��B^n_.}2�Y>�>q�>�u�U������$��ם�^��S��O��������3T�=$B��!�8ĸ>8E�so_o/�����G||sr2�~j>~�qY�xA�����1��
���m���OO��OK�'u|���3g�$_x)=??=]�s|�$�q���ߪ��
��4I���i�\�L�"e�r�R +%��)er7)(8�C⎗`I�R�T���J�$y���M&E�){8�.��Wz������p��"*�����q!�3���N��BO�����h�mҵ�)k�;�6=���o���<7�eh�*r��"j��'�&���5}{������=�w����[�%��o5�E:�����B
|�K��Y�i�ܤ�x�#�bb�ԑ!11i�Ȅ�N��Q�ԑ1jA��o:4Bp�F�C�:]P�PPp �L +D20� �Ai\z�C�8MB���4@YPFPP����%�&U�Ty�h3F���T �?E���Aǁ�"7�bP�j������2��h����=6+s���>c���фD�c䲀�j �w&,n��?Q;?6�da0�_ߒ^�J� 60<n��o�v�:�����뢒����|��4�� +��1�^�fGD����Eym2IJ �M3{Çyf�%���I�1�j����Tm��=���C�Og��ƇdJ�x�sO�ćd眍N�g��u��)Uߩ��&țu*��)Un�sQP����x� +�?���ńxu�,�?0(����D��(/+G��'1���w?�w�䌸@���]��%O�(-����ǿ���������hbB�� �k��-i��6)F����7hVzjc�ͭ���~�nz}�,������ڦ�?kc�g����iǕ���#u�{��<"3�]�$���ٍ�$$$Qҙ��pI�!^�p�c���ESU�h?��l��@A�.52A�����J��G"��c�H� +!�7"0ZHJ�*�����0��]�q�$<0�%A *�z<�+�q,��;�*gn���ދg��F�� +� �!%���BdZx,�{�Ow?i@ +� +��Fa���lC�P`n����6��I�4҅B�M?�P~C�Pj���Y�R����j���P��Xmn&���T6#}�VH�e24���Z[R����A�<�Y=6]�u4�U>��\�Էe��f}���N�][kB32r�s��MV���dzS�U(75�B��M(57ꛄ��F�R����l���o��m�f��jLjMu-�F�Zo5KK�����f�3���B��V/豓���U�k�F=�!���j�kr��36��ciA�Y���`��7�
64:]�!���,X�65�E
U`5��M6)����2��ʺo�4�yh��,`+��|G]ЂB�&�jCi}s
s�5��f�L�h������LG-�z[c���F��S�h]�P�N��l�fl@��5)�]>}�����K��S����Jʊ����EE��J�=���Q U�[��B��68�h����h�ٌ8I���y3�i��l�i1ب�m�&C����65Zj�)���d�4`ԥ�f�3nС8/���څDS�`l���~��4 =쐘x
�Q([���ɐ�����l�&��fl�+�ل�֘ۚ��������b��f�����&�[�J@�zc��"�F�IZ�4`�&�c����x�n��};����x�g�,E��i��l�n��f��7���^~>{�g���[��Qa��lŧ�=5Qm6�� +r̞cv��g_T�oq7-NM&�-��J)Զzf�ׅs���5.ӝc�0�F�K�hC=-Ya��h�e��}�lp���R�+���| +p���l�ҕ3q&�!���'Sq
a�Ÿ�� J�T2:��-ι�
���ea���b���!��C�#h&��[
�X�~S���FǬ���l%ׯ�lb����8{uDG
���=�}HlѾL���rD�ŖS�F%b�$|���5ܸ�~�{�^�M{���r�+66��v��79w���5q��%[l���O��ak
���~����O�]�����N�mW�^��=����Sh`'w�gQm��9��W�@���&��z��8��@�(;M]NF���W$��I�d�� +��֣��{td��o�پD[9���/�_��[i�@D�I��;�~a���\횰l�[�M�n:�I�\ך�$d�q�d�k�d�/���V/S�Ȉ���IW�v�6u'���U��O�1�� +��� +�.BQ�Z��:��-˦o���nA�62�S�����eia�g-fef����P[6d���2������&h*ûS�0�ɐ���Mrt3P����*��&[���5$f�W��5�����[�ر��!�I�u7?������>�{_�~��5�?{����7ho�X����O�=��o�����Js�;��|��LÝo�-M�>튳O}p��0n�/���[�=������Yz̫�[]��=��彺��{_�$#��w��cS�73���-�u�セ{>��l;~�Ŏ��/���v���-�r�ů��
U@���.A�t������l�YqdR�;�˾ݜ���cB��9�`S����ޫ�~���W����r������u�u�O|���O��>�P����ĝk_x��1�^}D��C��#V*�"I��kc�ZrS��`6X-�xs7��,�+�؉�#D�(�2|q���%���֎�ӕy��������Z㈕��R���R,R#�$Z��(x�2�i_�k�2!�}$�[B�A���y���c�e�e��ͺhU�WÌ�翮x�0<���{S��qr8|�!{GE�犤��~�;�NHJ=�����l{��w�lz?�:�\���ٖ�U?ܒ�v�ɓ���yw�ľ�5���'��������?���gSn�����] >���g��x������&���e'�˛�kXԮ�N8ױ�W)���0i]p����M��.^�����������S�6��i�uJ���$w�I���{���\X�r��=�
������V�ͳ~Ԓ`�+�#,zOy�+,�Լ���#��>�����?}x�qC�O�E.ZQ;v��������U�xbݢ����=�]�����o~�Jԁ��Z������m���v����ǯZ"�|��c���������s�I��U��>�u�4g�� +Om������� �Vݽ;O��x�2s�{c�m���yw�W�h�������������=�K���}[���ۓl+'�O5��T�~:�TM +�D�<��e~�b�%7��a7X,콜�R�����-�j6�x���_G���l��ԇ~7M1 +��4���M@��������:S�5��/Y�A�Edjr���#i�UK�����R�ɱ�c��>J�p�*�����<v^�y�į�-��Xm�ah�մ��Ao��� �S�`�G�S�N���_��Jg
E$���܃d�����!�#�{���yӀ�R��A�-��/P>(��ORz6����3%w�-7.���[x�l;Y@& �]� +:�*g��<m57ɯx�=1��d^�sM[|�`�P�E�@����)&���W�^���Nx�pMn>nx-"�VO�HQ�\���5���!��챘q�wN��bZ�� ����#�����XU[Vwۉh�e����8������|8yF��%��Q*��iWNi8�[wM������� +�
ŀ�=�s �� +/9�\�} +���o{T���S++��l�9��G�/ ��v1
��x_�O����v�}���ݦ��{�(�l����a�3'�o�]���f�đ�g��@W��ɗY�p߯蝞AL��O�5��7$ O}#���.��`��[��I�ᴐ� +hWŠD2@��C!{��+��{���a�4�ÀZ�J&&��6�w�k?�Ώ��B�*�yL�%C +/�'(�Y'�ؘ����uLV,?mҿ%St��}@����2B�O%�9�N��(�Y���4��#�$����Y�)t���v�ayr"����d���3�B
� ��O��r���mSr��g��ʹn��)p[2���!�w�A/[��ƽd����/�{�xw#*�,"�[���PV +ç +Ъ�n��#u�K^Ϙ�&�����^t�b�A�ݍ�tj��h���p�u����_�e�E/Ƴ�0�jkR��,z�3*��3u:�$A����N�ʿ
9��࿕�3�� +�玒�/�)e�zR���i����9�*}�{b�T
�&��zP�1�
���Y��1b��l�!�����{(+e\۲��������K�®���Y���nD�0I���4�)K5p����n:۳���)���ф�g
YX��N
"D����Z�S�C� +
��E������]O~� +endstream +endobj +233 0 obj +[0[600] 120[460] 164[790]] +endobj +238 0 obj +<</Filter/FlateDecode/Length 224>>stream +x�]�Mj�0��>�����$t��,�C�������Fq�}e7L���>�,}�=����0���1�ac�0��I�8o�ѕ�.&*-� ��������k�N.�x��+;dO3�>/����7.H *�u�p�A�&��A��;�}����9>��Д��
c��5�lhF�VR�OR�Br��'�e8�q7U}_��{���n���,y�J����C�T>? �o- +endstream +endobj +243 0 obj +<</Filter/FlateDecode/Length 96997/Length1 303480>>stream +x�� `՝�3#iF��k,�,K��؎��v'�\H�C�CJ�������@��RJY`Y�����t�l�����P���*��ݥ���q�Sdb�Q������{��{=?�=͌�� +p���{V-ٚ:ф���ܪ����:`�� +|p�_V ���q'IQD +�,�|˰$SDp_��q]�3-�cua�����������B�gӪі����q���әQǟ�b����E9���~�� �$���^*a�!.u�j4}Iu��2^�F��w��$���{����_l,��JW�=7�殂����� 2cf�Ly��f���4�)�8 +XG�v=�@���Q�_r0�a��I�@�|f0g>XP�`E��
�vTU� +ȨNԿ���np�z���E�?���^� +��]��j�z�A�s2��6@-j#ԣ6�����|��0u�h@]���� u1���Z��
��Cj�;� Q�`�X�y�VԥІ��Q��
���N�#`I�-8��r8u,E] �2�����ᨫ�;�&
G���z���3o@�@]��&+�_=���U��Q]Gg���u=�����P7���p,��6�:�@u|�D8.�{8 ��?��)�u+l��/�F�S�n�M������48u;��aK�w�%8�8 �L�W�,8�l؊�e��W�~NE�lC�:|1� +�Cu +��D}
�<���:<��x4� +tB�u���,Bs�r��Ɍ��؝���kŌ�������`0��O���g���<�>db�%�I�d�"�x� +�)��GK�Z1���H���`0F���e=]���G2�S9�j�:�&H�h +��j5Y-ء
+�`�'ٍ?��#���)'��a}gf3���v�"�q»��n��`0y�W���Z�tyS�h!�#�YE:�B��p��
��L$�h@%_�ڌ���٬@b�:�o����9[�ZxS +9����$�L���lwȲî8LV���P ;l��ᠹ6�؏�K
�B���-��b�;�=��v�BA,Ѕ�)��$�.�'�7U�&0��}���q��>+�$2�LJ�&�Iz���6��d�%�6��n�:�F��"�6����M���vfq4��@��q��xJٛ +��G��C��~�9�_2K��#{�].�����%�K���N��Su�h���eQ�M&�ɇ���!a7�9 +��g����B�\�S� ���a�!�P�&0����t9㘭|V�-dvD�B'U�=�����d�̷,�I���p9M6��q�dPd�"{�I|#U��lM�(Юg%�>�$��`�@�H��#��v{�n��+�n������)�[�r_E������C�f`�%��֧̒�y�{���#�m�-vw���G���0Ɖ����M`0#���tY�.�c�X�숚�N���z}�>��C2߲���8]��v�v��u���K��l�)�������zơ��ܼ�FH`��ͮ�5����z�~��u��A/��n�W��W���T�N�ӅZ��N�*f��w�$km�9�Z@X's/��g㣧p��q��b7��`0�<�+����c��Y�es:]��r�� +=�?�ؼ� �|�&�.���R�ɁS'��n��v]�������[GS�: +��G�=H��?0�Z���<����s�!|ހ��� +�4�~�������R���Ã;)�����=��v�s��Q�2��.�'�Ԫb7��`0�<�N�;�M�5���_���� +x"���~o������^J�M�(Юg�k�`�;!���e�=�#{�h4��e1�?J�ʢ��X�:��!����#�X��$n��>�n�imq���Z@�+�]���"L`|,9p�81U�-v��ȃ��?]�D6]�4�>!W0 +�8/r�Iz�X�RgB�
�|�i��Ba5䏨VO�S#AP�~5����>/���uh�3��MIp8��rN���p�9�k.�XYY,Z^��Ԋ��`�,Vӯ�WAU�XVUm��mnΠC
���Ɵ��g� +�e�~Ur� +�%ˑ�5�����X�\�E��Se���x��F c�H���W�D"� +�%��PaN���P��k���yo��̽8S� �ٗ�3��b7��`0�<hT�����eMc��DJ"*N��tR�^y��ų<q���P0��G�Z,����h�<� +XG�v=�h>}6(�[����P܊��P�R��Ty�*%��k5��rH���ʛI�����`YM��#�Z��%�VR�f- �C�c�}ҵ��?�v�_���L��>q�"�q"6�^�&0��}忸ӧC�tYӘ�h�hT��"8/�9�R�ʎJ_4{�N�#۵X�L+I���é��q�$�U�l�)�������z��qAO�~�t����N��窪9s�*��q�V%�̭�ͩj���� H$J�l"!˥�|�|��D�F��U���<⌽�I|�r|��Ɍ�����µb�!u\P�&0���YT�����eMc���%ʒq��Ȝ +��ں#낳!!ǜ@�[A��HΪH�VV(%�蜊�`�"1/1�o��C�$�h +XG�v=�農 �^��~0�
z�����kh��nn�&�R�렡�������� �Jb�T��L:�fLzS�ye��b�{�{����{��`�071`L���S�6�@��W� ��`�A�bk�\}<]�4�>��Y�R�R�8/*��*���iRk!�L���i�ۙ���N%k�]Ze�����+��-��������GS�: +��G�M����wL'���~u��46��4ַ��S��]-m���8����I�r���S�Ձ�j���unj�_]� U^�6�8c�K���d�����L��~^�Z1���T�&0������r��tYӘ�TkU���j*q^��9�ZZ�/�6B���8q��z]�5��թ�zOYMyK}C5�U��۫�\�Xxݳ8�����zƱv�B��~24 +��B�9Bz����6-mU/��n_���o_x종4������s�=���D�C�UmUU�i�3��'��!�/'̘͛)L���kŌöv��M`0#�T�;}:tL�5��O}����n����9zs�;�N@���aL��=�s��[��fͭl��RM�5M��p6u�����h +XG�v=����n��RF#�7�6�Ȯ�tt,]ڱ�ȥj]GS��#;`iǢ���in45�55�46�|u�U���Ԧ�ò��6�8c�}�k�ޭ +�MS�����3��_� ��`�A_��.WO�5��OS�a^SC�\���IzK�u�ޝl�&_]J0-�5�oY�X(P9�f颶FX�X��qyc��W8t�� ����uh�3!k*p$ʑ +o�� u���R��fX}����p=�v�.��o�kj�̚G��:�m�٥���������
��m��it���ۜ�o�y��3a4dn�����[�����?�w�x��W�m'�8~���������c3>_�v��<>�ۊ���V��8]n���CaU�����Y���U�5sj��a^Cc���-4�:���t��ݟ;���+V�G�>��oͱk�#���H�������Ӻ?#^��%�Ǭ>zU[��E[4�oj�7���vNMu���TŬ�d�,^Ӣ�5 +�>���r*��n�Z̒h2���]�%�Z:ٟ6$�K�V�x|=&��П�0i��e�Z?-��_�K�w%[��������@K�l�+���k�ܚ���_����oR��_A};��n�u�tji�_�J/9c�`W'�n�����l��
;,Vt����m;8�"�:���y���;���x'iAZHt�ߔ^����3��U�Ns��oO˕�t�jҦ��H��N$�.�v��3x��+m��֯�M��H�J��3���+����sWGs��`W�D�D/��ׯ��#�ׇ��m�Ē��%X��x�{4��?��7͝�Uj䙐g�?���.����6���[O�Ǘ&4���Ύ
�B��2� ԥ
���ҋ�����u��`��?�j�ũ�9��죝<�����>*wd9Ң�2�im��-��sj"�� 76��{m�[�7�+rb���?�4�t�}ژP��ເ= �����Ϧ�ʻ@\�Or]
�G�tee:�"]D���۸���U�>c��Ƿ)x�`��}�5x�c1�_2� +0�X٫�5��֚ʾ4�Or���x�&9#9����ؓJ� +�H�-mH���v�Mâ����pڒ�ҿT�>K,6�3o��h��f�f��+��/�/�_�l�6ؐ�W��엇]M�pY6��zcZG�����
g�4��[�u�����lt���߇��Y5{ t��K�ڒ����Ù�
qM�����rp[W�H���vI8���><V[�f���}G��h�V5��|��hU�����};�0�w���;M�I*I$�D���'9�K�|xW+� +�B +Z0L
�J��¬��@��;� +؇�C�%�]B�P2� �:,�w��ur[���\CUC=�����N�`��z� +mV��F�P����/v����6'��]�m1�r�uh�����|�Ц�wr;�ŏ�Q~^��Mp��'E[��5"���\�]��[�W~�D���6zD�߸="�/����)g�G$��$�$C�Hr�*�P��kVVm\~2�����x��ģt&�3���I�C���[++Rс۸�;�����������s��n�8n��P��7��
��5��Z�_t~k���
����
$��7P�
h\c�0ZVO�.�l#�t.\�������ư��pL؍�Z��Z��V�FHX�3�X�W7ם��>w�w��p'��f��N�Fw�N��Ȩ��֡�A{-�f�ҥ��˩ʨ5h��֡�����6�-4N�6��0��l×��;�Q��k-QT�RY*\�rr�[�D�F�[�rJ�a�~�_�����63�M�r2t�Wd�ˇ�ǡ��j(y{���}"�y�|Hr �`;��U"�\P�aX7��������m��luk�}�����0����ۣOj�n(�L�ѭ��Ջ���K�rGr���6�ݥ6E��=3��~��F��=Y�����c�U��\]���T7D[��>o�.V�����mn���&T�n +[��J��ã��-���+�^q�� ։�ŘKİ�\�"9$�d�$�$$^�3���ZIV$<&�&Q��(Y� '�p8��B7����u��l��
Z�/=�a��v.���U����a1sT���;-�8�w�}�S��E��hU�0�!I��Dlp�����$�u�e}}�8�ص�9Ig��j����K�Wv���o.�K�'S�ם������̽�չ�{�}���Eܟ��"�¢ξ��an5-����-'�3)���]��K��X��X�l�-�0�i9G���^�չ�����k������F�ٛ�2�-�����^� +^x*H�PY]u���� +�FD�Y�CV���V�����<�=�4�]S]]�{�ޣ�]v�<��*���)�����O��������w� Cƌ�5A�:xw����Ƀ��V����X���Y묘�5��W���C�X%l�6�P}�12d�b�.
���ʸ�Ey���@�6�JCx������cن�1����V8٣n�
`�@��#Ke���e5�m�GT;��ȼ�5��M���j����gO^#5��φ����ChXm���j����%�P;�-���Y�(C �JVv��~���tCVeuK��/�??uĴ`)9P�� +-�@s�f�pbz�g�A�s�P9jHz����~���^�M�&�@�lC3�fԈ{�$�OH�'��Ƹz݄v��p4�WѧX��&�K�E�+��S����x�xP�*uF��d6z
������
2�W�^��/H|�ܨ'�� +o��?��p,�oqW%"�e�6�#���=�H\I:���I:B߮�nOp�oz? +�ⴗ��(}�{��(��O&l��0z=���VXi����8�'D&��ȗ�!n;��8V}�݇^B?a'���x!^�7�M� ��O�d�E��3h5}��h����_��+������5�S�Wb%��a��a�$�l?:�>����X�68�8���;�X�����mx;��Q��_�o�4��H���d��\�|2�͇���(��ȿ���A�ڛFi�
�ZE�ñ�����r �s/~#����?̟Tq9��?_z��K�q_���O�y��`E ����'�1��$n':�U�]&�Á2�L\�oJ�������_��J��a�V�m̹;�M��p�@��jp� ��8���T�v�]�P�S�<z�Hk����Kz�^�#��\.�Dž�7��������'���_ �p��Rh��͕b�x�{��I �o�=h_ۤ=>I��!t��q���y"����T�
�&�p=���.�'��t���"O��?-���h4��>@�܋p�ro�� ��/��킊���_���#-�"�=�)=�E�i�'cn![iH��ܕ�8���Wh5^���!��� �#���cp/|�& �RTB���B��Ǩ�x5z��MG��"�}�^ +��8���.�<����!��X�^��G�h��R~� ��N]���l��E�~�hnmFe��ʲveO�� AVޣ�~|_.��B;%$�1~O��e��_f��k-Z3tѬ�Aee�Z�)��xpu�բUU=]�Q䠴w������7S?p��CMMl�7�:r�1W����B]^A1ߐ���;+��h���E�(%H���ݲ�B,�{������\�`��(�j�V?�b�QMk�Ģ�ؤZ�p�gi);{�H�ŦG����^M�>��TH�����7�+pƯ%��cHCW�rG;D?NQҴ\T���Ip��S��h�R��㉵�}���-���؆c8L�%}J�����R>��;:^������l;�i�����l<�j<7l7�T]�D:i�"k9-l�Sý=Eo�5$��k��v�Qh��Z��w�]��X�-�Fl/;Ssd���ӕ���py}^�FZ����`����G�����o\3���������`�/ƿ�w�7!�{d���\��
�2�"�P����b�����7� +g�EX��A���+�Kwy�O}'�"����wl�ET�d�k�皌AYc\<2Fe�g)S\7{feLʺ��&ܪ,��7j��?%Dž��g����h�sHE*�Q%�%~ +"�c6ER�)J6�[���I,=i�++ƪ�b�8V�b�dP�^1�^fh٠��IPy-qy�t�i�����YUU�Ҝ}�zy�NPB!?�cإy�z�qh��<Q;�ؖ[w�8���ޱa����o_��9�9|����O����;݇��?��Y�_g��i%�� HA�d�]��^�Y�Mj � 'ך^���qgqK�:�I�^� <���+ԓf(8i`���8f�h3���g0a3%ʐ�L���y֗���� D +��Pqߍ��]����?���W��c(�j���� �()"��ȗ=�qw^�0����N�YFAE�K +�{�;d���5��;fř=9��9���s�������!Vu�p�2v���洂��,��PW�Ji^�R���DYU D�Fw��R�.�(U�p���
�n��]�¿�EG��z�"G�'�A�ll]A�x��������K�< +c�J!��V���IJ�1�50dN3[����}A���}A�f�"h
��vv�8��]7��L� �� +|���`F����5"戝�R���M���v?5-�lE�*B;xT��c��1T�s92nv3ϼ�%�R��>c"�9!9�f# +���*5>���%=�U�aٛg=�J/����=R0O��彽���j���S�7���/B��Bn�T��U�[��Ek�Zn��LY��������-�SE?Ra�-�qb���@=�z��2P�[8�ti�:Ҧu���Fj�z�֎�]�{�P��o���TU���kj)�
dz]�Q�Q3��P�1ˠG����o��n��ʟKc{�yt��R&�i��K�ܝ����`�nA�YO������x�s�QuU�{�"�wDP�r����gι��뇾�u˪���?�$~~��WΚq�=Ӧ��w���˶�X�d+�����-���2��]��>�@Z�3c�]��Zq)Q�~�K���-�IbZ@]H~J�\�����
c���d?�;1�;!s�����Q:X^q���lnT���X5��13�y,0d�;��2Ю�A<�?����1���e7C�b�C�~c��c��P=���9ܫ�_�.��{K�����k3�
l�n�<����T�|�u��I�/���F�t +��Md�H6�HZ�z6lm�8���r�ʸ)m�)���vJ�v +���N������;gJt�)��D�8���ı>�N�����9%�iW��9�:�O��8Y + +A36�Ʊ�Tt%�]ܑY�#`���N��!�C~���.�<zQE���-{/a�u-w.��3/J�{~����/\�4�-���%�Q������ �m��3�C��x�+�����y|-�����YɅ���z�� Z��h�L��v"²LOK�lr5�"�7��Ų�p�ojj�UMM��65!�hE���KD62e@���$-.�˖6�|�2g�ۄN���T���+?'
�Ey-��9���f%�\)�f��5r���,�Q�Y���i�5b�f_%��5#���>U�`�6a�ʰ<��k�P�.ͰL�V���;�[�!���H|�$��V�Q�����©���QE���Zm� �*�%A1BlK�n$����G�RV�au4ȩnx��y) P����-HR�� &�+ +�pGA���d��/�>��'�_����.�� +�&������w/�g6���
H����w�g��wfYw��*�2Z~�e�E�)s>?�R���ߥ����%�ͱ�E>�F�O�2��+-�3ХK��(;' +�4+�Y���f�ʙ�>��>����J_8(a@P㧵R28/e�LH��FbC�7PH�S_rk7��[ f��}���H��Pԋ�af����dv��?|E�ͯZ�=�:�wܵ��E���� ��Z�엄�����|���:�^�-<�~Á�7k��ܓ`;ƃV�Q�;��x�����#��N���W�2�˖i��F*�b�E6���F�!�2g��h&�49��ђ� +��8��7k6��TJ�S���Sdc���K;�9&sL2椡*'����*������AU�;���f��~ҙ +jX+��s�R�/�[sB�kw�����W_�� +(����%B(�߯0�G��A4�05D1ܻ�� �>�;�d����`d��'��������S�u�⳧0~ �3�����>|[��*L6,>{%){���[����q\S?���9K˯]1r�SG��N.���� +,�o��B]1�#?)�,��p=��zĖZ��(&��J���*�`j���.ä���Rj�S�)�Zq�Za�d�c��W�#���&uc���&�����4�� +[
���[ÿ�}+�2�{s�9�m�I��� ��+Y��:Ym��Rw��s���:����ʀ1 +��,Wp]������"�<� /�y~n� +��x�aP I2% +F\��y�����'y��FbuJ���X֊Tl +�~G� +�fsK�M+������������e5a��KиkF)�μ�RP�/�z��-g���.�tw)cɞ(zJ�D�U�g\=7A,Tf��C�������Xl�D�'P��� +O��K����c;e�i��}�I������ +ƕWθ��Ub���J���-a��r�H6���Z�s��6x�eg�ݸ�*E�>��9[8��(� �ȉ4R�[S��`2���}�ȹ���!��XLO +p����&Yw��R��R�Z��N;s֮�q�z�V���UVI!�Tj�cI����.�[��G�&�Q�(m�[E�I�6[!O +* J��U�*��Wk+Vk��r$@ +V�Zj��B����*��T�l��yff3A���;���������{��$����wO���~ڟ���{ݔ�C���}mϛ�����i;h)�^���0Μ��xKBτ㡉�I��x�&I��i +�%N8��5
�2���Rƕe�+:q,P����,�SZ!����g^Ėv�Q~��]�F�!-�i���P߆���u�T�D����
4f�fP��O�
��F�@Q��=�3�.a��I����M����d�K��Un}�T�ʩa���Gw� Y�e�� �m%�R�2J3@�10�
E����"d���!K�;�
N����uB%�ٙ�@X�V"A�:�,)A?i�T_P)˲d��1f�fZN|.3W�@�c,ͷ����;�I=VNQf�$D�xq� +]!��h�B���1:��D-d����l�_�~�S��ܾ��'~���3H\��w���&�X~�|��y��y�o��g��*�- �
�����3�ʪBs����T}jx�� LKr9T��e�X�9d���İ;o��=p�]4[��1�u�huL�|<��V�U�UJ�����|�=�A��]ro�}��{0ǨX9 W��t #k�~�=��^|��\���F�R��٭��w.�S�����W����+k��,�T`�N�O]�/O�.����� +g�_��!���f��{�f��tWV��yYu���5o_�cwY�}��{{��s$����yRGryr��V�F�Uܨݯ<��j��5�|����,� �"Y�D3� D�x��zv�/����1�e��_l[�T�|�-C(e�9�!��`�;����X��(�3+2�2T��&�RsPb��6���U���*��Ij�����`{�����W@��L�{$�CxѰ#�֪��sR���jj�x�Հ:ۄ�I��Ѝ�+S�QR���+j����$��*̭�P������\��k�k�L8���+.V1����[�q������7ʲ���]`�-w�����T�k&_�{:>�?a^#FP��QȊ�t���ݻ'1��Cb| +���]r��t2@'|��w�I� +���2>����OT�D��d���D�'��1 Q5J.Cf���h��jBvb��t�jN�ri��L�$�ؾF�V�V�A_��*���]�M�]��~k���=�}�}�r��V�3����9����t���*e�5��d"U��WgA��2�tS>L(/�R�h�fk��.Ѯ����ΰlFU$�"YV��9��Hd3��˔'��$wC�|8J��.v�t��@'X6<�< +�9]�AB��g���`�0��h(S*<rD-�EWU�9����BYo��+*|ٮ������|:�[�/�f)�m��D?6�|�b���O�'�P��_�?�6G�JA�E)g�3�����A��'X�Cc���&/Y���eD��KmE�V������n�:v){ÕO�7���峗\������/�3������H�X��]��)��A�~ŷ/8� /��.����+�{ђWnR��3���՜�c��}W����#�ߍ+'Nv��Z�|���G�?b���=r�{�:�!�!�x>��K^՝vv�i@6��/ +���L6b�Ѡ;�_T<�����x~��7����}rہ��G��G�̓۟�q���3 �I�ú����W�4$<c�A_��hb��De?/�H������%{��4�Ê����A��ؒ>!���������C" +B�g�<�P�H&L�� +�K�e�u�����G����ա������t/��|�~���#�'�
�C�H��l`q��l@_8����P�}эO&%���u[4X�rTD�,A*�X�$��?���_J� +�h��6~op�J��yXѻ�J��q�+!2� +P�k'ZMT��h
�;�z$Z��D+4�=�P�>'�l
����E�Zm!3j����hHI�n��4[%���t@�U�I"�HD�!Y��HH
� X���T�,_>rLQ���U�<T���O�)ޝ�)n"O��7�n�u����/IiبY�E��9z>�L��-1�K"C"��+�scJu�2[�k`�'U�Q���8>��T'>��@\6�_i~���8����8�>
ޡ�MI燎 + :7�������9
t
ܘP^�:�Q�/���Io�4����XJeT����(J,� + +���(�&t� +bLs��}R�3��Rv}C]K+��p}vC��W ��~��A~Q�R���ӢZo̴XMa{a핵dm�QmW�VVT�au���J�{|�ߕWeoB���̞�NM�Pqw�ʢ�5�I�jc�ۑW�$e��Ou�n��p�Q<s�}o8����BL����T{�~!1^�E�" �'=�\�,f�lE��l��ZfhėT-���2F�A�%����3~L��%8j��:�ӹ�-9�!�?����{|�;�ي3]�U-#Z�Z�ͭ��B����-�ϔZY���o2o���F�cv�|c�9vK��v�d�~,.����3<Ϫ��r����}{,��Y㾸��9v�p
q���z�g<��p)��8�����`}�a���;���].N�� 0J�;��,��A���oTK���{��h$�ZU9��T����'Qm�~�t�3��:{Բ�.�7�xM�V����m|j�.X��$���^�Ѵ|�e?ʕ�<g�Oo�qӌ���3Y�a��벻��\8e��#'n=},8P��k�7�ݹ`��W#\eeV�̡�� +����~O�;���(�=\�@��z� ��QpȆ>p,�ͽ�*!݈��me�����V~t��Im��8�S�ݲ�.p��k(�� +�J^@�/�>/y)��Y,\�L��^g�:{?�~�3���XkES��8RuS�H�q�Ɍ2<:��L%'*���$/�ʥ�����ਪ��J����TgTg�uV�%���g�;&��6D�i_�<�������
��4�P�!�w5�a"c`�B�Ebb`�h`�aCEw��+������:��V�|ix�?i�噝y3��y8�aF|tZ�9n�7�ш�frW�^��T�_���☿b�-��EC;.�/|�-\�:���+�Ǡ2C�E��a����Tr��x�X����;�k��O�l��?q��G�����>��g�'��H�����^ً,�Thˡ.�@��X)"��A�)s���2�Ja��G���x:�"�,�']�b���������xsz||r��;7y��<~ar-�6r�<f�Dh�e͊"��&�M�f��u:�9b7��%�v�9���P'��z5 ����[n���}������8���Z�*@��P�m6ׂ�������߅ܙ�6���`��[G=�9���|��ԈS�G��%�Hb�p�N�.�GL1���q�� <���*��:����ڼn`�1W���ŭn s8� +>�./�3�z��)ģv���� ���C��}AAk�ކ��p�����m�����
V�X��`&�� +e��)n�j�F��H��yn�t�t\�gD^�P}F��Ӫ75ln�FW��mo�$M��X{~���K��+.��lX��V����W}VmXQ6�Kn�I�8��ib��}�~f�
��$��8�2)��Hs������<�z����Ŭmﷀn9V����!�4`�na�n�t��u:�@��~��tt�H��t˭ +�4?���wM9o��@��L����-�1��Oe���i�h��ڵ����EZ����EZ�#v�*���$�D�<(
�y-V߰�����R��e������K�14i�7�ࠛJ�N��� +q\T�(@���0�k\�Ej:k�
m����#W����\���?o~�����'��v�s㳳M���zh;� +�ç�ɳ���U�7Mu��~3�� @k�U���� ��P�����G�@���&�U�6bl��fߚ�O�Y�lַ�` ��=���_H>����)�
oCW>�&�Ssw�3 1>���'�� �hڧ{��Ǎ>���қ��A� �t I{w�� �'8H>� �;H3�.AFc��htg +����V�OxG8"p��V넇�C� +��`���$%�Ԟ�>����7�2,-�\�!����V��~�f��#4I�iz?|F�n�KΡK�DcV�E�hl�h�T�~E��d�=�?��V����mꃃ�+����<E��ƞ���}�ND�܉�r�G��`�,�.epKer���'�`Nwh�W� �t�/|�O�>�xV6O3Y�4��Y�0�0M�4"�"�TX�
F�k_��^b���m��eAm�dEq�RR�4S�Po�3���k�� eR9�Md����ӥX(�t��S�9B �f�(��E�OG�C=ns-���ܼA��s��� �\�p%���Ft+�;�U���x�{��U�N���<��s�~��/�{P=������!]
����}֍n������3{)+9��Q���M'�gݰ�ͳ�JS��c)�����Њ>!��>pp
��j�4�t�*�t��(uq��M�I�#�-�K�͎&����WS�ŷ�����,�bs\�oe� +��Le=����n��a^`O��d?���~�GLQd(�&Q����'�gݶ8���n��ŕF5"4����D�t/���1T^ɣg�4Ft�`}{�|6�do��%J�Qbk�4ǀ� +o�'�q�"��#;з�7Jl�����u�>w���w�$�G� �R���(�Z8܆7�jy��~��m �tP���ʃ僄�h��T_�K�so���}��������� +�� +��+ +|"�y�'}4��n��쪫�3�^���T�MB��-��(*�����k����h�� L�P�p(��0�����xοs��e\%mᑋ���`B�����k�O}�>�]�qƊ�ꙻh�M��ܽ3^4w������._8�����'��];�{�����} +�:!�bC�z��7����X���宄\x������6���j8j���QETTY�9VKA`2�fl��8��p�'��O*E~�UR%>�����#?��K/�%z��cno���K �����8��#6���lo��lڦ��H�礨�[Q�#�b�z��0���
��S�?#�ў.�s�S��_X�q���8 �B�?� +�T/�4r8!������#��e0�)�h <�p॑# ?%5�u-��� F�p�}KK�O���tC���D�\ss�ps�@#� +��C� osY���m��3�^����b���ۻoݰ��������'��@y��W~��_B���r�I����U�>L?]�����i2����ʚ"Meg��HoJ��q�)֔�<~��au$����%�rkY�/�Z��} �Z�����w��h]��GF���I�}����IYQ���&QZ��&U�PcC&`�X�a��Xf�t�;�u"��l�v�ƀ�Z&���������E$nXB�d�`2�W(^Vɉ��,A|}��O��D�>$Q~��D9.�v'�S���`H���(�?z�9r�$7Z�)�oV��0��ZmP6��ظ{.۸��w���p��5k��UWm+.a~y���w<�h�������{u��x��7�5�2���C���iPE��g��їЫhV0x���!(� �DBj6�L�@��<���P���H��X]����1�Ų7��p��f���~\wP/]�ƀ��k��?��_ܠ� ��h���.��A]{��XҾ�g�y�i��ӹG�������+�_Gk�>p���h�Aw)R�b(����&�����!���L�� +Е�"@�K���<]�'L&d�+��n�<�i��"Xq�1��
�I�sHRo���wb��!w(K���Rq��T^���z�5�ە���/Γ�լ�Z�Y�����|O��
��xL|R~�����ܯs����*���D�;x� ��'2>Q�*X����|uV�x:���eq�Ш�5�Tr�=63�0�%�/�j�T���;1:�;F�~ �$��$�0:]Gs1t���������\%5������Ȳd��ݢ2�}��x8!�ktr����x&��&��M8�e�[�b���bi���4��F$b8q�^/��\0��ӝ�2u��v$[�ׁ:ti�6u~Wp�;M�E��x%���7�;_ǟ���������l���}y|U��=��������;����Nw�!���I�%��*D@!� +�U�D��HO����*r�)�If��U��mY=mx�R��ck�g���b����0�{�.����P�յj�.�މt��H�HiPJx�7�YGȒY�H�&`�����$����A7 +
zmTtC$,���FyR.յRq�ԍ��ƶmۆ�qa:�2��(�#\.��e��sz$�w^��}Ҵ{��塻^>2cܨ�C���l�|L�ٶ��n��w>woS�˷�����X�l�ؠ3T:y����H^�aӍ�k^S��Z��ĸ����8�:�����#�U�|WX��+ˆ����fXY��� +��,������d���I$R�љ� +���c:pL��G=\浓�I������A�ED�z�?�?ϟ�5j��tԉ�*=��R]��JӅt�oUڤ��tH3�ߥX��#'To�jXC�ޘ����b�� +c�� +K9��^�r�Vb�y]�R�m�:�a)gj��+G��y��IK,���RͲ����2���]�F�Б)��?�Y�ឧP]�`s�a��N�|���ֲ���,v�2�$Jد����t�0��r:����Xպr��)��RX�*Y��aMO��g��!�v����w�cz���IM���s��9�˹���d�S���t�/+�i:C�pN�T`�����:=�'�S|�juuZO��uBM��b0*=k�}�)%��5��U���簒�`2P�-��P�ލZ95<_X�-�b�^j.PG�CA����]��I�o�5�1���6��Qމ�<���~ֵn�U�}H�{�Q%X�g�{as�D?�|����D4LNk�VR/��+ ��Z
h����j��xl���^y����D*'
r�@�2-�`"N�=��"y��2!U��2d'r��rk����Ƥ���P V�r�ՋMЄ�k� �Њ۴m�F�6�.�Fa��=�6f7�v��tX8$>�~.>�N����п���į��ߡ���щ�b��������e!ӲLvC�U���#%g�꾋T Ca��MQ�T�_1��utA��
������x���R�ڐ ZADơ��'�HLy�ixQ`pq=�ZEQR�|�}R�r�#%E�a�?�oJ�9�������g-�`�ٱ{��ʈUԑ!��z�3��3��fI +1W�
�c㩀�g�/����beTb�DQ���EI��>�x�Cf�hOVZE�����k}�l6�8��q���9d0Z
�V6�b��Jn�N�i��0�fVk��F�Z=3��4�8edf�Q%Z��@��n50��VD�:�-���Q�2t�[d�a���8X�NH1��=|��|Ӫ*��i[Z�D�&���8��8�eu�/��F��~i�~��]�u3��>���O���)���zQ��gΤS}���];�c��|�8_���k�%�; k/z���N��L�A�;EL�B"W�=���<�F���o���~�|�����!55r&���oO����s��!�����jh�+����CŃ*,�� 3И|���Z6��S��=�D���G�牸��g������o�ŭ�}�7���6�\LDs�/"9$�{���drM�"��pU�f��łk��T����=AMm�>m2�)�J�Z��j6��ޣ=b���<���y�
�`R�U9�E�r�r��w�q�\v>?_7�x/�N�3�Wu�ߔ>d��1�N�\4��<�Ͳ�i�2ŴdR=�Ek��Qܪ�0)�b��z�Lu*6�R֣X5&l�����BY��
`
w+�H�[�8��Ɇ[�ѴD#ܪ�D98�hfj��ib&(Fs+� `�,o�O�V��.H�K��A\kIw��tFF�@�z
���dǫ���i2�5:s�T�^]n�>�bȗ?鯒Ԁ)�*��œ�s;_�JP���!��uPţ�N�3a0����x��3"t�|������p���/��.�|��O�P��'g1&4��:A��Y�����L�d +&6��<$�����LA��>;��uG��<*K����6W���q���Ƣ�M>��������\�q��qIt����}���k��*bm2=!2�A!4��It�����4�ua}�P��0��Ⱥ�9bi��7Ϸ̷���,m�.�zC��m���2����Yv[��螑����o��aP�����k�8��l@�E�q�����&���6"5`i�F��4���D�uY-��Y�������N��t��:��4��#yp��{��ړ&�z�Vt�fŌ��3c��4�-�S*���X?C���_V�ǟ���pm�۷�� �A�ȈP7
��.~���r�ҀZBNjzgH];|I����|�1#��!��t*6��/)�VC>���z��S�Ub���H��I[��7�Z�4|s���i�1K8���R�&�ֶi��``�ü��\�钫^�����7�r\~�榲䍏J�|� +S.<�n���x�w�>1~��� x]���s� +��SWR��sՙ��͓ؔ�Ы��P�D�BL�ܫ�5�9��s{H
<�����Fo��M5�P�FLe<����O�|E+���{ h�"���X,#�3�wBK�3�!���Z� +�@Ȭ�>qD[���n��^��D��jo�����2!Cckw���J|��m����i�r|;y�mW��w�u���;/1��A�����˜Ӈ� 䝒
�Z#��$�%�U�g4�>�Qc�r]��L�hU�p��ŖϤ�A9�V���'����sPJI���˳�̯�:�;O���\�h-�ܡ�������=p۽�nj|�� l������Fc�5� RG��9�Gu������o#틡���J��4�d�s.&g�!��Hˢ���s]�E99�6rh��}�\0=h����h�'�� C�Fd9�j��E��kh;/���^���ԓ�Ri���5�J���ɧ�Ȍ�N�/6���a��f��g5V�U�8�e���������f~f��{�W�Vc� �c�����W̬l�ؗMl��A4�>�#@���Y��_�?�����%:~D +M�a���-��6�ҏ��˰/}Q�'�/�m����$u-8�&4�)���\�5��5!
�!����*C��Yf"��g��t��&����>m��u-t8����u�a�칒������{&OT�M����_���r�8=��.����JN�E�`V5�N��^�J��$"'ٲD�~4 +�I$W�ԍ�A`�g�c���)F��Z
&5=�"Z!��7ޤ+l�Ш����9�܊C�a�f&?K@L�}��i�
GmPlH���n��j��>ZHh��IQ���6\B>�)��T�k��ӭL];���2��Y씗UZS�K93�h�vЮ��p�Ëfuw]��xWI0 &�Ϗj���B�N,�;��.�=�Y[Q6v��/�:�����N�ْ믮 xi���)B��$���HQi��,QB�y*:^x@xB� �wS"�U���&�+��m�eJ��gC�+�&)A��4&�����ĽE]��gM�F&_阮�ޭ;�m�>ǞK�9�k}���]ɕ5epgO��*�Fbv�c��P`�2b��ͰB�zX��9�/Ø�<� +zf�#��C�QK���XV�0�e4}�ai@�F��3��(���퓬�暿����=xò��+#sv47��R��'+�6uW�6�Ԅ���^�4�]T\4{����)т��B����R&I`SM��M����J�Y�Kaw �0�sn�#�-������fXj�9f�3�n��C+K�ZBd�����WTP�u:����N��t�j�&V�1�k���(���^_�I*� Wʕ,1o!��hL�+�=�� +�������d�ۀ��l��=��`� �`�a�O`6���K���Q +{����NM��Po�Sc����a�l^�1�+d�{�d��IP�� �Iy�Q6h8�Ն1��px,.?��7 ���M���/?v>}�Ǔo���M��ě�A|��'_Jv%;�O�1��
>}��Koߵ��|�!�#s�c
��A��:�{�X����_�by� +�z�t�֮���Rr>���c�3�D?�+r�T�S.QH��A.=n$�#�ar��Gz|-9�R��F��]��D�y���*�]�z�I��wtO����L�&ZG��(��9����\�₨h����덓}~���ߗ������f���|U'M�Wb&�?Pzn��������b�D!R%�2�N�Z��H$$M=@�!��c�SY��Ȳ�g�O����<u��;kǢ}1=o��;�~� +N0�/���-&�pk��`֭���]�-� +�׆Ǭ���3\��r���`�k���]w��;��/��c����#���ҙ��6W]71T�����ٝ:�(�PV�V +���m2�� +uբ�f�{:J~�~ш����_Z��'Z�ǑC_<8�g�)�]��ǑKۘu���^��
��
�7+��A�_�����z�~��=u�9
S��͘�')��B�B���� x�F��V�R"�I�3���1b�'�O865*J�tu������%2���_tp��Go?J��������L�y��t��n�� �w>1w\H��o��K�F{�Ԧ�+w�����5� B]�s����`� +����e�Q<P>���=�8t<1��O8(`���Vd�4X�`?�'t=x�_��_RL�) +@9������~��w���=�^��輘�_@����i�N��I������r0Q��F +�������D+y +����� D�$R��~���$�BMr�N��0֣�������9M+�-N^4��"�Р�/깾���wp����'Db�P�T�TF�#�2P���
^<�����Лg\n��˵�����jM�d�X(?&a����4>�Y��F���e��?c�RU(1��� &�@Lq�D�#Q����AC{z1��#lɝ˗�røq�~��٥lor����(������>���3s欻�ܴ孃�u]j*^r�
�~�1�z�=ͭG�%��ٝ\cS�JPP��8���>��1�����,�i� �6�]�����7��{�� ���L�8�C��<�$�Xu��(��b��E�h��Ҩ�<��!J1�a_�aO�-��T�QJ�~�O�:j��і +�?'���I�)����Wb���^���%�Ȁd���������<�^��Ki�V�UJ�3լ9��4����54G���Ϣeq�F�Ge�yP�-i�P�R'xbo!\ˍ$}&�H:Q�X��1
�ըx�?K;��~bV�L�r:U��aۓ/���o~�ܷ��쥞=�k�ω.CS������m��M`6�P4����<bb�<�S����|��!<��J�h���E3ʌ�8Rvk����,�`>/]utS����,�k�ak�����5���8u�ļ^��wM +]������q��-X0���f�n��y�fGKZz�`Wf\(�`�K��Ne��,�/�����6,��F=�����:ؠ��`MQ�w��'B�!c��|��/+��-3���%�k!*8�M+�ف��� +:}H1/
����8���@���oIYW +��7��ۧ`��Z��s]�)��:E�^�S81� +�4k���PC�5�L��I�N�QAW��\����8A���$��T$�w�85oPj@$X��J^�&��n����}������<_4�����4""rb��"{�ҳ�^�~a?�0�Qq��H�1/Lۮ[�j����ܻr?����K�`�GU���,�z\`P��G��WS�Z�y{�>�.�n�8.�=l,ѮVQ��
3�4&̛����uzi�����OdOb�DŽ��q��a~��=�{�9��,�f�0�B�L[�Ltc,�A�B�C�YZZ��e*��������8�0�h}��GG��3�e�gc5�_�xVZ���v�~�j���nl����|s�y���l��2����hn�ngᤎ� +��=�f��~s�g����t](v�:w8'�9�p�muN�W��y�&e%)��ׇs+C6�pJ# ��^*,h�68��A\Pp�F���-Q#�� ,�+8L7a�@HZ�N-�ם;a��������S*��ׄ�n�sͬ5�"O3W=oqauF�,ӏA�H�ٷ��b�`߲`��Gs�죽b,��J�z����348 �q��ZZ��"N`#�0Tޥe���c����T���q ��yҔi��wr�ց�⧞�}��t�M�o���y33B<z�6�jY�=�#������Z����O�O�L�-q/-�}te��lnE��tny�`��Ej�Y�k��1ty4���&=���:U�1e����L:7�f�}ʦ>%e��8cl��HƋ���CK��x]^b,���qqq����|l�%�Fz�@��g�C��SY�-��y�l��/?O�ɾ�P���Yv�Tڀ�d�m?M�aU��3Rbg��u�@���XW���\8,�YZVb�NS�@o�m�=�wX�|����� +O���0!�fȩ�k���uB���f��yS�cr����E��wL)��Q�*�0lg���� �D@�`~2�l���Z�N:o�x�� k�;���=w�'��^��:�x|z�x�%sJ�Zc1�����ܽ��ҝ�u +ڧ���R��M�m���GC��M�Q�h�7ɰ� `6A� ȋ�P�N��h���=���gaI������,���^gǬ� &�sQ��������s��6��*@�`��L�Mi3�~5:�EgNHb��x����0l������jJ]�Z)�\�@x'��Y���u����{��G��˾�p"��Y^X��3��t�J�Rp*C0-n��0q�OLH0�+O拘�� QNٓh^ɑ8t�zmP�Nk�i���:�v��ڵ4EK���H�Ic"�&�nVSvߒ��Vk"5��HCt�:�Q\�*54]C�`��1�@�q4 �'T���Mhl��ł�bb
1�B�6��Bf��=�ч8������h*G��1�b���y1�1\LRL��D��R�Q���xJ2�!��C&J6��K�MRvP����]YI��Կ���K�A�\��s�)�� +�0��G�}RaHpU��X�'��$�L�V���X��j*�YZ�]$��Yq/�p�)ܠ"�uц��a�`F��44��4�4T�@�ʠJR���HزtADK8^�h��nZDI�F�6�iq��D=lW��o4K��S�����(��n�z,98��d�9�qT2�"�`���n)V�{.�����~��x�*���i���f�~�����y��f��і���o).�W&)�@�%�� ̸T�� +f�� �tx��ϩo�j�Z��b�c�Seq�s�'eГ�j\N�.#�s�y�g,�
��qq3�v/d�Щ�%���PJr~G=�( �D��RJ�g�L�3h�$(�8� ����� +h��Z�~ +4i�8���� $��8p��\��n%�ǼO�y�ຖ��>��$�����"������bjZ�-"S�M�S�j�W�;s��o�,ȻkN����>Y��o7֜F�J5}��Cͻ�f 5C��G��b�D_~)�-s�q���p�)^����17���N�ܻ1�ʹ!��D�]��`_97З ��+��l�5H�����\����8Y�*�]��@[)O���$m!�xI[�˓�}��p�#F/��-� ��W�����q���j�zPS�ݮ}�?%O�X4$#dK�������=�G�z.�ޘ���1[����^���f����@r{�wR���tO����?e�2~΄�����%/4? +��]��������4�l�Qx�K�������7����O˻F�h
�K��J
��_0��]~y4���0F�h
�a4���0F�7 3����P1FÿuX-�f����_)T���+/T9��;�1��Y�5�5�ԼT�Z�[5�kޫ���J��\m`���}��S_Q[����7Lk�h����_K�-Ƿ>29M���2�o����y�y����j����M��.6�7�m~{�����>7�\KA��[5�����l�=���Kp�/wͽon�ܽs�s��=���W�h��ml[ֿY��6����1FÿF ���\�<]E�d/�q���C +{���0� a¶�ˤ�.F+�r�!H��b���*n,�iZ�݈�-X�`�nM([J� +�`�9�>��0�
��_w��w�؋W1�£Gb������m2͓r�.���(H��L+��y� V_��>�i5٨PʴN������<�=&Ӕ(�N�4G�L�$1�L~eDk��i%�O�� +�f/�Mz�s8���l6<� +��F��W���%���J�^��k����~ts��ֿ,�d?0M$]�؞w�q�'�@������g�JM%K[FXUENJZI4�=�f�.�y�ć�ds����wV�Ν���](��^#�a&��U��/��/��T���Ep�Ɯ,lc1�f��Ҙ���7/[�y��4��u{�5ZS��+��3;��P���/1�痋 M����m��tɳ谟~������彽���~k��_������gvˣ%�v�3��} ���+��~�<�I-�R�q�}�b!�+���?�?|V���Ny6��VL��H?���8�w�~����g�k�'{�w���:F��o�gi���\�����k�/�fV�fG��r
�C�GN�o�{�0go'�����<��BR��L�j!Iݎ�H%{}%G�'Rf�=ދ#��'�wl���on���Z��#}z��ЎK��~���l��-[f�z�$��i�.��D��J���9Y�ǭ��w�*��ln�N�yn���vG�uc�Fi�N����Z�8_H��.�~�U�����Y�=��K#IZK�����J�=��d�f�.ʄ)U��vv&�i�X9��CJ +�h��S��f�T �p��x� +4GESM)j�"=.����-B��Є_]��>f(�S�:z{�3DK�j9�@��u��D�۸��k���H�,�ϫ�[��"I´v�z�v̘~�Cu��(A�Zqۖ0˻Ъչ���i�o��H��#��Nh +`���j[��e춮�/h���>�tvu9�7dO��-� ����Y^J���=E�ٶ�e�Ŏ��a�r�f�X6��U���L������������9�[r�V�g̖�� 8�߶��m:rX1{�XL����`/0�
�-tY� +V��?�?Ͽ +�B(m�#�Mj�N��<��#�Ņ7���mB�R�r�?��'�!�
|�\˽�� +Ʉ��WB\��!�#ӆ<��SN���Y��&\9Ǿ�z>P��}�{��\?���ܣ@o���1��>�S���A>�%<�� +����@��=@� �@�^B���OX�Ja%з��A��@?$<�fa3�[ULT�^1I�t�b2���rB�JhWY���N��Y�t�r6�-��[�s�nS���S��T�����N�V����
@o�Eh��݄�p�c�R©�Tw^u� +�Sݭ��T�����*�VC+�V�2«�kԄj5:�k�4�@�i&���!�{5�>�y �5�����'@�ѼN8������cH����W5���_����k����A��Z�=I�����_�^�Oګ���Y�'T��&�.F��l�|�o
�v�^z�pA'��
�N \pbp2�S��Bʴ�i@�� �����C�GP���O!�J� 媞y� �G�7�~�zP�;�� �dVA_�ZT`%�H���: +؊Y&`�.l�;袙�d}�G�~���,�D�X��"��l��F;lYȶ.����%�D�3?I��iIn#�����T�N�Ǧ���V����C��{ �"�$N��$�ģUY\@Id�_ +%�7�������L�ͦY"�2����H� �x�#Q$Q� �=z㈱�����G�>���1H��6W7�"4",FhFp
7!܂p;��#Dx�Y�� |�gry��_�x�b΅p%�{nD� �~�;>��0�A�%��v���+EC��������?�N ����)����X�r*~?\p��o��A�-��3��$�LRH*I#�$��X��� �2��I$����"2��)_��{T~##����JD#h<M�9����J�@[�j�=t9]E��Mt+�{a�=N_���%z�SqQ\2�˕q
\���sn�n#�"kZ_����n�C� +�9�-!T���,�H����"a��JX/l� +�^�p\xQxU8+�. +��O�k +�P)�(��HU���U��T4(ZvE�b�b�b�b�b�b@�WqPq\��U�Y�9�E�%�'�kJ�T)��(��LU�(�%�Je�h�ve�]�`�ڤ� +�P��؏�Os�%\�*K%\پ�����2}>X��@ W}&�ɬr ����l���s ���p� �vD®�^��J(BW�"JpZ���(a*�O������z ?����جܜ��zs�������S�/m�nɑ�[ʷطܷ����������}x�ë���[~������fI��[mݴ���w0.l��H�#e�,�b��yd�#o?r]��G�O���_���?��QQ�ܣE2~-Hۋ�����ǍR��nL��+6a,j����������˶��/�~��m�om�{ۯ��1aG�;��xpǾ��xg����3og��;��瞝/�|{燻�]Q�rvU�Z�k��w��������N�=uw���w��}j�;�?��'}O���T?��$�׆X���S�����y��T�S�O5<�������O���#�ٿu���/�?����@쁜3�?��t<��A�A����|����~~(�P���C��<�С��^;��a�p���
�^{x���s���O�>m~���5O?����z��#�#�#eGڎ,=����G��tT8*�z���覣���9���Ϗ�K?V~l����:���k�>����I�g��x��OI��|O����Ϟ~�����d����K�oFZ��''�Q'2O��0K��8v�z���.�}ᢔ��/��╗%i^�3x���φҗ��x�����������ߗ�e_��˜��2��q��se\&�ϑ�]�Ke�F��x�����q����2�(cY���K�d��e�N&�8S�y2.�q���2�/cYΓ.�!�2��z�1���'_��iy������5������%�����^ � �� ��,�72%�����5 �}Wd|��/J�?+���`ߌKl��Z.��ᚹ6�e^�/�JX>W� +8p6�݀Kp] ���EX�zH���Z �b�Q@�A� +!*p����x�5ڻ���Ǵ�0o���.Bu-��.��5]��_w1�Z�t ��]�{���9�V"�-hMȖ����Ю��紻¸0=p�65�2lmؙ��2�
o�ag�'�_���~�]�{#��w&�3j_�ˀ? ;=?�<��klzlW�c,7�x�[ag����xwؙ�⯍��|쎱�ƾ5�}1T,g�fq��U|R|;!"!7aNBW�ʄ5 {N%���Qbhbjbu����w�1Ǹ��NR������ �$wR��J��
�ﰐX��6�E��M��`r`rj��ɇU�?��M>65%>�<��T15=5��WӒ��H{9������aS!�Q������w3rӒ3�3ҧ�Oe�!�!�H~��z� +�|N�s� H5T +��u�w��AC�P�H|#cX^;���T8�����v��r�AN;�i!g����Q`�&�����AV;�jY� �d���v����AV;Ⱥd���F��z���Q$��w� +�>��3h��!�2z��Kx5x^�����@�P � Tok���j +���%�l7�F�w������/���תt�U�Ax��� +S�a"b_��}]>�u�|J��?F�c&�c&���'#LF�(��k�DȄ<x���x�p +5�B
tWx +�<��n���Z�NKb�u�p��N�i�M`�س +^@nr���!�Ú��o +P���S�Fk�o���Q +sQb����<��G`�m,���7�5���f�)_7Q�l(�o����P.pf�m4�Ì�aF�~��`���͇��1�������lp�i�!�, +�ag��bT��>���t�Q_��&?þ�gؗ��/�}
框(�E�%��>e�L�6'J1�&���_��w`��I�!�#`Xȏ�Ĩ���#�?_aPď mԏE�ڣ�M�=��/�G�#6e��{.��z:Yp1_BG�L}���˯|�E~�M��I����������D�oB61�M�if��_�i���K����:��
`���)P���l��Q��Gh�RV�L����k`��BZ��rHa��0Af�q1�!>� +�O��� +.������]���BKؓ`���'�Z�c:�Qkj�R7Շg�Ԛ�X�f�#�Q:�������i�r�5�.�uc�vtgc>�ٞ��{��Ŕ� gr�F��Ċ�%ʞa��V"4J�#C%�
B�;D&D,�}X�"����h�mI97�.��#%��^f�[؍��Ŭ��͈>a��5ߥ-��N��tGW�R�4�t=$�Sӿvb:��=�=��r,�<�;n�q㎛�<�= +� ��$v^7>�%q�:XN:�~��Mu������ޔY�m�G�?��67��m��
H�p��#��� @lp3� +��g<�:ع��E?!�k�mdz�B�
Ыz�B�Z�U�j�W-���^�Ыz�B�
������C����[���_'tQ�NlV~��CKuh�-ա�:�T��N�A�:hPw�N���:Q�X2�wl0�-�}�<����~�>����:�[4F��B����{�V����+�v�S��;~[�8��|Ԝ���ՀK.p�.��%���<�Q5xT
y�#x����M5xS
�T�/-�����pd�(�殧��A�m'�"絶��ȯ5����s�����tzB��V�u�)q��v�}F������sY� ���w?��A*�Du�_�h�u�DMt��A.���M��W6w��U
���7�č1qcL�؉aR���;�"�k=��B<,��6�
r���C��Bv� {�����b/�e��\��y�7po>;G�{:/�t^�i>ƞ=�{����bO���C�u���y���bO�Ş=�Wy*�ҳ��$�D=]
���g������ +�R�4rTH2��2��W�!<I|�S���lx��a���M�sD�6�$|Gx�`���^�'|�\^^!^j�M�j�,�� WN�O�'�Y���@8\���u`X )FF��BNT!��$�1!L2LW +� +�� +_�η��o��oӉɾ�u����[z��-�d<E�y��ā�e�e}++<�}~OZ߀g�}����Y}g=s�� +����}sf!�\��a��r)��@��H����0著bd +3d�Q}7SD�)<�N� N��kg��@��QT*h��D<��[�"�L1������Lq�?�qݟwbؿ�w&l8u���zc�E|�ʿ���7���_һӿ���Z���ߥ�&�����K�%����o2l� ��R ��H��Yރ��>>P̠��2�Z��� +�Z��7�Ѿɿ���1[�1[�p1�Y}W0���c���(e�[�1߀�(:�Ż�)\�)*|q:_�_��W��yF��+|�:�r��{�D:��|�8p"q`�+��\�ŝ<d�n�?t3���1��(p3���2�_��o�Ő)��N2��f��(�+��n(������7"E��0G��d�Q�1��{!S�rxC8>��r�7�L +�.���ޫ��@|Ⳙk��fܓ�u���A� +�PP��F����?З�{��
�ndaK���5��'"�Z�x��0�gQ�&��<ט�[_�~��Z �{3P�{v>��r��B��#�S����;�A�[ɰk���]�V1��L��L��7�A�3T�f2�|U�ßP�?N���Y�Y�> +�lG���N������� +7 /�I�Eb4�5s�J3O�Cb5�j�}��_�R��(埣�4XI��|�0���]'1����Ue��8U.*��ϑ�F"kc��a�$���I2k/�����K�ti�t���$Ci��:n��sw+ ���N��g�^@VB��(����x��� +�oL<\&�}�v%ђ5��ԑ��"��#]�89IΒ���b�D.���fq���JN��p�-�V��3�q��_���]�ZNxy�|AΓ/Cʑ�l��3�^y�|�4�O�!�CdYΔ���r��K��[�YN�%H��V9VvB���1�H��f��:H}���˲�/o�<+�dw+:O�k ]�+;��Ր���;�䕐N�%���RH�r~�$����\�W�չC�鸜�����R.ꬓ�@��w���HL��9ֳ���J��!�)g�rA�C:w���9�����WȸN�<��(���ڨ�c:��8V�����(���k��N��β�a��{ ���u������u��o���Ų/�����W�`_T�¾�����Ú�4����kf�X[\<�NF<75�e +�\%��5J��� +Y���ȹ�\(U6��"R�~9׳���+�bi���y�T�F�u��Q����s�+�&C��Xjя�ˤVC����ݒhH��j�`)�w-����f���0�\��\\�PC�Ԋ��%ٰ��Q���.C��^�Fz5r��$�a ��!WC.2�H�E�V�a�Y�*q�Bj�A�J�S�4�2
�fY*�܅>[h/F��K�q5��t����T����>K��m8`���v[f:p�#�4�[r��۲ +��Pc�����\��g��e�#�pұ�p9�7[VI˶���g�@��f�ו�F�iذ���u\w��1�3�j7��zvK�2�Ү�R�!���(0��E���ri�ᆥ +#r��td�G��%�o�_�����8icHC�ӲDZ����R#�n��冭�MRNÈ9ݱ���_%�,���F�N����H���B�[�.��Q &[v8j�4s��V����`�d6w2�Y���Mb�ń�s-v)-8��<K;�.�쓜�"��(�a���l��
7�U;왍��R��b*��-n��r�I��bLWZV9�����͆*�%`E#,�tlm���v,K�)��j�y�N��0�%�I\��\g�*5�dp��@���
�[�%��.����bU9�����$���*6��PC +�rC�[#�ٚ�q�<o2ؙ즲(QY�`�=*��}���}zٚ�8 �\EzӶ�:M��XӠm�u��6H��e�,pc�u��#^��dr�1;�k��p�q�qT�i]��?�.r�4���!�q��1���z0G-�y���j�c]�؇y](��o49�ʡI1z��0�B�u�TgU������
���Op���)����ۘ�3����c*���ޘI�m�c�v�3fYK����R�1y��*�R'1�3�HNc��#U����� +]Ll�m��b[l�2�c�V6�b�LS�� +Ƒɍ�����l���LKlÒӴ�8ئ��ζUR��V���m�
&�Qv�1ӴҜ�F�nK[�1���T`�����5��ɴ��3��ڂ�����#n{�}X]`IrV����me�{�o�נ_n���5�Z�+��`��b�E���]G�q>��e��ڔn�a�"���K��Bk3,_l�Iˬz)Ÿ�j���V�c+�&�����V�l���S�0bu���;rq�ˬǥB���L4j���d꩜i�J�[�1Vc,�� +%n��7�Z�4�z�eg���^n�h.s�@�װnXoJ��:��X��l<Vd��X!�b���tU�T'y������E���j��s.�<_�l��w9��\��%X#�\�\dl�Mv.6�m�s)���,A=-�Rx��jxxB�z��7��C�����7��M7��GM��[�{w�����T����w���Gv%�M��w%���v���ۯ6�ڊ��]����o�a)j�����^c^���B�m�wS�.s�,��mX/�(�0�G��:7���{�!�~3q���ծ�����]y��=�ڷ�Iܵ����3��tEؓ����u�c�E[W����3�+ȔW���s��1��l}4��;���*i8,[2���=����� ���i��T�k�n՞4�&*�v�$Q�vLJ�iL��~��=����{fb�ƝߵԶq�,�fk➹�Jv'��0�v�N;2Lq��Mt���ѱ۳�ΎP/��bsJ�L:s��B�cFa��dp� +=�3n��;+�#��c+X���2�)� ��Z0_�D
�-8oKg�L�qڲ��E\���[�{q}�pɖ�lF~F'זC��}uF��W��KZ�%�v��:��$C�Y��l�ڭ�:͡+f�
�����3�[���]]�z��x�Vz
1
-��E�mf�m�ϔ�Ƴ�2�q�މ�Yc��ϰ��u���D��h��X��3[hO��[�"[��4��`���t�8��9e�v^3��;o +p�K�`�jm�aOX�q˸5,���[�Z��B�[t��،�\?b�o�n�ב�W<�FvP/;z
sl�m��]j���&�blM�v�m�Mq�q�kLO�qiiKi,����lLE
n��M�[k[���&�e��lֶ,����L6�ڜ���l\��l낗��u��7�m���[/��gkDK����*콵�٨��pkG�9�M�Jw��Jw�m��)X�� R���|�^&�L�2��LW̶��rȱ4ݱɐ�����c��N+���d��b�Dw���L�{��6^\����<��#m�8�p��������+�[�?t�CC��q�ư�!~ 2a� �0ChB#M�u��M�cX��z\�|�8�1�L�rk\bk\�b��5���a]?�?�ݪ~�y�mu2_�d�ٜ:��ޭ[��u��M�]߷Ǐ����x�/-�9r���\H_ڷ��+B��\�ݼ|����c�û1���7�X�����]o(�{��]��1�<2��wx��78��H|_�`/�a����>�`2~���U���#kq���MƝ������/o����lx�ep�p)�GR���֣
���L�m����ٛ�ʨ;+g"}��'�=��������O���r�{��ξg���S.��33���� +��x���=�'�ۤ(�G�Q�n��t�H/+���YL���]l�{H7zo%�.�����{�[�N��m�>�'����-�����FF��e#u��|$�d��{��h����߽����z^�S��w5�s�����. ��,�������Cc�c�cq����G�g��G/�̚GoĈ�>���#,b��[���G��>��F�����F���s�%��C)������J���c`d��N��
�9���9���O~���m}�Z��wV��R���6�Ϫ��h�P����;�7��?0T8��*��*��*�V�O��P尧j�4��������~G{��4;;����� +�� +{�z��%�*���C���w�ߏ�d�'�#�x���H�H����O�+���F�S��x��DwD��P��'j�Pq�#Ƌ�b2�֊ib��)�b�X�y�X-Mb��]�.q{�a0l2lj�7��Qt
]@���@h� +�5�q>1+'����1��ɰA���\�Mb~6���*���u�]b��+���~N L�S�8#�b�(⢸$���ipF����3ι +��t�j1S*�7�g�+&�Ib +ڈ�����?BUֲcJ�b�s�9�t�����UL�C�B��s![B�@FHuH5|H���H����9�p�����|��;G�{9���s`�c'܇��)��g�#�=�s�}��Y=��tr;�|�}�ϛ�Y[��\f����)����N�k�3�^n�ʬ?��p��!������]�����ɤ�M �k��K�>���Z���.˅��zfٮ7�W����20]d�ec6cm��+��m#��C�C��ᄂ��-)g�2��c�+�}�o[�7�dIV^���4�
���\�=��sYFf/&���p� +l/���3�w]��ZWA{�RN�.��sY9?�,�G�_�/�>;"� ۏ�$�����>�|<��~���'?3�ae���6���~�(k�qU�ǻ��+\�����K����C�?��w�ۙ�P���z@��H�m>���v �uۤ�N���~#H��C��_ݞ(�
W}{���}-/K�?&K���Ҟ�q�g�~��K���j�t�j���ld�7���i/������� ���e�y.�qy��]Gۛ8�'Yl;���e9������K��u�}��t���p�cj��ih��4�-x��=���q���t0:7u���2p�цmS�? +�g@��2p]
��{�c�<&r�>�w�����^�f����3�^�h�T2po�L2���e~2ow�g�?�Y?���<�佱Ԟ�o�N��=��y���y�柒���3t�-�u�zfU�0 FɱȽ�sQ�'b���X��9�Y�9�Yt�=K�|�sg�w��+�܍�D�g��y�h^�un�;�9ix.���S��q���b}������ �'���~z�>���i�i��F�
~��%���{d�K���Rz�]��K�W~��s�ۡ�4�ߐ����7$��oH��ߐ��ݐh��
�&�ݐh�b7$�TvC�y�ݐh����^�G�TB����k�[�,�ˤe�2m���Y,WZ.Z�-�E˒�d�ܱ�4�F�����H�hK+~�aZո�qM�:K×/5�o�ؘӘoi�475�6nm��<�Z��K��#{8t!u���/�^�q 8�:p\� +o��v����7~3x�=����ӰQ{V�c�d�Wؒ@T(�m�DI�N�ϧy������B���ocdc4~P�I�dc��e|����j`�K�D�T�X�
jk�/������|=Q���\L���i�cZ ��Bx %}�!=�b`;�8h��Ih�;0=ӘP�ß�H ����m]��֬Ygk� �V���a�uٺ-ɶ^[�m�6lC��&mS
�)۴m�6k�h�G܂m��-��T04�"٧��Ra[��������*K����%�� 뱟fa#�¸N!J�O�V�K�PŸ��R!�\!��*�m������a�ӌ\t�B�?�=��^0 � +\;U�v�=ǫ�i�R��L֒Q2�~�Tɯ�AKr�]{�}���K��`x��_�\���'�(K�2�>��b��a
~��0g5n[�=ђkO�����3l]�L{�� +{��^�no�cx��bw2K�]�]�;��оǾ϶�0n? D�{P�hC��@��/�����(�}�xI���`u����ߚ>� �.��1E�l���"3�rj����s�3ƞf�p_ݍ���`�Y��z0�;&�r�����|a}�V�
����a��q���%���¹���*G�mQ�1v�Θ�p���qvƋE�zև���¤b=��d�>�]��J�Un��mc�^6J�~��m!�������_6�V8���/د[\�n�M��v�o;����w���v�u��<�(G�#���f��.!���TG�c�#�6l�����]�<�3s9.�aB���罣��Q�Hg��t�x���܋.8 +
�f{�C�g:ZnG�������ia5�v�f���6������l�pǀc�1�s�q
7��h�ױ�rv3�L�X<D�p�7�3�km��NBt�]_4f��Lv��l�Q�iۂ���bvc��}˾�Y��w6 �-N�����������<�<��s����8ZS<�.���tz�MPn�I_�d����y�y���5���ﰏBm���o�c�j�A��9��<���c���)��:���va���*b�ޤg8S8�(L���o�ה�)ɔ��P��J�N���<����+^�݁���C;�~-|�K���U[�n�2�/i>[[P{�C��\�P!=W#�K�&� _!�*��e����& ��jE�%A���(�d�%�W+xK�J}�\�1�_0���)�~m��G�s�BwY� +�� o �_��bȲ��v�R��m�xy+:���7)���T�VY'���>)T�P�w�4�r���ZʽAڗժu<�p�d��J]e
�C`�g�X(A鳲��\ +��W0�e̝�q���q��Ls�|�sB���_%��+�������l,��a�j~�J=��B��ܹ�pU*_U�)}����ğ���o�<����707�kU��������Ɯ��Z�<�ܜ��a�P���e��Xg.D����� �CX������� ��P$��b� c'��g�L�tS�!�ו�tP����Z`�}P� +��}2�m]��U!���_�u
�>��y��� �ת�)s%� �!��k���Tn���d>n)�@�D�����} ���W�jUk�ya�V��R>�#�� +Oo�-��~��� G ��%�W���x��w�C�w�#-;�\��m��;��ք}��~ �ç§ 9�шGᩈOD|R���%�`+�ȼ?�(���발F_=�-�5�OG� +�ƑY�#��G��� +P���Y���נ!�IW@hdhd +| +�� +�[$^"��Ǡ��K�e�.�b�8y�H� O@ y�< [�S�)(�G���+QF����*9@@9�&���!=��$�u�Kz��"��
�G�����9LC$��&&�PMF��/�1�%�d���u����A=��|��=�{h �%��E#�>�>l�o�h"? ? +j�@�"F�ӇP�̩fBU̩�B�E.�� +�� ��H� +`�$ +�-wsY>9��s�N�w��������z��e�Pom�[N������%�)�}�v������/��?Χ�z�y֖�X3�������-�y���0a[��y�?iK�ǩ9�z�y̖!��ׅ)[�Kq֛���3���,;�ӯӿB����N���а[a� �B�A��;AOC�������6�w鰉υ��W�;�7���p�|~6�o��x3��|��5�k +n��X�5�ㅜ����z�:i�f�u1?��/\��S�i��&�u:�K���Ʊ��[�I�d#�B�^ƭ�<S� +�q1�� }\~�J�o��j�5��8�jl-�D>�����? �Ǘ��H��
��U��n�&��~P��w�4�&)��Pr��pAC�)�4��P�G�Yr��Pa����ԇ'>%~��Y��OUӈ|:�v<i*�e��A*��K�����?�Z�UM$֤�MR�5p�$�%���+Uul%�
�Z���<��y��F<���*�^����WU5�� +�
:���y�&VU��ӵ��F�¢�t?�����On#������K8W�P]�F>E�,-�+Ux/�YOד��T5�q��ZLU���BO<TO3h��Ƅs��r�� +�?�b�ǩ�i��� T�5���؋)ᚪ�b���2O�58w�'��Fls��U�MC)&�0��2L�T��8�H1� +߅}�C7�G�T5N�ݷ��3���*�� ��8�A����|W�3�&IU�g3� +���_���
#�h�6V��h2� �Xg��q�q��Ư@��gf8��lwJ��_��U�<����2��y\�>�߮���u.��sY|����\�G� +5�7��CM���L�99�9��+�K����R�Ӱ�}6��|�V�eӘ91�/�@N߶��Ĭ��䜾�Ŝ>�DA��y�f=���<`�j����}�~M��a��mNۜ�mfsJNJ6e��j���j��j�6�ԞK�>\s��`�Y��YS��);;�zVF��m��� +�Ӽ�TX{̤�:n�o�24���M��nSz]�)�4Q{��n[���6�5RyAzg5E���FWG��� +6l���mc����51YM�Ȭ�Mq>�gOe7gO�Mq��B+%ל����,�i�|]�Ѽ�r)�<ʊ�<�m��iڐUm�P7�4B_����s5�-8�֡��)<k�)|[���&���)*��eZ2ք���IST�U�i����
F8���1�S��_�8^�܈� V����-������<�sIد�~
<j�(�`��uȷ�|�#�r�l�����ӄ���-��<|{���/��+*�i� 0Č +�+2IPa��fI� +�s��tu/_��v��
�U�b�wa:�²5ګ°�T�A.s�λ%,��� +M���>����>�~�?g��-�w��f!��-�[���O�X�濚�� �ʫ�����n ��μ�:&���y[�-�s�&B +�G�U7x +�p ��p'������8&��z<�l�����v�n�����Q�!�mg� +�'2vΒq���Ō�.9-���c@��H�+�G�D���#�#R�G<�m�nůV� +>˽#-�wh�X�+��q
����O�x��h��fB��F�~������u%n�>��1Я�o���r��A`�����Ɉ+E���>T��lA�S�7d�a�
�=�U�&?^���w��t�}�H�BE�nR7Dwy9�i�6U�*]����a]�>n���C�Q5DZ&WwW�j��I��k�:<����5:}�>JW��mE<��u��[�t��:��F��4����%�ft;t�X;�ۻl 2F|�uK�j�꺵8_u+t����-�g��O��㺓 +���cZ�1ګ���B�R]���c���u0���2��Z<gi���k�mW�K�%h��f����]��L!c���#��P�4]�rK��6Y{A�k�b����e�hOa +�Nj��65���,�<������ĺD����V1 +���ݚ�Z����w#��e�hF4u4����v\�߯�A�4�wi-�١M�x�fk��E�I�A���Rm��W�O��ػA�A[�hs]�N��p��&j�/k�9�)V�V��o�i���;��&��5״ +kh�5���[��ݚ��+˒�Lgw|KXӪ�j�(xV��^H/p���5�t�
�'��Us@�j-m��z�>V�TiZ��4Q���������j��[����@�|S��ٸ�W�xz�b̢E�c�&QQw�ߘ��8�F��;H��~v�@c��Az�.(twQ�w�`i�N/�Bi%��n^��vS��g�9c9�<v�娤��4�l��ā�X[M��Q����L���(�K�.KC�Ԙ�J�|�$��<��GJ�~�ԡ��[P2E��ø�b�#���7�6�[}q�&�
���&��?�?�$3�6U� +�`�����.���� +JI(0�1��r+X��]d�՚�)Xn�w�e�����I�j?�~��{��� +����וֹ����f����dW;>}v�ƒ��
%�B�g���2^2[��\��干�-��sIoY>⊞h,+e�g����KmN+ڲ���gN��(��̝xTյ��y�LB�HI��� ` a�0f�*F�)"FԈ�H�"�)"��"MZ.EJi��K�*E����F^ƈ�E$3w��دb���w�YY{��ߏsΞIE�����T��|\���I���ǖ��2�{s���e+���:sjr���9Z�Z��J�
�n�-_�S��%r�tI�N��LZΕɏ�k��tqD�JI��M:O��3�ꮨ/;U>[��.?Z>��X����KG���[�E|qG��7m�ϼi��-*rR�$Ն��������Y�<H+�i����w~��b�iM���$�������d9מ~�)�"�~C���u�U�8e�O��l����F�4�s��)M)P�_zS�s���l���bx���Y���gU�O �P�]_$����ˣ�|�������Ո�E�?|3,O��3�uqQ{N+|ƗT���α%�%�J6�,-�T��ds�ʒm�ܩ��V�F�W�����N_~���Nד�V�^��d'�"?�ZrEnې�h���%�1�-/��v$_����,�r��):������V���m�8�;=*����fz|Es�ZNmէ����=�s袋���N����9E�m,���������Z?�su����<J��}���=�C��U��OJL+����P�u�[�OH��}c���_��~�FF#[�DVké��n�v��K�R}�+�ֺ�{N���'-o��tqj\���~�%1�LI�_O���!~"�eb�;�Uzg��;�Uzg��;�Uz�n4k��3��M��/��Gp�?�ų��Yy�� +���;�:I�f�a�ԖR;V)��ŕ2��=W�!o� +���/G�y,,�0�ɛ�g��7�JD�=v�ol-�Q�K3_��=)�8�r������)��Z}���F'{3�?}��������짦����+�(9*�!���QO�爩��/M%u�:��Bx�^J/�Ԍ�gV��o�՚J�Q��+JyN�ji�oU|�N��ƜC�ع�'^�'�:����+��/&~5
_9Wʾ�ٹ�����~5vm�ٸs]�_ǧ���s�tb�9���\��j�I�.�S��Q�/���J�M[���FJ���*�S�ߦ��Iv?݃��=y�2��ꔿ��q����nQ%5wk�����(y�hE�Ey}�V_T��﵅%�3���N����?jh�EU%/��e�<[xW�ݹ� +���ZطhB��µg�l)�ҭS�����Kv�M/�_��k��^���=V����絿6�[Ϣ�E[��,�Z��%MEow]Tr�hOє���D�54��Ps�W��sZ��X�j�M%k�^0y4�����u�Z���Ŕ�I��i�*N-�-�M��#J��(��UE�敜,:_[���M�'�z�>3��%z�{���4���_͑��k��t
�^m<;�tl�,�RݱW 6�} !��襏�@Z��.Z�+0 ��et�ʀ��?��?=P��h����]��HӖ��:s���?A{�?!쫗�/g}R:��R�џ�����U]6�7u��=�)0*Pi���Vg��~��~i�l\�*���}��{��|zUi7gaʔ��
9�r7�nӟu�;s����������ܣ9SrW析��M)1r����s듷j�����mʵ��MƗ������>r7��9�{,�>%�C��\�S�ʩKٔs8�2w]ʦ��gVb�|vHQ�٧r"r�����嘜D}���g�Gڵv������o����C��_�k�k�i������:
��]ڲޮWQ:�&Y�[��ge�����gi^��м����������Ҽ�����@E^y`\ޘ�Լ�3�{|����~|��������=X�77�<oA`e���������g�ݦ�U�v}`3��ϰ�����ćح͉=�y��F�L"]"�N���tzN��\��_�Nl�ZIS�������uگ�7qm�迿f�÷�.��,M��4k��̑��g���n�|���\�Y8dI��̚�cC�d���Ȕ����4+em���H�-3S&��
g�=;�Zh|u�?a/a��2˜���9���%-�DRqf�P۽�Cd.�\��o������*"���sFg��j�:��ƬY{/ܖuL�'�ִ�����ǔv��'�v�1x�3ihNF��I�7tĐ挬�Cs�fd
���#iGr��=�G\�$�^���!�C���G���� +�� �����x9�ch��a=�
��S��7y�K�
ij��:�ϰ~�dd0�ſŘ�E�)vvD���A^-�d�e��f
=����t����q�v:���}F���ym��y�(�r��>�3���c9��}�G���Y��'>zpԅ��7��9��<ay�c|�Ω����~!^%l�j�95�x|Y���_� �1~��Fc�Tm9���8�-�@|e���Ӿ�ďx9�#�@|��圊���vۨ�z���
9��
9��W/э��3�o1�D��,�?�_�_�_������>^v���߯5�M�����*���7;:;6;!;%���Z9��Ж����jG+o[2Fj_[¾�����[%a���k�5ٽ�Ӵ^e����/���5�m����_����>��g���cʰ(�B������'�W�W�������/��:9�Ei�%��C+�Yo��s���a_��/g}L�W�����G�w�������<�o{�z�kő[�eG��Fgi\̠��������6�
�ۦ�
����MZ��^��8؟���!݇tJ�y0���Ux3�2���V��U��m�N�� +�3>�6��a�v\���2�AZG\b�i#���K���|v�-��I���S#N|��D�}�}>O]�Wgt�*��G\���T���+b gt��c��="z��o˸NX��>��H�����9����v�^�>����3�g��M�N���4}flw-/O_��&}C���m����a;�O���R}�K�O��y��8>[_ړ��^Z���^��(}�����:�h�����OĹ���n�����������oq��ݮJ�|���?���u��w�w�*�}Ir+����|9������a���Ydg#���o�^hz��h��k
Eo�����/��p���O4~2E���XkR=���ue�_��}(������ݕZ�lM:ń�M��?���҂��a>�a[4S��l�`�� +��E�ϋ����м\�@�!��ذ�_i�"z{����[��S�*-����z&"W�%�7B�H��z��8ѻ^���@\�ȳ����I +5=�B�}�LG�^�l,Gb�����l��0ª�5�d����.����j��YR.o����=6+(t:�w��4���ȏ:�����{��������џ��{'�T��N%�E�v7Q�k��l�@��c�y,���\�b��&�.r����"�3I����LX���k��yOjv�X�z�i�����F�'���O!� +��8�|����˸��D ub3)���%���d,��<"�LD��|8��P_<6��xx +oA� +��h�ڇ�WH�TӮ(�;�+�죍u�|Wۤs� �G�/��Y���6��ҽ�� 'Ud+��ej�#�B^�`_�q4i0���^���P�[��x��U���a.ty:� +�I����wú��Ԝ�����T��MCȫ��"{�Eۋ嬠����R�ѳK��|?�*�-��C�Av��@�g�;ѡ�Aɋ'�g�oH~�H?DfG��&�[��j�;"ߒ�-�x����������=��̅�p
��lvg�Z�]�F����I�� 2����Q�s�?���V����ﰻ�B�T��Wq��1�rGAr������r�7XR�B�7I�Y�ۀ����|s��`/��}�Bv<�"�6�P��zN"���l���FO
|Y�����������AB� +ND�R�{Bhao���Ɨ��R�z=\%t�{�!��݅�Oxn@�D���d!O�~W4L%��7 GB��f� uڠ��оh�����b�N�6��\,���<��v$�n%4���o����`OX+ yt�&%&mW���!�&��%�^�ě�\ +HݻI�I����yHh�I�o �y#�&!@R�0���0uJ�5�]B=.-bZĸ��v�H�9q��\�,��\��^{�<l�׳Ļ�FC}y�;�? �>��k ��zO��r���ӮB7�U��>�[{��Y�W�"�
�:IB� +B=|M���и�8s��� �G��蛑�`�p�8�#�0M
���p��p|���|��En!4�14Ǒw!����h��)��h���v)��Jh�oG��`�S�UX�>��w �v=����������#��zI�1�B��`&����:��"�\e��
����L�j4Ñ�#�j�I�� +ڕpYA)��D�[Q�M4��?Ŧg�3Y��5-\G�=� +�|���:�U�$W��F4�� +,��ە�h�����"�}N{�����e�晠�C߁f����wox+r�C����wM�n�->˹�M�b��mv�����U��L��*;G���^�� ��3�A}�gMڏJ��7�Z�x��,�ę4��ml��^ʄ�*r���V����nrG�1��^,��u>���~���&4�zɋ.=��,t�k����N��!�������II4�'?r��'9yξY��a#�2�;�L8���;��4+�gR�=`l�~����mV7|�%�/z{-�&^���\H�4���m�TwR�&F�l
��d�܉gӃ�cY�\K�DA��Kw������4�l�v����r*h�ɢ��H�S��:�k +��=���y�Xb�学�!���<��fJ#N@?�ڙ��<ӺL+2��0'�C#�� �K��'=�b�5��F�g�(i�;����ZI����>z�w}��TjP�w +� +Jx��I\f7w#��C�r���|5�Y����4K��c��k5��d,�'���p��h@S�f!�@3������uX���x7�]<PJ�?ӛf�Q�2�8���xf8.�)b*�.�+vC�N&t8��Y��&kv�idW4=�c�0M�P���
r�*͓L��s����.?e���.��� +=q�\^a�͆�1G��x�0s��Y������I�$Foi�m�V�Ѹ��ב�>�W���)
<�� �I;���0�����|$3#�}�e��N�u�]��*b��X&����B�3���m%�y쐗����;z�7~X�;�c���z
���|�$d�պ���'��3���KHO����gR���Xr��i�Mxh"�z��!��"�g�e�f{B��p�{\�#O�A";�����<�\N\�L9{s�?:��b�n+�m����?�y�䑦͋��
}�7R��� /����{�/�ٳ>iڳ���Me��ؗ��?��F��&O�(�F#��)�&�1�&�r2��(���j4�!wUv�����ý�Sa�\<̵#������!�C��8�����G��B�ӳ��<'��
�?F���sƛ2�)�Qޱ�6�2�43�{R2�x�C5�6�w +�3�v�8���ý���b3H~i�z�͘�$��b��Y�;��a���ݗ���>�d����R��x��0�L�<��%���!k�t�� +��F�D�v� �z��µ�1�2�SK�=��0�xL�=�
B�;6{����=���yZH<y��4l����NR�1�Lb�#t>?G���dTtm��9�[�E��'��<��N���p;~�B.�T;݁�v�;����kf��6�ڟ�,�k��-��pIJ�� ��)j�ClzK��ᧁx'�rv���z���@���^Jm�c���iEF��]��ǒ�|�֮K5��� +�|ͨ���۽=ܶ�^�icY���!�~"{���)��h����g���d�;T�m���]��V���"�1G�� +�5�ɐ�܉RJ���琮�L��Kbq�]3�0ڷ��=���]�
� +���r��m��B��v��eݵT|�� �N�s�4��w �np+�rB��T4�����d������Oa�s�i4-����NAއ�JB3E��k�~$�y���&
�Dv�D�Nh����#Z�w�.A�I,�UX��`�B�b�
yW
�M[���s���4����7U#^!t�����/8����z�3��\� ?l�`&����>�m��9
}7�x����LɘZ&t-wm������)���BX��Z#�� ���yGڪ��n �nO������o�2ҖO\�Ȧ{cS��<�{��y!l�f$���cC݅X�D���^�yR�~!�Z�.c�D�6�G��;:=�U�� � �d�%��� �N��FN
=)��}��~)\aJ��L8�$� +Hݩ�'�� +�C��R/epuh c�@Iap6bPd_@z�h\�xб.�;#U-���B��jYi�o�x����<��#{9��28�Y<k�}��E5���^v/����+`W�ѻYf�f��3�{�r����@���f��·jlnD�W�����W�~��.ESF�fd��ͤj��0b*�%uQ���Z�S�x0��`8F��H�r���wi-^Z,����y�a�/}&rr6?��ȏ#�=u"m �㇟ +�5�E����<� ��m��UV�g.r����C�)�e\E�<�t��ʾ�=7�uB�V����<E����c(�˱\.m^��[�"�[���-Ȓ����5ޭ�/���:_�d/���M�AˏùB������5��H�t�zB��n��9j�.x��d+{{4/��b)�'�')
Y�&zo!��;{H�a�]��� ��M{h�}�穗|b�1%�c���w�C�Zoϐ_9ԡmп��F���_�N��f�7�< ��HZ��\-y��z�e���V�B���^{yr;����4O!r!�C�!?������xރ�H�K�#�2�6֕~�^�*vߢmt����J럠�W@)��
Y��N-k�;H�I�<�Rˇ��PZ�!_�[h�z�Sx���q忙}�����%���w��y�b���v�>��f�E�y���G�T�O�zL�Y�=D�]���s;�>!�^J�4e���P���K�.֬��&k�#{`��{�w#�FF�>��]4M��o +m��Cί��[�P>�|�V��C-_�|!���Z�S�A�9��2W�%�����+z�J@N�F�Z�B22Ԫ����ڌ�C��1�~>���QB��f���rW���:��2X�^~��p0V�]ۏ��Pʹ��l��[�"�2[=NjG��%F�KE_�}�B%mZ/{2�z�F} ��U�z~�Yl��n-���z�Cؕ�ì�W�%�R{Zd�?,�~>�k�ʇ�>�R�T��\Xc
C� N�[��� +�}ADzd�����x�J +�#�6��q>�ݾ�A��J�ݤd߅�����p��Zwc��� +��>LM=i�Z�ѡ�Ų��ʌ.s�}q(J4��ޕ|�ܥR�G�|����/�lj���>�Ms�9K4ZNE·�Ṡ���Z��c�3�C�� +U3��qX�Ï�zVU���{���g���z���s����~I��#��+�d|P����<!{ȕ�I��h�/(�$��F��bZ{YQ�����*Y=��)�;-/d=)�a�'�12����h1�
1R��͌ �O�y�y?���G4ŕ>��/���q�Wc�d�.6��'���dW��/�n�d�N�k���ˠ�b��PV/���r��X���.�_�?��D=�����8%{�u-t�G��u
껰��Y��fthh��~�߰m����V:Į��M�[ �B��f�wܼ7_lު����- ��%�����Mt��/-�h�C;�[���������A�hp#܉��-��-[�}_$z�;�=I�x������w�}� �s���=_<�_����������ȟ�����\͆��(2�؟`qWe-#���߈�>� ���� �;��(ab����.�ѺJ�;�A��Й����r�"�n��E +-v2�"�x�%�&�S����̃Džv9-�?죰�qUR��Ʊ��쉲���y�= +��IeJ��G(�<t+r
yPz&��9�w���FH{P������L +�#G!���G�]p�]V_h�e��ňd1^����))��`dt���[~�Q���|
m��V]C˗;/fU�7����H`�RG���d7�bTQ�o�HJ̘��#��%�Ȭ~�!�ȱe�rh��@H���íWB��#�6]Z��dpgbC�;�Z������R���g�wB�;2ԈO�ȋEIڴ���~��v>���>�-\����áH͆�����+o�/����f���7�S��!S��}E�!�
E)�0�����033�b���4���ԋ���i��k}6п�Y
��
��zS�����@oj�750�5�S
��z"��J�>o��p���[�k`#퐑�bw���R���D6sП�S��w�)�G)Ie���wF!ej�q�{����֨��l��]�2��ZS�b��K�A=��,i�Z�B�?e�B&^�w�1�
��\�'u�����0�=$�����> ��y�Y��^X�h��mZ&-�6��I�cFf�s�M���N�yw�g]VP.-ӥZ�!m�23�)y�m���"��y;4{#��M����/C6���gh�6pf��l�3�ˡ/ی.��Îe���63;=ȡlmچêá��S#�q�E�2�������ޡo��3���1�5�PV��a�)ħk����5�s'��U��� +df7����테��DlX���I��H c�K,.s���vi�.��V+O˴��en�p�6��M����Ե ͼc�05e��f�`����h]���g{�Z�i��5��t��q͞d���m�a���>���f^�'k���-� +�{��n����2ֹ��c�F�W�ZZ���¡�������(X�0�ʌ��7�o��B=#�0�ְ>�avf�4���f؈�Y�KjXaְ�&�
��<�㩵�2R3JEY�#�*ϭn�Ro{pB�z� �߭���}�+���I��*I�yÆ��E�7����礪q����G����#`��z��V7�+��ޅ�6ʫ:j�R��!*G���j�J
��T'=?�Vij����W�;U�pX�m۪>� +=�����Ku�E�\���짲�5�f����k%YMJx�JT��|��W���-�[T��OM�c��3V�Tg}��N
��bu��M��˽GM�3�4=_��s�H�^U�o0�姪�e�����G��
.P����D�����w���D=�=$�Zڦ�JV��Xu���bK���v�s��WϞ�y���U��g�2�_�(����:��5��j���f�Go�7�6'����P�ۭU�����c�]��v�xg<� +g��p���`l��c���9)tmca"�6fܽ��=a_��Y�w��o��;������Ν�{swfCZh�����0" ""D�"MD��!"��������t)JQ�JUi"*�{��rI|y�=������2���;ggv���~wfvv�Y_#�I$SH�%١K�g;�RI��Hr�q�Ӻ��M%9��|��Hfw�ۻ�o5��$���Ir/6�Y�A��H^ yCKa�L��K(��I!Y�d���;��IV#�@�6Ɇ$��z.��hI�5��$;����i$��Dr�ѽ�^Ƒ�Lr6�$�ҵ\Mr=�-$w���@$y��1�gH^ y�/�wq��--M��ER���9��O�8�h��H���7��وd��mIv �J��t�HFY�A2�d&��$g��n�%��d�U$?�f27��Ir?��$��O������%�WI�$��r��?��OS +�G�/��K)]V�| +">��V9�:r^��C�I5�+j"�Fƫ��U�� W��*e 3���~㛖E�+���Y7��>�4�@�W��G���� 7��o���;��t����W4���Jo*�F�'��Gx
����1��I羒��y���S�f��iJ��~�~{s{/��Gxe/�����-���8�ۍ�УL���8+�bX�˚���-�Ⱥ�t6�Mes����g��nv�e��v��nF���(bD�jF�Q�hj��NFc�����8`1N���M���<���yޅO������#�?�/�>�Y�p_���/��K���5���SO��l�M0_m7��%����Ƃ-�7P�nj������t;��f�/I�eYW��=�9Y.���ayN�R��N�~�C +�숲�ݚ˺_�ceo��+{��].ʋk{q;/v� �ʻ}S�mW)ҋ����U��U��U����^�ۍ+�{�d7~���p�x���+/.N��S�~���{Яb�FlDlLl��N�b��Ώ]{0�R�/�x\��&q��e�-��w4�r�_2>!>%�g|F�|w/���?4���z�Z/>G�a5溿k�p�D�U�Fx�'nܬ���g��0*�lt���V4��٩f7�*&5Jj�����4?�ä�I?$�nѼZ���=�i>��"w�ɣ�ڒ�����ے�&_na�(�"�ER���ZLl��Ŗ�[����2�e��M[vl9�-�X�[���;������#eX�Ԕ��m)GR~z����ׇvhU���V��X��`���Gzq�t�֞��d�\�n=����m}ݵC�p/.��^}m����[�MK/>��m'��^I4��P����8^e����'��*y}����7�7Hρ�&�aշR��Zm��5����p(l��FB���5�Y��P��ٺ +++A�`L0b���� ��n�x{��dYj���&z`#�E���J$�"��#�!�p\����=`:��� +_n����18��:����_ܟ�_����l��/���x�=��0����(��o�x��+�����[�W6n���e�mg�?�x�;�+�;p�l�N����E�2�'g�?�x�7�+�{p�����kn���e��g�?�x�� +��R��0�mw�KM������D��/�c���i
����Ȱ� ���О���XhO�C{:���ОN�ݓ}S���w�KM���#�����_�N�Zt&Ԣ�C-�!Ԣ�����|�EB-�9Ԣˡ] ��j�E�}VE�����,m��w�[�d,]�u��*�c#��uѯ�Cz�|�B���6��y�0~�O�!jx9�)�)��^�쀩DO�(���غ)�m�4m-�]�8F)Ce��~��6��Ie~��\�2��t�2z�u�*,�No��c\�[7�=�=7t�kTK�m�~���!j�-�:�w�|��#�e�l�ݹ|/����c���a��-�U6[�Eb�s���a�ݻ�^�������i����&��Ug;�W�6�Ug#��ރ�C�.��Ug����Bu�L�.���*��o��Y'ݽ���ؙ�N�%c��W'�7��iv�:�`����Ug� ��U����Ug�X�5��u6ŠW���3��~i�P>���D_��M�&�a܆0s������7�Xp��4*<Bi�:�4�op�5s�qG�ĩ�5��u~�&T���\w~�c;��[&�g��������B`��S��F��A4��՜yw�I��v��Oگ�v��ϛŸF?3K�zu������K�h^�W��x<�G�Wy�3�8F��g�9|>_��|_�W�5|�ȷ�|7��?����;~��u]�?�8���vEQO4
E#�h*�E�h-ډ���*��E_�xY��1J�b�'2�1QLS�t1S�s�\�@,Yb�X->��Gb��X�{�qPG�7�8-ΉKⲸ.n�?���~3h:f3�Y�,b��.i�2��2f93ڬhV6��1fu3�L0k�u�zf����|��\\\k�i����k���%��v9;ڮhW���qv
��]�~�~�nn��[�m��vG;��N�3Ꜻ�~RW�uuC��n;��sL�r���u +:�Ne'Ɖu�Z�{�Rg����������q�9�����-��o%x ���<x�*��|�? +��p�πp���y|����w!��Ő��R(�g~ij� +����5P=aAo�E�#�B$z�(�?�Bq����!�CI�%�J��|
Q�-�Ai��������,?��C9~�_���A?B4����~*�h
�DeQ*�Z�< j��PE�u�AQ_ԇ���P=�TMD���b��!=/���Z�C�� ���@O�����5E�i"
}D�-�PG��.z����:ꣷ��豣�!z�hx=7�������� zq&<��<��7O�f�ѓ! �z*4GϞ���3�z�lh�^>CO�)���q��E� +�>�@�_���WC�V����$�`3<�X��#v�ӈ�=�A|&>�g���s�(�_���+�tB�|�+�!�r�g�Y�".���U�,~�n⚸�ů�W�8��w��x��1�4�Uz#�HG|�c����5����Y�,�sQ0 +��vOX����T�V�!K�Uga���.B��Q���uV�k��T��_`��M��?՟��a�5w8�u�#�����C'�`�# �<N��)��
Ny�<lt*9�`��� lv�;�a���luj:5a���Y;K�%���v�a���Y;���Z��w��'�&g|�ls��ng���8��ݰ�� +3�R�5�ה"��\���5��x;Ѯm�M��p�I��:�~V��?�'�8N>��S�y����95���EN���Y�|�lp�8O��5���p����x<L���9 +�X�j����!zkJ
���R�C����PjT(�*�h�ξ�����:�b(u��ʏ~@�)n��lk`
�4�D�
ٲ��
�F�j��]�����x.����½�����O�0H�9�2�u8n�m���Ň���|7������T�/�K]��zTJms�vc~�J-�Rz"�!��]w�$����XAoM@cj�i��\�5��3�</ϋ�ݘ7���.bA�Q��G�f��L6��fk�
�2�4����E��P.��
PE�� ։r�A-��S�9�/���s�P[,�c! R�_?���k��gc��������&�ƷI~Gs͜��If��_ ��{�����kE��w2���#�{Ȉ����ѿi���Q�{��@kl��w���0=F`j,L��To���R�4��X]<[���TG����5����� :�x~��q��f�k��e�L���<�o;��t�`�������܆�X +�]����Y"�wΛBK�o�im��^Mnj0��l��h��9<��m�|xv�* +��Fc�>�a~�_���7_�] �_�HH%���5 +�;�v*���a�լ ̓�� +�"Pu�
��qw���G>/���y^���d��-�����+���}��zB�I�U
��j�Z�aU[�QuU=U_5P
�#��j���GUS�L%��*Y�P-�c*E=�Z�'Tk�F�U�Te����T1������X���C*A=Ik(�����ch���T��J��*RWQ��*�ʪ�����U�W�S�UUPR�nWL�P%U)UAUT�Ty�p� +>V�UǚÍ|`�Jf�3�!�#�F9F����qr�̔o� �M9QN���9UN���9SΒ��[r�|[Ε��|�T.�Y2[.��� +�J�����r�\#?��u�#�^n���F�En�[�6�X�#����ߕW�)ɏ�{�,w�O�^�C�{���<!O����A^���'yM�"�(��;�]~*w�}r��L~!����a��<"��G�7�<.O���YyN�������Uޔ��[�O��_Y* o�; +�������3� �8�2��S�`�%~�#fy��%��P��$�ؤ&�I-b���Mj��!6�KlR�ؤ>�I�B=BW�F�)�Y��&�Ffy���)1K3�f%��,?4g�e��eZ˴$�y�X&�X�q���beXx��C�iM�ӆ�-1Γt�kG��2�,d���[�bo�����!=Cԑ8�Y�N�A���R���#�Bԕ8�qPw�t�|�m@&�ILԋ�(���71Q:1�t���v���}{�^�����П@�@�"1�@�2�K�P���^&�L� +1�b���P�d��p��C���.�+�g��#��J!V������0İƵFqn&G��1�9���n��+�3�2�Y0����l�����K� �Y�⥈㕈d��5��
��-���A��n]�����[=c���"��Ң�w�=�,������/p{e'0$`�����D�'�E���P�K��jc/�7D��������@���I��LD���� "n%��[�9��<,�6ˇ�-� + n�B��¬0�(+��-Ɗ!nK���R��4+��-��"n˳�� +��v,���ʦ"n���ۙl&�v6������ n粹���l>�v[��]�"n�E��%l �V�qS������=�.���=�Ո۵l-�v[����}����6"n7�͈ۭl+��c�1�vہ���v!n?e�"n��=��}l��3���s�9�����0;��= n�������w����8��$;��=�N�?��P�X6��iyi����8����}c.�H�������a&�?���mnN-���̕�y� ;W^~����t��0'h�7� ��� `�0f@X����tt +ʹ�t��]$��Be�a��P=��g���f?�ԡ��Rm����T[�1�]��i��J�!��!��F��)x���N��b�(�r1ʊ�ʿ �s�nöΠ�ǡ�vJ��g��b�L^��2� ���s���-��s�!ӎ�q0�{��)�
�
>��x�<���虋��>죆c�=�)��X����$��eX*���� +:�Aj2Z����[���ϓ<�d�&�4��4o��
Ҽ�K3�4H3!��MҼI�7si&�f"i&��L"�$�Lʥ�L�ɤ��K3�4SH3%�f*i��fj.�4�L#ʹ\�餙N��43H3�43rif�fif���%�\��ͥ�G�y���K3�4�I3?��ҼC�wri�fi�ҼK�wI�n.�B�,$��\��H�i�˥YD�E�Y�K��4�I�8�f i��fI.�R�,%��\�,�d�&+�fi��fY.M6i�I��K��4�I��;�������4�:�rJҠ��}�uSL�*�#)��nCe +!Td��R(!�J�4����d�k_Mg{��s���y�����O�����{��^k]k��YI�$�Aҁ�Ig�s@�9� @2�d0H&�L �r�y ���@.0�E �\d�, Y@�$H6�l���K�$H�\r�e�� +�+r�
7�&��@n2�- ���b��@n�� w��r�A���.����� �@��3H� r�} ��H�")R��AJ�� +$�A���A�c�4��G6b4�'Т��Eg3Zt6��lh�ٌ�
-:Zt6�EgC�Ά��h��Т��Eg3Zt�U W�\e�\ �@r��k@�1H� ��G �3��@>zT*E+����i�� o���Aڀ�ic�w@�y� �@ځ�3�{ B_%0&��"����|�1��ma�<f{f�X����0�f~B`ܼ +�ͫaܼ���c��"���c-4z6Ŭ�x������F,��yj���̀@fA 3!�����`VB03!��̐@fI`��F�\�{&�s�Fc@v6�^����� �
��{RK?���O�~��a_q ����Z�5� +�����V��{,t+r��R���R������b�C�B�}���P��/W�/7��Qݷ�þPM_�Q_�@�dz�8���U�z +���Ņ�Fꭒ�!�]����� +W�e}� +-ď�۱o8��De�~�Z��^�P>���i��fA��;�Rn-`O��hoK�V�Y)(��^��q���W�:�{��`�3S^�'���+}0��Ft[���W��6��|u۹P�����=V�n���b�_ւE��Bn'���v L�H"��X�a��q +��y�<&D\$�P+R��OQ����Dj%�:�&I���}�ҐqhwN���g �
{0[v��׃*Q�"����Z���+�K�E�i�g��{��q�pf�`���I2���q��D�:����L�B@,$�X� a��
�H@,�(-��3Q�i�U�,dŻ�%� -��a��ս���ہ��-0�'�P��!?����$,��cѧ�ӹ=�'�n��B�<��j��=�F�5
Y��� +N%��g
ѾJ +���z�龓��,����<�����-�ZZZZ +Z� +�Z"ŗZ�u��%�Sũ��H��B��.��r=.���^OE_��{��Qa��9�0�SĂu����Poϴ��;^���j���6�~v5ݪ���z�.]�4 +RZ)���VAJ� �U�Ҫ��V�5 +V�pe\�nKM@��5k٣��
���)Bc�5�UG�E�K_���Dc�L�~
��*'� ބ��mh,�� Q4֔# UB��:+���%��Ӄ�#�b���$�P+����~M5_FmRQD����)�xM���$y0i�K*�C��iD�#'���tr69�t!�ȅd0J�"#���3Œ��8�B�#�ȫ�-��,!+��d��l%;ȯ,�%̒`
`)��Y,-K1��Aw����[ '����ן��A��D�$У��@�A��� +�4��)���g@ς������ + +��)SJ�E\v�O~�� �U� ~p�=��F�М�U����v!�����(eyI�1��F����(�#�M��6�����IRl��eY3f���
��uo*���y�U'�Y�Z�ٌ=�r����\ׂgd�F�w�GJ���������T>T��B�Ka�.ND�8�'�~�<�,���k����%�Z�:�\��fY��(�0,}GGp��lW�U�f�Ն��Fg�I�nhJ}�Z���Cx�qh�|}���f���a7Z/
�[/�x�z�*sCAptI +���}1G[e�m��d��Vm�p�D��h.�Έ5��!�%+s�c�p+o��g���r���P����(�:9u��g[����ڙ��v�8C���wPa͠�QS�,"��BB����{���擞gP�~�"ڪ��Z��T�/�\�LD�R�B�ESHH�Yө��u�6EDN������_��7���B���ƒ��{�$E��$]JV�P�y��-M�L*4��}�)Mcs|�{��NW_��WM���ӫOI��y��%�c��!NȱY"��D�8;⽳��
��9��*�G��-�w=t|,o�9���-*�����zy\&��ɦ��ՈNl��s�^.��Z�:�,�0� m��.g�U��e{��K���W]��N�l|a����mM9�lM_wvV��7�.or��AK7vI�ɾ�B?�D�7
ж9r�N���Ŕ�O�>��4��HCe��A릖O��z,��|����3��N �y�|��^#7V���pq��3U�+��k����X��Y�Sjݕ^Q�{y�����X�5�2�6202��(jl�&�~�Ñ��N�����1��4*���QiY��~)ٲӓk��Ū���7w��k�Zv��PJXN���A���ΰ��4ö:�~�{r���o$C>�p1�]Y� +ϧb�]|����b���6g\��:�j�u�����A�Vxl�~��t缠۞��S���W֭]53�*�u�������~�]:cl��'�6�N�[�mV�s��������C�W�_�&U5M�P���YIO7ş0�<�V\����t��8δ�6��X^�u�ӏ1U[dt�.�3�b{���6�����?���ӓ{�:#ο�������C�עy�Y�ݝ;�c���GQ�h,�B��%5���1�x�����!�x��6eD�khL��F���y��t=Fy���2��yzQ��a3�=�e��yx�h=C.7{�qʡ�Τ�L@.0��� +��np~�+�~��)�^�.{3}�n�y*�ǽ����ꅫl�֩-H1џ~)�C|cpNV����S��L[&�-����������m{��n�Բ���OJ&��O��N�۾�,�������*F��٩o�:���!VdH{���Ă��;m��m���ZpP�R�]�o��.�!����?��09i��//��s�=HXL�w��9Sa���٦W��O%�\�Ӗ�x���!�� +��h�3i�������GWT;#�ߖt&�o��Bݜ�Eؐ���ܕ�4�7/<i��?�q�I��ê�hs~��W?��Q���ą]��6H���m+Zyӄ�A��m������V�;�75�-��66����������
����>��8���.�U���_ih����mjQ����Tk���!���+� +�=��6�u&ΙҬ��Xy���OV\ۖB�{��j��U������!-�m�&^W�+��jQ,V�r�$͌�����ݾU#[ڥE�4����9s�l�&R�s�T����S����ܗ�Bmߚ�e��E/��δ�q��j�#3|���}M��OM���Xđ�o�,��b+� ��,�\|�n�sK���Y��xa���o؝�N�"�����sx��i�]_�n�Pe�z�?�9�ϼ�/��--轑���u;��;��ѿv��������3B:<��85!9u��y"�z���x��4tG�Zz�֛���Q�/3S��Ϛ���,q +��������Yz���<���lTem���07��J�C�Ȕ����J^��[�nʋ�nh�X;�]MϣV���,�]X�r�����Ώߚ��ד�$�|Y��P�"q���ıgqZ<���mS��AD��K!oj(�D���k 6��$.[wC�=��*K��Ͷ����]�澺��m����J�,�vv����8e5rq&d������eSd�,���c���^�1<��� +��o��4S��7QP�hc���)6�h��z���c'C��ln/Q�ʞ0;j�����匌��yG̺օ��;<��ya6�E1��P���/s:�uʫ
�M�Բ�pulqx{���Cギ�",���{0��p��M�$��g&��=m�6 ��V���~��ʋR���rh���ݳ�g5�5�O+��\n/T>I�6%6-y� {�)>���첡�'E����&��X�V�Jyf���)O?��A[ث������W��Ź��\=cpb�W�ÿ���.ʗ=���BU�u��q +U������i��I�����ZO�#y�3�(�[l����`�,rJn]붨K{��Z��P���2�%p�ρ�O�Z7���c��In,S��p,m�"�; +�aቚ�4���ڇ��݃���jTX86�l�q����.���>�`y��Ƀ'��n���sS�տ<W!:�������T��_(b��CR���kt�mm�)5Yl����敪{�8��-?���rZA|$�c�3�W��k����28��J�Uf�'�U[p:g�EU��-���XtUGcz��B&θ�:\||��<��z��N����V�{� ǡ�Y�o�V-�3Sw�^��bٱ����f���r��S��Gs~/�h��|�s�э����:obϬ'$Z�y��m`���>?ng�~��bAh��0/��L2P*c��^��W$��JA�H��WVp��}D�'�<##��J�m��E$�jXm��S�I��%��鲒�2SR��dhݩ�h��Es���� �mz���")Ҽ���e�|ìKRR_�1)<����T�0r��%C�f���h�6]�:^�Dk[9j�%ϋD.��N��.tA�ˤo���G[���|r��R��0� +����+]���02�4uԖ�[�"jx�=��̯U\2�j�ʆ;:CS�����
�����T����Cd?�ny�,���nh�]��mO�Fn֯�*pzs�r������Ol\=_b�YeSO�k[�[�Tt%�k�#1��r�-�A���*۰�%�� +endstream +endobj +242 0 obj +[0[750] 3[278] 11[333 333] 15[278 333 278 278 556 556 556 556 556 556 556 556 556 556 278] 36[667] 38[722 722 667] 42[778] 44[278] 47[556] 49[722] 51[667] 54[667 611 722] 66[556] 68[556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556] 85[333 500 278 556 500 722 500 500]] +endobj +236 0 obj +[278 0 0 0 0 0 0 0 333 333 0 0 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 0 0 0 0 0 0 667 0 722 722 667 0 778 0 278 0 0 556 0 722 0 667 0 0 667 611 722 0 0 0 0 0 0 0 0 0 556 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 0 333 500 278 556 500 722 500 500] +endobj +245 0 obj +[278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 0 833 0 0 0 0 0 0 0 0 667 0 0 0 0 0 0 0 0 0 0 556 611 556 611 556 333 0 0 278 0 0 0 0 611 611 0 0 389 556 333 0 0 0 0 556] +endobj +246 0 obj +<</Filter/FlateDecode/Length 75318/Length1 269604>>stream +x�� `���3�wv����̲�BB8�6'GD 4Q� ��T�gx�<��VĂVT&���Z[kU��H�U+�J�[e���v�PRC tcx����y��o�73/o罝�%���!&ZUQ;}�G3�i'�<�(����U��^�B��5DJ�ԚY����YO�%$�\3�vn���$)?�����3j���]j��P�5��i[��:�����5���(f�嫈d�k�O�S-���'#=v^���y��D'N"��y�YM�����9��>�����h���O%��/YOk��Y[sb6���O�,%�kZ�L1d����=�;���.�z�b���Dc�X���yn-!:u'I�]��i�{�x�&"���%X�"qҿE:k�Y-�$&<�m/!���3�{�-�%�!�?=�M��������D�符����m��ߐ���t��g|X��Dޜ�s����2����s7+��>@���a?#v.,o�<k�}ϝ���-�����&e����P��_~�!۹(k����%�N�r}��yhN�kl��J��CN�1y�����ە��(/���L6�m�QXAZ(V����X�Y���d���r�N�����u��,���i��fK��%R0@�a�T��lO)�vI�R��Gj�b�=݂Єp3K�ޢw���k,k��n��xj8�~̀�p����9�7��꛶mZF�aw%⹈���$����y�n@�ӝV2�}!�����{/���SA]x&��@ |H�[#���bz���@ D���6�"�@ �@ �@ �`�`z�N����
�H{ �� �]Tc~�̯�-�\��-Sibw>{��?m�rcykw��<{�Ŵ6��[M�����_�0�n=����eJ���3h��m���4ÔB�x�Fr���H�~���#�@ �?<V�$I{���r
!�8̞GYD^� +J$Z��{-�8?QK��� +,l�����߈���[)�qHjŰc��qZ�H� A�ϧ��7�
\
��S�����tH���")���i�K&���t#�����@!Eb�E�Q��ͻ�:�s�A6���Nv���(�2�"'9�.rA���)���<��p��h�B�)��7%pM�h%B�)���R(��5�R����G*4�Ҡ��U)�Q&�K*ti������h�O>h6eAs�%?teCs)��Ky4����sͧ\�ʃ�ph!�CGr-��SE���4:�OKE�bG���it��H��I4:��CK��� +@��:��4*7��t�0�A3�ZMU��Τ��i:t̀�P5t6t7͡���fB��D�\����
��9(�@�Г��Lu��4���N��@���T��6R��wj����d�B����b�.�4:�x���u 5���=�BϠE�3��E��g�i�s�{�{�LK�ߧ��s�t�]ZFg@[�L�r���Y���l��������q��΅���o�����J:�x�V���K��t!�2���E��t��W��~����V@����VZ]C�@��z-]��.7��zZ
]KW@o�z#]i�I7�U��#�t�������[�Z�O�:�m\o���
Пэ���s�w�M�ut3�N���~�����t+�l��@7�mл���=�S���K��寧C7������i�������h� m0^�v�}��6^�_q}�~ }��v�&����������� +�M�~H�A�A�C��Џ�M��Ч�����b��>����q�KoC�E�@?�w��G�O��7��}��w�W�t�d�n�h�{j�?�m���M���6���M��!m�'�M�����6�cަ���y��1o�?>�M����{x�����{x�����{x�����{x������6�������M�o�����.ަw�6����o�6�MѦA���[ܦ?#��cڦ��m�^ަ��m�^ަ��m�^Ѧ�6�-Ѧ�6]��D��gT��E1�2~c�Y�q��
i��G�l��b��B��#2���؍(}3�S��.�ȇ_��{����i�@ ���i߇������b�^�+�(�SY-�N��u�X�r�(���8��l,�������X���`�X��
���� ;�{/$�����i/�26�=����Cc�p'�n�_�ZX�#��b,@�\�2�L�u��v;����u{���n�C�l��j��½oV��>��մ_���C9���?Dv�F��@ z`p}ڋ��@�nw��X +1�!�vA �\��b,` ��T�kz�X���D9�.�+*��|mg��^�� +��X��z1���Ç���"��DIȍ��@ ����c����K���u���ΨP��F&RΣ��b,@��c�/��i�����u�"�q�!�p�ˍ��7�Xjw�"֙��� +��>�9��0Q�#�@ =i�q��@&&&6�=Aͯ0���D�h7&g���� ��d����.T���Ɠ�f��O1��u&���eC��lw����A�(7� b�)���z1���Çḏ��CIi�@ �O��W�X�@&.>^e/�W���R +%����R��=������Q�ԁ��9��pG��`�C����01eL���@ ����7�dП�'����u���q��.���]�T�Q�K1 �Z ��vGo_�'&%��?�]i��tB<�= ����w�P�]�����5�ܑ��2A�Ї��ދ����@ �@\��W�X�@&))��^��0��� +��Q�^�%%� +��:L�LOOKOM�]|�Ze �z�2b��.�VR�(���ݽ�=eee��?�]�(i��n����UL1�o�3Q0.��60b�+wdp�V�?��)*��yq�a)Zi�@ ��ދ|��d|Y���E +3�u�(:S�T�SC}�l
]+��`/h;B�}т�0��a�v��v7tNN���o��)�,���ggz1ņ����`B&�W㣅;"~Np(}x���{�ab{f�]���H;Я���2�99%�] +��:L�ּ�WM�{�v�uf:,8�o�<����`B�p�xb{�:77�u�=�I�H������l͇).\�|(���_Fl��;2�~$F�?��)��c��q�uBK�]���Dځ~E<,>���[�^ +ȿL��z|Y�,of�v�|?�VYZ&,8�z)���+�(..A�Xaa!
����h��!���l�0L����0L��7D�y��� +��><E5��yq�a+�"�.�@�C#�@�"��9���_aƱ�
6tX�/�w���Un��mkΑnD|*�շ�����;v,�`w�M� H��"b���RB�43r�k�����5ܑ��bXA�Ї7J�8v^wثo���@ �@~��Wċ�2c���'��f"�0QB����9��0'�kU��My_��g�w���P�����R{{�4i� +�F�T*E�x4�g��)=���PP��:�X���������:fN8j7F��@ z`d��W�
�� �&��^P��0�Y����F�*���``4zW�F�QQ�n��Pp\2���RS3z{*++c����4
���4��g�8Lj��2ǡ`�(�Ƌ�5���x���ፒ�z/"8L��;"�@ =Pi����Liy�R�� +z)6m�4��gߴ�҉H�O�r��p��ɘ��o�'�`�8���#��GwD�^p(�_tr�E��kѓ�vA ��i��>\���TM�����_af��O*�T2~t���fNAתd�(O��##b��&����C:I<�R���J&�$����9'
� +���4�fQͣ:���9�B�:i���%�ٵ�ӆA즗������M(}6�{hi�o���'}�����39��a#Yh��$�D����̽�ş��^���(d�H3����N +gWTVM�6����=�h����}�w��/�'&����g1P6�.0�d�Ə+3zT�����r�
���g��x553#=-5%9)1!>.6��v9�v��b6)�D�+}U���ݨ��}Ӧ峴� �XШkXTup]k�Ŵ�KP��(��/)y�I4)�V���g*|Z�t��z�_[�k����L>��ϻ0���@�L^R��R�V�W�������k�r���;�S�# +�Q�ӓ|�mRR��g�� m2�\pJO�UT�)� +恮�+��5��++Ҽކ��T�з@'_����E��oF���V�m)�Z��
�l���C�|�����JS�FL�[�']�v��I�<����sӔ���K��^�靳���2mh�:`+��[���kp�k5lM^�P�K��I�� ۫��-�U�%��k��W�[�zz#NMj�Ns.�SS[�.J��Z��}^}J����"�-�Z�\؞�R���� ضhwx��:pf��<>Nj���9����<�MG�е�<��a��1Y<�Z�C1� �J_�3�T��7�z&���^7�=>��3B
�}���%M�%��3b����j�������\VE��8�𱄧��?�C�k�h�p��Ƕ�aB���N� +�ya�)��.m�2[h٪P���6�xX�VB�N<3k4������!���Iu�f6�cp��*(���[U�o�d��J]�}�A&TCX��P@����* +t ���q01�h�щ� ������VmW6ѩ4 +�7�ś�E<51��q�ʶ����0+@�����p=��"X��&z�@P�{���*k�K�
8��A���/hOx� ^��nw���ŭҔ�`�zV!lF`�s�w +��#o=��z�ΠG��:���JY��ܒD*�~k���������GT� ��̤N��f7��������V�;��<(�N��#k��uP�������D��˂�nwq�pth�ݓ\T��pI�b�l�ᔮ@��x!bv�(������=E���)(>EI�%���*���S� +%��x�����v���a�˕d^ĭ�h4b�b
��6%��U��(��UAOB�#�jŊn���B�$������u�=�k���֖:�:�f� +%����bE�1J��N��;Cɠ�UJ&��V�ĥ����=;]�ܦ�ĭnd+��KBU���]�YjWJ��+��\�7��={\�f+C�A�1^����ҷb�g�g�g�N����r5r�F��"jVΧ�w`�U�� �>�5�h���$��x��PJX��n�f�%c�x��vgtєG�e��˰�Ҟ�\t�6%������4f�Du}DI +�&�S�L��LP�RiV�U\�?%�dI~A�;���Y��p�L8~6����?��<��J��w��S������6�q\��r�B~E�BS�Bz�-�G!��>�v�����AW"�Y��`^AxF��g���3��E�~�7�c�s��ˈ�?&w��\�E���Sn�'� +��D������Y���q�ۃ��=he�栅E)��)P��ț(E�f�b�=��Y�{�'��`�[���OQh�b1����l%k��5u��V^H.����J��0�p����|�Xۨ�z��Ѐ�!��W^-&MF�A ������ү�Ol�dZ]����|������)�j�� c+V"�B�k�.F�������5i�E3,�a��-�a��fX4s�f���̢��h�E#�h�E#,a��-����h�5���E
,j�E
,j`Q�nQ�X�p� +aQ�- +aQ�BXr�BX¢�[h��`��B�,4Xh�и�
����,<��,<��p??��E,�`��.n��.Xt���[t��]��m���'`�&;a�����N���Nn�&;a�3��-�`Ȩ6+V"�B`����m'l;�m'�^���:,tn��B���[��a�s�u�X�u�X�-��b,��b�X�+�rf��J��S#_"���Y+����x%��� +���R�@y|1]�㋨���S6��>��j��j��4M�,�S�A��]$=�`�s;�D0�1�!&�u���f�V�fk�Uv[fY�l�<j1o�tYd�4Mv�vM]�u%t>D�S��y4�;��L��с��=�Ҏ\��\is�t}�Tj��J&��iT��=U�8�K�]��9%h��{hw���vH�CѰ@��m.E(F(B�G�#�|Y.����W�!����MP"{�Jl�-�EvI۟p��m'g(�s +usf!z8��@-�KQ�*�~�3� ���6��E��m�� �������`�3j�K�K���օ�Z�7���y(6;�C���f�s�!?r�I��6b�*+�%_P��hHP�J�(��x�B��=3��v8�g�To�Q��M�n������aB���!�8���?G�R5X�`�����u�J��Z����?QG���wذ�Z�}5�DP���M�8u�Z��俭.Sg�M��?����v�&5H����p:��T��;��U�j@�Q�k���q���ogG��B[����`u|nq�ȵ~d]k=�Zf�h�Y�X3��x[��c��9m��f��l��l�FW ���[<,������GfʆY�C��4��8�Z��-���΅T�@����:$zsf_���VSu]�>.���j�ы�uk���m�t]���U�,��wH[�:�
��I��ڴ-$I)��mh����$O�-�_Uу4�5�k����o������hЋ،��P�_�U��n�UY�E�fQC�S�쮜Ö��+P�m^�9�(�E(f+#�C{RƊ���e��,B9���y�l���3I�\�.���M�x?�.^f��(�ۊ��l^ʧI���T�Ӹc���TE�U^D�u_�*��_�_dߖ"}]F
���]&~(��%������W<�Ʃ}���5�-I�W-д���Xٍ.aq�b}�oq���W���|����Y�H_E=^YW��x`qEpd`d�����}ʤ�҃�u��m�O�ae����ٶ����]ʲ��m��m��mM L�۪\��}M}������v9ʁ:ܘ�m(K�4�� +�e�7yE�VI�PT^�����.��_�_ʲ�Ʋ��`d8+y�Do�V�p��c|e�}h����ֽ̮�'ճ���z>g�<;�*�V��0X���HKO,_�|��yˈ����j}�lxb�bS�
X6�{���emv{e�щ�<8!��ͱ�<)G0�@��*����ʬ��Ҟ�Qt�#�_��~�|~��w���ۇ�Y����`L(Fw���To��^S�Cq &3k�k�����_Wl�҇6b���}�6*Ԓ���@`��n���L��^�f���I�xz����.�u_}K� -_^ �Dh�˻͖��x�rnZI(�_��e9[;�h��[)���)ݔ��5����o�<�G�� +a�t�,
�4j���$�\J�F�t���n3}E?B7��n�b�wK��4]2�L]#�n�g�O��FZo<,]j܋���w�9<x���t"�ϥ����5�����(���H��D/a�>�D7ӯ��c��t)�7�J��x���r��Z�.����&Y���R\)
�V9�x�x�������S��i�F^:�VӭR��;���~A�$�|�Rn~[�N��l:�Z�^zJ��j̻��6��P�����i����4J�W�d�BOb��i:�t���}S���A/�a�!m�3�����N�r�8"'b;�2z��@�'�Jc%M�Zl� )CҤl��y��By�F`oO�����qF��6z����E�H�R�4CZ � }";�E��v�A�E�d�%����8F-������!���B�F:]:G���3�K����L6�e���2g����o�D�3��S���V���E�� =K�O蟴W�H�%ҝ�.uI�e�<D�%7˷�}�r�r��i���t��ӫ�+�k�M�}_n�wӾ��=g<l<����gS��%��Qzk�^������O�N����,���n�������$>
�'���9�8N��7�7c�;؈���������bV�(c��+w*�ҡ�T�5yL٦���Y��L�L�y���|�y��7�,�,�,͖�Y/�^n{��ܯ��G���������P�.�9�G���)�g�q}���*y��=^������w���b�R�J�F�V�vi�� +�" q���t ��u���d.f`Q`M����SQZӃLUep&��φ�Ȫ����rs � oU\5�ul +
ю}�}�m��q�vϩ���{b���~�s��7���`���b�Ȯ�6.]�������ۨ�o
�
��"�F�)�J���\#W�N�G�Ү..��[����f���T-��b�"zK��Ч�tV��#���x��6�B%��j�����*Hgَ��].��<ޡ�
&To@�����Z��j���7���Ͼ�K?��~䬆�['
~��Ώ���y��:on*+b_�Zk���zϞ���TG�[X3��R5%r�ł_������lL�,QD[L0��(���`w�_���b`%?x�8U +����sҗ�a,4t(�6بUA�pJ̯�p��v�';�����/kO\�n�c���06-9�8hu"�Q����ZM9� ĩ\3���� +F�� �
�n¥\�7�0�q�G5��10,��U����&��ޓ�j���J8/�����2��,�I>�HEr���~)&�'ع�-� +��}\�#� u��od�.v��K~]zK���}_�P>Cβ_H_ɦ�J�>���O�$o&�4�\r;_Z /'�Xaib�IM�Tq�4M<r̜ 4PN��Y^�d'�nI�����"�2����7����͢)a��>K���UsI�@8�SU�A��b"�@�S
B�͝����QN��y]�� +�?+JR5�:�%Y�f�
cd 1ʲ$ b����� +kD,^�p��7I��`�U�T脪��k�ۘ�������*
Q|^%۞mo�y�l4 +'�S�ԡ�;� +�ޓ�������+Qmπ�`L)�$�-�e�M>��h�h�k��u_�0g�id�r7������ +(�) +/ +,f#���E�x>H��8p�����
���A�|��%|R����!�l�*��G�*X��ܕ��(�ڒC�Ik��V����#�Q� (�{eꘉ+{��i<O�~A2��Ȱ�?��_�{��d������'�s.�輑�����|j�꼍ީ�y���u�������{��f���MN�u����i� +��<ɿ���_I|���pu���V����,��[�X�&���eq�%1� +�xV_W�#��N�����u�xno����jb���|<���{��c��4M�7�}��6l���@�T����Ɨ��M��ɯ�����7L�AS~�?���ڻ�jOI����H}x.�|=h�V��G?:�l���*C�>oD���-r��œο$��@�@{m�p���d��U�!�F3 �G��8�A��n0X�����B\��#L�B1�6�A=QA*'����=ن����z,HY�LP;��C���y�<y�k�ga>�I�u�XDgb+q��s���{��W5-{p�>Ֆ�*s���s�q���[�3�ߵ��G3�;I���v=��O~D�| +�=��E���Y�6w-m]wyVy����ו�=P��|�)~i��y�����w���v5z�ƅFa���U�aVp+,�u���ݶ�\m/�$���y �|����D�xzm�&LݘE2��f5 �"���͠�� +���l�`�)�=Hu' z�5\�a�Ŝ��^1��uV �bZ�/��r��gҁ@m����!d�GUagkWn�7�%����{�7k�
[={���s��%���ػ�(W���Y���/�d���o ���D +�I�!�Cz̴M��=%�,�l���$#�Fy|�nӋ���7�7���/�L�|K�S�p�fk��|��['�Ե�0��f7��*Pz[���L�e�/z��Ʀ�� +��tT�_��V�jO�^���N���Þe��}k�`�Pq�
+��3�D��Y�K +w������, xF�)/�C���ԑ�( +y�LhH��j�����Fg��nAGg�3���L�X������j�}W;���4�[;)|TINh���K�(j��`���UZqI4Ce�S��,�i�tD:.���"�UZ#u� ��� ,]��Rʀ��9^`e" +fo4 +�97�,N虝xl����������a��v��X�X<�=�:� +�vոU��[��������F]n��p_��HpX�� +f��f_���M^O��/�۔i��NKs͜0��39o��LFw��T�`KYJ� +:��nZ�л{�ù�d�#��cj??����2�<ڜ�^'�0.'r����0� F��;�{�L+TG F���1%R�Iw߁�
RL�!ó +a�r�x�L,�5��| ͛�� +Z?6ݖ�~L�P }�TCǹs���rG8�*Rĭ�:9�`�^�D0�F�����Zi.�N�N����o�π�2(�zD:��� п`Đ1z�=�L�s"T��
TV�W��V�.�x�q1�Fj�.�Èa���t�c���ЧI�ia�1�Urװ���װ��9��{
F��� �7~{��/\#�K��k^��ʿp��ν�ׯQ�<4�����Ȁ�P ��z�B#�x4�B����Ao�7/��y���V�ٿ������9�1#��0�E"�����p�������;œ?n��Ko��8���uՋo��&�~��xo�^蛾����oY������Hp��DZd���c�c��r��r̚�C�=�Ǐ��r��N��w:��� G(H� %}���v�����n����.�����s"�Hķ��RMUMU�i����yMUU
�Hˬ�� �]��E<Q]�w�o�ﴙ��D;o�G�6(����PSS�)4�v8h�7� +|�:V� G��� ��� pp�^�a"����o��7���2���O�����h(�F��b�G�-/A(Yb),*$�( UT%���d�C t��ǖ��d�ߩƱLOM��J�=�54��f����($� +;�:}�ܦZ�0��� 7�YC�&W���7�E�~����]k���lj��)i������7�h�$��o�p�萻n�p�3w��<2R9��{w�o���G>���AB����~������T���(�n��:J�"��E�τ���N6Xad|����d�G�N���fa��2Uq�|}^�}�RL�'��x��|�1M�R�p-UO�������8��;mZ��j�j������K��ffX6}�����'�w��L.ز���Ú��ᇎf2���
��;�V�jՂ����������fb� +.�B�ɈRGS�����1��z�G��JBǕ����e��X탊�f�56�}�mE�?���%75E����?�߰��iWq���MpTM�㙶�h��hh����%������ad8V�������[��Q}T5�`0��ah��=JO��ql��7D��r��e�fקW����6/�gl|C饛�\��uD?��9ɉ�DŽ��8kg���6�o&W���κ�j ��nd@��D�'�_��bQ4�Ř�T�(�ñ�'G�O������8�5ց��Сl�!�Iv���%���9K����ռ�y`0l��a���B��),���-����� 8��C4&���j�Ҕ.0j�������ݵtw��s6�\3�>QM4jW�<7c�OW5_�����R��*�Z����av��;�|�sFz̃��nx����s6L��t���}#��WP���4T�dR�*"������#t�� �<+�T��Q*�T���P.�SK)Q�N�7{�e����\�af.r�gTo)( $xM�E�w����-K_
%+��n�j��e��\kM��n�nm��n[Ym��[�[ɼ�s�30����Ͼ�?��{�s.����;���a6l`Gï�K���=��z�+p"�&�� c�E�ۓCB����e���1vz��$ +N�eX��d'RpB�0S��_��������V�XuѢ�U��~V���,��e��B�-��`B\b�"W�Xg���k�TLM�6.�%�f��ɻo�I�8aI^V���{F�g�ƤO9o�������ʚ5lL��w�~=���o?fުB����bJԚn"��'Y���e1����e/�E�����l +�Ce�N���h��wiʼn�k��p-��f��`'�H4#�t�.�*YtZ��t��$k�I�;��:�NO6pO�i�di��1w����3�֜>m���Y�b���m)6�M�IfI����K)�=�{R{^�twi���L!��a6j}T��<�0r�X�K�;rD}"�
�m�}fG�He��bb��GؔA��rm��D�+X�JVf���Bc�����<(�`>.�H�t�-�t-��_:m
��V��h=�':�C�(�$(�a��~���ث8Îe��<�2<mRƨ��R��l��eim=y��q��q�#&%�=#J��%���L�6<+��q))YQ�)���ONs$���c�&�(N������z�g^�N���"�����;��,�M�Y���n�l�m�m?�������6�8 v[]���#O�X�t�}�HF���dŖX3�a�VL��1��,�l�#oB���M϶Ξ}>.��{ތ��n�_<��Y�Ϟ�}��n���ُ<���dh��7��U$�,�qI�v�F߄�ɍ�) � � ��{�] ����U�
�I�;)�'T������7����J6��锴mN�R��u]I|�
+���������Aѣ�FD_W {
�誖ǖ��FQ܈$���ҍ֡㒧�:��Z{�F�������":�A�Oi�I��ӿwGǢ?}��^Od�� +� a�c���A�, j��~u�x�R%�1t��YO����Q�
sl3l���p�X&J��6{����8�yd1������Gԧ�6��s���5�-���_�s���VTl}��;��!��*]:e�{Vڈ��r�.��&fm�M[�c��w�����g������9r��-����so������Ϝ�s3����ᑑ�a�I����bMSR��$5bE���Ȥ0��>?�hRRzd�bH +�ӧ��e��a��c2��{t�aP�s_���{X(��j�^�F���s�sZB||�5��9��=���3�+)q�f̍K�52�2o���IM�>kԍ�娚Y=�\,]�ш=Ľ�����6^+�o�'�>�S���.�؛"�e���v���fa�Y0}�^���e�>b������?�P(l�/z�%svR|z������C0G��I��_�u��?icBЇ��t�@C-:m�q������~�|��G������R�����S��)#2#]�����[���֞�Z+���Eeϛ6��s�$M�3ν���ۄ���`N=�Q� �IJՆ�U�� ����k��ֶ|�
s��x����;��s-/Ȃ��{0ψΠ���>N�B��/u-f��ϔ��s@z�破����^I���=YsY&�!�b�B"
!CQ�b��: �����:��Qp"!F�րY|Tb`3�m��p����Αa��;51z�a�@A`I��R$�ք�����=�=_� +9/���0���kı_ݍi�4?�D��Ck=N6��i-;}ZK���a�DA��( ���> +$�V#J�6S�Ά��i$Ą]¥�)��x�p��H(�(L�Vo�[z{/-�I�gJ�/he�n���:��/�&�r
8��1W�Ǥ#p�Ha��5>�x�H~��%a��.��S���j�o@�M�{�O�ѤO�B2Bf~f|&���m�d���d�/�ai����%kBo�:��@H�!-�����4��
�F�^�i
��4��@Hi
��4��K +n �ۦW�@HK�X�l�5�f����M�Q{X:��9�>hw�=/zK�s,�����1�c�4��7�^�^����Hi
�t"�mȣɍD&#�D&���X2���$����C��u�Y^��V�`��L^�|� /b9�9�՜�jN@�2�H(��jNf5'�&-�5 ��> �Kr�8���46�+�=C�w��7Oo�L"�M\����_����'��\!�5.�Lv͖���)�8���8�e�ȑ:.K$)�"�eb���!���\�B�e�ۏ�Ą?��R��e���H�gY�X��.�$.^�d
�
�,�A�6&kQ����e����0YGq���e`_�d=�C��\�IL�b&�����\V�WeUV�WeUV�WeU֑��f.������*��S��l�����2و���K\����O�JuK��2�I�0�L�/a�e����F�|E8�F���#(� s�T�"�> K�}�cr�#��e�( ���X�p�ֿ�ɱ���\���09��4����i�LNd>��e�SU�$V�S.���09��4Q�e�4�+&���$&q�$�q5�����e���Be}�� ��Av�� +
�T?4�/���# +C2�h�
����,�!
�{�Y�t\y!�܉r7���;y�I!�-A{ibW.pj�@^�j���pU�RY��2�{�
�S��W��f���_�t�j�Րq��;�ҫ}&ɂd��a���@_�hS�r룚,�u��UJ��f���6Q�̎���S˰����E���ɐ�o�ڏ�[��Q�q���K�j��J����fԪa�)�o���(�N7k�����ڻX
Y�1)�5,W�F�� ++oB ů�׃}v��>����G�/��T- +X�d:��a#R��1�j��蹼��~�NÝzfK*j���^Ć����^Kơ���������,h���u��x���ߌ�>/�HX��
������mŰ�@7��ݩc��D��7�,��쎛ͣ +�}�S�F#v�ãb +�_�B�E�^/�2]}lF��F��r��!�xT��D���d�N#�U5����ڰ��U�b�J��nc�,��Q}�A���y4),k�Xn�C5����t��\n9�QϤT����Wӫ�}w���*�k/����qte��ѿ�פ �%�->6^`��H\�Уo�7��缪�*��~�����s�*U���j����U��5����> +�j�����x=�7�W�y��0v2��{�������;��D���b�c��.�'ʨ�KP#p/��y�ek�p��m�h.��j{@��fu�����pY%�>��\�2��]l'��h_�~� +����������S�/5b\|�%,2�lIcv{� +���t�p2��Dek���6u�B�+nCo�8I�N���^���v_��A
+i6j���� +[��yܤt��� +�o��LJaD��j��7'�sl�v�v��W^��.[��_ޚ�����v��;��͜��9�a[�=l���kWP��UH�PzK��-T���.jͦޚ��Շ��Ml�������c黣�7B���}�L�!����o�c`m���L���CԳS.KQ�:h'�}˚���5̂��5����z��s�ӧz: +�}��>��ו����z�����~�]�y�z{hb���zWg�����k�uE8=�e�W�p�r��b�ѓ�w��*��(IA� +~?�ylۓ�Po���>�Kq���u�Da��j&ꗢ/ڶ��gc�� +V�������^�����9�����㕢�z�.����i%ʕ^�kU�Fh6W�_����b�՟�_���^=��y#�3�s:?�:X��rԫ`��1�UmK�
����R�4�#�s[�z����կ�Ϫ<�AӦ����М�?w+�NQ����� +�^njZ[®��R=5�YCQ��C��ы���.����c7��ڗ����2v�zc:��d��wӸ/̎�G��"����cW�FH!�^U�@t�c�i��G}�K ��o�#j/��s����E=�aB����j=��S�d��V*�\�,O�Ƿ�ѥL�x=^���iHW����{I��Iq��\���t�d*rUy]+��FWC%mS�\�i�)��%�j��Ӹ�K�(���,�NYN��p�7�)EΆjO�2�^�kP��k��H�u�&�>��Z�W�殪wW;�>"�x0���i�V��j}+�^���P��*>jGq�R�v54�&)M.��Z^媩q�(�j�R�j�����l����oJ��1Fp*>��Ƶ��]�xj��N�p��r���FI���z�^�纼Mt�q��'��h�Y��}1��Ε�%JYm-�SF)O��A)uW�y�MiJ���uW��J��Y٤��0~�O��ܹZi�A> +]����8��F�w��烽U� sJ�����i��)ae�j�n��o�P�<J����P�
5h�F�j�r5��%0���~����b�WC��UR]B�����uΠ�Ѽ��IL�T7F�S�n�Z�Y�P�q +�������Pț}��� + +/�Թ�/��d0��k=���
+iJ�� +yzc+E�u>_�ČWC�J�2w����L�x�dЫԼ�G��4���X�v5��i7W�6W +��y�Z�˥(N�w�p�c*0L�O,�W��E�+�>hb�� +��MnZ��lj� �i�x���x�:���&����^����_gո��T=q�z�J���EU�*�}�v�ᨎM���Fh���)�=5�Z�]��f�T�F���j�����8��0�Ʌ=Pos���*k@�T�G�)��γ�[l����m�2|�z� +2]���}��d�x��ͯ��0wVyV���i,Gtn0��lj�~��� ��\���3�T/U�ɇp�+!f�:��
u�(e����Jq�R�(�[�_����U�:%M�W\YT6�RA
G^i���P�+]��,.�OS +�; +**�2�R<���� +f�V�cT�)sq�T啔����@{�ozY�G�J���$� +�Y�u(5�$�xV���7+oFkU�^��n^Q+�xy�?������1���ҁ�4X��m:��� M�sWP@ +e�e��+-P{�P+�<�*�zNEA�.�y%諂6�����8�/a�Nj�;>�,�����~���cKpI!k�.��NK?E�H����_�\��7�?"��V�@��~wg�>��l���������/��}�ߛ�Z�1��a��N9��e�T�W_U�~�I�y�<]'��s�k��~-+�譙��Q�����C������G�<�Ǐ����SȫW��d����ط7I���Y�Oljd;!��k��Z�G���������s�L�̔H.�O��"�%��zH� n�I�&n��]�y����NȻ�O *^���J)\ +'�!B�!̈́\"��V�V"J�I�A�\��%��_��2��� �d�fy5�� �?y3�V��[�-���|�f4Y�l"i�jr ��L�<Y�Om��jK�� �j+ Wj�@���y�v>��� /�� 7k�!�Ю��J{�k�wB�K��z�CD��H�#"���~�S�GD�4��D�����o�����c������!%dA�J"��2��h0��d4S!7fA�6�����v㓐�2�����琟3v����}�?B���?A����?�����b��Wp�*�����C�B>z�B?#b��0"���X"��Ls!�3]�3�5?e~���Yb�`��؈hb�ɒb�������s-/@~���?Z>D��,����O(�,�F���H$6�MՏ��(U���|=P�/�C�S_��V߈|�~5�0��{���נ����C�]���u�����&�O���q��H�i���i�d���>O#?z(�V�AȣM��$�L�+n��|(����"J�jo=Y���ZF��� +�\�H(�7 +uB��J�M�K�$� ����v�pNxMxO�(���.f���rq�x�X'�ě���)ɀ]-N/�K7J
���KY�
r�'��ty�\"/����*�6�.y��&����c�)�������;�=����h��0M�FѤj2�k�j�4���5u�F�*�m��4�4m�ݚ�5�c�S�s�5�i~�yO�梖h��0m�VѦj3�㵹�"m9���u�F�^�a�ڤm�OaaW�Ƽ/���|R2-%�5�k�����5ǁ,x^���j��V�B;�U�h��g�|Y����8�L�>�#R��"l�5Lj��p�¢XX����W��M,25-u-�[�<��z�I�d�t���M��zϦg7}�9|�8�z�7߷�����������K[y�{Z�k�pO�=Sص|O�=7���=��w�����r�z�eՖ�[�mQG��5�;�ޅ��Q��w���G�|��qi��[�[ת�������:����ƶ�*f�����k�ߴ���m���������ܑ�#��;V�زc���v�����x`���Ր�8��S���';�;����dg�Λv��<���l�aא]�wU�jص~��]�v���������Sv���۽a���O�Z��U�='��w���U{W�ݰw�ޣ{��}}�Ǫ=W=���
L6>��>��}�����w˾�}�;�������7�_�7��t �@��E|6�s�ԁ7|q0�`�����o9�v�����wH>4�ДC�:tߡ�C�z�09w8�p�᥇�~���ï��Hؑ�#��=����#Ǐ��ȅ�������E���
�{�O�����#a��=R��wTT���*�9���Q���vFv�vNV�:UL�G�~��G�1Y{�q���M��>��N���bK{,�1�3�c�նǧ�w����+�W�y�Y����'j|?���O���q>��4�'r��y)��9��ϛ�8_���伝�㜟��W����οV��c8�s��y.�\�'q��s��k8���}���|?�������˜�����s\��Q��P��T?�LU���T�d�ʟ*T��윯W��CT~FϹW�g�w����?��?;_�?��F�s�8C�]�����T�<�_���υ��Ab��F<��e�T+Wʿ��צk�����e>��ն�|��m�]��{�^�Y��ֽ��[J!$!dDH%-���Cji�e�t�|iP�E�x��?e\�OGC�~a +C�b*4m2�1�C�c̓�K���W�[��X����z�k�ׇ��_�(���q2R��zcPCtZ�7���g�ߋi�M�]�YlO\f�Ҹ���;�r�>~H�����7ş�%����oB[���� o'���$�'�Oܝ�����k��qҖ���Le����I�T9je*{�5�I��jJzKMh�Ik*�7A_��X�j+��n{J�Ʈ�ж��2xH���C�P��0���3CO%�˓��N~�r&y-��a�C�{v�a�q��%?G�&����=Z_)��R�J�L�{�w��;�����w����-�n�F��'A���Aߣ +}�e>h!h����m�O����/������2m=�����w�� +��tu��z�л�w���ό1̝�GA�@��N���O@��sk�am�ma��wo�7�V�>�,k�e-���A��@�h�M:�IӠ� +
Z�A74��
:�A74�tC�nh@��b�
:�A74h�-Р�@�h�
Z�A4h�-Рt@�nh�
��}��EO?��A�:h��Cár%�v�W�����i��t���!.��������N���A�ʠ��f��Tr������A�A
����� /� �5�0�y%hh5���Љ�cC�"�I�O�,�cQ�R ��g�d��5'�R�g���V � +Z�@+h�@���V �jց +(�ߊOu?a1��� ��t>ҕ����m��G���q��8�?Z�����gV�PDP"( ��
��
��M���@)�zx����<c#���j>���`�:���,j=�ZϠ�3,����d�-Đ���) cP#��)n`���g��hP�A +h���2k��?��6���X�4�< +h�%saI!,)a��n6Ò(P�.0(4�Cʬ+�u�$�;��`���(�������� q������B�rT4���ub8t� +�ཞ"xߋh�а��f�B�@�������: W�<5��Cƽ� +ω#��3#&��Q��c������&��4e���O���!1��7ށ'ށ_�_C��̉��
�@24��P���hэ1�Ѫ�c�v�ю~�
���ܚ��TZnDˍ��h}Z��h��� +֢,h��L#jZ��uA��Њj����Qר�tA�.�M��v�m��M�yڬ�]��Yh�-��A4���]�9���A1���,6��l�5����z�u1�Zjx9�U��fD����(Pˆ^GJy��(��2�t�
+��)�D, �b�pg��p��&��L��8sԈ����u��TZIb�ж>�A�w��w���׀Eu�y�{��f�Pk�PC!�B����^J)!�j(!�J)!����.�k\� "���0��w�������8�%�猟h�`��q]k]k]y��e��i����}~��Ϲ��?��;��1沬����o�K����[����l����j��W��h'��;[��h�(Z0���/�Vرr���� +����B)O3��~�֣����dm�_P+Y���x��3Y�v�j���%��Z�X��fo�MO�QAk�3[���F�v�Y�� �L0��z��/h��J�̳� +��e�c�)7��1�F�����:�hQ���8ʬ����V-�m�s�W�Njg�`��^es����Y�e�6\�˨4?�=+�r��FM<��ށ�.���yZ.Ə{��[��\|5]���=���r�_��foͳ��؛��[ݞю���'2��l��ul���y�E|�E�"�����J^\C��Y�bG=1��
���D��%
G=���rT�9z��(�M���۫�V��bk��%�����<���
v��>��p�*=6^�o�}{��{r�y�#��n��ҥ�t�7���*b�b��`�lP q�u�%��3��/�0����pQ�@�E�d�E�˼tG�A�d�Q�jRHeJ���9/�Xi���z�/�x��m�\�����V�O٥�r�ۑZ�,�=�L0��L,?��ԅ1�HrI?�_/�q.�,��~���:�ā'<q �A>�~��[P�@�����Us3/|��9�d�����G���|�֟�;[�=�zϣ�>�ۇzΣ���<�9�z�PO��#O-�Em'=���wG��� +NA�T��Dr�r���x��i��8�,�,���u�I��k!Oq?�~Bb�In�<8��Ns��3����$�����<������~���|���?H�;�?�:����I���9����dޏ�#)��W�/�*^E�������#|I��#|E��G��$���|��;�8�Y�"�����?�'�o�)�z�2��� +�ħ�����3�k|�K����<�&��o"����.�K�RRŗ�e�]���Bj����'u|
_K��;����.~������R���!
�������͊f�KѪh%�)�md��]�N�Eѡ�1٣�P�!٫�)tD�0(�QaRX�����c�bZ��#ů�!?V\S��t*n+ �+}���[�Y��� +��vW����x�1��5W��M��;��<�,��E$HH��^B��, ��\��Vס��W-��n�L����5 +�%_� +�O(�O(.���`�H���e>�=?&;�b�� +����8ș3�m�@�7��E���"^��c-�-�k��Z�Sĸ������b��q �o��b�9�q3�1pg<�ŏ�Ɯ@т9������Jfhw�Rxx��#-�0ޏ80Ҏ8p�3��E�$a��h��3��n^��������e +�,�i�<��+`�.B�+L6���a.2T���pms��CUR:|��C�#�v��-b닡՞x����w +��$�QQ�r�\�pK�s��.�Vxyk P�Br +�OS�tة���}PS��N�c�xL�d�G4��m(s�Cn��w�g5�8���9���"^Fz4���k�-�� +���w�/MQ�h������hk�}�!]��X�ʮ�.�+ٚ��zk���+�ڳ+}��{���ڈ�tk�f���k�g�mSW�u�v
��5��-�@�?�6�p?i�,k�6[�]e�B�n��LuU"����LI���Ŕ�M��E�M�Rs�xǺBs������\v������Y��[��K4{4[!�������v�o�f�J��bh�`�[]+���� +�R�Zh����4�];�>�Ʈ=�:�e-�ha�J���&k����U�Ӗ,Ɍ��Ч�DtEZ��㺴�zm��ӺSs�Ǩ������.�u���ˆ�]��*���\k�vC׀ؠ��5dmU�R1F�G�
�P��hvj3��_)�����F����!�t��ŐO��[�y�fk�x;%��V�V0�[��]3��.pҤ1u]�ڴ{�~�뀶���m뺎2���oA����kݬ�39����/�j1Z��vS���=>����EGPBlB5<bZ�(�_3�0ܨ�� +{��^�
�~ô��dʰNio��m���zQG���&�̘dݩF�+�댦Քm�7�A��0�[�u�Ф��L[Ȧ�b�.L�[��V�6Y��(�ѺpqN'c|�c*��Z�3ͯ=,�<���Y('��3ϓ��7�X��L�b�.��/����L<��7��[f��xo>��i&{���Y�Ail�[�����S
�~�9L��5�WS�ߓ��1��O1�����9x�ds(��c{����P�'�/��������W�l�&��כo2;ؓ��t�dRoߓC}lO�>r�>�|Gl��3Q�cgO�>��J�e���0SD<�ſ�B_ẖ��7[�EY�G� +̀��y�H[���e�8�����'-��/�8,i�FO Tc�J��)���x���Ai����.��d�^�Z]��O�Mmb�.�tP,����j�R��3Ylq�,�� �fX�s`L�m:l[�I0����%� +L�mq�bӄ-EWj:m� +}��9�t����}�~'KOA�Kw�<g�l;��j��^�ڠ�6�-�k6���X�i�qI=-�d�s�\OK�ާ�'S�De}�:�M��Ҫz�1�&�m��Ӎ�;�<����;,+�Yk����M�h�R[�9~ +s�u�}7�+�w
;�#z}
��ӽ����kzC��k{W��Ȇ6co�i��������qح�w�lo+�j�v�{�j�w'.߫�w�KwJo���7�p�;�7�p�;3��{c����X9���M����E�ٴ�ލ�^'��w����{g'�;�QMzK�&�qK���K�p{H�{��=ro��]t��[#��1f�>:+Ys��+��wM��Ew�{
4M�����*���0�]�{�p�{K�E:�`'���^;;��7���=,�E�]��t�G�;�w���g�ݽ�T��ߍa�{'�S���[v�W��{WO�1�{o��p��Y�3�v�������gg���<���<Ͼ'��濉��o�G�o�?ƾ!�_�/�g����Ib߇�}>7詠x�t9� +)d���}�ۨc�b߲N'��p����$��p�F�>y�$�o=�W���H� �'��c�y�̐y���B���$������nn�q-�)��}�͑�����E���5����||G|]\��%��p�����>�����l�l�{B6(�7n���(W �Mrߒ��˸7����/�WsZ�c��>`{�N�/ཀ&^p ��8�X�G����\S�W>�ɿ����w��� +R����Р���A�]��o ��[�����+Q<»_P<ΟT�(b��g��To���?&�S��x�w�8 H6�p!QH6B��Q�$ %B��E�a��K�+4#l +z�"��w�~���0�����g�g���|,!|2�L8>�O!<�<�<�����/��2�E�E"�_�_!��7���οN�f��D��Ev��y��e���|����a�(&��M�Uh�Y2�ZF�%�x�l��;/�Ja�.D +�B�� +W���-�n�o]`�/�Y�Z�W݆����HW�u5����.�.�n
�k!%֥ V�77 %�.�nc��0'���+����=�D��M!? ++��&�W�>�4����\ׇ텮�������핮G�z�Z{����JI,��� +n���������ٹI���e���A�q�?�
o�$sB�/ě�,��}�\�?�n���j, +Qh�*A���t(�}�6�!���!ŠS�^E7!ł�?C��p�{���g��G�d�1��Mæ1Ӹi�t�4�8l�1͙�L�Ӳi�q���8cz����`.��2
s1���8.J�s \25���..��1Mq�\ pLqrN�Up�POW�P�� ��:O{�!��sg��T���>��L�%����\Je��En$_��1cP��k�Z���Y[�M��O0h1z;� +�`� +K�]��)�2w�I�=j��J�� +�6V�=n͌�\�&Q +`���)A�Zﲾ#xT����6�sڷx/X�[XY�iﰮ�^Q���J�!���`�鲌sQ��� �u˔i�2fk�h�t�2��C���X�,wL��{P$�%˒eٲjyl�[��>e+5�pk���w�c�27F̓�8ˌe�q�oM�&��>c�訟�����9�|k�Ug���qtM��Y��̓So5Y��&K�����l�4������`^1�[W�u�hQA���k�ۖ0K��/�%�m���ƹ8�w6z���Qd�e�kI�$1��V�1��^�i +�T�A�CK�E�i�mc)6�-e���YKՆ}���: +��Jǟ����9��yK���匥�||�o�Xh�ƙ�)V��LВ�J +ϻ�W�?�1��t&��H��y��[�Ѣ<,;��� +O��+�->�|� +x��{�/�c�����\[{. +��G�� +�~�H9@%���� +0ɟS���i�^fy8�c�?���`������֎���ȏП������&5���>��LI�.�t������u�D^\|d'=R�9;��s��, ?���ԑD� h�D)�����`U���U:���:�jBQ��T����B�(Fծr�W�ۿ;�ۿ�
�����ĐD�����{���}�?�1J���(�-�-j�>��0���7i/�� ���������e�U����y�C1<�� +tbd��)�^�TI��dr)ٿk�
�+C��� �����5���ٿ�#�+�k$ÿ![Qp�a��O!"W!F����?��� +�g�_��`�OW���U��Ч�7 ^�U���U����BJE�� +�v��W�+���_E��Ko�/M��O�O�/���k���_G�w�ݨ�8��m�� ��]�>�ϣr܍�їp�AGq/�E_�}�U�~���T�� +ă� +_�ѻx�j<��Q
�#H�G�(��cxձ�Z����G������?����Q#�!�!2��!#�1�12��� ��'d�����Y�w1l�v�]��x�"��s��F�I���?c��hb���ږ�[��-�0%z/��a? +�<�=�+ + rb Q������*�\a������S�J��S���t��y<���"�b\�}����R.�#W��l@�����r��|��~O����BGh���<����@��\Gh�������C��IJ~���{�F�w���|�{�F���j���jv�f|U�}#[~#_u����W���^N�����F�ڀm���.`�n�;@?9�8=��>�~���@�@|
��A?��`��}�2ۀ��ȁ���D� ݉��'�O�N�����D-G��?���%w��%�����!#d��ߓ�Gr2I&���""e�� +��^ +el���5�J���Ҋ�.���%{���f�/�[���yn���2-_�Fs��E{��3�˴���e.p�n�&q*G��O�Ϝ�����\�#�>���E;��^8��o�̍q� ��� �בl���3�%94��Y��AG�}��|��:��(��qZ�ξ�Mq�\�i:��+sTX�wqG�ֶ�Q��Qo_��c�~<�07��:��ӂ���3�m����c[57lZwۻ�����K��������G�W����;�i�y���3������
:��f�f�:���0��38��W���ȷ�ps�IG�}��^��i�˽�w��q��^��g��6���'_'}���((d"� +Y
YE[ ��K~ +�]�Cv��x�Jr%�y$���%�� CZv�f�8��P{�O@� +��b��� +ʉ�h�F=�oŐ$�c�MÒ�?i����������\����f�<5� "�2d-�V3O�G2ِ,Af�P#�\�I-Ӊ�d
��lTvYB�����,�zd��M����Jȴ�MvZ�3V^�jBz@�N�/Մ8Av�,�t�i���e{d9j9�wH�,R�(�g ����\�.SKr�~�@���*�O����$�t�rNABd�ܖ�܁�r���. ��)ƷH1 ��G@N*Iŗ +32��P�s�Y*�u +�Ys�0V��rh�U֪-��]Dw�jN,Vr]��roR"aR +����\
�ʁ�s�XŴb��r�g|�P�`�'��CŊOC�}E�ƫb�bV1�+!��� +��\�"V^%���s��(Q�D:f�W�q�pv$+4���y��Cy��ՊX�G��!�ʯ�# 7,Zk|%e�}�G�u���V�����ݒ��`.��!�4ș�yG6,��#[ +9&y�(G/��A����2�Y$+_w��SP�J�&/�y K��B�w�8y��*�$�� ˧��cE�.�ux@�H�eKr�7dݲnr���-���n�-�=�&0��� +�4�FdS"��d�@/$2�GE�2-頻�d�e�E�����M.�sY��YT.BA��~��Y���W���%�4��#Y�젯$�^1���E���PY�(o��� 0�C�R�H�U j��KfȢ�����]dp6Fn�t�I%�켐:�MFD2�q'����5�q�����$�Dl%��$�@n59)*��H0���`?� 9�O���b�+A�"M��m��1�|��t�J<IbD�C0�B����V7{�g�ξ0cc~�S� ]E��C��MxZT� +W��"�� \]�Bn��� +: +��p��v������#ȹ�k��A~A��Fڪ����567���~��J�f{Yk������ȇ�a�����~�ȢK��b�ײ�Ѫ���Hh�p�K�bZ{�i���Yϫ��"�A������'���D��!���I�����"}���m����I���V��4�^����!��/ٱ������):w=a�t�It73������V�J �J�hJ�BQ}J�����E�� +5?���V���F~��@���;����F��ځo����t �/<#5`M�����?����3�;������s������,�z��|�^�ž�lTC� ���yBۓ��~@x\��JQz~���}=����E9��^]xs-�L~oQ��������7�* +�ۆ��2<3Y(�.�`A��9�l���S0YT_�Q��]�_��.{�G�+u���� +2�L�-��"{As�`����W��� +Z��w�;�j�DA�v���{%�����SJ|���9z��c���Oٍ�'[�u��i�[-�Tzl�P6��Nl�آ'���GA&-s7{"���:�9��WNF�T�9�^)>�Z0�m>{0�RLSQG��+cEgF��/HT/�\�h���MVux ]��"Q���������֨1��W���oh���e��Ԩ~�Zz�/jl{d�Rݚc�m�U����}�#iz�����B:���$���G �G�v�ʡR|2���סnծm��U������El���S{������ُf��]ٗPq���� =�� ����x[_���l붇Y�Y�춨Y��:��f��n����쮬����������m��cYf��3���3�g�nd�e�S�I�>�5 +9�<-�k�p@���"s��v0��X/�����K =��¨\V��в�S�=�b�3��[���dV>K�\o�����"T�_T\~�^�B����C9��ᓀK� _|Q���P��S���U��rpj[�m3 +��G)ZH�� �{�^�}����V�������k�=�}ι����*gA�]9+�ߪ��o����?�)���7\�����
g5���P�3
�7��n��pn����zJ�db�ͽ.74M�5�Y��-l�Xk�s��m7�ٙ���犷��j���Ɨ�'~��+>r�����0�dvB���KYé�L�1�������9�r��%����SnSq='�I �'�OJϢ��;���;{�>�?��{����etZUC�V�w����v8�x�aͤplvu���K�����
�w/�?�Ȅr� +�v�۹Q�Ī&���O'ք/�_�x��+��Ǘ4�$�������Mz4j�8�q�Q�&y��;����ez��\��o^�k���}U��rŇN�s|y|RNb�����M�'��x`�e �M�6/�Z�+wؿ��?����]ٻ�y��pq�$<*<>\����aW��ó�suHe����������M᭚�|���՟EZ�犷��٫�e=}_��#^��(ѶS���4 �#�~x��<�Ck�'�<����6n��ą���[�;�3�=í�� +�ùZ��(g�)�><�Ϧ��pixb�"�d�H>}fi�\��O��犷6�4����+_���o�h�m�Z�X�R����y�Ë���+�k}/O~����RZ�d7X�/�d��\�_֫Ux}B�Ģ�����SbG'��_���q���^���Ƈ{b[�wį����a�|�:����?�i�oykޤ}��}e��r�Gx���U��P��D�ձm�m06a{���K���x��{�W���������??�NTW�u�{���VL�������o}V����ִ��0�ʧA?su��i]��\���o�+�<�N��ʲ3�2s���R3ʲ:eu���������yYY�g�Ț�n�59�tֳY�tҟl��5%k��]�"+U_
\�h/���4�6�[�جꬍ���^�Z��D���<��*�B��P֜�u/�{\5w��.����>����;�G�_,����;g���Α�g5����VV0���g�5O����yv�IZ��^��}R,���q�"�6�B�St���+�=���hJ��M�K��2�k�7C�u=m�I��E�I� +�e��3Ss&��x�,��{�NK�{���biurS5o:�ȩbh��=�+x�=zoK����RJ*}������7���Л�� 7�3�y�Ї|���E��g��H_'t�]4v)�Ӥ�Ddu��p�0�[��Ew�͖�yS����:%O�Z�ݷ�����uL�㳶�������'W[�!�����^����q�����ٹ�X��D���\�RX���V�|r�� �)ȩ<{xʭ"7I���H�7,F_K��%���0�Xz���hi��$��h�e"��Pw76/P��ȧѷZ?�}�|��%����� �I�%�6l~!��9���&-�F`r'T���69�g��1nW-�KM�j�,bu7%������G�Q��;��F�o(�-��o�u��|n��0����Gdgc +ro���⹉�f�w�?�@|�� � ��cY��鎓Z�+�e5W�I>#2�W��j���l�B�:\G\���̱�Z.W�zH�hBB�v4����|;�Z�d,�>��O����^xZ�k��Bw�c����c�l��d-�Y��qT�6�d�x�[����l+�W�����~�}"r5|��Sd��k�
e��8�]ۮ��g������j�
4�"�o�Zf��wy��} +�wK�dE��!�ad���;�`gs�K)o2��ر��!?�§���Q�͎�A���4J���v�> +̆�H��q�2����}�E����ͮk�����{��ϑ�S�[�~8�r���-6����R�r����!Ԟ�Ff2�犥�n +�ܦE��-h.�5,�$_� �'�G��³��m�i�=���g �����S���>zd2{�s6���S�C�htk�~�4&t,����+(�J�L��a*6<��|`��f�'�<��,$�2�>�����<uC�"�5��YY�´9�����:�b9ǟu��gs���W��S�.�Az��x ���Yh��q*z��x^%�9$��� ��y���h
�Co�C~~f������M��3%k��.�u��r}@R?�hJb�@N����R,��j+gt�S�OǤ�~�����a�}4E~����� �;�,�gz������2������ќ��3^�����[�S�ز��r�l�6�Pۼ+k�7T�~.t�Н�f�0�S�Fn)t��5���\��CF3Td�����F�k�<ߎ�+�=4#W�=h^����a�lNN&�s��5�}�r4�#��x��2�S��shfC���&�J�'4��/�@�ۉE�ƽ^��u�cS�� �{g�0ԛR�D��ӱ����x3��������'�"���*dch��C&�Z��A�2��}I���R��RGY"葃/��ƮE_C���m�ߌM6�g転y{K�AT�GE��>ͣ?�� +|T�$ -hwGs7܉��s����.T�>F�lx���'ьC>���ދ�a�4���
�_�} 9މ�?�h�-C����ƪG~���k�!�����p�(��vp*$��7���Cy�=�Ok��@�#r,�'N�-пS���B葺K����K�y-�o��wp4e'���ǔ"@Z{�+�W O@�l�������_���Ԟ̄z�Jg�Jg�JgKg�Jg�3^�S� �[ +�*a*�m#�x +ѓ�:��8�A�| =6v-���
l��fl��?C���˹�����i�ʻ�{q[���]h� a!L�f%\h��r1��5�l䖰qgb3[hmGNE�O��h�����')�"�S&u�[�+ۉ��:�&��]{���riw$c��8�~�������F�������g#������)E�2� �=�J�#&s/�a�8��C_�&�_vYel�i�n�����?�D7�Js#�V#�$��{��6!�k�z�F�.1�2wt�#Ӿ苽(�����G�}C4�L�a�4�5��_����r�(w*�[��B"��yS{�%,!t;\!U_�Oᡑ�-����s����c"{�D�5���s>�\z��)]��w�ңJ�S%��o"��oro�Ql�F��K� LE�F��Q{��)6��Mo�
�B�դ}���~�r?~G>G���Ľ�����34�:9�M��aӒLjM����~� ���9����k����\3 +�!r��H7�T��T����;���?*�� +z��ԧȕ�,����v�K�'���e@�w�"NY� +��[���ĺ��&��9�`���4YIſ��4f�4YU�Q+�Y��Ռ�'���������P +�L���/�\F
��-��T,��S.���13�y_k��hNÿa���8-Թ� ��py��WᏵ +bU`#rju6�"��VW8 +�,t�1�O�=39�
��-B�
6G�+<z�0�:u�7;���a7��L>ɕgF��>�Ѝ���|���m�a
��)E�eό� +�fK�����b��z�ۍ|%�bUQW����3��v�>s�x�kOҚ��o�i��"�{%���(W
�N��R�J�G�����`}�C�v���#�\�%��MG^J_e���lJ���:d����y�G!�· ���C���e�5�KB���3�s�-�<�`?��a��S�Wc�B�����r��y[��|4_"7��g�~�̺�m��2�&��M�Gw�^7�co����X[�ӊ!EV�@r3��nr��%��(�N#?p������
K�ޞC��(~J���'r��C��&ʼnΌ��j��㡀��*6Z~o��=s�� �'`�3�+�!� ���J��� +���-�6G?A�@(��Z��uG�ۏ��0N�#`=�%� �Z��$ �f�'a1���ؼ�<> +n���'w��~���R��R4�H7$t ]m����3�o�i�.�fp=tH= +��M�_�r@hw�s\J�$x�Tb�j�ihΠ� +kѤ��)~�E�#��LZgaol~�<��<�ߙI��ͱ9
��l!��'8�3ؤ�>��]�odB���j��T�C�Ěh�%'��9; -���u�R��r�G� +S���?���sK��ѣ�X�{|���@4n"�~)�F�3�<{H���0��ΗvA.��C▒���%B�A�X{k��� +�Z3/1�䚹����y�.5�F���"4�h��?#.��>��#f>�>�Po%�U�����7p��n��[\s
��[���ȷ'��\��B�f�]�ep!��mBϩ���}�k'W����dC�f�Ln�F�}6�l��=��Mg�%�K��"k�Ҏ�yrՖx@��>h��pl~�w�6x�}z���|���&p�9�6�}�MޭQN�8N��bo��B�8�Ud�X�K�e��`��p�Ԁ�������?�^���,���"˼�"�y�|�~\�X���Z����ٟp<x��o��wn��r���U��VJj��f�߄o��E~Y�o:#����"�n��{��¥B�_������=���c��IЖ[4y/���=/r`y�_�:M��mѯ@_��V�A؝T�s�\�њ���0�]��94�3�]V'�?��c:�Ϲ5���T��p +�R���<�~���� +.kG
e�
,��t�QoD�d&q�f�:�|-��W�8��Գ��+�ݴ�$�a�Q�!�sV�_i�M|p�sxe�b�K��eES�H�c���BY�����Ѥt���g�Nji*e�CSF]尫3�:���S�w
ދ�E�����-K���M0���g��<��z�.�v��y/��6�A�7������I�A���*y����M!�䡩��M5Ԛ�y��_��gb�5���s#9۴d���䌬 z�.���oK��z'W�o +���J���n[�+��[�=�W����G����O��2��5�Q�C��苲CR�8BvREx�w�ݒQv�E�a�_���E3'���=Zv�E��c��3�;��ٻX��zv׳���7�ճc�����{����+#��g�s={;��#4������izTم��F,���/\L,voF�X����4�EN��#�����-��h���#�ބ�+�~ _G�,4;��j��E~���h�w@������%�F�/�z���T���6���ej��o�A�G��"�}�&8�)��{c���V�֟��hL͜�w��TX��B����ԛEo����v�ʡ�{�-vZf'�%�!�l����c�
'A�
o�,�.}|�>ub�,z�U +��S<�!�4���v19Ԥ�Ч�����0�\���!���m�������zpZSFr���(�%J��Ӑ�*ӎԀ�ɭz ��ּ�0�٧�
=�T�Z=�!�S�A��y�a��U&U��^��=d�l�>�3�/��lG/U�0V,��eȌ����#jQF��[��bΉn�)���j��6G�? +�U��*F������*zx�B_GXԘ�\�!}^=�7ZSѫ�k�y2o����;�k��ʼ���o@�k���QΚl4���K�Z�K3��Xs�a�d~she��١\f!�<'�ر�����cczo-2�� +܃��Ǿt�<3b��ߣ�d���l�>C3���0+��ƃ�*c?��/ ;�������Y��+J��o%"��0���bջL��� +?S�O �^�gd�Z���ԞM/�Xg-Ve�5���o(fT��Y�̼����V=�[�������!+]�>�XO��B��E_�X���� +n�i�A<���P�9_2}�+���%u�3+��)����Zi�(�]�>X�_��O���mf����o�5�1ی2{F�C9����\��c��ƳC+8F�9�mV|�]��6�e�'�LN8�Q�,�v��Z������:��eqY<V���9��J�Ơ1n�̴6�$;��A���\�a\�As�s��������jl� ]����#�f<��=}�e�r��=z�g��8s�i#�o�v�͚nz�iq|Z��M[۴�m�3ue3�,F�Mp�3N"l +9[{@��u�\=��n��UCu�j��]���.5R���>�&������s�u*Q�/oi�+�MV�E����I*U5R=��}v8Jٺ�'�Iz�|B���M�j�nR��m��`��ξ[=�}S�����z՚�[��W�MTO�k��,`���pU�SS�Sj�zfd�I#�d���l�;rx�d��8 +�9��2�N�3�\�.��a
<kG���� ]��ưL5ᑇ�v�3L�=`��q��`,�Űd���#�Qp����q�Mv_���2��7�Rw�����C����~x����]:᱇�����0�����^'�v�ٰ�����yp(���c����8N��H*s`%\W��e�
p3�w�'�x��!x��g`�$���xY�a&LzxdY�)l��.��Ii��<X�a ��2X�jv L���\X iv
T���j�n�j +l�;�nx}l¸��S�K����Q��w�A��5W���LH��K�ĕg���=�ݪ種z����W������6=�{����������b��$[�M����Nx�U��*t�<�Z��Z�T�U{�z�k��Ʀ�A�Tǫ�+^���2�sf��*gT*�L� +m������R��ʆW%gj�ƫ�ѫX�j�/H�[�W��R�T۫��Uh�U��?q�Z�j���ޮ���k����J�ҬnV��kX��0k�UfUX/ZU�*k����n�o��['�3�WV�m۱vc���bw���=�=�.��G��� +{����e�����v�}�QN�It�;��P���T:���6g���9�sN;��EW�!7�m�&���4�����n� +ȗ�Ze��m�1�=AY
*�6�jP TV�|������'�������(nm��qg�U|�����E��O�/�_�-~���� MRz$(���N�H�m�%l���4s���[����c�lsl����v���x�K��~��ް2%?�������Цʤ�vD�2rk���v���v�)gۋ�1b�����6sl��;��q�9�6���\��R�8�?��������߮�h�8�?.���A���)q��؊2�]Ӻ���:��Z�������s�G����I_��9}��nF��.��2*2�f���-�pFmf(39�[fafi��e&��2�=��?�����iұ�W���_0�~��h�w�㠰,3�e�4�7��E���tb�żļy���+˛��,oS��Sy���w�?x��'W^iR͟i����������
i5$sHސQC�Y0d�mC9[�$t)X0���ľs��}��oPأ��p|��Wn/<Tx�.�.�k�롨��E��:N�T��L�y������C+M��;����L�=o��D���?���I�9&�=��9����'o���ヵ�5�5e{{�+����n +w��Q�]ྠ�P8T����P��&4%4U5=zZ]����Bυ~�Z����й�W���tT�6Hk���|��K��G�;*3�ݸwU��F��Tw=֛����W�D+�Nw�Y%I�E��5G�����&�k�M�yj���\���F�U�T��AuT�T_����Zq��� �� ��qmp�u�78V7��-��5�-���.��cu��.�����j�8� n�6�6�u����h�����u��]�k��8�
��q]�}����������jm��5����p�� +D��ok�JL#}��5R��H_#E}��F��y��H _#�)�k�ah����ҾF��y��HY_#�B#�|�<�k���� +��T�5�8,����ʾf���y"���r�v@��L:���M03=%Y_ը5p�1�?z!a���O�p U�e������q����R渣~jv�/�c�r���OM�ջP/�~���ؕ�Ǯt,v��+}�ҩؕN�{�S5BO�슟�~��S,��O������l�D�b%:+хX�����b�D�b%�+ѵX���Jt#V"�}Q¬�r��V~+?v��Pe��w!�R�*�c�Z�Lآ�����H�\;Y�O�e��c��$�@½>S�}�i`
⎮I��эp��n�YyT\ +�W��Tľn_����,L�dqY��ˊ�"=(+�JTBV�U�!YUV��le��a���TJ֔5�4[\-*�VW�a˫Ke���ӣl�
�[acz�-�)��-d� ��谢� ;��2U�R%�Mv�ʲ��AU�J{�l���*[k_z�-�Uc��OO����l��[� ��V<��fKJ�ؚ��3l�#�6[�hz�-{,�a����c�@ϳ�O���'Q]����"[���V?��Ɩ����/���2��/�����+��(���Kj�>���]r�*��=�D���5yH���'�P3�����r��������ej)�ʫ�Jޔ7���I�Dm؏~�����c��=�T"u`��PG�-�:������2R*��}����d�.NN''ue��G��� +P����&{^a���W��r�;D��K���%��S�)E}�2N��^Y��q�;婟SɩD�:f_���3�{j2
`omB�;)N +
tR�T� �0��EG�����R�^lч��
eoN�a�њ��Wg���Yh${wv��rs�h7���ư�����i{|Q����8�wK�%i�[�-C���r4�Y�"}�LP�&���j4٭�֤)nm�6}���<Mev�GӘ!�tf�d���� �`�H��n;���'� ����34G_�h���/�<��������:-�7�MZ��?�"�������o�������ٴ̓���^��H+���������{�i����Lk�B^!Z���:�!�!Z��J��Q�Q�ܫ�U���to:m�fy�h�7ϛG_x��E��[�-�/�U�*��[筣��Fo#m�x[h����F_{h�����m�%��`;�]�.i��o����1�x��S�3{���^m�G����o���O�g�ܞ\�E웲�,f k��e=�@&�&2E���d'�E�!{�)r��%��E�#+e1�Nn�[�6����ʣ�<%��K�yCޖ����q�$G�dm'��Ϲ�i甕�8��i괔�"+�7�n:7������q�%���n����[�}�}έ��w��ݦn��>���K�����z�^:/���+��Jye��^%o�7�[�-�Vzk�Ͻ/������~`v�n�����퀵��!�v��֎��]��;k��vNvNv� +6,6|lXlXlXl�8ذذ2ذ +�� �aU��`�j`ç�����5��5��O�
k�
��>6�6|l�<�`nz�V��"�X�o`��`���b
�\/����^s%������^s5s��j +�j�JO5O� +�ҲiYNV�t�S�3�ɩ�H�;���(��� +�̧̈��_]��%�x���Tѫ�U�'������.QM�%�[Ly�Mu�g�%m�3dfc�����_ޚ(�'��c��F��!��K��_s�\:�hY�2��'�w��{F�7�����n�.���{T�Kl֮;��{R_N
����ώF�4�9-��µU����PN����c5⓸�������|
d;⛱�xc�ċ����?���~��i��&�T���t�k���L~�ע��W��F�������,������N��Y�_���\�܊���7XG�� 4%�3(՟Y��k �gl�1�@7i��}ϔ�q?���g�����qLe�s���*��g]��=�ο�g1��q'+��!�#��R��P ?D�ّɑ)D����dy51��6o�9a�;��zw���_�_��<n���1�B��^�ds��o$����9(�*7 +)��.��袺�.��%�C��~X�ҥu��.����c����+��u%]YW�O��I]M?�����~Z������Y]G?���/��E]O�M��:Xq��5����&��a���:�Σ��|:�.�Љ:��t�;�J{:�N�3�:�ά���tV�Mg�9tN�Kԅ��X̼3#���8����3�>z�z_
T�Aj��>TC�05\�P#�(5Z�Qc�8���&���D����&�)j����Ej�Z�6�O�t5K�Uk�T������j�Z����j�Z�V�5j�ڠ>W��4uU�j�ڤ>S{�Q���R}��P[�6�]�R�շ�:�N���;uQ]VW�5uC���h�-��ڬר}�k�C��k�V�W�W�AuHVG�1u\�Pg�9u^]P���ꦺ�~T������N�R;�WuW��I�V�ͮ�=@��sz��"���s�Ash>KWq(L[h?���q��4=Fg9��*�E�2���6�Jt�~���+�'�7U�%,z�l(I�w��)a�.""B5�����H/��3"��H�Ef���������&��s�~q?=/r����-rS]�W�E~�����7QH����(B/��b 5��hzY�c��Y��W�1���D1��Ib5S�zULS���.��kb��AM�,1���9b��yb5�j!�E�R,K��X&�Qk�R��6b�XMm�Z��ډ�b=���ϩ��$6QG���:�/ŗ���*�R��.�Sg�C�.b��E]�����}bu7��8,���Qq�z���8�)N��S���-qF��^����V5T
��{���+���G=���{������Z��������4�
�o��W�q������m�(!Js�鬌�X��b�d
�Q^��$��?����s������u {�R��J��U��ؗ7��~��=�m<{؟�7��}���}�(k�9�w���!�5�a�}�C�DfϦ������)��� +t�CE����t�C%�]a���C���t�CU���`ߵ��^+�d�M�T�G�I컮p�w�&�wӉt�D��L"�n��}7��ʾ�]dg��!r�����w�<��D>��� +R!Ս[��T��xмe�������ނҭtk�I�нus��[��[�֔²��u����5��=h���Ԓ��u/���0�����X�g��g���q�4�,.p��2�$~��o"��rh�� Gw��]w��'��79����B6���A^ݏû�]�u݆���tg]8t�]����-�n��p���u��[����zn�7q;���á/�w8����]ާ�����V���gM_�i�'��}a<wn���q���-4�f����(/��:S~�Jo�C��}X���+pok.�a�ʰ�*������Cu�}�����`������vj���{�{?�~����$3���D��,+�Ո-+��a�f`��ts�tX\K���̖��ۃ�;��;r�j��a�Tf��̇��{������~<�<�<�<�x�[�z< +_���x'N>�֖٩��|2&O��q�m�a��-��b�{2�= �RLfY5���KX�\�?3[M�b��Ú���,뒕#��A�c=[{��ַiNj+ߝU��U�kK�
���mM�{kw�*�*v�y�=Ĥcg�&!�J���wp�>�'��=�l��UK�'��'Dm×���]�:��=ϙ�IKZ���%~%��YׁH�q�yqELJC�w�-v~����W�;g�y>�� �?f�x�ռ��'N>�G~S��3������0oܙڻ�V�ԟ��v��T�%��O�N�Յ�}6{��!��r϶�(.̞杵�qg�e��!��歶qg���ma�Tf7�>�#�}k�5�T¨�Q���NW�B�C�)�DwJ�/ ��S�����J{7���竣�~ͬ[�m��7Z�(���٠����NU#�H�����l�j��u̴Y�X��=OL�&�������l����u���tq�Pe�V�=�ܪ"�Z1&�4�c1c�#����}ٟ
b�v��c-�3�Yk��(�)#��b���B��"����KmF��m~(ت$��J�s�;+-��Oǝi,�KR����qvD�i�?�k�RZC�+��짣ܗ9�w.��&�h)����
-!ʈ� +�Om����HmD'�M�}� +���j��2.N�8%ܜ������e�-�*ܚ��an���r�6�v���g���9���q'�}�9=���pg�;3�[�.a.s�k�����pw��m�6Ƿ����z�m����-�&,)�~ �ba?����<,;�[�s#?�V����������\��y��h"zp
��>�iq��b��jY)V/��E���y&��v�����kO��ٻ�K ��%�Mh��?aRª�� ?Ȑ�'+����(��u��NA��Ӑ�p�3���sn'�K,�X-�q����$nI<��K(S�D�f�i�ghthAh[�l��p�p�pm�����K�;��%YI9��&=��&�_�ĤI{��D�H�H�H�H�ȀȔȚ���57�-�Vr��� w���=��RZVUU2�0��Yj��V��tq]]7�1�H�|�4e2;����2� Cȇ@>�a +d(��d�a@���@�@F +�)@��O�| +�� +di +�) ��i ��� g��r&��r�� +�W��@��$I ��4�(�4�H� +3!Ha6)̈ �Y�03�fG�� R�%��Ϗda.*!:������i#?�<�һؓ9���T��P�_Z�O�2� +�w��k�pE�G5q���@Ok,������Ƣ��IvCr5N��k���"G��K폥�R�|W>��p�#���X�X�X\Ǒ��X�Ǝ:K�D*j_Y��˽U����n�c���]]�w�f֚�n���y<nr�<�Q�b�x�2��{O7���0}��O��K�B�
3���:X9����|c�\�f�Ȳ�YUX���Ћ���U��T���T[Y�~�9䈗���w�N5�� +�`��x���[��+p�>�7����$�$ +p��Y<:k�Â3�y�({�Y&7���5n�0����������rŤ�Zŭ���aE���z�*�`�M�v��aM�}8ys��A�_يJ����c��8yQ���|Akw�4����(K�S��tW�oz��:M���7_�� QQt�����M��|�&M�92;���O� +�F2_�I��g���I� +�� +�;#��y�4Y���Efw�+q�j�|/���x)NZB}����+_Qyx�Y�[�K-�r��k8ׯ���D�Q�=���kQؚb�<bM�L�Lk&_g������Z���.n?C�^n����� n��ߢ�V�Q�$�;��Ww���|.�b̖m��z�A�\i�{%rK��z_�:��k����Uc2_�����L&������.����w��ɴLF�R�}��"���R(�+j�i*��eK+��B�'Q�6-D%ц�JxP��i?~����������5�;�{�|����s�s��=_�MW�q�I��) +(.O���X�0!�p��#��aa�w�۱m!��]l����A��bWa�R���XCl{��l�U��Uƶ�����bm=I�he��+��qoϜ�v�v����0�~���~�y/֊�z�o��15��� +�����������!�Χ�I��t�՝8�A��*r5��\K�#�!דȍ�&�]�=r3�>���{
�Z��z��j�WR�+��מ��6r`5`
`-`��z��F�&���� +��]������ط��㧧C�+��]��@r� �ª��M�|ϟ�����$���Is�̤! +��5q,�"3���i��G⽘��T����`~&?��G|-�|r��������U:e.>.���O�ϊ�O�'{T>;X��p�����ȶr��d����gr�<��/6���Em��äV�Ut�\�p` ``0NLMZ�������0�\��R���aXߑ��i���,m�� +�Qs)�&U��p3�>t���W�0���1@��82�GTMdb�� �� +qE��u C6!ld�L��$9��!�b�7��A��#��C�w�"r��BD�$qQ��N�R"�^�}��� +�"��s���?H�,�[�~@��;p��Ίʧ�*��gH��f<�x�e%��*ڷS�crM�CH�7ϙ�],��V����p��)� �D����F9R�V_ѴX`�`�C�C2D�-,����΄���`4l�P���V!?��0�h��@��MӍc��Y,�55/����rR���1��j&�;ԋ�6U�x)�BļR�]�ɍUL.�h�.G�&�(�h�����>��3����'Y"�?TH�����lW#w����p�=fv;�d�2@Z������ăiV�'���'ڟ<�h���.C��՟D���++2�pqS?O|��2�����"�F�#�ݗfYo>�m�l�Qݨ�v��b{�O9�Ń���d�*_�tOi~����"�|�m��QW;�_ɲ-�>Ma�L���`9֦�hLj��k�w_���b�?������Z�ϗҌ�/����*P�:b_HJO:��t��!s�B�r���볈縜�s����g�o2�j�0;��X�9Q1{��X�7#�*G�k��:�O��B?�X�D,dP��J/6=��G�>�/�����ڨ&MGS]S2mTo*��l�o����/v�SaJ�k�t!W��4ez\�1��.V�dz���_��
�����SX0{�h�
7K��^K�ք;9�#�^�`}8��'����H����)W^��~ܠ�v���R�J��M;���=LΈVDz�)��uft�ҋt����d�&�"�@����/8D���d��4䱙�"�3)3����v�4-J�{����\s��z�̵�-+�����~���)�Y��"f�#�rR�+ʆ��BUf���� �p\3���B���o� +��VJDW��x����Iar�Έ��**2M����^��yx{�����":��-�,H��"�]�c�h�4<�AQԠi�i)�������B���P���FU<�=}U���=i^ި����wX+�Ws����P���A�^�8�;u@k��tLc��%�|�d̉�P]
���P �k�I����4 \��$�y�~�w's��?YH�ⱖsM��_뇶�� [�@Sv�,����J�F�#{B�5�ޝ�����HX��m��iMڲwh�`
;?{��i��)�UQe�����.s'q� +��-3�[��Ժ.��np �7G�z� ����]k������J�0�:j�e�솱K����Av�cQ�����GWs,=ݘ���8�-�S�ȳ1U��h����1��^Dx�I�B:u����Zkc�1����<�n�ɝԊ�/C�������Dns.l���}yY\rV,��(��.{\�x=4d�@o���̹���I��;0��M�"؉�������*� +�4������VP�^,���,:3��Eu5h��4=
uL��'��x����?S����.��w��w))��a��~@��}�r���@��mbW���_}}|��J�>j�r⍫9'e�n�?�rEB����GM�~���x讆3!˶�Ĵ��>��]�b��|�~���ةf��Yɽ�������$Í��Х6�8s\�Kȹ��P��%������!���x7��sm�� ���� +��_t�wU����O;b�l��3�7��Y4�QvF$�Sa0�&g��g��d���rI�Q��O�6_���ei[U�Ɇ����11.-,,���:a�5:B::m&��g(�*V�6W���ҋ�wfu�ͭ����f��ּt<������1r,N��0鲣�r9�����e�yePN��1�ޭ���'�U�2վK���Uί�[�+��RA�W�F�楪6y�9�� +kK�I �������?�,}p{��~I��#�>�8�檀�gA/O�����+�]Z-gg����-Q]I]_M��Lc�*L<(V�������6��'rzL�]��_��7�j̀o!��NO��w'$�0Q�7��ĒS��ۧ;oU4��zI �=�>�#ꐮ-YB�Ą��On_�IAP��B~X����Ȑ���������1=�j?4*D6�r���:]��۲g��X��w_�c-�pe*���#���!��'������N�B��NV~ꗰǹj��{�8nJ�5�G�|2��*#Q��v��Ӈ2<� +���U{Nz-�{+�2'���W�K�L�����F��l�W=�8��sU�q8�\�a#S���"r������&s�Z�u^��<Oq��}K��?����Gu�� �@��p��3����H7]����o-J�u
ٸ�y�U�t��{G�g�GYi���B����p��ї�rwe�ay�
��VF�46<�^����~~Eb�O�EE��$�ە��S)4~p�@������N�X�Y���|�ô��X�ܹ�6����}��Y��?�h�[�Q��� +�p�|Eم�����*�7l� +���S~%��}e���%Qǻ�[��IA#f���H+��x�f�^f��o�x����R�uIRj\Eh�#_i�Go�4���f9������W��2���ko���N�}/��O
��4+�q��\��Ml����Mot����-������U�R��>>����k��î�G��땙U�s����h]����
�Ͼ�A}��̫LAVȰw�ݽb\���/��|u��y����F� +endstream +endobj +293 0 obj +[226] +endobj +294 0 obj +<</Filter/FlateDecode/Length 79196/Length1 174124>>stream +x��}|TU��9�N/��$�6I�IB $� ��z
� $�+!1�&(��Q\����d@��a�eյ����b[ˊ���{�9!������\��s���9�)����9��D�cn<tlnI��)/��t,���0���trɂ�����ib�?V:yf�e�evƮx�1i���Ҳ??�5g��3�?�2wN���c%Ʈ~��]S���;�a&MX���as�������곪���֩���g,߉��kVu(�����X�5���[���v����ǜ�P��ʒ����
+�֗Du�~���YG7�U�~�s�>����э0�o��H_�tzcsǚ1���� +�{�����|������OX�RS��G�w���7�R6W�iM��,�� _YY�\�P��1��֖��>C�+nP�[��ZO�M�e��/��T��?�&��9���F�{>Y��ʯ�ο������OM��43�Q@=�e|�e��4��4 �V-��lӳ��s�<Vǘk��^�d]6ߎ\��R�H4�J,��6K��$�^�$�,��cR����G�elV��0?c�}��R���Uj�|�>J)Z�:��<�?����>��]�����%�����]~�W]���� �� =�.����kҟ���N=�-[���K$DB$DB$���t9��d^���ٗ_K�G���t"!"!"��t��_�� � � � � � ��"�Ό�H��H��H��H��H���� �����:���ֱ��h�E����
b�X-kc;S�����v�a�}�0����'��|�%�fԑo���3�TK}y����7�w#$��h�_J�+�y����?���r�������.[zܒŋ*+��ϛ;g���3�O�:����x�$�� nj7��p��Qy�9ò23�}�� �.��n��MF�^'K�
+��U)�̪�.�7uj���U�P=�PT`*;�LP�Ҋ)G���d�Q%�T��_�;��l|�0�ԧ�-�)=|Ѽ +�m%�J%�_ӳ4���v$��PC)Mh,Q��J)
��j�*�*A{�VK���Β3�u[��V�`����gM����J�vK�dW_�3J�k�s�U��x��*5+�� +��F�-�I�3۪t{���'[^�m���V/��ը�%�vum ���C|%�!�>H����|%��l�1��<��p���o:���鑖�Ő����Rb���/4C��C�/-M���?[�Dp� +J+l�'��yٕA�J�yP�j�F��_�ʗ�NUiU�gUcBp�r%g���d��JPάZ^Өru]�������"�/��W��Z�=<嫫0�&�
�*�y��`�o2�AQ砩�B���-���p�`^i��/�����:���Wq��^w���=��J���bLJfiWEm}�[����W*<iA%�W髨�Tg��y�K�ި��؎*- +�#7f�� +�#W���R��o�xd81]ZR���� +�a��.��#�AB�(��f�j�⩞��4 +?�%O�O���i@[N��D��ɮQi�CC�Һ�<�Q}����~������QäN�T�%g`��&�ͤ�b�ds� +_��҇5�[��M��6�3�}3�-��f;�J���BJY�EB*�,���i��S�tr�Q��D��e��(�R��d +vmȜV��0� +��PT6�g�5��^�Ց��w9cAO����iB�0���.L��Uvm.��f:�j��]]&��W �����R|j02�J�t�s��I�ӄ8U��B�"��Blb�' �N��B�b�����C�v!N�U�!V +�,� +!N�x!��h�A�z!ꄨ�F��BTQ%�2!� +q�K�X,�"!*���X! +b��B�b�s��#�l!f 1S�BLb�S��"D��B�Q,�d!& �b��8F��B�b�EB +1F��B��@��B�1B��B� �+D�Ä�b�C��b��Bd�.�O�AB� ��"U�!����$D� B�'�[�X!b���%�S�QB� a�"�Y�F!B�� !! ��`a�������A�B|/�߄�N�o��F�����_ �_�� �_�O��D��� �g!>�OB| ��B�Q�}B�'ĻB�#��B�%ěB�!��x]�ׄxU���/�/ +���� +�O�O +���� +�W�G�xX���xP���_����W�{��[�����N!��v!��[���B��M�[��E����%�MB�(�
B\/�uB\+�5B�N�� +q�;��J�+��B�B\.�eB\*�%B\,�EB\(�B�/�o�8O��B�+�9Bl�l!� +�%�YB�)�!6q����ŵ��k�.�=\\{���pq�����ŵ��k�.�=\\{���pq�����ŵ�� !�?\����pq�����������.�?\����pq�����������.�?\����pq�����������.�?\����pq�����������.�=\\{���pq�����m����.n;\�v���pq��ŻU�[s(u�w�P�t�N
��m��)D'�Rm�
�ZOt�:����I�5��b�j�UD���A�v�62�J�j%j!ZIE��V�J.O�D�H�@TJ.�Q����h9Q5Q�2��T�8J-!ZL�������X��D�D�D���%�C4�h�L�D�C�i�iDSC��)De!�Pi�3TBTL4��&Q=?�D�7����Tr�X�^DTH4�h4�(j��h$��O4�h85�G�K�r��e
%B�E4���$ʠ6Ӊ|D���4"��y�R�R���<DI��٠D��P�P<Q�D�d�!�&rQ���A�(";���D"3噈�D�P�\�>�8�#��(Q�1�xQ�V���A��P�����wD�}JX +������D��Jt��D��n +���7R+7]Oy�]Kt
��~Kt5�N����+��+�vP��D�]Jt U��R]Ht�O����<��Nt.�9DۈΦ�[)�EtљD[�6��ՠ3B��Ӊ6����ӈN
���!7c~J�=t2�����D�.����k�V�"�$� j��ۨ��D�!w
��[I%��V�@t<Q�k$j���S�:�Z*YC������h�R�qԳ%D�iЋ��JzQѱ�݅�� +�8�49]�D�'�H4!��w~�Ƈ\��qDcC.ui�\S@cB� +��kh������䈐K��KݛyD�T=��0�(�J4��"L�I�r�^J'�Q����4jL�V�D�T/�(��C�D�rJ9���C�e�8"7Q,QQ4UpQ'DQDv"��RI�D&"#��Jꩤ��2�Dĉ��ϱܫ��Q�=����8 +�:�v�D�hV�� +��x� h�z��j��@5P,��K���"�� +� +�����| +|����3�!�'��}���>�=�]��m�-�M�
����k����W���������g�g�����'�'�ǁǀG���#���C������}���=���]@p'pp;��
��n �� +���nnn +��Vj���k���e(��DӇK��V��u�N� +��=�R�N�ҝl5����c'��lC��Z��G�:-�8����9���)�d��Ngg`ֶ�3�Y?�:�_u���l��9�ܟ�ێHmG<����v!��]�uq9�q��b�~��]�5��]�U�Rs�e���٭�6v���x�<"�R���>X�n�c���~o����c� +�t
�
��*�G��&��Vh�V6����#�ԅ��[z���;x�r-����?�/bW`^���UU���U�h����N-�;v
�sq����:���
��7�]�f��z�"��ݢ�\�u����`&�`w���sy?f����-w���=X!��q�<�(,���@غW�Q�a��j)J=�� �{�=Þg�"���|��K�e��C��>��{A��b���
?�`K�8���p���Ȋ�,6�-����q����ow���r���\b +.&�y�ߡ��w&%M��9ʰMvM��9{&��;��;���;���袼�<��}��s~���(o�W���]i.
�Q��k�
ʕF
�=rd�iTA�oP��� +F�� ��O��Xa� �i.�tp�<�A:�7q�H}j�#�n�K� �9�3��3��e�A֛�Yc&���t�FW�;.%�d�N�s������G�J�C�n�ȆqK&�˗XL��`�IMH:.m�BG�Sg�q��L�h�-�dɡ��d��d���:4�qvs�C6<8���wVMh� ه��˳�&$$��}���g�����]�ow�4�h�Ue��OMa�YP��t��XPʒ�"���o���? �>z�5!ޞ�0"��͚�
D�6!:��5r"�{%{������W��c�F�t�1���X��Gɪ�}�~c�:'�R<�1�t�M�������;R��Sbݩ�V�w +7�*� J�q��Q��`��|�5ɛ�����ؒL6�^o��t
?\`�e��b��/��_74ݖ��9x�|]��D�9&ōw5c�A|�E3/t/��?K�b�fs��Q����
l���Xg�����ej�OC���0�Ե%���Ķb��c���M%�����m��\9L����I)i�5i)��?p�����lD���7��;��C +ٔ=��9�zx��<Ȟg��T`QS.6hTmN�UNɬMit6��D�Ӱ/?N�.*r��w�>������qn}�1F�OT��R�V�/��,�^*���Do�13a�wX�>D��m�iC����V�N������6�l0����>>HQ=~�@z"uh�U���c��옻�Er���v�� �9���;��]�_��R��0 ����8_�wx���ʾ#�N�[���r||\�<`�v��ɞ4�E^�H>��A[Wi�&LZR������9��欴?u��� ��c��l��~5�$/�wN� �NK�,k�T��4�iM���8)Qz�7>;����<���Ȫ�����2q�m�{'��VO���ԝW�t���"u݃�3�������;/��5���V�%���Vf-��E
U�3G����5K?��ڥUB���>-�=G���/.�>�r�vZ�cS%�yc�FWr�z@M�tq���f�/?oٜM~c�7k�|]c�'��/���7�L�g-���{y�=�O)-��F��)��C��ǎ_��_rZ�1�C�G���R�0���� +���:�g:��#<d�{N>�>�=�o�h����w��Ȓ�o2�����2ͭ�G��{1~��x��8�Q�n�� ]/�&S|J�;q���>S4F������1c�آ{Zz�M'syy\��l6�bsg�94YM:��&�K�j�4�d�C6Y,�(��>�J�J�.��F���9q�=�'2c9�,���mN4�Y���/�u���-�f�H=���,�#�KLs�9y��'/.JR&-�8b~�ё��4��5%+��밥�g�O˕>��u�ד�F��i_�>';3���M:Y֙��幹JA�/�lTZ�(u�VHO����2wJb��c��$���'r�S[����˽�E��G&`�z,��u�EIgԛ��ˑ����N�l���04��g�q�K��(�ޠ�&d��ހn�ԾK 6�)ެx��d��g��}���/en6�Eݮ���r��co?w�?��̰�b���gT?����.nr��=>�)ʜ���I����7+��;M6u�m&�n[�Mo��l?�e{�VOvZZN�՚����߷�ߦ[��D���I�Lan���s(����)�ށ�>�'�T�.4:<�8���]���d� \�����x�9>39%=��G��2R��i���A%ep�՚08%%+�bI�B߶���e�N�%O��x����^ +��x�%�-m28㣣�xKlZ<�X3��r�mx��Y��?/T�#mNg_;Gz^~W��d0=��uN�q��;'Q��p�J�7�G:���x������vW��}����|���cp��ˉ����Ș�1�r"�kt&�c<QƏ���p�E��[�� �:��1e�J�����1ڝ=�c3K��q��K�C�ʸF�:���~��In4�:��d�Nr�6�]��������U����(�q�/���q��a����nZ$F�H<��ֿO���H�ğ�C#1#1#1#���Gb$Fb$Fb$Fb$Fb$Fb$�z��ߕտ��'g-y6O��@��iG�V{�Z�(-�j�E�:&�}�ֺe�,Aֆv#[%�k���yU��"�
k������-�?k��v��(�V��5�|ccXsf4^�3��"��<�6��^�PF�lf9�
�F6��ks[��̜��am�s��[Y�yQXۘ�|FX��L�(�F[>T�b���3i�3i�3i�3i݀2�g҆v�3i�3i�3i�3i�3i�3i�3i��La�l8� +�������m������b����w��ai�Z�r�3��@T�|�X#�ڵT��W�Y��Ũ�e��քMZ�j�m�jeW"��J-��7� +P�rMha-R��:�.E�n�r�(�h}�D�Z��
Z+-�V;P�9�N���1�h�Ӿc��e�6�zX���}o�F�h\��R}/��9ô��5� +��j����-�hg���p/W�Ҭ���T��1��[����F�����Z�E�V@��&�{ +l�z݊�ªz�^��R�lU��o�i�E�W���V�Zmv۵vh�]�wT[�Ơ�:m��w�is�\�+�U���pݶ9�j5����ߤi���RZ-[���|Xۿ�j��Vm����Z����,j�N{�;��q���#�PK�)u5,�ӏ�j�ߵ����p��TT��Z���#Η��8M��PGBc�SV|N���صڙ�R;��r����#|J;�%��Q���V^�V�V���h���QK��v����?k_�yZo�=@'�6W�l͍J��ʬ�����������������ee�2i� +e~SCcG�2����mU]mnq����mMJS�R�4��ֵ�TګW�+�o�Wꫛ�s��T���}�4I���rk%Dn���P�TqFS��RJ�B�"�2����QduС�3^&S�A(�Z)C�Z�ii�&� ���s����^�]�����s�{g��};q]���.�<{N�lwF�={Qnf�+sn�}Y��)��fO]������`���IOq�f��س�S2�.7ߑ�3О�0���dq�Y���veQef���lr椻� +r�Yًh��lj��X��>���]�RR�vW�ݭ�A�(b�pe�]���g��j��ȝ�禰kAz�=�9��)����\���=��O_j�N!�laS0e�=7K�j�˝�2���5��Ҕ셡�ReN���M�ҳ�����H�nu`d�W?�8�c�%������NIK_���@�@m�%��u�z;u�g��s���M��gOK�ߓ�h�{�5rР�K�&,l)�@�A���Es�S���Ju�Y��� gU�����|.�E�|{nN:_N����H�^�r�����fM�1��fk���rb�<W�6e�te�f�Q��\9Y|��UV����J�t'�[�{Q&F�u���/���TUfK櫶HˮvEl�qg�RC�����n�R�(�}]|]V�j�N[�43cQJ�/��)��b<ᢱz����u#�Wj��g^zF�]��������Rr��Zߛ�'֊��I�`�-:���v��Ro`R_> +��s�����l6�<��ך?*J�_p��۵����۷��W\k��5��p��;t �x��f��Gͯ��P�+_RWު��Dq9�p�yǴ�ۉ��ț@���گȻ�M�.��C�!七��W�=�&o<y���rL�~��y���XK�n�H��ȑ���W�]�&�u�D�������b6Kf���o������l2����g�KF����,If�vV +�z��e�s�d�~Q�E�V�F�:Rd�I
-U$cć�j�HI�W�#R�#�"Eڊ�{sܛ���z��(Y����~͚5��&�d +WS`�t���z +�b����*Y����Nj���9�S�5$�QR�m��Vf�t֖�µY�ڬQ��]q\qܖ�[�n��a�����ͫ�6�d���7�����=�l���p�6Ig3\^�ͤVi��l�Ov?ٽ��#+2*2�M9xp��/����E��(���Qsw�sGiBV�,�E�tQ���?Q\a���տp����u�}j~v��87;}�H�Hq����Bw���v�~��;��(a�P����K�J�Ǵq�+�J���r���?Vt��~Rr�D�{��{�b���&��1��1���AtӮ���w��O"D��$�_��,t�U=R�r����q�vܧk�R�xL;�\��C�Վ�v<����'�(��E;�W�M��v��h�i�q�v\��ю[.X�@�X;z��^�xX;�k���v�o�i��(�WG3��5�L������uO��Q���h�W�yշ���y�U���QQ-�Kj�Z_)!�������!�42��nm��w�6e��[/��l/���u��˯;����>�/��{���#.��$"um�o�m��(�{f]~=e;�FH_���FG�
�`]�X�{K��آ���w���6�)�"�1�������VI�gko�������u]~TZ�|�ߢVE����E�uG����u߱\Tm��Q_5!�:�&����URSt��ԗ4�4�4_K��LQG��F�~S8mi��US��j��$���b6��@(�v�JJ
��J��V(iO�Hwv�ךw:I:��Ά��α��vy�Mڨ�]WMG�\hIq㺶���xՔ������QͷWK��)T�D\C|�����㷫����w\-�j��k|u85]J��_о�@�)�F��)�����p�O*�5��Ҹn�k>DŽv��wc�����"e��Cد�_����߀��ԯz��||
�v�)�4a)9a֠���ss��>Ck�=�0Ҙ�q�g
��3�>�wD����#:>ڨ�
�wi��[ǼN�����c�������1�8�q�ߑ0a&��=�Fo��!�k�5ߤ)�='�I�>����'��R�䵓_�7��trʲ)SNܛEڔ�$Wr��ÓK8W�H�Ir҅�Z�6���NL����@�aj��r�������I�O��o��@�ɴeS��L�����ޙ3����3�0w�܊�Z>�
$��l��3+/kuVqVu��XlX<d���sg-^�x��M��_���=��fge?��=�|�ȉ͙�3;��r�0�l�k�����6-1.���%�/9�t��y����s�e罖�#�"�g���?ίȿ�̶����\��l۲�����_������]~|y��q�.{����Vd��p��Wv]9o嶕�V�(H�����+��g��%��:�l��B3�/���+G���$�ӯ:��<m��sG��KI� +J/�м�Ρ�ߍ��e#��1
̚��}2��$3�n���~Sԑ�9��1�^ij٨��7_�;C*1;����P���[[�S�s�����\�V�z?�:�L��ǴڎкM|�ҥ��wŪ0��:pi%ت��g���?��-�9�)m��fy�JG��|s�L���~17������9�Pu-�uvlq�9..��Z-q��^� +���M��ij���^�~�'�K�̨W�g�Ϋ?�S�3�^�7�f�)-�:�s�o-��sgZ\�Òw6��1�5�˅N'�U�-�O˪۽��� +��ڦ�6�9(��s��D���R��v�:��S��vg�U˫硻��Ѷ+��m���mV�Xj�r��x��x$�2vli=�/��]���ɝNƍ�=�����j�SmFl�ơ����)���;QuSU".��+���Uoڌ��;��e�-
�Z �ȡ�~���k��z�i�g�|CB�!!B+\�!ڪ�&�+\hu����e���6��9���M +�����%ԕ��K�Z|ͩu���t�Rjj]�!i+�5'm�q��Ju�=J��s���K�������]�y��s�-�tV�.�[G{��uL��hi�vǨ�t��
�=�=P���u�����Ꙛ���Lmg���4h�#vG���A��bԴmjA���F����η��V�;�\R8i;��7"��t�z��A�m�n�٢O�qmߕN�ڝ>�K�JN:��K�g$vn�٫�;4��Z팤�Ӳ��y��Z�~mr�X���EU���!%F�xhq���K���oZ�ե�{�H���m����+a���c�{���3D;�La�g+�z�.t<9W;��3�3B��,t��g*GxSO�(�(%�� ��i�l/� +��&b�"����9V���]H�sZ�k#oym�h�y�U/"��Ew�����_��^�uu9(�*�9!�����1�Gi� +�/�w���������!�1@�����ۮZ�j��t��?�Hk6R�n�'ډD�F�~b�)_�t�9J�p+M"��Rȃ|a˔�b9< ++`%R~
<k� XO�S�4��Oĝ�Sr�(��$@�d1J���t�\b��W� b��q��!a�?b�~��^�������7���-�&��@)�A9|��J8��"�+_G�T�F� l2�uР5F�Dc?>��~�[��P�6.�LX�J�q ��m�hc\hc�@�2~�f1��_�0
�GD?�f�bȆ|(�� +eP�B|Ǡ��?�V �� +��h����k"<���(Wq\uG�����:�`�t�N:X'���I뤃u��:�`�t�M��V�f��͘-e̖2fK���~Ƭ�1�g���~��XƬ�1�e�z�^�,~�ɬ�����U��S��*�l�G� +b
�h�����X;���Nk�������`�t�v:X;���Nk����e,z�^�b)c�Ϙ+e̕2漬q�8뛃�����`�xY��m�+^�7����_J�/�����O��O����?�_,�_,��K�/�����^�@럃�����P��r�ϳ?{Fy&2��b>�ʼn�8�6O���'菲�*U~җ�ٚ{��>F� +V�g��\ͦ�Q�~��q�}��_R6����{P���W�,#g)9����g��jJ��X��y9�GQӓ<���j���N�'�Ўa�ډ�,Ȁ���`1d��b����E߲���g��7�"��?����jыU{:��XV��{�k���>�� na=�V��Dg��=�5��b+�,��Cb��am�5IDӲn��-�F˺Ѳn��-�F˺Ѳn��%;R2��)�����d%�(E�(JFQ2��Q���d%�P�fJ����ZI%m��Q�FI%m��Q�FI%m���%��C�?g�5���=B3jU��;p���t�_XػYػYػYػY"��k@��I�4�h��R_�Z��a + +�Y������r���߅���+Ցkd�,�8";)g#�����H�#���:�H�#��D u$ԑPFj��H1�#t���� ��g�z��zAo����З��~��@� `��a�ap� +�a�#a��a��qp� w�x� + +�1X
�������7�
J��</�Fx6�K� +s���o�x����-x�+��� +����7��ߡ��]���!a3���-"FX": +kD'�] �ո^�3�V���r����J��e�$<�f�-<#��<��F�l��Ffi��ㇰ�gE��r��/�����g\��H;���K�Kxv�σ�;��+8"l�o�n�팼�˹��Ҭ͔�h�s����b�9gwmdwm<��yg1��b�4��֬�1E+u�v�b Ni6�CW���:a1]=�}��t#�~p3���9XeM���YW��:a5�� +��t�.���Aw��f�i��f�iv@O����Q�3�m � \�S0��y�L<��[a8��ۈc$L��^�=�<�r���}0
T�͏��9�r��}����y)��
+a��I����ڛ��L�/�+�*�C}ۡe�{xh�S�G�9R(g"%�JfE�D�H�1�� l��� +م{q�Ǒ���%Ց�W�`��i{�]��3��������E�n��k���nv���-�Չ����O7��X��|����M�{ٕ�PN��8���e�r�2�P|�u�$<O�z�-�.gy6�s�<� +ZWA�*pƅ3.�q�g\8��θpƅ3.�q�g\8��θpƅ3.�q�g\8��θpƅ3.�q�g\8�B� +�@� +�@� +�@� +�������ċ���ď����:�O"����O�ߧ��BgT� +�Qah�W��j?^�ǫ�x�5�P# 5�P# 5�P# 5���D
'j8QÉN�p��5���D
'j8QÉN�p��5���D
'j8QÉN�p��5���D
'j8QÉN�HB�$�HB�$�HB�$�HB�$�p +}���mD�/!�X"\I�KE<�A�=hS�6����<}������C�{����ˉ���ˉ����iG9�(�崣�v�ӎr�QN;�+.�+�&q��>渙�b���� ++`%��xVC!���a-07Z��̍V�F+s������hen�27Z��̋V�E+�y�ʼhe^�2/Z��#�V�<uf�im�3ƽ�q/c܋n�{z�e�z�^Ʈ���e�zi����i����i����i����i����i����i����i����i����i����i����i����i����i����i����i����i�:g�T�C�(�E뜥FT%�Qϫyތq�"n\$oy��2R,D��H�mB�7��8t�.eQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQe���H +�f��ӹDw��G���3D��H�����2C$/��f��>�ۇw��n��#�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B�*$�B��Lm� ������nZ���)��{�x�!��DL�x�"�"�C�s�x�!a�����ߺ��Y���o�z�/�ܽ�[����ߢ9�<zD>�Q�tk�Y���+��M꿫���{Y��������z\=�� i�I�90���Ȁ�� � C6�ra ,�<ȇeʏZ<h�i� +��X��6*�t��Y�lz{�r7�(�a�rDW +`� ��Xa�D� �Q?��A��~���D� �Q?��A��~���D� �Q?��A��~���D���/��Կ��P��_`���X��rV� +|����(�i��� +�((����2 +�((���h�1|����h�1|����h�1|����h�1|���w
���C>���|8��!�pȇC>���|8��!�pȇC>���|8��!���7h��V���Jf���m�h/������2�h,����2�h,����2�h,����2�h,����2�h,����2�h,���L�21��(�L�21��(�L�21��(�L�21��([վ�K`)�߈Q&FY�g.�_>f�iOk#=�����{�%�Qy3e��mFF�)FZ'F�E$��(���+`%��k��'�zv����V�&J%�p +* Sm�3(�P)E�@MQpĂ���l`�hd0$$H +��� +;6�{��U�Zȧ���ױ̘��M�:ݼ�V;��֨*�&R{i�]��n� ]qZ�*q�����)>#���Gpv��6�:r?u�C�����Д9!7�q��D�й�C���Q������&��9����cV��=���0?���ϸV�|��5��]k�*�u^@���hq_gh�����R3$$5�a(t�5�Ú\�jh��%���v�܇�xH�?`բ}�cյ��ɪ����U7�j�Uײ�NV]˪kYskv�f7Kv�d7Kv�b?+��b/+��`'Yp-�e�"�e�X�Ȃ��a�"v�`'v�`��,Xd�N�d�����z����z�,��b�,��b�,��R�,��R�,��R�,��R�,��R�,��R�,�����,��R�,��R�,��?�d�Z�ԋ|p/�f�m�
�*~6&����L�P���S���q���pG�?����!����G�a4����V{��_��fğ +�O���u���o�G�KxxXR��%�zANzE�x
��z#�m?6q�ڼu�7n���b�<��I�v���R��u F�F�xz�'���fs�bn�ސ���Bޓ��7<�����ġ�x�x�_]�@+N?�����S-f�4z/��9��R��:��7=��W��Վk�fޱ�wl��y�[<�-^����+v�<��G��>�O�� }<a���l�vڵR��d>i3�e�'����.��]��sK�ư��������s88����S=f~�'6���~R.Y`-��zW�R
�HɆB;�5x�Z�]]bԩ�,�6
x��a��'x��%���o���%z�UK�� +a�7���T��bH�a<�n�#p|�.>'�m����!����0?����.�a6g��M��ú=bo��p`� �6���,1�%���T�������A�m�X}��a� ,��brO�Ds�(\�[��W�a֡��~�7Ƿ�cc��& +��sk���8�'a�5%L���枚��ƚi��13̍�yd7o�h�?"��#��#��c�?*�����wD�;��������~���TZ�꒣��.k��k��ֽúwX�k�!�t�/]rK���%�t��.���\{�s�\�%Wt�]eY#N��������v���;�"^ �RKU�ױ,<���V���[�0&�.,Nфf�džpK�o���;7;nA+�FSxKm���m��y�� ���R;��s7v��rS��]��"��rԊ�^?ۇw�~Ǡ +�!�R�*�m>��l�W��#�� ǃqcH8��^�[/���7�G������86�v|���q��wN߉Or~2>���8�����g����,O۵)vm�]��ۿ$_��㞏�c�g����yaR� �O�S�rQqa��>:\+2�y�/f�!7ėFG�W`xX)��!7<��F���W��!w����d +/��K������+���m�����S��k�c���x�{f8��02�Ǭps�w��lR�I�O�x:\ �.P�&��)<p +}p�*7)����<뾅�-r�b���Eח:_��r���ko⯮�a꽫������-`��!{��)���܆�X�^��N���r�\�9>�{�0�m��?���\�`n;v�K��.��\?����\��� +�k�]
����rNJ0F�#K���t^%{d�kr���� ��!�C] +*}A�/��}G��H���h�����p����+M���E���[��5���^���[qn��{�
"�Lu�Lu�Lu�,0E���f���4�G��q���w��߇��d�ke�?T�W���2A���*�/�D�<Q����+b_��De�h��(\" +Eݿ��+D�<s��y]Ĵ���DI�(x����������K�R��2��� 3����*5O�Z '<��B��ν�gK��s�����թr-P;ͶM�Z�z-��f����T�������uA��(�l4�V�:o���켜��O����r��r��f��,�V�<�ת��e��*�l� +�@lv��Nl��|B|v��'���� lU���%n�ma���FV_#6;U�U��*~��Fl>��-�O��������i>ݦ��Փ<�mSS�|���.嗳��,~9�/��|m#_�ȷ��V��ȯ6�jQ�O-U��'T�U*��1����~�"^�Ж��Yz����>#�7�����MVma�zV�����Xv�L�̲�Yv9���7ޖ�e�Fٸ����-�e�"_Y�O�Ȭu2k��Z�gV˦�dт��(#6Ȉ
����7��f�Al�d���e7�z
�^�L� �d��,V�� +�X�,V'�d�u2�:�j�lU����SQv*�Nu�S��T';�����R�@V�����QA6j�;�e�f���.-�C�e�
��d�l�,[4��2C���l���T����6� +,5�^���۬5��fZ�K�z��͵�u���ɂ3�d+�Q��u����(X�k�`��j
��[Co����`���r�?2�q�qB�i�/Y��\7�=���M��4�ۈ^Y�?�f֝,�dƝf\�N'k7�v�Yv�a'+7�r+7�r+7�r7����X��u�X��u�DU���G��=<�7��T�=�RS#˜u9k��s��a�蓄>IT��*�n�r�����,;��>�]�kW�v�t���>ծ�F�+��Ouۭ��V�v��}tw�ʶ[e�Mw$*[;푨4�U�ݪ��J-�7����D�.麷��������Y�J��$ +V�殎��h����0N!*����S��k_iV��
B{�~�"��}��~+��m�sVZ}���X}���/���ߵ�+�Xu�cV� Ͱ:+뱲+��g���˾k�w��;scwe��a����f�7~[ض�mײm�?u�k�~8Щ��Z�oa۵��֣2+�N�k|��j)��sz֜�e�^���b*�v����QF��g��O�#�#KYR=mTO�y=KݴQ7m�Mu�FʹQ3m��,%�F�$��,E�FQ�Qm�D[�1�?y�����h�F{�hoF���[��j���q�;w���١�)������aVhe�=l����k��:.���9�{��:/�ﻷ�=-�����.e�Vka��ja���ہ�I��H���Fk��Fk��Fk��DK��B+��B+�DGY�zk\o��q�5歱����R-y]��4R��Te����,K�h-���HI�[G�u4Z�zkXo
���h
��������������@�C�ׅG�q�h<n�LĦ0=ڌ-�vO�3ڃ�؇we�e�)8����8
������,��s�Q|ǹ8��'�)ÿ���>���o� +*��ʮ8G�H���*:�Ӊ��q��G�'�)ƄG�׃��SC}�>,I�x2'�%����\�8q� \�g.����4�B���,�ʹc���8��L����@�b%�XY�,��C
� �C0���aI����?r���{�9���P_�]U��ǗG�Ê�P�~�a��q2>����/���.�|_���M|W��x�C<�!�;1fFcp=n�����9�yo�Û��&�(���v܁��w�n܃{q��#�{��9v����aEE3��ohq�m�Vt�y'v��NX�N#�*dq�ĉ8 �f�1'}��9��9~�� +|����!���y��<�s&�i�M[/�S�Ӓm��B}t7�����c6~�9xO�/xEV`%�рUhD�Q������������F�=��.�F�'O̓'����y�[C}yڱ
Н�'؎�B7t,�=(=�!�o�d䂌�ψ��Xψ��E��7/ƥ�W�y�;�1�7�&܌[ �2l�a�e�H<����q��<�E`�;d�!�b����X{F�=#��kod���=��:{��ye�ʣC� +��A%J��E5r����A87��+�x>>�����c��>>�����#���h�7�#��H~>�����#��G��_�����W�5~�[qF�D/`SgG���qv�^;:ǎα�s��;:'*}�t�`W'�� vu�]�P�`X]6�a<�G�~��1��l�s���S���\��|�Ϡ +�S�G�RgDCSg9Åa|�����U��ÔԈpu�Ǹ:\M�}!�,��۾�qt�K<&4��QE�
���պ�5Q6��ěi�-��[K�
�-\>::�|��
�c1�q&`"&�0R�)_�,_
*oD��kQ�:фf�{�� �}�\3���cFVl����x�e��2�botH:�Jơ8#ӧ8���DC唑��|u/��?����1���c��1"͗������������{q���p. +sD�8�6N�MȌ�e��dL�]���#��ELj� ��|nq�[�>'r�9���9"gN�3��$���?�"hBfw4�rHX]y��p�#qރ�a���Zi���Zyޏ�qN���J��OĤ���,��^��^� ���$����Ɋ���Ɋ����ގ;0w�z�w�܋�p?�a:�����0�}���1��cV4�z<n�L�$�m5�V��Z|W��j�]m���Ym���Ym���Ym���Ym���Ym���Xm���Xm���Xm���;5tP��.�O)�J��I6*}*}���d�\��m��r�YN6�E���0�j���>'��(�"P� +�H)�"P� +-O��+'{f��w�� ��Do(TE�P +._emU��ڪâl��aS��&. Qve���#;��w�7��_�(G��(�ŗ��r_���Q|9�/G��(�ŗ��r_���Q|9�/G��(�ŗ��r_���Q|9�/G��(�ŗ��r_��������;,�#|���Keߋ�^���Ʋ������'ʮ����0�$5<�f|q�L|I�t�B���ooІCb.~;�o
���=q�~k[�ݱ��詰*ZVy��|�9�~������Z6<�R[�E7�+�8�k�OeL�8,�������a��6~5���0�/��o �F?��S��a��U�+¬�ޜt�����1,��Z�T��t�S����gw~[�\��i��ڿ�ݏ�����O������4�����W��|�K*��0<��(N=I'��#�,LOm��N���C�A�i�w��(�J�f4�2�h��k�R�+�}��U��*u|�'���5n��v�βoE�aaT�42�D��F58�¢�`������0?�~��q~�_�7���6\�BCY*4��(G�ȠUȢ58�`0���8G�H�c�>���x��qN�W�����k�:�� ��I��)�~�_�����W�3�+�w�܋�p?��u�����Y����S���oB��_lW:��>>6�Nt�/�}��[��"�/d�����=���!�������]����[���3噐)�ܿ��jSy6�˫����°��r�谰|��
�c1�q&`"&ᷡ��q���0��<�'����1�0�3�ş� +^�kX�Ua~y#�X�5X�֡�&4c}�_�7,L��銰(=��P�Sp>��u�-�Oߏ�έ3�;��'m=i�I[Oz�k��j���a1�=m����&��sV`%�`mX�.�Y+���؉�bwX�9�p0�a]�H���h��2Ũ0?s-&c +��#x,4d�r��W��W��*?�x��E�����*��W�����] +�q_U��(��?��\�����xϊ��xϊ��xϊ����Sq'�7{7�����c��<�x3�0�1�(�o�8f������_��%\�/�+�*Ƈ�o�L�$L��?�/�K܌[�+�����
��Lŝ���^܇�1
��@x>wj�PUx��,���Q�Z1_�o�WG���E�E�h<n�LD(�����.��s�N�ω�9�?'��D����s�N�ω�9�?'��D����s�N�ω�9�?'��D����s�N�ω�9�?'��D����s�N�ω�9�?'��D���������,t�Y;��z�=k�>t�>t���Q�٨�lL� +[�>�������jVP�f�+�c���6=�=�=�=\��CWꟊ������gJ�L��)�3%z�Dϔ�f�f�Sf�If�!f�!=B�� �t�:2��b�ԁ����KZ�Hgi�"-\����oB�&�oB�&�oB�&�oB�&�oB�&�oB�&�oB�&�oB�&�oB�&�j��A�&4jG�����Kߚz3�7;����K�ts:M�HS6�&������� o���8���oE)U��:�}<^]������ůRR�E'�+����"}}��)���8������s6��):�^��^8)�]�]��Fz%<��{Ɯ�g#��E�A���le�{)����-
�߿O�|��0���ϛ�_9C����gT�E�e��wo+�o����S�S<ܽ'�C��"x;��;>�le4� +���1�Z�ַKB]<::��_-�$��re��7ݭ6ф�wvuT�l�����Qy4,�@T� +YT#�dċ���Ki�+p�5-�_�3_
壣a�cp=n���q��01)���g�g�G�G�'������6��_�P�=FZoo�/����f�Jx���f�����Z�.����hpY}t|YCt:�\���/u�e�e��1wY|ux���D��ac|tN<-��q;}"%3���љ��F���e�1�8�8g�������Y`����ɲ�;�����s���hV����q�����*=G���������*w&��
�6ɢ4T��n��H�=�>4��v}���0�\�)�,)��a�~�~�y�y�y�y��w�1/[K���O)����=���4�w��a�����W�.��n �;�ؽ�zݸ�����[m܍�������{���{���ۺ�b�8�����~�������ё��2�'wyr�'k�e�j��+*6E��6c�y���>�#;\�s�$�G��<�n�=��;���\k>ׇ�������J�7���܁�Yf��k��]Ξ>rf�w��G�N�}.s).��əi���oa#�3�ݵ�]�V����f�o��fv�u���)�}�u�2F��f��5^<�u�=�'6{�(Ol��Q����6�<oU�k�}��<�T~��%��x���+��8FV��_��.��u�_U���ܙ�/ !�$��APV+���Q�� +""Ų*"J��+Ru;( �**�"���{ ��μ���@H`����3��N9s��3ߙ3s�ya c:���n��G��#�@�v<�k���
k
/Ut�T=��n=�ހ7�mN�V��Z����)�)�:��t;�p������l�n�{�is����GKg����/7��f��-���dvz[ක��+\7�{��{�'�&��h(/�Ţ;��A`�j<�5����A�n���F͏N/���_6�ˎ߽]S^*�A���i�1 T��J�XK�>(���G���_6����/�e��l:�:��t;�p��5=��/\?j�Qc}`����塕�f����-�9��[�饐���;f(����b�`ܲ�l�l�jm&[�Er4��c��Rk/�.�V�w~����֪.\��t��w/�}p�?\��
��
w�ʶ�F��V#&��7�R�R��6�l�V 6�y���9_A� +�o%t����V�:9� k]s�!v;b��:�<P횳\�C;g��a`�3[zf?��2b� �l�ȕ��s31aWv�8����*G�|�92D +es�k>t��<��5g=jɁ���m�ZC2c%��h�{����7."��Q:�;��� +�v?1P�*9�b@a��[C��(���%7�y�k�)gxX���Qz J���c-��!�G q9�'s���꠶��ɐ���U�9�$hʛ@�x��E
��c��!�RP�2E���js��A�,�g[j1rd��m�Š��{���ӏ?'�.����� o1��x��xZ��ʜ�v�=��]J��L 2�B��K��� +(Ss�JWFZ�UCZ
\�DZ-���x e*j���L���3 d +��C��?5T@M�Ve�WA|U��@|Mă���mk��ak����G�:����piT�%#�:Ь�8��(�Nf"�*\5��@�����pm��䠲��;�2�f��bK/������H�����r��T���� +x�QW%{_H���L�WCz
��Dz-�����.�lʁn*b�å��!��ZVij��{��<U�'�U�!Ou䩁<���6F6��i�>l� +�Y��6WT��QC�d�DmQ�-���l�8S��V���[)�&l�h&��u��8�e���%�(.�M��h�6����"�׳������������8�>�W���ǵxY羘(&��X|�#b������G�l�����b3�&� ��KO&�&2E��-eق_#{ȧ��r����-?�����'9��&����A�����G/�����%���<�7>�[�䋼5���[��˽
�F�����ૼ]�.������
�A� ��e{�|�wDy|��*��SI*��dU���*����DX����TSu���کkę��z\4Q�TO���3�Yq�����P5LtR/����j�)�Pc��U�S�D7��zCܫ&���}j��&z�꿢��F}+�P��|�Z��aj�Z,^T�� +��R��p�S�j�\������Z���Z��[�y��n)���o�2�7�\_��k���j�V_���t{}�X�;��b��K�%��{t/�]������~Lr��~ZJ=P?+��GH_�K�K&�z�,�G��2E���e�������+=K��s�y�^�wɳ�}H�Շ��W���Z�z�����?�?S��7�˛�s�f��\����o鷔��K��dg�r�r�����N��_�_#��o�o���N~y���������=��~_��������?�?#���~�`�|�����/�����������O�'�g�]�n9�������rp�'��dH�a! +�BA��J��q� +��r|(3�)��*�^���(?ww����%? +��G~��WN +��_~��)?���S�}�������w��������R�-�<�N��dȜH��/32,2�{>2)2����� ��!�\�-������P�@�C%=�^*9��V�>��*5<�2�!�U;���/cT����u�$��������`��(�<�\� f3�����w�m�c���&�5�U�,���`��� +v�;����38V}��(��Q���*�DԏF�SѤh�M����ъ��h�h
5<Z+ZK�����W���E�Tc��ϩ7�C�/� ї�/���W������F_UD_��UF�E�R�xB�����P^�J��PI�I؟pH�B<��;QpA�+�e�):��Ƭ�f�K�̑c^5���n�� +s#��DhC<}��U�j_��6u�ك��4]D=��^,��G�>/�5��Z�y@�B��L6�F�(��5y̽�"��Ѭ4��O��w�U�'p���r��Z���4��W� +վn�Ya��2 +��N����s����ų� +�s��nj%���y���gxT�p��b�X�K�ZtBU\��f�Y +�t��J���j������&���f���A��Qt�gA�ʔ~A�`!�ӱD�ӱ$�ӱ2z���Z����:��n;ڜa�|�{�F����f?�ح~�,���˳.~�_���W�3Y7��_����ϺCk��=�l +E�u�3 �37RU}��@��f}3�Է��q����E�����G���]w'�{�QKO��BO���=�R}t���}���^��=f�S�g�~���"u���!zJ
�C���2b����d���O +�� :��(��G#~�:��x䜠' �]=e������e>џ��)z +�d�� +���3��7zh�ՐL=_C&�B�Ԗ���W�5h��z�ڨ7Q5�YoAKn�ۨ�ޮ���zxޣ� �^����>������}��C����A��>Le�}����5���W�=�d�>�>�>�>�>�>�>�>Є��i���-����B�b +��>����S�E@�DFQ4�[d%Y�!aQ�ҁ2k�l�6XK)��`E���zJ
��,�n6PZ�1�H�M�V��ې{�yv;�gw��=�^����gp +ъ�S9Z�R���LЩ��p�hu���0���>ļ�ZFGǠ���XP�oDߢr
IX4�$����� ��Cp +���p¯��A|��)���4���� +��| ��p����A�p����T��a����9Lw8��p0`�,���=k�+��>� +�·P�����#�%:LRHJ���E�ʈ��=U7�7�,�Ur�WE�,nF�-��6���V��NT!�H +��} �q��'�qm��&�)�ni��n��nB_�����9-�I�n����2�n)з���wҝ��v};�.�|�t�C�p�z��yH����a�0��ֽ�?��#ø��[��� �ta=HB����;��7LC��>�a_�C=�PO�׀z"�zc����@�����oqP8�ȇ�����p���/�J��b��[��E�r�R��w���P/ݡ^�C�@�ֻQ�b_�þ4�}q�;�����D�½�S(�H��}�})�l��?��'�OR�����B�!NJ�X��vQ�×$�,)@��R"0%��bJ��� +J�hJp8��p$���E�������c�#%Z)Z �U��Q,v$;�Hr�Q�aG2��5��R��<P#١'�h�]ym���M�2��X���?��l�.~��(�ˮ��^kW������^�[���k�[���t��f��*��S|��+t���sxj����=��]��h�ߖ~]&�Ζ���N���+�Aˮ6���V��i�)�J/F�Ed�=�#_a�ծ��#��M�z���m.ju�l*�6gv�U�7�څ(푻J^�����T�[/ +�܆~�5��$���N�c�'?���]p�2w�b�^n�^�s[��� +7�,���7�b�*�8 +��J?|tL<�E�SI��K|�;JX ��� +*8J�q:O�u3ߕ�o\�Q���?�(����`�Z<'� +��G5Y۪�����{:�L�-ɑ���`����=�Nw^�M'ϯy��1�4�]x�}�}S&>��{��p�O�G�A�M����Ƭ�H��G<���ü9w쩛�s�(jX�J1��W���S/�_����8�N.�0w���43����kz�;�ff�9��A��S8��<d�:��b��̓�7�I1�6�}ñSO�aƟVz�P��BOߥ�6��> +���Y�>��<!�VS��Tb3]�~w�wU���>���b~5�����z[;w���j�cv�+z_,m���̍������R�����[�������7��u�oW����<b�C̿�a�;+Ž�|ܲ'(Q�=�����5�;�O �:0:陫z*8)��8�av{����)W��l��=�����9e-�||�����G�F1�Y+��#w]d��g�}�����_�z��4�@�q�ݐ�q��v�(� �Vt�����ӏ��n:u#U�z]�R|�e������d�kr'��E�������-X�'�o5�}�<��Lu�V�s����������|���y9������z��J[�{���oݎE�d��,��UU��������=�О��Y��'�������*��(��Q]����A�SDjq��wT�rK�� +��xLn��]]G�����i��b��*ĕ�*��ݥ)��nF�7͔����!;#��i���a!~�,y}ʗ�M!�ە�>�ڽ���:�z�u�mr1eֻU+;�;,pW_��Ő!|���Q��^���y�a���ҹ}�k��W͏��{�X�}#��N3�Tsҍ�ݤ��>�d��sZ�}�v��i릣yȼeF9�y���6��R����1[�]��)jW9��xT���wqJ{�wd��lva>��Ef��Hd� ����\�?�,0�L{mf��7v�ܥ�P�����q��t3����W. ���o�q���H�֦`�9&�O���QۮΧR����tuq��Ga^��}�JB�[@ւ��ܯ�K��+�m�j��_�vu�t8?۵��}}��1_�����oĥ����g����ײ*�b���Q�}*<魔o�!�B�=eɾ�s�W���=3]�u�u�s�I:��G��2�ܜ��҅��z*zgL�*��0�S�)�i��q�ý[azc���@�V��6�*kbcp�
��p������|g���%l�݄1iU\�Gu��Y��:��F�|�5�w=��rެ�:���N�F�NLM�����9��H�~7RN3����f��'lT�6��=�෫�������p� 7R�ų�ʉ}I?�Y�=\˚�q'��Y����*�Ž`� N��4�k钃��wl�D:�s�W���q;v�ӥ��r��Y����
p�����
aw���Eg��%� H#� 6�&Z�t4�Z����:M����s�%�C3xސf�Ƽ �l���<~>?�~���h>������ޝ�^�aZʇ�h9���j��Hk�$>�6���g��O��i��Ϥ�|�E��O|6��?���� + ��^h:� +���п�C��@�4:M��t�'2D��#� �.F���눺(����� +�$/�Zye�2�Ў.��˯$���|��x(�[�-$�-�~#��R�,�!f������[A���[I�U�*��1��vLB�
�*�m�6R2F��ļ-�VԸ��Ne��*o�*Ը��Ki�>o���{���� +�0%����P� +(MEU�Z���<�����(��ʡl�JG�U��UEU �+��d-�V�_MU��:��P5������uU]*�NS�!���GR�W�)A��� +�������zxG����K�}
��������b�|�|�g +��Xg&(� +f����`&(� +f���X.g&6�3��^�̄6���rfb�yV-+�_�_�V '�0�9�*NN�e���l�-l>���e�N�c@Q��~PF�����hG��ATx> *����MV)���� +\�恫&�N^/��?ı���ٛ����b霴� -(H +҂����U��|G���G����9u����)����{#MH�lN`lL��d�R�c�i�i�h+ihf�ߴ�i�YUڌ�,��L��j�f��b��K{��O�N{���f�ʴܴ\�Bڜ�9h���(O�=���i��ۡ
��3�A�vP�l�A�vP�l�A�vP�K�l�^۽æ�/N_̤�/��%�K�~7�]���/c�8��ge�V&�� }'��?���Ø��&0q�8-���)�U'�82�S ���U���\Y��*_S��f(+��I�MicO+F�� +�v��i��m�b�x�b��b��bCۮ��Bš80�Oqb�Kqa��f� �A�����Ѐ��(*�S�J�=���FF�(FƔ8�8��FϘ�{��(k��пR�ā�>��ze=��me��Q�����hW�.��Iل�(�g���f�'WVr�ʞW~����+۔�F{��c>T>��)?��V���*{�=X���^��;e?+Q~�@��+��.���r�=���rc~�cE�?)���Ǖ�8�I��9���>A���9��_��sA�W���\�~~�\B�7�oX%(����� +{��2�+GX^F4#� +2�8K��QV��������1�d�72����2ֲ�3�*�X=�i�Y)�i6��49OC��P�4��y�U��O7O�D�In���9��
�+XDƍDƋ�����������'2�!2��H~���{d���Q~���{�)�GG�=:��ɠ����(�GG�=��ߣ���L���Q~ϛ�����̤��/R~O3���M�=-�ߓR�n�2��g���\!�I���6�!G����sE0f�G�@��� +�' +^�4D�G�[�~���M��[D�<aHK C3(ah%=F C3�ѿD��y���*��'���)R�\���#�G�9q?��i"�g�ȟ!���Y�)�x���~�R��%�D��7P�`TJ�n%�U����{��P��O�F���o�������S���O�h�'�)�S�O�GA#��s��4:�m�~T@�G��i�i�����W�W��j�h����L�4��s�"����DS�v����f�'�2�՚j�����e�^����i^ռ��s?PFN������29�%�@�� +��K)��D���DO +,Pn)���y�E�X@y���X@y�ORi����Cyv`����B�9�r��l�|J|��I�)S��2K)��$Ð��~�/X�13c&zx�`1�>������<k����(k���3 +2 +��'Q�`%f�d���ȉ='&'��!ce�J8�Q��g�}�#�� +��-�'2ֳrr_�26dl@�'Qr��\XJɅŔ\XDɅZ&̹��*�U�7�}(C�B��&> +γx܈ڂڎڅڋ:�:�:�:�:�:�����������z���]*�.R��I&��2ʀ���E�E�JQ�jԂ�sh��_%�E��6KP�ik�@Y�ϗ�9�|����O��ŰD%8/�.��<�KV*'�f��T�0U%�*GU�jQu����f��C�D�<��=<�ɱ�ik_�Z�ڄښz
;R�[�z��Q�PS돤�SeF�q�)��k��_K�5�=n�������������b�C�zL�15�c:*;�H��$����<T�U��D�����gQ
�Ϗb���{���фjM���_���ȯ��е���>Z+P�??�{P��ޖ�9��߃r��?��;��vF[z�{dҸ������ +���z��z��z��z�o��$�*�0��[k���WY[voH��������K}vU�k�k��z�b���R�d;��cj��F��T�ަ�mj��A��R��žq��7�f��k�.�]���6Bg�m���mWsxpS[Y�&5�}n�.hQ���ֶ�ޭja{i��äǠ�hu�I肾3�����E}��B�UpG{K�U�X[M���}I�
��ma�n��kpw[C�>��}y�mhG�=����%�S��{P�mk�=�ֵ[�<T�ST�x�`J��W��N�� +Z�<-v^h��e���;�BǺ�,c�cC0���y
ZC����y3�Kk����s���;\y���y?Xm�rlu�:���k�G{i:tE�t��?�ӟ,��������Rc�cO����_ +.06�����)ts� +�~�w +�w���AϞ~gh�q��h��c�z�?�7.s��� +�j�=a3�\��]�NP:X=�JjW�ۛ$��UIct�U��]M��ꎨ9]Kݣj>'��D� +��T{#��� +oO�I�px�^����L�u��6����������uy�ے>����nR����WN���I�u�I�j�R��~uY�:�!(�ѳ�}4I���?k�*�ԇo��Nj�f� �(�4|�k��4�\~е�}N�u�q_�np_s�w_[�}��I����;��w���w��C�I̞M��Q�1= +�<Y�Y]'<9���Ӟ�Hn�9Oadn�EOI��늧<R�������TE*��{jq7�⩋T'�]�<��]w=͑���~gd��yGZR�γ3�2f�߷�s�Y�#K�Ysd�9�϶�|���Z���I�+�a.tNE��<�`��ģF�S��iO,Xm.���,��U� >�{6bϵ�-��:�v�A�g��<��=���9��e�c���Ş��y���X"\k6z·&�����fϥ�68e�{�b?.�
��s#~��q1��T$aV=�#c��^d�y��Ad=?o�M����q��a����S�ٝ�hh4�)�ql����$=C�8�)�F�!Xj�❅��'�Шy�77�.���0D��n�y�wn�+"R�)"`>�-�|Amz]g͇���E�c� +�"r�|�[����?k�H�i���o=��wQj�p�\3_�$g��M�U��r�
�r(��s�ۑ��#w��|��L��՚�y���1�G����Ԙǣ�-��t[d�j��0����`���h6i^��Xfyǂ�\�ڠ�2>�y7
�R��h�mͰ+Qi[7��l�U���z��mx�:n�9<����O$j0f#��ޒXh;4�k��J4�N�M4�N�:1|X�k;7|,��vh����vq�Lb������ +���K f̫�Iۭ��=��÷=���{ g���~�^������%����DĞ0����>�p{N 71j��E�0P�h/ �&����u��@ub��6� ��^�Ol�7%v&h�;��EN'�)�́%�=I�g_����e���\|���s*Б�ok
X��ƀ#q�n���1�m��n���ĉ���H<���1�.�n�t��c���l`-����X��Iy�bx�v5�6�X���X`k�}U`G�&?�s����$���'�ԓ����AѾ%p$qѾ=p<q%������{g��s��.�S�Y'&��d�Á˘5�1_@WJ\��W*�(+��j?��Wt�k��L��ߕ9��;�v>i!祕%�3 ���<�xV+���WV%ۤ����)���ƈ�ve���Hzұ�l|D�{�L��7�
}��{�P$���H^�W�\�+���z
#�P��g�HY�c�\��9ŭ4�ړڛ;R �����;w�>.r���hd����t�Z1�{�GZ��}Y������,]�ӻ`d�z��~Ĥ��]4҃�-#N5f����w����]�,�j��h�e�w_��X�=���{���{<ZcY��Sх���h��C]�m�,�^��Z:�UE��Y�ޛѥ��Nt����5Y�ީh����?�� +,�Am$��-�NRo�����Kbpz4`̎F����P�e�`AtԲ~�8��t�OF7��4�ٲi�,�-�,[+�;-;k�{,�F�[�
6DY6A��F��{f��i�����s��R˩AS����`O�brN�\tF�X.z��-��[�����]˝�Ѱ�����k�q����U;�!Ƭ郛c�qbp[�a�>�3h�f�Q/%g(�1Ÿ�!ڃ�#[���U3x(�e�<�1����[O� +�Ń�Ŗ%��Mֲ�+ѥ����k��X�u���X��apR=`m������Z},Vg]�b��>%�l5��b��=���2�ӗ3Z������ֈ�<沎��b>�_-t��.V��
�Ơ����S��|��;�;}�b1��1�ʺ�g��[�� �Q�+��z��m��ol���qKl���O���6�pϷ^���H�w�+���a�u�Dh���oc���otҷ=v���v��tK���F��[��f����w��N�.u���@M���%�����wI-��]����݈����V'�}�b���}b��q�{�c2l�6�QS�y����fa�}(7nH�547>��7T��V�J��rkkpnwl�">�h�.�^5� ^�=>T/�Z���h��0�C����-��冖C�ۇ:��w
Y���{��E������!$�k|I��w +ŗwJ�;8�ĭ�R��W��;���ܗ�K�_~:�'�V���@��}rh,����x�{�x�_���_���!T�}�{�'�>?�68eiZ�J������}ɱ!�֚7�)�>����m�o"�`"{\�-�c�{L&�O�V�T�$�D����D�M��3X�����2�\q�!�O��b��{L���]���Q�&��5��ru.� +�3�з�_��q:��o�/�ث�����u�5h=�-�{�e�A��`d_:��}Ӽ�~��E�.�Y��'�����e-a���&�R�[�ξ"���W�qa�}�~��������@Gq\����c,Ʋ�`c�(c�1D�D��`3=c�e�*)����3Ϳ1K0��(,!�`B�<��(��Y`�b�=c��<�b��2�d�����u�$�����y�$���u���v��{�V�Q�05��ٴ�����ZLo>�oL��ߚZ� �7D>b����j�ݽ��a{����K�'�' +I�$�$!�g����{�^i���]�����ڞ�����{'�bB a +���1Pf��P)<��hS�Rͣ�i�Z����Z\�O�H[���T���6j[���m�֤��Z�V��v\;���.h�.�Z�����АP~h�ѡ�ЄФ�Ԑ3434;47�
B�P2� �8<0�<�2�&�>�)�5T�j5�P:j��NP::�] +] ]���Ã�C���z�A�"�ᘇ߾���~�)�-φ�� -��<Z�Yh�`hy�|��h�Ph�0h������h���á��A�G@�? �R*�����������?]]�>��E�u�P����ӽ�a����%��@�'�_O< +m�m�*�y +��k���"x��� +Z�,����nBa?��(k%%'��2��`C�1T��:����������P����ᐏ��eۢGB�?�l�������<=ZDX��EχV�y�Nm<�v��E;�����+ѫ���-���o�GB;�������1[hw�sS|�60���)h�/�Ɨkٱ`p,O:���<�����ZAlx�Tl8?������O�����j�cš7B�+���
mrlJ�b�i��[A���PM�y�Y��~1'VΨ>�.`h�b��%�ӴX�&DcqFuG"[K��� +�/�Gjc����e@Ml��Jz?#S��3��ڪX��6��/����kb?
Q1=26Ƕ +{���H���Z��u��Q ~�{n#�+��ľ$:�| +�~4[����
�]
�m�}��=Z@�������q��'���bxqb`xy"������`.籅�$���' +ؿ�7%F��oM� �%��ޙ�Ⱦc&}7$&g�s�91-| !�Ç�x.�m�9�;Y&О�>�P§Z�\"�H�×�WK�G��{��u�'���J�^��s��DAUv��e���Ī�����{2{m�5��0���^�}⽱� ���V52��{��>��=�e��xlUc۸�j<���:x����m���=��c�Nf/�'@��c���Q51&0x���TM��02{$�Lco�WްG�dU�h�5��G�a�+a@oy�����g�f%���U5/�#�Q�$�Ui��U���t��Ɇy��ݒ�=U-L�Z�8ɾ��&q�Ӱ��_d�b9��V�o����-n��}m��]e�K�m��߬Z�8�5ߐ�̴G}���͉�U�W��U�I�jW��>>��И̪ڗ�A�O�AF���~���^>��3���w���p���>��V6�G�E<�n�}%�nj�����,��o�9�:o��OO�NLK�mx�9��NN�B��HY�6:-='�D����-9~��謴���|Zdl2�%�� :'������q��y�(��Q%M���Ȕ�h4�4�N�D�WE���Fk���қ����"6��M�db�e�@צ���D�2�]&K��` ����x,�!]��NtszWw{����9䘋�ݖnDǍq�
���
0�o\�
��2��eb�~b�h��O��8��q̕��z�X�Wn�u2s����N&�n��3�a���|rxUg��}Q�����z]u5Y}ʔS�+�?<��������dYdX�����"Ó��#"�I��8�)�!DJ���G��V�4�OOrE��&"��u����n�#����[��"���H<�#2?����������Gc�,J6E�%�C6��Ȋd�iԏ�&[#�G#��#[���E�'�Fv$/Dv'/F��]��1��(&��O^�����#�);�)�)G�x*7r*5�u6�����HW���)r-5��W�S�����Վ��c@���\���Y=$5�����y(?5��zD�[=:`=�.JE��h�'��x7)� +c�6J�6����p�E܆� �$�Oi"�D��;ѯ�N�Q܉NƝ�Wq'�5�0�0a*�DÝ�4܉Nǝh)�Dg�Nԉ;Q�D%ӷL� ��� ܉�蓸} +�����-<m�c�#��N����D+��? +��=�^�Q�#(d�-�O</�Q��v�\�.��Uy�P$ϑ�Ɋ��QJiy��T��W�k�
�f��r�|Y���ؔ,%G�S�)ÕBe,'y�\/��}H���#����N�7�Q�7z���Ƙi��'�a]i��H{XWlЕ�)����m��C��C?�pO>��"Mbm�&]XM��z�CZ���5 W�%��BC��?Hz���wӚ�Cƫ~V}(��凌� �盲i�?��-��~+:�Ta��Ê�O+F�Ҵ����eZI�8�� Vq�2���(�L�b{I�zx��;��}�|M1{wy3I���g��}�b��ѓ���Sr��OR�(�ޓ��P:�I�g��r&)��WoNJ$\�#���L���,eq��I�*��ú�p�k�B#�훂c��r�\�I��<�H�}S�D�d��"�QN%}�� ϗ�)��*9���Zz��I��,].�������a=K�Ͽ9=4�E�D��u�F�y���L�ӺLRf�9)s{f"���EޞIX��ƤDIy7R�ܤ,0�+��?3"Ꝡ��[nN��UY/��sR6ɧ��l�/R�Y��R'��ӓ��4G��E��;U�Ii`�V������!�Xf�u�r�1��9�=�@uI�)eX%O�<X m�a��<�JD�D��K�K��O�"*�Iz�*z���l��3�`����Py�Z@��������Q�IOlTw�:^�(/R'��T�z������(�Њ9e�:G�H� +�b�ň��a+��6�1U�[Ԩ�^MSy�k����ԅ�ۥ�V�z��5�*u��Aݬn�-ӓZ��b{U�}����Z;u�U����k�%�$��ۤʒ����e��O���<_�al�����t������ɭr�o���7�W�+�����j�پ�_)�a��Bs����y|eT��R���W��Qb��%��%���[Ȇs|�˷ȷ�W�[�o���6�����vȵJ�o7뻯ɷ���k�e']��+u�mM�Sj��,����~N��˷�w�F�*�����S~;�)�Y�ß���W��G�a�h������5��?�?��y�4���������s4+S����V�xZT�<˲� +���Z���<$�λA.�J�����-lפ34[����ݾ�`Sp?i(y��b�Na�$X�אs��-$��45�eX�IVY�U�%?No�Q��O<x�ržS����ٷ�����4<Y�Z���,�if�N~Χ�:͡����K�9��7#�k��m�V�_��G���=|`X��9�S�T�*���)��?��GOj6���?�}����z���W;�+;��#�Iy��1�Y�g�����J^ɿ���Ҝ�����ο���o��ϒ����M�C�69�o������Յr������3O��6*���Z�Yg��%��uyc@d���
F�e�1��rm`2I�
LHr9I�̢>�z��������@���!mXA��6�0�4P#gVɥ��d�G��
�f�OS`��� l�9��G�5���W�� +l�yXh��y�G�'g���Vzv��.��ʂB �?3hf�]��`^pXpx ;X��C4���N�E'̀��j���Le�`�\&�V��4�R� �&UN*�T9�rjEyEy����ʙ(�Mi.%.�R +P�vs�s��J��$}���8�od�D#�Dc�YƂ�W�YƊS�
1� +�pvqs�t�q�:���W]����r��\�\�]����bW�k����q�Q*wU�|��+��Z�Z�Z�u�sm������v���]-�V�Q�q�x���u]p]�\�$�d�R�4DʗFH��"�y�4I�*9���li��RDJJ���ri��FZ/m��Ju�N�Aj�H��6�_/�K'���9�C�$]���E�{�;�=�_u�G:;�c�4�R���&���%��2��<@��Q������`�{-� w�����1�����1d��18�����r��r����1܅��p�#��p�c�c��Cv�GaGLx̑t<+��� O8�9��t�v�"<����',vr�/,��f���q�L�S_������I� +�f��+� �Z�5�\/`�#�����- o[@`�Qw�Q��6��y��3���7����QNRY�,��<'���V�QJi�B�Rg�s��$�Z��f�6*�����]�F���y�lR��4���Z�;�{8�3~��Q�(D�c�i��1���qd9*^Z��#$��;B�c��[B�c����fG�0���U�G��C(�,�t����I;L�oG~ �#�0���R���$ʽ(��+����D�y�����Dۇ�Ǡ|��n[�s�q�֯��}�.�|�8�ٚ"ޅ:/�w?F����R�����8���5x8�:$���%�">m�h�~��H�G0� z��8�v���(�B[J�@�Q�}��@O[Q�u|�c��|�8��Ő�r�8�-��/�_f��Г����q�K����JHk��R�_BM�������,�Q ��if�O���Z+��������? +>n�/�:&3��G���Ň�/Xe�m�y'�����C�]�������υ���Q���[*7�����+�7}���6q ���MN���2[,�9r����w!a;�?����'�/D�� +^
>`�����r�]�{o�
�-��e�Qxہ���g���&�:��E�
M�{���c��s~/������3E��&:��s$i����k � +���qۚ�a�0[�E*1����B�"���O��V�yb��D�#��N�/���8�`�_�JBB���rLEq�7��X�W z� j���vz�&��҆�H���lX1'�GX�4���,����/#?
���(>����8���77s-�1�ی�rO +�-Rkz���H��i2�vm���b�m��86�Y��x��I��u�-*���Q���3���9_��"Q$~����^��2�� +c�<c���=�Ip�g��,�R�Z)k��*H�e�c��c`h#����m8��C�[�(/ +���3p +z$���8��iwC~��m瀧�m#����������YԸ��f�C��o��Vާ�b�����@}Ϫ�v�0z�&��]p�qNy���|��6f��VF30�W�z�F��̨95�D~�^����\b�`�,(����?o� ��n;��pɟx]h}9�`�5��p i�+�ĊәZXf�=�+=�ۙmt���wl���J�l�"��<'�#��*�-���9_�WD}��9.�ں�P�5>o�o�����hy���b6�� +�~�<����k�zԯ��,⵰��sk9��t�8f1��H,�nԠ��Шw��[Qg�b״|+���kx� +����X��%-(�Ǻ�_�����Xz�+�g[���b�ш�WA���Ʈ�8�<
����8��F����?�х�����_G�`����W���k����l泐v;x3"�Ű�\�1��F�}���Qp�uԡ�?�_���w��\gZ�A>3ЅY:a��-�:��z�O��y.��垈
���=Q��}���|z��^i6X+����k����|��^t�vk.���e����p�����?��5|){�f��ը�� +��w������7 � +{`�+jeݏui�L�^-k � +�F!���_:���(j63�������~ +��G�3��G��m��u�c��l��y=an����Α�Ïa/�c��E��{p���7^�s7�ـ�
�?���9�7�Ϗ���f1�#��Nu�6jr�0��~�c��3�����v��C���y�u�B[��lv���/�<n�D:Y���c#hAە�o�o���/z�./�ԯ`D�� �!��|*G��_G���"ze]��B>�[����TAB1�/Q��V�G�����=�~��*4a:������U�rlI�fq��sxN���q�:�:���,C��;�Y��%����9٘�=����m9��|Z�<��t>�[~����=�ħŻ�d�����s������~�O�4:��=|f���̄�<���O�9ݺ�w|���_�m0f��3����s�����������](�����|��H|}��
���ؒwջѪ�O�������m��ݸ?<�~���|���U#�%6�%C��
8Ŭ?��qBY
[[���j>U�[:�X�GD�5����y�C�;�.�!� .H����8��qJ�F��V܄�����8/?���8�=�����D�@���|_���AH{�ۊS�_�3J��4�(/ +ޣY��Wb��ȍ�C�tSb����������ES}�~�u�����a?ޚ��JG�+��ɰ�g�p�����~ٿ���Q�4���/� +ul硡ކ��;�^�]�L�P�����o�2W)��&�6����q��V �wZ�4Y͈�a����S��*Gi�z�5u6^�e#�.*G���f��$����E�+Z�r#�e2r�`�>�7i��R��+�ƙz�[uvvr�!�l��ѫ�c5Kh��4]��t�ձ|�U��ى�tM8^�
�Su5}��K
T���l�r�9�ޥzoy��f��W��$[���k5�V�<rE8R�b��� +�qvH�Oߩ�Q���� �=�z;�?-(�y�9�y�t�|V�9� +F���SU�c��ԧ��D�T"@�۪��N/�3��;�#�$�����$QR9�l�����[d�*AH�/�O\ W�� +�k$���5��X��@��9zv_8����/��q���iT�/5V��ȗ�߅�_���&���{���Iu���;E�!6s�
� +j�ZD�-�H��
��v��q�u�w���4�c����&�cM�L�ߝA6ƨ&XD�~�z��ϩ�gɚ�ў����<���ܯ#7��nR��g��b�o�F�q���ފ��'�X���(�W�ϵ��g��Z����R�>�\o�5K�o��SLw�ѬhcJ2�"Z[7i�i` +�2g�R��l���Jk��o�ͩZ��g�T���^k5�l,��!C�?!o��Ṍa{p����sE_��5C��=� +l�h53��[y��_�M:e���P���������Ұ��{���¢�F,7��yC0Hk8>?�{���]@G"?���ρ�{��<�����/D�2�'|&�}�ma#�Ci��9�T.��J��T��Fe�+,+����A��˭hЇ����g��<���؏�� ������5ui�y�Ic3�}�W�w«��虑=F���'�x��������@^�x���h��[gz��r9�3�_B�BL�!�O���z&�5?}Z�:*�;`A�F*�r�E���G�R��;�^xk���xՐ�Izw�j�ρ[i-���@�c;�1�{�~ #\�D5�4r1�N�u�"���J$�<�u��p�O�U�*Ȭ�8Ӧ0�!ؗ�1O9�@����^6�[�y��q�5�N�����*�8-6���M���4f]��,�~��p5��r-bk����~E_b��g��ul���x�����]��s�w�q���Sd,�(z��ͣ0��g{Ǚ�u�$V/)��h��Zq^ +Y{*W��M��+B�4�`�nvn�0����`� +�7W*��ك=}þ�8}\��gh>@����+��1��E֥���h!69�OF��"�-a)Ș-53=��Ȋp=dO��F���C�u�G�ى�`�=kj��zjTH� +�CU�·�?@�#�z5R�R�#{��r�o����e��䒽���XH�F+�YdE��W�lO툹�i
���({�Z�.����g2�7���ܡ���e*�Q� �h*`s�2���`SZ� wDn��V4������i}@�U���]����h�Áʀњ��~����g��>��;���z����o��x�~�e
d�e�w /e<k�v4��3�ja����/!O!&���`E��F�l�#?Bk/���#�\һ�������%�Z�uK3�x��7��ЗY{ieFf}Y��x����*x�G�x<�!��{��u4�Ɂl�`�"r=,�n�EkVq�i��o�<Z' ���jl���X�o_�� +~��i�~.z�7�@7�����1���L룐�1����O�-^��Ű�+��ӫ����>|vB�?�<�UR5�|?���ag��a����_�xM��z+$��T�x;$z�p?W�>�do�r>UMQȞ���ś��8������a_���>�*��34 o��d�%��>z�'�8��-�&��h�]��%,��ڤG�3���삐�yz(����2{'עgM-�O�C���C%�·�!�ø��B�W�մ�?M�� 9o�Br/ZA���)�y�\MÈ�i
���{�R֛�E����e���!�i������N�IBZ��Sm�~*�N�Y�Q�� �C�5�Y4픩Uʰ2���E�6e�7rW�o�bK��&y�QV���7�����Ge�ѦOQ��������ld6���Dӕ�ǐ
v��p&s�U�aD��>!1�xjQ��}S����X���S�S�T5���W#���VMP,���%�g#�y2��!��G +�9U�Z{���{[�R��R䶴6B^�����Yȵi}�^�����ٜ�w��bS�^U`GZ�Ĥ��Z��CY�ϡ��\��4�����cP9�:�Uδ,8�3�<���T�u�SU��y/_��u�>4G�'b��2�J�
�Mk�28��V�^�yV�#h���#wD���f���O������u$���C� +q��֬SST5�8�B���":�tI췪���\4m�<$ڥ�J.�)��c�m2�l�#�����Ns,�O;��f\}Ѹ��Z�U����0y�5D�����u�ux�������^q2����;ư�L�3y��ڿ�H�Xw8��:�}��VmZ��?���R�����$�Qn!V�ye�$:�F�e�*��l�e��G�Gɽ}dBl�q;Ce����d�iǢ��R\��+��Ip�͒�[��%͘�2�Oї��0�n�%�-��Z�,�5�N�:��&����,"zK�k��j�T��R�k��`�!۫`9���S9]F +�i�Yq��xG'{D��c��Ꭴ�ʽF��I�g'��W⽬�|�|�QU�W\W������Ug�����d�vl�6�Gc���|L��g5u���ڈ�P����x��K�ZU�� �h�g�
��F�<��F�W}X^��h����V�G�f�|��nz��8��O���G�磬�ʇ�۰�.v*��$fZ'��Qsv�:�Yq��۰�����C��j�>j�V�V��6YZ�^IVS���4,��e�=�l�|%��|
�l��eV�^�}��\���X���j���5��y���k���+yq-#�\�l��5}K��g�de�|l�z��$�o�$O���>G�"��ܠ�mδ�ϟg�F&�*rU�����L
����B?�/��-�<���Gޅ�Ce���������<��E~� �0�@����o�g��;�<�F�t����n����-T93<����L�G���(������
�7�ئ��e�YyF�vlS<����OC�{mg�ЗE_D�gv��n�;�ֹ0B!�
�����Y
Mm"k��z����r�t��
�<��jY� +r���#���X_��\�\�z�|�̊��-��,Zo@3 +oo�/���B<TE��\]����?G.���R�\�1wd��0Ӄ�2��4������y~�2�+�\�<�����"�Bޯ#�߾��<��_���d���T=����k����}�zl�F2�d��|H/<T=�K�c�Ǧ o��{�k�w�JF�͏���4�{:�\i��S:��ց�*�j���~VE��gJ3��P�����G�C��n��O5�E�(}��y�� +�ͻ��µ������SEr�E9u�v��wɻ�w�[en�}o�mR_Lë�ɗ"״l�/��RP ��I$�R�K5��4�&�J:��*���/w�@*�ɓ�}aɒ3�������P��־~��}�<$���)��~����l)#���)u��R��.�C����������e�L��)���,9r��#%�B�'����:�*=��_d�<.}�..�d��mҼyc����W�K�V-�̗�x9E��IRVN�s���\*WIi#7�m�JU�&�-��`�GF�S�ɖrr�����2i&�KUy}I)&�R�W��r�����\�����t��%����yB��_e�< �$#ȓBr��IΗ�r�4��r�� ��ا��t�Ge��!r���i�l�j}:��p�w��2;u��7̅%`>�k���q�}��-a�v��a/ؿS�����p4�g��p \ 7v�q���v��|��=ãʔ�Y��<X +���]{w�:ք���l����"R��p8>��~=S��$�4�g���<����z���O�*�n�&�S[���e:�9�����.K�2��k�ڰ���;ߖ�6�-{��
l;�����}�ʦG±�18N���k}n��kz\���p%\7��٩Wz3�)#�90�ѧO��QXւ�ac������^p G±�գ��i8�����C��J�n���6��ӯc��2K`�¢�$<�O�^}���J� +� ����q_��f�lo�]a��%�b����u�4)�oJ?���0�b�ץH��?����r��,�h�=�$~a�?#���c�C4�?˙9�,H��ʜ?ȓ� O�?,�c��,����]'���?I���%��,��d�+�2���,)�/�I�����?�6��5�ϲ�`U�*���2^��\Y*�e�� /(����A�`D0>��
���-��3LS3Ȍ6��,�Yn֙��ͱ�l%[�^a���v�m'�Y~�뵲��`��p���1'�?�������//k% +~w�S����i��w���������r���y'��?��� ��N8?a>��^�� ��O8x��K?}|���?/w� �w��o�*'�����S4�����c�x�Ͽ�&�O�+���%9��G֕j$Ǻɱqrlu�(*�>~���<��r�x���^��U�V��'��<�|� �;N8�u�y����2/��;����5k�p~b�'�7=���x���G�S0A������w�x RER's**��&nYnc��-vK�&�vz�=�}7��u
\ �%���|0�R��eLQS�k�[YN�c����y ����ϷL6ɑ Ϗ!ˏ*/����ƹ-=��^㩳+�k������q�Ě"~L?q\��cq�3�en���s�[�����fh))�6��.���q\�6���=�e��ܒX��XnM,L,�>�+oS�{��{K3Z�����[�rF� #\����U����Hd�~��d��|S�G����ͽ,�r��n������HY����������?��j�?-��A��tƿ:"h��{�AOɿ::�#�+����p01xB�{���Hp(8$����xM
�`�&-��\�+�����2є0%� s�9M&���Y�h*�dS�4�)���'�� +������S7�nj�nI�\����L�K�.L
H
j��H�.ʹ&�C�;���� �[$�Rsg�
�S�˅:�n�Zh�9�˲Y�Lw�-��rg�"��+gOvg��mQW�U���9����s����|w�-᪺��W�հ%]MWӞ�j�Z����j��\Wǖvu]]{�����3\C����5r�l�k��3]{�ޖq�]g{���ڲ���f˹���-�nw�۳��[��s�lE7�
��ܝ�N{���s���n{����k+��n�=ߍv�m��{�Vu��m5��{�Vw��x[�=����n���&�I�B7�M���T7�^�vO��n��f/v��t[��p3��L7��u��,[��v�m}��{�6p��WmC��{�^��po�F�M���Խ����n���-r�lc��{�6q����}����}�>�M�G�#{���}l��Oݧ�j����6w���m���¶t_�/�5�+��m�v_��n�[o�uߺo�un��i۸=n����s�l[w��7�C���'o�P���Hp�W����W����?�g)�Y�}�R��d�2��d� +����ƾ�����(��Ω�R(�5�U\�[��N�N��"����rr���u�._��2����e]Y)�ʻ�R�Up�W�U���\w���*��R�UqU�w +V+���w���J1��m&�v�]$���-���moɲ}m_ɶ�m�J`�('��v���!�)d��OJ1���T� +]P��2������Oa~xfX&<+,�ˇg�����4>~�R:y6q���>������_� +�Ź�l���-���j� +r��������%�S�a)�=Ao���k������T��0+�s�ܰP���a�P�w�~nC� �� �֕ܰA�@�o�)%�;�ζ/ۥ�}��~`?����c����E\�����s�����u��}���%�먏�{�z������9o��o}�η�B�Ⱦc�w���?Zc�ϰ3���v�~�����_��:�~��<�{e���^��<���$f���.�i6�~���\�GFȽr��/#e������ևe����Q/�1y\&�~�?)�e�L���iyF?� ��9�!��Ly�׃e�̑��eyE^���u�+o���M�'o�Z1_�BY$��by�W��d��/���P>�u�c�D>��}U�BV˗�F����1�e�|#�[�$����l�d��(��'_~��Sv�n�#{}5�/��_��*G�79*�$#>��´4טV����\gژ�M[s�ign4��_�M���h:�Φ��jn6��-�����0=�m�v���a�6k��f�Yo6�o�F��d�3���f���l5?�m�'���lv����'��f��k����9h�_�a�9b~3G�1�1��w)�
mʦmd�l�ma[�kl+���ho�lO{�a������� ;پb_��۹v�}ˮ��ٕ�s��~aW�/���]k����z��~c7�o�&�]xqXG�]�pu�e�&�*\~�ׇ�o���ps�}�%�!��n +��?�;�pw�'�������p�kx$�-<3aA�P�h� j]5�.�.�.�GM�+�+���UQ���y�"j]��ZG�F�Em�룶�
Q��ƨ}��覨C�1���������wK�=�5���n�n�zEwD��>Qߨ_�?
����G��DC�a�����hDtot_t42����D���w@U�t�V��O��49��$%C�`��3$**AD�,��,""���<fŀa̢�c�s@Q��ep��g��������E���Cw�ڻ����>�g1��9�\f���g2�L���f19�bf ��Y��2yL>��Y��d�3��L!����1[���6f;�Cz�.������e�1���A�s�)f�0G�c�q��9��dN1����3�Y�s���\d.1��R� +s�)c~a�1�2י�M�s����e�1���C��y�<e�1��s��yżf*���'����|a��jR`f��)`�0k�u��-�y�|`��Q�hv;�ǎg'��6���Nf��S�1�Xn7���M�R�Tn7���M�Ҹtn:7�����fss��\��[�-�q�\��-�Vp+�U�j��[í��q빍\!����q[���6n;w�;��s���(w�;ɝ�~��pg�s�y�w���]�J���m�.w�{�=�r/�W��-��{�}�*���'����Uq�<�1O�2^��y9�������G�c� ��Ɨ����K���ÿ�����|����W��/|_�DJ���2���Vʕ�R�TW�JN�+�JA���Tj)��:J]��R_i�4T�S)�+��&JSe���\i��TZ)*)+�(�*�)s�y�|�r� +�J�*�je�r
Y�&s�d�}�KA%3������e� +���g�#9��݉�%��G�k����~������J�wq��Lm&��f2c +�+pu7�w
AS����J��O��� +�џ�O�����峰�|�|>��/�gcky�|)�����ag��6�T�C~������n�Ry)�'/�_á���8��%�n��x0M�.�9��+lv���Aጋ*� +Wx(<p��K�OH�g�����%>�h�h�O+|��g����QtTt�g]]�9EE|^����|Q���W�!��el8�a��Wv��o�#��)��b�p� +a
����5B&��"S�tL�A��k2'��d�Z�!x�"��4�������`L��td�g�����s����#x;r��!䌏��H�O��ȕ�7����A8u{2�ԏ�:���;�u.�zʄRQ*`����-�-0��T{`��T00�TD�Br`<��1��ӑ����E��-@��Zv�fK�+H�-cE��M�.p��xd�1YIȀl�Ǒ3��R���}�C��< ��E�!��G��[=D^��&ϟ�����F��_M�>�������b��.^�|V�HFA.�F4��Fr�w!�!z)��
E�D/��$zi�t�Bv3h��݁�͈��C�1j�>e_�^��NDS�ԃh� �� +��2���>D�v�K�Q@�/��H�S����J�a�$9K:�`2�Q�D�2)<���G���tk?#�}ьj}!���1M�EN��!�� ����/bI�p��<�#%ۋ����#
Ⱦ2����bd9�d��b ��^��+�E���b�-�E��l@�������2���~��O���n�{��%��x�~��d���B�ῠb�s9:���1G7��ء�J8�zo +�b��DV�O=��C��!�Cj$�$�IbHR�8�N�K�G�O�@��C�$i�8�C�.�Cz$�8$}k�0h�S~����Cak�]Z`;삛�ָ=��ǃp�%���8���W�
xޅ��#�$>}�+��#��ş ��)�Ҧ)Sʊ�����v��
�#�!�~�싽�쇛���7#27'2� 2{ #O�Q��Ѹ-�1ؗ�!����ǁD���T�A���'I�R�I��Q𒔯T(�ܧ�ܯ� �B��*��� +mI{�!�[��¶ 4 +�� +uD�n�~��FU��!��c�d4e�%h%ڀ����c��%�+d��`l]�O2_�_�n�� B���Ѡ�:���D����7���7�7����[���[���ۈ�V�Ht4�$hـ�} +3"�+̉��� �JaId��J��qC"��2b�\b�<b�|b���r+��V��"V\M,W@,��Xn�d�.�q=�����
H���Gz܈�x}��Ƥ�1R�@�n���t�!}EC��� +~B?!R� +�B�0T.�F �a��&Lf s�!S���a��L��+���a��A(����va��G�/����q�pJ�Y8+�. +��+B�pM�)�/���[���>U���\�_z�B����i�0��o=S#��Z� `����קj��32����9��T�ڜ�fO�@�r^ +�E���S���6�/��Lu�zQ}�H�U ��IkZ?*�:V�g��x��H�^u��F����w�WZA����H�iu��'��:_z�� +!�ٍ�c�]@W��D����֞�Q���?����Fx�CYRփZI� +o�/�_�ů [yM�o������ f%�?�*鷉(��2�GSrh3���7�$�jѤ æ�)]h�Q��6��Z�Ɣ9�-(��(+�.���ж��mO�Cہr@��j��DI�EZL-��j ��RK��L֎�B�?����:�o +�NF� ������T����VG�SLDb����$�6� �aI1��b�L���]cb��$��&��i%�(U���X����]��u6Ŕ-�ȝ�"+�td�ۨ�ņ5[�qmbF%����c��%�I[WG��m[9z5�P���5 +�P�.Q�#b"��TlQ������B���,��1Z�����5'��Dۤ�|թ��V�]~y��ųA;��3n�E�OW�����쐅6�#^���^7�٠�Ն��3�ZVZٶ������V���c��e�;��m�E���>�O����g��}&�z����f90�P����[Ggtu.�ٝ���[��A��ޔ������N�(�sƉ����7$����Qe��i�hm�����W�v7�2[g=�fb��Ef<�?hG�.��}o��)��&��:���7�L�}�2i��NŖ�/���p%�a�"�C�Т t�� +��u\�����2vIɃ��Sޕ�h4����d�C�'sM��/~:���\*[-G[�w99)ζw�ϸ�o�<��~�F�G�ք��R��� +\;Reu�թ���g�{=�p�υ�=�w�d���a-5�E+ۉ>*���@�Z���`���"m�:�.���r�����ݣ�ݼ���\\==]=\#���\\�ݢ#��~q���苩�7�����pj����F���a$ +�����K�*U�bcGѓ���:!��d�N���|����I"/ݸ��㫔�~7�e�����\�q8��2py��+�_~�w����w)�iG_>r�ٝϋz/��9H������7z��=O�n�;�[&��-�x�B2M7>���\�q[q�*����~g�6#wN���ƛ,Nj�|5Us���B��9V�Sfܴ6�m��©���ӡ�Iy.O�mu��W^�7��$b�0�n��FvY>.�Zd���?�2��H���� +��G�CT��e�Y�68�&�Ց�'�|N��l�j�nv��q��*������^��r2�Z3)��J�YՔ��Żz�W5�=�������/R��f��p�ߔ��>^X�]�L7��܁Vi��=>1��C�yLj/K��ur����?yήv�^�����g���3iȴ�uOVU�^7*��y"�����IE���=�lV���{��n~����fGT���������vn`7c�����vmY��������>�Y^�~��l����Y#J�)�T5}W8��|K���.�y�yr��뉃p���)ö^�m�ݤ��ʹ���8��pF�~瞹��g�w?"�ŋ#W�ը�~_\��ʖ0 +���?�Wl[<�N,�Ѧ��C_k.�^�G�����mG^;3�s'\�4�w,�����1sv9]�^>36|W�T��NТ�[��gS���&x�=ɯg�{�?��K����������ty�����Sd���YY$T��|/y���s'a�a��ك����p<�Yx��[?{�������iU�����\ɓ���SX���ٰ�/��2x0c�Qw�~+<�;�k=�R�D����=�Q}zcVW���n��f?E������㔩�;w�4!s����ޏ:��pt���m��#��O47�m���;��l���?>����5I����n4�k<sh�oݽ[�n�4�$�u��Q���яZk�3*Yfa~��c��{���v�t�eb�Fv~V�!O��X}c�ғM���X'ɵ��0?�8��u�E�����������v/��Lw���f璙�'��-5��I5w��kή{���o>�-�+}��SІ�ͫ��o��nT�1Mg����E\^�
佘|Ҽ��i������>��tn\ILɃ�'Ϩl�����\�T?��'�e�N����Y�ELeF��t�7(�^ P �}�����bQ���g@��� +t{�*5��A����_���W��cK����ڎ��w�8q��ćV7�.:��q�k�f=��/��}�Y��M��o��shaʘ����mtlV�0������-Γ��X���H�W��6s�lx�����G�;����s҂q�f=t��_��"�u�/��n,x��y�oސ��J�f�bg9`����o��ü�^�?�Rj�)����(�A����?�r'ѱ ����']:�������nbH
�I3��y��:L���&}`�¨��Z������..��Ձ�`1H�s������'�)��͛��,S2Ŕy���$S&���.Ga}J�"�#��f1�a��"�9
L�[֞��L]�LPG��04��2��"�(ؒ�F&�c�/ZNf&?J����*�V�QFN�&
�X�eiݎ�X�:k܅Q��CQ�N-*���N�����=��@��+��\�8`�jaߨ�s���
�v��{����f�g���e�������믺��dd�םǑ'�6Om�Fg��I�f�=Ո�;<]s�ʵ4��|ুN�����h���uo�ۃs��������>�q
�o�.?w���i����NBs�"��A��G��^��ߋ=�>������kzi�}zz��6�P�����㞎�B�M��y�˷�v`e[ƨ�a�d/��}`��ׇ��2�����˞:h�.>��vX6�lz��[�|[8K��٥�/��Mv|�>�ݎ���"��Ry�}��[?�9&Ͳ��q>�w�R��L��0f�
�k��F~�����C`f��ͣg/�w-�3=viѢ�UUJ�<�ʯ�����uޏ��۽�?z]Z!����J ���6+g�>[��O�k�W�����e���47y��Źa~��V)V�w��h�{ř%�v�/��p=�trvY4W�G�������f�*� +8k�IJ���e
#�A�ԁ���"�F4>�D��lȃ<�t��m�g�,+j����b,�*�=t�4bk�����o����K�Z� i�13Y�ՠ���XE�,��If'�`Fe�t�x"���P�P�Ag��,�O/J,ȨT@��Y��~O?3�[wRӇ��5'x�/|�j�vŕ9KD�?�o���>Q[7,��f���Y�i�p�o~��w���dy����jO���]L�yOw����-�Owf��1J���>�ﴱ�������=���kdYu�[�f�����%��]U�g_��[GQs�n���
q�ڷ��^�,�MM�����uHX���x]k���&/�2�S{�RG3C3�
<�߯��\��>z����W�t/k~][��*+���������������%4�ƹ�s���^m�4A[��-ƅML�� +"����D�B���7`q�mHi2�@9Ir#&���eX
���&&F��F�fQ)r�i�wV8���3�υ�ѺL��R����zp���&���N1�wO��$6U3T,{��?_�����/~�'v���az���ʫF�}� +B�<��|_<ܮ��bMւ��&�l.��Л蒥S��Dq��Oa�gX<���,w����$��g�qG��]����&�{w�Ʀ0�J���'�Vna�r�|�[Xzi�G��UO��d�^v���I���#�e5�K��Z���K��>6���i���*t:��� �N�����W5��e��时�Gwҧ-�zu���O|��p��\?A/~�M��>10 +4 +endstream +endobj +502 0 obj +[278 0 0 0 0 0 0 238 0 0 0 0 0 333 278 278 556 556 556 0 0 556 0 0 0 0 333 0 0 0 0 0 0 722 0 722 722 667 611 778 0 278 0 0 611 833 722 778 667 0 722 667 611 0 667 944 667 0 0 0 0 0 0 0 0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500] +endobj +504 0 obj +[352 0 0 0 0 0 0 0 0 0 0 0 0 0 364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 683 0 698 0 632 575 775 751 421 0 0 557 843 748 0 603 0 0 684 0 732 0 0 685 0 0 0 0 0 0 636 0 601 0 521 623 596 352 622 633 274 0 587 0 0 633 607 0 623 427 521 394 633 591 0 0 0 525] +endobj +505 0 obj +<</Filter/FlateDecode/Length 33219/Length1 63476>>stream +x�� |TE��Oݵ���%k'���$�4����h�l,A �i D�` �'L@1���㸎#M ��QTTp�QTQ�<uF�������f��o��7���(������9� +�����Yf�]2�0�v$��t�TS��i�n�{/�k8��6`�Q�c��
�.�j��e|wv�;ƴ��]5� +�O�
L +�J�~�h(���8�8ɀ_�3��״������n�%5�H�N(��C`a$;ā��B,?��9(U�o�R��b�V��`���e����w#���;^�AJ�j�Tr�C
�K1�#��c2q�h}7����{P��c��N0���
�r����oq����W����y�0��������p9\���p9\���p9\�ï�v({���=�_ +��A�����"psK1���K�z� +n�&��#,���v��W�<��0��C��w#��e�=�S��`����6���r��80�0�_�_ +��E�@�ԃ>�0C�����4�)x�`FZ �0"��<Q���dX�V��� � �HlH�B;?B$ �@&B2 ����`B���HA���D���d�!��P�ґ��2fB&2��ِ�́��w��0��`�
nd>\������p%�J�W�U�(�
%mr��B(DA����(E��H�H��`r4�~c`��"���ȫ^���q0Y��ar�+��P���JdT#��&�P��j��`�Z�������U8� ��Td�!����0]�����z�L�������lh@6(�s��Ј�����09O��p=r>�G6AS�3X +o�����:�k`
r-�C�S��M�c�N�zX�� +wO +�m�m +�������� +���� +������'���w +���)|~ +��8�=�؋����`?r?�]8 +?���)�>�S� �8�<
�"?U�|< +g��s����/�Kd�_����@~_#��o���_�E���!��o��������ȿ#_����#�'8�<�G���~ +����1���� +�Xb+i�u:�r�4�!����cqDQ�Z{��g´�gt�Fb��KOY�Β�96���\k�m_sq�����6 +�Y����Jq*Q��!�9�/@}]#�f�4:ΒF[����X7(cP��4��L��V��%����i�����<J�j� �����7�N��+����lBM�cZ�5���K��K��d��FG0_�Ͱ�`B����9:gS��^K�W��^>>Ir�:��s�}yiɴ�!I��c�������a+����l��I�Νee�M%u�����ܷ��+�P��H>�=��� 5V��v [>�),�2\�;�?�U���
���֊�TC�+�9�RAB��{ܿlt�f;�<E��v;���=��_���P�ӭ��q9q?�hM�@Mx%�i�9߽_yRQ`�>U���)�\Ґ�#�M��P��\T�Z���ce�Ɖ'}�/҉σ��� G>���kz��km�5 +=��
��r�`8��FJ}G�K��? >�����>��U��0Ex�G94S(?z@��LPF�*� �**�� �����u'��к����fSTWX�3�j��P�+�-��4c��� �Q)��{= +}(Y����=\��3К�2U��M)S�N���hx�ʣ��=c�IhQ7��ÝVإ#zb݉�&(�=�m��c
�h����U^�t多]:�n +�C�4���j��q�Jl�>Oy��چκZ�W����kk��g�y��)}R�#PA����&��BI���s�u��2�0�F�al��B:�c/Ɠ90��'��g��O�fFn@����%%�zz0�ە�;.���Dw���=$���{Hy7�W�
��q�j=֎��jr5d���@\����FX���I���V��&����"�x���LL���~זQrۈT2n�Ȑ�8����i:�u�3��i�M�V�O!5x�������v����HEw�\0B�v�0N�Ȓ���U��*��[6�ì��� �_�+5�TI�l��8��83E"@��Fb: +�R��%@�*Iq�Dש����BH%#�T����b�6ӄts4�n�&z�KX�W�Rw}������ԞH|�9�S�Y����٧���OcdT���/FF�~�E���Cdۻ�w�qG�a^y�$�����6��g�L��+O�vW�|'ƻ�2孛��-�G�w`ܼ)M��n�*wm*��M�M̦.�<�kjs_�<y��N�N0pB:�~�s��D� �s@�ͥ�(߯�r�}�ӣ�ra��Ƕ���ݴ����|��}�}u}l����V�[Mo�m��~2S� +�}O������g���`���A�ܮ7�$���75R�U�1�0��������{1>��L~��,lu˷l(�o^_&oX?X�\_$���֑�=1�ڎTyMG�|SG����c����q�*����Lno-�=m#�s�Z�+0Ӻ�DnZI<+G��_Q_V_[_W��^�GI2���TY�rtT�̱v�lJ���R�a�SɃ�� �0��/�Yc��Q�1���H��l�$�N�ө5Z� �txe��}F'��Gh��2��8h� +��\�Gqn�pvbډ�w����El3�S��a��� ���»h��K"����X�4�^��U�v�ݘ� ��6����_�}`���i�+=�� Nr���|�J|���K�ʷ�7�ϲ#����t���,�Zo!3���b���`Ց�#���/qy?���Qf���>��|�屲6��'R"��x�a�7l\,Wd�LnwF:q: �0;0�}O�T�F���)��exJ� q���̟{�`oW��a�"s�)�+���^��Ù�(%�Z�Ұ��*n�rm���UY)+���#�K�EE�Z�'�����0u��j)x���,����cpY65i�F��X\�S�g�K���\�,�3�.To������U����u;���L��o��-D(���/��B�/~;α#� �)�%���L^k�:�$a,Sf�l�55i����Vck䊤0`�z�&5��� ̉�l��訍�j�<�.%f�g��m���5��\�j�H��HV�C��������[����m`�6��&feFD����A�ɎA�pKDVfn^nn^�(p�G�O�/l&寷�^�f��m���?�<���#��\s_YIѿF���tgA�I�;!nТ9��?��'N�\w:�:�T��_ZX��"�(wb�Fk�h���T���#�:�,-n�unma�&WS��ִhx�N����� ]Gٓ��,[���0]ZV�Ҡ��� +x���S����tY�X���\!=/�AD;kE�7:�Mk@��t�j�أ�ɏ�_}�J�l��I
�yJxϏ ��*�(�$�ƎӖ�9�U����0Y�K�j�E�E�V�/���]G��S��3F$]*��?���!�F��ħ�����A��&5l?8P��?][G�ca�"E�y��p��qL�P�cS�K�VC��9�ഓ�����%!Κ`�N(L���/�
N�/{��v;�$�MǢ`yR�R�H*]�]`���v����ՠ��^oD��A�D����5�9�)}��<^u�&�V5������{�b���%^"{f{���@`́#��Z�,&�� �.�4?pv�?TN����̝�T������Kn�#�$�52eU����5xW�m����ϓ�Ȋ���Vg�%&$��Q��͞�A����ZF��x����т� +b2�˔2�L�3�l>ӊ�c�GOtn�0Y�J�j�E�*��n�uT}R����S�Z +�~�ո8T{�o�ڡQ�I�ێ*��zk7���/<�~�R��Z�ӵ���\���D��s5=Q"�?(��1�,�[�l���5�v���,�sk�h����-�x��F<.t�,����~�~��Ss�����PP���M"t/��z��ao��n��"�<���c*���C$␝��~(���.nGW���:1\,���2O:�q턱�B��+/ +n�0��⽮����n���r]��K�E��Ȱ�����ߝOj^g>��x'�5�5��vxnR3�r�0m#�����.E��vk�Y�z�f�v*7U;������Z��%�V�u�f ��cuЮeD(C���r�v��6Q%�v��az<�z�Ѱ�V�\Z�XQ�o�T .LD�v�(���E� +^�;p�Y�g܌Ǽ�0I�?��F�����H/1���}s�Qv�O���8�^ٿ���h��N �`��! +H��/���G(�.̆����.xF
�� +��hD�8Z��-�-��_�ҡq��\.W�Us-4���ۭ�ԉM"�a8V`����~>9拾[�L�� ��z�� ��J%I�~>�'�Kx�^�P
k�9I��-����6Z��A�Eࢣ����Ҹ�)����""���B�݆���I1"B�&������,�T�h�FD�[6[1�6d +���?��n;�^�n]�������콹{�}��E�ǖ��������_��=��Uk���?$�}ݱl��QG��S��4�-%'<'�4�4��01u�yFJ]��űhP�@
�=�8"�'x�3J��cl��:- \$��c-��Y9�U�ɍ�rM���΄���)����d�2=��M��R&������bT_�+�H7u�5��%ږ��h�$l�nMPQW��|B⠼��#GY���
���@�7�n\����fFw~Z�VG"W����kF���d��;89-ld�Ǯ����֨[n����w�_;���%�#Lv�㱕o�!o���}Ya}��itע�ϕ�����-��@}�8X�I4�b��Z��]�vk��j�
3�uz��cu�Dk���:��b�q�<2�w;�D_��+�-B;/���@-�mjV�g�7 �Eˢ~^V��m�6,d�0� +Y4B���H�5A땅��e��3-�1��]_�6�_;|Tg�|�u��;"��a���/Ə�����W���-s-���(,�jK#� ��s�I��!O�*�A�vQ�A7�:�XA�� �,�MFT��J@K�F�]�Y�ZN�.V;Q��U1x�*�H�F\b:)y�h�$�*��1�L҈����2hFW����D���V:�D�#�P��T�e��QZ��yj�h����(�W
��W �7�Ku�x��8��M&����� ��9��3��g&�½��⚂c�I7>ż��:ϸ���U��y\S�O�>�x1�A��I�b�9��S.�kHx�+ߒ�^�H��ڒ���>'>'>~MF�%##;ם]��;�����/OX�1E�E���جآX666�<.���$mI���w�#P4\�x;.g�tڨXKtt���������@�x�x���&���N���C��!��6���5�+�Ͼ�� �Voz�� -j^@ +�*�M�a�Nj5I��g=�v�g�v���Qcǻ�����ؓ��bS"҇�L�<�CWZ�TP�����=�Z�I�2�h��������VVFu� ]pI�ܢ���"
T8L����q)SSZSؘ������3���u*����/W�K�����Wx�O�&p��?�h-�SR�=�}�`同 +�vp�sљ���ι�H���&�bJ���|q�����l����(���T�����7�I�cF'4r��&�r�`�8v��[Ø��3'�ͅ�LS�T1���KLJ̗���H��������QǨ������f��l��B�PG��������UKJ��uA���M�
�4����S[X[�]{������V�n�t{Q���s�sZ*v�,?~�������O�HN&��m{}��
K�+2�� ��Vq��3��`&g��,��h)ZuM&Q��I"#5�VI���h"J��j�n7�Ց1l�Y�S�
yfsJ�j���;e���V��o�q@/Q��N�$$�H�Pٵ��VVH��^�[�~�����Y�r�?���|�%����όӦd�_uU�H����n�_u�
T{��}����aQ7�_���)�`�Pj����R��(X��jA�Q�խ1����1ģ.W7�W�� l[T�!=jc�e��1�C��X���я�{����>:&:_���!���*l�Ѡ�>��]@ +B���Yt���D�')No/����F��M������a������e�d5���u�����VU�W +f��35�嫒7�s�/nNz�� +�.<P�=�{�,�♛�d1Y�1�1��Ys��C��Vq��5�ɾ�d�#1�lJ0e�.ٔc*1U�ZL�);';_20I���VS��V�`2崢^�Vkp�L���A�e �wD�T��\,���B���:I�{�vA��l<:<;v<�� +ޟKv��3����0�f�۪���a+�v8Ss�3�Z�@��ʉg:�����-�~~ޕso����{N� +��?zhFj�����E/��"���ˇ8�_�'Վs����4%b����-{�̥�*3�<��E��XR��5�/
[����K�¡A���a�̒��h��&�h"����0٘c,1Vyc�5&߸7FwG�d�H/u�����/s*<���:QJ�n>Z��^��������S��2�������� +M6^:��M�&-��( +��|_�W�x���V~/=-,�1�@"Wp�K1A��A�J��ZIի���NU/-��+��d��S�m��p�4����w�j����V�r.���= ]x.�a�%�5�+�2'li�*�_�*���T��X��q�D�8�r*TԢ�Dm�5��3X-�Ҥ� +�1�^��S#���-ɾE�_
��AD�FB����Z#^�.؈����\Q}j���j�7�=x-f鴻���YVw7������o�O��<<�*���u����t�bX [���YE
hb II0��BE��b�88G�@ga�/�7�ej�mۙ�y��f����9�������<��!�|�N�r�������9UI�]��qY�����;^u϶���_q׃K�(ҎRW1�?��|�kV�
�r�e!�d��U�j\��ƅ�%�
�+���x�T�����j�����5⫲�ƨ�[�m*��.���h1�˗It�#����Lr�F�kȏ�o����n��ٲsC~�X���O�����3���t*�S�>;�y�O��s?YQ{��-�T��X�4'�G��+¯�"�N�+<�
�gU+���>66�<^����?td��E�U��и�����pãCV��wVg1j|����.ImK�6��W������>z��3��ҧ�Nw8�q���h��ҳ%=�gh�#39!!sd֔���e�g��������t��$9jD� �������g�[���wH�Q�K#bF�G�#ݞ4"Iu3c0��=�����6�������ޥ]ֽbٻT�o�I�Ғ�Q��w��w��_�̕�������Ȩ�����/_=��|ꔜ7j�ޜ�3)s�� 7�r�U3���lB߷c�wOJ]Q<2;641:��k��٣�d�{5rpR\JI^攸�����Kf?0*[���-��npx�^ҽ9K"bSbǎ��wMܪ8g/��=/��S��HJ�OJJ�=(%/e=K��I�ݽ�Ε��ri��!I���IR|L�;^�/O�S�^�w�\�p�Dk&01�K��Z�f�vY�!�K����1���3U=o�f"�:Xݐ��3�h����>c6���t�ƴ���Җ�ho�����SQ�5��'�+?�!O +�]K<2��R}Na���k�k�:õ��ѵ1�:)t�4C�Q���Y�:�)}��=��������&re��#"R���$�r�R���f�a�ȑ�#D����J��JB��^<�e-�� +�����~��D̔w�����-�g����%M.���R�n�dk�Lf�.�=c�&Y�R��v{���^�y�3���9�Y�Y.���Ң^�9p�d,�["G�#;��l,x\��)-�Rd*&�i��Ҳ�T�өqj�[�*ts�dyb���A��Ȏ�������j�7μ+h���VQ�ZJ������J�M��h��.J������ʩ����5g�b98&���)� +w��%������k��g[�����<Dv2ٺȞl϶��f\�^?M w�W� +YǪ�����%����q�}��� +D�T���!���r
��F�5,��Hu�VYy�e:�l�&�=�!�� SXS�i�3����\c1+�e��E9K�����U��=��?�,֦��۔�37Q�
�md0;���_I�\�C��S��[ي�d�(r�i������Yn�W��<ӑG��/��ň����*���P<*��z�j�v'��e�tD��(pF^%/���Ʈ�[w��?�<�!��ޕ5�������y����<����<�o�8��FG�P""��Ct�J)��e'�_g2!FW5}�E��O���t²]G�[k�+�����hW&�<Y����M&K���I�R/LK�ľ���4y���3�D��.M\�%a}��QB<�Xq�y����ϛG��cW�>�q���8�|/��Oʮ��ɻ�������o���M=�H�x�;5B�zO��݁S��
�*Wo�M`��v��m"�D���Hu�����hG��l*�z��y���}�6�S�lm�/��{�E�ķ������~m��R�@ ��ʆU�,��y���c& ��$���z��L�5�˥>t~�n�T0�@�XXڋJkI�7+^:�� �Z�[IO���SOW>�����<�?���_�ė[-���L{vc�5�&��el,����_���6{��c�kw����h�w��+�����Ŗ�",+��\�iç��iZ����������w�M���㥄�q���-\mg�ٞ�Z�ѽb}�ed�=�~�G���mi��-�q������7���-)o���R����L��U��:k�������}��ޭ�W��P�f��vl��4����B@�Kl����)d����GO�.'�(���/�W�"�������s�Q��^!�ۊ�H���^ӝ�+4�C��[%���땳CZ� !+�v�R����ֶ秪w�9�Q�Ã�����9F�� ��O`F�ۥ�rl��7K�/����3�y�.G�JQ�����+sd�p�C��������*�����Q�)��g������Q�|k{X��nbk��^ǽ!��m:o{4�Qg&���\[]�C��E��a{]l�������:�yk�5���ݢ������~�~�~�~�~�~�.��̍9�}�<��n��fu���T��b�cG��Ǯ�}6��8g�ĸ��ދO��,~�>�O��?ھ��[B�O�ؘ�NW���;&�R��?���%0g�h�U����N��Ų�N;�i���x��vJ������v:�K:R�R�c�����i��o4�r��,;�I��>V�a�o���IV:��J��֤�z+����m����V�e�N��OXi�&E�A;-KQjo;���;�J�ԇ�4�����Cꮾn�C8�';픪���*o��P�9m�#�Z�������a]�!�K;�s<+��}m�"�����f�5�픭t�]��vZ��;S�t���9�N��3�J�YǗ�iq|����Ҟ�]�3��~���WY�D��/��8����!�q���&�^+}�u��촸��J��Rn�.����i��"�/�t_��+�N���i����]#�4����K;�����K�]]�����.�Gti���w�3�
�t�.)�([[���=����������t�{ҪU�+*+��WT
]T\QTPZ�.Y�.pWV�.�X�.[�\Q�%��eU��pa���Ғ�CϞۙɌʂU%�|[Ky�C���g���.�$�u�)��הU�WԸ��SXVVZ�.X�./�X]RYY\価ƪƴ����� +�KyEYQUa���ԽnEI�.��/)-\UUĭ�e��(�����J�����K+��;�.+]U�N/�.^}���\V��_�F��E%��EKVV���R:���k�U��J�,^-����R��֕�*+�Z(u.ִ��e�gUeyU�������X\��xU����,���nݺ��;�e(]�QYS^����|EM�(bm��H*�*�"�@*Eni�T���R�T��Ϯ���J_����{/<7�˹2>+�~�5��A�9�E���W��=��O/��fsG!ז�C����EM�8Rn}p��T��Ǻ&I���/r�sk�o��E��|q�u,���J+�"ίf_�en�\qfG/]����*��yu!��|%�X��ĝc/���`��2xn�m�[IY����9��V���j+aE�u�5Vݖe5쫬V Zl�eVI�V[��~kVܷ��J����
ֽ��1M�Z��v�[��L�ei�Z9�X6���*������k����"��2>���� Z Z��.��Ρ�Ϋ��^q����*+��]؋�lI��U�E9��6:�{����>Yiջ�_��`��k\��m����C����#�,��,����v.8�M��~-�?�V�U|+�>�Vm�-k���#�\eQ��zh��r�А���چZ-z>-Cm�2H�X.�l,'��vZ�V�8��cd
�-���Ty>g+/˺D�3�)�_E��8f��lj/�YK֦h9�$m���/���Xv�ҕ�9O*��~*��5Ӹ���&~]����J��]��L�%�I1�@�IΎ)ښQG�D��˒�R�ss|�;VH�IjaM�*)~yE�J)mUAe)aM���B���&]��'���\8�-%/�;�-���(�b��*�t�����'.,_[.M�>�Z�3��y�碕������s��Yj}VZ���O��T/���姆}�R��&����4�<���Fp��?%yv��Q~T���I=�m�N:�.�e�����
{.�� &?nB�;)$ٕ�Ȗboi�I�d�7f�u4�
N�M�$����D�� +��z�^��ӒBR�I�.�x�qq���"/�������Ĵ4Or�K��צ}?��(;X�dW����[�q.�A��B�Q��b�MHNy��$'�o� +���e$��㘸2�����Dw���L��yas�������Ȩ`y��ms뿏���\��+\ǂ������y���U���Ol�i�&+��`����6�'�e��s�S��o���O�?��!-C��qE����27e�fn�?�b�ǣcG/3!�o��q#�x������I�u�?��F �+��)s����D�oC>�cD�ب���l�ȏ�F�.��Ln٧�۸b�N�)�;nD�&J���҉X�}j�K�}s�O�d�>%�d�ܔ}j�g��ɽĝ��K&��O>&�ܟ���&O�<}�SS�u��Ԅ����%�N3���vNkی�b������f�ɸb����^�I�ԶCK@�( uG=P2�����Z�6���!�=���Eu�k1|�֡kq��^��Q9�֠ +�Ur� +U�uh+����A�(z�#_D�Lrݥ�r$�t�UO�z��Ӥ�&�4��I=M�iRO�z�����wQ�.J3)ͤ4��L�&�A��=&���-�M&5�EMLm�UMjdb����s/�}�k�xV�=�Nt���q�<�Em��7���~�
j�S#���H���)Q�4ݲ?���ȭ��Zɡ��ȡ��ȡ�Zɡ�Z��U���u�ȥ�\Z��:���_I���;|��v�L��P5����"�� ��>9���0�"Pd�O��8N�|��G�����#��vzg;�����N�l�w��;�����vzg��ʵi�����(
@� 4
ACQ���,4�D����Ƣqh<���&�4 MFS�q*�i� +�����h��Fs�\4�G�Uh!Z��Aע<�-�-�Cף|T���.�� +T�nD+�*���2TεkPZ�*9V���:t�נZ����m ���-�Vt�mB�9w�;�t��K~��?�$��m'�0ځA�r|'�'�EO�_�����W��FϢ���<ڇ^D�A�E��t5�7�1�2ч�Ԃ�D_���7�[t +�}��G?�V�t���խxr+�ڊ��va�
ok��Z�V��okŃZ�V<�j��[��Vz���n��[��Vz��m�P=�F���
[ᰁ�m�5�m������i�ڈ(m�WgڴCm�d�8��4�^�r +[NY6C\6�bS�R�.
�A}Q?�ŵ#�H4 +M!�9��yh>Z��B�bTH�E�-���h*A7��hZ�JQ*��5��EƢ��w�J���d���ḈM��˟��/p�Az/���2z��'e�>Z�G+�hs|��vZ�����|OC}P_�e�h$�根h�����B���Ӈ�>,�a��}X��b��؇�>,n��,n�↋��m\�u��GH�8�<��ړ�a��M����V����>Ⰿ8,lm$���o�}�`1�Gm�H��H�E|Ƿ�ۭ�ۭ�ۭ�ۭ�ۭ�ۭ�ۭ�ۭ�ۭ�ۭ�U#m�H[5�V��U#��G��o}�[��G��o}�[��G��oE�6Ү��k#��H��G�&����>⨏8�#����>⨏8�#��>h��F���>h��F��Q�Ew-�CK�}r�נZ�=�m ���-�U��elb���w����F⡏x�#�m%���>��������#���{>➏��#���{>➏��#���{>���F<����#���{>➏��#��`����#���}>b�oheѬ}@=M��}��@-�K��}��E����w�{�jE�@��?�7_�IM��G�||̓����<��_��k3�5c�f�̓�y�7����<��L�̓����<��%��f���6������f|0�����||0�����||0��g�3�����L|p&>��=�����|Ѓz�A>��=��G�DY�3�D���eS��h�~�&��(MB�������+P.��f�Y�J4�!߹h�����B�]�5ע<�-�m�Cף|T��Q�r����J� +�F����5��E��i�F��M�A�h=m衼�������[��F�n'���f����N�sl��"}7�NJ���'1�l!*o���`.���u/,�Â<�6��L�ؽ�c\��s�s܋�@Ov,�
lx�*mߟ&�+T������Eϡ=�y�价#�qo�x���`�3��2����G{��A��(�����-�=���{F�|�����2��е0�!y`�C����<0�!y`�C����<0�!fw�Ќ���pTG&5�� G&�p�G&5��a82�Ȅ#�L8j�#���Ȅ#?�p�G-��G-p�G�pTG�pTG�pTG�pTG�pTGMp�GMp�GMpd G&�pd G&�pd G&5�P5�P�0�C�0�C�0�C�0�C�0�C�0t�L2aȄ!�L2aȄ!�Lj��&j��&j��&j��&2aȄ!�L�Ð��0�!?�0d C&�0d C&�0d�P��P��P��P��P35�P3�Ð Cb�WCb��C&5�P3�0TC&���?&���ӂW��K3���K=���b�K3�4�K��Ê +&��pb &|��a &l��a�F��&<��` &�0`�����������������������������������������������������?��sO�ۏw��n?�}����-x��w��n?��ǻ�x� �ۏw����xw�=O
��f{��{�p�ym�NG�@4
FC�P�����(�2���4�Bc8���h�~�&��(MB�������(MG3�,t%���P��h�����B�]�5ע<�-�
�Cף|T�~�|�߯=��p���~�9�F�A���'��<�o=�����h��b7�{��[���xƳ���{�k�zF<�y�c^��z +=�~���n�,z�Ab��p?����x����~<���p?����x����~<���p?����x����~<���p?����x�_�Ƴ�֪*����|/5�Уx����u~�Ώ��/ZM���\4�G�Uh!Z�?�W&�iқ&�iқG�ͣ��Qz�(�$zD��Q�i?c�az�(-��Ҋ~{�t���Ox�ӫ��LX΅e��`Y�e�u�/�e�uX��e�uX�aY�e�`Y�u�`Y��ZI���h�:X����`��sa9�sa9�sa9�sa9�sa9�VͣU�h�<Z5�V̓e�uX�aY�e�uX�aY�e�uX�aY�J�z��^(�e�uX�aY�e�uX�aY�e�uX�a��uX�aY�e�uX�aY�e�uz6��ͣg���<z6��ͣg���<X�aY�e�uX���X���X���uz_��uz_��uz_��uz_��uz_�����:z��ޯ�����:z��ޯ��X���X΅e�uX΅e�k`Y�8�`Y�e�saY�e�_ޓ�:<�����:<i1\�Y���;n�o�R���\���[�o�r�������0�ø�:��0�ø�:��0�ø�:��o�����:��0�ø�:���F�7�C� }��@-�K��}��E����w�{�jE�@��?;tI�9��x��:�DǷ���/�J��d����&ƼP-�UW!*B�h+����9�z!x��-���j�xm�Ϡ�X��=c�84�M@Q��&w�g��0��q����v�l�vkV"����i����_��G���]�hH�ؑ@��"�N$0��� �Da�A$0��� D�HPO$0��D�H��M��A��-�c�|:@'�D +�qJ�g
"���N<1Xۉ�`h�R��`���d��5�5���x��������@�D����ZЗ�+�5�}�N�������Ԋ��N�Bˇ�r +Zb��-���/�x��Z���/�x��-^h�BK5�x��Z��R-���e��5cg���� r��91�91�91�91�91�S
9ՐS
9ՐS
9^��B�r���/�x!�9^��B�r�!�r�!�r���/�x!�9^��B�r���/�x!�9^��B�r���/�x!�9ՐS
9ՐS
9ՐS
9ՐS
9^��B�r��S9��S9��S9��S9���/�x!�9^��B�r���/ch=ch=ch��w&�QT��?��$� +�dD�eZ�L�4f&�F[��cbC���n�Qf�|w������9�����λ<�s�:)j�Vj�Aj�Aj�Aj�A2�Ef��,�Kf��,�Kf��,��"��Y.2�EfŒY.2�Ef%�Y��,��"��Ȭ��уdW��7�$�6�.u� K���0�"��QG�e�dY,Y�"�\d��,�"�\d��,[B���2Y�"�\dY;��E��ȲQd��,s�e�Ȳ�d��l����s��&�\d��,s�e.��E�m%�\dYo��E��"�V�,{�}�Ϻ��n����!�u��?�=|��?�{E�_?�+8N����߀r�-� +O��)x<���ɰC2�fv���`�ɰ�;$�ɰ�fv�`��C"�`��0��I!rR`�D|��;�����0;X��;$��DV +��3��`���v�`vH�F��`��;X��;$��`��Di +Q�;4&���{�`��{�`��0v�`����XDt +l`�V���`�E�A+�`,l`��`6�`6�`6�`6�`6�`6�`6�`6�`KgΑ��=���i,�~���c3����wS�p���{�`��5��f�����^3�k{�`��5��f�������{A��({�1d�A���h:H4$���x�K�ҕX�R߽�<��*�=�j|��:ķ�C|˹�yH�����&�m2�&�m2�&�m��&�m��&�m��&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&�l2�&cl2�&cl��&l2�&�m��&�m"�&�m"�&�m"�&Zm��&Zm|�D��D��/�%Zw�6�j�6�I"Zm��&Rm"�� +eD�J���vo�6�ic�J��&:m����� +�&:m,WFt�D�}N~�"� �i��<�&2m"�&2m"�&2m"�&2m"�&2m"�&2m"�&2m"�&2m"�����y�/���<���Y�q�Ţ QV�V��>A}��!h�8�4�@sG�챒=Vy�D^%�W��+������tlUb��/�ψ����y��>��>�r�*�Z�Q�8jG��U���Vq�*�Z�&�Ñ=�CE�Q}TD�?z�G/����YgVřUqfx��y9�*8��Vq��P�E3jg^ݓU��+M*����Q�^��$�}��>��$�Z��|� +�m@[p��^�k��!`(��`�1Ɓ� $��9���i�0� +�N�M�5�Aآ�2 +��`�(bAP��ԣ����h�@�4��Y��b_c�ǁ� $� `"�&�9�.��Y� +�Z�Q+8jG���6��^�܄c����Q�� +FU�S~FW���ѿѪp� +�#]y�H;�G�!<���F�h�������2�RFZ�HKi)#-e�������3�����Gz�(Ke�y�,
��4<�R=�.�3��A�8�L`� �2�Q&�3;���'����K�"FP��A�?�k�Uh4!}��{�q4��E�8O��g�Ysm|�
�͚u�&�#5AϘ�����G��|ڗ��2_���||��/��e>��Ǘ���uЅ/]�g ��%&\j�x����y�9+-�Vrz��6L�
��,�H���y�� �A��K��D�;w��ͳ�Y�3���%��~��`)p8��'�{OR�7��O:�v��3ϙ8���I <W�Q��������Y�3pf�,��8� +�I�B�j�F1�,F��ȳy#�b�Y�<��g1�,F���K��b��(!J��b��(!J����s���<������������-K�S��i�G1Ҭp�E1�,�ĩ��z!�t�?~��z���X�Yɹwxv�����2F��/c���2F��/c���K��sO�F��]B�X��}䞇,�#x�כx�9�4�,��p�Y#?��="�3.���#p��X�8bG,����#p����P�8�lr�%�|��(��<x�<pc�blS�m��M1�)�6�ئ�c�blSL�W���_A�W���_A�W��ن���x�x�x�x�xw�n�ݍ݊�[1��&�+�]13��D���[Ǽ3��������i^?��M�ތ�^`�L,���Wn�����W��6���b_/�
���],�O[$[WakGk���l,��%��D6����X"Kdc�l,��o��M���7U�� +�T�*|Su��)�f��S�����ߪ�[���;���U��Ǩ�9{u?�+��5F羄>�˼�z��ċ�C\pvg��:\C�ݕ�{�6���(�+����J�=XB�_I?�#�|ϯ�sx�hqn�=�<k��ߒ�h
ڀ����;��M��c�U�~����Vܦ��T��+�k��L�5�r���a��U���U���(t�,S�����e���y�Wˢ��+z�J��z���z���Wʢ��k{��k{��k{��k{��Wżx��*�莏���b^2������E�� +r�� +�vخ-J %��V�2|�le���:r����Md�I`2��n�:r5t�ιK���.�4^�չ��>�4~ђ�I_�Kt��]�'���?�ٝ��N��'4���'����QQ=XIܿL��vX�#yڙ�+@��n�kw���� +ڇu}A?0 +Pɺ3�������`���Ѡ&hEn��o<$� ��ߐ�x]� ��̓}�;�;�@0$�C����T�4z�!籿��?�!�c��{H�!��rip�|�>���u�J����g�>[K��� ���O�o`�E[���������MQ]��z/�}���c������~|��|���g�@!���}1�� +�� +���'���]�ᫍGD�^3<ц��ҏ��c��O��<���*x��ce&T��{�O�5�ѯ�]�ҿ��>?�g_�ڏ�a2�Vo��:����D�Rq/�i�< ���a���b#���f��6�ڰD��X"�5�:�?����q����p�@��҈��'� b�h����b�x��Z<.ډ'Y:PO�gObs���6��[���xC�)n{Y��w�>q�x�������@Fxŧ����%�~1P|'b�4�!�K%�!�d��[֒��H+c�('��=��l&�-eK1F����}��l/�ʫ�b�L��"Y����9Z��}�>1I����d�$�D�� '�)r��)�l1]>(3��@�ʇ�C"M>,3��.f�er��+W�Ub�|\n����y�Tn���ȭr�X._�/�2[f���r�X)_���ǥ-m�Fb��'��_��b�< ��d�,OK��g��ų�D~!6�/��7�k�/���Ȓ��)"[~'������*3�NC�"Lj6j�]F�#�0�u�n���@�i42�=F���5���^���N�et4:�w�.FW�g�`$�}�*s�x�|�|\�7������'���?��� �yFIq@�*R|�����'*A� ����H�_���� �T6P�j��V�Ur�z\=%��U������~����T��zMNS��]r�zC�)g�\�_�Sn���ʗ��uX.W��\��T�|\}�>�kT�*�k�)uJ�S�#�|B�>�8��o�`S~iD A\� Z�M�M����������Bi���o��V�<Z=D�Vf9�:�/?����7�{`�A����&����ztRK������s�NjB����V?]�1��h�����k�DˍZ%�gPQ߳ܤ���Z�"#e��!����VYC�=�N�]^!��dmY[��ue]q��/�>��l(��Ʋ��'��&��l�� ��W�;���Kk����l+iE5X^%�C����0�G�A���ʎ�� +�+C?�L*��h�<��yR��T2�2����<�K�Z��]R]���%UmPG?��y�T�@S�t +P�A w����;�p0�c�D� + +�f���y�T-�H0�p�z$CMR�y��1�J������=�y%����O�z����ݵ�I���E��Z�ߦ�xO��o�z���㽵�C��Z���z������S����� ��k=>D+�Z��J|�V�#��[+�Z���J�����J|�V�c��O+�Z���J|�V�IZ�'k%>A+�Z�O�J|�V�)Z�O�J�~�ħj%>M+��������S�O�J|�V���������j%>O+��������j%��V⋴X+���s�X~�ț���8O{C����B4�OJ��5���o��������D�:������20#�߉s��EDdDTD����5"jFԊ��`�kD]�c����G�O�"窨Yl��1��Q�S�3�g~n~as�e~i���&ڙ�x��Yj~m�Ϳ����I����,7+��f��4�3���6��V߲��M�}�|�V[u�
���h��Xj�^���a�B|�+7ʍ����\$�p��D�˲�cY�-��n�wi�'�c�?�{�ð�U�rI�8V��<�E�|ʶ���3盝E�'U�J�_ԟ�O}����T}��V~�Wu\�P'U�:��Q��[}�װfߎ���%BgP���(��t�W���L�B
�
�r�*XGD�/�1���P��;繜��-�U�*�i���<�&�WBQɟ��2ۉX��*U��k�GuHV�B�QG�'*�N�"G�ȿH/{�\~�F8.�Sŝ��ʈB/D�����:~���h/�]�.�::��u��ʹ�Q{DMG��Z(�������������6?0?4?2����#YV��g�*�{�3�$f0z�"T��R�Tu�j�����QW�XU[�QuU=U_5V
U#�\5U�U�I]���b=�M�f5P
R��5T�R)j��_MUW���=j{�Ʃ�����U]�x�R�R�U�D�S ���C�Q�� +�O�o��=���m�T��Õ�a�}���2t����ی��{����x����aW��4�j�t4Bs�����sM��B�Լlh^65/+����#5/Gi^��y����h���$���:�ivf�mDGo�a����C�l��c�o��e���m������,}����7���^+�FƧ�
���qE�����oN��Ū[
)j�W���:�4�"D|rd�ՑH��
�6��yk�ni��)��,��Γ ����Y�=�%��y;S�G-�4~�������p�Ħ�?�M�{���_��6ǧ�+7��������J�vJ|�s')#8���̻Ud]��� u�k;o�Ս�<����S椥&���8+��F
�<iFZ꤄��M�5�u�_� � ��[:��u���|��çNIuf;�W���
k%$$�'�w��ҹ���y�%>����G��rn��k8�ר�2������<>]�:�f3�룍t)��1{����ޔ`?�a��˩������N�ye�vk��*'��vN�c��6�Zz:�������ׇ6| 卯w�4���W��p�����js�]=���D�6�Fz���3nze�G�nx��=�#_y�䪱�&���]�q�'�/��O<��x7~�;5������pW��uV<�Q#��_�YwzĦw�i<���u�ov��]��>ڸsz�o>y�p˝7oy=j������~��'��o����{�����s�՞9�����-U��.o�����w���7�Ɗ=_=נ�t��a�/��fX�q|]l٬��Y�����2��f��dH�&�b���q����<�j�6�� +�ФH�*��Ѕ(�H7�ҫ�H� +�!�@k@)�B�A J�[� +%7 +�����9���!�~�_D1j��y�N�V�����Y*��%?��G�Qf�v�g�ym8'f�t�\�S!�~d��=/Y�{����d���S�/����!��29�nz�E�s����RT5E���=�_��3�7
��˃���px�|I���Oz���}�/<���R���{��X�9�phRVD����/�K]x����y��8�����U�y�*�Xj +8R�m��D��P��Y��"�wv:�&Ȩ; �r�E���&K9eT���|�B>��zWG$������ +����B �_�ݞj�ޤ��ձ�X�} +r�HyYiU$ ������o��'���D��P��\Q�
�����F�%���_���m�V�@�&�<��'��-���<����2��<����HN~�.>f'��_�iy/���R
ӈ$�+O��3�4c�
?�R�Xtx�{"����d�v�!���|TH��t[�n0����ņ��|b��}mxOyH�q�j���k���2�4���S[�F��z�5�#:��v��l�9�����Z���.���u� +V:lY�+��{���dX�-��ڮaSD���GZ+����F��6x Lw�=,��.jGp~�~DV��'X HzvHӛvNy��joE�L`�V � +m�os�$Ҩ�ԗS��'�"���*/���v��l���0�y�b(�֒�ִ�;nw����c��ڡ�ˎ�؊�>)BN�-���.-a2tU!;��)��,^�Q膸��O��6ړ�7��@T`�I�A�<J�r���C���`�_��7ts>����?pMiN�\{�M��"ymu��R�>ô^(+�]��?�(�@z�m�KJ�c�^�_�e��Z�x�� ���]�d`.P� +i�� +��~�{~��C^^ $�ܹ:����:����x�]}�6) +����+�\Ǜ[���lxyUS����9�xuv��>�%�><��7��d6zv��}U��x�S���e�:K.%��1��A�>�ZT���2��uWy��}��l^�����R̰�K2GA>�8�[���L">����� +�C�4�g��+�7�f�%=u�g�����O�J�tL!Q��'�RB���`$����2Ƽkk�?���/�V i���ڑ���\�3j�=D�|T�=Q�3�,7\�k����������Hi�\�V B,���0�HŽ8j�)��>�ȿd����">I��#�����s'���Ü�z��A�8��+S�f��t�������~��s^b|�u�(G�n�^8�cl�9�LB4���y����&{/�[�ɰZ&p��"�J�s��Y8 Ge,��R��G�Gz�#0'E�3����g�sM�MO%�dsj�Y,w�:�����!%�Z��嘖�*�� +���H�:��rX�����c� +j&��[��*�]C+�����h�R�h9�(T���U�
�J�xp��xF�M_�^k�KR6�X%N6P��&��6%\Lj�H�+�i���S���
Y��}�t���G��=��u�j�$�^��`�BN�i�v�k�a_���4�b�a�n��G��j9#�'M�@I����Y]�7���'�
�� +� +ѽr�v���c�F�G�ZR��J��
�0�������3T�M�Xt9U��R� +߰8 ,���%������I���f��7[�BH8����߲�`_Ó�����e��K^t�C+%|},=v �u�=q�F��)'�î��a��0JV5�-7K��F��.^�U�ΏHK��=��e4�?>��8��M�"�d��%�=��k?��J�\���c7Ȍ=F�O�!*d8#[������\�=0JŁ^�D�Ga���Z��1�������Ok�f.����=��0Sw�N�D?�7��:ZYB�h��=gN��t�ɬ +)9��i����Nt/Q����P�l'�6']T�2�î
�ۃ��@�@��[�����cy��25->LB�tJ��},4몪*��[��n��f� +d�~)X$�&���B=��Z�T�
p�v�0���C\!�<�ks� �ᅘ@� �`��ۂ�\ AD��=�v��y{9�m�]�x�K� P�H����'�[�k�2�� +=M�ޛQF��H��b��4���Q1`R +(L��H�塟g�o����]���
�K�,�#���eD�]KF~i������ۯ���?����M��&{�Ճs⌙J���ZK4��o�P':_FE�/,����F��(�9gU>�y�*�ǰbl!�zn�����������˭��^C�sM�=�m�ΘO��G\2L��7 0n� +endstream +endobj +507 0 obj +[274 0 0 0 0 0 0 0 0 0 0 0 0 400 217 0 539 539 539 0 539 0 0 0 0 539 0 0 0 0 0 0 0 0 0 619 0 506 0 0 0 266 0 0 471 0 0 0 0 0 598 0 0 0 621 0 0 0 0 0 0 0 0 0 0 509 0 462 589 523 313 589 566 242 0 0 242 861 566 586 588 0 348 424 339 566 479 723] +endobj +508 0 obj +<</Filter/FlateDecode/Length 63500/Length1 230980>>stream +x�� `T����Wv�%�.�X�B`$!�6� ,P4"�rXP!PVm��Zk����
�J���z�zT�����Y�y����d]+���1�����vfv���/o� +nM�mp~|d��w9[�s�(��s����<|������4��L�F�OԷ�a��6ɂU$�'���P�
��� Sf�B���\�tb7�.! ͓@�Hk +y lbE���P�a����q"�z��Y����aX�L;��?��:��J��I6ؕn©��0�2Ǝ�g�<~�M����l_7��ν�bP'\�Y�Z�D���}1�ɰ6Q��b�v�-��`�8�ż����������}�K�[���~�X.�
�}��8����e�p8]����.���p8���p8���p8�w�=���NʔO�`V�ߤ������0_u|r��i�8�c;�U������p8���p8���H��L1.���,��2�s������}�~���f����G��C]Җ��0���^�����IJ��A1�U��o�*H���/N��U���Fܫ牟�1��A�����`X +��NF= +l�_�^���nE�~��7�m�7��Q���~��
n�;P7�oQ�Po�;������V��W�;��P� +���A�~��z4k/�o�n���w�6�ͨ/�]���������F}�v���A��jρ +��63� +�n�ݨ���_�nxu<��x��ϰE�C�G�Oh��}�$��L�=��Q��?�3�³�1}��=
��s�����P��=�8�� x �I��S���WQ�f����,�]{�{Q�o�>o�>�О�`��OԿ¿P_�����o��ex�x�U���58��wx�u�{��'x>@}>��0���>A�|��|���x������� +���p8���q8���l4�����2�RcZ,F#[��֤_��!ߖN���-��ّe���,�j���r���e��_�/����-uK���q87�h��L�X�l��V:�+V��>��z"� �&����s<j=�/�����p8�G�P �Cn�m����[�Ӄ�-����z%�-5v��j2Ym����f3�,�m�t�{�j��\9���8=�e?3������ +��f���mT�+`OF���~=������|���p8�N#��3�-8O�uS��Ӓ��㴶�RR�L��7Z�PlV�V��e��-Y/B����t�@#��:�gAo*�q������є���( +���p�I�sGM���'�]N�K�~�l���͢8:�ǜN�͘/DK�x�z�_���8��i$�{��i�na��vZ����pk�*%�^�dK}�� N���r�����q;�a�u���E�R�������ȁ&���,�_��o�tB�>��g�a�u�\��p�[�l�38si��L�(���,7�{�=�:����N6�d��Y;�gbO��տ����p:
[�פ6�����)��iI���q�\����z%��>�
6�������~|^L��C�-�.uoy<�^�:r��مӳ`����hNw!���/�v���-uK��Mr8�+yz �v8���0��G��y��d�I�k0�����r�_!q8��H����:�k_[wU�8�w �����˕��J&[j�p���px�_Α��r���}�r����r���q�}��,ִ�p����z���R����tgp�i2����+�c���?����b����J
2�&��~9��S^�+l�;A�wLr8��p�>;8O�uS��Ӓ���ux�{���J&�:6l8<��R��~��W����dy�:^�.uo����pG��/�pz +wFs�� �lJʂ�����^���-�Mw8�{h2����';˞���'��
N�#�=� �a��� wv�GM锳tcz�c���p8�G�Y�`t����i&�/Qq8��_��J�?�^�dK�>�e�݁\ƸB�/���l_��K�[�@N߾9��o;��,蝳�DtNw�p@Hv{�o8�-����<o�0z�I��z �j?��G�Nx��9� (^%'�C��$،��A��2Y�1��������p8����3����yZ�-Lq�NKr8�N�;[�7 ;�^�dK=i���ד��1�H^�,�{�A�|[:]�� +s�ȁ6�eNς=w��$��.
��p����#~ؗPS�D�g���4��L�d�?7Gɥ�-�+7\>W�@�o��a3fF��s<jޯ���M�wLr8��H> +�n��[h�f2<����`�� �?�.W��+�l��#�s}��|\�� +B���e����x�Խ���?hPG���pz��~~~�(�A@�@]Y��W�@������`�BT�$�3�t�����V�I� +)�BKB��~ZZ�9|.i��?�aH�ѓ�Gυsaq�юP#;zy�hQӴO����}�߶ +���������}�{'������wgO�Kbz��((��M7���ߚ6���OOTϘz��U�L�8a|��1���'��4��d��Ê���8����}"�á���^���?����]��a�Y-f�� K�@` ����ʅjvE�j���(!�v�)1��p�*��N��Q<U�wZM3�KjUC��}��x�`�R�����)� ����pDy1؞_�Ǩ95�pP���I���O�%Te��A�2I�i54�ho��Jµ�3jԼ�dmm�B��v����&�ٖ]1No3��T�Gw;T*����Xc�lS��C�xT⛂E>�%�a{K2�Aeba�2� +5'b�jZ��p������FU3#U��^��&u��,���krv�=�������kj �o�k�o�V̉��HS����XYbW>A�=k���u��R�@F�L���U�g�,���5��Ey$\�j����U���{<�{z�5)�l6����txi�Q!�*%�2Œ�V���\�g���1O�W�X۷r��daoLv:�MOZ�$�0��ֶ�a&��k�t��B<������n��FsV��^��*P5�k�tznrEܡ�k6�&���X��JTSI���TԈA!�"�Y�8|���(;�� ��MJ$�lDU��\Q�;XVR\8��gb�^58�>y�б��J�T�E�c)�E f�w�PeS]�w�W+9$2�
�Q"X������5|�
iɑ��xz-���Ԫ:��L������>x�Ng�Pe����j�nj���mo�8:�a��.�d�F՛�ؾv�=|����6`�V�������j��I�RI0y�ךD�rl~{+����֭�>&�v^:!�1���گ�Q�G�N��'D��ɉ_ȞԖ
�!�$ڨ8�������M8�,
^N��6G����q�z�5;���ꚭ*���6�����!�Ĭ�R#M�h��m�`b�w�V�\�Xznf3���mt��f�&�8��/B��
��"����P)k�k��Ebm�¶Ƞ���-"�EĶ��b�V�G�~�������� �w����e�/1}���O1}���Lc�(Ӈ�>�t7����%kf���:�k�61]ô��H����d���2�K��a:��D��������L��ƥw��f{��{�����+��W\���`��KP5��{>�9�e�9o��%y}��^�2ʼop^���d_�uyEv�2'�Bt��'��vI���,� ��<Z�����k�e�m��J�-�;[��ҝ�n��m�ޥ�c��ǘ��#�!I}��y�6�R:�>r�VP%��n�_� +��:?���x֓�Hi�o�Μ!Dg�)DC��^��ؑ�B��K��-r�C�y�!ٟ]� +&��mo�N�z37�4���_���B����KVm�ق���� +}�<���/0܌;m�Q�����{ެ��7�4�}��*=p�݀u���@v����}���ǵ +DG����X*D��b��$�I�V, ^R[�����u)��n[%F��k�n Ol~�w����X`Z��9A���n�]��)Z��x���X<�u[�eBt���PѼE�nY���sN7;�}����"��\�E��[�,��^���J�4IѦU��Z,�U�It�2)�l�^�1s�vsV��j�b���UR��U��JX���[E�#}�>�p�{��Y���C}�!>1�Bߘr +�L#��4�S�nj"'aO)!�� #�Hp����I�0<�AB����YDP�(<ΰU��DŽ��X�x1��b���!&<��$U���.��10ǂg��Z"1�{� +�9��s�(�u�:{G}"μ|G(� ����Cq0� +1�`� a1��Ԅ�hMI|�� q(�~�`�ī��/%�K�I<�x"�x�ģ��&v'�KlO4'�$�%�&�k�+��Ks����D��o~H4*�^y#��蚎�Eۯ�Ii멭�O���z����G;(���D�]���yC{7�L�A��p���UpI���=K� �ɦ������ +���U/�o� +�aC2�Ki�_@C{�g�.Y��l{�R{�g���`��_ʻ�<a{�g�t�����zMX��0���.�ˡ�Uɼ�X�[Ķף�zl���g�9�K ��j���a!�;��+����9�~��>�A{�p6�{�� ̅�`w����p1\)|���.ݤ}�0�pL6.h +�`W�Pi���>� +�_��B���o^
Z�]t�b�G�J�m����1!e�y���_��,�[k�ן���p8�� +q�nЮ�~3`����yv|k�\�3����L6�� ?��o��P�� +W�r�2s�@���Bb�c�!6� � <<,l=�w�79|=�Q{�L�'��G9
*x�[����dv�7���U�uZ��رYc+* +���?]{K<"o?��� +�q�r|k,��N����')?Hb��^�`��.(�s�Q�pȅA<2�m�ϽkIY��w_D���Z�2������s�������{�%$�n8z/��>,���=�dύ��Fh"&��؍$ +�Ho�`��*�|^�;D_�>l�0r�(J&ԕ9��#��������M�t���S�'����瞺 �z��3&�S�VL(��~�iM�7��8��v�O'��nٲ�%��/�vw`�����#�9"����`p�M�i���N��ɦp����*-u+G��]���݊� c�3ZZn?z�Y���X�ڇ�]u�e���L��u�~��>��G���|z�j�ޟ���l����`֘��2"��?�f��-l�e4�,z7��,Vz��ي�;D��Y�E���� +��h�m��� 4[<p�M/5]w�%���D:sߙGW^qW��;�5G'/}������)�W#���y���_VL�yc.�c�Bu�����e�����.��|��A�Is�}?K�/�Ú�`y�~��\�r���������`����B>��y6�!Vb��7�$�����r��+�
e��`\6a\�XQb��};��s����l&�.l�h�̞
�g�5DB�R \��Dz�hq�Hiݯ�>ݺ��JF?u��{��WG��/�ZVM�H�Ԑ�'m;�uG��í��ў��q;�+�/4o�b�b,�[� ��\�,��Zb�KiYFZ�Ct����m��sH���"zi�b��v�F!���;���/��GM�KG�G��?o���Ւ,I�qO��q8Ε���2-&�͛1W/��a�i�M��R���c[[rke���,l�w��mw�����l�h%%ZI�VR���,Y��fZK9��Xä��
��B\�x�U/�a1�0��}�琋<��3�#,�"Y�#�X��4BKIcY9D6�
n�ۍ�� +@��Y���a_�s�Ċ��63�w��_�v@���ܒAB]aB�sK��26q����_h���mƢ5�~��.�WД��4�}͙���:�E����R�F�x�D;q� ɠ$궸#F���͗��:��)�Ǹr.���r����'�I�գ���W���� ��%�T�N9�PmQ��fS��5�^�hk}��/)ybCC����ݹaݞ}G��Q��]�ʟ�����y���8��#Б�$��^!S '�l��R�DIL������ +�=8�P;�Lj�E>�2q�Dz3>W9ѕ�KNgr"EQE�Z�m��
S +�0��hq|��,��O�~��>�=�>w+�wn�-�����������O�H�o���nzۊ%�=�/��L���]��/Cwn۵=RX`<�|�ݮ���^g���B�A�A�4?T7��b@6Ȇ�0�)��_cN����V<n��V���0�x�X +�b@�5ĭրV[�\rEV�aUV���P64[��͟{�l۸/g��-w8���Tg��y�����@;]n�͟�|�㿦+ť_�r��S�� +ּ��-{w���c�
���Q�9��]w�����W���{����,����c7s����mp�D�c̮p�㣖a���ʇ�Ӥ��z�����:������,���(��E1�/����q�=�>����� +��St�0����n~Q�M�
G� ��M��t�I�;�d��!MQ��j6Lff�-6!i&$̈́����q��q��f�-f�P�_��� +�7�������c2��.h�3��dD-��(�g�J����1��6��J��q��Ԋ0�O +��rJ�����F�f!ÅR�LNE'EMP,�0�/�e&��ՈO]��.
LdM��TC`�C֊9k���~�y��T/IU�[��G�_�b�,*jIIsBU�!������~���۪gE2]��L�F�.������h2�+#��5���.�̚ +q\�џ��1U�+=q�� +7��e��45e�冘�!�H��aV�y�R�5�����b���-�݊1�3��L�
!�F�d�6d�}�U����a�H�s^�������*�RX��O���*��ɕ�Nf�/U�'�,����:ʘQA>: +1�w��'5l��k��P�.���Aa��?���%�r�PUv��f=����f�>�!�j�3]��eV*xΑ<��%W:f�xLn� +�����eQ��)`T�"�v&_ +��-~g +M���]n�i��?���T+�[��kp�Vʾ]�mP���gkS�UDs��-]����¸��,$��x������3[��m �����Aoע=����'<?B���C���y�Ӳ�H +%Q��f+MЁ��Qx�^��z_�b|��_��t��g�tHK&Qв���t�<��滧%����t�r�tv��=�W;@/�>��qS����q�(=���O��S7n �Bnk�@�@��h��0�S��$��������H�ߖ�8����hD�M����Mt����^D�,�^��ecс1-@v�e � Sw:;��0���;k��������=#<���x���_�ް���뵿��I�3Mhq�UOX���e5�3�h��2�S�b?`4I�Y|���2i���9sk���r�0�Q]�Ar8��=����N���T�����x�E�1_����i Q�)W���Am�(Z� +z�VKo�͞j�)��]�5�y�_qo�%��7j~��.q�G��(��.AoS�SSm(�c��Ąz��NF��zQ�NT�U�D��;Q煸:����1eK�$�I�w���u�� �WS��ð�&tA�yKd���nc��|��a�r��8�rēJ�����k_=)�~��~�n�vL�v��?��Ky8a[_ڝ�Sz��ߦf�I���X�ҕ?���Ƿ-��o��E�v��� +`m��_J�/I�KgP�?H�\�dy�7@���͢<oh>D� � �!�����lF,g���=ƆS�/�3�Ӑ�����_��r�K��.�2m���Ng���K�12�.�A�|ҏ1L�AHK����ƅ�~9a������^���O� �a�Un�[a!��:��� :5>uR?z6�+��W�X�nd&�O/�z��4��0~dw2e�$�l3M�Ή��Ŵ^�M�d4��$��l�}c����I!ɪ��M�{�T��ƕD�g��۬㉆j_�鍍G<�ǺG篼oʶ��K��;�� +ˇl<Z���-# +��=l�\}�
�J��~�u��X��ZH7��L���#,��~���>�p.����Տ�y�v������-�]9o����ܛ��4Lj?k?��|}���[0���X.�g$=�I)�zQ�k9��U�~�\�JL��.,��0
��L��VY�0����]n�:�:m +�5��o~
'ƿ���2����W�}_��
go;��Η&�X�;<{���s�5�6�v�57�a˨p���\7~��5n��Us��N�X�3�2��z�N��da�q�V�����|��APwҿhfP� �L�U���O-�Q!�)o�$�tDC<�I�0�XF����^<HXԼ����Mc��&�[���^����tЍ'�w"�1b���;��G�Z���-���M�&H��k��mq�
����h?w�$S������zeu�ijbbN����}`��<Л2$Kx%.ŕ@QIRM��yL�2���u��ȏU�(��ʼ����p��ci�z����r$ځQ�*�{竝��Ӡ+113���
�ű��Kr�,�Ǟ�S7�����u]�\yh
�51Ru���W�s蠻Nܺ����y��'w-�p�胇�ܵ��3dئ7j~u���#�9���{�{`����=N�< +��R��|�)k�I[f��Y{��e����f|Wm�,QS5{�6mV��O��D��9��@�ݒ�@�}��4%�;H\���
:���^qZ��eq" /����ά|ʤ:w��I]s�O�ѣ���e�.�f� +_A��
��g��>ep�̒��GF��L-�;ldz�J�Q�EeJZ.)s�����Y��ŀ'�0������V-��/��1}��V���ڑ�Ȱ����DW�z`���i��wx��{ú�X��*�����}+0�=���$�'�[FZ��4;���1!u怼����9��IiFN��@"Hw��RU�P��J�R��ΏŜ�e������m7�v7�a�7@�e�@n��H��P&��%�8��V����xV�� ��̨�?d��~����gO��n^}���YC�]+Ԓ��Ѓ�X�a����/ۧ�a��Ztk}vh�Q��kU&�2�C�|���Y
dY��F�#D� +-�@�IJR(�b�θ�p)�O.N�8W�;q�[>II�����'��;>�m6�(��6��m��l��NJ�z?n�����B���B���W�Ni}�y<�]2�{�Żp�������i�B��/�I�t�T��V��q5v��E%f�2�S'�Π�Q�I�ө�D��ɑNz+չ����S�:nx|����g���<`p1��,$ڠ6�ۧ�r�ʛ3�V
�jT���-m���np�z���^��lҭ����p"���$���e3��ԁg#I��@�Dm���¤�BKK�mN�Ũ�v���5C���H�^��-����'ʼ�
)2�P�K�RHƪ~{^]>��e�9���쌌�|�T���Y)T��d�g/�f�S" ���Hb�%`�F��o{
H��\�Dd�;�.�-<Ĥ{�?�� ��R��]H�+��bP!?�נ4��{���ra��f�5t�uAǽ�'�q�8o1�� � ������fC@�K�� +�f#c�fU�"�}oEV� +?|�\�R����J�V�ov�c��c�ͷ+���2��O>y��60 �����h��`EE0XY�PT�_P���:rK�� y����^j!�� +���'m��|�����8L5�T� �/��F�q��=��t�_�k�����ͷ���:�_��������_
,� +��,�>�����M�#��6��V����~{@y+T�o�p +|�� +I���'�L�J~�? +:�8������037u������������ (��D"������rT�e�Cr�o?�/C�n�rt�(�F��C��,���oAY����o��˪��$L��d(s��A�7:���UPVyyM� +JB�賄*2"!�n@\��}���B��9ރ�xo*�)����G�8�VZ�m��H9�%��U��"�Cד�@q7�tf7[�q��z_iË�Gp���qq*�mH����N������ws~c����D��O�}��LiS'�
���o�x�s9��ЬoӾ��}S�C�|��\2��!�H
|�Lj��L#7�����|8Y�y��Ipo*�gO���+�9Ğg{ɣ�� +o#U�x���}@I ��6��[m[��{��%���pw.ok6�C���L^�=�f��K����S�:���fq�8GK�^w�_~��CԺ�����~�k��fp�@5pw:��ސ������u)�U��W-��?���K{EjP�>�w��|�6b�.j�d�s*�2��8��w9�k +�����u����r�N�u�C9�?_�uWé�ǟb_��-L��5��h+����p,�ʇ+jprkO�Q5�y]l}*oi�[�����=�ղ��=���t]�F�I��%���1���x� +w�s��s�m�Ә�']"�i\���e������R�&R��s3���9�[����E��^cV��3��L���L�īp�"��%� �B� ejO:�C�EWC�E@�<������CA���PCO�$r4J���a���v���>��]� +�F����N� Lܯk"T�, �IL�F�4]Z�b��� +
A�]
���� +R�_�
|յ����srfN8��Әb�i�)7�H)�iD<3gf���F"�cLCL1E�)F�#�RD�"" �Jy�Gy��K�Q~�R�HS��H�REʥ᭽�O�����_e��?k��3�?�Z{�a� �΄��G �c��;�8v�X`��*����ߎg�%�Si��
�'Ւ���*���s�ȅ)S�+���t��Sg���t���FZ1s��F�ͬ�RA��M�]H�u���iͬ�Yt�����E��@����T��M�������U�M�'=H�4=X�D6͂��`��{���"�3VH*]!�n��!?�ۉY�ȾG�2�P~RH�))[ �.H�`�_L��H���Xȓk����s�c�Q����V���5`�
���K�~,�����K���[��5�3R��IO%���G��&7<�@N"�!/3R�̩���H����d9r�z֤ƙԆt#��Zd�َ�@.G�Κ9k&�C�CB�#O"�"/"9�<�cɾY����/H�5O������c8� +� ښ
��ZG�G�V��q�dQ�5�/eW��i�_��`Y����e�� ��d)YK����0<�\�f�GK�X��(�N[h�v�t'=@����esE\7���5s�n
����q'��i&h#� ���F�ۢ�G� <��ڑ�K���j���u�h����+֡yu�мV94;4˻.ah~�§��� �
�����ExCJ��]�~X��=C�V����_�u� �VҚ�w�Ԅ;��zfi�u� +}=M.ݗ�3�������^��.�n�����Yo��m�6���wp�}~�9FBv��O +���L)yh�������)y�����o�������7)���Kzɺ��K���/ �������z^���^�ϩ`,M�1Xk��!��;~��)נ���i���+�Zn�{5t5d�� ��Cȷ�Ǒ� O!�|y�{�9����B�2�*#O�&d:Ҍ�29iE��Ld2�]���Aހ���y�/ �7!�_D�@ތW(DaI1�Y��Y��2r4� +Y����3)a���#��ԐN��F9����Y���������| +��4�a1�]�%�n���sXs)�{�����/!�a�W�����"� �r+�G�m����1r�!w"�܅w�Cy7��=H�s��?���M�a䯐G�o!�"��G��v��]�E�@����"�R�����g�h/<Z +ی6�_Fy +adG�� �ȇ�~���obI�sPnE�Q��P��sQ~َ%�#`�w���j���)<�uP3�I�����z(|����E��Kȵȗ���6��*�Px�r35ӂ~�Z��D~y7��H�k�ʮou��Bك�e�k+ڵ�~�l$Z��֊����X��֟#QK���u�cs��H�`"�SD�%c9z-�Z�,��Q(W��L��X���"�45D�Gm(�у��D'}��^H�G6 Q�D��(�戨3"j��z"���_��'"j���!���_��D�Tb7�����!�(-(m'�&ם,\q��j�p��B���U�ܡ�]�uI_>�ڤ���^��7��R�^�?@O��T��t�ӭM�3��R�J��bt[A}Oj����&~��Z�눮�^��cLo�<J��(J���������q��#�<�<�h��_������?�:��])�Vr]�W�Ͼ�|��%uU����V��5a*�O����������N��>�����*�I���x�O�UI��{>�}�_�k=�'E�}"�t�E%�I[�<�N���;|���K�O��;~��#�
$F8�G���۟Q�<�,��?O���3��8�#7�w�J��*O �x1�f�'&�F>��y���������?N���
$�����_㷐��!7 B�Yx]x�Z2,")�dY�H��i�Ӥܺĺ��a}��%r"G���[�h�T�2#֊�I�8M|�T�3ę�Z\*�!�ğ�?!����}\AZ.1����m��%����5�~Zݏ;v]����`��}ƺ�_;u}ߒZQ`��y�G��Z!������N��n<�?��4!C�&d����[��Ť�Zc�!�Z����b�Q�oA7NZO�rԇ;PF�w�w� +����AC�V�F��Z1���B��x�A[o����P�hq�-6`�)�X�>X��i�n��N�v�}��o������}H�>�C2��2�2��,V�O:�g8��Xr���[:��þq�7��a�8� ���}�o�̀}3`�з%Fq��=��\|��*�__y5�<{��=� �ּ��3b44���|�p��ǁ���2����;������|�|j����q;g>�� +��_�������7 �Ϳ��i�����A�s<�>"2�'�O������?���FB�t!(�0f\(�,n#�P +QU�P&��\-T3XN�F�(�ą8p�0J�F����$4 M 7��oBTeZ���@TeZ�V����$� m �*�0W��c{��*��8DU&a��(�`ք'!�J�����!�J��y �P�³³ _X�\)� +�`^���P�,_ +�|{t^�Iړo�^[g X���$Gp�#p]��>> +����z"ٖ�W�\=ciB�"C~��$�)���.�sȥ�E.C�D����G�dx�n��y��������@�!�I))��F���᫇-#��fdr�?�r���˱�Ò��g�| ���g��#_@��:kP~ �Q~��(o@yʽ��h��ǡլ?�x��(?�lF� E��ɋ�K���g���5_@y
�e�z�&d/���?���- +R%9
����*��o�?�ˤ�\�4�@����42����u/M���-�h� vj�V��L�IT�M��Fshq�\�K�4��ͧ��Mh��t��BZH|��?-��$@Kh �RZJB����0���E"T��R;��U�J��A$A]�E&P������H
� +#\ ��+��-$ې�mȅ���$��~��Br��[��J�������#%q��L��IQ +־�����I�6��Y�1������ʓg�$k�\wV$�g���-��N��b����#S���s������Iu�H���¾:��R6��<ۼ�}8�MH9V�L b( �J�����(�=<�KKS��:�S��6x|l�`�۶d�N��m؝l��d��� ʜt$Y�XJ�OBV:�<ȗ` D6$7A����Բ�-5/g��O.����Fd�y�����7N
�J��%79�9q�d��exz�k�~[�m�m�m�m�m������������D$�N)Cʖ�R�T&���HU�xI��RP�K�iR��(�Hs��Ps��XꑖK����=�F�_��J[mۥp�>i�t@:l;��� �i�tQ�"s���Y�Jq9�]YΑ��B�D)W�c�j�&k�W��Z(���Cr=�Mr+�#5����S�.��X�J�ɛ���6y'��w��@>(���@���%y�n��L�ڞ+���E�R{�}���>�.v�|����6��{�m�N6n�f{�}�d�w�I����e�*�J��߾��+��{�}�}W�d�zg�o?%Z�G��q�){��'���B���N�e�ȝ� ��dK�J��-�Kr���+e(�����t�)cdM�B�Wŭ��2Q�a�U�)u +��բ�U�+�>*���#�GY��R�*�ו��{T�S��9zM�rX�W*'@>��S��m�aɤ\T�HU*�\QͪU͑���j>�����6bC8R��;uSǪժM�T�ԧ�� �Z�N�s�z��>E�[�UmW���Ujk��T]��Vש����6u��g?��[�}�A��tR=�f_=��T�؎+��&YSϫg�K�ڤt��~�q���-�駖�hEZ�^�C��ʙ�j���Z�>�Z�6Nj�d��z���~j���麪n�j���6�j�V��`3+�@n���Y֚�6�vm��!w&�E(w�����aV�a��-S5m�tX[���gBk{�~]Ԓem��]��v����h����P>��Nig��eq��l�^G�z�1B1{��ZX�>G�r���1J�c�s���&;���J
��C���p�;ؼ(Ul^��qq�D��1
F��Q�h�͎�\�|�B�bG�c������8�2�rlD�u5ʷ2Kq��8��Op�up��r��_^�|����ӎs���+l����y0G�� +�i&;�L��8sP�Ѧ@W�
��l�|�C���f���,q�tV8�:��I?p�������k�>��:5�y�^g�9A��uN�W�l_��p�;���r���.`G�ȝ(w}x���\j�J=��*y�s��ϹιI�wnvn�v�;w:w˅�}���
�8B��G�G�u�uT�<��T��<&U��Γ���"8ϰqv�g��y��X� +�ƪ�%�&�w�q����9�硝un7+wOsׁ������/�w/t/�7�{��e���W�uӽֽѾ��:�|���*-t����>&��¼/t�-Ekv�6��!QN���~� e������"\� +�T�j<Z�y��LvO��(�=Vm�:���<�K��˗<�Z���Y�g�<��h�X����
�'���e^uF`:� 3�3�Z���\�뤧ɞ�iM�O�z�{=��\w�g��S:m��鲗�X�]Ţ�R� +�j�g�5�x6�8��ٳͳS6{v{�ٝ�m�6&�>;�>m?�g���6u�db��s�͝s�E�#8�
06�1��e���3�Lݺ��̾�s^.�\�x
�:�����z�E�Ro�w4�TB�8��u&���Qo�w�w�����mSx�y;l�����eޕ�5��P�jn�n�����������y�{Oy�z/x/Ky>�3�2|پ<�_��L����Q;*�x��s����o�o�����ky�o�o�o��Ƿܷʷַ���o�o��Ϸ�w�w���;�;�;������~������C=����%��� +�X�����^�?�_��G����o�/�w���K�+������������Q��`����b�N�n�>�A��1�I��y�%�@����@A�(P(�T��3�D5�)���@s�-0/�X�,ӽe`��7�F�m���zX�S<^�W�
lQ�1���XoM`{`W`O`�P�Q�k�C �J��m`��Y�<_����f_��l� \`6�$�vg}Ф63�`��4�,�G +�c�U�ru�C�sl���m�J���Xt�G��`|���6�1���z
~� +��H0�L�L��E#-�������ő���Ȫ���F�9#�G�FvD�"{#"�#���ӑs����ȕ(5G�ќ�͏FK�EG"+�ca�z���ڢ�
��E'Dk�ӣ�rk�)�m�TE�:�]ѥ����u�M�K��������������1�Ayd��|$�j�3���K���!z&&�2c���XQ�4V�����1�ok���jbSb3b
��X[l^�#��[&/���-��bkb�c��-���خ��Hl�P�wK�8xKd�T�l�B�r��M�xv</>"^/�����W�}||\���ǃl4�����4{i��V�՟gS�U��T|>����-�O���ύ�����=���U�����[�;£�}���^xr�������Yc���`���f������"~�����%�+�%Pr�%P��'l5Lp��8af�IX�g"�d
g�� +z���J,M���%�Z^�X��C���JlJlNl�r;���m��P�H�X�${u�%��8;!�Z�b�߿*�߿���������J�z2��^�m+{z(} ����{2�~����p�1�O�m�>�Ojɷ�h�]HA�d>DV�H��)F6��8�J~D�'�N�I�mr�<DN���7���o�4�e�z�:�D%:��F;���qܽ�?�'W��\M��P����fq/s��
�ϸ}����iz3�>w����7@�L�i��ki��ʩ=�ki�tr�=iq:3�����a��8}�p��.=`x��=h8k��4���Ic�Q��F'Wd��\�1l��JL�M��ӫ���H;�8�d����qO�`6rϚ��%�j�^�^n��ca/���w�w�_� +�s���-���hVgV'�kB�R�����r�� [.�j싒�ܳ-_5A�P��<H# C*SG�c�*u���nHA5�NT��-�-�uj��i�:_]�.V{ -WW�kՍ�됶�;�>u�z@=���'���9V������F�
Sg�f�z3�0�
��zb24���l�}��}�P�.}�p�=C����9b��$&z�^&��#f������2@+E.�X��H&���,�w�I6W��F�s_�Bn����c�B� +m�V��4M�jam�V�M��սZ�֪�k�gӦ��ubU�G���J2,l<Z�����������$/���4J�Ƹ1NB�c
''��q�q2�4>H��Y�Y$a�m�M&[�������O������d9Y��\��^�o�a�W�6�T��j�:Z�Tǩ��T�jT�Q��3��YmS��-R��e�Ju��^�U����]�u�zH=�WO�g��e�h&-C���Z�V����hU�xM��ZP�k�iZ�֨�hs����[]�|�E2Zs �&�!}���4|�I�5����Ǎ�����Ri|���:�����2�d�n�m����(�}�?�v�_֎�|�|�\δ֩uiK��jm��I۬m�vj��}�A�vL;����k����!82��G���r�hG�cnL�N��E��1����f8͎6�<G�c�����;��*�#A����$0�Xf &2��,&IX� +z�����; +V8�%�aX�9,��`BXBf�a�p���Ba a� V0!�h!�`"k��U�햄lǙsv��ӧ�-U[�nU���5����+��ݱ}���#�㱆Xcd�㑱��Eӱ�h]��:��N�OW��k�[�P�W� ����=�zt�������x��'>&^�Ǔ������:�}��+�z5� �8�4�"�:�.�1ڗ1� c� +��Շ4V�ۯsf��Bc���ǿ��j<u���Ɨ��?���K���ֽ�hI�%�d�d�d�d�o/�;�NN�������n�{O�q���Cw{{u�<91Of:��MNNNK�Կ�s����'�'�v�m���$~��o�N.��;���Ծ]��:�����jbX��۹#�L�MnHnN����o���!�GͿ]���x�/O����};�����ݑ���P�����I�Ծ���u�`�H�x�!٘<�lJ^N^������Z|>y#٪� e�B�w�W���$�!�?Z�yݯu-!ϟ�#���W�N
4yͯ����VSCR�:b��}�w���Z隃t��y�:5&UJ=!��M��Z�����lt��U�.j�ǥéI�c���u�y9N�Ϯ56��k����RjJ�6������Z +�ӳQM������R3���fLMḯ�pM�&[3I�S͔��5�j�'e�Sy5j�,�YQ��f]�ƚ-5�jv��k���9Ts��D�)��"��L����5W�&5�57u_Ys+g��s�s}sԯt�r�rEj����H�)������*rQ�+]�t>u}ϥs9�Gw�.757#7[sMn^na�>�,�2�&�>�I}�����]����ùc��b�r}s����m�����|s^3��`����.����Oۿr��<�m���[�HOb�a�<k��I�]�I�8�y����9�9�I�YNb.p��I�Nb�ѓ�=�q�I�3TOb���$�)֓�Q=�qF���Vk{����V8|��Bn�o�oEl�.Hd@dP�H��"c��;�����7<�����Ț��sD��&�Y��F�z�E�z��k$W�K��(.���B�k���w�������r=�3�8��3y�}]�����s�x�%{�U�'g�R�
����F�Z�����_���G꺎�����/-|t��Eb�\d!:~���|�\����8�����X��r��#V�z�)�ޏY��5W����m��ӊ��ǒ�K�.+i�D�*+c�_�����|�>f-��Ъ��^�'r
����>�3p�u�--�2�������}�G���
�F)υ�����q�4I�7u;S�DI�8S�̊d���J�#��,M�~vG���D���#"���)m�5ݻ�� "�\{"��&D�,���}cd��G +�"-$�*��O-���1�Rz0�!*���>��"�Ej#֜n :|�+ё���p���DvF+��!������ጮK� +�{.�_�����Ph����u��x?�9ùM�.��Į��3_î�{���8{wѾc[#���d��;�K�E�NSd���S���:o�Kb!N��n�o��_��ϒ��E�0���B���1ɞ�7��&N�&F����#:P���5�F 6��!�9f���}|��[�-2[���龁�S\�j:��=���b[lr�]FGV��<z��g�I�\�����b��iԃ���B&��ٔ�� +�������'s�nx�VϞ"u��b�f��������L��4�B�4gM�-�W=O����ȕ���������Vt@�|�b� +��6��.����{����� +��D��$#A���@d�X��B���(�����?z��hb�� �"��Z9�N��zjY���F�{��d(~Ȝ
��ىy����HvIJx2�2r*�fD�?�ɻ{E�X�!=���сr�$�;��$�<�g#J��c����<��L����D`pr���$�ŷ$�E�9Gs�V�3�I���9z��\�\.�������� G�Q݅K�ӼrY|hmr��@1g����J<�/�LH�N����t��l�� ��ő�yJO�����%��߭�_�gr}O�O
�7��Ńҩ!��T��)��$;�JS��Sa�8E�
��-�/N%Y���(���ΊU9�v���U�d*/[}+/�uE��ʛ��*o��p~��\}��d���Ar m�\#�+�x�*�ʕ�+�O
�Ҵ�z�E���)�R,��Wt���BV�����g���@���n�߃��$]����-Ψʫ��+[�*�������)�G��@��`��#F�(���q��@��d�i3��X$�D`��*������z��Û+���c ��W�0��n����8(pĻw\�A�Q��@���m�X|]'{:��2�t_��|]���npY����
�3fC�^�[+�G,O������5zv��.0��M�%���g�&3��^����k�7�k=�^�Ug���wIg���N?Q;���СK���s��ܳ[ܛO��u���W��o�����ؼ:2L�X`L}�����:�v�^�����BolT����4��v�>����^k|5t�m���{��LW^�j�������?��i�;w��_X�������};}X�_�ko.#����a�o��~��?~H��S���?��Tw��ϻ�]r��Ցl%y�{������^�yͯ���5Vw�E�[X�����ǻ���S���.��?�r]G�����[�ſ�=2I`��O��Y�5>Y �ػ�T`��j��uF��F�-���Fvzs(u��k��k� �_���QO�NFN �8/p�K}E�Y���αEm�fF�z� 0H�H`��H���*�&������o�Y����v���w�-��3��N��髾~���iش��v��l�y��]h�&Z�i�;��=B��Tw�|bmeǞ��'�e�/��;z['Ot��������=�M�W�[��2>�[ib܃���)z����1o�� z҃��� p��g���S���C�m��{Cw�5v��4s��� jl����1n6���� +��;��z��0��=qL�?V�Ŋ�tl��Fl���IL��5a���d����?��1=��Uv�7Tvw�(6�� M���1���"3'1o�[nlt������w{�U��*Ϟ���%��LL�91o���9�/��";��[�t���ă�w���d�~��l젱GL�Q&z<K�xc2DZF#Cߔ�ۤ��?�����o��UnYy����@��� +u^=Ճ]���'�P`�G;��9������떕/O��=-���@~?���]i>t�;�P`���?��ۇ�q2�z0�*/�Uf���.�[6�lPYQ��ec�ƗU�Z�,'W���ljٌ��e��lY�ʲ5e��6ɵU��[�vɥ�^�e����ce'�**;-�Y�.�uI��.��k�i�/�:|��?�
�~|����[�ww���A��<�o�>�WvG�}�������;�o�>��q���)(��7���Ö�^���`� +�'P�&z��]x���2�A���d�im�W/X���� +l8"p�4zr� �ZV(d=\r��ɻ.{嵒%�%�K-���J{���/X:�t�ܿ\Z,�)-�&����w5��K��}\��l��� +�\S�{ʵ��Hy +O��z(��WJ��F(�P!y}��� +(I�Z +%I_/+%���^VJp�ׯ�/M���Ts����qЋ�)��8�"�= +��ٽ +NtBr�-�+��˗���&�>� ����58��i��^�G�� +fsw/�*�QAшh��;����^�+���7C���}9�[x'�/{qZ,e��B68�?T(]�P箐�Eڣ�o9��ZU�yi�Ct���Ӄ�u�V��5@Ga�\� +N^Q�~� +Ɋ�~��} +o��%C��3������+<���@��U�@#}5�f�sȇR�Uv�'�k���Yچ�|>_�'́�m����h�݆_|o��C��EZ:�U��MحEg'،��Ɋ��<�B͜h�6>p��{�����������F�ӊ�"�cA7(;{w�!)����I���a젻�J�b
=�?B�Chnʥ���v�j���81�����1�MV$�6�ٌ��7�Ɂ&�hL#y�ѭ}��ZJd)�6x�}�� +x���!�n8w����`���B�j{�Hļ4���WRm({ +�+��v���M��ED�i��j�+`eW�����Y��UZh+yi��*�yw�Tg�k�c��W#m�o[��b�ȯ�RfV���*SJ�,֩Y���,1�,�� +$l�l�+� ��f�ֻB�y3y��Le��3Uy��Õ30�XFeʎ���3С��+��a�z�/�>Ŭ�����yq�9�8��6�XN2����f�����9�Y�JrB���\Z#s�'V�ife���9���c���u��#d�=Ay:�S#n2X�8m��B�@i%rׅ^RJ�Ư;)���'Ʉq�������� +2O���yҞ����"'��y� ����jn�5nk���d��>o��"z�j>������j
�<a��
�*��i�?C/7��d�y�[Z��Ͷ���f��j�xV ώ`Rʯ����T��u,ӆ>;��-H0Ҩ�1��<��}ja�e]�����j�\�� +��ő�y,�3�yoG��y�Jfлq���*)�`��iƲ]���j��_c��O��OW�@��䌢�=���䫆�:4��Y2���4�
�U�=߀�">�Et~�=����D�5ʡh���ʬ}I�8{?+ݗ�����me�)����������Sa�,�B= +5��x& +-SJ�(֣e�aN��Wt�|��!Ⱦ"8WWjw6^�K���g�-���k�*�B[�k��am�7[yBs�G�KB =����X�M{_b���k%��5�iCk�k�i�5K��d�4�����i�K���ʥe>{�E���k���������:בּLp�ZF���2��G)�����������d����q���v#�����>V|8����fm�X���}�O�o�a>6O�����7~��&����D�~������-�s�p��4�0=�]ql�*mg�ϫ�9K)�,\�J��ǧ����i��"��� ��]�A�.���x����i������cy�(�O��Dë�?�+��^�� +V=
�6o�4�x�m�}���O!�)�>���^�7~Eq��WD�d���j�������Fšl��m(��'r�5(O�cO?c_�B�,Tɡ�*Y�z��<q(ݝ���Xf�Z��kw��)�t�כz78�� ���qֵ�b����O�b����ρi�pՇ���R�Y�2#�b�� (oa�-��8ѷ�;هGɖ�+�=H�e�c������aù�"<�h5\Gj�p��ٝ�}>�e��2�c���r�g��`�����@��xp��͈��7��W��1�W�{���^�������K�8�u|+�F�|�֜�HD�g������_Sڏ�m3�(�V�O8�+�b�ꍮ���&�Rk�ɓh�m��~ +�*�jƶ[9S�a��x���B��Lcj�����\&+r���t&��s{��i�����=l�=�d����𨕡պ'g�����,wQh8:���O^����Ω����"m%�� +o�Ҿ#�PdU����4r>| <͌�%�ΰ��3�8������g�{�>ͅ^���@�o%��g�o��~,?�'�B�r�9��)u!�橙�0�w)_��%s�K�#H� +>v�Mq���ϺIʼn��Ay:���ɫ�}�Z)�U�yD�U��,�>�j�3���ό&.�VJ��
]��d\��6�X5_e:T�̸uM�W ��S;�mw��s��jiYZ���nQ�(Ֆ'��y���>*D�Ny-/���6��3)�^ND�3w��|A��\}�n8OC��6��6�JjY�|U�?�F���y}�zK�$�6�3�� +�cR>�:����ɀΗd)[�gK�-N���~G�ϵņv��9��Gdޭm�?�v+=0����Q{�Ω�٠��-{���k?g\��V��?4RJ�RX�V ֻ�P�ܴ��N3���p�>���Ҳ�N���#�+�W*�xŝ=�;{�ׂ���*�W���_W<Ьx�Yq�a������lE�V�Cs�'&���~����o��C�}� �'��~��yz/��_��%��(�7������>
|�_B�KггЧB� +��>� ���a3v��z������G����!�id��s +<�,:�C8v������2.l�x�u�C�}谏9�W��ռ���3>�&����ǂ�5����� c�Fٟ~��y�r�r%�z�7���
�c|�w#�n��!����e�p�ʏ������z�]�g��gP�����Y�gA�Cܨ�8Z���d6�*$W�� +v;�t�Lg�M���.��!���a�tX%�d� �>Ȍ�/��Ry�Q�2C�c��"�Yv�e�(�Qx��H����� +� +p��&:l��M^�M_��-��c��E�E�E�E����or/��2%�H6{${ �@pb�&�l��fNm�N6{';_���k�최���5�8x�
�
~b�%���{B�22/��Qm2���f��0j��X�\�� 6�6t���1'gJ(�O������yDS��&���5\v��ّ�{.�$҃D�s��� |#�o��N!�S� +��lZ��l�9��y��w;�9:Fd����"�|��Y���~��6O%��6���T��*��G�24�Ϩi�O��n~���/�;#�߆X�]c\���mW-�e��X�2:�a�f�5��_��߁�٦�(V��\ֶ�~��?j�(�q�)�����ߨc�T�(e������a��(���4�R�~�����$ֻV���B|� x�W��)�CB!�|�w�.id췡W@ߣ>`/�wO�c ���D��0�7)oP�P6ù9�+�E��m;�i� ����%V��iN�O�*�06r�#�w3�歶/R~���-wg�g
���&���6�E���Y�9�<���dO���?��e}�<� �ܽ��>�^e�����8����U���q����6�V���ۥ�'j��<��{R��2th%�sb���������8���Z2D���+�r�f�Ļ��𨪫���93�}�L�93�\DĈC�f���"R/!�����Hi�H��"F��"R�H)�EE�)RD�CEDEEE��H�"Ҕb�[�=H泵��<����<��k��k�}�>{��oF�O��F�c��AH�?.�c +o���m�}�%�+��D���`�=Ǚ���:�eln��4��h�B)j���+���4-��>�h �:Oޢ�<]?o�f!��)9�yc<��m.�N�'?�h1f� �����; +/~��x2fngL���9�[��1pO�Ns?x<�J��F`��g����ρ߀| +x�_���IN +Jb��J��Ҝ +�)R +�W1ƀ�j�ۆ0�(���w���S8�HA-|�SA�� +.�aL��*����p�'�֚¼
D�0�}�����<�Tb�!`?��/�W�����{V��sfk�=���v6�>�ַ�śGh=OS}�͔H-�0/ +$�o�8��8��K��-\f�J�������O�+�+��H�[�t�s�b�G+H��u\�x%��;�\�߈���E�C�;>�0�c���Q��<r:K�����odvF^�W�������)`7'.<��]���*��8���Hg���2b��IsiP�v�)���</�Fa��gwm�?�0�#�M�//A=�[G!����F��|g�S��t� ��|@x�9Bx�9E��4:���ڄ!7Ls��ٝc����bg��?�2�p��s����R;N|i"��|��@X�N#���"|ȝO��]B�<��rI��<5/����^��F��4��W��)scSjξDj^�є�*�3͑o I�c�GB��},��s����� ��xE�!�cI&S���[SiE�zw��ء��ƶ)�na�w��rh�g�a�i����;�A3:Ls5�E�0��0��{�� :�C2#|��N�y�̳�݄C�u�DiD��h�84Ü�4��'��ҡ݉C�����C{�V��Z�:#�},��šU�C�?g:Qm��M��#����!9��>Ρ��,���^=gu�d�����������V�tv������!��о�9LDk^�$�C{�V�.�9\�y.IL�5�ƍzq\�n;�sio�r<3%�%�=���-�w��G�'§��:ԞN���t\2��l�w +��:�@}�� ��Ν�2�U_�L�&h�3שw9K���� g�����luv8�����~�c簳��c�I�?�siy����k�v[�Q.���o!{�[�vs��~n�;�-A����0w�[FT�V�5D3�:�wh���̹�]I��]�np7��ܝ��>���{�=�r�F�(b�ш ���NDb�t&*C �i��i>�k*C�l�c��[�)�zG�G�#ɤ4�~\��gw�v*?�)uK"�)� ��Hś�6Df�E���C��Gu�,�,�,���<C�sdnt7G�PY��G^��qwF�uu�]�Wn7�����N�9Du999M�9�� +����͏���id�"Ӎf{�M�W�hZ���Q{�U��L���1�Ѽ��ȿWr�HGwX�/� +��+Y�.ȕ�Y��7k +3�Y���'�2A5N���=TG<SMt.hN�<�ً�\L�22����̕d��^C��|�
ٛ���$z�hh��~��1��x�f^cf�r�e75:�r,���E9!ҙ�/�v��o��Lj���EV1a
F�~jF���Hiu��S��?g �s9�!9��䔞7G�L +�-�}F?q��x5@{����/D(�e�o"�{�2�!.W)�J��z�A�fu��C�Tw�rQ�*T��RժZLQ3�LQ��T�����Z����WJ��`w��v��[��R�C��dо�.��]m�(3S�R]9R��"Y�o�#�#�RW˥�F�#����c���o1�`Y�OƏ3D����r��}a�҈�%���>G��5�ϑ��Ѯ:��:�7����.���t�c)�t� �*�O�)3ɜE�Cd�'ZH��h9�*r&q�$�y��v��-D��v�< ��mh����]v�P��G��8'&�i���̳B*���v��v��%�vЪ-��Uٻ��[��[�ΛzW*�y�;����3�� +����t�3E@�E�0�����+�k��la�W�W�M�3}D�����9r����U�j��>�
�#�#!�Q6?�r�1����Bq��=����}G�N$�too����5�]"jE?���Z�O����ٞ9 aR+����c�L[�;k�t/��&�KTO�(�/J� � +<���D�n�a�&L�D���L�t����s4��(Q.Q~�nx�)ݼ�)�7�Fō���������<<<2B���EC��v��P!a�PQ�L�_���������B��PMhF�.4��&4/�������V�քօ6��f�Մ��v���}`����j��L3W��4T!��Ǐ�B#�V�9�4r""dg�?�m�6¡�s�p��(��(ʥQT).��h,��X��i,Mi,])����Qt�(�(=3�f\#�2�g���f��2��x����I1_4�9`��X�G&�l�F�I���b�4b�l��"�?A4*L!�&jMD#Ȣ�cш���.��f�M��o�#���;�A)�|g��H֪N�I���iG���h�_"|��4���`{�H�'ۓE@ӲI(=�渝���/�2�ʸJ\�quF�3�et��2z�V�3�E��Ü�}����u�V�{�_ +�2�L��q?�V]8�`Ż������'��]�{��5��;i]8 ��;g�3�Κx'��w&Έxg_���25|ܽ3(8��}1q��;�b�oM��lޙ'�x��M@�+2O�������n�h�m#r�{'�p'��m������B���P�q|S����=�4`0�O��)�x.>��ܘc����;��"��?���9�?�s:.|��G�Bܗ���a����w�m�_2�t�c_#3^�0�����;�O&J>�Of���!�O�jr�����YFi������]���,�w¸]K����N��^�>5%K�N�����8��[��#�<~�i���$�Z6�巶g�����8��nF����)Y���bq����ȧs��hǾ�Ʒ�+������g���߆n�z���Z|'E���Gr�
|7p�D���oܸ�|Ʃ�m��<����7%y��1O-����ΐ�vc��������o}!���}�T܆\�o� �Ũ��O(�n��-��*������\�^�ֆK���4��}���|:�)���(�[O��ۜ� ��Q��[�色��֘��o���P�:�D9��7y��#�z�Ƽ�(��ψ_ ����!��Q_[>焸�Y�}_��N� +�F�>�W���0����}ד�&�_E:��L����߃�����<m-�^0?��.F+�]!�㗣�|����oq� +)�i�p+U��/���s�K����]�7F?��<���}:��N�9�
3��$�F���~85�D�cܶ~�/��l�3�g}JZ)�tZ�J��]�#�R-d�e!_p�}��c�����s��G��x��g:���ȷ}���Ak*����!�G(�<��H�-�\���;pa>��;��{|�����h<��=�̚N��[*�c>!D=�Hx�o�}�G#����|/�����|��G�lB݇BS�V�x>�)<v��b���o&|b���}|w�hmy�r�Z�ws89vE]l��Xi�_�C���sM4�\#�Y��� v`T�2�cP�]�M�/X��]�<c yư�!��<v�mwXۀ��
ǡ�,Jyw#��%ܛb Z�!^�-&_�0���+�2���|����q|� +h4ܕ&���J>�%�}�9MY,��`=@��@"U���b��}a��?����B\r��?��n���ف|>���9!#�L�f��Vqܔ=|�FJ�$�����8go��[m`x^Cn��@{�T�/.�ղj��d�E��� +3���^� +���&T�y��L���M%~q���j�rb��j�ub��B��b��\��bdM��?�bR��q���qF�I�M�6�O����(�Y1�R3��ИVS>r�1�f|Y�1�f�L݄�ϐ>������o�eH�(�uP�\1��!���E@X���+(|�^�pM����}wq�����!��v_��ޥ� �E4�".�D�S�(:�̄k@hq��J;��Q��JE��F\+nW�,�X�HQq��n9[�"�{�b��]#h�[.&5�S�,Nk�#:���:��Y�&�w��b�/&7�SՌ��y��\j�W�Ҍ��֒C�ܔK%d���KD:�܋E?1Db�&���L���D(G���բ��^�J��"~(���Qb��(�5���f��f�}����7�g6�Ҍ�m��/�FNe� +�=e8�* +��9�F��ɜ�v�n�>��*�������s�T�L�ƀm��S�G|������ۧLU�
� +��
�;eJa�o?��8�̔�eS���[M�Z5����m��k���`W`�p p�v`)p4pppp%p
�9�F��v�k�=��y^���fc6�mZp����!��uJ3���4�]����� YՃ�%�{6��<�$Cc$9�vީ�o�{�$�z�h߂�,�����o��8��
����ϻ���?3OEaJ��(6��^4H3��K��e��>��M�t\W�]��M^ +|!%.�{����{�}���;� M��_����.4)�n��������;1�O��w$˶^-l��n(I�2�+MZO�q�^�[D�I���0�Ρ?�-К���Ic7O��&�q�y�u��}�xFM)1�@�~��.�����2[v�Er�,���VΗ��Z�E�!O���hc}�!F�Qm�2�[�=�A�)̐�k���`s�Ye֙��rs����c4OZ� +Y�V�Ul
�FXUV�Uo-��Y[�=�A�O�B�\_���7�7�W�������������N��?��������#�U$5$f.f�o{���$����W�B6No�߿�y�YH��v]K{��$���)�ji�hio]��=;��$�L�=��i�2|���=Z&R��W�Izn�=3��3�-��<�� �ȣ]eK��{�٩&$�k[��Ê�������U�Z��4�[$�¤E�%B-L��暄��e�W�O�7�,]�ٖ�N���o���I�Ooi�2���[,�mY�nn��0)��fv�_��I�I��$��$��$��$��$��${CK{����俣��ǁ���I��4z�m�2�kCI����vE��E�I��$��${y�}f��>ɾ2ɾ1ɾ;�~0�~���w ɞ4~z$��%�oO�'���u�$�&�$�����%ُB����Y�d��L��}_��ا���}N�,o���������G��d�
�!�O��TTa��v9I5�c���TA~�S4Ph�d� +|d_�/��T��[)���0!ukݚ�0�`���T��f�p7������8-�f�M*�[���/�v�m��\ |�\
|-T����DZ�l�"���*g�2T@�֪��RtP�Uq�*RE��*VŢ�ꫮ=�����V
PDoU�n��f5H���~�.u��^ݭF��j�*%�BU��8�����<q�����^Ջ�j�Z ��B�P�R��"1Z-V�c�j����_���)�BLT+��b���Z-&�5���G�����zI�RT����b���zE�T�T��Cj��-�7՛�gj��+�w�{���z_ԫՇ�1������D<�>U����3��������X�>W��_�/�b��R})~����"����W� �W�W�T}��O�o��L5��\�U�O�o���m�Z��nk���vv;�g_!6vO���mv���n��;�j�Z�k��=͞&ް���ś�{��cϴg���Z�V��������l�=�~X�g�̞'>����G���B����S{��D�����������k�����*{�8b��W���5�q�~�~F|a��c�:�Y��� �b���$N���F�)��/�R��m����v��y:O�t{�^��U��L�W뫥���.2U_���i���./ҽt/�uo],��:�O��� +� +��U�7��z��O����<|���hƽL3��a��k���n���C���}@�?֟��S}Hf��>b�ٚf� � +��}��C��g�h~��yuV���g�|�A#h���z{!�+0%��M�KӬje?�ꤺ�֩Q}�.��� +sH?����a =�n
|iྡྷ4����W�.�� ��WB��C�v �;FtR��8��toWҽu��g�Y����f�n���nH�%�>�4s4soh�bh�>��}���#ͼ���� ����2��O���
��W���#n�f.�f���.h����w�f�.J��G@3�A3��f
�<���y<4�h����w@Gq,�V�V�3���3�dH"GI�9'�s4Q�Ȉ�D��M6F2��cl��1l0Ƙ`��jj�������?����y�a�g��������2 eH�<��y0)�R桤����H�H���2'�2�De��P�Ca��ռ0 ���5�q�J*=�Tz:�t!���\f�2��YZ�
���8�C*�B*=�Tz��|R���I��JO�Ũғ` ��RT�Y�Uz.�B�^��J�&�^C*�J*��Tz��zR�4R�
��I�7�J�ͤ�[|�}�a;�s8�@��;Qck�.�غ�5�!�����d���9`�An؏j d>��&�C��,��b�F}��7PJ�ԇ�.+ʊ�!+���*��QY]V��P7j�1ԍzpu����.x�����_�+��_������?�?�������a�08����>>8�/�/ +Z&FB+��h�U�cD�2aT�2cl�=d?� �tK7d��efȎ,9���BrXC�WdfR)�p����xf��.��g���z4�YES�� +M�3��8���~P��4��eŹ��p�F���L4ñ]҅c�yq��8�#c '�^e 쿝�t��Yt�3���5�e�N�٩4;
g�|�F@V�]6�]v�]�]N�]�.�.7�.���9O�h�s�����9�U��y�<��h��kV5���*�!�cRi���W|�~u@G�kB��v�*���^�d�*'?f}S �{3 *�\Ȇ�8b��"UME�X��G�آnG�ة�D=أB=�}�0�V��[�P;O!ןQ�"˟S?D~��^Ef���Df�V���FnY���������g�*`ޥAMZ{U��^զ�Wu�Sc�S�jE��P�Vc5��-4�:h���y� ��j��;�{�6�{�6�;IKB���F���EMG�^�-G�^��B�N�6 ;oѶ /oӶ!/��3��^}=i��P��ȤEA��b�rh�Z_4����M`�h.Z��Mt�q�Fl�}�&bn1&a~1&c�1 �,cL�����H +����%�E�Bx�Kx�Gx�Ox[���X��� X���IX�y�YX���X���%X&>�a��)n�zB�fB��;~���{<�m�<���x����3ç�)f�/�Gwc��1��f��1��0�D�=�qIf}%e)����J��Ք���){»�����er#fq���K�>�2������]��q_����t����ٶ���XEV��&��o.(d?��;�AE+:�ɛb?75x�g0F<k��V�!W�W�C(����kP1N� :Ɗ�@`�xBS�-�BV��#��F��ۿw�R+�U0��'�0�1U���j]�~��1���U#̎���*�T!�s6�J��0�\��bu1"��WI�@W .^U_E\�X+CX+��F��u��FYBYEBY%BYeb�*��U q� q5 q�Տ��|�~���e�2�:���c�sE������F�^�X�z�6�6�at{��ڶ �mIjۊ0ۚ0ۆ0���'�>S�aă��8�c��֎��N�����FW�E�?F�0^�U{�4�p:�p�@8N8M$����y<���9��S`i�h��S`��`��K`a9��<��50c�u0�p=c�M0��=�Н�q�����.�G��|ҿ����"B��_�G4�x_. +�����$�\C�J��4rf$�qUDU�|M�D����a���]��h��8{D{���N��]�7��b0��9K<�bI" 2�h1�$&9JL�(&�1��b��'�UR�mb�3�g�=> �8Gj��X/��<�7;���%v�E�G�O�>�.�� +_�c�\%��X�xW�_]��p����|+��p���p��>1�b���H���~"FzL��31��\��_(�x.Q��Wb�6;1��4�~�g.;�`!6_1��W�c�L�L� �l�b��ZL k�c��Z̲��ɎNX�D6e�0"�r�Ar�)��!,L��x�K&��[&�D�G��#Y�%G�9F�a�r���� r�'�e2�/'�ɬ��*���r��� +ər&+�Q�lVD��VTΓ�X1�@.`��"����K���6���~��T�{��H'���G��� �7I�-��L�MY���e#�N���>'�}��pb���D��� +!�)J�S��'��%�8�$qJ)���e�;ʒޗ#��N|Q���&�E-��:��uI��S�'�h@Lѐ��1Ecb�&��M�Z�&�%̷#̷'E�@�މޟ�=��| auaua5���@Z�H*>���D�E�M*>�T|,��xR�� �S�S ���� Q3?3 ?�9� 3sH�SH�瑊/'̬&̬!̤f�f�f�f�3H�7N���o#�N*��T|7��R�}��Hŏ��g���I*~�*�n�oO!R������Yw�\�Cf����!}����m�0q'�� �{��U��Nu����4w��7��B����pOoO<�����oGoG(�����Q)����Ti +�ϴ��^Ӯ�����`�HW�Xw�1l�yE{��!FA2L�y�Ra3��'�,\�+p��Cx��L���:�z�.ڦyv�v��5�n����z����z�>ڦy��v�� +8)�X�Y��c�"�E�:)�X��c�d�(�"юEb��x���c�Ҷ�x�8�)�X��c�����i�y� +�����PT�0( +�=f��=������yj�e��I٬lQ�*۔��e�}.Q���[n�ɗ+˔%�Re��RY����V�(�Y9R�@�FX4h�žw&��n���7��l>_;�����!�ξ��툵��nG�/(p�v (�[Nmz�Vж'�������K�3=|��վ�3���%���&�&�߃� �oއX��� +������|
O�k�:����
|#��7�-|+�Ʒ�|'��w���������~��s�|��\��J�JA1�~�(��?�f���~����4�|�u�F�| +�ʧ�~�?���|(���x��>�'�Q|4����|��g��l�������m7��2�=]UDbo�7�s���ǵ����3���(���q�7�1��2h�r�r.��D����ѿ���?���������H�I���?�џ��������q�nnp�[<���y>��c��{x7.xf�y���xv��g�xn�#y^���9��5�����̛�¼/��b�8��%yu^���y,o��Ƽ o�[�v�=��{�*� +�WX���X*�
,�[,�0�,uKx��*<�_0�|�����&a!P���P�ͼ�u��4�e:ӡL@}f00�YАeb���²@c��e�&,�MY�f,7�
�Y8�,�EBK���V� +�Ys�����%te�Yk��ڲ�Н�c����:@O։u�^���Y7�
����e�X/�����Пa�W� +��1l$�qlg�Hd�,F�)l +�d��4Hb3��f��0�����y0�-��s���� +��E�"P�]��Ŀ�9z�@����ѣ��7g%Ή�������#�������.�x�ܿѻ�:�]�������3���-*�kX��a,�0���>~
K�������R na��a��c�������O�T��Xj��ޚ� ���=x�0y&����241z�d=�d&z�����3����YYV���,;zzN�==˅����AO�`��yY^���,?zzAV=�0+��^�EO��*��DzX��z�zz� +�Dhmh�ye"�a̱��1���(�dvj��7�ݭ��Mk����m�g�~�>����ǽR�s��P���Il�����x��V��)'�XE(��#1�Q!���^eQ��� +�k�&@㆑ndo7�o�o�[�m�;��q�x�xb3�'����=�G���xh�m<2~2N������S�i�q���8g|h�7>2.�O�O�K�e�3�s���q����ٸf|m\���Y�O{��O��{ܓ`�υ��b~Qc�)0���X,�e�b��6��{�d�}p�s:��p��s� +C�.La�yq�<$�}�����XB����_ +i���� >R@�*�J8DkT.��Wo�jZ!u'3�`V����o����o^�"�k�k7q����U��i�9\���9f&��L���r�vb�M��s��,X�����k����ڢ`mq��$X[J5q�����ƙ��� +�9f7O�o�'�w�w�����S��|ls�<c�5?0ϙ��͏�����W�ls����Լd^6?3?7�0��_�m�0�m��_��̯���
�����y��XF�`���w��{���y��Ѽo>�6aF�`���#�'�������|j>3�S�FT�ͯ��m���m�Z�Km�� +/�X��Z��t�[�a�Ԧ�Q+�Ʋ�V&+����je��[9��Ԧ��8�&��e��X�V�i��Y��M�m�M��U�*l��ZŬ�V +���݂m����U�*m���Z��Vj��x%ئ�UɪlU��Zլ�V
��U��0��Զ�X�V]��U�j`5�Y��M�1>ئ���jn��ZZ���V��Gm&3�
�Y����5�tWΖsd��'�Er��/��r�\ +�{w��d/�Cv�=eo�G���d� +�kw� �� +��bʕ)_&�=���n��=����њ���R�i�����{���7�o����-��i٤b풥�/U�v��ʕ����7��������دG��d�{�PIf��Jf֕�[��n +'�Zsj��kZ^�nK�;����q��Ȫ�|���M�&�R�/-�%������y��w٘m����?-8`��w�NL�1n���ʙ��Aj덫�^�$.�{;=�C��;�s]� +_�5.{d�\���_�Yl�����q����>�b�f}��7�~�Ѕ��=x�;���� �l�x1��w� ��'3-�M�K���3
�ud��БR���`ʴ��Ʌr�ug��2!S��?_j;D����ħ{��>^f��ne7��n�0�~j��:Sk�MHR1*�G��_��=��J?�hԐ��=��H<��Y���NY�D�y�eh��1w����^�G��Vv1bğ
�+�������m���e��<��^R���/����3���ze��Z���W��b'?ݔ�R��C����{|C��-�fݺw8t��w����:�I_�-�|Ф����ᇿòj��n+t�15����!��?<ڦ���9էv)�����o�ʷ���q ���yk�R���5k�Û>Ӵz����F���pY�Q�t.tmś#�y:-��]�_��7�?�nӕ�)�v�8��g�T���}�Y��GvV����G�G>}�j�'��m:�t����*Q�Mvt*�ƀ;��̳RӶ��Õ#FC.^���フ��dC��;;qk�ϣ&6���X����C�o�B������{� +oٯ� �����11Df���Ĕ��R:@f��F'�[�����-M�y(�q���2?+��Y��b�<\�t����U�y�5��q< � ҫ��$��, MzG�H�"�X A:ҋ�JYTzS� +���TA���7�]dw�w�~��~Hrf�9gΙ���oޙ�I�u��"/"�b��n0c�U>]t�x��m��Pƕ �}6G슍D�$7�:4N�b��s��yx�𰨳���\�1��T$�vytl���x���Ľ$ +b�g�^��<�R���K���^�V���g�%�
m���%�|ou��?����i�}�]"�Q +M��eP���#B��+�vo��1��>�B��;x�i�3��rW1+�Ȫ��l��U�kw8��/�:�����a����nDn�
���Y�|�x'�k�<��5��}�f�����x�u�|��l@u +��������E|8Z +�%� ���s�u>���(�5�R�N�W�����(�\��.� k�PIľ>�j�c@&z�I%RCτ��:��Ѣڕ���9r��<t�d����'{�^9����DԚm|�(#�� ��!� �N˭%3urg�����t�"�r�^lr1�ϳ�ʗ_�R�Ư��`Ͽw`�z���4�<�USUAcp�"��P�C��J1�+��[_���T�S�!��/���M��X�=�V�һ����3��}�P�i��}�כ�����\��lg�
��Xv8HM� +(/�}���M�^��A��y���O�(�R�2G�隆T��h�LXX��__��3��0��=��Ia�7_�k�0w]):�����uO|��U��B��������{+~���?���V�5b��`@;�`Ӫ����3L�jϜХ��R��b� +�T��8y���� +.G��4r �����z��� +w0��Rc�k$�\ׯ)5Hac�x���̉���H��#Ǘ����c'�"���k��B����`s��ug�+qj�pܹ�V-=Ҟ�%�)V,�F�M�l��X�&)�Ej����u�%��k�q��"��4��E.�zfV-�n�0��G
���a2���.�@g����� Y�G�����YT + ��wk�}Mw��Q$����w�cZs�ŬT!O:� &f��%����os��>g� ?Uk��Ny���V�MCyY����2U���}?oV��Ԁ�Wʫt��X{d���k�����~*�x9L
g�s���;/8��s��^�`mH�4q��\~]"�a���mx��D�{}�boD�=��ú.���%DB��J�� �ɪ�N�'^:�����������w�����lHt>�c�Q8gC�b`'��,�zGʂ����)v�ݮ���L^�k�>Y���*=vp�P +�Kc��`} +��ч��zsZ��vs2s���n���ͳ@��8�?�x�x� +�zd���5Nx�c������\N�'�U}y�A]e�����*d�R�tQ��� .���f��m!Tn>������S����o驤Q�g��$�P=q��X�f3�w��T���fD�D�t�s�F=:��a��v肜T�ﴘ�������Y�^,��p|��P5����4#��D��m'4iО�$���!��q>��p�XB���(�?)�H�D["ݙ��y�g��*��1H���^��W ���P�ĶP +�d�.՞йl�~�;w�?,_s�G�<A��yY� k�T��ܬ�Y毷��Ǘ�T����`9(�Jy.�Q\����l3��� +���Fu6;ٕvi�g.�����ޖ�Y��}��h��S�k/:9MA1:�dlj�Hݐer��1jY�D�g說� ����]S�E��3Z�ը��,\&��;�}�{�l�n�v��`ݛ���(rk�\���~yr3�_t�q� +endstream +endobj +510 0 obj +[602] +endobj +511 0 obj +<</Filter/FlateDecode/Length 16764/Length1 41976>>stream +x��} xTE���[}��v AC@�(�N� �lf� .t�Ґ�cw�������q���0�d +��DO�i�](�@�u.�J�W�R�3Iݎ��F�ߢZ�&�FD�(���>�1���_߂�X1����,҂��$=��l`Y@���ߗ�_�:��E��2p?D#i���eW�.�b[����ZZK'i�Gk3�h
�b'�V���
��o +�aY��~j�@�0���l��$ּҿ@����c�%JAϳl&(��R�\6�]�V6�c�1{�����OAjOA� �9b�Q����}� )=�;`�����&��:XP+6��Ձ��Pـ��t�P�tSj���Sd�۵��Ӱ�~���e��(���h8ׁ��0t]*�(�6c
63M���;J:��*bnwE|R���b��r'�{����.�k�q����I�YO3�u1
%�\�F���0)ei4�6
��,�YFKB�D�t9��Dhu/`0`%��,���J���S����^�cw�/�a�
���,$�헽3�
N�[s��v�\k�zV'-jq����v�݊�"�$h���"����3�C�e�v��;�fM�[?�~t;l������L]N� +�S@�y�֯i���=9Qp;��n���8�t3�av��l;� +��%�v� +�s�>��86N�f������:��06��d#X�� KA{>��T�u��
`�Aa���!f��9� +4��z�������8k��^d~�v�U�ֵh����Ml��n�QI/��\I�*ڄg:Eaf���D�3�L�N+�y�#�
b'�#�O�#��֛�/�)2ξ����X�������,��2�s��f��Q��1wZwc����v[��N�h�!��b���s?0i�/O�Z/g�+Yo�d��؍����h���^Aa?���ȶ�*Qo0"k��m����R2z�:��.��H`���B/hXډ3����])�}�<숌��!+�U��c+��5�>>C�uXJ�!�� +[܂y�
���96���00�VI��KnH.C�A��(s�eTO-Ș�''���wa
�lk +Q=��"��c,�9A!\#�
��"[3%��l+�?0
y]"0��I�%v��%�b�PVYi��y� �X��U�`��r��5��Q��9��
��5w3"�!Y��I���+w�.�O�.�?"��"���Y�8}�6����EX%<yTx�E�^���(y] +к�x���v������.��B�9
q<��E��+p���[�F|�})x���NC�&�"��Ϥ +��77q�����3���P@LX[@6*m&d�Bc���f�u8+
؏8{`"z��Q����:��rƅ�Vv8]Y�1!46&zїx~� ���eW�[�?>.3����)�p��܆l\�ZK��EX�K$���!η�&��&�s�}�gl:�:A�s;�/tw�5c� s��逪.o熒������ o�:���^*s�Y <_%�z�L'</���A�"��/ԡ%�!�I�sAJ���6��v���2R�)�1>� �{�{�Y&�23"D��)'� �=P�%��8<�X/��Vd[��@�\���Q+���7ƺ�����C.��2�,��m����s�!����]/��;d�X-�#��jw���b���v�����ܽψ\��.�:@��]g�C�x��/�J��&#�
C,ͤ� .�ͥ2�4�PQ�ok�OU��~5
qw��x�_Q�UD�B1�-��"���Y*C�1D��E���}��}!2���2Cp����eF��5�CM���`�"Hs'�4��� +qw�E=�Ҙ'�"J�� {,���K�ƽx42��Ȧ�#�J�\i�ۗ�A� e�V����q#�5}�?��p��2�d��_B�� 9/Ǝ�A3����Ơ\��m�q#�ZkpZgA��8���mb�|���: +\{���Ҟ�7r|j�W-!R�C�{z�hm�`i�m�:o�:tO��cK��?�:��Jkc�&Yǂ\t�W�)�Ѝ~G�\��)��`���N�-�Q��%�3��VY�����j�>�����\M6�D:�}�Bg��� ��i���k���U{ +�#��8�bq�q#�EK�(��E�v��Qe�&���Qd˚�s]�gV��:�V�&��߬��<�Q����������ԓ��ն���~=��e�j��t��S��t�:�\�M��H⟶�v�خ����YA�����N�Կ��.��������:�x�w����E�>�?�`���)�� �~+O����������x?�N+�����?���M�����[+����^�e�7t��k1��:-����?�����W����t�b+aC���Ο��ѕ�9�?��gt~dG/�i����u��Ο�'������'��t�����'�'V�HQ^�f����:�m+o�lW���Q=~������W.���������n=���������Gu�����#������՟��������J�s<������:��A�.~�} ����} ��1�^��&��|G/�}[��]������w+o��ڪ��[w�w��ݹ%E��j~g�m����;�~��%�o�16������$�)�oD�F� +q[m]��^���ya +�d��t>V��|Lo��?[Mq�ѽ�(�'��&�|�6^��k����|88��0��m��|Ve� >X�t>P�@a@��o��?��KJP���I �/��&�>��G��<1�'�CB"O0l�;>N�ݛ�6l�+F�����z�v�bx/�n�-.�� ߚj��y4��yt��#u�:W�8�r����`�9%p��\k7����|�[���gQrZQew��%�s��Jf���x��kc/��l?ڻ�4�k�ßEֻ�2Q�m$z7#�37�R3?H�#?��_�t���u����\��}�a<W�C� +�t�d�Aqxzi��Z)��_.�Fz+`+r_/�B�5��O��W�M9���>d�G ���W�`ǐ��RUf(���қq��`k���m��\��c�E��Uӽ�1u���c��!��9 +Z��b���^g�g��*~?���Fٖ��Y!� +l�\?�Fd��F�B�l<���Ix����ӧO��N�g�I�|O��o�b{�߃�^xA=v�:��>Ӧcu����$��〭��ٔ�- +�+�� +3X�( |��Ww��\�=����q�6+5J�J$�YSX����H�S�}�jt�aK����^ ��O�'����he Q�LP�F&�̢����w���F�Q1��@> j`�6���=�cJԴ��ޑ�~5����h6��Q�y��$6���~r���~H�|s�"��ӟ����Y���V,��RF�`��o�O��=����Q����'vְ�� �ĉ�������8}:�2)q��x6*YIL�3ib����)�/3*9�_�֖����=�ޡ�^�v�
k�*9�j�T>�]���D6u���;�q��;����L�5��D*���)��(���0E�Ix��v!dx�����3�R(�%$j�1-1��� �Y��r�K���&�&����AΈ~�ͤ~�1;�����=��ߦ�nM�)�%�·_<�m�Gז1&R�������<pM�@�@�@�@�@�@�@�@�@�@�@���M ��,>����o>�6��m�l�
��`G�-��R��v��*�E���l��0��l���J���x����-o�b�f��;�l+�c�yX�-������f;���֘�(J�]e�c)3�A�ݫh�Ou��x�Z|��uml�8mbF�$��E�����ِ�4֤i��z�L`��2���[�v���9�4k5u�ƅn����5O���\]��\�����)w6��"o�7��]<���{���ĴI��q1,FM�Zo#��.h�LOw�Is����q�z}�i��@�R�bO����^��Tה^�q7��yr��Fh�D�w��jw�w�4�{Ȟ�12;5�r�b1�������պp�@D-�s��
N�b�[ەJLL�����K����s��B��1�v�j�>(�iP�K�^��آ5a)0�[�ƅ�R�f��m.������t���z����di��q �Ҝ~����?X�����p�<��z�x��('h����R�<y����n�y]�5nI��b���[��iB*V����%$Y� �y���c2�>Ô ���P'UkpK�����R�x� +��^��wc�큨��]X�@�I:`�N2ZZ�m8{�X��f_#��D�W�{S5s�"wM@�6��K +�j��.��ßS�!g�w�[j`x� ��� +*��<�k�������B{�VZYVZR� +��9%��+*�<�d�C��v��#%��C]A����"$�܂rG�f/+("䕕@\���!t��=����5}g{��lS�\��˅g�»�j�M����6£�F�L�^k�p~#6��'��g�,y��cs�#9��"|��q�č(����+��R�_�t�
^���;���BX���zL��켡�������>O +� �����δke��Q��^h�|����L�%�O��O~���ڥ��s�i)dY��.5s�a� 4��W(�uKyܔ�۲��Fg�����)��
�y�m�\�����/_莳ag'Z�2��c1���P��7��{kw��1���q�\�i������K�Y��� �ux�A�N��M�J.��]�N�u��+l�^���+%l���]ap_T0W�#��Хƴ�E3 ��#��k���4��- +ې���O��J�d�rN�4��J~�O�=h�>X�l�TrIJO-Z���
���AD! +,�Z����n����]g|��M�6c�tΝ�g�%k����X�QO79Y�<kv�8Ŝ2��C3��ߐ��;�NFzM�~SF���s���]w1\�6�Yd�����f��5��{�/��ufw�:kG��>�����)6I�^��BsŌs�Qڶk��?�έU��G�X��,rH>%T�7��o4�d�_��!�+����7W��]���d��-(�P��e�(�SО�A[���m6��AK�_"Q*9�K�%h�E�-D�0���:�x�|٨���*���,������Y��ђ�oe�?���/-���I�y�]�3ϔ�.m$(�9��P���Jԥ�+���K�
i��y7tqH ��0$ʑ_�5Ob�C� +)��Tab�J
�>�r��:[�����,�T�L[r�� q.��4�z*���Aߢk�N��P�J��]ڡDrȖc�!̲�Uɑ��&$ϕ���"��jbQ�:�y��!_�琖*��尣�����9�m
���>Qf���X�+��a��]ڮ���wha���|�٬c����� �u�����2W�E�IJ˵.Y!O��"S��0�ֱ��ϒ�d��k�#�����Ż� +�J*4%,Y���ˁs�F�w������;����35,ֆgFΗ�
]�:z��l�Yw�����˺%9}G�keF�6�F�ٯK��F.�e%���
e&K�hǙn�$F�}�/��5�3��2�K��77�<� ����$�{��R����Я���˻܊}]nUߵ�.�e�\�&�N��d�I�G����&������z�� j��56X&��\q��j�g��� +o�|~0���- +=�œ��D��(�C���,xq���@�� +��g�Y��W�+�^�빏/�7��m|o�����|7����'�3�E����?�����M�E��mI������������{���4E�1"ED���13LDJ#�ӔFLiĀ) ��#� RĈi�1"�H) R����I��+"DDiDD����#\x$�u-ge��}���}�={�s���Dd��b����H��i�LT�*1[Ԋ���+D�X#��M���b��'B�=�8-Ή�Ⲹ*�RH�Ș)��9^��Y,��R9CV�Y�FΓ�b�$�ɕr�\+[�&�Ev�r��/;�a�-��^yF���d����RJ���F�5VMP�T������\�T�j��S�T�Z���U�E�S�f�UmS��^u@RG�1uB�Rg�է����l�gE�L+�m��r�|��*��YeV�U��D��� +⩇5��ab n�p��3V�������[݀���M�ͦ��iċh�pS|9D�x/`V� +'��qZ.E|,�,����F� �#�)GL��C|54��q�kŀ��n�Az:��1���X�=�2H;�f��D,G�T�/O���1���&���(%�ע��w����;#{��⸛WcK/�A_s���R��}�p|�1��"���*̎ �H,�xF�ctmO�x-�HĒx3���83��f��� +1�G�iP?-OEMy��������u��)�I��-�&c��$��}G��L�4|�o؇�`F�2�q�3R%Z�Ѡ���$6�#�\��m�R���j/�>�.�m�?�ky/�8��A<���V����$�C}߂��~c����%����������BR� +��d�}�+А͉��}<�8Z{ۃ5B�MDяo +�,���r�l��r��-�Ƀ�K�=�<-�ɋ�*�J(� +�����5^�U���R5CU�Y�F�S�bդ���j�Z�Z�&�Eu�j�گ:�aխ��^uF�W�T��fKYfUZ/�|^c�9�[fA�{���n캙��&�&��c8�f��TGBNM�0��i*a���E�Ygy�^ �i1�4O@{r^'U����� +�~3;�r����j�� +�> 5oQ��[��03m���깙:D!�;p��ꂎ����mهL?�s�\�\n�)����3�ň�.|� +����+�k��M�-��������@g�p�;p<�88��\�� +�`(8"8*���,NN
N�g��s�u�E�������`Kp]pCpspkp[pWpo�@�P�H�X�D�T�l�B�/x%x=�Bv���2CY�ѡq��P~�(T�*U��B�C�����PchihE�9�&�>�1�jm��u���zB'C�C�BC�CWC�{p,<2�����S¥����pMx^xaxq�)�,�2�:�6������ �w�����ý�3���K��������"#"�"9����dn�d2�T�� ����dp28������@G �#����dp28�����@G �#G@`E�� +bű)��،XelV�&6/�0�8�[[[[k�m�m�u�v�����:c�cݱ��ؙ���j.~sew�ȓu�$�� +�y�ވ|c��B�:�͡��ͱw���|5v��xo<��e��
�;��Q�8M������zw����ys���ax���·��{�?Թ��3oAw\�t�{�����ݠ��wm���������O��|�!�i��K��+��o���+W\��'n<6�5���;��w�.���s���5η|�O��l�6��6��9$ם�is�;LJ��)����w�g�Wq��^N�;���p�>����y5���>�}�����^��P+�Pm\z�S�\+�{�rv�\���6i�]���p���;����ݬ�C�n��I��m�
�q?�J�x�E�_Lӧ��v����P�x�
]���jی�ӌ��?��b�G���]��8�Y�������b���͢�6/ ���U��/#�2���|�P�����Oqԗ`���1��6��˒�0"�C�}�⻑�ƻgׅ�&z��U���T��._LJΜCUhȟ@�D�}���q��OṞJ�
ئ!M߆���:�o�����D>�m?�z�q�A;9xl;�v�n��~�d /B���3���P����ɖI���i�{ŝ��!�5<N�2��3�W�)a��Tj�:m����g �����ߍ|�Y�!_��y�p�7߇|�w!�Ǒ?�|.���q�� ������Nr��U���DM�4��� �����?��c�#�F^���ɧ)O��\�s���ڗZ��KZ��E>�۰��������m2����ޯ'y���!��y��t���a�G���s� +�(�} ~^C���s��G������,L'�(+���M��Y �J?�?��:�1��~��7���gx+���I���l�"d��|^>O۬B��~��7���k���~����4�j}��,�6���puf��8r���x���ÿ�Y�4�����0�Wh�^*���B��>�-�AFឩl�-�f�'�6|��0H7�q�^�
�y�K � �Hr�y�E��@F�����|�M'���NA&�Zb��b���i�6�Յ��j�a�t�y�d�yz�<�e���l��1ϼ�'��3b �{J��<����N��\ +�L�@�l$m��l'��>Ƞ.r�����49G.B]%q*��h����tO�h-�Sh)�A+�,ZC�хt1m���J�����t�B;��Dh����g��E�v����S]�KC�_%g��.:����p$����A�@̳x�@ʒ����o[f7�3^͓v� KAV��g�����y��;c��~Իx5�V������&�b��w؋Y�{1�q/f��\|���2��т3�ؑJ�$��5�ko&qY��/��e��"�"�"ܗY4h�"���x�'�����!Es����̝?��L�㤬n�u������%����ͩ�6bҞD�o��$�]��l���^���SF���~��ݟ�_iM��,X��Z ��,i�H��s��ُ�@��� +m��L���R���y�{��w���%�m�]�����b/���!�A����}gõ�N�C;)����9���@��7�cx-����o��9�w^v�������g@S-u����~��O�V�^�Q?�ߢߦ'�w����߭�����Џ�G�o8_u��|�����]��E�����t�������_�ϝ����L���<�����A�\������y�����\[��~}�~�~�~�~�~�~��'�N�.���=�!��~����1��sΗ��8_w�u���t�����m���O���_�q��W!̓�� +��q�e�$~���~�'#ijf�J����N\3��G�t����h=V�z�.�Ez������z�sL�t�8�5�:g����vv8{��N�s�9�t;���~P�S�1ѫg���)�����Y˴��x𑈮��_ֳ +=7���:�3�������o���� +endstream +endobj +513 0 obj +[218 0 539 0 539 0 0 0 0 0 0 0 218 0 0 0 0 0 0 632 0 0 0 0 0 0 0 0 0 0 463 818 0 0 0 0 0 497 0 0 0 0 0 0 0 0 0 0 0 0 0 542 0 436 542 487 295 0 0 259 0 0 0 858 562 535 542 0 355 395 323 558] +endobj +514 0 obj +<</Filter/FlateDecode/Length 40110/Length1 138440>>stream +x��] `E�����z�L&��{r��\�dH2I ���sB�"� + ++TP���S�e}>� +��z-������(��I��{&3O�M6���������믪���N� +��3�����z� +�_S�8�7�J��@>e +���������/8��.HCN�t�T�྄4�DN�,�ps_@&d#gA.���!�s`4r. � �c��h�\ +�!{�?� P�\ ��UP�\
�O���k��&#���(L�iȓ���'#S� y*� O���
0�frA�"7Cr��>��0y�A� �[n���0ڑg<:��a.t"σ���a��a1r;,A^ p,E�eܻ��#/�ȋa%rts�%p.�R8y�B>�p��r8y��+a-r7�C>��p\��J�հy
\̽
��%�ka��o�:��B�/�M��a3����\W _ +[�7��ܛ�z�/�mȗ�Uț�j�/��M� \��+`;���J���3����[�y��� �����������ۑ߀�S�k�g���-��í��v!� +^C~^G~��=��O��Y�3�s��ix� � +'4�g��0ȟ �|Ad�_9���WD���IT�lj�� Mt�A8IX�~�9�G�͠V��24�e�)���@\�,�+ �i�菉 +C ^`bf�N��8;��!B�""�*�^a����J��S#���R�)c�HD���J$��R"��$ �Hd�]�@���� +�U�S}:J!y�k��,����$2),��Ie�H�3���[|I����S�"D�!��|���ʢ�S�/�o�d��Ck���|�\��#��}�huм��qѾ�*��r�P�d�_ ��}"D�!bxa`U�$�WX��^oE_`H �*�Њ�Gd+�1�4��y_@zF�;_@�Q�/ ���Ӹ�������L�"G=�B��F.����W.4��~������("D�!b$!�<�t� ++��<j?5����9(41�V�?"[a�)�Rag)U)�He��� +�L&�,ej�Oe2�iW� +ɫ��ʵ�`P-Ѿ�N��2�����KC��"D�1��;��^oE_`H��.�Њ�`L�T#�0����V��(���*�`0�%ȕ +ip�*���JC aFŶ�/ B�"D/��S�
^ae#{�UE��F� �*P�c-e�?"[a���rag)ת����g��vN�٠E_@�1���k�� ++��:j?5����5h1��*���0�� +���T�t
�3��;_ �̢/ ���_�[M8.@�U��`�4�ԨeA�֬�h@��k`(!xױ���yxih�!B�"F��&+������j��S#��^Ђ�shi�@d+��V�v�J��S�J{&wv_ +%�:��8�����G�D�!B������Y��N+�Ҫ=L���O�h�gxAl\̡�
�Gd+�-�V ;K�I�G'A�f������D����w�R`�g .���� �`��
�U}Z˲�/��PB�cۏ���}"D�!�l!�l�j� +���-��}�X0�b�HD�����ja�6
��5�Ӯ�v��#����2����_��5Eru�B��EZ=���T���/�~����("D�!b$a`m����곴jS��S#���b-}�ۀ�V��V#�,5V� O5Z��}�=�L�}�`_��" ��#�:���j1���*�>m��` +�W`7���qTR��F���+ +��/B��#�k����,�8]Чu'��`0� �*���:�k�g��Gg���"D�!" +�2�a�m���jS$@\8���ߐ +ǎ�������vgef�����F9�I� �x[��b6
zV�ըUJ�\&�04E ���Z}K�*@��v���z�)y0؝.�Óז*��`��Z����- u�Zdj�Ne?s��S�_�I�_פ��@FS��žb��5���V���R�w"f��vGg�m�t�=�21 +ȂB8�����ؗ}�g[�nu���}Nk�n���N�u��fa� +����j���s��=xΗ�#���N��ٵ���wUc���� +�A{���/�w4XLs�;v��������\��Bq�r�<� �C�{|.�V�[Z�wI^�ۄ�8�S���vG`Â���m`�;{�K'��^)\Re�)/��v���������n�����[Z���8�a:^=�����En�
��z�Ng���/����"�w��A�1#"??'�n��T�-B +���5��b{h����7ep~X�eN�n}ˠ��z�����oi
Ը� ��ѧu�dO�T��bK���C��@�m�sS����u���}.��q��li��z�plii�O��_ٶ/�Z8 +<6�q�&����n��l"�"s\��<�lc�y���b�Y�o��̐k��HJ�8��bRZRH�p{�"�0�z<�ƃ��BL)��x���R D���'8����z9Q��R"��9��8<����q)�(�&%lŃ&R�6�(-]����rk�ݺQ.m�K���u$뺳�dQPF�oJwʮF��� +�J-���4#Q��i҄d)���+�7i�Vx(;I����5f֪10&M��d�e�e������*s�%������e�2]��LZF�AY����P�R0�+w}�h +����٭���
S���-fN��Κ��Gl|�f�T����js����!�-P�G�'��2_���*ݧb�@��b�2�|�,_{ ��2V��oIQ���#����<x�ǘ�:ty)�S�}K0��/%� +��ba��kN���nǾ�쁸@j�Ԭ} +^�
M��9��
��.<9�'�x�vUH>�6���?02���>~����]a��L��<�?,I�J~����n�?�>�6��:��iO(yU(\�ǹ�|Ke���G +�i�>���<����o��� ��z�K +�(7� +#T��C��|�2zh��r�ʥƎ)�<IY��ɻ��2,��$�>)�j�H2����G�|J�5�1�oP��@s��2*<���iPw��_���jU��m��[��(+�|�#(��$(����E���9��{���% +~yͅ�Zѱ���j��}�������P�dcE����$: +6cDW�����#h>�;���?��ȘI6�3��yz�q7�.n�1#���*�����h���*%%y(��v�.�1����c�ǥ�e�I�7�����g���HC+�I�-�S���d��E�Ve�F��(6{���-��I +��n����HL:^������y� +��$�`-��]���"A,�K�uaW [,V�����g�i6F��䚎P:����M��&�����SR67���B?R��9n\Q��d+�G�STjs_��k�d��9S�r�=��Iő8�*`���6�U2�|L��(e�i;�|?�߹�|$�v��R��&�f�|_�%ў�r�S��ԡ���o�|�fd5,�L��TT�^�ҥW/��������DGӜ����:J�Ən�J��59m-��̣G�6�ה�7��&#�u��ԶY3*3�x'{�53ِR1� ��W�v5�ϭl�n��Ѫ��8�cel8'���UI���^�%�7�Fdo����UN�z
E�U���D��o9SD_)שdwF&c�d�T����
�W���Ζ߸�e�ܼ�*CorW�̜\^�R����s,��R�處i��_z���V������Em�ם�_2��ʬ��xY*�7������;�|�b�^��s��c��P�u����
2�a@XokdRi�%���Yk�|+g�g/Y^yu�k�ƺy[�䎪Zp��f��zt��TO~CW���k�/r��J�v���rێ�m�ɪ +ir#�WFA ؼU�QjNCM:���[R&oOѦ�CN��f�F)�S"��LJ]ì�iY�:{��(���v���֜7ssGU������8Ǭ�
}Iy���m\RA�5s'����5^''��R�)��jݚ��9�)Yu�./����ÂV�� +s�����VR��X�I��{�IRfb]�e+�iOi�kz����&$ӠS6���fe���[�^��j��E��2'u�f�q�/���z%[�����]��`q�W����^�zU������yUg�^Gi����c�K�Ǵ]�`�y��.+^�;�/�_�� }����Ղ�im�������2r��VHm���,�-�7!���AE�R��ԕ�W�g`_&��CBX�F���ɝ�ǭr/�s\�VH�J�h�j�/���^c��`�l��.E����8ηfnm~�sҭ;{�����m̮�I*�gX�6߿}Q��4w��E�s�_�k���i��m�g���]�~�}*�^�t� +��x��:�_��Ф��J�ɸ
�'3�Ϙ&8J�Μ`�߾]aЩ�ݴ\.�G�Ħ��"ݤ��_tKs%�7kΜ�QIUmɜ )*)��r�Q_��!���fJ�8�]L�沟ڈ-��h������F*,��4;;�� ++=����{9��x�bcjIjw�{^ﲤ��U6�i��>��C�V���=wvϜ��9��Ĕ�����+g���>F�Zu?�&X�
����9 �WL/?w����g</�C;��V���"�")���D��A(,�(�s��b��h��6��vR���WI�9��i�dW[FI�Ǫ��g�ޱ�؊�t��5'�J��xr�j�t�ΜX8%?q����z��Y��|P��� +�Q +�1Ti(V�.E��1d.ܱF��o/q�dd��� +�0I58��IZV�Q�+5�ڠE�81��yRZ�;�+�e��)���}r�0���R������(!�q�ÿ���/l���vǰ�1�4r�(�\z0yU��u��iJG�|�\�&H�M�/�2��Y6�e4��$=�TgO5�]6���B)�Qu�Ur7$C�%I|24�QVh�i(��]}:���-F�pP�RC�0��$Q���QNٺ8��3�8����������k�}�y�����4��E$�p��g�}���F�$H�!��1�Z��k�%�Xb�XK���k-��^k���K�1J��Zk�p��9�������~ߧ�7k֞�Zk�Z3���8�*m��R�Q_ָT���b�w�2r٭$�N��У��H�4=�Xq�+�U���y�}E�r7�騜P42��e�����Ag��ӗC2f�{幉��,���}�J3��y�B�<���'N�0�3�ݖ�3ul��QY�v|0$ft�:y�4�/����`A�a��٤^��cz�&
�i~��q�H�`#'?���8ͧM�I��+�tw���ffL2�?"2!��y��0���u/=7փ�21녺sf$� +�&w�~ޢ�S���b).-%'���a��s�{�@�?ÉlNh-QD�ٸ����I��<��>�z��)S�k)�������ܟ�20�:� +������Ǥ�b�B&%��"��|��,e*1�,�?������r�d���Pa ��%��O�>��w�-?�
���pF���ȭ�Ա[!��� b���
\�j������[�&������,,�=�����96�������� +�{<�����_���F�g���?��oݙ�ڭ���)�g��,���7�����'O6N�� �qp���<>jD�/9NaiD�D���PBʌ��(�nS �J
AY�r�� q���U���D�l<�X]���$2�-�u�=���Z�d�#���-��0���˷g)�G��ĜH��$<n�h +l��F�E�k40�\z�y
���|͈���A�x�.���ܧ3���<��$.�'���P������'v4J�ʹ���͔�&,F7_����yGt�S�{�iz0'f��d<~��9���#"�U�%~���o�9qP�j�Z�_��Z�������<�IJe�˿w���wQ�Pq-Yc��cX��|�1� +�#�xi�P/�frGf���ྔ�����?=��ۯ��p�3K4�f���"������̶���n^s��g7���k�7Ka������J\L���!���z�֨�8��J�|����@}gG�Tb�j��p}QUu�g��ٶ��o?�����_-- a��|�'}�c���3%�����-�6<[�9��mJ����l���9�I�Vm��W�t��h̻H�u9!�a����"�&^Y)�/���M�?���44'r*;Iq��{���O��}a^ƿ�����gu�>�):��ѡ�C!�R�5i����!Xba�3��N=���Gk�M\�r�?Ќ��f�b���+?~��f��a��w�����dJA
�b�Eñ�]N�cG݉�h����i,Y≊�D�������O��o���g[6a�c������W.�����urނ��0�04�>B���W
����0S;Bā As��o� �*hb�n���̎��y�9Dƿc�_�xɿk�!�w���<�X�Ȗ1�2����hS�Eip�ab�xE�_/����K +�a.E��:�#0l`�[ (�&�0 +�:����=�PN[0�R����B*H:��۫{��ϰ������נGJωW���4RQ5�~$�p$�fCB�����C��;vE����s�<x�8���O��N�2�?��{���M�#T?~�症TQ������뙚'������gTA>�?Q��;5���GT����@�G(C"CCp� 3��?2;N�41�Ό�N8��#�br�2������iR�����맏t�R�2�g.a���VξVN� +X�H0�a����b��.��F_�.�[�������'��!m۳u��W�o�9�$S���M����������ڱ������|�u�q�4E���,�ò���CT�fA�f���&a�ؼ�� +�� +Z�����=4"�� +Q��H� + +�1^q��������q +���ߧh}��},� ��B��T�'� jCp�Sve�/
��JW0p���o#��qMļ�}��g^���kԻ;�f�}{�i��M�3����ϯ��O�z��u&i�T� �pO��qAУ� +0��_ +� +�6'�1�7a�2�h����������� +�(-��Di������Ay�"���2`�b�@ң�� +�,�cOS:���d�4��^�t-O�P��=D��C�9���4iX�Z^�Iy`��#�(�4������~G�&�7Rzܐy�
��~:�� M� �6��s>H�q�Q�a�^��4i�Gh�=k��Y3���Æ��>l�����D�B�p��ģ�=��*Tp��%��]���@�����.\ �_k�hR��hS��xW�� �ih*D��@���|a��bW%�x��S\ +�lƐ^���_�3t�Et�H���"(] +y�*�JAjJhۻɷ�>/ [χ|)< +ʥ�&PnW@���-�m@���D>�\Nu���l%�n*�}%�Ѩ�
��RSN�,�Y��Qm?M�����I�����T�E��2�E��j��Za~p����ܤ��R��׃��,�3�ݸ*������������*�:WR��߱�����|=:DD��,�t�A�!�d-�����˨��]Ҁ����t]�q@� +��4F��L+Rhl�s@�A�)����8�o �� +J��Y�9<{���g���|�9���?��H97�h,��� �� +�L�0��Cv9� d-i+r~���O�����d;������7P�H�v���?U�vR���.��)>A�٥KP/�}c�����.Y�gS,Rl��C�\��#�.V����_��)���?g���U�ǐ������H����ih܍L��\D#�J��G��6��p��@>zW �=���1�����@���yO Os!�!�9�"�Ü�H� +��j\���5��s+�J�^�W�J\�k�r��FU��z��kP5~��V��x=����ވ7���7� �V}iU�!�".�Τ�U�a��&�A +Ny
��X�&�B�(п�{%i4�3��`��-4���%�Fw����a� +��r����j�mj���[����R��`�v��h�3���N����?D�� ��t��`:L%C�e%C���z��]�t�NB�M��p4�X��B����c iB0M�THӠ>��E�v��IۢmӶk;�]�C�#���Sڳ�ڋھ ����]�T\��r�\"��M�2�-�,��d�¹�<nW̕j�s\5�J���Qz����m�q;�Vn�������a�G��i�ף=�]�r�
22�~��5|8��� |�§�|6/��m���������d����k)����P��7B�v�������A�~� �M�1(9 ����/�����_`�P�_��Z���#�&��T�� Y|��#��Ip>a��E("��MX,�U�>a���+� +�ja���; 4 -�&��(nZ������ �pD8.��S��I8%�.��V�����N�-�V�(V��8Y��廿��x]"�)�t�0�P�̧�R�����t�si�nuy�y�b�_W +}+tպU�����u��F�f�n�n�Z��v�� +9�N���0i�;�;�;��ӝ�GwIwZ(ם����np��~�
�5b8�W�h.V��T�0hLL 8H'�)|m���4��b��͵��h�o��DwC���#`�b�X"����+��p(֊��z�Al����b����S�
�>q���������1����Rē�&���i�y>[�%z� ��2�O�xS�Kl���#�+�Hb6XE�J�b���,M�&��Tb�ҴA��*eI9\�$J&h�r$��}�\����K&�[̔ʹ-R����
Т@hi5ь��h�x��,m��6q��V�I���6b0�0f��RwC��� +���G�V���)�tA�(�Iץ[2�UDrу�E���#�XИJ���D�%��D��X�K����N9�딧���,y���̉�eY��u�]��|����',���ŰFq�
�\*Wp��jy�\'��7�[�mb��Cn%^ �"%��/FCy'���$ȇ�� .Y>-���Il�{H|�/�W�r?�?� +��gH�kH��/Q:���h}�"Q�>�ґ�&�M�Db����ԧ�3��zAoB�6jω���z� �Χt�I<��ȣ/ї�+�s�}�0Y�$��������������靔�M�}�W��!��h���s��~=�=}��w@Rf֟����r�g��]�^�_&֫�F}�"�!>EִS#k��X.�j���C�lK��a���ɆT��j}�a�M�3d�9b�:��+�� +�[c5ѭq��N�ж� U���2��[�� سq�q��H�V�K6�2�5v�/w:8�x���0���{$���g�j���4��.Ϥ!4��M�d�4E��զS�.L�gJ�Mi�L��˔�&��(�{�I �>�i2pu�h���LS��f*�I����D*�5�J�5�J��Tk�7�75������fn���̦��ݦ}\�i�� ��m�'�1#�����w���>M'I�#6c:Cl�t�ҽ��L�k��Il��'6if�}���w�p��0"B� E�P�p�8U�!gs9�c�c��s������ŜJ� �i�,sw�,���`c@뒅i���`�Զa����GǚMd���Da:C��(����G�>�\!�\D=��d��G�y1�1����b�y�y�y�y�y�y����%mP�n�0w}�#��\�����������Xf�3_מ5߲ ��f��Ċ
�x�ՒhI�L�dXf�M�"����eɳ̳k�XJ-�1K�e�t�o���u��"c�b�f�ai���tZX[�ZN +���2���������F�����{XO�;�!o��x�z&��{&L�T�4���d�dž����`��G鹞"�bO��ʳҳڳֳ��ɳ��i�x�<�O���m�����ೞ|=�\�碧�s�y�sˋ�*o�Qem�Fzc���D�,���S��Y^�+{-^�7�;�[�-�Vx���g{o�w�w#Ѱwцw�w��ջ+x�
�j�ٯ�Ua���Ի���=0���o��ޣ�h� �i�9o�s�����������4�p_�/�t_�/�k���`�ȼ�L2/�^�|�^��&g�@8�'Pr�(�v��<��d74F�۱/���+$g0_ ��W��|��ӑ��W��'~�[��������k�m�5�v��Ȟ�������;�������� +|g�M�������]�]���B +�+wZnVn��$W�5�:r}�ss�r��V��]����F�ÈA��!7_Ȯ@,�tc,�tc<�t#�}��!��6�m(�~r��O.$�[��\�+�?�|����S��0bF�ݮ��8T��C�Ћ +�Z�g�G�n��u��� +���3Q�T,)f(��|�V���(�PT�����#����`?c?�'�>֏�S�V�q�2L)�O�F�����*mL�ңlg�Tm������j�yA����G�9�]�_4Jf�F�Ib�5��9��|���9��\�'�w�������4c>Q�����n
��|�0jD�FR���� ��7@�y3�]?�ʼn; +�B�_"�ȧ���!v>[���-�Y�.AJ��-C*��-G�{K��C�!B�� ��S�)b�e|)��U��?�?#��o!5���a5 +a0��L +gF1�P�ġ��f�d�I(�y�y���}ŒUA���N�s��P$��A�� +�yb�X*V���*�N\'n��ۨ�vQ
��:��9���^��> +��L��j�Z������ w�$��z��5B�.5K;���>i�tPꖎI'�3�yh�-/K�@�z��%�"�zOC��#YhxG�����:���B�}`�:�����C���Cn�\�\�Q�S �r�r>�U.R.Byʥʥh�r�r�W�(�As���CO(���>x'F�P���-7�Ci�o�Ԍf��ĭb��"���b��%����ϊċb���- ��$�&EJ�R��(%KS�i��I�d�\R�4O*�J� +�ZZ%�I뤍�i��Cj�vI{�N�tX:*��NK��I��n ~66T[+ +���G�����S~-���/h��j��r�Z�f�'�&rCjZ�y�}�O�J%��}1���Ӽ��u-�Zs�+bd@��NL��%R�y�����n�Zs��T&�29�����ܗ����������X�u�� ���<�E}j@L���çKk.k�uQ�L\fb8�&뤌#S�����t�|E-s�X�X�ڧk��eb}l��=�)�%�=ѡs�؝��@�L�p�X�D��L�\�b�J��N�V����
����v��Y[P;�������vBm�6Q�����>P;�vVmSm��M������%����kWծ�ݠ��n�ݪ��vGmg����k���j�מ�=S{^�W{��j���I;����[rD2?Y�������HNLz�d�1959#9;979?�H�W�%�,�"�L�N�KnL�'�%w&w%��-�]�Cɣ��>���Cc0yJ�fY��g���~���e��9&yM����s�r���A��
�˫UWTW\W�����9�����nR]�.U7�nZ�́���]��V�}�=���ͩ��kT݂��uK���V֭�[_�)cþ�}�RZݖ��j]��:�vg�c:��}ut=�;\w��D��suu��]����}*���M
��I�L����TI�,U��� +��tjJjzjV�I�6՜Z����Z�(���w�[�5�<�*�6�!�9�5�#ՙڣ5{=���xO�`�H�xbN�d��e�|�p5u��v�M<J|�g��Z?�>���~L�X�����Uj]#t.�'�{�������3�g�ϭ�_�HmQ�R��~E�j�%kN���������w���k�����P�����S�g�/�_��V��'��s�C���y�Q�t��ҥ��tuzR:�ө������������b`i�-�2�F�����M�-��/�i�����Y�*�/}�g����'ҧ��6J�K_dߠ�b'��t�J��� :�j�B
�r��V�adCA�膒̾�����a�W���nH4����V?�
�f54�'��h��>X����aaÒ�V�+��o6,oXհ6Q��
67lm���ٰ�a���#
�N6�i8�pI���j�
�3��s��ֹj�n�8�q��,�i�OL����Rca�Ʊ��찾��q�v�eYY��+ګYW-��I���otvZ��ܼ����0�߸���{���]�71�h=���֛�����r�1nb�&�$71���9�M�9nb.q�'��qެ71���&�)қ�A��qJ�&�y���8����[���,�V8���S��}�4��_��~x3�5�#���>��H��~o>���>|;bG�#��;�H~�02��w�d�Q`��H�H�O�~���@q�%p�;�W�{�L}����x�%��9�[ǭ�S��,|̪����Y�zs&-�dkZ��6[�^e��G�������ft�]2���.��מ�It���_M�c��X(��h6�r�1�q�b�A+h��+g�q�x�.�i��F�w��`+,��-O>C,9FXo�V�hZg���|��a������/�XyV�|�~"��2�n뭁�w[o����%�ƚ���ڣ�Nۥ&�9�N|��.�Y-1?iĈ��v[�)ל�;8k��O���ۚ�K?��H/*�X��} +��S���?��(�E����*�+���*K𑑂�%��<�bt��4>�|:d������GFGJF������pi�����M��)^��u_A$-5:�`�h�0M�sd� +"�S���X�U���QO�sTn_/*1��@�Y�j���fR�v@���I���>�%���F�N�E��
��W�-��2_���2�Z+g^���^�.�Ñ=�п?ȳH���mE�xF����A3�����ōH��g�� +z!;�Ց&o(�� +�47\��22E��^Z8�{������~^�ȥ��D��3/R�%�=69���Ʊc���O��{�����|����"���8`�[a<�[��+��m������:+������۩��w!̞�]��,�����"^O~�ג���ᕨ�1�"z�R`^����}�o�)�"q]hm2�+�EJ�W�H�pexT�8Zn���;�6%\>jCT�[4�q����Ȣ���d�Y�۔;�'u�k��$�������;��o@�}*s���M}�3w"��c�b� +�r�ll������$6Zf'�o�DI�ҙX��+)8�3+�U���m��S��>^i�7� +�cM����r�h���F��VCzbn6���;;)�G��n����/)�]z�}E|�[��.2�ޮ�ѥ��6���һ�HY<o�;�����s?���9շė�W�W�/�}@�=�-�4�SF�;|�ʋ�Z�g��!N�y�XxA4GN�gev�$3���ӢQX<a}�Sy�X"'^�����Ĩ{��\�����P9�
ILҳs��5vvbU�� rF�g\��݉�r���c�hR*���9=w&ֳ.�u���7wV2����,��VM��)��֔� +Dw�3������^]k��z*����1�>���A�+�_5�8P�ʍ���W�ɿn@}�l��|�1˴�o%v���d|8�{'b�M\�FY}���k���"6Z�D���W2V9��M�5U|K)ś'���X������V�e�r�s}���[a�_O����N +4���>}�/g������N �������i��=�����A9�� ��P$P�C��2�`̪��Q9�rn���E�-��*WT��\W����r��~vV��˧����P�����S����Py��Z��ʞ*W>9�B�S5L>Z�Q��*��YUTU\U*���IU1���&WM|oa���ży�ް2�7���w���V�{�Ur>�J.�M*��*��=eoO)�)�yo�ü1�=��=��9|ǰ�z��2��̏�# sd���Q��;����̧-si�\��>mR?�i~=�ȶ��X��lا���eU��S*���Y~�T�\�P�%�ЖW��X[��bs�V�ͪ�!uV������rV���-�8Rq�⤾U���X�YǼS'ȯ�s���y��pޣ��t���9��#go�)�8E��~�3���܀uU�7H�^ʼng)�3�@�Q�{���6)'��$�{����7����z�z��c<��%��fO�Xc)RV �G���K>�P�^�N�>%�����$��y4�B����1�
�/�[�H��|��αt\���_�nҲw���%0�=`��)�t�H��d��ݭe�1k��Cܐ�{�V�I��e6j����uA�>e�eJqZ�\�{y�B�e)�BxѪ�V]Pv��V)��p�+=pI��D�X�H�[���r��U����F�x$���m�������_C��7��0}8B_M=�D��fCً��W)�}��-��cT9�ȹ�w���)4,E�|����&�#?8T�g���c����%���k�˕�9O;�c�D�2(Ṩ<�}�l֧VE�f�\��6#�g��ؓC��CT��=JK.d�S{��
u!�<c��6�1���T��*���iZ��{g[A� +�p��b�5گuI)��N����{i�"a�R�����(T��C�yY-By!�X=Yq{yOX})k�Z#Ԯ����x�W�o���@�M�%p���C�i�NS��F(ӡ|���Ǫ7��� >�`����%��4Q�����<=�?��uH�Xv!${������,b�I�C�&Y�f��٩$��������tc� ����ұ���B���3���q49��apv�j�Jp��I�֣��9N�%8K��Q�z���Q�/�F�ܞEt���\�@.>��]3�V��R�C��Ů��~.x]3*���m���͗B��ԕ�d��x��� +�c�_Sΐ�>Ô?X��ܬr͟� ���W����ݏ�;�/�f�YP�+g����G�\,�}4���x�t)�Ƌ� +�L��ntC�6�̼�ftM��6���C�Eq�"c��R��C0I�g}�N,%�c��ٜ��5Ȝɬ��7��=�ӵ����cd����D��!�!�����ا��r�_�/T�� ��l 1���Az�)]楝��Vk�y��E��;�-WBÄ�+� ?�~�ꈜϨ����%�y�|�ǐ����t�O��H�Y���B)�,<�ѭ~hY=�;�N-���]+�[E�o
�e��t�����z�dH)R��&��r�N&?7c��ڗ�j�l}j�����e`)��
~�U�A)�a�u�]��u�n���4�(%;�?oW�����Vb��ȚJI_cu�p�0��-_�Ƕ�j��Q�,�y�u��f�35���n��~�5r��E��"'�2��.}�[L�B3��Zg�k�\$.��D���9��a-�,cy�g�V�vHKg��.T�!<1�A��[%;�����X��2��66�����F���:^�*\@,�өxi.�RN���E��u��ʙnj�\�6m�\lvY3X��2��_"b?1r�K��_�uE_W��R�����2�j�Z#����7�&�t������2�f�)��ܙx4�<���e�<�h�+���W<|��"4.�b��KG�g��"�ǣg���w
���!]<V-���V=J��!�������_F�9օ�x���Kx�u�����]�w2��xE9U~���߰Yw��f֝�����k�40�^\�f�}0�4lrܟ����~����1Z�{T����r+(�>���T|`)�ZR��`6�V�����{�,�=:�B_����� +ʙ�q4�d7"�x��W���BN��rv�O��CO����}B_Jֵ��xJq{
=���$�u��P���Y�P�2��3��F9��S|C�٭k����.�5T�v��)aD�������Y%h�A�/�f]Af���c��:�q��20�d]�`�UCk�ϳ��_�xiYO"���N��F������u7y���4��QJv�� ���_j��bw�f-(oaD1G?�w/�m�#�q4����(;�ݽuBj(�zcY���.���,��l�گ�)�A������#���^V���NXe�`x����>V؍h�V=�#��ʏ5������D�^d��2���ܣ�3WK�E��
�<���#���1��������c�8�e�)%�2�i����|U��݉�m�}K�L�}g3�<��p�R����w+h��gS���4x��W�����������H,_�ʸ�j^�j!�o�+f������1�C����dvn���N���J��9삲�]����ެ�;���3�[��߅'�eԋ��A;��v"=M�5kw;����yH�EF*��0�&"�I}Һ�ι���ѲB���"�����h�5�w�K����9w�Ukb���}��3��\r�c&{+%بQ#'}��(Ex�o�ܭ��&��j2rF"�sW�d�:�W�������Q���|�o a'���Qw@�J�R������틴Z
Q���g��}�eX�n�eY�S�2j�㴚�#t��i�5K����T,Pe��s�<O��G��Q�@������/��d����|��f�nd�kA��bG*�� �RJ���v�g3<�`�wnnHe�YU�������f�gD�xž�y��K,?ʝ%�g���3���dJ+3�$���q��E�V��Q,��v����W)���,��eG�":go�6ل���
��נ4���K�l%[�4y�|�A�-D�u�O���>�$��5����P�/@��sX�9f�Bibv+���ӴM��`'u�z� ��s��������6�����-e'�}6L2 +�ܹ����~�9w���+b��h{��2��⤰J�Q�c*�w�sI3��R�=��n:�X��R�N�_V��4�Ⱦ +�z
;��_��, �Ѩ��"��Nb�g�ؿ�ڽ�S���W�ە����B��{�ጱ�Hq��Ğw����İ��:�v�Q
e�䬗�.f���&��%�pg�%��{�����=�s.r�S�nN13�����3[
��fγ���N��\������C�˜���,3�Vnk����ox!~�4)f6����w����[����~m�vz���ި�b盬�6;��Ԇ�a�md
�{�����-�|g�l�e/�&�4٭�.�(x�{Tm�=�5��G��+�32�2F�@l�t��_� �_)��Ծz�MKk$��g=�s�94�y���w(�A���]'�]�~�����(7����1�Tˍ��B��l�o�|���;˱�T�)��_�l��/���Ff�+�%����f����D}ju�7�쬞�6G����YXR�㵔��Zw����P��$�,�H-C���O���5�K�Ҝ�2��B��� +.U<��P���9��C��皳Zw5ί��[�9�J���.��WWg��՝۔��U�y��f;��T����E�[Jq�P��+�������Rq�f��-��Z����!�Z,�C��z���rtM��"�jsԻF+]V���3��t���(��5��-7[��Ƚ}^֕�~e.�d�"eTK'�~^G��2�r���+(��n�Bw����3��*a�Їٲ��ȴ'"瘶r��^;4���5�M�]x��)ǩ��j�C���f�#R:��+���u�w��,d�I�7�zz�Q��2_D���M2�\�P����/v��V�'�� ��)R�Tq��猨W�*���Bn@Np��*!P�i|Y|�H�����r����D�k�L�=���1�C!�{���x\x�@��5�3�P�~N���w>���^�ހ��.�m�gM��-�����ô}/������s�?��w��� +��x���zz6��h�,�g���Eg����$�^�f����E��A��f�"����Ï��'�� +���������+x���|&6�߆��>�S�������O1^� ��{�N�σGK,�T�#,����'(Z:}Y��סC�����;�?���_a��T<�yz�B��� +s�0G�X��Y^L[f�a�]��a.�?���z���*O��xݟ�;��VB���DZ�9O@ ���v�k��5��OA���<lr��c�#�g)�:O����^�>� +�Wί�}b�y��苼�7�1�3y�����]�^�h��>�"�C�~��1��OA�{�o�g�mx:��X�|�1~�c�<�9�5�o@����9��4���4����{��4��³�^�f�������)8��=���N��*����X�i�"���Q�������U'V�2YO1��gf���H���hUO�e�f�g:�����r�X�&�Ȩ������G�U �v!����l�s�ND�C��cp.CN�~������C�f�4:O��6��G}�x�,`c��}���/���ɄC�`.Oa�6�U��m����$8��6yi����HH��5+i���fe�2ڬ8V����_��W���e�
�\q]�l�4�8
�4���7��p�9Hs�(� +6�3:{��ٓ���A��_���{�<����M�����π?>� 4�>���YML���x�����C:�w1_9�H63rW�&C�$e"H�>'1�����pV
�/������%�OpZѤ�_�Wd0�d02^���Fϑ���1:��p�E왅=C�LL��a�`�c_����D�z���F/[��.��Ȝ�̛Љh����������s�Q��6����8k�mֲA�]�e�]��f]�.�س�f�f�]��?8����:۬��G�}f�}��^�f���c|�a]�Y�l�� +�r����Ag癅����m7��[��,8��2;Av#.��l�Q?�=�˞�E���,ւ�Y�9f�}|-t�.g
o����?��ȩ��oL_H0^ͩ�6��7B�Wpv��/�6�M���[�G�xt��d�� �kN4�d?�~ ��V�lvJ�&��7��d�~��_.�úf���>�]}�9hº4�vp�C��{Kno��{����tw��[�=O[��Rvq_4��E�p/��Oh3��g��~ C�z��'�5�����ʓ= ��[#�~0��M���^ӽ��w)�Wt\WKg��4f�7�&oQ�P��w�1-��N+2����(�7KN���v����}��ބ�s_��}�xw�~[��#�ӫ7$a�2��$�YO�t�>
l�>�8�B_n�i������W�np~m�OG����Қ�|�;�����>�m�7Dϟ����Hy:��c�M��(Kᙨ����5([��P�1)�!�e�O�s�r#������)e�en�O��z��i�nQ\�J��B�ғ�w;ZZ���/���[�r��t~�ԁ�}io�^z��h�ro�?�қ%��8���;���*i�~w/�W++��do�Lb7��W�Tn_���#R�V��m�U;�4����~��٨e�Q��d���_[��+���?�\&���[#�_S_��wzW�!�*���C|k����֡�T����k��%���Y
���k
�f-e����2����7~ݚ��S�C���r�|c���Ī�����8�o>i{~�{�"��Φ,�r| +�\���ۘ�<�-�
G¹�r=������ǏR~������ �:����v2��"",����v:����E��4�"�ETD��`/�X��{�^��v�3�̲�ww�}���7�L&ɼy�}I�s\�1�x�f@�M��=GC�x_�����y����M�\K��D>?Ľ��iM�zn4.��+�F�&��O"���Ƚ��hI��P�gH��P��AiR�!�g��y9����{b���WA�2䬇�d�&W��`�&Ɇ�_�7}<'E�g<w��t��a|R�A\���/Ч�0RfAz%�@�� +jO�����Z4�Һ��U�]��PZ(�09���ˌ��
R6ށ���O�ڳ���܁�&A�:�w��wi�v��S \���Nzp7<)�7EC�ÍZ�;t����=��h�F`���}B���O�'�K-���9��A������
�s�W��p�IҠ��#h��&�æz�����gH/�t�S�r�� �0,LR.��;�� ��y��>d���D9�-$���6�k�Ok����}Ƈ��C�� �2���>Ch� +We�'&���h&�M~��;CΉPo*� +@g@�S�J +=�ʑV�]�'�=O9��ˠ��h���o���?;���T +�K�Az����C�B1�Ȁm�d@~7���o��x��%�݀�n�\�S�x�s��)�[�qHk�{��!�-�ȷ�
�R@#�Np�oE���@h�Y�χ'���A�p�������w%��>��GșW���0^�p�) �Q�B�%~qk�o��5�h����\
��@ (��1%1�8�Њ?@�rB�KOB�0NE�N;?���Q~DWB]|�� +�n��+ڒ�ܽ���z[|MhU#�x0�� +��J}(C�s�$,��0g�sH�����o �)~ȭ���^H���4"�Ơ����8���zO�����ק�!�PSR�Z��FC�V�]�rD������G
�@��-#}dDW\]i=�Ȟz��
BC�\*t'�-5@�t�eC[m�z��t.�|P +F�(e�u����� +�mE{�atբk�=Eo�g�`%� +�`c� [�H��u}c<���̇�V|�̑?���C#��Bh��S\��|��1�}%3��C#�p�� +�>!�"����� a!t�=|�,�+� +�C>T=�����������s^�o�>�K�z��`��U;���w�H��(V�ƌ��I@���wz9�C���A[�Nt +�V���m��n�p�ra�t'��]���nz�����=��\�� +�~�{�� +�<y,0�D`���3`���sA1
3/f^ +̼ż�y#��V����{���F>�|�$0��"0�U`��H��H�5���#�4��nPF��������gD&��IxFdR���gD&��)xFdJ<#2�3"S���������Ty���xfd-yf�ݥ������4x~d�<?2-��.����</2m�Y��ϋ�-���f�y3#z#�##�#F#�����H;���#FLF̀��#�F:�t1� +����%�"�R�2E�b��XQ�(U�)V(V*V)���k�ka�/���:�T��\Ř"���W���H�達�n�6�&��{"<�#U��QK�� u����&.��5^��!m\��QƁqD:�ff}L�������W�V�[�+}�u�*}�8����i~�G Z%E*J���C�=��}b��Ǹ;���4��nŽхY�1��H�W�у#���~e����+��a�{���S>��y�>1 �ĈҎ�'��?�� �D��&ڤ
�!m�.������K�?�m���5�JL��Q��*E�,�)���4��r���G�E����67� E��8�!'�Ir��DΒs�<�%�Er�ԑ�� +�J�����In����K��=r�< �#�<!O�3�4��%yE^�7�-yGޓ�������_�+�uav0;��P�Z����fF�Xs�l��Кw1��fdD֒5d#�C����"�I59B*�j���'�&��l!�d+�F��d'�Ev��^���'G�1�:���@���6��Fb��Re��5�����q��Z�jZ/W�������]�B{vp�PKeCk9��u�|
)1ݙ��1t�g����H:�Τ1'Ē�ĊX��Ćؒn�;�#���I~ đ�"�I�I��@2���$��%�+� #H?RL܉q#�ě&�d�#��p2���d�O�ę'�@��lN"H( #Q$�đx2�L&�$�L!�I.�Af��d>YD�RRF2H�@�Cb�GIƒ$�LƑ�J��x2�L"�d*�FrH�E��R@�B��,'+�*RN��R����Ot�P?���o��0�i�>k�6�u@;��f�8��:����C��a�УzL��t���@�;�i��>��t%��}P#=�b�~X�%�?�a�X 9ae��\� +VA���!7��n�ܱ�@Xk!O����]s렁X�"o���� l�
�]�#_��C~��c3l��������= +�� +�#�H�q +�A8E��"�WCQ8G�h����cP��q('�:�Iĉ('�d��Sp +��pJ�8%� xJƓ�$4g�L���q6J���4�����(��<��g�Yh<��� x��&�|:K�D����h�hKg���������ۍ�ٝj�CP�7U�/U��9��y(U�H��@���t������FἾ�����|+���ȝ���5=�BYԾs߳��a�Uң�C��t}WG5^O{����{�=���@�����>ң�B���=��&�x��U��j\J{` +��J�GS�s�88�R����O�U�:�cq,Uz<��J��R�'�yQ<��Q���T��t�N�>��J��'R�OƓ�ҳpU�<�*=�P���\��xU�l<�*}.�K�>ϧJ_�P�;���d~�CX��xg��g*���I7��ҍ�#���$�0DD�DB�DF�t�����l�ۋV���BHo9B��H��-d���K�r\r>��2�4[/�&Mb0�"�B*�"bt$�
�*u�R�dwg��ԗ�v�.Ew�~�.�w�Ƙ҈bP��Q�у5��0�F���W_�<�T����f������a��ھl�����-1�aԻ�&^N5iC�N}fB�/�-�[�%�]��L�`�T��k�ζ�N��JC��"��"����X.Q�.� �����gu�%uMϨ������d�~� �A�Q�#ր�.R����_Tl��orPl��w�>�~�VݭX���ڶ�m�a�Ԟ�j>e�*�+-Sf���D]�g`?�l;�L�/2(&,�����p��W�nNN�6}�ٚ���U{ք��}߰Ĕ��06�/�y�l:�i���1���u���v}���t�Hֱ�r�,�o�d�4/�|Rde��uZn���uw�F�3�}�ȫ�� +���vԶ;uܥL5�V�����=s[濘)����E����mb�4�.��8Y�ិ��J�c�}��^T�LT��K��d�n�jqՌ��~<cW�Ԟ;�T/?XZ��pa]g��͈ S6L�[��[��m��l���M�<�=ԣjk�S�篟w�h�kF���FEӍ�ˣ�W���X|��^�"�֔X���]��2�M̽S��{g�������,N�h�dDt��� +ʈ�գ�ꩈ��W��y�!){�[CId�K_�j:���L�ڬV����ǫ>N J
���|��yK��6U֏�` �d�Y�R��9�"��zXZ�$�X���O!� c��T˄���q!�I�����"t"դ��H�tXJ$2������9��� T����{�%����Yu���Ŝ�"E��G��زY�G������f���U?؍�v��Z�GC�fj���u�J�����Mۺ�q�.�_��XPxxe����-g��f��p�<�hɞ��o)��0康WD�؉��,v�m�qq����!*gY���ɻ���;FD����vb���ώ5�g�;�Ǘ7:'��jt��y�-�-{=s���
��g.�+?�6�����C�mZ��_�W7�cO���Vn��.�����|�[w�I���!�lհ���K���8Y����&�җO^<]�^X�d�u��>)U�)Y�6�>�fK15bO�3bG��}���~�F����j�&�WL�ہ��_
3��rf�К���mkgee��Æ�evߝ����� �Ep�O�Q����es�2�5�v�51���w+�.rڵ�T`�e�����>OXk��wd���':����_�zo�)5Ǖ��p8j����ླྀ�O��{{4g5��K����|� +^|����y��6w������Oc��7=;��dyJ��A._���2�C[|�����{����̩�?�uU��=|���j�����\�?n�m=�{rJ\��Y/��2��}�N��b�2)#xsӞ37�~�C��G��;su�.x����O�"���ٻ~W�z!��]n)��h�3;��Kx�"���ce�Zs����]Y�ʺs�kldnclcnc���ܮk7k�P;[�� �m�C���ą>�\�^{w��kN�c�� �]��V�ʅꘪ� +��o �lws�L`�w&p0K�*ߙ�Z�/V�_T��*s
WǸḬ�7�Y��`$�2�>�w�����.7|����K�^j���[�,�t�����K�/ligvH2@�NQz�����>c��r0I����k4�`��ӊ��t��k˵��q����̒�ݫ�t7�T��J��Z�W��k涫Țy�T�~�^��E��gUܔR�g۷Yz���VjΪ�ٕ�|�.��j�EV[Oq\�8�5�$��R���r�AG;�n�hͪ�1���_��t��֧���v��8�),�=gz죩AM��ZR��)*��^5����X��i���w/�htШ*�X{(�����������2--�ܧ���\��{4�$�]ndϵ�3�:<�y�|[�@ӳ���/��h7���fe�~cN����;f�랖)��Sg�5�D�����)����3��"�U�Z9�����+���1��{�h�^���XJf�����A���:�|��EAC��[���Ѯk�,J��/?�������ҭ�g�\�����t�7��x�ζYI�.7��#@�v#��-o���0��s������WN�v|y�y�������M�hu2�^�N@)H+�l��o'��`N�������h���ڰ��!Q�,V*�μ�l���ƓJ7*<*$(9̰ϸ���Ĩ�tθ��Y����mW֞wk+8��r�������������]�;Mc�����{G�2��x榶W;��W��ؘ��|&��Pӵ�m��M�#��И���?ϓ�~P��;mp�k�������u��\����V�U�����y�YŹQ��m�+^�"fA�e�N�[r�=0s�0ݐ3p���}Q�/���q��e��T�x�c�œ>֪������>`^�rsoi�1|����Yn+>M]��YC�]2�apZ#.��OCj�Sî[&N{����l�O�c�zz��S�1;�ZT~��t+>c����IR}ؐ�b��SFV���Gh�=���%g��T�b��VM�|�&�R�U���yl��L
�
٣{��.~�^�k��J���_U�*�.�l��Zen��=����-�Xo�)�����+���ϋ�/'�9S��;���:���svgN�=G?�Կ8�\�-�Q=BԿ��'�7�^?�>�WZ$�����́�sw[\l�bVl��!�)/Cu�%73z�ٻ9�H���ٰ7���s�{���*Ijf�Կ�ռ9p}��G��/eV=,x#��&z2�S;�/?���Ģ�Y}�>m��s�(%.�]f�,��� ���#zi�4�U/ӱ�t��-�ʡs"�y���4MI��a��9�.�n��k�䣶�G�<�l�D�w�E�D��ɽia#���J*��4 +���cx�6s�G�����xyBA�{��?�\����劥m��:�'�c
�_��]��������w�[�&�v��ѱ&�:��|f���Oc߶m[<#jJ�6e�ek�����SSllt�ߓ�O��s9����L��\�{����֒�'{���2M��|�btpiv�����h������qe��9�j�m�u���ۃjf��߿\oz�P��|�й��=ر�d��4?��>� +�����V�h�������-����J��j���ԓFu���(z�z���#k�j�=]���U�&���G\�l[v�eq/��ZcN����f�2�lI�/�@e^-��o�Y��SlͲ����W�++�6�Y[{�it�S+�;���X����;�;�[��s�����+q��<m���`Tҷm�1O�y��-����\�����c���Wv��H���_�V}/�H�>�`t���Ů˞D�����w�R���W�vޔ��|y�Г�u$O�S[�the�h������F^9b!�>���ط=F�i�s�s�.tC\�mZEi�����>%kqiDz�k�G-���(px��^�aj��f+2���uԕ��~�\�u|N۫���F>�8U�M�����z�o�pt�c���m"�ʭ���&�.�������m�j���ɾ{��nlc2�Ի=���_��98�`��CF����v�65�k_h������M�&�׆?2��k�<0����F�>Gv��N��|�p�K&�F�rJ���ݷ���~Hs����?�/S}b�O{w� �WU'f�I|���A�%G_�r}��瞮���sn?^����-��U���7�5�?r��Zݬb�Ĉ̇3���ZN�<dو��ff�b���v�ۻ�������Qx�X��2yᇸ�i�]�G�^X�8���k[r[�*�z�h�>�Ҙ��;u���}g��O~����<w]Ҧ�
F����|�8���>��W��)��I4��X����������ǭΛ�ٰ�x��m�,�,u�q�[�>t��QKk�$��hm
nn�wn·�f��ss}�����'�Y%\�
�Y�٬6k~3I"6k +������ϖY��!I�ɢb��C�,"�c���0������@a(��`O9 +��tz���i:��K��ј����-�"����Kױ�p%9�x)Y��nH����&֦+ϫ +�����:�|���+��y�y�ʷQ�Cۖ/6u�ęNރ�(�O��q�}�Cߙ>�|s�Qf�q�C���w���? =��!-���Ċy�Sf�;Ձq�tx���Uk%�K"?GZ,,�ԫӘ +�����]h+~=#V*��W5Y�_o[Q�vajŹ��1���>ax���[m�HM� I�a�A��
_p�*f1��M0;)0� +�[w:����o�����(^y3#`іw_,B˞=f;�Pi��{��f�ZG��ML�� +"����D�B���7`q��lHi2�@9Ir#����eX
���&&F��@��"���6��j�5o^k��sks��ѺL���uڲC~��l��eZ��%#�Υ�>���ww_;eF㹉m�/�}��x�js��銨Ň]*�H=�� ���R�R��=۸�gt\��7�������~�
��I[v�{fQCV���./�Y�����Λ5�ʲ�n�f�or<�*39���/)��k6��3�S�]�"9ǻ�����<}b��S*�Y��~��h�nJ��/������p������e�/����m�,��D����K7� +��ߞsLk,��{��W;r����W-�촡�b����� +endstream +endobj +516 0 obj +<</Filter/FlateDecode/Length 319>>stream +x�}�Mn�0�����tah�@H 4���� ��"cg��k�I�fK`}����qYW��-���(���40�'#��ث��D��.�o1�:����'C��1�s��ɚ���r<�C� �WG��*��I�@YB�� :��կ� +.H�ڻ����a +endstream +endobj +521 0 obj +<</Filter/FlateDecode/Length 97603/Length1 296968>>stream +x�� `���3������f7����/�ٜ9!�V$-�j�����Zi��V�*m��/�w��_i�m=P/�%(x���Z�Z����7�K0������Y���y���ۙ��~�f8 +3[ί���] �W�<���iC�E:\߈[͙��2k17-�f +�"�o)�t/iٌ���cA����g�>�_����
����"�� +�~��h��� �t�q�M��g�6d���|����M)�`��c܄ߡ㹸�������m��&V&��t�T�b�C#��Y뛰���܁�<+�ۄ���=]���Si<_����-�p�I�m�,�y�n�3���~y?�cC�.��`0��+�`��p�h}�����I8H<(bP��M��`0��`0��`0���9�(?5��`�%�-`0���;�D�� WC忭�sX@�z�S֙ +՚�P�(���P�"�;1�Ax\��0[s;x�m0QX��;鲇wB>#�{������B��-0[��鐯��W�'�r͗AԘ��k/�ekl`��r�B�U�����b��
���'�a���8�Q�z��֮�:����t���Q�g��F���1� +�իa�'�P<uQ�K��Yyaͬ棫Z����wZ/���������|t$��
��)r86 ���3����;c�Ý��Ǩ�8
he2���`0�룣���=F?��_>\N25-+� h����r�8p�`��p\���qCn�8��>�L5�1XH�㴂��x=ڷ���1�cn1�!H`@5P�AN��`D5Q5� Ղ�(`A�R���jG}`Eu�
�T7�?�N�,p�z����x���>� +!�<��S-���ߠ��E��Z��%P�xJ���P˩V@q���T�Z ���N���;0*P'Q��P�@e�/0ƣV�D�iT�a�t�?���ZSPcP�Z�z�`j=T�6�t�F�?AԠ΄�,���6�G�u��P�:P�Ac�m8�P��L�T¬�[�栶Pm�f��an�MX�P�Pm����� +��a%���������kP_��p�:�$�ET/�e�W�SЁ���n�z �H�a%j'�B�4�F��I�M��R���u���E���O%���T������
�_�K/�f�WB'���Q�B} ��gP��M�_�KQ��M�/�e����P���~�\W�~
���E�:x��+Qo��@�:�aK���F�|��T�_B�_N���A� ���m�*���Ko�z|
��p���z��}���
����Q���~ +�Y�5t�> +;Q��P��ܟx���O�OQ��^Խ�+���Q�Q��>'����3��b+P_�݉�� +��:�,�`�1�0��0|�&o���`0� +��S>d#~D�H� +ձ���遽dN���eq�Mf�(+�^�U��f��bv�ͧ��iɰ+�|�>)_���*� ? +�X����`�}c�g.S�ȵ�C�e� ��`���+���lA��.��Jr�"�}>��j���&�]4��a�Y���bS�����W�� +���*.��6��iu��6�����������IE3�� (j
�93���<@6�Fp:��B��`(Ǘ��u�����7��^?�礶bw6��e��r9�N�bt:����ڙ�q��:7��`�h�� +x��l��k�dgx�>��2�Ų��"U���0���E`6[՞J��g��-8�NN����1/77?� �����������V<>�ؼ><��B\�gsZ|�|߈L���o�&>O?�h���@;!{�;�?��:�V�s�'��t��� ձr�=�l���zΔݗ�[Be�9��^���V��9Y�l�7�W�¨)�^��{���&e�)�AQui)X,Vu M�h�[\'�D[��=��EX�
� Eh1�"������Ǐ-;W�g��v���]��=M���*���a���5��� +�F*`FEj+9ᜰ� +��`���.�=*G����.���Z����k���˴x�Zq�!�%�M`0c +��ȣ�3�Xy����H
O�ယ�L�� ���d��Y���y��pV0/<1w�P3<��p�K�g�1�A�|S��u`M� +`ϲ;!//O-v��{�XY9�Y~(����ʢ�I�49��P~<�<��Sq�,�3/:1�;�.�J^������ +F��E� ���n)1���
�>��+�1���t�ȵ���rg���`0� +����^(+K���0����릌ǎ�)��`<L?����|��'PZ���� W.�z�J��JG��شB5E|���y���C ��3F9���7m�Zq�a��7�M`0c +p�>��[�a.����rX�o]z].�H�7����]<�!�A�ͽ�ox�ß{��W�k�~�3������㠃�F8���u�P�hiR6X�
�������h^~A!@I)�W�Ã7q��)P������4s��9�s�������xI[��O�M��M��!��F�e������>�{@����X͌��Ӫ�N�<i���*��JK�� +�p(��g��Y��a�Y��d�
���i5�AIc��#��k�"�f����r�X�'�#Ĭ���ă�Z��1���#5cj�X�&�����$� Ɵj�{���0}CC�=�����V�6a:����u
�8�l�7]�����7�-�#��
�%�m�1)c*�tvs�M��ƪnD6*�44Ƴ"
�q!ڸ|U|�¶�_(�^Z��WFV�!R��*POw����t7��ȷ���%����U`EG�qUd������v�k1�!���QωEܸ����}K}BW�� Y���j0�}a[����v�F��6ut5Ꭿ�C���}�״�Źkp�A�=�wR���H#��8�"u�u]w���v�a���7�+q����ֶH(^㋴/o��v@ע+vfłY'���t+V��v�-Ʉ��7�:]FS�:I5/JW��(2�C<�2�-i��w�Bd��Z9�!��_��㢸T�ѥTa�B֏k�J$��.�������9˓9���.�$�%鎆�t��8^TD:���(�q]�XZrY/�t*A����<��۫����B��^���߲�M]� +_�ʋ��|)ٝ*q�OJ��JҫwD��G���q1/�Ϣ�������V˛["����:�Ƕ���%�|J�,���<�qM���v�EK�H��F�"�u��?5lc�^�&��v5���)���Lڌd[�����U�z;0��Mq�c���P�W�M'k���j���*>yy�I�'5��%`�5y|s�Ү.�IeMh����"�����彉-+"A%ҵKhں:;R��7��u�x����%�qUصy��p�.�q,mۥ����_�Q�ޝ�em��h�i.OrI&Y�h�幩i}߮�Z��tye/4OL�q���W�uGytG1��e�F-��jk0OT��E,QHɃ���Q�P����ֶ����E����U��pކj�������[;��@M�S8 +�1�MxaЀ�9 +�j0tb:�A��-�����2qq�{ + ++w��ov��/�wC>0�P��GK^쩫K&&MQ;�J+���Ox�E��N��YPVy�ք��`�8�v���CL���ܼ�����'��q,@V{��d��
>*�l���O�ܿ�l���M�
xv���p�q�(���p#�{1h���P�a>�v;��w���r1܈A�G�'��)��]���;& \/l'�� ߢ��{1�!��`�\&�m���bL�oI�ߌ�.�������>�o�e�gr�2�t�K��vaSON@���� � +��aj�m�*'|IXO�ԍq%��ו=�=GW�tgUn�Cz%�+��]�G�J�`��T��j�Ra3�ٌu6c��xT*�M��M�w-��!�A�� �;ɏ��ư��u+��dI��Bl�ׄ�{ +������yHX��:&�ٙ导�Ēd cs2����i�Ꝓ������1��T�YX _���5�
4�ʞ�����y�A��9p�p��*�����="T��L� �P� +˪��R��E)(UH1i���(\%�(�\���mobw��j<F�����[��r\�-q�n�>�a�q�6����tt�N��V�v��U�U�wȝ�YP�\!���6���^#��c�x�W��� +<�+���a~P��2<��P\��� +��`؇��kqɂ�,Xς�̵`.���:0t&Ku��:��qR�!K͘k�c{�8Ia��K&\2� k��?�*�A04�02 � ]V�,������i�TY���[�����r����\����2F��l�"ˢ� +�ݡ���X����������whj"5њ��;4��hyA��@$
���8���}z�f�܍s��+L�S��������(�����VN��N��ů��6�0@-�P�a#
/j +�ƎE�Ǽm����'���l�D�~�~�~�~�~��T����z�h�,E�(�:Q#�"�����X1q9t +�t��Vx��gD~r"�;q���7��qq[34���'7����S����O�us���q)�_��O[۰���k|dT�8���|$�|�
��\s|�Jh^������k#up]V㩱ͰNmj@:�Z|Oq_<��M�-m����$��7�g���.����Ɔ]|'���vq��?ݸ��s�ohOW�0߉ՠ�D��N�j�v�jsi5��Ɔ�pX��n6������Zu[����a5>r�r�R
���1Kߍ��ЍY�@7�M*uG�X�$J�tO�b���dZ��Dq$�6��t?Q����N�)P��+_Uu��s�-�̝����%3�$3�LH��M bRY$��*�R��(%��*�Z��� +o � +���h[�*�ڂ-(.i�/�2�>�&nm��}>�99˜�=�Y�Ϲ��P������~���ɰgƻ�g�]����c��}��y�����lWM�9k�g\��n��ݳ�#��f���g��3�#v�Y#'L�5K�~��ʌ��#Z�l]>��{�Z�ͳ�/�7[�o6�?kk�8��o��j��j��ڪlU��x�0hl��KG��`Z��{h��a�Gnf�چ��1Dv��sP ��-���a�X�����~��2�}��C��=a��! ���a$A�#o��_gg��N�,Z��v�"�:��V��=���u�u#���#Z��c��g�dE:\w��.�[^��nS��:qѢ���i���աM��!
?0u�>�nS��!�� �g������?�u�"NM'�tb�\bQb��������B�a��㱊俱}�_��/V�܉�ϱ>�u�ae�l����- �u��bO��bp�3������#����*����L������oc��WXEV�*ԛ/�WۖNҙ +��yr}�V;��!r%9Fv#�^Ev�clC�@�?�8@$�)2�t�s�fύ��`���$m�5��>Ķ�ܛ;�g�p�r��x���hZ����չ#�A���N�_�s��"�q�>1#J_N~����߫���� �>Dt5��'T +�r7�!d/yq4��*���E|�3�88�H�t��,F���N?!�"Ż��d���$H���j2��FNA!�3%�
�m��'�g4A_bZ�#AƐi�~�r�9�` ��l���M<I���,%]H�V�v9 +yL(E�����G������*P�i�v�,�Fϻ6w#���QWaL<Jnȭ#�Qv�����G���M�\u|n��Źݤ��[�$1!T��= +/`<z�C�=����( +N��� �C�Cd������Oso�#���Q�,���m4;B2٫��(ֆ�4�A�\ +n�n���e�_�Xmq�`gz�t�q�� +�Ig!�,J~�Pk�l]6f�%/`�f�&��Q$ +m�u\_+Wѳ�0[5�2h/D����pH;����47�m�k�yQ�����z��������ͅz��6S>�s��]\F㡋NF|�H��b�ov�r@}7�������A���r/�&L�\�k�<J�b�II�6y<�.Q�:~矡�.@O�G��(�<���*�R_5M��;�Tw>�M�b{G"��V��~��HJQM�y�M�~_�;K��D�F��� +�5�wی~��c��x��7�EG +c�º�Y:}�ݠ���Ä�y�Ҋ��~�R_�R��C%A�����y�O�μ��{E�S�����n/��i�h��j���)�:�8o�-4/�<��K��ƣ�Q���S�S�3�/�/6��豹�.�ϩ�;�y�Jו����A��E����wi +�����;�B�����k~}��=,��K�{�6�v��� � ���4����G����pZ���Bah�B���M�J�+Ȧ7i�u�D�) +D`
,w���j���b�8T��Io_k;���]��y�j=��S��ޒ8�
R�����J��<��u����VH��/���ъ�/L�"��E�ц�<�FK�rEu� �}��3���o���(�:�Ȗ?��n�r(̜�(7��KQ럼c��/��f��_��~:X*���s��$�g\u�rgv���y��˯iЏ4��k ��P\<�X��^y��L��-�������S���ɣ�����w��>�����O����g�OC��U�e�d{l��S�J_�#��<b%z�W%�e@ר2@I��·�X��e]etM��2Z��{�i���{�9ŠT���#��!ݯ.����A���o�J����o�"�@������m���<=�V�:��L�&$����5�3!%��� Gr^l&�IMz& +|3I"!�
샔܁��:B.&UI������@�g*TW̍/��KV;�v�]�_;�ಮ������]n�G�dκ�;�X{u�i��;�?2O��76Myhc��ۺ��6"�+Չ�������
~�uw5�]��#�n��kX7�V����f��`n��f�(D��X�L�
]n��f�=Q�MĘ�F��Nķ|��~��ئ4�0�����'� +����qz���0U}��%���h����i�l=ˮ�����6}�KR�J�Eh36�1=8CD�ш"�X�AS]�
# a��`�#$�����*@�h��bkk{�:$��� Ď[U +V���G��:}��+31����e��_�Z����ۢ�j�����ݼ�}ﳓ�_=t��>�6���L�V�;��˥Qgd�-s3i��?w�6���Ǘ4=8������{� }u�2L�OA��X*�ִ����q�>�~K�Ώ��2v�m��~���K�ֽ�b�|f�o4kabJ'�#��^�8��r���b�ˠ���kNtK �����6Ђ�RRV=��@��c��z35�T@}]� &g�I��z8�Dg�R�H��cG�;���^h�5�����~r]N/ۣ�x�6�&�xQ^�=����H�
�K,�����o$�BkoE��BaXe:��.�A��<�ḃKn��Z 0���V��lq���^�50'������A�o���ⱺ�ě��c�Vf�8ݓ�lM�6��m_��*L84�^�I�8��x+z';��)-y�<�=�/�7%q��غBZ_��v�s����s�-V��im��}���u����!m�S ��+7�+n������"Y���E����ܟ�qZƄ�-��R�C[xs�L��e�j��*����Kh�uR�據��2�ا�;U�|kr5_����7٤���o�N�
�90 <��I_��#>������
#(Xl��r���D�g&E�^nq�.W<���w�O:�?|:�3:H�d�K���Ͼ�=��3�0 +��>��%�F�g�Z�W��zo�>�~ҹ#}(}�J7�զi�.�-�wi���u���H��Cр'!�u +g�N6z�N�Y)��Li@��z%�0�_�lI$I�ġ6}CEij��s�����;t:͎z���V�6i��}�Y�����D�,���w�"�9�a���UmU��X�TQI�T$UTR(QEQ'#��"+��*��bRe�6ӊY��>Wko��gI�`D�.��vt��x^%�~B�&`��}[�,sȘ�*�y��v�s�߱}+@nK8�P�0V��F�F�5�'����;祇6�]�8�N�Ȅ�`3�l����"�;N.��gy��lÔ�#��,�#ꐔY��<�}�f��KTF��eP�+���2(:�Z/�
�)�>q0�R�{=���pɠo�4�Q�]b�f5�X�5�K0��$�H)�y����!�4(T>S,z4F5v��"9�(�t�h#�e$\D�R�ƹ���X�;t�D|)R�.V�ۊ��5M@MZ8�-�fIbT%iT�fT%i�}�$}�O��oc�ߌ�/����Uw)���~#<��@j��^��=�=FO0s���46[<��ؾ�����?��T�Bl����ty���"g�!�J��Qv���F�Ǎ�UMc��Ise����������i-q.�:�%��5yNY �%+|���r�3̳�u�C�"�\�a}�c��32]�tQ�7����%�K]!}��KwF�r:H�u�ul���~�N央'����Zd�j�3�mr�|Ffi�Y�.�#�q��x��,VY�P���w�� �x�w���Πm��tIߡN���td��"r0��~�7||�!u����{̌ +��!#-0�p���v�9���n:-NHG�(u���SYdwz%��M[+m�������z��'���n\x��������:E�Z�I�S'֝��kt�M)V�Mv���i��g"�Z�G>�+��ζ���#� +�bS���Z��+R-�0���ԭ�u�p�U����𱳠��J��f�����NfOǜEi�q�i��%H1~Bj5�*WU����bYJ;ou-L�"+�w�7�u�'������9�:�T��8�<^�������L�E���tt4�q�JM�Ǥԍ�%���/�O8O��9ϥ���M0�qˡd��C4�����lGxb����+q���N�-M��i�#�r"�E�n��A�:!�t,�K���+���f�[�^ጬ�7*P�ߢ@2Mf�����e�_���1�P�SYh�J] +����+t��g>��"�B_�ގNz��Ɋ'%Y�롿�j�Ns�S�����ѓ;��Q�H[k�77��hJ2p���7/B���o��a`��.x���l<���jl]� ���Ե���ͩ�#�k��� +�./^(�F+�l�/��~����.݇�;��H| +u+�)��,`Y
�_4U��`�Q�Ѳ���K +���4G����ef�C(3�b\�a+�k�b1�!K�j���B��b;�����u=S�oo6���HL�ɝyڌ�vx|�B`ic���".� ����bZ\h巰�r:GBR-�Q�2ԓ��W�4�����V���A�8�������~Y����3�`\��X�_ݐ֎ᓕ���C=��4���id�e�Ѳ��< �`��U� +,��1W���>��v����[�)O�������C�R�5|�{���>W
FK><��,5���J6���B�W��9��}��ZCs
�z{�럣�V�V�JU����W-S����\c�$ץ��x��P��"
�b�o�x�e-3~�*�V +#.����9��P�Y߳I��� I��k�R�E΅�����m�_x��:�G����};�qŤd��&ZO'��n��%��y/p{���\�x�mqx%r��v�T�d��ƫ�}q����<Z9���&��/XZ�ׇ�����̩lT��Y�[r�݊��-��$2)�%ٝ���G�Ǔ,Y +j +��vu����~�-W�wc�Ճ1���k�y�����u�i��eu0
,d���q�ҭǍW�uM^�X8��C��I%���+�2mE,w�~����<QF�GrN��A-�^I&�� r�F;��š%�U�"��l;l��/z�,�i�w�O#w��l�_ӭ��e��N��^�++�;��%��-�M֦��c_Gu�[��������z���E�ޤn�[��%$[F����"a� +������ +g������ұ���Fhi�'I�����fSK7߾Y��E�y�~'X�S��5�WSUz��w�l�Fe3d��QD����1�Vk�ڪm&h������d���j��0\'\g�κ�6��Ƌ{�ۅ=�=�[m{��
��JK��l��[��p���A���l6��놢�)F����5�5M��F�&icv���(l�V�mþa�p`����W.n��ne!��ل wtf���I��������2?lzE��8�Ẁ��t�i�sD�ݨ��i��C�P0�#�D^CK���� Әhu��U�����l-b�2Sb���������T��d�߱#����;c���<�nD� ��;D���K�?�Oc���U����C��|ZC�{h5UC� 4�Qubr���)O.N� +�p#�ҫ������EI�H!��"i��f��93)���Jem L�x��9'�R�ج�%,Zm�l����/�@�*�d��!EL��Xٛ��[�����ёQ���E,<Q��j����Z��;��Kg��@Fh"k�: +���Fh��өdj9 +�<�����W~E]�?�s�Y��8�s��|��]w�w���g����ƪ73�^R��d��+[����{/|���)�_�}�ح[Z.o���������?Z +ǜ8��N���G�}b� !ֵ:z�Q�&�Kw��^x�3�<f�T,c�C��ڔ����9J���l 昤䨌�7*A��&����,�>�A�SX�|�!���@�/���!�}���}�(���Ly8���_��@�����o�x�[}y�/�c��RIN.>3��d�u�ߢ�c:�~�ۅ��D�X��fS.�,�;0��42��A<U(Ա0�ץ�c�3� +���X'�fg6����5�@O���.C��~�+m�J��4b�l���M�*�,dČ3��2�R[��}l/�VXf7s���fqs`sq�t{w�pe���խ;
;ٝ�N�
���́��B7��n3|��#���W�{Kws +�8��=x xo�½���'MO +O>z2��³ܳ�s���L������ ��&�_Y�l���^���&�#�9�g���W�������ڂa$��pa���-c�(3Vr!O�)�����`�S��0���M!�`��l��s�Z�A��^��e�4�E�ԚM�o2�CX�E"<Ţ ����L!�8D<K:� +�k�j�6{z�٠`�gO��\E��EA�q�` ���f�bC�!T�|0�b��r Kx��t�3l�S�`6�<g�|�}����!�R҃�$Ț����Ti������J�d�x�d�/���w�EB�p@x��� +������:�K�9�Qu��ߣ��n9����?���C�`�3 hDW&���l�"�D}��{0�$An��͗����l�uu��i@ Rx���2Q�vU�ԥ�3K?]�O.]�]�:ч�J� �fdlC;�~g����r���V�T9q�G/2�?����/zS���/.r��ɭ-)�����)ۺ{1J����;� +Hw�f��\]g�u���8_���ўQ����=F�
)�N�~��:����s��g\�ю,~S��@�c���b]��V�\5�[S�n�c_4Q�I�`�)>�ޔ{(�`�1���D����rO^L����z�z����r�e���\��8�E��p�;�(H�#.'�L�PX!E�3֖.�}v����b��n�+9t]���ԽC�:"��S�w�
��Y�+������=�7480ntkY{*O۩X�T�Vl��[LUS���܄�#������)n��:�r�:+qA6 �Yҹf�zG�fD�������8�ZhVsqI����������,�1;e �U�� ��,k䯬��J!l�˨�.FchDs�8:��h���f��˗Ɍ�B����,��#Z��ˌuj�'F�:Y��H�%�dm���������@I؆9��f`%4ѳ�Heㅕ�4���*v���0�
�����I��vy��*�����,���^s���O���7��SK=�>w�S�g<5��C��?"�\Lp�r����* +lފ�E{�o�{L>��-��Jm�[r�n�y/� +���^`�2OS-� +��F�\'1��F�;��^ +j;����c}r���T�q�3�P��]��Sw +wVذ��!է�Sh�8���W�:���0o�r2?�5�/�_Y���q��M��m�[ͷ +�a�-:Z�V���V�ܕ���/b�+R"&GSM�5�=�Q��V�A����L���A���j��m�>�����}_�J��إu����!6W��m�Y��
B~.�rc +�j�r����`7��怒�Ek�R�ʔ2�4�BO)H����"�Cq�+�h�=���"�B��i֚�
qS#q�$��8������i���T�a�Sņ-`~�3i�]��Ql�Z<1*-L�&!��^�>�Z�E�!FD�]�xo�x�}��P��l��Ui�ěy����8�V��L����pڢ��':��U��2��GH +!ko:خEp#pd�rS$6�I4�M�I +�N�A8V�&�H�)�+̓��Hq�Zk�����?$Bq\�ܐ��C@��fƏ�=��f\�pi:�B/F�u*,�lkס��u�Y�W7�F����@��������dۊm7G�?�`�����)�pp�Mt�f�M�]㗗:�כ{7Vn������zJ�7lL�<o�ȷ�s�����ۖ^����Y����ރF���c�5�0���� �y��(�D��9���8X^6�D�GB >\.`t��H�\���/�>/e�MN��.̈́���TP1 ��#�F�mU8����I�`��CC�����106b4� +���
>�N�3��+|�D1�؉@��?������a�ڍR +=�as����h�����i���cx�y���8���Җng����!衤:s&��q�H������=�K��d��[�-�)�9ha(�d�-E\���p���uU,cʏ�62� B/z)-�N���d�u�52~����Dd0�B��'�!�E
1��`� +�A�"��Ն��/a��4>�&GF��B[:��VZ�v�Y��E��=�O���;�zt�M����șk������R��>��_��o���9��5)1��Y�����^:���[��1
�c�C9�в���H�":��(67�� +S ���.�bS1��I1�$c�Ǧω���Yb��߱!۫�ą��pՠЪ��H!�FTD��>��ӏQ��4u����S&h��'?�%@�� +�"Qs�d�J��,����{����aE�0��X�=1A�JU�Dt�p4X̼>�=��0sO����jU!��Ɇ�$��%��?y�Y3J��sXVb�8��Tk�b�@�=Е2��X�&��8�2,ۘ~�[��{�f���Rsg�.$+/[q��^zA{]|�Lj}�-dݷ.UH�wF#��~둏z�7��=}�`�*J��
�JHN����u#�F�aXA&0ГL` ��ƭ�t��#����0(jHc�:����LVz��E)��573�� +��1x1�~~��a�a���Ib���ִM�C�u&��G3n��h"�?�R��ؓ��C��-6ev���&�Ytѳ���;Kx5��H�,�,r����6J�>;6V&eG�^��z�,�R�b�i+�f��Y�YY����e�F`V'�u�t�gۅ��FOL�H[W��dW}{��F&�CI�<)ŝR<��v%C�S��H:'�D�����������=?w�=RV�_|;�9�����Wm�(G����h*��>`��7'���K�-k������\5R�]�t��x�5��l��j�a���:�a��}���z��6��I[�M;��T�g/�S6����h�>5�u�a��ﭾ}�;Vj�������{pp��q�;�{���ڹ�Ƕ�zrk0 �[���-�������<L[�?H�{�����2�S +r(�9�R�q��:���������F�EެNagw�,�ױ?�t�k�!%�}5�t?���n�o��'iĈל;x���;�+�=�g�)i���\�!������%�b�ZGu�Cf��_�.ln���S��.��5jSԢR�(�+�/2E�ע,Q�����0�k�`nŕ��H.R�-�b��d<�H�J4�2����̌g�2�2��zf�3�p叚F�zykq��� +c=D
�օ���a��V�І��ڸ)��݃��@�_Fk�+m�#C��+�.(\��g/��Uޞq��嬉��/�kR�D>hr��Qm�9/a�H��N>�h�N,�D��q���D��C�2�kx�i%�?2 +�)�%�p>g�9�o�?p�؏T+����գ���5Gc����V����7>��mk{��VVk��Yoyh��U�K-;.���S���Ed���Q�Ț���]3>uĕ���2g`�&��E�������)癶GK��%���7=��ɛ�o9��/�nV�ɕ�ה=V������\����U
W2��D�}I��� �<�>�㈇���R�-�А��+��D��#s�r>�#��W>$�Un��p��F�2�/���mƪց� +�f�7M�!�]!8V��J���@� +�����L�
����WZ����2�ģ�����`� +��_L��0�=m&��LT���es�"M
��WmG1�#�1��Ws�H\��8�+?�r�j{Ck�ݨσх�BGǀ��䅪�T1Wǰ�lSl���t�p�:W=VeT
UǪ�ФU�����,c���\6���?�FR��U�'*�|w9R�Er��"W��*�]2�}IӴ4#�yܼ��s��BJ�Q�d>�ʍ��s���t�>�C�(m.w,gȍ�?��,��l�X�P.G�`G��ޓ�rvBF�U����B� �H�au��6}�Fc����I����D\C��X/��Ѻ_�`<贚���J��bf������ݵ�K+.�-p��a���7��x�����6ɾP2�NI���/)��B��ɤ�\�ȬнG��t�
��E��t#2�<�Ċ LVGZ�[bɈ��Ә�ǘ�!��i�$- �@��4{�gG����[�����_f�7n���v�vc5߁yx�E,�d���q։��7�P���m $z$f���*���'Xd�1��yf֮mT�����oog7h +]�ir�,Mm��9�d;���9�b#*�#}��D,fO�F��L7��i��e�sr��
�6��
;6���l����|J��u5�xk���Q,���l������6H����J�W��>%i]xz<����
9_��N(�.�����T%mj{7��&{��:�c_Gq�Y�=GO��=ww�գ����[s�#O�>���AX�� �E�`��8!�7!!6b�6|� �$ +!���Y�}�����x� +R�!=\��|/@�!�8��ԕ��0A}|��G�v��n�Z�E���rk� B�GY-Z���G��T��%֪���D�.b��~���`U��[�%�`�V��l]���$�A4'��d�$�� +fptIw%�SI���x��.�2I# ��b�s�����w�a����f�,�}R��=��*���_���˷�N�~A��;7dM!u]��U��]��^հ�����%y�{ekn�,��G�/K��̥2�7ݾr���;[���v��{ +�S"���q��0"�����2�aO��cU +*��W�13�%�,p��i��q? ��4%�|��|� 8��7��j2E�tI�"L\h.��bϘ>x*�3��d�5���o,\f[X��k�ý���r�DL��1������r��4��,�7W#R4��x?`6�����,��8�cSw�;(nj�{�auIv��%+\��#��`̴������x�B��!�n���20]~�'4�#��_���Gq�(%�bK���d��6T���u�2�h�e �ю��t��?��:�p���Fm������s{`��-�
qg�0�n�����S��>łl;AQ���AlC�y�jP +����[_�������%��ኻ�_J�������x��_��]�m~�w�����?���a���� +��54��6�is�l���+鰞�+�ּ�{e�+c�c��+����t:�1�,�1#��nG𣠸�+�Zm�pa +|�'����D�U�Xj�c��4�G�"�uH��3�Xb',�����nvD��)��v�b�HpF/B�p�>#�Z�fu2J5�H����,â�*������v� �T�3)_ � +ػ7�W����?oI�n���{녂k�V� +�<���'e�<��`�/ߐ�FOmm'��r���,E�(�wh���;ޚ�+8c�虭�Yu���e�db���ϗ���Z�%]"kv&���B?�������b�vyk�*��d��SW=|A8D/�Ϟ�~���TmӋZ!�R�1:� �`@b��\HbTnW�\��px"-��\��Q��ɓ5��fx���"�0co�«�0���F$J��Asrha�"*Q1�&1� �w��+�L:C�8�2�L �)��L�ո��Yi�7�?g��Jƺ( +7G?�������K�Z8�R��bT.T�RnϘ�F9��ن��ON5�I��O�l91Gy<��ȥ�
�7�ؘz��/if�l�Ն+#�����L@Yߍ��/��tM&'��$^M��{��V��;9����ݜߑ��R{�1��4���-8q��9,a6�b�/L��<�@D�B�l���H|#i�d��܊��ʦ�����]�G�+o�o���RQ�E��9{<[�����Q��PT�I��d���A�� +K��ގ��������/���X���A�%�%f��;�gz��tǯ/�{�Ö�A0�����%������X���] �L��Lء@�ɦO�(NM���;�1���4�z��?��~����C�TD��yb��\�����>Hn�#RD�����f�L1�Y��5�G�d�C��ݫ� �R�����ɡ��� ~r�ciD?k�(p���hl��(�y�����������h��=\�X�������l��*�� J4�;_�aH�K���K-�~����7ƺ���O��zNF�g�9�" +{��IF���ZI����آ��%�LϷ�e������WU6]E]\�,u5Y���)z��(T�MU���6,���E����h[�<eXJe�t�<���鐛�#���Ę�IvDO��X�K�Dr.���>�EO��׳اӀ�;SR�x�Y8j��p$��.�WR �����11k���UL��EL"Kb�^��0)�P�l1�)���.���W�y<jj���x�oĻ��쉈� +ѨL=���a��BV�p�MFE��A`��TO�nьP<�S�X[��ٺ��<��(}^���n��"-h|ˤ"��Ȟ�o8 +�7�v!�,�N�O�r��D����QiKڱ���Ja�� �m02�)hkgh���'ӆ�k��'�0|���a�n�?�j�_�d�]U�����3Z�h s������(�,�sN�e��brG�|�.m�y�e㳧�G�h��'ڣ%��]T+�\��SZ�Y8&�f�X4rgtgt�z)4{.">Ka"R��@� +��R6H��o��ئ@ž-
�v��\>/��zi��c����͌�X�VC=$8?ܬT$`�U.l*\o)��������w8䭑~/�b�x��m�GD1J����r�Fjm��#�#)Ʈ�${��`�.g�&����~��?���rO�m���>�Yy�?�M?WxQy1���Z�d!�&��o +��jK[�Zp!��=`�غN�X�c���#��$�Q�I���m���S��6o�os�И@����ЊFtGy9��@�EǺ�\L�F�X��0v�8�C�%)3V�fMji���5(j���ƆЉ�O���e�D2YD� �Z*!"a�?����hE���1ȹ�'�6A� �#^n� ���A*<o +`�t.���M&�v�c�j�T�Wk ����C�>,�gŗ�7��z���w�i�S �~�����A +��w�lqS +ꩱ�B +)V�'��6�[ek���m�� +Ms�o�礚�F�Իܾ�_�^]�Z�^Y�{딁�m֝���N�����7������T�e�x���b|��i�,��|�Z���@o'�N=��9p�"�a��� +� �w�"�F����0�b��ys����ϧ��j�Zc�G��ULUk�JM��
��]C�4����0ZT�$v&���L�J�Ш���4�2�������VE�Z�5�W�)����*_��@��`s+�"��SK;��Z3ɜͶ`-���M���������s!/㣦<����@���-((�uX��/��k�x@��xF4�<;��PuPVx��ZAE��0���3��z����{�DYL�$٭�U,����L�8��' +��SC���"���*��|��<�jV��s��v�};&'q1�LZQ��V�=kt�$%� +���v4�؆���A�w���mQ��b�-�n:��p+� ��?AWӌ��V�d��kxy��Q��9|�3Oq
E�0��{�xhs�2���D���+R2�ܨ͍�ù�1l8�1 +�"B��^�mA���y��F[N��ԘO��C]�ڐ3��ߨ3�F��khhs3��"�X���n��e��;��цO?���<Cَ0�I�Ȭ�1uT#=$�C�X�F^"�褞�tYF>!�_�'��+�u�`�;ٽvǩ5������w}cQ>��u2��x��]�XU8(���뮻J�G��FiMl煉I�+����-�T2i�En;��M=�G���� +WˤZ��٩�i��Y<1�abm��eA���(�2� ���߃��* +@*CkHB�x�����k�ҠOw ��:�v�Q�ϔ���.?LA;�#Z�z��|�t��EO�n�����y}xM��?�1_��+���AD����5���3�,�Os��j�2�v����m
g&�f��S�hI��ټ`>�A�$�à�`�#nF��K�6��Gb1S��ϋ>�ElSžYa�kG�#UjEQ�����c���/x��B�T���gx�Ȃ?�����G=ցPf8-ʪ]ʑ���ˬEmj"x$ەД�� �����]]�� z�� +�I�e�Q�~���9�����$} Y���_�P��cʼn��w��;\ۂ_v�4 bX��ř�Cx*�'�Ƣ���p�@r�X~,O�'`F�F����^���i?j;̉�� ���q��<~��CSaϟSؼ��w\��������
tf<�̟�~��M��d�@���g����U��Y����+�n��5�i]v��/[Z6���'����s.'��˖�l[����?��>z?@��$���?�|����0��e�B�UB�Ҩώ-��%B�07P�dݕ��'x#���>��2�\����3-��ݰ�O0 ��6��&����Y�(U�Ŝ�H�U�|_Կ�i
+�-��^���|^o���BǠ����p�Y4K?
}��Ͱ�'�68���<�]�<�s̡��9��_��W�;�O;��s��cpɹs����3��8���sxp
�h��t!���P�8�M����&p-�n;���U��4�f�en�sN��gӹ���U��"��/,'�r�d�����|</�/\q����,Yp����7x��,��֡]�o�J�a���b]�B!�u
(��D�x�$I��W�>��B
T�O����E��_2�����Go���U+e�]z�e�]v�[?����'�[�V>q����WJ�j�>��S��ҝĵVO�����]�.��i 7P_��;�D�Z.'aw��
��.��?�����-�+�O��T*�o��~TY���9��ϖ���e���R�J��N-+���O{�Z�PQ��q��Pw��zdQ� +�0Bcy[����m�"*H��q4sB����M��,cb��5�u�����dl�|Hh�����O�I��yn�� ��/���E�.!��w���6G�0�������C���Ӧ�.���A��F4Ǭ�n�3nF��U�OJ��-p��ʾ���I0����8�����I���������\���yz���Q7h��B�8/�b�ͼ�5���Igjic�ǍfL2�u��ި-��b|�������)3m2���a-���-�VQ�Jn��ct��wu
L��2e�]9�r��t�WC���Ke��'*E�(��1U.����z�X���k��yt�J�����̕2^��EY��eK� +]�Ng�7�|��k���5�fc�`�������x��c��[�QwiW\yY2�B�r�M�_awϙ��5��顫MHR*���5��� p���n�2���5H*���a +�����ɣ�I��. +83�K���!�ʼQݭ|q��\�vf��%���H�2=�Օ��s���y=�+�!���I�T�$G��wM���7o�1??�O��q˪�S�]� +��t���Eڳ���F��勈K�M2{���2 +���S�B6������'f��6���4�<~H��O^H���XU��B
qN^��')�IG����\�h��
�^s�[�=�P�+C��4�Fu�22�ђ��o����R`zA�z���۵��-�mC1u������silv�c�R�S�+�ɘ��1�`�>�����=��%I+���/5���C�q�cSbv�����{>�K�?�g��5fo��A�E����A��T��ӻ-s�]]s����a�(���bV
j�����,�9x`�VA<t`ϮM�=Ә���}��G:v,�e�ۡ"��g�R�N2�* 3�r9�EN;s�!���b^�V.d/gV9���ZI�g���&�т�qiZ?M8��vd'e�;x�U�h|�N����x�"�<����.A�����hqs��[UW��x�g��ц?��4���BC��:�3�(�l;3�YM�4f���t����z�O��J�Z�F<��;���!�f�'���S���룳��q��|���.�g쏄��<�ߝ�P5��<4sf���m:��1860 +�9�D�dO�'�r���� ��,Hm�P����\��J黥��!)
8F�D�ѥEa�Jc��J�XGL�����D�*�]�DQ��+��6q������_�Xx�m�_x_���������r���� b~l��ɀCh2?{���'ާ�{��x�+E�_o7)� +s���2%�dbԚW跐� iɬ@P�Zڙ�:���&ϙ���^����V�HxP6���|�����zR.fqy:�ű%�B�nIK. +��3��~���1���Qk0��hb|��h(6��k56���̧D��Tiϕ�N3ӌ��F�{�q�MVΨ�Qx{ ;J>D��"�0n���S�5k� +�A�� + +�a�� +ۓ�h�P����R^���Bi`����WEm31�y!�NJW*�%XJ#q�c����d��`z!±YH^�$ +�H�۾�_�� + �刭�_�A��0(��݁Ĉ��mQm�{m��脸���4�y&P������q'��:��Ƕ�>����ŀ�73J���%�ٹ(o����K7>�84���P8�i5��G��ă���[�g�FF��F�k�i�.$[���ܣqX��R�U��tpTGh8LA%����E��<QD"���͉v^�X��䒒��B���\�_����i-��/)!��B"TLY���#��h����wV{b�^�I(a��I�{naϦ���g��a��ߘ����}�#H����
Rg��>�p��V��`��~n��4DR�G:u�;�VAI4�,+�'��D(��B6�:Ÿh�N^ +�j��Ԅ� �����%t�%�)0Y_15玄!�%"��:�tH$Pt�Yʲ��CD��4�3��L
M���rգ����?Xz��Żf3s��.���M���]�(���j�U�.��i<)��썗�(��n�]�ɒ�ڂs4{lQ����`g5d0�&S� �HɨO�5Q2 +DMQ*4�uANd�vvv*�<%{���c��� �b�BV���l2��T�f�J�.,��tJK��J���D��� +�������M�;�Ƌ�Ƌ +S��j�+�pJ��[�ߨǨ��p����P�-���x���Whw�����EO��QL�����ς���_�Vu�֘z +�;����`���5�"V�O@8 +��<U�]��&��s�n���9���Ki���z=П�@��5�`��zB}i�J�A�ʾѱC�Q�xG����;�<�25�����Ѩ�=���M���
5�(|��~�~^�-ñ<��#�;��b�t� �|{a���p��y;U0�y� {K�YX��ѱ�q�CQ��*�0�
+f~1u��r�}n��
�0�*��t��i��NSn�M~;��eJ�RO��T���Z����1��<��Ügh�(!����]����y���%���E^�4w����.Q�C e~m� 95O;�5"���x�����%��ɇ^���W�6�J�2|ᦝ�+������B�-�k\���v���}�쉯><uÇ�r��ׇ�g�lN��w�[�P����%�Z)�GJ0�L��Z��(̊�Bɾt:��8�-o�Á8�g����uVD�hk6/��0���cxPr�n$�U&��;�Ft�ы�d��bӼ�&�IDM3��,��%y[�ܛ�*US�� [d7�$\�F��A��Ph�E��i��=M[]ي_��+9��o�Y)��b�B� +y��~����>�$K��r�ɡ��ps���Ma*.%-���)m*Q%N-
MN�
aNJ\0��p���ۊ�1�e��ێ�}D��ErL.�]$�>A!l]��<ݺ0E��h�+[6��[O��J}Xd�aw$� ����Rr�pD��m68Н��;Y�B��rOVR��9��4���N Çj��T�u8uA��l��&$:C�r��Ugn���R4�M:#���C�~m �tz{�^O������h���6ď$���!Y���=^��x�缇��L{(�'�<v +!;��4����9���\����)�J�9���0����x8�j�K�bRN�Չ�8�\:��iUA��-͈��oYA���J����k���d�UI25�(��8e*A[��$o�`�lR�5��E�L$��`E4M�dP�5���x�&�8,��e
9�_�Xw���u:���Z�[�l7��k +�V����f�y�+���9�(0��Z�:Jn���$�l]5�P�|��f
RS2Y����]S��Y�ɉLY�7_�N(��c������+"�Vx��s�4՛��F�/��0��y����`�����p�P'"6����_�|m_uħ���t�@�P�XW�����j)AP����:uK��t�gȯƜp#/@�����S�p��?�p +IXY���r�Z��hdъ����U�9�k,�*��`���g�l�m��g�Hn�m
����y��[��`�d���olk�K��R��(���N��3�2K�ti��,�>�����"����nհ�D�^��V�ѬS@A�f������tPK��~��z�[��}���hf��Smhvӟ��0\`��(�W�X�;F�i�@�L<QF�r3n}�嶺\n��%�E)u[� +�o�l�:xn�>��é��uP1�*F�{z���l:��'�M�p�������!��̝�������
ߘ=����7�ls�o�2?4�� ���g����v�5����}
�b6`���. +�o@��X����%�+ +f +�\���� +���bM�֨b-�h� **ًh�{�Uci"^���.�yHjS��P�����93+�i���߿���~�̙����cfw��^�*�itZ6�DȏQ�F@v,�G�����kg�bi��Le�Q����vh�%1��g��8�C4�˾D1���W���B��#j��>�"Xb�5}�� +�Ds�9�9=D��c̩��5b|�9�H�1���*�r�g��i�y���5"?1LK�3�b�)+�"Ƙr�r�V�v^�%G�Y�^@5-�b�����|qvfjVf�)KT4�M.������� �kL�fqUN�9_,�~�ECf�9����X`6���Tsz�9]̒k�tsAZ~fu��H7�2� +B����1Zs�M9T�I,�7���M�+�܌�'gex��嫲L�b��̴�\j���zjȴ�9Z�� I��YX#�Mk2s����]|ZL*4�d�����LD-X\��V��tsN�8izX��Ub�i�� +�Ҡf�〈@�3�gg"��X��"Xh!/?7}UZ���#��d�Y\���I�ZE�X�+�g䡣DSN:��D�4���Qt*���Z'e����*+����&ɝE}�7��;��E=.��,� (Z +�ٴ/�3�5=wMNV��U)�6ɦ"I�o.TḪ0ɖn^M��6sV^?��nz7���YY��/�, +SM0(7�7��d),��0���&sef�9=����|-M@���,���2�1�N�<z@=j \WZh�4�+ra8�ڜ�A�b���zh�Q�h��D�3�[�oB + +r�2M4
�s�Ve#�&ytff!6AT�C��Iʸ�1�Y�n��L�'�N\�Yh��.Y�d��y:+�(릲��V���ٹ���Y@�V��K0�����R�x8��1�B�m%J�4�]@U�cC�43b�%7�{|�پ*?�(�4�#�e�9�Йb}��O�d�+ܙ����f� ��":���rE9U`1��T�CC���j>5� +����_������� +���j�*�\���
����UńWmR��gշ��[]@8u����ԫ���������U�e����V���/���N��Y����FN��|�A;|�v������h>Y[~�v���5��j�^�U�3�۴?�}@�p��T8 �AAx�l]Q����N���>�?��K�!��k����]OT�{�q�a�'�� �ƽ�[����w��Ž���W�o������_�.�r�3��ܿ�����v��w���@8�������K�]"��}�'��^zo�����_��W�˄� &�Dx!U@T�"aQ�S�O�Q�+�]�.��p��<�γ���D�y�������s��D<���K/�>�1��/<�zP�;�ה�B=���[�C�tKu���ti8f��p\�[�c�n=��~��f�fԼ�{ �˺����9���W���_h�t)������O@�&�Od����t�#��%�����C�a8�G�F�G���1T�q#wTuDc�7�1m]~Y�<�l�`�@*�L�9���u4�_4߰D$��0��Y#�="acPC<���g��x�� +? +z��d���x�/��uv�Ɏ�ر��i�h`ǔ��+�Bv\ώ/��v�͎�XŎ��Xώg�l8���b9Q�A��D��B_�?����#�s^k��s�.���@d��@@�h��4ȏ�X�$ "��x���iB&�o�CI�L������|8y�� ���o�q���� ���E7sZN��s�\7�����b�n1��Y�<n-���ƕr�\%W���4�ȵq��n^�{�c���l>�_̧���_�o�ϫܰz����"U)���.�5�vSV��ǪC��j�z�:U�B�V�I�M]�.WW�k�u�����F�5u��#�m�=u��ht/��F�i&j�ifib4 �Ś�E��Y�٤٦)Քk*55�:�i�yM�暦M��枦[K�:���[+j���Ӵ��1��o)Z�6+�&�`��r�B�U��z�{�O����Z�O���b���DD��2��#��l�L^��*�.���L�7��rV���2̓�wa_�F�H[�8�h1�r?�²�{i�L�x�t�����;w�أ�kv\�qo�Н���N�μ��w��١����kƮ�]����.���īd�\.1�䗔��+��������J��R���ҎW�r�U�W�_�yu�R�{����ɑ+���jA�u�����x� ������Կ\����,������������!����(�T^^n+o,���{���{c�.ۻz﮽5{/콹�˪cWZ
��j�.k�������>��{_Ⱦ�})�V�۵�f߹}-��U�*+fV+�*�VTV���Wt��������W�V�-~#�Q�7.�����7z����T�W�R�VWm����9�uh̡pƻ�9t���C��Z\=�zauN�f��7�o��9��8Vz�͎7�j�jk�k�595�k�j���k�:<�p����)���9l;|��#�#c�DI?����#Ǐ4��ȷG��N>�x4��֣��;�q��vh��ڸZK�˵���j;j���<~�x,���cU����J���\]�Bm +m�3��+���%{h�`k�}.���4��^W�W�xm������ԝ�;9Q��d���gN^��6̔�mP"qjũ��v����9�F���*���p�F+Ԩ�T��)t�B�)�L� +�Vh�B�*�=��)�3��Wh�L��P��B�:U����d��P�Z���Pž�+z\��]o_V�5��zK�w�-�3�B;�W���� +���� +MP�2��d���%���̀�|+��2��,�^h���s2����wu +U�]V�_+��ޗ����)T������pO�9�&w�����,�Z�SE�*�9�fM��Js\s�}�j�j��c f�p��V +g�2|ڴm��p}@7�C-�i+���p]g�}��=0o`À��
w�s�����^�^���Q�qУѣK�����S��B�t�A��S�����f�J�s�DzvPѠۃy���~��!�!9C�za���y���a+p�?��/���G��0��po�;�;�{��Y����>�>�|V���\�%�Z_/���e��}��ԍ\:r����~��FM��YBZ�O���{O�����U4�jf�O�����jZ���ǧ'�#�p+���]<?�t��]������G�������5����G��mG_G�=�]�������3�z�K����F*�9`���ݤz�S�RІc���e���������~�?C�d��������o�F�w%=��Ri��L����P� |���s_ +`?p +{?��Aߍ�oF�ӷ5�-������f}/��A߉�oD��!���ҋ�'Y�^r�7ۀ��/�}�� +������G +�� +b������+�8��'ZY{*0�U@�>8�C|(�&��0�娔�F�~�EEx��A�pd�7|B�?�������4�#���q(���a�vY$5�4���!�iT�a�Xe~ +�W4��ʣ�~�`&�>+˅T��,�}t���3Q�X�rÊ9����hu�4k`%��bXV����5dV2V2vL6�l� +����憞u�lF�}6�a?���
>ȥbX���+�e=�J7>� H��>Ԍ6���L6g`�,�����Z`օ�Y/�)s��7G��уŰ�Z@W�&%C�����[�@�6H�֛�3P��#1^<���#��
�o����bSF�
���S����L��.�
��R �5jϖ�*�, �j�a��Ն�Gw�M30�őJ���O���l$� Ŭ��,-��������lD�<�2��F�3��h6�S
)���h��f2#�3��Ȩr�(���Mg��E��������BԭC�y*��N����]����h��uYl>?��P��՝D���j+�g���I��X�}�<��E��RB�v�ڕ�]��^ٕ`������T�J��q:;��_�R +@�f`����l�XօV�h�!����>����ؾN^��{;:�~�+��[G�AX��c�h]��,����2p@-����O[��v���Gn��Ғ�#{μv��&�u��L���@,3zc��Z����l��P֎l�f����]��`��dk^_�+Y@{���gr���*Y.��9���o�\E��%~t}xW������r�VD2�է�'�I{����|���E�Y��l�Kvv��9[ Lj�׳#�; +�O^: �����s:��5T)���Þ��7�7R��G +4�)�x艭��F~jkŵV���C�~1I�$|�Iߠ~���Q��
?���gpT +����)��� +)VH�v�B�R�D����E�}#a��op��>о�y��<���FVozw�V�/���ܦ�����|�L�u��Ӟ&�:������ubD�������{ z��{ z�:{�N��=�F�:����� ��N�:��l�>�{�N�:z���s�aD�3���}�t��]�H��Ȼ�qȾbd_1������>N������7�rW{�r� �o?w�w?'�"��/}������ͅyow����f�X� �Sv�F������O]�k�{��F���1w�w6��3��Bc�4�[�_i̟)�ΧC�E'���D����3��R��\����-��B����#�9���ҷ'XkyGyK��=EPA��$&<:���.�:V�^g��3}C�����ى�r����и�]갾;s���.���s�7 +�d-�Xv���.۩�큑��>y���=0$��w���-���y=��9�^�)^��UZ���&���i �\�r�(����HX�|gWr
�L�/�O2������G��W���oG��Q#&aDC��%��3��UGf��F�j q'�� K�R��L�& I%iċ���`RK�a�9I�3�� �%�M.��K�I����s�_95�&���ӓ +>����d+��9���F���E�}�����o�o!;�?����ҿ����w�w�R}�����/ӗ������d��^�X���_'����RK�{����>yS�}9��F�
9��o}�x�'6A-h�����.��A/x�S�`a9#�|�Ya��G������?"�'12��c<�Z�,L&�%LC�^
Y����6!Z�!va�0�|H߽�J��#OH�u��p���7�[�_���P��\�o �x(!��p�vPZ�@T�X����/����R�r0�j,2����s��3�H`�+@���5�&3p��ʹd���?����� +�C�f��Ȣ� +/�����\�m$�K��2?�Q��"�b�L�=R�<����eȯe,�2���XaOfȳ�2�B�Q�V��^�`��� +�m(*8s��� +g�|�#�y9�.�r��c�:E��O�*�J +��I�zu��<��h���^�g�w�Z��nǵޱ�D��� +��R������:H�.���ͰhK�9 +k��mE��`F�uLlk����I�T�<;��776P���_�t���������GK����* �Cn����P�B���\��)�b|�3T�ΰkElm`�s�ǰ <Ex���3gq-EQ�y����`>�h�||���S��0�9@^�-{�s=�EP�2ci*|�@�e3��-�X��7֎�{Zꑗ}�n���V_�K�q��_�B� +g\Z�w@�q +�E8�����O��i�� �&��h�t��P��.<����F����o�}K#�+R�I�[� �
��7��{.����(�&�5���� +8�z�5�
�5��e����o�j�:��瀅x �B��q]B�z\ץ�2��P�R�B�)q)�P�b�C�#=����PF +�^�pA! �*%��:%�2u�2.�x���\�����>爃�c߹3�]k������~������q�4ͥ
��`��yd�@[ob��� +�G�{� l� + +�7K�)Êa +�֍g@tsCs��,ͭ�����[{#�G�?� �>R��<R�63RB��o�߀���uXUS��"Z�+�EA`��`�q�������(�w�C!��`%Ēw�J�+�Ө����Y��Q�QH�G��9�Qt�rԯУd7��nCBڈ"mlGT�ڣ�'��F�!�L�� �7�6���������L`���.�� +�~��- +�To�a�q����}.�w�> +���[��C��q���d,w
�[0w���8k������q��ΐ�EƢw�زAm`C���������{W�S�����Y��̑v��� ������Ӎ-��jF���,�/�%��d�9¾����©}wq�%Ӗ0Bo't����YwDO��X�Q�:p�0`�9��A��UX��zn���j�e�-��h�mk�p����dL��-{x9w���m�}� +o���nnF�Ž�x�;h���5X{�����9��Z�� l9�6ƽ_�Q��?�y����{�<1p�Sn2��$s܀�=e��<�5'H f�@�{�KM�w�7���^0'$��Z�{]E洁�șBJ���4Ys�@����>��^7g��� +=�Y:P��L
����'�=��w*�#����d�l@�1��y��g�yvA[��D�z�ٝ�q^3`��57\�07
tyR��l�1ϡ�8��P'�Z�[�=���1O���>��i���N�i`�m´'�l�ux������B�oಧ�]aٵ�<:p�S�� �xwR�ع�S��2��t&Y��{���I�C���Δ���d硡��4g��T�3kh�?����9CK�ݟ��Z�:aeawd��?aO��M�~�`�����`'�ΰ[�ZX���n4����2��p㚭���������jg)pU�,Z�ub}�u�7X�S�MΊ�;��~�ʮM��D��u�]����o�z���:/�'B���ܰ +�4
{c�!��9�)8{��ħZHrR��gd���i�b�α�k�.�<t��f�gc�V��-�vk�+�gd5������n'ȍ�5�Z�3��ֽ���c�]9�[�b}vk�k���9��{r���3���Tߘ�D���}�\�;3��=?��f��yc�9���a�?��'�N�}�ᆭɻ���������zy��'���ĕb��X#�[�L�e�y�uN����Q^���� +ɻ�_%o��:���@�����Q1�tՃ�CM�{�eԁ~�^A���!�#)B>�*�@?C_C�ѿ�o�_�k�h��(�JBuTu٩V�gh����~\�-���������w����������G�Q�mK��$�IQ�h�zR4*z�*�X�cJ*��O�c���FHh�����'BvR]!��Pݡ�P�-�>���5��я�~?�B<�z�~&��E���_���_ �mX�����P�:\EׄG�?N��M��8�}�5b-��ߍ����?������|:�i��{#�җ�$Q��锑;^�N�j�� A��t��ZRS_��:�zo����C��Y�9��Յ��ե���Պjm������oV&#��ω�C�8K����գ���B� �N�SM�� +�����.әHD�@��B�闑�~���P�U�UI�_G�{�����o�G���߁:�K+У�Wُ��P��}���cЧ�Dz����ԥ�XmT_Pw��j�ڭV��'���9����� +�^S�T�R��k�4�5���ݚ=�R�>�AM��\sXsDsT]���h�4%�2�B#�TjM�F��j5-�6�Nӡ.�r�UpN�wZ�i���4u����x5#�q�E͌�fY����\AK��Z-Ғ7h���f�&m�_�;�䠻��5��t��_-��@χP6h���W�Up9DF/�|2�I��T�S��gB�A�!� +ه^ ��IIFҐԐTt<$-$
�<���r<��RR��B���Hy7چ��pp�FP�Ҫt*}�Q�rJ9�\P.)W�W�7���;JC3bF��('�xf��e�}�Ia1L���3�L1Sʔ3���2:����Lcf쌛fƘI� +s�&��43�,��(���!o��$���D?�Y�+p�0��}��K � �Aφ��2J
) )A�GTĭH y[| +A�f0��:#���i�/ +u��.�w�X=D�����(���� ����
������Ӄ�K؏��k�E���%�XBs��.ss��L�ßG��M�X�~��^�2�}�U��Df�
ݨ��Sk����Wۢ?Rۦ?Zۡ�����:�%d� +�iϫ/#eG�r���>��+1��F�k/�BO����X_u��'t�'uK�2�J��L�<��9�&�k�Vc86W�-�N�nl��O_�?��S����fX��~���g,9���5u���o,�:I}�PV~^��c�0?3�*����d>}^����o$XַԮ�ۄ�i�u}Ǧ�V��֮���z\~�;H(�{u�]�~��s���1�-��v�g�s�[Ku �y]���Ц��뗉.$�W�.c���������Kׯ������K�]�ty�"��>Bw�>Zw�>N'�ߩ;S��;[��S�����'���6������$��'�g����������Y��$\Vge�u�|�����e2w���C�7�������;�������G��o�Y����67��G�z����ǯ����}�����-{X�@�]���{����Է���u���u���u��;7�q�X&PW]b��?��܄�c~��������V�N��w��=�O����',_w�~��_`�Po]F�)��1�����E��3�9�~�O�˯���{]a��_n�u��K��/Ǻ������&�r��+u��W1�O����P���Wۮ�_C"�}�{Ӳ-��ܨ�JnT�&��j!w)Fr��I�Rf�]�/�]ʯB5a1t:�!Y 7$�DnH~NnH~InH>�7$A���$h�! zߐ��7$A��7$A�[%]ȼq�pze�^=}�����r$�#��hy�|�<A�$�zF�H���3O_�g����C*?!?)��������y��I�*o�w�Mr��y�S�'�S������|�t��y���w�8�4O�i +P,� +�3�� +5��@\��IѪh�Sa�8�©�)F;��U,(�O�(����U�o(�w��R��(:�1�x�.e�r/�LS�Vp�5P��}3�!�t���!e��w��S�(j�Y��k�.�C�,T&?i��<p2��l8����U)V8��le�� +���|��B�,V�B�'Z���\Y�h�� +�j�i�(�� +�2�Vy�P<p��ҝ�4���v��g��m��4���`���s(�V�8��2#B�y�xƋG��ˆ�_ySut1OyK1Jp� g3a�v���ev0��=��>� �J4��9����(j��L�i�b�) 2�c��,I���3�ʛ�"�!�0U����o�����M�Ƣqh��H����|��XbK�4͌f��V���Ȉ6Ɣ�+~,A���(�ͪ�2G�K��k`ZTq��M�"OM+F�b�D�hU�+&Իԉ��*���KabUwԇ���)�,hq�u��P]�.��ru����թρk�w�J��EV^����c��ԓ�N�m�R��B�oB�[ІNQ�q��>��qv��f�~Y���/kra�amKW�2�Ls��a��&�d.1��*s�Y��an��R!�H��&���
:���N~�TI���d"W<�gTi�tU�*[�G U�P������
�P�TgTgU�{4X +�
��Ӎ��Q5`�Q5�Z��4�U��SeRYUN��UM�~��Q5��ųR��X`n�"��z�ZR����n�2���� +�j�|�����n\�o���8�<S��T�6A���s�U1�M����-&��т6M����"Q�k����<�T���V�=�g�jm��AۤiQ_Ѷj۵�Z�֪��:�>��v⛇�S������X��j�L�o�U�Z�����J�K��~ֽ���(�m)����X�Qi<� +ʔpe����v��0�y�p�c���k�����x�(��`pQ�g`_��u+��/��x�_��P��f +�^�M�J����g����Æ�r~���*�����/��ٮ��K��2`�����˼L���89ݖm�ק@$۰�n�� +��ʊ7������c�_�x=�ӥ�Nd�M��3��µ ��Y�=��)57<�zj���h�ݻ6 p���e|\�@��Zz������O��@`�e���xjBP��fy��, +ԟ�(��f≯���٦��e��m�}*� +�l���2��P�L!ۘÕ���c~�����VF� �N�1�q�9v� �˚��
�ʌ�8~~ �o��{g��tY��o�ef��8�e� +*<,<�� +�ս=�D#�& :��t
p���q�t�"@ � H���&q����|�x� +��cb��A�b��o�����j�C\'�GO�_��"���T���ϠO��ߏ��!�lď#�Qr�D�J���z6�����;~���QT4���և�A����8��6��c����7X\枯�_{p�9�q,+������ +yZ�cK# !��F�<�+�"���F~�F~�)�����U�*�}�X�o�-��7�����
��#ލx퉌��EOG�Eơ���z��h*��'�A�m�^l,}�> +����Ba���|}��b��Bt��?�O��F/ v�_�Ja��w���]�
}�|��)��ϡ=����>�����p����(�|����Cpi��_��n�G��o�F����;��;�Q"J�2(1��H�S��y�e�L�e�/Q�P��,�Q�Q�e�1�1t�z�z�@��M��� � �C��"�nD.�I��%�I�I�G=E=�^����F�p�h@���IPFʈ�QmT�R�T;:N]�.�B���@_�:�NTDuQ]�U���F'(eB_�̔Sʂ�NY)+*��}�rPt�rRN�W��r�R�oR?�~�ʨQ?B�������z�z}�|Ǣ�z�z�&_��S?�~��M�G���P�@��k��OQ���w�W.*�W.�K-P�,�H-���/�J���|�By$�RG*"o#��=�q�{,�#�����$��\s�%yw�>"G:���9�#9�>"��%�u@���x}qK^7�9�%���<�%���dn���<_ڂg��$9�~e RY������y��{�
�ӹE��tm�'{s��+�Rv�ù����s�*��E��ȕKr���\/�\Q�H<���ƒ\y[�<0�����2W~@��n�땀\���,��Z{���9�H� " "A���Y�E�A���
"1�Xb(cQb,��Ϧ�k�5h 5�RC���p���r
��P?c��^k�k���3�.1������17!���s��Κw���ڿ�}W�O+��7��;���}o�9^��m����{[��}o���D��W��(Eb� �o�����:.z���:2z�}����_�
� +�B������=��n��m������ԜvE^{���w��mo�b���ۮ�K|:�-�qP�%>ov�y�ϛ�B/�y�{�W|���덞7/3�t�t8�98J)�s�9*��*+�g�|�����_�_ҽ�䯈yM�&��#�%_��]6�&a���0����!�CVGd+��7HE�F!��nI�+�Ĝ��z���S���G�C8B�/9R;�XR���r9"-����g����8�8lݼ}f�p&����۾�u��$f�啘 �G�#�4;Hgs,s�|�+���ʱwR$Y�:"'E:�k���="����X�8�q��q�!���M�<{ݴ:�4/9����L�i�t�{|�����n����n�sn�nd[D��z�k��^�v���|����]�`{t�����n?���n���d��h��s��1��|�41�G,��c��:9���R��G%8��+�os��ߖK�ۍ����_>/Bc�E����������I�O���[��I�(��H���@�4�0��K1���&����Y�p�0?���٫?f�f�Y����<�yB�=���P~�~����o1Y��#���~�~N�)�w&������7���.o/pr__�Zln �K�;=kM2����W{;�'{�qd��9-�"y�v[_[�pj3<mo�6�o�S��Q���,s2Y�g:��]�X�L�#��
�U2G����`����j&
J!}'�N�~x��B��h�����x������5z�L���N��
e4�%7Η���-c�Y횐Z��ypg��Z�� ��ᙷ��Nk�Fv�еF:���ϝ_-�3�c���C�������ӝ- ?˵y��=��阬���G��\:�R����'M,�`m��F\�� �;M��6փm�^lGD����Ͽ�ح ~�0h��Ք.yhx?|���C3O��UE��*����@�zp<��tx��[����o�V���:`��}����-�dE��R+Q�'7J(�K�U�<� ��j:BU�;/;�Z��j�K��T^V�j�Lj��)O�g�Z���>�Hd-����=#���w�_��%���B�V�=�9t�8'�`��g ����H���B=4T9V�W�K���2T�m��A~��r�<�9Gs�,�#<أ�Ǯ�v9���C~e���R����fQ���3�G}�*�aj�HS&�M͕+t,ԮȨ[�ϥ���p6��د%i��G�����舦t�C#I㫭�5��d7
��։6m�9�Iݺc�G���'��v�ww�.�{��X[��o��"D�A�/��TRY����p�6�C7����Z�����h67ә����xh��l� �W +?�%~K��_�� +'�vj~sh����V��v���]&�v���5u ��AX{��I��n��X��9w��q��$K�tCw��:�Qt��`>�R��ʝ�Y�k=��t
�� ��^�H��/��<�u�y��R�����`�8��ͤ��t4z�|v����-��V.�>���k��F=5ǯ�K�]�Ι5�����_q��t�� +��_���5"_��<<���3�C����(����{p�t/�wX�ܗ�b~��Z��ր;0"�cDbD��#"#b�6.�r�e�ё�ut(�u�[�����"�F?�L�t�
1��@<J�4&��h�9��l���e��:kM}`&�i4��zܴv�q��h�9��|J�zxi��t�C9�ل�5�m�˸f�Zb�]�Y����&s��b��3�S��8d4 N�*��<�f�QgP4F� +�pW.c��f�'�A�L6:�r�1����tt�j��h3�2�M��N
�c7��r7�$�͠U�X$$}���Gq��� ��c&i[�
��0�1� $]5n�"�/5:�W�� +�q֕Co�O/��A�[����:����nԻŗo��[tZC�fҭ���J�W�t���a�Xd���4"�B����Hi�4 +�b���uZqt�F�H0�\9�V}�~FKZ��7B�HW��G���A�͠�4�[�zզoS�IMe��gu�^���k�q}��s���~-�ir��ڭh�Q��u����W�Z��Z����3��K�2�7M��h<�-��ח������RUQ�z�>�-O��S�����'�j�N����T~M�t˵O�T�*�euEwk
U�j�9IglL�u\]tEB3�w�n�f�ڣ��|.�;$�Byu���1W��u�,I�Bmq�5V.�t��u,�B��-_� +���F�\C� 5Y�r�DyE� + �|]�Ri��t����%�Y�N%�h7����4�Ue��j��Z�L�P�U�����R�Ď�"�AsŢ��=֞�,�5r��ϩ�z���Z�&Uҵ*2V�j�r����;H�@.w���KԨ�2HN�s]�h��#d�[$��)��?-�sY��%�Z��p��Eg\Z�4Z��{/(o���ٗ�ؚs���Q) ���i�� �<�Z��;qƖ�m�+�XCe�@�6Y�q�5F�i1t��i+]��iA"_�\kZ��bW.qC$��E��R�Ц��� +���L���h�b�ھ]�����u���s������k47�����ޓ47�[r��c�Rf���^=��`�슄Ȃ��ճ�f��f9�?~�쩳��W�W�m��1������OM�|`��hb��W��? n{���sq
��Fϋ�>~cA���� +��'�ό?/��`|�����8�\9{#'�;�t�����5.��1����[�A~9ې� +��ڸ���j�u���?s�A�� +R��`S��|=b!_�#��������gl�~�~��; +gԅt�me��w��o1���k�>ϳ��y�m�`��_�+����U�g�+�-�_�����t��~w.O/+<�QE�\�X��+��zZ��� \�4��"#���*�x��w�[��w�[�����dz��x�y��#����E� +�73D��>皧��yxg��v���N �8`}㻠 +��0��[+gT�h&��R��N��N��̲�+D��������6J;�zO���$֑_�����a+��+�x^ �ya8�"����!�1�W()���: +����3*�:ܽEI�/x +wyaY[��f�emea'�N��Rf;����ݚ�G��M�:c���� D�
+���8�����VJ�ǿ��O�>�LF@���K�g�c2b���3 �3t�gn��%�~*#`���� +�O����!�����no�G�}��u��l�<G�E�x)�"�c���3��%�"�J���L~��z;�+�)~Y" <:�-� ��@�r������m���OQY�"P�S}NC�٭�G�=<��p�����>�H�������i���"VF&�r����a�C2��
Ho [��,m!Y,�Y�2lc聴U�q|�N=����0�u�{[�v9�b�/�C^\>�.l2�M _W�������~-���J��4|����ɞz(4:�rp3a����ѩ��L95�>uE���iW�lL��/uI辀�d36,&�&�&u)�RN�݊�}́w���kp3�a/.���C�����i١uC�SwX����r-/5_Om�${j��])5!��.��?�/
N����>�3-:�����U)'�����F��M��ܖ:���K�%�/[�����._��-�{q�HY?d�<��Ͼ_Ji
��r-tN�؈|�Kr[�k{NFm�����=�=�1l}�3C��� lht=��sB"��%�� ٛ\��)$/�P�ސ��΄d�D�W�1�������\Nwo!5ݾNR�~؋�G��Fʙ��^v3�zpTxuHVxuJF�H:�����O���J]A +�ptއ_�p='��~�gYUH�B&\w��:?C�ֲ����v�u�gp�W,�]�s��_K��J<3`w�����v����S�V�8�a)8d�I|�����:N��O�|�dyq�HjN:��Bǹ�U�;wc� �8%]$핤+_i�+�5i6a��U�܇s���S��k�F0�߰�ؕ�r�I�y�-u�Hû�ژ�2������F}��eq��;9&?��xc�\¹�W�́w;�b�z σ#&�E��*`,�]��ݼ��x���;n`�q�u�xc>��_���1"�ih���ok���:���"d���2��n�hc���-�+}"���UG�F3�>لM�ڼ��ț��iu�d�h�հ!�z"˾Q�ۄf�g4&w��װVX6\نv��}Du̳V�`4�p;��U�v�m��ۜg�zO���Eȟc�}uy�<Ti_�u�q��y1p� +��#�z�[�f�>͠����?�e�d�<2,y�A���o,��d�?I�(}�t.�ec:�հy�e�Ҡ8}�dc<nP�[�|�Y�6�E������OV�a5�0U�:����J�OI���}��J�jԺTq��T����T9D�#�u�c��2��^"��6�;���x����1�f�zH��p�I>�1��y��3N�(R�d�*�/!�|��YTϑM����U�.�l���B��1�%$;�k��"�F�~�߄�/��>�����/�G���i��r3�#��B��c +d#���e�w�k�����a>�oB���f/��[Q�H�?�{`6��� +�ȍ��� +{�-`-��<��zC��\B5xע� ����z�`^?f;\]�|M��c`�
yWuѵ��0Q����_�4p��F#�=�`���w��-�X�0ؙ)��W�]hm_����f���e�#P� ?�
��4��m�~Ʋ�~ ��χ��1�Y�w0��a�~�s9G��(k��q��oc���c�v���!�YD�v�kY�q�"�G�x�u�jU؇ o���=�6De�]&Z�]��p0?��~� +�!�/z�(j�ֽ�;�����ǀ���&-����'�CJ|1_��ƹD�j9��^��e,確oCݷ�ݶ�%������i�<W�;�m� +������x癋心��g�h�'�+�|�@h��}6J�R~�gYhy�O��� +���9��������`�:��3ZO�
|+J�D�� ���ou�?��6��1k��C)��F��Z��z�L +���V3�q?h��3v�oT�|��o ��A�;�c�>����<ޅ�яt&���Qa��Ĺ |�Lʗ�h7��v��~z�M�X��u0[�����9�I��僨�i� +`,w�&r� ؏�| ��i<�. �dD�^�D��%��w��vj�W���=1���O�.��R�8e�q�=�Yo�h����X� ��<�x^V +�7 L�'�W�7���� + +�����!�ҩmՏ�x��A�kU*j�=�Ͳ<��\:��\#�m�W�����g3�<x�r��7q�繰)�'b� M�d {̲��2���ż���Yؙl���M����f�0��
�gh��t�&�!o6jd�s�ꋼa���oF-�q�%��}���3�V�DD�(k����cF�nj�'��%�ɨ��?�35�+�m�iK�$�hF�-y-�}��:�|�51�Ob$H���G�eּ̾�Hk��:���Z���<9���E��i�T�{)?B����¹�`���z��O� ���hV�b�b�@$�y��d�J`.�����հ��'>T�S���;�3|����%� *��R����2㳇��͓ܒf��Ɍ>��\`ٸ�Q���U�P
�O_���r�s}}W��b�L��0Ҍ�vK幠m�|܇HZ� +�5���;�2�lj���}�+��<�rM��l�m��1�/��ћ'I���s�:�<��y��\���0�\�O� +�������q�ò�� +#��}��]�O�R�)��z�nw�a2��ww�R�����W6���o����X�����.A.��BH���q�o� �%����%�/��)�D�$�+#��(C��ve�X��y!
��,J� +�ց�����Ҙb����^�ȫ�ޙ`�Cxw�Fa�} ivB�>�I���(U>�\�t�Li�uF��4#��f0��"n;<�O>Dy��wܶF���un.�u����a�k��>s�[��|{T,�ԱX9���2�l�~�ˣ�%p�m��ǂ�πk�6����]��m_��^Hk���N �F�1�c4 +� �.�����l��Vÿ�~פ�
}o����]x���������^!��~u��t6�N@�)տ;fw����b�n���r��l +3gb��+M�Y��M�i�T�>ڪ�y�\bW�`2VaG�� ��O`p�.v@e�ޛ5@]ڢ�K&�3K=C������.sk�
�{�+8>��co�q�FJ�"�W7��Ѳ����/=�=E('o +�?`/�}vn�z��R��çg�>ן* +�egغ<�����]ܴK�ђ?P���F�c�G�7u:ʞ��0́��p��9R���u���ʞ Lը�ݫ��^G������ܪ��BH�oA�C�QF�Vg�]���J��sW�Ł��lk}V�#��f� +u�揀��y��+�����M��u��ݴnc�a�\�o�6B�W�~��B�#��R-�_Dz����q�w
������7�p�F��^�Ou}�ܳ�� �����k�d�P;�::Ӈ��~���g}+��#|n�>�qþ�����Jغv��}��ݜ��~���=�ʮ� +{
p|�`��hX��{��Ǹ�f��XM��,��LA����q߶�Qcf3��c����]�R*l|��p��H�N����ϸ�;'�?�{v�_�6F{a}��g͇�3��%q��� +x>ս�o��< +�~ +,��x�Ǥ��98�CzQ��e`gEZ*��cW�c�9y�=6���1��1���Ѧfi]���$U?��l(���M����3ЂA��E�D!�d��C���О�H�_�{ +U�23�{��� �H�L�ԉ���3A�(��(�B
� u�ԗJy����E+�nD ԅjR?*�P>��"U�u��J��?���e���G�3Ԙ�Q7�MTO�c�-M1*@�5�6��:0�l�B�Ⅻ��K-�-%RO�Ġ�� +)-����Y��P�hצi�*����<�zԒ�Q|{{0� *AE(�rR}��[ѳԑz��^�ΖT}��G��==O}T�C襞���4W������>p�yxxxx�g�AC��� ���P`8� +�p0pd���^`�Ӂs���ˀ���ۀ;���c��8���^����ܝ�>��3���3�{O_n`Q`Y`%`�~��
���� +`N`~��P^F���^ll�4Dc/`���衪|p*p6p>pp�A=����6�^��aâ+���s�K�4`�p��=`�F�J�ޭ���^� +�
�Pc�ߣ�A@��c��Z�W��H�*�J!*)թ�4��҃�J_j*���F]5J������e�q��?rôve���/|�<[�/1�ȔZ�пad�%������Pʕ����f*��w�0�!��ԵB��~>��K�4�"��\�J�%:�`����"�����h��E���mOɴ�v�~:J'霚i�4JF��c43���^�@c�1�Xh,3V�m�n�q�8c\4Ҍ��C�4C̜fA��nV2k�
������k�2S�-�N3�<f�6ϛW�t�>#`�Y,k�ڳIl&��R�����c�4;Ϯ�tv�G��/�/�/�W����O�^�d�p-5|ᮛ��b��F�N��<u�j +�)������%�(�.&�E"E�'�
�g����v���cϷ��;���UI2�,-k���1e/9�MM���m�������E-U +�6s�b)n���p�J�Z;�U���f���Kl,q��0��v:�2Jj��/%�TK�v�Xj�����[��떓�;�sO�n�w�D��~_��P�s���Vh�=<�U���s�|+<r���n-#�xn��l�7rt��*U6�nT���QS�G��J�:u?:gtxtLtb�����K�7F��\�*�Y1�b��#+έ�\ѝG���WZ���κne�[��~�w��*����t�ؾ����!�+?�؝�'co���U�k70n\܂��Ըsqw�E|X|������s���usm��M��1����j%�M�L�I�04az�҄- G.'<j��ixӆM�i:��7v��n���;ؼ[���4_�|{��ͯ6�h��Ex��jf�xh���-�[�T���ܸ�"=����\���}����[�qym��ֿ�%�M��t/�=�m�ۍ�&�s7�n�^O���,�l��D���͕�c�����x�~N�p���7 +�q��Gf�a@��@b ��FFS����x*��H�SӨH`N`1�~
ܦ +�r��T1��*����TU�{���/�Su;���j���|���_]�%�*,֗�����^'�y{G5o�OCi��0��{�U��^�t�>C�7���o����w�+��6�U��p����M�w����������W� +��Z�n���=p����M��S����կu*��k��p��������J�^�?�~���G�������:�1�)�oT�a���cI��#F���k��z̜���c���)���i���=^�x����r�c�G��s#?y���� +�&[S���?�b?�=\�|v�+(�����Rm�ri�4�`�����?�I�t�%�faz�V1����7��Q��BYY�"Y%V�MPw���T6��fsԝ���-a��J���a���|=�Ķ�l7�����8;�ΰs�"��Һ�n���ۼ�����xވ7�q� o�[��9�<��{�� +�B!l�FA6��R��&{�l6O���fo���e�Rv�>{�r�ه���`+(��}L��'���ֲ����c�(��}J��g�3*����T�}���Bl�E��>������ eG�*ƾa�P(��}G����{*�~d?RIv�]P��*Ů�kT�]gש���Beٯ�W*�n�[���T�G���ym�����������cxU�<�*�xO�yO�*�oAUyކ��\�3�#�H�yޅj����}x����{��|0Lu�P>���|���(����1Ԁ���!��'P#>�O�>�O��|*�J�|:�Nq|&�I�|6�MM�>��\>����|>5��j��Ԃ/⋨%_�S+��/��|)_JmxO��|_E������)<���|#=�7�M�����ԁɿ�����:�� +�B}�u~�^��_�/���P?�;����?�4�g�Lh1�� �o�i������X
�rX9�%+����Z��|4�*`��V��l��J�+� +�W��Vi���*K�Z�V8��"�z͊�"i�mE��V%����XUh�UݪN㬚VMoյ����U�&Z
��4��du�7�nV7�l��z�k�5��?
~Jӂ�hzpsp3��0h����,�Md���6�)r�4G�y�-Q@����(B�DqQ��R��-ʈ2�@���Q^���"JDѻ���L��3�zO��h��'�����hDKD���DSє����%}(ڊ��L<'����y�<%���+�=EOZ)^/�G���G�� +�.�������A�KA�KC��@��B��A�á���P� +��Hhc�1�X�X �X�X�X����:����&����6����.����>����!���1���m��6�C�@��M��͠�͡�-��-��������ʵ��������=MkM{ +�� +� +� +� +� +�
+�z�z�z�z�z�z���/����?�j +�� +�
z*4*4*4*4*4*4*4 *�Th2Th +Th*ThTh:ThTh&Th�Ҝ0z�g�X����-�{�}�������}ξTcb��};e���'�3��{�Ҝ;Js�4�x;��;�n����!|8�G�e|%_͓�z���p�������V������������o�l��Y6�Yy���X�x;eu�zX}���g�6�/���D>QH%EQQT5D�@4MDs�Z<+:���-�qr��*g�r�\\-��z�I����<!O˳� +�cg���������S�3�U�U�Ṳ�=�=�=�C{:A{:C{�@{�B{�A{�C{z@{zB{zA{zC{�@{^�������������������y �3�3�3��2�g��h�HhϫОQОנ=��=�C{�@{�B{�A{�C{&@{&B{&A{ހ�L��L��L��L��L��̀�̄�̂��o +��F�$9w��V1��<��*���X�+K+K>��/�����ȏVX��~��Q�$��ᴟ���D7�a�&�k��F +��TX�(K�T�jbwX3��J�]�$�rV��(�mM%�ױF*�g�R������B��sݦpI�R��"�GHqR|)��_G�[���H� �5F��56��e�ϲ&dY��IY�����,��?-�j�u
��4�'v��?�d*6Uܲ�RJB��}Tkmu����`X3�<��c������-�c�����X
C��*�/+����H6V���w]�7��qW���z_���u��V*�X���uYb�U������)���w�e�=�e���Z�r��*ó]�Z���]�d9YN��q�)e�y��:�E٭�VS�m���R!����:X�S��` +�>fR����LU�.����s�5t�8ǩ��s��d7���r�QΆ +���֝�����z�[�8���9�L3؏�?��4p�?Y�ګr���C��e�� ʚNs���[�tC�o�Uǘ�O͔�F�Q��Qe�j��|<�:Uc��6xg��ͪ���p���0�Q�4�&�����O���J�՞��|�[��{|���?�Z�����<&x)��h�;�c���#3����/�r��HCi��c�bj:XZL˞��J�wW��Y*��t�B��П�F��.C ��[��^
���YO��\��\�������N�0����^}�b�z�F���E*7�����{�"���7�?.# +&�ԕ� +���\7U�l� +�<p~s�9�;�����*=�W\�U�T��V��,�quE߮��}66��|zQ�,,�Ȣ����e YR��R��,#��r2\������Q2ZV��deYEV���3���!k�Z���#��z��l �F2F6��2N��&2O�"���Sͩ�6�Sq��4�#s��2��+��2�����ΰ3%IC2�\Z�/2��A)�-��.sȜ��,�g� +��[���~`:�)�P3���(�5{���=�k������$�
{�=ŞjO���3��,{���=�~˞kϳ?��������:{�=�~�~�^b'�o�w���${���^fd��?�W�k��'���z;�^`_��ߵ7��=������jo�7���/�]�n��[����}���>k���/ٗ���
�7��}����fnﰿ�w�{���>���j��_ه���c�q��}���>c�h����W�kv���}Ӿm߷��t�W��}���^��i�fYz�o�Qm���Rc�-umZC��6u�U��T�Ϋ�:]TG
5��F�uԢk�M��Q�.ݧT��PGz���j�fR#�g�(�Pjl�lk� ��aS�1J0r9�����E͌<Fjn�3�Q��Q�Z��B��(b��F1��1�ũ�Q�(I�RF)z�(c���F9�=gL7�S���X@���Bꨟ���bc1u2�K����XJ]�e�2�j$I��Xi����*c�0V���PwpQ\����Rv�]P��b���bK���
�(�R�H��D�F���P��(v�7DEE���أ��`����|�̇�Ξ��ݻ3��[�Ό7M�ićf��K3i&Gw�ď�;�?�Mw� +-�E$�^���Tz��"��;��F�һ�z��#������rP9����ʿ��U��~����� M�;�or/��-�����3�ު�U�����Qk�R6b�D��cm��Ű�<W���sW����]S��)୩��W���no����ux� +�o��џyo��������4��w�~�q +�ۜ6�mA[�ﶤ-�w[�����|��� +Z{�=�h��#�;^��dk�{�!U-A~�,NՖ���\'��[ɐ��f�Tm�i� +��ٶ!l[@Z@�,!"+�t�эЍ =0���Z/L�S��D���&b����A�WUG�?s�g��D-HSQk3�(�$�ek�kJ�1�)��g��q�� \�wΉc1Z����B��ᑰf�����Z[�9��&�L���C���>�?�����_sz5p��;(�2h�A��=�B�������3J�:���@F#�4M��8��$�/��X�,��c@@^[ȟ���Š���%�W�����R~��2���o"��|?�qdl%� &[ +%��N��� �2(Gn�n�Q������Ѡ�1ڎ����6fr^��Y�Ӣ�1����}A}��@���@�����r����@�@�x��� � y0h0Dp&����'%3y}1=�?5��'�gR�#�g�$y$h$�z&�%�A�
�J=S��RϠ�?�e��H��ګi�з��`�efNjƹ
�o`��pe���f�XR���S�g@k��~d�Ld��Gi;�@@2�'�_�V ���B�L&k$�,.�͑%��ˮȞ���4������z�C:E:/t
t[���u?��ݤ{L���=#��z}���M�[���wJ�Xセ��������4�e��������r3��|����<�#SX(:*�*�k{��r���R���E���LQf+� +���
F��l08bp���J�j��W��"����&�U�G�����x���DMLx �r�����!�C'!�,@�@B"Y�d��,B��" Y�d1����$K$$I<�x Y�d)����2$�$$I� ID��$QB�#Y�d���D��J IB��$IB��$#I��$)HR$d�uH�I�z$둬��T$�HR%d�
H6H�F$�l��MH6!�$!��lF�YB� قd��lE��V IC��$MBґ�#I��$H2$d�mH�IH&�L$���v$�%d�HvHH�,$Y��N$;%d�]HvI�n$��얐=H� �#!{��E�WB�!هd���G��~ 9�� +� )��B$�H +%�I�" ����kr�u$�%��HnH�M$7�ܔ�[Hn!�%!���Fr[B� ��䎄#)FR,!w��ErWBJ�� )��{H�!�'!�HJ��J�}$��ܗ�H y !�<D�P�Ȱ>�a}*�ԧ��Õ=F�%��LF2Y�`{7�+{��!�
�Õ=F�%nHܐ�I�($����w$�H�%d4��HFK�$c�����H�"+!H<�xH�'O$������x#�F�-!>H|��H�/_$�2�8$�$��? �G��_B� ��@$�H%d<��H�KH� $A�$I��� A"!�HB��JH�0$a2�$$$I8�p ��d"���$I������K�/��( �H"%�G��#����x�F� j-�]�5�RR�+�FWb�����J�ѕX�+%5�kt%��JI���]�5�RR�+!9�䐄Fr�a 9���#��K$/%�5��H^K�[$o���&�W�Õ=F�%O�<A�DBʑ�#)���H�"y*!ϐ<C�LB�#y�乄T �@R��#�>1��q̧-�u�^�P�%�ў��Wvƾ���Lđ��7O�~��o��� +�#�S��X���{�N�p�NƑ02��"q$ǩq��p�p�p$�p4�pD�pT�pd�pt�p��p��|^�cQ����*0Q��so@(u#�Ėt%Nă�W�_ջ��|r�< �f6�#~ow%V�`K+�̕���Jģ_c���r-�%�<EO1S�k�5kW4kW5kZ�\��|_�F��S�4k�5k74k7�Ҹ�i<Фq[�;��b\�*_���H�֪�V�k.��ѤV���Y����P�6A/K�e@�ɀeBGŲ��b�vC�����gQ�o;��v�j��䢅�`�<h��W}��8$�7V����G���z��lj�Uۚ����գ�5V53�����������=}p�I�Mʏ��#���y�� sdN{�Md�#��D�QB��*�����f�ٷO�3 �F��z��%V'�J>o�>��;��k��$Ă6]����V]��K�h[��A��i8��؋H1�[P7~մ��x������Uw��~�yE^іt��Đx�C���k-a�:�./����~�J��'�!��2��5ޏ�Rb3%�@OQ�j+/ei��_4N�9�q�b�ea����xTm�Q��@6�[��'�b�VxbW����5g�E��M!����X;Wv8~Ιc��G`��"�H)��c�����=G�]�yTh��1=g��ij=Ug�4�5x� +jo���V�}s;?+�V�Ɵ�@s�cD�>��N��J-�=�, +-^�H�쭹WS~7��ZV�����Qe')N +�w�@�#l�����Ѳc��* +} �CQ���q���ƠP/�1�s�5wHp���Q&|��x<��Sa�����0LESQb*�� +���L54i��?e`�U~�mB��x�DVu^�#0Z����M��9UgW�@�v��)�^�_�m��6���4Xr$�SP����k�k&XMh]!����J��N�Xg��#:��H�!�>8\b��ԅ�K������Uj�m�u!��_K�Pד�Ԭ����?�N�*�)ե�bi��fB�� +�O�C=�e|9��8Th�C����JCC�RM��u͉��O��P�ǫ����u�:L=A����PO"|g�a�k6쫯�p�k�f�3���?j +-k�N�Z�)8����a��# +aB�0M�� +qB��BH6i�a�pH8!� +��P"<�������@VWf&k$k.k-5G)u�B�E��Q�hɥ��PPk�0[��������u=j*�ԍ��P7�nA݊�������
5u;��,ԝ��Pw��A�u?��lԃ��P���@=�z +�4j��\��y�P/�^B�G��z�*jj!j�5��7Po��B��z��.j �=�R���Pr���ҝ�:�����/���BuG��cQ=P=Q��|��u��?j�_��PZ_���ND�@Ŝ�#Q1��~�GS�GS�GS�GS�GSy�0�ϣ�q +�|!�'��OQ��>G���h�U�(>�� +�z���C'������ +�hb|�����^���ԁ�L6n}�qg�����O�W�{�c���d�oz����YZ�{gE�j�^�;Gҹyg�(�F$�{By����z���O��Ŀ��v�E+�g]���*m{���m�7�L��~R���.�ʻ�J��6ңU����Z]���u�T{DGl���Zf*3�R�x�����/gԩ���cv����5l&3Mg�4�{wm�C��i����d�e(��4�
����%����?""��v��Ã��k���whp�����.,<�g�w��v��ȏ"D(���q��>8�����A� +Yߛ~�W���㑾�%=�F�Oy}�v�z��T���k�ń53��>�gn��6�_���QE�,��|h5���}�l�r� +��:�����������r�v�Ŧ'��M����w��7;�����Y%��̋_7G��Ɇx��*�)<۷0�֚��an,F�|q�yK^���
L��6
���\s\l��6Uq�ym\ +�T�� +|�n����'c'=�Ua�te���V6뚝�64qF��i��
ڟ��uս�{w����?�m��^?��5�p6u���{�����
��{�I�"����e�w/�گ����g��4���uE�s�٭�G[,)��k����]Lr�#��EN9_�/_�zB�J�w�~�~rox>%��W;��]��;���u#\o�d}����zƕhې���> x�9����6Fj߸�7^����B��9�ש��t����)����t0{kI��qV����X<3�gNF��0�I^�i����!�jc�n�Z9� +��2(�hyغ��C|l���������Z���� �S�W�ۻ�E�6|Gl{S�F�_n��y��p�r��Q'd;/h{��/k����^����?:�������)Ӿ��iVdT��Nl1æq����������$~jj=��N��%K{}p|ɂ�gb�V6�P���Hɘ���A�Ձ�����߿1�����7��i��� � +�t�~����k�^{t]�m�gী��J�6��4T��x71ZW����m�o������Nж��ݡ��o|�^�o�{�����&m�s�qq�i��=Xr���a͆���2sjn����K��#D�:O���,��?�����b��d������3|��%V�;��l��?�~��Ϣ����mX��i]��fι���^�_��b��,�
AK� +[�tpΜs�~K����v�A���C�
b��/G���O/H�z�$a��|��{�����p�#�o\��Z�۔PzYw怔�fm���D�v��o�T�
���&F���=��98a�v[�)�l&�[y盟�${�]
U�?�]���5���7���,�5�{+쑍+z�aGX����7X�83�*��\(Ό�������^<����M�$���8╞����������~9�.��x�����7�
�ۭ#&� +60ޚw��{���M� ���;�di<t���=K�;�m� +��
霴S^̿X�
}Vrh�B''ֱ�¹ޭ![�>�
�:�����f��n�4�Û��S�[��ꕄe�9���_�7��*?����e^�=L�[�(�3���̀H�nm9ea�>�V�9����(�[����Ovh3f��'�?(�����䙘{`���(Z_a�οn����q#���=�m��s�\��J�2�ʛ��[̦z�z������ds�3�7��P�n{�B���������M�:��Ьn�He��1�z�dgee��Yk�iFT�k����c���i����y|��㹶W�lgj�ڱ�X�2��n/_��u���_E��y�����_����m^r��ΐd�
�������/�A;*�ˉivf���
��úYm�`oi���2s�wNqѹ��zhZ|fꔭYI�&�_[����l7�$����p��Y�M +�4rfų��o�o�<�99B�6&�ٴ��>9ʽh��E�ۭ�a����3��~�����62JEp��^{���Mj��f��͵��+l�G�!��6jQ�����
e6� +[��9�͚���O����5K�d��裵������zFK2�oNBq�{� �ąD�0x�vOX�'Q�-f4�Sgu� +���j�Y�"��dtR�7�����G7��K�����K�UO����Nqk
*^��x�覆��d��}�����D�K���.;q�Gl��'�]j��m��QC�J����{��Y��b`����Z�|1�����\��g�_ر�n�9ysn���a��Wx��5M����w��G������˻?�+8�'�PUG]�R��78a�h��nii�ϼ충c���s��?N��e�Q6�KN�-K���w�����~�~�lv�{����,���q���:�~ɯ��g��NYMWH���za��A� +"����D�B��T�7`� +endstream +endobj +520 0 obj +[0[778] 3[250] 11[333 333] 15[250 333 250 278] 20[500 500 500] 29[278] 32[564] 36[722 667 667 722 611 556] 44[333 389] 47[611 889 722] 51[556] 53[667 556 611 722] 58[944 722] 68[444 500 444 500 444 333 500 500 278 278] 79[278 778 500 500 500 500 333 389 278 500 500 722 500 500] 177[500] 180[444]] +endobj +523 0 obj +[250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 0 0 500 500 500 0 0 0 0 0 0 278 0 0 0 0 0 0 722 667 667 722 611 556 0 0 333 389 0 611 889 722 0 556 0 667 556 611 722 0 944 722 0 0 0 0 0 0 0 0 444 500 444 500 444 333 500 500 278 278 0 278 778 500 500 500 500 333 389 278 500 500 722 500 500] +endobj +xref +0 2541 +0000000000 65535 f +0000022015 00000 n +0000000015 00000 n +0000000108 00000 n +0000000408 00000 n +0000000545 00000 n +0000021892 00000 n +0000081787 00000 n +0000088797 00000 n +0000000213 00000 n +0000000313 00000 n +0000096632 00000 n +0000097361 00000 n +0000000650 00000 n +0000000832 00000 n +0000001170 00000 n +0000001427 00000 n +0000001696 00000 n +0000002077 00000 n +0000002441 00000 n +0000002806 00000 n +0000003179 00000 n +0000003567 00000 n +0000003938 00000 n +0000004198 00000 n +0000004474 00000 n +0000004742 00000 n +0000004918 00000 n +0000005258 00000 n +0000005517 00000 n +0000005730 00000 n +0000005876 00000 n +0000006134 00000 n +0000006515 00000 n +0000006787 00000 n +0000007101 00000 n +0000007432 00000 n +0000007709 00000 n +0000007972 00000 n +0000008362 00000 n +0000008610 00000 n +0000008908 00000 n +0000009292 00000 n +0000009684 00000 n +0000010056 00000 n +0000021726 00000 n +0000097778 00000 n +0000000751 00000 n +0000098329 00000 n +0000000975 00000 n +0000001068 00000 n +0000099148 00000 n +0000001346 00000 n +0000001615 00000 n +0000001882 00000 n +0000001975 00000 n +0000100129 00000 n +0000100721 00000 n +0000002246 00000 n +0000002339 00000 n +0000101400 00000 n +0000002611 00000 n +0000002704 00000 n +0000002984 00000 n +0000003077 00000 n +0000102440 00000 n +0000003372 00000 n +0000003465 00000 n +0000102902 00000 n +0000003743 00000 n +0000003836 00000 n +0000103567 00000 n +0000004117 00000 n +0000104357 00000 n +0000004393 00000 n +0000104815 00000 n +0000004661 00000 n +0000105605 00000 n +0000005063 00000 n +0000005156 00000 n +0000111079 00000 n +0000005436 00000 n +0000111868 00000 n +0000112301 00000 n +0000006044 00000 n +0000006320 00000 n +0000006413 00000 n +0000006706 00000 n +0000113361 00000 n +0000007011 00000 n +0000114327 00000 n +0000007351 00000 n +0000007628 00000 n +0000115032 00000 n +0000007891 00000 n +0000115584 00000 n +0000008167 00000 n +0000008260 00000 n +0000116375 00000 n +0000008529 00000 n +0000008817 00000 n +0000009091 00000 n +0000009187 00000 n +0000117454 00000 n +0000009483 00000 n +0000009579 00000 n +0000118427 00000 n +0000009855 00000 n +0000009951 00000 n +0000119148 00000 n +0000010246 00000 n +0000010344 00000 n +0000010454 00000 n +0000010565 00000 n +0000010675 00000 n +0000010850 00000 n +0000011005 00000 n +0000011136 00000 n +0000011295 00000 n +0000011457 00000 n +0000011640 00000 n +0000011824 00000 n +0000011985 00000 n +0000012162 00000 n +0000012338 00000 n +0000012483 00000 n +0000012717 00000 n +0000012992 00000 n +0000013283 00000 n +0000013498 00000 n +0000013656 00000 n +0000013809 00000 n +0000013973 00000 n +0000014104 00000 n +0000014277 00000 n +0000014476 00000 n +0000014704 00000 n +0000014847 00000 n +0000014976 00000 n +0000015152 00000 n +0000015364 00000 n +0000015568 00000 n +0000015747 00000 n +0000015894 00000 n +0000016046 00000 n +0000016218 00000 n +0000016411 00000 n +0000016589 00000 n +0000016836 00000 n +0000017005 00000 n +0000017169 00000 n +0000017323 00000 n +0000017576 00000 n +0000017778 00000 n +0000017962 00000 n +0000018124 00000 n +0000018270 00000 n +0000018411 00000 n +0000018571 00000 n +0000018719 00000 n +0000018884 00000 n +0000019055 00000 n +0000019204 00000 n +0000019378 00000 n +0000019504 00000 n +0000019636 00000 n +0000019768 00000 n +0000019908 00000 n +0000020087 00000 n +0000020238 00000 n +0000020378 00000 n +0000020546 00000 n +0000020695 00000 n +0000020831 00000 n +0000020976 00000 n +0000021123 00000 n +0000021273 00000 n +0000021421 00000 n +0000021580 00000 n +0000125416 00000 n +0000126119 00000 n +0000127077 00000 n +0000127904 00000 n +0000012633 00000 n +0000012908 00000 n +0000128619 00000 n +0000013199 00000 n +0000129558 00000 n +0000130637 00000 n +0000131704 00000 n +0000132404 00000 n +0000015280 00000 n +0000132980 00000 n +0000139716 00000 n +0000016752 00000 n +0000140676 00000 n +0000017492 00000 n +0000141630 00000 n +0000142716 00000 n +0000144175 00000 n +0000145386 00000 n +0000146994 00000 n +0000022066 00000 n +0000022391 00000 n +0000025637 00000 n +0000025799 00000 n +0000306169 00000 n +0000026213 00000 n +0000086199 00000 n +0000094627 00000 n +0000095326 00000 n +0000095993 00000 n +0000027118 00000 n +0000071400 00000 n +0000070992 00000 n +0000081369 00000 n +0000026504 00000 n +0000071162 00000 n +0000528871 00000 n +0000478267 00000 n +0000081544 00000 n +0000573418 00000 n +0000529729 00000 n +0000084167 00000 n +0000084768 00000 n +0000085150 00000 n +0000085761 00000 n +0000082078 00000 n +0000084291 00000 n +0000573759 00000 n +0000084318 00000 n +0000084471 00000 n +0000084541 00000 n +0000586755 00000 n +0000574062 00000 n +0000084929 00000 n +0000684476 00000 n +0000085273 00000 n +0000586799 00000 n +0000085300 00000 n +0000085452 00000 n +0000085522 00000 n +0000684175 00000 n +0000587092 00000 n +0000085941 00000 n +0000684785 00000 n +0000685018 00000 n +0000086481 00000 n +0000093980 00000 n +0000093859 00000 n +0000094386 00000 n +0000094506 00000 n +0000096997 00000 n +0000097118 00000 n +0000097239 00000 n +0000097655 00000 n +0000098083 00000 n +0000098206 00000 n +0000098650 00000 n +0000098775 00000 n +0000098898 00000 n +0000099023 00000 n +0000099512 00000 n +0000099635 00000 n +0000099760 00000 n +0000099883 00000 n +0000100007 00000 n +0000100473 00000 n +0000100597 00000 n +0000101027 00000 n +0000101150 00000 n +0000101275 00000 n +0000101694 00000 n +0000101817 00000 n +0000101942 00000 n +0000102067 00000 n +0000102190 00000 n +0000102315 00000 n +0000102779 00000 n +0000103196 00000 n +0000103321 00000 n +0000103445 00000 n +0000103861 00000 n +0000103985 00000 n +0000104109 00000 n +0000104232 00000 n +0000104692 00000 n +0000105109 00000 n +0000105234 00000 n +0000105357 00000 n +0000105482 00000 n +0000089432 00000 n +0000094149 00000 n +0000760422 00000 n +0000760445 00000 n +0000110602 00000 n +0000110654 00000 n +0000110706 00000 n +0000110829 00000 n +0000110954 00000 n +0000111373 00000 n +0000111497 00000 n +0000111620 00000 n +0000111745 00000 n +0000112178 00000 n +0000112622 00000 n +0000112742 00000 n +0000112864 00000 n +0000112987 00000 n +0000113112 00000 n +0000113237 00000 n +0000113707 00000 n +0000113830 00000 n +0000113955 00000 n +0000114079 00000 n +0000114202 00000 n +0000114661 00000 n +0000114784 00000 n +0000114909 00000 n +0000115337 00000 n +0000115462 00000 n +0000115878 00000 n +0000116002 00000 n +0000116125 00000 n +0000116250 00000 n +0000116709 00000 n +0000116833 00000 n +0000116956 00000 n +0000117081 00000 n +0000117205 00000 n +0000117330 00000 n +0000117800 00000 n +0000117926 00000 n +0000118052 00000 n +0000118176 00000 n +0000118302 00000 n +0000118773 00000 n +0000118896 00000 n +0000119022 00000 n +0000119479 00000 n +0000119603 00000 n +0000119729 00000 n +0000119855 00000 n +0000105939 00000 n +0000124789 00000 n +0000124915 00000 n +0000125040 00000 n +0000125164 00000 n +0000125290 00000 n +0000125740 00000 n +0000125866 00000 n +0000125993 00000 n +0000126454 00000 n +0000126576 00000 n +0000126699 00000 n +0000126824 00000 n +0000126951 00000 n +0000127401 00000 n +0000127526 00000 n +0000127652 00000 n +0000127777 00000 n +0000128239 00000 n +0000128366 00000 n +0000128493 00000 n +0000128930 00000 n +0000129055 00000 n +0000129181 00000 n +0000129306 00000 n +0000129432 00000 n +0000129882 00000 n +0000130008 00000 n +0000130133 00000 n +0000130260 00000 n +0000130386 00000 n +0000130511 00000 n +0000130948 00000 n +0000131073 00000 n +0000131199 00000 n +0000131325 00000 n +0000131450 00000 n +0000131577 00000 n +0000132028 00000 n +0000132154 00000 n +0000132278 00000 n +0000132727 00000 n +0000132854 00000 n +0000133304 00000 n +0000133429 00000 n +0000133556 00000 n +0000133683 00000 n +0000133809 00000 n +0000119981 00000 n +0000145860 00000 n +0000139087 00000 n +0000139213 00000 n +0000139338 00000 n +0000139464 00000 n +0000139589 00000 n +0000140051 00000 n +0000140178 00000 n +0000140304 00000 n +0000140429 00000 n +0000140553 00000 n +0000141000 00000 n +0000141125 00000 n +0000141252 00000 n +0000141378 00000 n +0000141503 00000 n +0000141954 00000 n +0000142081 00000 n +0000142209 00000 n +0000142336 00000 n +0000142463 00000 n +0000142590 00000 n +0000143040 00000 n +0000143165 00000 n +0000143292 00000 n +0000143417 00000 n +0000143541 00000 n +0000143668 00000 n +0000143795 00000 n +0000143922 00000 n +0000144049 00000 n +0000144499 00000 n +0000144624 00000 n +0000144751 00000 n +0000144878 00000 n +0000145005 00000 n +0000145132 00000 n +0000145259 00000 n +0000145733 00000 n +0000146488 00000 n +0000146614 00000 n +0000146740 00000 n +0000146867 00000 n +0000133934 00000 n +0000151012 00000 n +0000151404 00000 n +0000151829 00000 n +0000151956 00000 n +0000152083 00000 n +0000152210 00000 n +0000152337 00000 n +0000147318 00000 n +0000152553 00000 n +0000153941 00000 n +0000157559 00000 n +0000165086 00000 n +0000165214 00000 n +0000165342 00000 n +0000161180 00000 n +0000165468 00000 n +0000173182 00000 n +0000169381 00000 n +0000173597 00000 n +0000180627 00000 n +0000177117 00000 n +0000180810 00000 n +0000184669 00000 n +0000192001 00000 n +0000188362 00000 n +0000192433 00000 n +0000196235 00000 n +0000200111 00000 n +0000203210 00000 n +0000206199 00000 n +0000213611 00000 n +0000209761 00000 n +0000214042 00000 n +0000217293 00000 n +0000220756 00000 n +0000224497 00000 n +0000231820 00000 n +0000227710 00000 n +0000236511 00000 n +0000232473 00000 n +0000236922 00000 n +0000241155 00000 n +0000244598 00000 n +0000248780 00000 n +0000252701 00000 n +0000256731 00000 n +0000260620 00000 n +0000264393 00000 n +0000268075 00000 n +0000271867 00000 n +0000275496 00000 n +0000279634 00000 n +0000283613 00000 n +0000287600 00000 n +0000291573 00000 n +0000296143 00000 n +0000304122 00000 n +0000300673 00000 n +0000145992 00000 n +0000477833 00000 n +0000146019 00000 n +0000146180 00000 n +0000146250 00000 n +0000528468 00000 n +0000304765 00000 n +0000151178 00000 n +0000839727 00000 n +0000151582 00000 n +0000840032 00000 n +0000840303 00000 n +0000173356 00000 n +0000873607 00000 n +0000873868 00000 n +0000192184 00000 n +0000937454 00000 n +0000937477 00000 n +0000213792 00000 n +0000954326 00000 n +0000954533 00000 n +0000231957 00000 n +0000994729 00000 n +0000231984 00000 n +0000232150 00000 n +0000232220 00000 n +0001092806 00000 n +0000995117 00000 n +0000236687 00000 n +0001093121 00000 n +0000304259 00000 n +0000529329 00000 n +0000304286 00000 n +0000304452 00000 n +0000304522 00000 n +0000573069 00000 n +0000306279 00000 n +0000306531 00000 n +0000309269 00000 n +0000316210 00000 n +0000317527 00000 n +0000320439 00000 n +0000322449 00000 n +0000323887 00000 n +0000324410 00000 n +0000324933 00000 n +0000325459 00000 n +0000325986 00000 n +0000326513 00000 n +0000327022 00000 n +0000327388 00000 n +0000327754 00000 n +0000328120 00000 n +0000328486 00000 n +0000328852 00000 n +0000329218 00000 n +0000329584 00000 n +0000329950 00000 n +0000330316 00000 n +0000330682 00000 n +0000331048 00000 n +0000331414 00000 n +0000331780 00000 n +0000332146 00000 n +0000332512 00000 n +0000332878 00000 n +0000333244 00000 n +0000333610 00000 n +0000333976 00000 n +0000334342 00000 n +0000334708 00000 n +0000335074 00000 n +0000335440 00000 n +0000335806 00000 n +0000336172 00000 n +0000336538 00000 n +0000336904 00000 n +0000337270 00000 n +0000337636 00000 n +0000338002 00000 n +0000338368 00000 n +0000338734 00000 n +0000339100 00000 n +0000339466 00000 n +0000339832 00000 n +0000340646 00000 n +0000340861 00000 n +0000341804 00000 n +0000342178 00000 n +0000342552 00000 n +0000342991 00000 n +0000343365 00000 n +0000343741 00000 n +0000344117 00000 n +0000344493 00000 n +0000344869 00000 n +0000345245 00000 n +0000345621 00000 n +0000345997 00000 n +0000346438 00000 n +0000346814 00000 n +0000347255 00000 n +0000347631 00000 n +0000348007 00000 n +0000348383 00000 n +0000348759 00000 n +0000349135 00000 n +0000349511 00000 n +0000349887 00000 n +0000350263 00000 n +0000350639 00000 n +0000351015 00000 n +0000351456 00000 n +0000351832 00000 n +0000352208 00000 n +0000352584 00000 n +0000352960 00000 n +0000353336 00000 n +0000353712 00000 n +0000354088 00000 n +0000354464 00000 n +0000354840 00000 n +0000355216 00000 n +0000355592 00000 n +0000355968 00000 n +0000356344 00000 n +0000356720 00000 n +0000357178 00000 n +0000357910 00000 n +0000358125 00000 n +0000358879 00000 n +0000359318 00000 n +0000359692 00000 n +0000360066 00000 n +0000360440 00000 n +0000360816 00000 n +0000361257 00000 n +0000361698 00000 n +0000362074 00000 n +0000362515 00000 n +0000362956 00000 n +0000363332 00000 n +0000363708 00000 n +0000364084 00000 n +0000364525 00000 n +0000364966 00000 n +0000365342 00000 n +0000365718 00000 n +0000366159 00000 n +0000366535 00000 n +0000366976 00000 n +0000367417 00000 n +0000367923 00000 n +0000368299 00000 n +0000368675 00000 n +0000369116 00000 n +0000369492 00000 n +0000369868 00000 n +0000370309 00000 n +0000370685 00000 n +0000371061 00000 n +0000371885 00000 n +0000372165 00000 n +0000372964 00000 n +0000373403 00000 n +0000373777 00000 n +0000374151 00000 n +0000374590 00000 n +0000374966 00000 n +0000375407 00000 n +0000375783 00000 n +0000376224 00000 n +0000376600 00000 n +0000376976 00000 n +0000377352 00000 n +0000377728 00000 n +0000378104 00000 n +0000378480 00000 n +0000378921 00000 n +0000379297 00000 n +0000379738 00000 n +0000380114 00000 n +0000380490 00000 n +0000380866 00000 n +0000381242 00000 n +0000381683 00000 n +0000382059 00000 n +0000382435 00000 n +0000382811 00000 n +0000383187 00000 n +0000383563 00000 n +0000383939 00000 n +0000384315 00000 n +0000384691 00000 n +0000385067 00000 n +0000385443 00000 n +0000385873 00000 n +0000387056 00000 n +0000387339 00000 n +0000387881 00000 n +0000388164 00000 n +0000390725 00000 n +0000391147 00000 n +0000392158 00000 n +0000394144 00000 n +0000396463 00000 n +0000397941 00000 n +0000398224 00000 n +0000399122 00000 n +0000401953 00000 n +0000404931 00000 n +0000407364 00000 n +0000408035 00000 n +0000410935 00000 n +0000412208 00000 n +0000414309 00000 n +0000415638 00000 n +0000417812 00000 n +0000419174 00000 n +0000421028 00000 n +0000423419 00000 n +0000424831 00000 n +0000427050 00000 n +0000430644 00000 n +0000434091 00000 n +0000435900 00000 n +0000437791 00000 n +0000439789 00000 n +0000442365 00000 n +0000444320 00000 n +0000446249 00000 n +0000448429 00000 n +0000449513 00000 n +0000451151 00000 n +0000452326 00000 n +0000455024 00000 n +0000456917 00000 n +0000458735 00000 n +0000460914 00000 n +0000462232 00000 n +0000464566 00000 n +0000468155 00000 n +0000469847 00000 n +0000471370 00000 n +0000473591 00000 n +0000477548 00000 n +0000315988 00000 n +0000316365 00000 n +0000316433 00000 n +0000316501 00000 n +0000316569 00000 n +0000316637 00000 n +0000316705 00000 n +0000316773 00000 n +0000316841 00000 n +0000316909 00000 n +0000316977 00000 n +0000317046 00000 n +0000317115 00000 n +0000317184 00000 n +0000317253 00000 n +0000317322 00000 n +0000317391 00000 n +0000317460 00000 n +0000317930 00000 n +0000320237 00000 n +0000320304 00000 n +0000320371 00000 n +0000320666 00000 n +0000320734 00000 n +0000320802 00000 n +0000320870 00000 n +0000320938 00000 n +0000321006 00000 n +0000321074 00000 n +0000321142 00000 n +0000321210 00000 n +0000321278 00000 n +0000321347 00000 n +0000321416 00000 n +0000321485 00000 n +0000321554 00000 n +0000321623 00000 n +0000321692 00000 n +0000321761 00000 n +0000321830 00000 n +0000321899 00000 n +0000321968 00000 n +0000322037 00000 n +0000322106 00000 n +0000322175 00000 n +0000322244 00000 n +0000322313 00000 n +0000322382 00000 n +0000323340 00000 n +0000340113 00000 n +0000357467 00000 n +0000371415 00000 n +0000385805 00000 n +0000386441 00000 n +0000386508 00000 n +0000386575 00000 n +0000386643 00000 n +0000386710 00000 n +0000386797 00000 n +0000387622 00000 n +0000388447 00000 n +0000388516 00000 n +0000388584 00000 n +0000388991 00000 n +0000389059 00000 n +0000389127 00000 n +0000389195 00000 n +0000389263 00000 n +0000389331 00000 n +0000389399 00000 n +0000389467 00000 n +0000389535 00000 n +0000389603 00000 n +0000391008 00000 n +0000391079 00000 n +0000391370 00000 n +0000391437 00000 n +0000392022 00000 n +0000392090 00000 n +0000392385 00000 n +0000392453 00000 n +0000392520 00000 n +0000392587 00000 n +0000392654 00000 n +0000392721 00000 n +0000392788 00000 n +0000392855 00000 n +0000392922 00000 n +0000392989 00000 n +0000393057 00000 n +0000393125 00000 n +0000393193 00000 n +0000393261 00000 n +0000393329 00000 n +0000393397 00000 n +0000393465 00000 n +0000393533 00000 n +0000393601 00000 n +0000393669 00000 n +0000393737 00000 n +0000393805 00000 n +0000393873 00000 n +0000393941 00000 n +0000394009 00000 n +0000394077 00000 n +0000394376 00000 n +0000394443 00000 n +0000394510 00000 n +0000394577 00000 n +0000394644 00000 n +0000394711 00000 n +0000394779 00000 n +0000394846 00000 n +0000394919 00000 n +0000394987 00000 n +0000395529 00000 n +0000395597 00000 n +0000395665 00000 n +0000396048 00000 n +0000396116 00000 n +0000396185 00000 n +0000396253 00000 n +0000396328 00000 n +0000396396 00000 n +0000396715 00000 n +0000396787 00000 n +0000396854 00000 n +0000396921 00000 n +0000397618 00000 n +0000397687 00000 n +0000397762 00000 n +0000398571 00000 n +0000398639 00000 n +0000398707 00000 n +0000398776 00000 n +0000398844 00000 n +0000398919 00000 n +0000398987 00000 n +0000399055 00000 n +0000399351 00000 n +0000399418 00000 n +0000399485 00000 n +0000399552 00000 n +0000399933 00000 n +0000400001 00000 n +0000400068 00000 n +0000400141 00000 n +0000400209 00000 n +0000400277 00000 n +0000400345 00000 n +0000400413 00000 n +0000401750 00000 n +0000401818 00000 n +0000401886 00000 n +0000402299 00000 n +0000402366 00000 n +0000402438 00000 n +0000402537 00000 n +0000402606 00000 n +0000402681 00000 n +0000402749 00000 n +0000403609 00000 n +0000403677 00000 n +0000403745 00000 n +0000404128 00000 n +0000404196 00000 n +0000404264 00000 n +0000404332 00000 n +0000404400 00000 n +0000404468 00000 n +0000404536 00000 n +0000404604 00000 n +0000404672 00000 n +0000405801 00000 n +0000405873 00000 n +0000405940 00000 n +0000406007 00000 n +0000406076 00000 n +0000406144 00000 n +0000406219 00000 n +0000406287 00000 n +0000406362 00000 n +0000406430 00000 n +0000406498 00000 n +0000406567 00000 n +0000406635 00000 n +0000406710 00000 n +0000406778 00000 n +0000407161 00000 n +0000407229 00000 n +0000407297 00000 n +0000407752 00000 n +0000407819 00000 n +0000407886 00000 n +0000407953 00000 n +0000408316 00000 n +0000408383 00000 n +0000408450 00000 n +0000409149 00000 n +0000409217 00000 n +0000409285 00000 n +0000409353 00000 n +0000409428 00000 n +0000409496 00000 n +0000409564 00000 n +0000409830 00000 n +0000409898 00000 n +0000410122 00000 n +0000410190 00000 n +0000410258 00000 n +0000410800 00000 n +0000410868 00000 n +0000411114 00000 n +0000411181 00000 n +0000411248 00000 n +0000411316 00000 n +0000411383 00000 n +0000411455 00000 n +0000411522 00000 n +0000411589 00000 n +0000411657 00000 n +0000411725 00000 n +0000411793 00000 n +0000411861 00000 n +0000411936 00000 n +0000412004 00000 n +0000412072 00000 n +0000412140 00000 n +0000412424 00000 n +0000412491 00000 n +0000412558 00000 n +0000412625 00000 n +0000412692 00000 n +0000412764 00000 n +0000412831 00000 n +0000413690 00000 n +0000413765 00000 n +0000413833 00000 n +0000413902 00000 n +0000413970 00000 n +0000414038 00000 n +0000414106 00000 n +0000414174 00000 n +0000414242 00000 n +0000414465 00000 n +0000414532 00000 n +0000414599 00000 n +0000414666 00000 n +0000414738 00000 n +0000414805 00000 n +0000414872 00000 n +0000414939 00000 n +0000415007 00000 n +0000415075 00000 n +0000415143 00000 n +0000415211 00000 n +0000415435 00000 n +0000415503 00000 n +0000415571 00000 n +0000415916 00000 n +0000415983 00000 n +0000416051 00000 n +0000416119 00000 n +0000416188 00000 n +0000416256 00000 n +0000416334 00000 n +0000416403 00000 n +0000416472 00000 n +0000416542 00000 n +0000416611 00000 n +0000416693 00000 n +0000416762 00000 n +0000416831 00000 n +0000417537 00000 n +0000417606 00000 n +0000417675 00000 n +0000417744 00000 n +0000418002 00000 n +0000418070 00000 n +0000418138 00000 n +0000418206 00000 n +0000418275 00000 n +0000418343 00000 n +0000418411 00000 n +0000418479 00000 n +0000418547 00000 n +0000418615 00000 n +0000418684 00000 n +0000418754 00000 n +0000418823 00000 n +0000418899 00000 n +0000418968 00000 n +0000419037 00000 n +0000419106 00000 n +0000419436 00000 n +0000419504 00000 n +0000419572 00000 n +0000419640 00000 n +0000419708 00000 n +0000419776 00000 n +0000419844 00000 n +0000419912 00000 n +0000419980 00000 n +0000420048 00000 n +0000420117 00000 n +0000420193 00000 n +0000420262 00000 n +0000420331 00000 n +0000420400 00000 n +0000420469 00000 n +0000420538 00000 n +0000420607 00000 n +0000420676 00000 n +0000420746 00000 n +0000420815 00000 n +0000420891 00000 n +0000420960 00000 n +0000421272 00000 n +0000421340 00000 n +0000421408 00000 n +0000421476 00000 n +0000421544 00000 n +0000421612 00000 n +0000421680 00000 n +0000421748 00000 n +0000421816 00000 n +0000421884 00000 n +0000421953 00000 n +0000422022 00000 n +0000422091 00000 n +0000422160 00000 n +0000422229 00000 n +0000422298 00000 n +0000422368 00000 n +0000422437 00000 n +0000422506 00000 n +0000422575 00000 n +0000422644 00000 n +0000423350 00000 n +0000423645 00000 n +0000423713 00000 n +0000423781 00000 n +0000423850 00000 n +0000423918 00000 n +0000423991 00000 n +0000424059 00000 n +0000424128 00000 n +0000424197 00000 n +0000424273 00000 n +0000424342 00000 n +0000424411 00000 n +0000424480 00000 n +0000424549 00000 n +0000424618 00000 n +0000424694 00000 n +0000424763 00000 n +0000425048 00000 n +0000425117 00000 n +0000425185 00000 n +0000425253 00000 n +0000425326 00000 n +0000425394 00000 n +0000425462 00000 n +0000425530 00000 n +0000425599 00000 n +0000425668 00000 n +0000425737 00000 n +0000425806 00000 n +0000425876 00000 n +0000425945 00000 n +0000426014 00000 n +0000426083 00000 n +0000426789 00000 n +0000427930 00000 n +0000428003 00000 n +0000428228 00000 n +0000428296 00000 n +0000428366 00000 n +0000428435 00000 n +0000428511 00000 n +0000428580 00000 n +0000428806 00000 n +0000428875 00000 n +0000429101 00000 n +0000429170 00000 n +0000429396 00000 n +0000429465 00000 n +0000429691 00000 n +0000429760 00000 n +0000429986 00000 n +0000430055 00000 n +0000430281 00000 n +0000430350 00000 n +0000430576 00000 n +0000430924 00000 n +0000430992 00000 n +0000431217 00000 n +0000431285 00000 n +0000431510 00000 n +0000431578 00000 n +0000431803 00000 n +0000431871 00000 n +0000432096 00000 n +0000432164 00000 n +0000432390 00000 n +0000432459 00000 n +0000432528 00000 n +0000433074 00000 n +0000433143 00000 n +0000433213 00000 n +0000433282 00000 n +0000433351 00000 n +0000433420 00000 n +0000433499 00000 n +0000433568 00000 n +0000433637 00000 n +0000434023 00000 n +0000434308 00000 n +0000434377 00000 n +0000434445 00000 n +0000434513 00000 n +0000434586 00000 n +0000434654 00000 n +0000434722 00000 n +0000434790 00000 n +0000434860 00000 n +0000434929 00000 n +0000435005 00000 n +0000435074 00000 n +0000435143 00000 n +0000435689 00000 n +0000435758 00000 n +0000435827 00000 n +0000436153 00000 n +0000436221 00000 n +0000436289 00000 n +0000436357 00000 n +0000436426 00000 n +0000436494 00000 n +0000436562 00000 n +0000436637 00000 n +0000436706 00000 n +0000437092 00000 n +0000437161 00000 n +0000437230 00000 n +0000437300 00000 n +0000437369 00000 n +0000437438 00000 n +0000437507 00000 n +0000437576 00000 n +0000437652 00000 n +0000437721 00000 n +0000438206 00000 n +0000438275 00000 n +0000438344 00000 n +0000438418 00000 n +0000438487 00000 n +0000438564 00000 n +0000438634 00000 n +0000439025 00000 n +0000439096 00000 n +0000439220 00000 n +0000439290 00000 n +0000439360 00000 n +0000439430 00000 n +0000439510 00000 n +0000439580 00000 n +0000439650 00000 n +0000439720 00000 n +0000440042 00000 n +0000440111 00000 n +0000440180 00000 n +0000440249 00000 n +0000441121 00000 n +0000441190 00000 n +0000441260 00000 n +0000441330 00000 n +0000441407 00000 n +0000441477 00000 n +0000441868 00000 n +0000441939 00000 n +0000442009 00000 n +0000442079 00000 n +0000442156 00000 n +0000442226 00000 n +0000442296 00000 n +0000442879 00000 n +0000442948 00000 n +0000443022 00000 n +0000443091 00000 n +0000443161 00000 n +0000443250 00000 n +0000443320 00000 n +0000443409 00000 n +0000443479 00000 n +0000443568 00000 n +0000443638 00000 n +0000443727 00000 n +0000443797 00000 n +0000443867 00000 n +0000443937 00000 n +0000444029 00000 n +0000444099 00000 n +0000444176 00000 n +0000444246 00000 n +0000444582 00000 n +0000444651 00000 n +0000445040 00000 n +0000445109 00000 n +0000445178 00000 n +0000445253 00000 n +0000445323 00000 n +0000445393 00000 n +0000445463 00000 n +0000445533 00000 n +0000445603 00000 n +0000445673 00000 n +0000445753 00000 n +0000445823 00000 n +0000445893 00000 n +0000445963 00000 n +0000446033 00000 n +0000446103 00000 n +0000446173 00000 n +0000446637 00000 n +0000446731 00000 n +0000446801 00000 n +0000446871 00000 n +0000446941 00000 n +0000447011 00000 n +0000447081 00000 n +0000447154 00000 n +0000447234 00000 n +0000447304 00000 n +0000447387 00000 n +0000447457 00000 n +0000448010 00000 n +0000448080 00000 n +0000448150 00000 n +0000448220 00000 n +0000448290 00000 n +0000448360 00000 n +0000448646 00000 n +0000448715 00000 n +0000448784 00000 n +0000448853 00000 n +0000448933 00000 n +0000449003 00000 n +0000449073 00000 n +0000449143 00000 n +0000449213 00000 n +0000449299 00000 n +0000449369 00000 n +0000449439 00000 n +0000449757 00000 n +0000449826 00000 n +0000449895 00000 n +0000449964 00000 n +0000450033 00000 n +0000450102 00000 n +0000450186 00000 n +0000450256 00000 n +0000450326 00000 n +0000450403 00000 n +0000450473 00000 n +0000450544 00000 n +0000450614 00000 n +0000450684 00000 n +0000451075 00000 n +0000451386 00000 n +0000451455 00000 n +0000451524 00000 n +0000451594 00000 n +0000451663 00000 n +0000451741 00000 n +0000451811 00000 n +0000451881 00000 n +0000451951 00000 n +0000452022 00000 n +0000452092 00000 n +0000452178 00000 n +0000452248 00000 n +0000452651 00000 n +0000452720 00000 n +0000452794 00000 n +0000452863 00000 n +0000452933 00000 n +0000453013 00000 n +0000453083 00000 n +0000453153 00000 n +0000453223 00000 n +0000454586 00000 n +0000454656 00000 n +0000454726 00000 n +0000454796 00000 n +0000454876 00000 n +0000454946 00000 n +0000455295 00000 n +0000455364 00000 n +0000455433 00000 n +0000455502 00000 n +0000455571 00000 n +0000455653 00000 n +0000455723 00000 n +0000455793 00000 n +0000455863 00000 n +0000455933 00000 n +0000456003 00000 n +0000456073 00000 n +0000456626 00000 n +0000456696 00000 n +0000456773 00000 n +0000456843 00000 n +0000457152 00000 n +0000457221 00000 n +0000457290 00000 n +0000457359 00000 n +0000457748 00000 n +0000457817 00000 n +0000457886 00000 n +0000457956 00000 n +0000458036 00000 n +0000458106 00000 n +0000458176 00000 n +0000458246 00000 n +0000458316 00000 n +0000458386 00000 n +0000458456 00000 n +0000458526 00000 n +0000458596 00000 n +0000458666 00000 n +0000458979 00000 n +0000459851 00000 n +0000459925 00000 n +0000459994 00000 n +0000460064 00000 n +0000460134 00000 n +0000460204 00000 n +0000460274 00000 n +0000460344 00000 n +0000460424 00000 n +0000460494 00000 n +0000460565 00000 n +0000460635 00000 n +0000460705 00000 n +0000460775 00000 n +0000460845 00000 n +0000461203 00000 n +0000461279 00000 n +0000461348 00000 n +0000461422 00000 n +0000461491 00000 n +0000461561 00000 n +0000461638 00000 n +0000461708 00000 n +0000461788 00000 n +0000461858 00000 n +0000461938 00000 n +0000462008 00000 n +0000462088 00000 n +0000462158 00000 n +0000462539 00000 n +0000462608 00000 n +0000462677 00000 n +0000462746 00000 n +0000462815 00000 n +0000463365 00000 n +0000463435 00000 n +0000463518 00000 n +0000463588 00000 n +0000463659 00000 n +0000463729 00000 n +0000463799 00000 n +0000463882 00000 n +0000463952 00000 n +0000464029 00000 n +0000464099 00000 n +0000464490 00000 n +0000464918 00000 n +0000464987 00000 n +0000465061 00000 n +0000465131 00000 n +0000465200 00000 n +0000466077 00000 n +0000466147 00000 n +0000466217 00000 n +0000466287 00000 n +0000466357 00000 n +0000466427 00000 n +0000467790 00000 n +0000467860 00000 n +0000467930 00000 n +0000468016 00000 n +0000468086 00000 n +0000468516 00000 n +0000468592 00000 n +0000468661 00000 n +0000468730 00000 n +0000468804 00000 n +0000468874 00000 n +0000468954 00000 n +0000469024 00000 n +0000469107 00000 n +0000469177 00000 n +0000469247 00000 n +0000469324 00000 n +0000469394 00000 n +0000469464 00000 n +0000469553 00000 n +0000469623 00000 n +0000469693 00000 n +0000469763 00000 n +0000470244 00000 n +0000470313 00000 n +0000470382 00000 n +0000470465 00000 n +0000470535 00000 n +0000470624 00000 n +0000470694 00000 n +0000470771 00000 n +0000470841 00000 n +0000470918 00000 n +0000470988 00000 n +0000471071 00000 n +0000471141 00000 n +0000471218 00000 n +0000471288 00000 n +0000471767 00000 n +0000471836 00000 n +0000471914 00000 n +0000471984 00000 n +0000472067 00000 n +0000472137 00000 n +0000472217 00000 n +0000472287 00000 n +0000472364 00000 n +0000472434 00000 n +0000472504 00000 n +0000473219 00000 n +0000473289 00000 n +0000473359 00000 n +0000473445 00000 n +0000473515 00000 n +0000474105 00000 n +0000474174 00000 n +0000474243 00000 n +0000474322 00000 n +0000474392 00000 n +0000474462 00000 n +0000474853 00000 n +0000474936 00000 n +0000475006 00000 n +0000475098 00000 n +0000475168 00000 n +0000475238 00000 n +0000475953 00000 n +0000476051 00000 n +0000476121 00000 n +0000476191 00000 n +0000476420 00000 n +0000476490 00000 n +0000476560 00000 n +0000476789 00000 n +0000476859 00000 n +0000476929 00000 n +0000477320 00000 n +0000477621 00000 n +0000477690 00000 n +0000477764 00000 n +0000318212 00000 n +0000318282 00000 n +0000318439 00000 n +0000318509 00000 n +0000318666 00000 n +0000318736 00000 n +0000318896 00000 n +0000318967 00000 n +0000319042 00000 n +0000319309 00000 n +0000319380 00000 n +0000319540 00000 n +0000319611 00000 n +0000319771 00000 n +0000319842 00000 n +0000320020 00000 n +0000320091 00000 n +0000320166 00000 n +0000318016 00000 n +0000319113 00000 n +0000318127 00000 n +0000318354 00000 n +0000318581 00000 n +0000318811 00000 n +0000319224 00000 n +0000319455 00000 n +0000319686 00000 n +0000319935 00000 n +0000324027 00000 n +0000324096 00000 n +0000324166 00000 n +0000324237 00000 n +0000324550 00000 n +0000324619 00000 n +0000324689 00000 n +0000324760 00000 n +0000325073 00000 n +0000325142 00000 n +0000325213 00000 n +0000325285 00000 n +0000325599 00000 n +0000325669 00000 n +0000325740 00000 n +0000325812 00000 n +0000326126 00000 n +0000326196 00000 n +0000326267 00000 n +0000326339 00000 n +0000326653 00000 n +0000326723 00000 n +0000326794 00000 n +0000326866 00000 n +0000327162 00000 n +0000327232 00000 n +0000327528 00000 n +0000327598 00000 n +0000327894 00000 n +0000327964 00000 n +0000328260 00000 n +0000328330 00000 n +0000328626 00000 n +0000328696 00000 n +0000328992 00000 n +0000329062 00000 n +0000329358 00000 n +0000329428 00000 n +0000329724 00000 n +0000329794 00000 n +0000330090 00000 n +0000330160 00000 n +0000330456 00000 n +0000330526 00000 n +0000330822 00000 n +0000330892 00000 n +0000331188 00000 n +0000331258 00000 n +0000331554 00000 n +0000331624 00000 n +0000331920 00000 n +0000331990 00000 n +0000332286 00000 n +0000332356 00000 n +0000332652 00000 n +0000332722 00000 n +0000333018 00000 n +0000333088 00000 n +0000333384 00000 n +0000333454 00000 n +0000333750 00000 n +0000333820 00000 n +0000334116 00000 n +0000334186 00000 n +0000334482 00000 n +0000334552 00000 n +0000334848 00000 n +0000334918 00000 n +0000335214 00000 n +0000335284 00000 n +0000335580 00000 n +0000335650 00000 n +0000335946 00000 n +0000336016 00000 n +0000336312 00000 n +0000336382 00000 n +0000336678 00000 n +0000336748 00000 n +0000337044 00000 n +0000337114 00000 n +0000337410 00000 n +0000337480 00000 n +0000337776 00000 n +0000337846 00000 n +0000338142 00000 n +0000338212 00000 n +0000338508 00000 n +0000338578 00000 n +0000338874 00000 n +0000338944 00000 n +0000339240 00000 n +0000339310 00000 n +0000339606 00000 n +0000339676 00000 n +0000339972 00000 n +0000340042 00000 n +0000323784 00000 n +0000324307 00000 n +0000324830 00000 n +0000325356 00000 n +0000325883 00000 n +0000326410 00000 n +0000326937 00000 n +0000327303 00000 n +0000327669 00000 n +0000328035 00000 n +0000328401 00000 n +0000328767 00000 n +0000329133 00000 n +0000329499 00000 n +0000329865 00000 n +0000330231 00000 n +0000330597 00000 n +0000330963 00000 n +0000331329 00000 n +0000331695 00000 n +0000332061 00000 n +0000332427 00000 n +0000332793 00000 n +0000333159 00000 n +0000333525 00000 n +0000333891 00000 n +0000334257 00000 n +0000334623 00000 n +0000334989 00000 n +0000335355 00000 n +0000335721 00000 n +0000336087 00000 n +0000336453 00000 n +0000336819 00000 n +0000337185 00000 n +0000337551 00000 n +0000337917 00000 n +0000338283 00000 n +0000338649 00000 n +0000339015 00000 n +0000339381 00000 n +0000339747 00000 n +0000323973 00000 n +0000324496 00000 n +0000325019 00000 n +0000325545 00000 n +0000326072 00000 n +0000326599 00000 n +0000327108 00000 n +0000327474 00000 n +0000327840 00000 n +0000328206 00000 n +0000328572 00000 n +0000328938 00000 n +0000329304 00000 n +0000329670 00000 n +0000330036 00000 n +0000330402 00000 n +0000330768 00000 n +0000331134 00000 n +0000331500 00000 n +0000331866 00000 n +0000332232 00000 n +0000332598 00000 n +0000332964 00000 n +0000333330 00000 n +0000333696 00000 n +0000334062 00000 n +0000334428 00000 n +0000334794 00000 n +0000335160 00000 n +0000335526 00000 n +0000335892 00000 n +0000336258 00000 n +0000336624 00000 n +0000336990 00000 n +0000337356 00000 n +0000337722 00000 n +0000338088 00000 n +0000338454 00000 n +0000338820 00000 n +0000339186 00000 n +0000339552 00000 n +0000339918 00000 n +0000340559 00000 n +0000341717 00000 n +0000342091 00000 n +0000342465 00000 n +0000342904 00000 n +0000343278 00000 n +0000343654 00000 n +0000344030 00000 n +0000344406 00000 n +0000344782 00000 n +0000345158 00000 n +0000345534 00000 n +0000345910 00000 n +0000346351 00000 n +0000346727 00000 n +0000347168 00000 n +0000347544 00000 n +0000347920 00000 n +0000348296 00000 n +0000348672 00000 n +0000349048 00000 n +0000349424 00000 n +0000349800 00000 n +0000350176 00000 n +0000350552 00000 n +0000350928 00000 n +0000351369 00000 n +0000351745 00000 n +0000352121 00000 n +0000352497 00000 n +0000352873 00000 n +0000353249 00000 n +0000353625 00000 n +0000354001 00000 n +0000354377 00000 n +0000354753 00000 n +0000355129 00000 n +0000355505 00000 n +0000355881 00000 n +0000356257 00000 n +0000356633 00000 n +0000357009 00000 n +0000341645 00000 n +0000340734 00000 n +0000340790 00000 n +0000341948 00000 n +0000342019 00000 n +0000342322 00000 n +0000342393 00000 n +0000342761 00000 n +0000342832 00000 n +0000343135 00000 n +0000343206 00000 n +0000343509 00000 n +0000343581 00000 n +0000343885 00000 n +0000343957 00000 n +0000344261 00000 n +0000344333 00000 n +0000344637 00000 n +0000344709 00000 n +0000345013 00000 n +0000345085 00000 n +0000345389 00000 n +0000345461 00000 n +0000345765 00000 n +0000345837 00000 n +0000346206 00000 n +0000346278 00000 n +0000346582 00000 n +0000346654 00000 n +0000347023 00000 n +0000347095 00000 n +0000347399 00000 n +0000347471 00000 n +0000347775 00000 n +0000347847 00000 n +0000348151 00000 n +0000348223 00000 n +0000348527 00000 n +0000348599 00000 n +0000348903 00000 n +0000348975 00000 n +0000349279 00000 n +0000349351 00000 n +0000349655 00000 n +0000349727 00000 n +0000350031 00000 n +0000350103 00000 n +0000350407 00000 n +0000350479 00000 n +0000350783 00000 n +0000350855 00000 n +0000351224 00000 n +0000351296 00000 n +0000351600 00000 n +0000351672 00000 n +0000351976 00000 n +0000352048 00000 n +0000352352 00000 n +0000352424 00000 n +0000352728 00000 n +0000352800 00000 n +0000353104 00000 n +0000353176 00000 n +0000353480 00000 n +0000353552 00000 n +0000353856 00000 n +0000353928 00000 n +0000354232 00000 n +0000354304 00000 n +0000354608 00000 n +0000354680 00000 n +0000354984 00000 n +0000355056 00000 n +0000355360 00000 n +0000355432 00000 n +0000355736 00000 n +0000355808 00000 n +0000356112 00000 n +0000356184 00000 n +0000356488 00000 n +0000356560 00000 n +0000356864 00000 n +0000356936 00000 n +0000357105 00000 n +0000357322 00000 n +0000357394 00000 n +0000341892 00000 n +0000342266 00000 n +0000342649 00000 n +0000342705 00000 n +0000343079 00000 n +0000343453 00000 n +0000343829 00000 n +0000344205 00000 n +0000344581 00000 n +0000344957 00000 n +0000345333 00000 n +0000345709 00000 n +0000346094 00000 n +0000346150 00000 n +0000346526 00000 n +0000346911 00000 n +0000346967 00000 n +0000347343 00000 n +0000347719 00000 n +0000348095 00000 n +0000348471 00000 n +0000348847 00000 n +0000349223 00000 n +0000349599 00000 n +0000349975 00000 n +0000350351 00000 n +0000350727 00000 n +0000351112 00000 n +0000351168 00000 n +0000351544 00000 n +0000351920 00000 n +0000352296 00000 n +0000352672 00000 n +0000353048 00000 n +0000353424 00000 n +0000353800 00000 n +0000354176 00000 n +0000354552 00000 n +0000354928 00000 n +0000355304 00000 n +0000355680 00000 n +0000356056 00000 n +0000356432 00000 n +0000356808 00000 n +0000357266 00000 n +0000357823 00000 n +0000358792 00000 n +0000359231 00000 n +0000359605 00000 n +0000359979 00000 n +0000360353 00000 n +0000360729 00000 n +0000361170 00000 n +0000361611 00000 n +0000361987 00000 n +0000362428 00000 n +0000362869 00000 n +0000363245 00000 n +0000363621 00000 n +0000363997 00000 n +0000364438 00000 n +0000364879 00000 n +0000365255 00000 n +0000365631 00000 n +0000366072 00000 n +0000366448 00000 n +0000366889 00000 n +0000367330 00000 n +0000367836 00000 n +0000368212 00000 n +0000368588 00000 n +0000369029 00000 n +0000369405 00000 n +0000369781 00000 n +0000370222 00000 n +0000370598 00000 n +0000370974 00000 n +0000358720 00000 n +0000357998 00000 n +0000358054 00000 n +0000359088 00000 n +0000359159 00000 n +0000359462 00000 n +0000359533 00000 n +0000359836 00000 n +0000359907 00000 n +0000360210 00000 n +0000360281 00000 n +0000360584 00000 n +0000360656 00000 n +0000361025 00000 n +0000361097 00000 n +0000361466 00000 n +0000361538 00000 n +0000361842 00000 n +0000361914 00000 n +0000362283 00000 n +0000362355 00000 n +0000362724 00000 n +0000362796 00000 n +0000363100 00000 n +0000363172 00000 n +0000363476 00000 n +0000363548 00000 n +0000363852 00000 n +0000363924 00000 n +0000364293 00000 n +0000364365 00000 n +0000364734 00000 n +0000364806 00000 n +0000365110 00000 n +0000365182 00000 n +0000365486 00000 n +0000365558 00000 n +0000365927 00000 n +0000365999 00000 n +0000366303 00000 n +0000366375 00000 n +0000366744 00000 n +0000366816 00000 n +0000367185 00000 n +0000367257 00000 n +0000367691 00000 n +0000367763 00000 n +0000368067 00000 n +0000368139 00000 n +0000368443 00000 n +0000368515 00000 n +0000368884 00000 n +0000368956 00000 n +0000369260 00000 n +0000369332 00000 n +0000369636 00000 n +0000369708 00000 n +0000370077 00000 n +0000370149 00000 n +0000370453 00000 n +0000370525 00000 n +0000370829 00000 n +0000370901 00000 n +0000371270 00000 n +0000371342 00000 n +0000358976 00000 n +0000359032 00000 n +0000359406 00000 n +0000359780 00000 n +0000360154 00000 n +0000360528 00000 n +0000360913 00000 n +0000360969 00000 n +0000361354 00000 n +0000361410 00000 n +0000361786 00000 n +0000362171 00000 n +0000362227 00000 n +0000362612 00000 n +0000362668 00000 n +0000363044 00000 n +0000363420 00000 n +0000363796 00000 n +0000364181 00000 n +0000364237 00000 n +0000364622 00000 n +0000364678 00000 n +0000365054 00000 n +0000365430 00000 n +0000365815 00000 n +0000365871 00000 n +0000366247 00000 n +0000366632 00000 n +0000366688 00000 n +0000367073 00000 n +0000367129 00000 n +0000367523 00000 n +0000367579 00000 n +0000367635 00000 n +0000368011 00000 n +0000368387 00000 n +0000368772 00000 n +0000368828 00000 n +0000369204 00000 n +0000369580 00000 n +0000369965 00000 n +0000370021 00000 n +0000370397 00000 n +0000370773 00000 n +0000371158 00000 n +0000371214 00000 n +0000371798 00000 n +0000372877 00000 n +0000373316 00000 n +0000373690 00000 n +0000374064 00000 n +0000374503 00000 n +0000374879 00000 n +0000375320 00000 n +0000375696 00000 n +0000376137 00000 n +0000376513 00000 n +0000376889 00000 n +0000377265 00000 n +0000377641 00000 n +0000378017 00000 n +0000378393 00000 n +0000378834 00000 n +0000379210 00000 n +0000379651 00000 n +0000380027 00000 n +0000380403 00000 n +0000380779 00000 n +0000381155 00000 n +0000381596 00000 n +0000381972 00000 n +0000382348 00000 n +0000382724 00000 n +0000383100 00000 n +0000383476 00000 n +0000383852 00000 n +0000384228 00000 n +0000384604 00000 n +0000384980 00000 n +0000385356 00000 n +0000385732 00000 n +0000372805 00000 n +0000371982 00000 n +0000372038 00000 n +0000372094 00000 n +0000373173 00000 n +0000373244 00000 n +0000373547 00000 n +0000373618 00000 n +0000373921 00000 n +0000373992 00000 n +0000374360 00000 n +0000374431 00000 n +0000374734 00000 n +0000374806 00000 n +0000375175 00000 n +0000375247 00000 n +0000375551 00000 n +0000375623 00000 n +0000375992 00000 n +0000376064 00000 n +0000376368 00000 n +0000376440 00000 n +0000376744 00000 n +0000376816 00000 n +0000377120 00000 n +0000377192 00000 n +0000377496 00000 n +0000377568 00000 n +0000377872 00000 n +0000377944 00000 n +0000378248 00000 n +0000378320 00000 n +0000378689 00000 n +0000378761 00000 n +0000379065 00000 n +0000379137 00000 n +0000379506 00000 n +0000379578 00000 n +0000379882 00000 n +0000379954 00000 n +0000380258 00000 n +0000380330 00000 n +0000380634 00000 n +0000380706 00000 n +0000381010 00000 n +0000381082 00000 n +0000381451 00000 n +0000381523 00000 n +0000381827 00000 n +0000381899 00000 n +0000382203 00000 n +0000382275 00000 n +0000382579 00000 n +0000382651 00000 n +0000382955 00000 n +0000383027 00000 n +0000383331 00000 n +0000383403 00000 n +0000383707 00000 n +0000383779 00000 n +0000384083 00000 n +0000384155 00000 n +0000384459 00000 n +0000384531 00000 n +0000384835 00000 n +0000384907 00000 n +0000385211 00000 n +0000385283 00000 n +0000385587 00000 n +0000385659 00000 n +0000373061 00000 n +0000373117 00000 n +0000373491 00000 n +0000373865 00000 n +0000374248 00000 n +0000374304 00000 n +0000374678 00000 n +0000375063 00000 n +0000375119 00000 n +0000375495 00000 n +0000375880 00000 n +0000375936 00000 n +0000376312 00000 n +0000376688 00000 n +0000377064 00000 n +0000377440 00000 n +0000377816 00000 n +0000378192 00000 n +0000378577 00000 n +0000378633 00000 n +0000379009 00000 n +0000379394 00000 n +0000379450 00000 n +0000379826 00000 n +0000380202 00000 n +0000380578 00000 n +0000380954 00000 n +0000381339 00000 n +0000381395 00000 n +0000381771 00000 n +0000382147 00000 n +0000382523 00000 n +0000382899 00000 n +0000383275 00000 n +0000383651 00000 n +0000384027 00000 n +0000384403 00000 n +0000384779 00000 n +0000385155 00000 n +0000385531 00000 n +0000386914 00000 n +0000386985 00000 n +0000387197 00000 n +0000387268 00000 n +0000387480 00000 n +0000387551 00000 n +0000387739 00000 n +0000387810 00000 n +0000388022 00000 n +0000388093 00000 n +0000388305 00000 n +0000388376 00000 n +0000388743 00000 n +0000388905 00000 n +0000389802 00000 n +0000389873 00000 n +0000389944 00000 n +0000390015 00000 n +0000390086 00000 n +0000390157 00000 n +0000390228 00000 n +0000390299 00000 n +0000390370 00000 n +0000390441 00000 n +0000390512 00000 n +0000390583 00000 n +0000390654 00000 n +0000390866 00000 n +0000390937 00000 n +0000387142 00000 n +0000387425 00000 n +0000387967 00000 n +0000388250 00000 n +0000388667 00000 n +0000388829 00000 n +0000390811 00000 n +0000391605 00000 n +0000391766 00000 n +0000391936 00000 n +0000391529 00000 n +0000391690 00000 n +0000391860 00000 n +0000395155 00000 n +0000395305 00000 n +0000395455 00000 n +0000395824 00000 n +0000395974 00000 n +0000395079 00000 n +0000395229 00000 n +0000395379 00000 n +0000395748 00000 n +0000395898 00000 n +0000397098 00000 n +0000397247 00000 n +0000397396 00000 n +0000397545 00000 n +0000397870 00000 n +0000398082 00000 n +0000398153 00000 n +0000398429 00000 n +0000398500 00000 n +0000397022 00000 n +0000397171 00000 n +0000397320 00000 n +0000397469 00000 n +0000398027 00000 n +0000398319 00000 n +0000398374 00000 n +0000399711 00000 n +0000399860 00000 n +0000400626 00000 n +0000400776 00000 n +0000400926 00000 n +0000401076 00000 n +0000401226 00000 n +0000401376 00000 n +0000401526 00000 n +0000401676 00000 n +0000399635 00000 n +0000399784 00000 n +0000400550 00000 n +0000400700 00000 n +0000400850 00000 n +0000401000 00000 n +0000401150 00000 n +0000401300 00000 n +0000401450 00000 n +0000401600 00000 n +0000402935 00000 n +0000403085 00000 n +0000403235 00000 n +0000403385 00000 n +0000403535 00000 n +0000403904 00000 n +0000404054 00000 n +0000402859 00000 n +0000403009 00000 n +0000403159 00000 n +0000403309 00000 n +0000403459 00000 n +0000403828 00000 n +0000403978 00000 n +0000404782 00000 n +0000405205 00000 n +0000405354 00000 n +0000405503 00000 n +0000405652 00000 n +0000404858 00000 n +0000405281 00000 n +0000405430 00000 n +0000405579 00000 n +0000405728 00000 n +0000406937 00000 n +0000407087 00000 n +0000406861 00000 n +0000407011 00000 n +0000408176 00000 n +0000408246 00000 n +0000408627 00000 n +0000408776 00000 n +0000408925 00000 n +0000409075 00000 n +0000409714 00000 n +0000410048 00000 n +0000410426 00000 n +0000410576 00000 n +0000410726 00000 n +0000408121 00000 n +0000408551 00000 n +0000408700 00000 n +0000408849 00000 n +0000408999 00000 n +0000409638 00000 n +0000409972 00000 n +0000410350 00000 n +0000410500 00000 n +0000410650 00000 n +0000413017 00000 n +0000413166 00000 n +0000413316 00000 n +0000413466 00000 n +0000413616 00000 n +0000412941 00000 n +0000413090 00000 n +0000413240 00000 n +0000413390 00000 n +0000413540 00000 n +0000415361 00000 n +0000415285 00000 n +0000417010 00000 n +0000417161 00000 n +0000417312 00000 n +0000417463 00000 n +0000416933 00000 n +0000417084 00000 n +0000417235 00000 n +0000417386 00000 n +0000422823 00000 n +0000422974 00000 n +0000423125 00000 n +0000423276 00000 n +0000422746 00000 n +0000422897 00000 n +0000423048 00000 n +0000423199 00000 n +0000426262 00000 n +0000426413 00000 n +0000426564 00000 n +0000426715 00000 n +0000426185 00000 n +0000426336 00000 n +0000426487 00000 n +0000426638 00000 n +0000426900 00000 n +0000427330 00000 n +0000427480 00000 n +0000427630 00000 n +0000427780 00000 n +0000426977 00000 n +0000427407 00000 n +0000427557 00000 n +0000427707 00000 n +0000427857 00000 n +0000428155 00000 n +0000428732 00000 n +0000429027 00000 n +0000429322 00000 n +0000429617 00000 n +0000429912 00000 n +0000430207 00000 n +0000430502 00000 n +0000428078 00000 n +0000428655 00000 n +0000428950 00000 n +0000429245 00000 n +0000429540 00000 n +0000429835 00000 n +0000430130 00000 n +0000430425 00000 n +0000431144 00000 n +0000431437 00000 n +0000431730 00000 n +0000432023 00000 n +0000432316 00000 n +0000432698 00000 n +0000432849 00000 n +0000433000 00000 n +0000433798 00000 n +0000433949 00000 n +0000431067 00000 n +0000431360 00000 n +0000431653 00000 n +0000431946 00000 n +0000432239 00000 n +0000432621 00000 n +0000432772 00000 n +0000432923 00000 n +0000433721 00000 n +0000433872 00000 n +0000435313 00000 n +0000435464 00000 n +0000435615 00000 n +0000435236 00000 n +0000435387 00000 n +0000435538 00000 n +0000436867 00000 n +0000437018 00000 n +0000436790 00000 n +0000436941 00000 n +0000438797 00000 n +0000438950 00000 n +0000438719 00000 n +0000438872 00000 n +0000440439 00000 n +0000440591 00000 n +0000440743 00000 n +0000440895 00000 n +0000441047 00000 n +0000441640 00000 n +0000441793 00000 n +0000440361 00000 n +0000440513 00000 n +0000440665 00000 n +0000440817 00000 n +0000440969 00000 n +0000441562 00000 n +0000441715 00000 n +0000444814 00000 n +0000444966 00000 n +0000444736 00000 n +0000444888 00000 n +0000447629 00000 n +0000447782 00000 n +0000447935 00000 n +0000447551 00000 n +0000447704 00000 n +0000447857 00000 n +0000450847 00000 n +0000451000 00000 n +0000450769 00000 n +0000450922 00000 n +0000453440 00000 n +0000453593 00000 n +0000453746 00000 n +0000453899 00000 n +0000454052 00000 n +0000454205 00000 n +0000454358 00000 n +0000454511 00000 n +0000453362 00000 n +0000453515 00000 n +0000453668 00000 n +0000453821 00000 n +0000453974 00000 n +0000454127 00000 n +0000454280 00000 n +0000454433 00000 n +0000456245 00000 n +0000456398 00000 n +0000456551 00000 n +0000456167 00000 n +0000456320 00000 n +0000456473 00000 n +0000457522 00000 n +0000457674 00000 n +0000457444 00000 n +0000457596 00000 n +0000459169 00000 n +0000459321 00000 n +0000459473 00000 n +0000459625 00000 n +0000459777 00000 n +0000459091 00000 n +0000459243 00000 n +0000459395 00000 n +0000459547 00000 n +0000459699 00000 n +0000462987 00000 n +0000463139 00000 n +0000463291 00000 n +0000464262 00000 n +0000464415 00000 n +0000462909 00000 n +0000463061 00000 n +0000463213 00000 n +0000464184 00000 n +0000464337 00000 n +0000465390 00000 n +0000465543 00000 n +0000465696 00000 n +0000465849 00000 n +0000466002 00000 n +0000466644 00000 n +0000466797 00000 n +0000466950 00000 n +0000467103 00000 n +0000467256 00000 n +0000467409 00000 n +0000467562 00000 n +0000467715 00000 n +0000465312 00000 n +0000465465 00000 n +0000465618 00000 n +0000465771 00000 n +0000465924 00000 n +0000466566 00000 n +0000466719 00000 n +0000466872 00000 n +0000467025 00000 n +0000467178 00000 n +0000467331 00000 n +0000467484 00000 n +0000467637 00000 n +0000472685 00000 n +0000472838 00000 n +0000472991 00000 n +0000473144 00000 n +0000472607 00000 n +0000472760 00000 n +0000472913 00000 n +0000473066 00000 n +0000474625 00000 n +0000474778 00000 n +0000475419 00000 n +0000475572 00000 n +0000475725 00000 n +0000475878 00000 n +0000476345 00000 n +0000476714 00000 n +0000477092 00000 n +0000477245 00000 n +0000474547 00000 n +0000474700 00000 n +0000475341 00000 n +0000475494 00000 n +0000475647 00000 n +0000475800 00000 n +0000476267 00000 n +0000476636 00000 n +0000477014 00000 n +0000477167 00000 n +0000477396 00000 n +0000477474 00000 n +trailer +<</Size 2541/Root 204 0 R/Info 202 0 R/ID [<d0719e6658ec5a4c8190d0b18623aba1><8cc13f663fe66ae64223ff1f9fcca56f>]>> +%iText-5.5.7 +startxref +1093420 +%%EOF diff --git a/lombok.config b/lombok.config new file mode 100644 index 00000000..7a21e880 --- /dev/null +++ b/lombok.config @@ -0,0 +1 @@ +lombok.addLombokGeneratedAnnotation = true @@ -10,39 +10,54 @@ <name>MS specific eIDAS components</name> - <properties> + <properties> <!-- Project versions --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> + <egiz.eidas.version>${project.version}</egiz.eidas.version> <!-- ===================================================================== --> <egiz-spring-api>0.3</egiz-spring-api> <egiz-eventlog-slf4jBackend>0.4</egiz-eventlog-slf4jBackend> - <eaaf-core.version>1.1.10-SNAPSHOT</eaaf-core.version> - <org.springframework.version>5.2.9.RELEASE</org.springframework.version> + <eaaf-core.version>1.1.11</eaaf-core.version> + + <spring-boot-starter-web.version>2.4.1</spring-boot-starter-web.version> + <spring-boot-admin-starter-client.version>2.3.1</spring-boot-admin-starter-client.version> + <org.springframework.version>5.3.2</org.springframework.version> <org.thymeleaf-spring5.version>3.0.11.RELEASE</org.thymeleaf-spring5.version> - <cxf.version>3.4.0</cxf.version> + <cxf.version>3.4.1</cxf.version> + + <eidas-ref.version>2.5.0</eidas-ref.version> <org.apache.commons-lang3.version>3.11</org.apache.commons-lang3.version> <org.apache.commons-text.version>1.9</org.apache.commons-text.version> <commons-collections4.version>4.4</commons-collections4.version> - <com.google.guava.version>29.0-jre</com.google.guava.version> - <joda-time.version>2.10.6</joda-time.version> + <com.google.guava.version>30.0-jre</com.google.guava.version> + <joda-time.version>2.10.8</joda-time.version> <org.slf4j.version>1.7.30</org.slf4j.version> - <jackson-datatype-jsr310.version>2.11.3</jackson-datatype-jsr310.version> - - + <jackson-datatype-jsr310.version>2.12.0</jackson-datatype-jsr310.version> + <!-- org.xerial.sqlite-jdbc.version>3.34.0</org.xerial.sqlite-jdbc.version --> + + <javax.validation-api.version>2.0.1.Final</javax.validation-api.version> + <hibernate-validator.version>6.1.5.Final</hibernate-validator.version> + <!-- testing --> - <junit.version>4.13</junit.version> + <junit.version>4.13.1</junit.version> <surefire.version>2.22.2</surefire.version> <mockito-soap-cxf.version>1.0.5</mockito-soap-cxf.version> + <com.squareup.okhttp3.version>4.0.0</com.squareup.okhttp3.version> <!-- Code quality checks --> <jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version> <maven-checkstyle-plugin.version>3.1.1</maven-checkstyle-plugin.version> - <maven-pmd-plugin.version>3.13.0</maven-pmd-plugin.version> - <spotbugs-maven-plugin.version>4.0.4</spotbugs-maven-plugin.version> + <maven-pmd-plugin.version>3.14.0</maven-pmd-plugin.version> + <spotbugs-maven-plugin.version>4.1.4</spotbugs-maven-plugin.version> + <findsecbugs-plugin.version>1.11.0</findsecbugs-plugin.version> + + <dependency-check-maven.version>6.0.3</dependency-check-maven.version> <license.outputDirectory>${project.build.directory}/thirdparty_licenses</license.outputDirectory> <pmw_rules_location>https://apps.egiz.gv.at/checkstyle/egiz_pmd_checks.xml</pmw_rules_location> @@ -95,6 +110,7 @@ <module>connector_lib</module> <module>connector</module> <module>eidas_modules</module> + <module>build_reporting</module> </modules> <dependencyManagement> @@ -117,10 +133,21 @@ </dependency> <dependency> <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf-springboot-utils</artifactId> + <version>${eaaf-core.version}</version> + </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> <artifactId>eaaf_module_pvp2_idp</artifactId> <version>${eaaf-core.version}</version> </dependency> <dependency> + <groupId>at.asitplus.eidas.ms_specific</groupId> + <artifactId>ms_specific_connector</artifactId> + <type>war</type> + <version>${egiz.eidas.version}</version> + </dependency> + <dependency> <groupId>at.asitplus.eidas.ms_specific.modules</groupId> <artifactId>authmodule-eIDAS-v2</artifactId> <version>${egiz.eidas.version}</version> @@ -136,9 +163,66 @@ <version>${egiz.eidas.version}</version> </dependency> + <!-- eIDAS reference implemenation libs --> + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-commons</artifactId> + <version>${eidas-ref.version}</version> + <!--scope>provided</scope --> + <exclusions> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + <exclusion> + <artifactId>log4j-over-slf4j</artifactId> + <groupId>org.slf4j</groupId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-light-commons</artifactId> + <version>${eidas-ref.version}</version> + </dependency> + + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-specific-communication-definition</artifactId> + <version>${eidas-ref.version}</version> + </dependency> + + <dependency> + <groupId>eu.eidas</groupId> + <artifactId>eidas-jcache-ignite-specific-communication</artifactId> + <version>${eidas-ref.version}</version> + </dependency> + <!-- Third party libs --> <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + <version>${spring-boot-starter-web.version}</version> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + <version>${spring-boot-starter-web.version}</version> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + <version>${spring-boot-starter-web.version}</version> + </dependency> + <dependency> + <groupId>de.codecentric</groupId> + <artifactId>spring-boot-admin-starter-client</artifactId> + <version>${spring-boot-admin-starter-client.version}</version> + </dependency> + + <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework.version}</version> @@ -209,6 +293,16 @@ <artifactId>jackson-datatype-jsr310</artifactId> <version>${jackson-datatype-jsr310.version}</version> </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + <version>${javax.validation-api.version}</version> + </dependency> + <dependency> + <groupId>org.hibernate.validator</groupId> + <artifactId>hibernate-validator</artifactId> + <version>${hibernate-validator.version}</version> + </dependency> <!-- Testing --> @@ -225,6 +319,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <version>${spring-boot-starter-web.version}</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>com.github.skjolber</groupId> <artifactId>mockito-soap-cxf</artifactId> <version>${mockito-soap-cxf.version}</version> @@ -244,6 +344,25 @@ <scope>test</scope> <type>test-jar</type> </dependency> + <dependency> + <groupId>at.gv.egiz.eaaf</groupId> + <artifactId>eaaf_module_pvp2_sp</artifactId> + <version>${eaaf-core.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>at.asitplus.eidas.ms_specific</groupId> + <artifactId>connector_lib</artifactId> + <version>${egiz.eidas.version}</version> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>mockwebserver</artifactId> + <version>${com.squareup.okhttp3.version}</version> + <scope>test</scope> + </dependency> </dependencies> </dependencyManagement> <dependencies> @@ -267,7 +386,28 @@ <source>1.8</source> <target>1.8</target> </configuration> + <executions> + <execution> + <goals> + <goal>compile</goal> + <goal>testCompile</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>3.1.0</version> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> </plugin> + <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> @@ -303,6 +443,24 @@ <version>${maven-assembly-plugin.version}</version> </plugin> + <plugin> + <groupId>org.owasp</groupId> + <artifactId>dependency-check-maven</artifactId> + <version>${dependency-check-maven.version}</version> + <configuration> + <failBuildOnCVSS>11</failBuildOnCVSS> + <failOnError>false</failOnError> + </configuration> + <executions> + <execution> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> </pluginManagement> <plugins> @@ -453,6 +611,13 @@ </executions> <configuration> <failOnError>true</failOnError> + <plugins> + <plugin> + <groupId>com.h3xstream.findsecbugs</groupId> + <artifactId>findsecbugs-plugin</artifactId> + <version>${findsecbugs-plugin.version}</version> + </plugin> + </plugins> </configuration> </plugin> </plugins> @@ -479,4 +644,4 @@ </plugin> </plugins> </reporting> -</project>
\ No newline at end of file +</project> |