aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml55
-rw-r--r--basicConfig/default_config.properties67
-rw-r--r--basicConfig/templates/error_message.html4
-rw-r--r--build_reporting/pom.xml75
-rw-r--r--connector/checks/spotbugs-exclude.xml27
-rw-r--r--connector/pom.xml154
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java10
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificSpringBootApplicationContextInitializer.java82
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/SpringBootApplicationInitializer.java105
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java170
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/SpringInitializer.java186
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java6
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java77
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java87
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/controller/MonitoringController.java278
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java69
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java52
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/health/Saml2MetadataHealthIndicator.java44
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java11
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java4
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java32
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java2
-rw-r--r--connector/src/main/resources/application.properties148
-rw-r--r--connector/src/main/resources/applicationContext.xml23
-rw-r--r--connector/src/main/resources/log4j.properties55
-rw-r--r--connector/src/main/resources/logback.xml20
-rw-r--r--connector/src/main/resources/specific_eIDAS_connector.beans.xml26
-rw-r--r--connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml9
-rw-r--r--connector/src/main/resources/tomcat.properties15
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthenticationDataBuilderTest.java107
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java485
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassExecutableModeTest.java113
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/MainClassWebAppModeTest.java134
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java19
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java32
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java137
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java77
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java70
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java102
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java337
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java2
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java2
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java354
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java (renamed from connector/src/test/java/at/asitplus/eidas/specific/connector/test/AuthnRequestValidatorTest.java)4
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java (renamed from connector/src/test/java/at/asitplus/eidas/specific/connector/test/CountrySelectionProcessImplTest.java)2
-rw-r--r--connector/src/test/resources/config/junit_config_1.properties17
-rw-r--r--connector/src/test/resources/config/junit_config_1_springboot.properties83
-rw-r--r--connector/src/test/resources/config/junit_config_2_springboot.properties83
-rw-r--r--connector/src/test/resources/config/junit_config_3.properties1
-rw-r--r--connector/src/test/resources/config/keys/Metadata.pem18
-rw-r--r--connector/src/test/resources/config/keys/teststore.jksbin0 -> 2028 bytes
-rw-r--r--connector/src/test/resources/config/templates/error_message.html4
-rw-r--r--connector/src/test/resources/data/metadata_expired.xml106
-rw-r--r--connector/src/test/resources/data/metadata_valid.xml106
-rw-r--r--connector/src/test/resources/data/metadata_valid_without_encryption.xml88
-rw-r--r--connector/src/test/resources/data/pvp2_authn_1.xml2
-rw-r--r--connector/src/test/resources/data/test_idl_1.xml46
-rw-r--r--connector/src/test/resources/spring/SpringTest-context_healthcheck.xml22
-rw-r--r--connector/src/test/resources/spring/SpringTest_connector.beans.xml (renamed from connector/src/main/resources/SpringTest_connector.beans.xml)7
-rw-r--r--connector_lib/checks/spotbugs-exclude.xml9
-rw-r--r--connector_lib/pom.xml32
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java7
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java6
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/BasicConfigurationProvider.java4
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/ServiceProviderConfiguration.java4
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/config/SpringBootBasicConfigurationProvider.java122
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGuiBuilderImpl.java2
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/StaticGuiBuilderConfiguration.java2
-rw-r--r--connector_lib/src/main/resources/common_gui.beans.xml60
-rw-r--r--connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java156
-rw-r--r--connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java54
-rw-r--r--connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/SpringBootBasicConfigurationProviderTest.java148
-rw-r--r--connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java112
-rw-r--r--connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java28
-rw-r--r--connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml25
-rw-r--r--connector_lib/src/test/resources/config/junit_config_1.properties124
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml31
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/pom.xml48
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/2.5.0/eidas-parent-2.5.0.pom898
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-javadoc.jarbin0 -> 1027681 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0-sources.jarbin0 -> 204524 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.jarbin0 -> 301282 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.5.0/eidas-commons-2.5.0.pom101
-rw-r--r--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.jarbin0 -> 30194 bytes
-rw-r--r--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.jarbin0 -> 4138 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.jarbin0 -> 6202 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.5.0/eidas-jcache-ignite-specific-communication-2.5.0.pom61
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-javadoc.jarbin0 -> 35711 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0-sources.jarbin0 -> 2840 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.jarbin0 -> 3859 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.5.0/eidas-jcache-ignite-2.5.0.pom94
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-javadoc.jarbin0 -> 441594 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0-sources.jarbin0 -> 89442 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.jarbin0 -> 128469 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.5.0/eidas-light-commons-2.5.0.pom55
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.5.0/eidas-parent-2.5.0.pom898
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-javadoc.jarbin0 -> 153396 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0-sources.jarbin0 -> 48969 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.jarbin0 -> 57695 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.5.0/eidas-specific-communication-definition-2.5.0.pom136
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/spotbugs_exclude.xml6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java12
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/EidasPersonalIdStoreDao.java158
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java1
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java54
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/AuthBlockSigningService.java6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java2
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java69
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java59
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java49
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java4
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java118
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml1
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java4
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java244
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java143
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java45
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java316
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java464
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskFirstTest.java122
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskSecondTest.java140
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java486
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskThirdTest.java106
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java27
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java193
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java139
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java (renamed from eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAttributePostProcessingTest.java)6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java (renamed from eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingFirstTest.java)15
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java (renamed from eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasRequestPreProcessingSecondTest.java)31
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java333
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_mapConfig.xml20
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_realConfig.xml25
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml8
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml6
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties1
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties2
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties114
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties116
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/junit.jksbin0 -> 5738 bytes
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/signed_eidasBind.jws1
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/szr/szr_resp_valid_2.xml50
-rw-r--r--infos/eIDAS_Ref_Impl/eIDAS-Node Migration Guide v2.5.pdf14427
-rw-r--r--lombok.config1
-rw-r--r--pom.xml191
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
new file mode 100644
index 00000000..fcc6400c
--- /dev/null
+++ b/connector/src/test/resources/config/keys/teststore.jks
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new 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
Binary files differ
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
new file mode 100644
index 00000000..a18df332
--- /dev/null
+++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/junit.jks
Binary files differ
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@�QEh U%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����R0 0jPh�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�-�MG 3�Ӫ
+�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�IPMe 0i�PfR�����5]���0�(����S#�� �Rh TS�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$���KREPEPEPMe 0E:�
+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^**)X T��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�X CKU�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��B 8�D��
+�Fہ$��j[h�Z:�m:H ��S�A�����������&5 ,��Ԁ�n����z{��Ͼ��s���~?l�/��{�������^�x$d;^��ޗІ�~�㟽�n� ���}�����*� ���w���*�t�����ַ�$,�Y俽/�����;w�4!,"�����}-�\(?����4ܓ�
+]TP����n hf�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���u y"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���ݫ�����7 w—���ݘ��֧�Ȗ��>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�r 7
+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�4׷A�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!+��yD1N5 Ph�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�Q OaW6�/�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*+ĵ��9׬n��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�,�Y l�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��1 3�|�n�����i�16=E�k�K3�9S��ʬ�O�Ni�o`3{X��K=J�����6ٴ[�wac1��>�L/t�C�yq��\�2�B���O۝F�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���hk q�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< ��!��R 2"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���z s!���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"�D x  �
+lIJ%�E������9���5��m���Ic��:�7 mv�� �¥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���Y FPV2e���K��`�+'�L��N��3E%��SE&s<���z8x��x$���E�g_�d��ppF���K)�->GGud�m���2�� 3 i�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���##��z X��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� �5 Q2(�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�����l s��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�*m IU�� ;\{!��!��$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������~ �NP%��Ȭ��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{��Mr V
+�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������pT f�ͦ�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;�(q׏Y(��*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�c9 3��%��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�c Z�` �+�>�����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���p4�|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�-�%c 8}��&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�����*������:�s΋z��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@]�����K˜g��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í�
+�8 V�)�&�����'
+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?܋�5 Q渁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�7 R��%���,�#?�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�-�f z���[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�����
+,?-K J_}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�Zg׫5�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❂��� s୛x�Ǧ�^˾� �����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��I F,��>�^�"��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�ڹ}�P C�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�2 O�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~W r����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�c P�'!
+���
+.�|�{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�")$ b C��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�%�j Si�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��0 HӮ��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��覩�T 9����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{'�J z������ �[�m��{�ʨ[b�+�!W d��M�ϊ�J��%U6a���z���S����]�m����{&r|ϝ�}g��ښI\��dh�`�rǠ yj⶟a@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!�'�&/{=�/�5򋳰0�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�W݌U[���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��L Fn���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&-1 x\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��pklY�+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�E T��:��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�W 5 �Xď(S�%�KK{uг���<'ww�ժn�ڊ����
+DA��R��ln��ū�6Y�k՘vC�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��‰�͝���<�)��o i▦�5� �OB�E[!��P�C޹q�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&� l K=�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 ��_=2 d8Μ��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����A 9���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;ߧ&Y Cd�=%��׆���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�m9 k��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;���s H��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��I΁i`¬*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Ȍ�4ŒE"%[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�����6΃xXsI�ƺ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#aUSr~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�"ۗ�FO zp���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�2 Jx�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�x’DuՔ�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�#���$ī�%�>�Ez޽G �?@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��� [n޺v�����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�<��=���HP z���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`͹�3߻s��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<͕�[Fw 5�=�$�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�bV 9�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ʉX m �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�H re ,�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��:� SŒcژ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���ա��v 7?����Xᷱ���'Vx��,�7>�I�(g�%�8y�<G^&o���˲�$q8LZa،$�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��X j�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�ҹ7t v>�����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�T3 8<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���PaV,����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\�����|���'@��a LbI�]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��ij4 5��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�y 7�\�]�`�� 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)h b�-��
+h��\L���i�bbP1(��F J#��҈AiĠ4bP1(��FK�Ӓ�d:-�NK�� b�A 2�A1� � �d� b�A 2�A-���_J�/��� b�A 2�A1� � �d� b�A 2�A� �d� b�A 2�A1� � oJǛ��t�)oJǛ��t�)�d� b�A 2�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}�����Qt G��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ţ���q񑀎G�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���M�=JLT����w [CO�{�='������~��Z��^����{�Y�W&�Jc^ʧ��lK# �Wⵤ3r໵h����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�@N LP"�
+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���a 3@;&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�Y C��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����u X�/��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'��;������w h�����^,�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�(�FFC 2� �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�~�����a r �� �"�������`+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�enš86.���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��L u1�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�7 RF��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�� �5 bE;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!��������6 9����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�ΖM f�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�C 02���!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�40 CA:��`$� ��������/�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ق�\�ಅ�`�-Xa V��-�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�a s`��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���@51PM T��@51PM Tձ�����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��H 3�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��&?@1򃾢u�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�ۯh 4���ȡ@���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�0 0
+�� 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��8 J��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�x z�� �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�K BI��)%�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ҙ��p I�!^�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���d zS�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�� ��C j�;� Q�`�X�y�VԥІ� �Q�� ���N�#`I�-8��r8 u,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���`0 F���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�ޭ +�M S�����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���+����sWGs��`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�V5��|��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�P9j‡Hz����~���^�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�50 dN3[����}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�z6lm�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
+�%N 8��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�ʪB؀s����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^՝v v�i@6��/
+���L 6b�Ѡ;�_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�> ޡ�M I燎
+ :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���t C���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�칒������{&O T�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[�L׊tc,�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��w r�ց�⧞�}��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�F޵i�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�?��'�!� |�\˽��
+Ʉ��W B\��޿!�#ӆ<��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\@I d�_
+%�7�������L�ͦY"�2����H� �x�#Q$Q� �=z㈱�����G�>���1H��6W7�"4",FhF؅p 7!܂p;��#Dx�Y�� |�g ry��_�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(Z vE�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 �}W򊷢d|��/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
+s‡Qb����<��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�.�u c�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�Tg U������ ���Op���)����ۘ�3����c*���ޘI�m�c�v�3fYK ����R�1y��*�R'1�3�HNc��#U�����
+]L l�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��jx xB�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�ư�!~ 2 a� �0ChB#M�u��M�cX��z\�|�8�1�L�r k\b k\�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�Q׉5DZ&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�f k��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�H I��� ` 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�- 3 S&�� 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 y Pz&��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�cF f�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���vEQO4 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�8۝O��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�F c@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�龓��,����<�����-�ZZ ZZ
+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�l M_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]�:^�D›k[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�g x�<��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���i t��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��>��մ_���C 9���?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���#��G wD�^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�[X 3��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�x zm�&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��ff֌X6}�����'�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�0 S��_��������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�F h6 W�_����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��[�-���|�f 4Y�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�A 4h�-Р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
+��$�Q؂Q�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��O0h1 z;�
+�`�
+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��
+��^
+el���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"a R
+����€\ �ʁ�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ڪ����56 7���~��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��+cEg F��/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�ͽ.7 4M�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?s u��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�z H�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��������'�"���*d ch��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`#r ju6�"��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�/��l޾G/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����P N����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��6 o�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�t X\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]S 2mTo*��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��BT Q%�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�)�!6 q����ŵ��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,Q Q4UpQ'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�9 y��'/.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<9•W;��3�3B��,t��g*GxSO�(�(%�� ��i�l/�
+��&b�"����9V���]H�sZ�k#o ym�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����
++`%��x VC!���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�KˆxxXR��%�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�r 7����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 ���F k��F k��F k��D K��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ڃ�؇we�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���o oІ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�'WV r�ʞ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�� �+X DƍDƋ�����������'2�!2��H~���{d���Q~���{�)�GG�=:��ɠ����(�GG�=��ߣ���L���Q~ϛ�����̤��/R~O3���M�=-�ߓ R�n�2��g���\! �I���6�!G����sE0 f�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�����g Q �Ϗ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�rl u�:���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���o tҷ=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���
+�/�Gj c����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� L Hr9I� ̢>�z��������@���!mXA��6�0�4P#gVɥ��d�G�� �f�OS`��� l�9��G�5���W��
+l�yXh � �y�G�'g���Vzv��.��ʂB �?3h f�]��`^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��̨9 5�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 �wžZ�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�·�?@� #�z5 R�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���\*WI i#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�l o�]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
+�+p u7�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����bd 9�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#2 7'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ʘ����m tlV�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�1 3Y�ՠ�� �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���d X�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����J q*Q��!�9�/@}]#�f�4:ΒF[����X7(cP��4��L��V��%����i�����<J�j� �����7�N��+����lBM�cZ�5���K��K��d��FG0_�Ͱ�`B����9 :g S��^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��F J}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���U Y)+���#�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� c S � 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�ɍ�r M���΄���)����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�<�C򪛭WZ�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��������U KJ��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"Iu 3c0��=�����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�G m�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�P 5�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 ��P3 5�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��S 9��S 9��S 9��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�f v���`�ɰ�;$�ɰ�f v�`��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�3 pf�,��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[$akGk���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�gOb s���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�Fb��'��_��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�:������2ˆ0#�߉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��0J V5�-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!P Vm��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�u S��Ӓ��㴶�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�u S��Ӓ���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�\�Xzn f3���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 O l~�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�����z MX��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�yc.�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��q 8Ε���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}��/)ybCC����ݹ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����ܛ��4L j?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��U s��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��w x��{ú�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�P T�_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:���UPV𲒗yyM�
+JB�賄*2"!�n@\��}���B��9ރ�xo*�)����G�8�VZ�m��H9�%��U��"�Cד�@q 7�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:Ҍ�29 iE��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���$G p�#p]��>>
+����z"ٖ�W�\=ciB�"C~��$�)���.�sȥ�E.C�D����G�dx�n��y��������@�!�I))��F���᫇-#��fd r�?�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��ͧ��M h��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ͯ����V׿SCR�: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�Sy5 j�,�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����HvŽIJx2�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�7Tvw�(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�"�=
+��ٽ
+Nt Br�-�+��˗���&�>� ����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�c O?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������au ̀�"<�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$�too����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_���25|ܽ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_!6؅vO���‰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���EMG�^�-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� :Ɗ�@`�x BS�-�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 $�ql g�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?0 i�/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��y 4��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$�Y SX����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'���N A&�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����t O�h-�Sh)�A+�,ZC�хt1m���J�����t�B;��D h����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����5h 1��*���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���-f N��Κ��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@X okdRi�%���Yk�|+g�g/Y^yu�k�ƺy[�䎪Zp��f��z t��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��m J����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�9޿Dƿc�_�xɿk�!�w���<�X�Ȗ1�2����hS�E ip�ab�xE�_/����K
+�a.E��:�#0l`�[ (�&�0
+�:����=�PN[0�R����B*H:��۫{��ϰ������נG Jω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
+a˜0��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��5vvb޽U�� 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�˕�9 O;�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�U kb ���}��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(�0 9���ˌ �� 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�ܱ�@X k!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���GŠh�=���%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��^?�礶bw؜6��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`0 c
+��ȣ�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`0 c
+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��-�����2֋qq�{
+
++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���r 1܈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����t t�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��?�*�A 04�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�_�X mq�`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�F e3d��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��ﭾ}�;V޲j�������{pp��q�;�{���ڹ�Ƕ�zrk0 �[���-�������<L[�?H�{�����2�S
+r(�9�R�q��:���������F�EެNag w�,�ױ?�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�Ǎf؜L2�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��"�0 n���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�;�V AI4�,+�'��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��>�"X b�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��YB Z�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��=EP A��$&<:���.�: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�|�#�y 9�.�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���3 gq-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! �*%��: %�2 u�2.�x���\�����>爃�c߹3�]k������~������q�4ͥ ��`��yd�@[ob���
+�G�{� l�
+
+� 7 K�)Êa֐
+�֍g@tsCs��,ͭ�����[{#�G�?� �>R��޶<R�63RB��o�߀���uXUS��"Z�+�EA`��`�q�������(�w�C!��`%Ēw�J�+�Ө����Y��Q�Q H�󨟣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��h 3� 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{N Fm�����=�=�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�;w c� �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�ֽ�;�����ǀ���&-����'�C J|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��t6�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�����������cx U�<�*�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>��/�����ȏV X��~��Q�$��ᴟ���D7�a�&�k��F
+��TX�(K�T�jbwX3��J�]�$�rV��(�mM%�ױF*�g�R������B��sݦp޿I�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Ήc 1Z����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-�%�<E O1S�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�Vx bW����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�_��P԰Z_���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�nm•9ea�>�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�lg j�ڱ�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��NYMW H���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
diff --git a/pom.xml b/pom.xml
index 2c14ea4a..46d02706 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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>