From 3467765ce80dcc42ca7e4fcb8a88425b5ab2ad9b Mon Sep 17 00:00:00 2001
From: michalovadek The function Currently, it is possible to choose from among a host of resource
types, including directives, regulations and even case law (see function
description for the full list). It is also possible to manually specify
@@ -401,52 +401,52 @@ elx_make_query()
: Generate SPARQL querieselx_make_query
takes as its first argument
the type of resource to be retrieved from the semantic database that
powers Eur-Lex (and other publications) called Cellar.library(eurlex)
-library(dplyr)
-
-<- elx_make_query(resource_type = "directive") query_dir
list.1elx_make_query()
: Generate SPARQL queries
The choice of resource type is then reflected in the SPARQL query generated by the function:
-%>%
- query_dir cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/DIR>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_DEL>)
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
-
-elx_make_query(resource_type = "caselaw") %>%
-cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/JUDG>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/ORDER>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/OPIN_JUR>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/THIRDPARTY_PROCEED>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/GARNISHEE_ORDER>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RULING>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/JUDG_EXTRACT>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/INFO_JUDICIAL>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/VIEW_AG>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/OPIN_AG>)
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
-
-elx_make_query(resource_type = "manual", manual_type = "SWD") %>%
-cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type.FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/SWD>)
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
query_dir %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/DIR>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_DEL>)
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
+
+elx_make_query(resource_type = "caselaw") %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/JUDG>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/ORDER>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/OPIN_JUR>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/THIRDPARTY_PROCEED>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/GARNISHEE_ORDER>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RULING>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/JUDG_EXTRACT>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/INFO_JUDICIAL>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/VIEW_AG>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/OPIN_AG>)
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
+
+elx_make_query(resource_type = "manual", manual_type = "SWD") %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex where{ ?work cdm:work_has_resource-type ?type.FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/SWD>)
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
There are various ways of querying the same information in the Cellar database due to the existence of several overlapping classes and identifiers describing the same resources. The queries generated by the @@ -467,47 +467,47 @@
elx_make_query()
: Generate SPARQL querieselx_make_query(resource_type = "directive", include_date = TRUE, include_force = TRUE) %>%
-cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex ?date ?force where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/DIR>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_DEL>)
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} OPTIONAL{?work cdm:work_date_document ?date.} OPTIONAL{?work cdm:resource_legal_in-force ?force.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
-
-# minimal query: elx_make_query(resource_type = "directive")
-
-elx_make_query(resource_type = "recommendation", include_date = TRUE, include_lbs = TRUE) %>%
-cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex ?date ?lbs ?lbcelex ?lbsuffix where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/RECO>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DEC>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DIR>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_OPIN>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_RES>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_REG>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_RECO>||
-#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DRAFT>)
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} OPTIONAL{?work cdm:work_date_document ?date.} OPTIONAL{?work cdm:resource_legal_based_on_resource_legal ?lbs.
-#> ?lbs cdm:resource_legal_id_celex ?lbcelex.
-#> OPTIONAL{?bn owl:annotatedSource ?work.
-#> ?bn owl:annotatedProperty <http://publications.europa.eu/ontology/cdm#resource_legal_based_on_resource_legal>.
-#> ?bn owl:annotatedTarget ?lbs.
-#> ?bn annot:comment_on_legal_basis ?lbsuffix}} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
-
-# minimal query: elx_make_query(resource_type = "recommendation")
elx_make_query(resource_type = "directive", include_date = TRUE, include_force = TRUE) %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex ?date ?force where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/DIR>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/DIR_DEL>)
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} OPTIONAL{?work cdm:work_date_document ?date.} OPTIONAL{?work cdm:resource_legal_in-force ?force.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
+
+# minimal query: elx_make_query(resource_type = "directive")
+
+elx_make_query(resource_type = "recommendation", include_date = TRUE, include_lbs = TRUE) %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex ?date ?lbs ?lbcelex ?lbsuffix where{ ?work cdm:work_has_resource-type ?type. FILTER(?type=<http://publications.europa.eu/resource/authority/resource-type/RECO>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DEC>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DIR>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_OPIN>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_RES>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_REG>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_RECO>||
+#> ?type=<http://publications.europa.eu/resource/authority/resource-type/RECO_DRAFT>)
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} OPTIONAL{?work cdm:work_date_document ?date.} OPTIONAL{?work cdm:resource_legal_based_on_resource_legal ?lbs.
+#> ?lbs cdm:resource_legal_id_celex ?lbcelex.
+#> OPTIONAL{?bn owl:annotatedSource ?work.
+#> ?bn owl:annotatedProperty <http://publications.europa.eu/ontology/cdm#resource_legal_based_on_resource_legal>.
+#> ?bn owl:annotatedTarget ?lbs.
+#> ?bn annot:comment_on_legal_basis ?lbsuffix}} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
+
+# minimal query: elx_make_query(resource_type = "recommendation")
You can also decide to not specify any resource types, in which case all types of documents will be returned. As there are over a million documents with a CELEX identifier, this is likely not efficient for a @@ -515,36 +515,36 @@
elx_make_query()
: Generate SPARQL queries# request documents from directory 18 ("Common Foreign and Security Policy")
-# and sector 3 ("Legal acts")
-
-elx_make_query(resource_type = "any",
-directory = "18",
- sector = 3) %>%
- cat()
- #> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
-#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
-#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
-#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
-#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
-#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
-#> select distinct ?work ?type ?celex where{
-#> VALUES (?value)
-#> { (<http://publications.europa.eu/resource/authority/fd_555/18>)
-#> (<http://publications.europa.eu/resource/authority/dir-eu-legal-act/18>)
-#> }
-#> {?work cdm:resource_legal_is_about_concept_directory-code ?value.
-#> }
-#> UNION
-#> {?work cdm:resource_legal_is_about_concept_directory-code ?directory.
-#> ?value skos:narrower+ ?directory.
-#> }
-#>
-#> ?work cdm:resource_legal_id_sector ?sector.
-#> FILTER(str(?sector)='3')
-#>
-#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
# request documents from directory 18 ("Common Foreign and Security Policy")
+# and sector 3 ("Legal acts")
+
+elx_make_query(resource_type = "any",
+ directory = "18",
+ sector = 3) %>%
+ cat()
+#> PREFIX cdm: <http://publications.europa.eu/ontology/cdm#>
+#> PREFIX annot: <http://publications.europa.eu/ontology/annotation#>
+#> PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
+#> PREFIX dc:<http://purl.org/dc/elements/1.1/>
+#> PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
+#> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+#> PREFIX owl:<http://www.w3.org/2002/07/owl#>
+#> select distinct ?work ?type ?celex where{
+#> VALUES (?value)
+#> { (<http://publications.europa.eu/resource/authority/fd_555/18>)
+#> (<http://publications.europa.eu/resource/authority/dir-eu-legal-act/18>)
+#> }
+#> {?work cdm:resource_legal_is_about_concept_directory-code ?value.
+#> }
+#> UNION
+#> {?work cdm:resource_legal_is_about_concept_directory-code ?directory.
+#> ?value skos:narrower+ ?directory.
+#> }
+#>
+#> ?work cdm:resource_legal_id_sector ?sector.
+#> FILTER(str(?sector)='3')
+#>
+#> FILTER not exists{?work cdm:work_has_resource-type <http://publications.europa.eu/resource/authority/resource-type/CORRIGENDUM>} OPTIONAL{?work cdm:resource_legal_id_celex ?celex.} FILTER not exists{?work cdm:do_not_index "true"^^<http://www.w3.org/2001/XMLSchema#boolean>}. }
Now that we have a query, we are ready to run it.
elx_run_query()
: Execute SPARQL queries<- elx_run_query(query = query_dir)
- results
-# the functions are compatible with piping
-#
-# elx_make_query("directive") %>%
-# elx_run_query()
as_tibble(results)
-#> # A tibble: 4,418 × 3
-#> work type celex
-#> <chr> <chr> <chr>
-#> 1 http://publications.europa.eu/resource/cellar/469391ea-6c79-4680-… http… 3197…
-#> 2 http://publications.europa.eu/resource/cellar/e8fcaf0d-443a-40ec-… http… 3198…
-#> 3 http://publications.europa.eu/resource/cellar/52639f5f-ecaf-4f99-… http… 3198…
-#> 4 http://publications.europa.eu/resource/cellar/c7560407-689b-4752-… http… 3196…
-#> # ℹ 4,414 more rows
results <- elx_run_query(query = query_dir)
+
+# the functions are compatible with piping
+#
+# elx_make_query("directive") %>%
+# elx_run_query()
as_tibble(results)
+#> # A tibble: 4,429 × 3
+#> work type celex
+#> <chr> <chr> <chr>
+#> 1 469391ea-6c79-4680-84aa-c33db274e271 DIR 31979L0173
+#> 2 e8fcaf0d-443a-40ec-b778-34b7d895d334 DIR 31989L0194
+#> 3 52639f5f-ecaf-4f99-b633-e954cea5c8f3 DIR 31984L0378
+#> 4 c7560407-689b-4752-9fb0-d0624ed83a19 DIR 31966L0683
+#> # ℹ 4,425 more rows
The function outputs a data.frame
where each column
corresponds to one of the requested variables, while the rows accumulate
observations of the resource type satisfying the query criteria.
@@ -587,21 +587,17 @@
elx_run_query()
: Execute SPARQL queriestype
to make the necessary
adjustments. The queries are expansive by default in the spirit of
erring on the side of over-inclusiveness rather than vice versa.
-head(results$type,5)
-#> [1] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [2] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [3] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [4] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [5] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-
-%>%
- results distinct(type)
- #> # A tibble: 3 × 1
-#> type
-#> <chr>
-#> 1 http://publications.europa.eu/resource/authority/resource-type/DIR
-#> 2 http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL
-#> 3 http://publications.europa.eu/resource/authority/resource-type/DIR_DEL
head(results$type,5)
+#> [1] "DIR" "DIR" "DIR" "DIR" "DIR"
+
+results %>%
+ distinct(type)
+#> # A tibble: 3 × 1
+#> type
+#> <chr>
+#> 1 DIR
+#> 2 DIR_IMPL
+#> 3 DIR_DEL
The data is returned in the long format, which means that rows are recycled up to the length of the variable with the most data points. For example, if 20 directives are returned, each with two legal bases, the @@ -616,69 +612,69 @@
-<- elx_make_query("recommendation", include_eurovoc = TRUE, limit = 10) %>%
- rec_eurovoc elx_run_query() # truncated results for sake of the example
-
-%>%
- rec_eurovoc select(celex, eurovoc)
- #> # A tibble: 10 × 2
-#> celex eurovoc
-#> <chr> <chr>
-#> 1 32012H0090 http://eurovoc.europa.eu/1425
-#> 2 31962H0816 http://eurovoc.europa.eu/1004
-#> 3 31974H0435 http://eurovoc.europa.eu/1085
-#> 4 31996H0592 http://eurovoc.europa.eu/1076
-#> # ℹ 6 more rows
+rec_eurovoc <- elx_make_query("recommendation", include_eurovoc = TRUE, limit = 10) %>%
+ elx_run_query() # truncated results for sake of the example
+
+rec_eurovoc %>%
+ select(celex, eurovoc)
+#> # A tibble: 10 × 2
+#> celex eurovoc
+#> <chr> <chr>
+#> 1 32012H0090 http://eurovoc.europa.eu/1425
+#> 2 31962H0816 http://eurovoc.europa.eu/1004
+#> 3 31974H0435 http://eurovoc.europa.eu/1085
+#> 4 31996H0592 http://eurovoc.europa.eu/1076
+#> # ℹ 6 more rows
By default, the endpoint returns the EuroVoc concept codes rather
than the labels (keywords). The function
elx_label_eurovoc()
needs to be called to obtain a look-up
table with the labels.
<- elx_label_eurovoc(uri_eurovoc = rec_eurovoc$eurovoc)
- eurovoc_lookup
-print(eurovoc_lookup)
-#> # A tibble: 9 × 2
-#> eurovoc labels
-#> <chr> <chr>
-#> 1 http://eurovoc.europa.eu/1085 France
-#> 2 http://eurovoc.europa.eu/1442 food inspection
-#> 3 http://eurovoc.europa.eu/1076 form
-#> 4 http://eurovoc.europa.eu/1318 Germany
-#> # ℹ 5 more rows
eurovoc_lookup <- elx_label_eurovoc(uri_eurovoc = rec_eurovoc$eurovoc)
+
+print(eurovoc_lookup)
+#> # A tibble: 9 × 2
+#> eurovoc labels
+#> <chr> <chr>
+#> 1 http://eurovoc.europa.eu/1085 France
+#> 2 http://eurovoc.europa.eu/1442 food inspection
+#> 3 http://eurovoc.europa.eu/1076 form
+#> 4 http://eurovoc.europa.eu/1318 Germany
+#> # ℹ 5 more rows
The results include labels only for unique identifiers, but with
dplyr::left_join()
it is straightforward to append the
labels to the entire dataset.
%>%
- rec_eurovoc left_join(eurovoc_lookup)
- #> Joining with `by = join_by(eurovoc)`
-#> # A tibble: 10 × 5
-#> work type celex eurovoc labels
-#> <chr> <chr> <chr> <chr> <chr>
-#> 1 http://publications.europa.eu/resource/cellar/e46f… http… 3201… http:/… consu…
-#> 2 http://publications.europa.eu/resource/cellar/120a… http… 3196… http:/… welfa…
-#> 3 http://publications.europa.eu/resource/cellar/123d… http… 3197… http:/… France
-#> 4 http://publications.europa.eu/resource/cellar/8a36… http… 3199… http:/… form
-#> # ℹ 6 more rows
rec_eurovoc %>%
+ left_join(eurovoc_lookup)
+#> Joining with `by = join_by(eurovoc)`
+#> # A tibble: 10 × 5
+#> work type celex eurovoc labels
+#> <chr> <chr> <chr> <chr> <chr>
+#> 1 e46f89c5-2db2-4157-9f24-644b32b64070 RECO 32012H0090 http://eurovoc.e… consu…
+#> 2 120a2b97-ef75-494e-ad48-1fa46932e26a RECO 31962H0816 http://eurovoc.e… welfa…
+#> 3 123da027-350c-4c61-bc40-8e46869b89cb RECO 31974H0435 http://eurovoc.e… France
+#> 4 8a363aee-7d70-4d41-b8df-3bf487320572 RECO 31996H0592 http://eurovoc.e… form
+#> # ℹ 6 more rows
As elsewhere in the API, we can tap into the multilingual nature of EU documents also when it comes to the EuroVoc keywords. Moreover, most concepts in the thesaurus are associated with alternative labels; these can be returned as well (separated by a comma).
-<- elx_label_eurovoc(uri_eurovoc = rec_eurovoc$eurovoc,
- eurovoc_lookup alt_labels = TRUE,
- language = "sk")
-
-%>%
- rec_eurovoc left_join(eurovoc_lookup) %>%
- select(celex, eurovoc, labels)
- #> Joining with `by = join_by(eurovoc)`
-#> # A tibble: 10 × 3
-#> celex eurovoc labels
-#> <chr> <chr> <chr>
-#> 1 32012H0090 http://eurovoc.europa.eu/1425 informácie pre spotrebiteľa,vzdeláva…
-#> 2 31962H0816 http://eurovoc.europa.eu/1004 blahobyt
-#> 3 31974H0435 http://eurovoc.europa.eu/1085 Francúzska republika,Francúzsko
-#> 4 31996H0592 http://eurovoc.europa.eu/1076 formulár
-#> # ℹ 6 more rows
eurovoc_lookup <- elx_label_eurovoc(uri_eurovoc = rec_eurovoc$eurovoc,
+ alt_labels = TRUE,
+ language = "sk")
+
+rec_eurovoc %>%
+ left_join(eurovoc_lookup) %>%
+ select(celex, eurovoc, labels)
+#> Joining with `by = join_by(eurovoc)`
+#> # A tibble: 10 × 3
+#> celex eurovoc labels
+#> <chr> <chr> <chr>
+#> 1 32012H0090 http://eurovoc.europa.eu/1425 informácie pre spotrebiteľa,vzdeláva…
+#> 2 31962H0816 http://eurovoc.europa.eu/1004 blahobyt
+#> 3 31974H0435 http://eurovoc.europa.eu/1085 Francúzska republika,Francúzsko
+#> 4 31996H0592 http://eurovoc.europa.eu/1076 formulár
+#> # ℹ 6 more rows
elx_fetch_data()
: Fire GET requests# the function is not vectorized by default
-# elx_fetch_data(url = results$work[1], type = "title")
-
-# we can use purrr::map() to play that role
-library(purrr)
-
-# wrapping in possibly() catches errors in case there is a server issue
-<- results[1:5,] %>% # take the first 5 directives only to save time
- dir_titles mutate(title = map_chr(work, possibly(elx_fetch_data, otherwise = NA_character_),
- "title")) %>%
- as_tibble() %>%
- select(celex, title)
-
-print(dir_titles)
-#> # A tibble: 5 × 2
-#> celex title
-#> <chr> <chr>
-#> 1 31979L0173 Council Directive 79/173/EEC of 6 February 1979 on the programme f…
-#> 2 31989L0194 Council Directive 89/194/EEC of 13 March 1989 amending Directive 6…
-#> 3 31984L0378 Council Directive 84/378/EEC of 28 June 1984 amending the Annexes …
-#> 4 31966L0683 Commission Directive 66/683/EEC of 7 November 1966 eliminating all…
-#> # ℹ 1 more row
# the function is not vectorized by default
+# elx_fetch_data(url = results$work[1], type = "title")
+
+# we can use purrr::map() to play that role
+library(purrr)
+
+# wrapping in possibly() would catch errors in case there is a server issue
+dir_titles <- results[1:5,] %>% # take the first 5 directives only to save time
+ mutate(work = paste("http://publications.europa.eu/resource/cellar/", work, sep = "")) |>
+ mutate(title = map_chr(work, possibly(elx_fetch_data, otherwise = NA_character_),
+ "title")) %>%
+ as_tibble() %>%
+ select(celex, title)
+
+print(dir_titles)
+#> # A tibble: 5 × 2
+#> celex title
+#> <chr> <chr>
+#> 1 31979L0173 Council Directive 79/173/EEC of 6 February 1979 on the programme f…
+#> 2 31989L0194 Council Directive 89/194/EEC of 13 March 1989 amending Directive 6…
+#> 3 31984L0378 Council Directive 84/378/EEC of 28 June 1984 amending the Annexes …
+#> 4 31966L0683 Commission Directive 66/683/EEC of 7 November 1966 eliminating all…
+#> # ℹ 1 more row
Note that text requests are by far the most time-intensive; requesting the full text for thousands of documents is liable to extend the run-time into hours. Texts are retrieved from html by priority, but @@ -729,63 +726,64 @@
In this section I showcase a simple application of
eurlex
on making overviews of EU legislation. First, we
collate data on directives.
<- elx_make_query(resource_type = "directive", include_date = TRUE, include_force = TRUE) %>%
- dirs elx_run_query()
dirs <- elx_make_query(resource_type = "directive", include_date = TRUE, include_force = TRUE) %>%
+ elx_run_query()
Let’s calculate the proportion of directives currently in force in the entire set of directives ever adopted. This variable offers a particularly good demonstration of the usefulness of the package to retrieve EU law data, because it changes every day, as new acts enter into force and old ones drop out. Regularly scraping webpages for this purpose and scale is simply impractical and disproportional.
-library(ggplot2)
-
-%>%
- dirs count(force) %>%
- ggplot(aes(x = force, y = n)) +
- geom_col()
Directives become naturally outdated with time. It might be all the more interesting to see which older acts are thus still surviving.
-%>%
- dirs filter(!is.na(force)) %>%
- mutate(date = as.Date(date)) %>%
- ggplot(aes(x = date, y = celex)) +
- geom_point(aes(color = force), alpha = 0.1) +
- theme(axis.text.y = element_blank(),
- axis.line.y = element_blank(),
- axis.ticks.y = element_blank())
dirs %>%
+ filter(!is.na(force)) %>%
+ mutate(date = as.Date(date)) %>%
+ ggplot(aes(x = date, y = celex)) +
+ geom_point(aes(color = force), alpha = 0.1) +
+ theme(axis.text.y = element_blank(),
+ axis.line.y = element_blank(),
+ axis.ticks.y = element_blank())
We want to know a bit more about some directives from the early 1970s that are still in force today. Their titles could give us a clue.
-<- dirs %>%
- dirs_1970_title filter(between(as.Date(date), as.Date("1970-01-01"), as.Date("1973-01-01")),
- == "true") %>%
- force mutate(title = map_chr(work, possibly(elx_fetch_data, otherwise = NA_character_),
- "title")) %>%
- as_tibble()
-
-print(dirs_1970_title)
-#> # A tibble: 10 × 6
-#> work type celex date force title
-#> <chr> <chr> <chr> <chr> <chr> <chr>
-#> 1 http://publications.europa.eu/resource/cellar/c… http… 3197… 1972… true Coun…
-#> 2 http://publications.europa.eu/resource/cellar/f… http… 3197… 1972… true Coun…
-#> 3 http://publications.europa.eu/resource/cellar/a… http… 3197… 1971… true Coun…
-#> 4 http://publications.europa.eu/resource/cellar/c… http… 3197… 1970… true Coun…
-#> # ℹ 6 more rows
dirs_1970_title <- dirs %>%
+ filter(between(as.Date(date), as.Date("1970-01-01"), as.Date("1973-01-01")),
+ force == "true") %>%
+ mutate(work = paste("http://publications.europa.eu/resource/cellar/", work, sep = "")) |>
+ mutate(title = map_chr(work, possibly(elx_fetch_data, otherwise = NA_character_),
+ "title")) %>%
+ as_tibble()
+
+print(dirs_1970_title)
+#> # A tibble: 10 × 6
+#> work type celex date force title
+#> <chr> <chr> <chr> <chr> <chr> <chr>
+#> 1 http://publications.europa.eu/resource/cellar/c… DIR 3197… 1972… true Coun…
+#> 2 http://publications.europa.eu/resource/cellar/f… DIR 3197… 1972… true Coun…
+#> 3 http://publications.europa.eu/resource/cellar/a… DIR 3197… 1971… true Coun…
+#> 4 http://publications.europa.eu/resource/cellar/c… DIR 3197… 1970… true Coun…
+#> # ℹ 6 more rows
I will use the tidytext
package to get a quick idea of
what the legislation is about.
library(tidytext)
-library(wordcloud)
-
-%>%
- dirs_1970_title select(celex,title) %>%
- unnest_tokens(word, title) %>%
- count(celex, word, sort = TRUE) %>%
- filter(!grepl("\\d", word)) %>%
- bind_tf_idf(word, celex, n) %>%
- with(wordcloud(word, tf_idf, max.words = 40))
library(tidytext)
+library(wordcloud)
+
+dirs_1970_title %>%
+ select(celex,title) %>%
+ unnest_tokens(word, title) %>%
+ count(celex, word, sort = TRUE) %>%
+ filter(!grepl("\\d", word)) %>%
+ bind_tf_idf(word, celex, n) %>%
+ with(wordcloud(word, tf_idf, max.words = 40))
I use term-frequency inverse-document frequency (tf-idf) to weight the importance of the words in the wordcloud. If we used pure frequencies, the wordcloud would largely consist of words conveying diff --git a/docs/articles/eurlexpkg.html b/docs/articles/eurlexpkg.html index 64c5359..f4ca074 100644 --- a/docs/articles/eurlexpkg.html +++ b/docs/articles/eurlexpkg.html @@ -321,14 +321,14 @@
as_tibble(results)
-#> # A tibble: 4,418 × 3
-#> work type celex
-#> <chr> <chr> <chr>
-#> 1 http://publications.europa.eu/resource/cellar/469391ea-6c79-4680-… http… 3197…
-#> 2 http://publications.europa.eu/resource/cellar/e8fcaf0d-443a-40ec-… http… 3198…
-#> 3 http://publications.europa.eu/resource/cellar/52639f5f-ecaf-4f99-… http… 3198…
-#> 4 http://publications.europa.eu/resource/cellar/c7560407-689b-4752-… http… 3196…
-#> # ℹ 4,414 more rows
The function outputs a data.frame
where each column
corresponds to one of the requested variables, while the rows accumulate
observations of the resource type satisfying the query criteria.
@@ -350,20 +350,16 @@
head(results$type,5)
-#> [1] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [2] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [3] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [4] "http://publications.europa.eu/resource/authority/resource-type/DIR"
-#> [5] "http://publications.europa.eu/resource/authority/resource-type/DIR"
+#> [1] "DIR" "DIR" "DIR" "DIR" "DIR"
results %>%
distinct(type)
#> # A tibble: 3 × 1
-#> type
-#> <chr>
-#> 1 http://publications.europa.eu/resource/authority/resource-type/DIR
-#> 2 http://publications.europa.eu/resource/authority/resource-type/DIR_IMPL
-#> 3 http://publications.europa.eu/resource/authority/resource-type/DIR_DEL
The data is returned in the long format, which means that rows are recycled up to the length of the variable with the most data points. For example, if 20 directives are returned, each with two legal bases, the @@ -418,12 +414,12 @@
As elsewhere in the API, we can tap into the multilingual nature of EU documents also when it comes to the EuroVoc keywords. Moreover, most @@ -471,8 +467,9 @@
I will use the tidytext
package to get a quick idea of
what the legislation is about.
)9%d27Qt6c`w|@wT+K|869@$`*R!txA2j*y&!%OjypgDpk|+o2Ub^a(jzL(?8Nw zYA=V%X|ds&gpOB*j+3eglb2<2_^S~S67E5N7fDX;q^Wl}N_uvA$3L80b_Ym$@PJhB z5h7>Mm^b*EsYK>@67y16=S*!ve2DhJ!6c@NU{q^I;%;PERVM>~X8@S8+p2V<@7}$8 zrBfc{4X&(=!FM`S=x#+Eyrtgbyj<6*8c*dkDRG;KRV*@}2g=xvGSF=w7+BJ5fZ5)K zT#{i!E*F5l^WKfR)}y}*VMppi>(MnJ*>t{Y!D7z2yH7~dd_(%U@nm-V7ESLT(M?T| zX6mnWO4u~GPN`SCtzX$58yj0tzjFw_!9XTHKE5_iHT}cy<0dl;EB}1l=)Bmo#_fa4 z+OQif&U>TB|5h=i-=`CKI{iMGH%6{U6m&Q(J*y^$%ozfWYtv*`S6?rOUs_sHyb-IA zP4cAJK?-tuJLq0u&P&2fUYhUfjX%3;7q7pIz8S04m?8CR2%nD3T0@$dnPDU4sLdXX zYA?EESI!wyQgXd~5ljG}*GE7EDyyh?^(=O}szurNyQMPYG?GEw55W>>C4#ciOQPEl zLST#re{oV4ZV2@#XAh?ZtozMq)8@@JkVJ`tZ?3JcEgusLYjLr)wLPnq4DJRjv~}5E z6`cX~6XX5*<2kDZnQRyiPCbibloUKo;k-BIo{|at_{i(Sge2Y4%aAC$s zsP0NRXs@U7lw`%dM-}(2QOC2)^itnlR-9bXOSVSaTJ&AGT)wo2ys~>PhWqx z&w3IGmjd(5;C?ZiYCea?w`cW~vB#bC;vtKR)x)H3!+U;gc;t24(Ab!PjE>34i)yZI z4gU~=-1$OsVr7Il 8Yi$?BqE^7k77e%5pu8mORHu&nnpw zsXcuJNjUAf_a_79+nv0)b9Bahrw47KyObtn)u}3sR@TKItS*TtrH{F;b3%G1;gy&| ztt1Jv-03v=ixq2lO;1+)C&FTz|Bb%@fv$tHL1%tBei?`VmT@rZRwW+`NZr+CX`b1d zyCA)3lXK;D^eEV<#S0aGCr8KWh6Cab08!w;Q7bBb2Inh=D~>)8b|Y`A( =kQWbK5=aEwD;Y=n-15!wJsnAc zPlerou{C@lMV1RV8XO$FT}DQ5YZ=G;%4X`dqHwVCtB-1Hqc<_LM-`=hte)}iQgy<- z6Cs)aY2N&rvEVv6qjOnrE*k-7faGhO>(N_|K33|>tdZB9x`sR$@K%9c7}WO!j%6ym zzzM!4D{pJKU**-cfb?dIGtI_&iK)q QW~zx;$tw KQvjtR$SbPyEKPtJ>DBY*?+tsuE)6u z_9b|dKNGu4{TKtXe1CX>S-ssTSSDXQ!2ewj6nR1lBdE+Yo2r*+96B9^ Dgvu#>wQRQ^?1MQmj}H|Gud; z1vI5Q5bwMX7ohAg0p%PVB_&cfuvM~x8TaY#jesko>H$@j^Gfzf%Y`A8WcD%LnOK_T zB#)-Y4<-&4bh>LX+Ww827Mu;=#_7oBnhRv^Hd*!&q&EEdG1h@U;XNVDlNJ_1Lp{I+ z%(a+y>Iza@PC{14WxwTlCYbEYhkE%#F*Zg-u-lRs7F$eh5^*q&9{*BH*fD9HcJ10V z9NvS)=1YPi|9jcVNwK=%9-6OW-qIMVqo5V^DGxw`NR~v-+y|Jg#{&7VGSLfL@4YD1QhreAys+lYLjvl zRk~#q4By^(>de)DC=A6GT0nURsp#z>) 6 zuAa+um%V=ubtgQ?O)GS6D{!+Q4(8LXwOCW2bL2I&pp5dl)S9k2Iq@Hgq>Ryu(tl46 z5x`XWtK^!Ow$Nut?B#a%Qmy>D?<<9j7_gV2p7gKFIUw*R+CCMZu4F7#1htr$4&Bw4 zq1Z+0M5DSOO?TNfi_BZ<3SDNlLlHKBmiCwCyRz4uHT {z8pz#+;mlF P{LRBs`)?UE9K5-ie!?ZsS!!U9 z&h?JgEt_MWh)Bga*J%i)ybC#Rx92);&z{pS?7lmfVX#kQ^V<_AUOW%Gy*syle)+QO z$* aDKeKr4oCH z-M@c7OEO0?lM~wRviC=WLx F)%Cu3AJ%y+! z^G$;p09;R>*}@7|#6cGq7jtv-lE6(CZ(66lR@^)1QX(RhbE%`F!&1do<${}=)exB* zayj#Ie1?Dzds^sTyUf%b+=T8tvzjK7Mr9KB!`cSk8f^j zYI?ivx3z`Lg3jSKyGZ8f+3)rvd)&5%|CxV@} zxSiIdeNpnpMpjl zs6> zaApOrW{PCa^!t_;2Qqiwg|J018!8#EN>|mzsVb;A)>ZSCS>&T{GPAPkuSi%wz@gTa z=GN9$lLG<^>TBGjyAWz^Ar3yUyKUxX0j{}MU%04a4=Eskk?2=2+kh?^_S zt;<3w~yNl8h11k%&< +Ov{Zn5<|U6lPN`?~xGZdvK9!FXh70`!~vTkEK(-eR~^> #e@Bt_^R*q20y|0q|7LL+y2FN`;!1^a z%>}p9DaOi|g8D@d-Pkx3CcLg1f`W7++>gg$yB7(qLPHcd`|++ln=Fns+=XY8Q&m;P zgTrXc44fOi54W`)zfsZhqnyj}JNIp7GPBbRwKr<+c5Zms1rJxu=Pl15OQGZC`F7}h z^Lo8n-hTFDqa#be`^Knidc;@fX*}HNIJu(1?DIdr6stLkWUGFv4*Ykfh-rX8E@Pwn zbEY=#JacDwcv!%G2s~qtLx&DY+*%nnQLic-R_{p-^PB@tQx-Va@z8FSb(rF$I$=f~ z83<801T+xBCH@C7Z&OptONZo)lM-;KDL5C@neWse*vBkXgGY^qc;ZcIEj6cvONZ&} zzG~aL^K TOZbv26wi3W-!XwckVcR+w}$UUAuOn#;GP) zOZ6f2Icqz>{O8%(#>Bb@d$s{*jrXqmnf^C_q1OIFGS`hbhzga5B&_avgp64LFkwew zgbP~L2eAf8kFvSbq3l{4_t^lbW%Cs9(=FMds(58^Id197H_WZH4)Zxv;(ea@#5h^k zO8Z+3vvq-9`6wJ}+g9=DA+6Olwy>~}fp%aR9C@3?*Al;)nA~5UD5Z(so%|t(*Sklg z?WkqQTnjVLFKQ6_NRL6($sK!eC(*A*13x`otHeOP* d=8ogMRG$1Ce^V zrOX10)a3LRFZSpyx6`I!1W Jp1MFY1jeOgS=HGc&e+QWb;p^3@{-vJ+Mk515h-3fi^`|x_V5^3@mT{gwo z{pwv|i|bIPmEN@H+?yR9Y2un6A8zq(*gpbJGjR~w-A}x`B^3i5$it{gbolm`Snx)H zG7SADrdSPEZG6r+@9bPn2NSR>h*gFs-rc6}*q-Zv8tFaXNjhct9=HPC4ytG^${EJp zgJpGdi-t1%ue*Cu|J8($`S$a!u3ZPo!kFt#C{^!CIehCV@sz14 b>tdO;J2SF3 z7-( A-MO>Lor>@oewQ4(Wv0v z($d201bsD)dW2B7@j8vcJ3gT$p<|hajw4M^i(#%z*@K*^Dp?wEnRwV*p&Mfp8bGw4 z`tVj#-QCjM!oq9lzNsUu&ttjTD~}~=s;-wiR=qeipuTuA1XD{yqr@s(sE2%&@anRt z6R@&$<_z+3mwWl4hi`7Wi<9!%W<>ugOgtNChNUNEyQG${D+<~ZDTkjD_`F2jP#9*! zjB=@Jo%Yb}0Kv6p0@}@!U`Ik7 ^5)P3C z6~|*}KoBxQC@#I@{eig(Z99C^IkFV5wu4lHLXrtnrZIHyBmhL5OIERCneKPN&^i!> z10l<##{nk;tdgUM(7qNa5e=8H72X0327>0JTE)_gg3QN{w*rwpK=dBHx(e+^AP%C2 zgV$HYOf_h8bem-8X;Hp^zm{Lj1F*P{bFqxvgTD>cN?fhe??MgSkkOOL9rg^*TiD{{ z@^lP20XAr;Ax3-BSf^!VU; =G3DI^0kPRZTuB+JV zq>W87&<8byrKyqp4tjYsBPmGn D%_o_foEr(S*+`cTxMGsF}iAg|R9$d|I$ za2<+oNF3Z9og!;D-#c4*b%?6oTW6qDc28%%&CY9`Y}+wF!?ma2# 0CK%1IY5>SIH8z@yf7=XMVfn>4Fc> z5*K<2gz~ve54R;D;rPS~u^gc!=ytL6ZFfMv$!)lAlsMbZrzRpcJUh{?1 2UxKY zfqK3oOo-h{=5{88E{!0`FbxsPKm}{igNcO22tqZof1y|)XU2QZg;pMxhz4d6emi>U z{DlkVLv#hlaR@h8>3YqvjAQX?yPBUF*4~s 3-7b8^#u7LS`E^ zM*mDfIE~gaENe?>x}iOVgk<*8`GoFbpRf`M(|vO~qm0M+LES9WjoqBgds$-#nCpED zYrBpBExwoISk7g7Fp$5`W+ao}aUH2~_t`THC%9l8WXJdY>>UaUGw?w<$o3il=W6tv zaOxYwR;;xdrD^BJ$GF-U(?u_cmGfk?j*=BDczdRs6{-&Gwf#aTFkK`DacpvSPbk_^ zMbw7CanbHYNaqNROaULR$!oHkv7GJR!_VRsEWUB(LnEP6z8eb`>}DEcvrvvtI|RMw z (~jD`wUU6PL0@_3#xI`@3@vmt=UYDm}gz;Xk{VjQf0_wt1@mP21f zcst~~W)R{C6Y$edl|p_JAl4u%g_X}Fvg|pFQ^m7Q1}gT|cW!RlvlX^!T|hbqM}c&% z47z~29FP5+dg|0E`_x3=8d$Z7mj>QB0FndLk84Isf#O)F$C*SCXTu#eRq-6GhI}^& zq2ocW*IxRVlD=gC=4);Q)U0Ar-*1)yL-*6&;=u%f{G)Q={hwe;X3S}WP}6`eRxijm z!{MSbXBf9S!zSLY0UWtF+o;cIGEkz*>#->$U{e80BdLPhmDSUQfHDJ5Aqt0DzUTp2 zh%EVaUD7ww9C?Cxma+EKL2LNNEuPgs6pyB*qY*fNp9`&|y qjr)NCLln) z(Dyuxcdv1R0;3^cSUBeuZ_b9VipF_#Y;0z-QrrpTU83d$!~zZN>KRtzeNdVPb@miE zH3E!xk+R7`!Xg<{n;<7<(o*%fBlAzYPtR8fi$kyvNwf~ZMIcJz)iOgU8V}cOaNB4q zFgAZA0=q$f{&Sr2u(^h&CZd!FX-_h5Hnq9XqZg5XeQBRlrs85)Smr4cQ`GKr)U)G! z>JWOe4ni5MV&pIM|AAp`aVEgF!P@;E$|EcD9H}*v{gqL;DrrB<&rkd$Eo}$%$c%kx z6vA>;l~F}Wa|FyBH$DqN`ejk^iPs=+!jMXQ*nHah`dJ{B%-46J*}xOk3|zw?*JjCp z%0xScauiX^^GPeK#3*CkV(tsDPM$*Ufa1258y}!tk8b5>wN7WYVV2dahlsEfBoZVP zp!qd4f|ln!(gaYJ3a894Xf)*MY`eX0Yo}|TA;QB vZC zxXxZZ-c%$4uzcRJ8yk1kfJ{kBxvjYairdFvN2b@uM-h&%e_!n)y$!> UXWq6ob3UWJi({c>^xZ513aC;*=h*PShV{v-OU120=OYWoVd>H@!NX5 z#l5Pk`5t;>8F`+~hU(k#DD5W%jy{*xH7190r%QXeig1%v7dl}x=(R0gb$ilxYD_Wo znxEjKezmYDeaFNwZ&}dda4SeY#HzZS&MNwFeZGpfSf%IKnqda?+Ji6-+_FB_DJd2h z(|Athx?&)!GgW%LJxXP>zfOQaL~ouyf1UzqB^n`3CM^J|e+cXPZIRkU)L@O6fMUtV z$2bal=cJLwb}(+*eLLN}(56UmA_OEr%Dw0Zm?}fqvU>Q|=KEmhWq9@=ER+P!26|8h zC al5@l4A4Gm+4i=|&-6~jOb;pv)y$aFa6tEsD}>PN~j zI}r~7WO`XpFpT&&G)Q+k4P>DL! mB9;B(mKnG%Ai|W+C4BDW{tb$#Hdm)EWkRGw& ze2_rGbEplnZ~~CmVi>e0SV?t>TI#5z@kg&JhN;P`K!n?_UqpV?{Lr_c{z>LthD5-3 z$nU~ _D5202Y^y+9n%1)$racjQeYzN zf@F**y2762u`U8+GCVOlI@;UY;3mL9=F}A2g%ZBCD7dnOgZ4%Q$~HGN usO+F^QH!!cwW@;yGcbx4{xRJ&&!gcWifI-MjU1uh^I0DSg& zZNkEG1vjxe0s6x6L{P{OCWVz;*m!|tsvQ2d?$XD(&?JOQlxay4R0^ag{NPp@FyYnE z1k<5gx(IePo>&*FB9A& RUP0H0 8ak$P7{dy-psKxEID!@?KV s+4F_G+PeY^Gm2GqI0}wZ6b{TGAo^7omeJl;L|n{iDwjUINeG%KPS+`id@(Os zfEvhwN;LOtOu!TegQPSvFsOw>0JIn(Oo2nGs!R~1$jnRgtgj&<0>k_jto`EFWC;H( z2ZU9wzaTFR)O{4_NjWevknxS`tibo>;MW1vK_Iqn@}twArzXW|cnuGNnx(?lnS{@U zQoDCIDFE!#z;`nDOl0kY-)vA^JoQcrMAQS6?SLk+YoQM}!K+>aQ680mX?tj!eTbn1 p0Dr!#S@Y?4cKjDEy^r#R_MAIs-n)O{8oFitA)|v?zu5lvKLGi)oxcD8 literal 17712 zcmeHvd05ley6#U=Y>UXYRw**IHEJse3JQiPT2vYluth{<(lQDJWS$9Xm0B4z2*|8; zKxI;pFa!uz1sMY(^AP3$0RjXFfrQ*|(RT0i$KL0h`#ksD;oRnV+K}ltto5z$d*Ana zmp4us8%Tb#{SyqsB#GZ0{Q<+)2Vj`kg^$GH9qYBtHt;0=qoKi3c!mdGpGJnKk1u^^ z;f-PP5$L})F~c(s81@B5JbL7GK*~f9$t{& $_wcU;WzMx{9msRuv&_9ogLO`MyDqFK?T0`Ww86n=kV0@}3F_SuU5& zK9jk1^-^obTzKdvFf1T=9l8xH{MY}g=b+BAHRS|HM@KaRfjLFO5}wd#!ToJcj5N}q zF;?{6*Vp$^lQWJu!eTYM6m*vEz;aGU9p7PX?U7c?(iL+Vo1E0m-D Lx=9-67Sx9_u<3o zWdC(m&n{oSTqqx4{p%WZzxTerEdBrW^OH0`4@{+PaWNn*VBm(Ihgk3Jm6eqP+oN#R zs{ %ijFd!^7NqjpFHx@02r!;4nICW7;9mU>G*CQg-b#zj$Zjc&TS>||j{eH-|J}3Kh z;d1o&)h3UdoQHT}9G+LRk>*Y!gzW57lh8d?F^UW{6#ksvYl&wv @0)hQt0P+@NnJJ7QrH&<0kZ}B{3sL4RlD6{1pR|Xv@JPs}}H8r(< zVX}++N-AvnN m56m&Ihi>n&w4Dedp}FcYS_QNE;-pNe(8pz zlM{2nttw0@qr+{4+T~trW^NsK IU>I%VLVlC(ATX`HvILI6Xc+H*(hW#r}SCnnsM zmX=iRrlzEvq+C OkTYd1~UcRoV zIJ~sH9E;nsWlQ<}wH0|u^&`It$&WKK)DIqPK^Nh2{(K*a;Wx2!d+)fI;^JY-5Zn`C zn*wdBgiR5U&xdB3W*F}zQr&w>M$}QLVM=3nE0z-(A-m{vhV(m$iHSSg7^!2IrY0hA z9R;rDl%W=LTWhb8H#fEr8>Dhw5B?)St*x!`zT>CU$SeGvZS tWOQy{_r7 zNmtuiMPZZTPNI7`e`Gbw(1l%ehma7RWKEBT*HVO(`ee;?O?5RjN-(EPGd4E1qdYX& zZ=(ISv`xU5@UnQ4+BJK_BxK;qbjca@1Uol3x1R1xgRnI5L37Tu!Zj7V?oeJ&M_I5x zypVUDF=}mX-mi!yc)(w~cJ1o6m;A&cq|Uz>lHM*48`i>1l_G;KsHNNg_~TccKt`}v zmAwDZ?y!N~@0*+Rhw9$EIjRsm@j{0`6dO2M(B?H5r8$yAo2t1iwjn+$$MvB1)7Iu! z J>3-b-jYgH@aj`dw@**U%T($jS|PuQvJdZUZQRnd@C z1nrn!i~jfwKK<+YuW|S*4*r96(9%35IW25*(*PLSRTgz{zn)(2)L!iQcVsddY81ey z(X(Y`WfJt>=NDd=;77#zW_|trRRtv-ZfU&WzM9sS`31)7tpVCc&CT0N0{f@NX43ao z#66_ZmP@hqA>_S!?VPbOVrGlWpgUGXIk-LQnytUDFaG$|ZvjO!7qWh6{qphS$7 @{oDLcHmyAP zFHqgTLVJI`|IbnIU*q!s*SL&d ad+PHdx a{xLoQuIQ#q;#ea zFL0RYIDmWAO%DtJTiq!O=BenE$NwD^x=x1)*|sK>ZhvN|gr_EPd(?4vx^Q8lvq0&= zg9rT9!t#RW3;$^{BoAYVpu6Jo3q?yWq19R8LLt3uy4{ T%DgtE&eN-8P7~rVmDI=fRXYv}sqvZFH8c$F_~J*_HvSV&$T3 ziuxMK^>YggR8LLJs(KsUX>NWV rz_DgB@6{WHEiY}Le*|^-0on(FjIngzzcvt#zHw#FuzlEY5Vn8bF^`6;| z2qI!yYSRr221{zCPipqf7884RYc{`|rRV=D@fe6Z2tkjIIs+q1h@=BlCQ^XY1{pcU zBZkaenPl4df$%UXqo`=>R~CEn Jsbf>RtvKR6Hu_-eM}vE~?Ph)=p+FMls*r*s^=}0b%I@A67~|P^6vd!9Bih z4n95y;0g@GHk+hs#o; T(4sDjRD0Ri} ztY8NfhLST{#luEJSZg`m-6?hlz8*>y*o(U8L7c75j*h!P?w}`a*=;-| YBm83H zwO0IXid^fQ=%VUQ*W5C{-kYs&r<8RF1adDYw|FE;XZGEWz=;=CvqP~aAhM)YgJyIW zh^f+sO>$?|O8y+rw?1!VO0#nF@hPu>_IQe`W~n$Kh668s%VO07v`4m=u7)c+szL(& zaq7-r&wq`>e}gzU%{UiA$#-ImK+=FJuB2Dk;g<6%dNtU`Eeq5GoSdAvdF2L9feI8*g(T`%aJSBaF{w{N#BPNT13_Hk=Dy1edK94eM) z24AmANVm*BS(P~N>qpE!QVsnErB3?x^i{Fqd=J|qN=i#hD~TX@O{nXC9pOFNcz=RP zCn)mY8RUT~^m_$W)(&2tEX=KpUp V>B9#B zkn=d-!_AS4jAr@}~oz zJ6z?Wkqk`{BMP)bhGBY1y_+%fXK86^b3ESe!2B(Tj(jqH$iI~5mlb2G*LJz1qr?C7 zk`j{KSC0fmi#?JY*| 0w%^HOJHFBeB_RLk|xRihWQ}Cz)}F3ZPUlEhV}HY9%IrtZzN0)oBjN;H0rJ zD(yJ@rM_^eo=m4d7RFz-^nVgdoHn6pK2Jhzr>2;&1BBLNcNawR#>dE_-4KD*@N9 zU!Sd%^%xpS_Go}amJiJyXxLF3R`ZZ@hMgD(KpTRYPWJY=>@%(%tf-h6*1Ov~@S#gS zFn#f<+WwBvZ~`WX512kbMHj6|46x7Dum0ZZq=9(v)2B}btscTN#wmw9n^* zlrv1y8^ok^ZV8tmzi{iA|GeMzeOn)?;9TJN(~MaO`m_YzbKodc6xAg`f^8Tc&R9I( zYRR~n85$ZIIQ?ovEG|ZGX*AFY%l$j_h1MRIAo335`I9xX&nPJ_w^z-+hzXtel|cp$ zL%~6hi?!ZWR>SRGdFZkl$nLSbO>+2u0_Q!`3p^f6nmi-T9abgd6&EWupoUBni@rE; zlSpCb(!;9fE!~TE5@&0aa C&a@c|e^SL^#Vo zIt@=Mf{TwE7{uaqbq&cfz})ZR0)_K!Z6PDs&{W~}OOXRQ=9&CdW_52_Z~_o2r-qb^ zylvQ7`}60&AS_-be5$Xa{HGV7eTt-<3A_yoM2HEQEZQneTa#)(SQ#Zzwx(#dzP`R} zvcp$4V3oGf7gHtjey43IpyjF3{1zrUe7Vx?^RujVPkwE34j_s5Q34s^1^uFfX9=yO zzOv6)HT)B8v(OAuT)eD!)-Rhz)8=xy2?D&5r7GDte9yV;_%=sO KI z2JNwpqgHH sNH+H9;Mct)|UlRgG zanNE~WsV^{8nf(I=2gL4@xB_w#gvwG#h$rpBunr_a0sMx{Mm`G)w TDn%g)X aZ;JNM53`9* (dbeC7|S!lF>qLYoB*<~DCm8E+&%UFf#5lq=HG_M3Pop;~&Yy1KgCuZt8Y zT4pk-zqe;^TJSFOl3a7Dcf{yWsuY5iP4xKoX@Mh&-2sD9#q1oKS6{{Dos4JJnSXr$ z;>&Z{XK0$Qv^6y};-NVEdDt1H=me@6#3(@4#TL_OoN{dlNhtsE^L *cX!?NC3$BU2A0#(!d`PE@NcB1FKdSfXU4K<^l-vGq zZdgo{Cwl^YT81x+W=y{Q^xO6m$G$(hCt9uGT =}Ab`I(y8Gl>Ok)i%$xo4e`3?q)&H0-rD%l?Sr=jD}4sypIrWF zZ{X0pRtD>xP=!Z)7QzW-vh-|WNba3lyV~44eE$#M&$rMJM2~BK$kd 9|dX4Txv~t+-Y<33@VkH8L{T@nxMJS z{-ia@r_5SJ4r$}#<1eXHzkcWNh9^&+oaNZ9@0Gfdl$2z)@|9>`W@aXP{7Z0ubar-v zStTPgqA5o*@cz1rN;7Ngp6pzi=?g!Yn#RJ{a}>lIk3hj;hfc(QzpfDDvKY*J akbj7e!C_?3pje% zV1BH5H{1l z?)^H(ivnUSgZi{J!&LX0V)ca#V*RiyEowH(LB&dwyIoT9J5 zm{i;T!j6lKK*T)zYKoOt_0EgV&hL7IIXw%9(3~7LID6G!{Vv|y@v%vITIfQDQ{2y% zkd9FEhUithxA0*>K|$vAkI;8N`>wBNBl0MMRBfP8+)1@53vz(&QEdv|d$vKF<2H4F zRaRQRB|!74v~9?KqMFZW<3V>Ocxz&D$c*MFy9FKSl%DIfyLfKd!a2%AU{0>x<@Fj} z;5)5LY@Wi$t5_!)C Hyvq$g3Z$E96QL`62ZV?U0Ek|K3rt~yBo5a(vn>w#=^YxnNo)Dt`aDre?2i7jw zqohQeKWJy?>h5mCv9m7IcoFB3(%LIqw^j8kjUmyyz18=QT=jxRhVT47Y*7?6Ki<-! ze>PKbWjey${*y){AD+ixl#Kc=!vvK{xcpng%%yvF>w4YKzm@nIDu^HN>9c1wV;Ska zQwt<&$1aI&%I%|e?3|E1<1rUk*RJxlMLUIswGpP?-rj{Px86(WpD;HyZC>bfYWnrq z#fulm1~$K1a)sxG+|bgtd-i5#W+cUjKD;*P#?3v#q!;^1@8+xGT(@LCdGaoNjTjV_ zyCWkb2g80W8?bGS37dN`nU(>oPqY{#YM)vt_GY<%FM6*(cE-lw9hrt@8Nu*&NvyoR zDIJ`@=`bw_h)=70ys`!5nuN69%+KM` mZI;6Cr99=o}1xR5R+EiFtYlL~wM zyrn=D0q}DdCUye)LHzbAz4$6cvJNaCQjDr~$pLdK&tsIKNcD#AjvYHD9rd@>uYZ5c z6&~hNKN{`>5}4xKYGLvG{1LzQ3lZob$by!C{?(NUK>8>sG`^m0NY!qW)V%kFnE1x; zVia^K%A(~pSSOIZ^bf7AyJnK4!VB1NXXvtUi3D f?O;J!Qw~wT<8Z@xO12HSEQ6 z{~MI+XU-%NX>$C?^M3G#Cp iuFYj1K zJ}XFGX?m^CW%@FWUaOQ_O2GvV+}QntnOV!*9c%B=O6J}hs$YEn5LZ3lW}6NM=1eFS zhy8saZL(-gp*zLC?(Tm4{0CE--{A_!3pZAE>+t_Hkbd$@D?D-()>XuhJW8;s8F+g$ z7Dt<;TJBK_?G>*`Dibbr1p*DF;It=Sng;QvdRDK>#m%kG(xWU6Cv(906t%-KSw&&< zbNoktpm#NgRYBz6h4-!Zi;MAKI(9XN0}CdZE2IV;Zk@7q$;)OI `|U*yE2;~8 !$RhtytQ^3vxw_zb$CINcJRZD7i-vaqOix+s#(h>;+ zj{!i~F8(GBkrD@MxNF1h=`S1koX^GFzRW2a_=Va*BYJgvRz3Rl*RKYvVi=pWCvM>a z!Cb%vIzIw!)LQsaa+q+*0bmAWf0bM;__vE+GtgKsPtjD7)CW~5_Q+Ln2dHB8FRB!h zSA@&Co}zS-fE6g1sZxhpv{7E`05~ |0TRQ_aLhbo=nP3Xu`1!ss zG?^jZFq!cX-D>Dskl$N-s%QsPvpUZz`2^LFehE~YQ7Vp<*Vb6(&_ymRJ(x)@G+u{M zeGML@UvXVm5m5_fwLEY=kF;8P)DI`vrlDg(*-O=9z>Lhk+MqZD$;}Y Z&=2r(l3CzS!Md7G{ z`j2mZKA@?YasU38th8WvWNO`{3zKb!Z1cllX+1%S{CxjchVjbPsGDqRqU&2AyQdU% zJ+v6rJqO;reEHJ;&Ci `X&{VYI{D#X?5SKRr=R4q)f7zw_TGD6FS^Mf+`e>}PXH6Z2EZy%#< zQ5h{y>(oO66|~h9?H8x}iFrpf2Ylehrk`bH)m@Xexx3%4(jF`ZGI%fhrFnK+|6l@C zTR=v*(51O*hyaRmx=c5)KAq)>{6ua4sqJ+9M|WOrv yP;8`j8C%TO& zS2t;W4bi}dsPAm$SSO?VBvN3?LgT6oqPE9 &v-T9o))tc;XtUZ~V1 z?%A_P4Y;mcK;Pv+aM;X3D3V5FKB{os7qU1_ElRe(`dcOn$u6|CwwUPb-@A8jG0eaA z{QW-UaKJsy&Gn$Q0-k*cxr*2td}d#xE~H3y|C0yNHAb2}cjW!MJqt(>y&W)mu@Ch% zmD?Q>tSLC;`x#-R(`y2AV7#sTIvk#6S*^6q=Z4K^;w%P(B8gs5#dlih?bsMT#W77^ z`fyx30bL3cnXudnTFxZug$5zGx=GO=$}!GDPsYJPDc-dRa-_znCGK!r-chj%@pItX z0P?K{3mJ;Y4ikdV#|E EWA9wwkbjhaBK9T;^Zq*nwhW}`epc9>iHnjx>%hnAM?`MY4q zK!FSJ^E*^I%&3xbhxX}5Y^s;_C|$L!BX9p>IlbpM&|snIKqhuIn0hk>#eL@w10F_z zep9N`bl k8x-E51IW4;eW}@fNgpk+6j1ABG~C+vuw0#;&$96ZAPmML z9n39^TwG^jARN{_imp|THj!rtllWW*K2O|t;oI{0Y>#YTk%4090pctqnu5L6&-1ow zPL@I@KwDmd2c anlnZ;5 z{1;t~p>x4tiiAwo9aH0KC}*)~vk>fuQAMX1PKRE#7c_q}02L79$u4A=x1uAPDz@D# zdlZ(GoNUhL{vt!m*^F6Uhv3qMT@MIgsl%v%vf>oATmbUSUdD4~*mCxatU`8nHcHW4 zaHc$d`t%#{G4(vO+n}L$S^8cq)DP}eMZp(DFDRT&a7tTJ`c~W6$qB79O068-fuDDH zE%rw^!TN)ubONc!AyeMzhOj$goATLPusf(iLN#3K#a7o`k;6Nqcw5VrxeP+~>{(ym z0*JwF4*^Ltms$&FQ#m2Kq3sfgmg2!FO(>dmsoI(dTQm?v0zZbig+(G$FrtYvKj6i( zr`ILjzH-kKZzM`ctJGatFF{eZwdq%_Pdb=6>3EU-Nhx}pSI#T53YmGENkU*Ak-;HR zdC)R45fH(S6O%O)BAT}q#X$xcf|AAVGZCv8X}q26p5u1xo)8Ux3$+Xwo~uqeTx`4p zjB?$Y4RW{mTowy$+S< g1ktO9r_S|=&1en@By490-((5Klb5J;wZ2N^<| z50p0r>SA;KW~}7K*0!6lvT{v5?nX$;#^VrF*)A*FrI1b_hrtbVvS&VT`zU-b1NNSz zrs)P#jSgE_02e}u99L} y`V?ogz;!Hn(kIAC8NJ?RM0sDTjm%D$inTZ z6V;%mZj?K8sd?p7Z1mPIzx?6`i69W74i(#tvKq>Em5~-KPv9KyzKoEgd}I1}DAQKx zay;_$+W^dl;f_hP1|7ll>rA=9?Q5P711_os^paewLUSu1ApmA*Xm~tYE)h^tL0U#$ zo?4Zh_esbgIo(iF*`=Pcjb(RVNjz7GJ~Z&Nl~2<#{?KkhqGoTv4pf4~r4&*;2P@GM zZdk3IkOSwm7zM94X%8WU0lQt&OG-*~;PwOg!wKH7-EIUtqKt&{xkqLTOz6*fL9rS6 zX^Zi9d4ilG6rr09 KckX2NC%{sIYp+d{|yR)R$c~Q)RqfoTyOnTZx?4yDy29 zr=}Uyz4#4x?*G~{um@2-?3mis-#3*0*C<1cA0sI2+h(0$LSAYf0|%YB )iqI6WEcj>qW=1ir{nNx(V26{RgHGv7As69aNUFa5&fwEQhPlQIN~&+4 zx16!`?f(w8hT_py+E#twzaUs+7-}e-O~@q++0ad{{&;sv Xxk+;#7Ut@lziyAO9fM_{U0q}{OcisMr?(XhgVZiFqo>)jX;6%ocJ&f%PO@mJL zh(CSV+7ASp7OF19G9FT;xrNt&D)})OQXiL>hedU*!AA7}9b@6Xz#f#;AYEI*_DWKW z5HeL=U81@=EL3V0@}s8sb%N+}u^MFnbU|dnpduF%#t<@Up*PXOh04<~S;#DJWue8B zj}{b+UQMkkJq1KQT~<0djI#O;baC$jvqGo^5ht#I%U}Tpe24NCOjQPyFW9bH2e#!i zcn(T6k=qaMfp&n5mXGraWOQ8wX>H(A1p*d<@$=>#@4*B+7(>uQ7BP(hkIh)P5kNx> z8@&ferm)_{8ZaK OFHf%Zx31opu76I~qMADf01X>F 337e*6g1NxozK zxnW0=5~D90&?&0h&;!l!iUtJ<^4dNmH15`$xq)`PW$xWF1B34bTjEYq00FCj* iMY65g U?`Z|57|l&$#ZV^pkz@GB1+ZcJ4FB?4MzkzLCe3?6 _=O!PgLJ+`uHU5 zO7(oRIW;UzUrP5t^{h;(x?`QQKOHe^fHhVM5N_0tw?LchDfX>d7HHhMbg3Y_AiS%$ z+`&K_klAyeuff_wP`+&cs2rU2kZXy%Q}66FjL)K)0LUl@gi00i6<7KdwS+nkjz^uK zhY35QJwOU3rGtU|;Fet{zoS?M^j{;zAeKma!2`U*=q~m)*QUboL)t)M$@|8}TL3fs zgChSvwCgNM1!g(rOXIj&r y Unp9kSRi^@3I zW)%w%GizQ4?*1JBrGn1Eo6@T8$rqLz^`#sjyG*7HqJ6K3kST*ZKB@~jhfXGI>;>6u zetV2Aq>Hvg%l_9uA~~6IXg~BTU4<5qq|SjNid7u<0YkYXOd2AT-W6*$Jfu=JAns&9 z_D2;8DM9 u}a=r8oS5pVQ|{vbO_Yq`L{kc9mC_bhtz#0&<897aaswVG%8{-Rcq*_`k4)scU3 z^%cRPZf(zD3F#d5n@@Oe#`7h#<6iWaf1agXd*zJND~dyYqWTfwr (7#U~oGeJ= z>Aj6-d2NhOubqBSS$XmIHEb_Y`r}W3Ukerdg6H|>={-{A|DVex4Bx`G%q-j&vA%vZ zwqZA+QBdcS%;9kxo94Tv&%%ihXm)NS>+imCo;lfVuwZ<1nTAXc|5YG-!N~(qKTiFP zN@F4rQp-In3zC89gz?PVtHZ+;@v)CzN#N$P1)CeX_js%bm|$+Zh2Om)y>0s;^4B$| zUw#~-P1PrHAo86Nc|=` n=2TGx65pX zf4?8<=0B}3wqvOc^Fpd}sQJuV%wNI@I`a#&V&1oRsN~BMDFbP27+s7a{`Gn+;yZUp zo?9;jU#_Kw)U*2N=JfrL6OXe67;TDz(2k8kQKQ`^+r^@4089zf-!5kOO}Xb8rX(^5 z2bNERzm)g5;DM~lgv}5Efs>y8@Y6!bKj$Bc|Iodj>J%4t+KXW=o>>4OV1&qOum`p+ zq-)9U=Se)rIBol`mTIZVWgWEv|GeO*6}&Y#l%5@yU|Y3QreBv(Ky3b)_3VH@+BBqj z5?Gw#&Tqz^kvZ3l73-k*lo}htswBU6GQ97|c }n8TByTRT=iph%iWeu$jk2Z4?<{)dkk!Ko%5|qEM&6{~ zm^$}(ypi}V_%C^`Kqw3Qh=)-rBUwz>QZx3a-BW}-R5M~4#7ZFRV7TrG+>m*3^IGJ< z7-@=$dR*d ZZ3~+8 zQSDUcqCp doy;3_W`_}gI}NULk8ox&u- zJW$(`nLSVp#yruI3QN&nDW4sWj>d$Q>+ZNGJ*(9fl(o1_qv{kPgVx2-;y`(N@b(Ev zywdmzoURUe+4;}AZ+?DK53ZUb7czA2`=FuKo;k~#`czuN-%_z(CyZ8fD*Y+e{#6lJ5mPvaT|2ki3DE_S zyb<>!wzbe=yABFI?i{N5%5&=vC3un^sVFZC&|jtn_tN3k%m)wg%pa&*dzz1*W*;b& zDC)#vDBya%di4a6J}-&ucp?^tsXT(gixg+t%V&k_G^OVxwZR=S%;{(;OE5e?bx#bF zH3&H tnJmDCz5z{1;Vb-qEQ6%?wKfKGng#*CMCZ%O}P>r?T$$QB+cSqX`4A z3F_uF67xn80J}T0K`ZY3iq8OxY;fKjqsEd383+Y3A2fR2H`vUGuekm!!A_MPex_mu z+vLr?-oNwNMPZ}&%Kf^3(T+utkoIRb tb+$9JMU=6rd~AX^N-R-l->T+pWGo)+pb89C(@oPeM*))F81OeWLLP*4!U#1g zWn_mQqtX?&6+k;h_W+vbk i0AS&!r8Yn#?x2-GU^!va8lL{7$CyW zzlw_} u4KO;gS_)97%p6E9gxnuPn_RlX>Yn- z*|V2fn-af*hb=(9=Dg*m0HTB3+!k>0)A4hVLFM@QY^Oc~o26OHs~I{(y4HkCY*|nQ z7X0{xz#FmZpqzBAjfsE(S+|y^-RnFZkL&%fIcKqcuD7X99@Bt4b#sCe&f(2`BVZ^W z2hA#}6DD=(#(RFcmvA1T2sv4PB;YWNsqE^BSoCgK 2_XcRtp4= zo?YUN*kyjfHI2iC^)F}zV_fN^AMwS^zF{vQQ><*Ai(16kn6;&tRAn1;iMkmBWh1-b zP3X_{L;I1sci0xv1K;lM_$+Y~zD!N@3M`~qY7|;GAxabE$YNKDy{C2Z8fV!3)Hm}~ z*nL!mKN8I7bq%hXeqJ>#MK2Jrx4u7$N#lc)L{nytu~xc}Rd|L}rvcn%LtrQ-$RV;R zwZ)P#H)R;hpe0m5*L1wytwW?OXUDf3N)8g`qN;Nd=GL_$%*<4}S SWNZ>z_}t}U97yj;~*QX>eyyYtxCX_ z53dMSDV7n;iUCJR;G&8tiTrNfB1QV3cTV}{`&H=k6cq$;8W!jyBekBrO`G*|fgZ#8 zwmd^xOO)7NFi&XGM`fYM*y_2?@-R3wuWR70CLm;MCu7z{q4tHMPL-|5uFNSgyLTR; zQnnijUd%}lfQv#;D+{D0okNjy2$D5^mu}jl{*g_gZe_SzW~2EG9a_PeDMOw!MVn!B zpBFy^52jzlI>bIPlb{NI-f476bG!e;Pjr1E4ldqE#P0(2{DCm~*{0U=$?s5NW7rG% z#ra4^V$k!e%lNDSO+YS7Dq=M%Z!;>%VJ#Paiy4NAQO6bqK{gvNh-(jGjk#@CSCGu0 zdW40qj>P{Jn$Zz9dzl9H-d+B`ZkhGTqy{v@6pUR9luuSfVKA}MWkH1W>N45gChhzM z)Nriws)i;-MMK##qnx@(%#9O$>j#1Ncyn^GVb9%vCWf<}Y&4lE<-C;Gu>1N%@|exL z!$U?Z8b=G8{(cu+i9fiAruwm+LBw#?FaQZSqW1M2?nUJj6#^z4aq8LxWka#extKa& zRv9kbh^?KoSxdV~e6R(? H;}bNmyr@a-lXAbhu4jaJ_4@Qwo)x-pf9gwl!t2-&Ndss? zoqaH}N_#Bt16f zc72k;{Cf~mayscF`=gAJ(n9(l4iUC`xOT8E)ODlk^-@bXLQEG;ULd% S8n-E{YU46o}HkZuT7KdL*w=JM@Z-h~0?}yW8ba6?fM!-}?ozLDx e32SohDOZqAF6m?&ZYRTG@~x8VvXqgM!&mI#zwQL&az-%YO~d-P!c7#?7FZekuA zEb9(Lq>2}0Q=ymW+0}H^c2Vi4mNSL*w(A@@I64I_l5nf6r1S@RI1JBDy|$)wCL0ro zdu)ybfl xXudlz;%O3~rMwO=8imwkIKnXDF|(uOwj;_Esfd4fx|$d&U@zFB3+YB5=xdJ?Q| z>G|G28dJnQtkugX+GE(lk~|<(5DB~pZ5GA;Hj5+Q+h)`mfA1xgoHWug;?qo6K)#uO z$~tUE|DcsuEow8WQNR&EAr7NL{VufKF`YMpb1Fr3juzK=aJ`bAjL$zRtHCo9^U$`u z@Xx-Vef3~^?04&rn%GSJ4u+pS%n!}`Tw3 UK;c@UfQbPEth0?d)l%`00Nv=URQQD8$Y5!ds3|e&*j@{l z-$QgPXO%C9p(3OYPVTAnS{#VCt@G+8G{1OmCTzw9yz6Z?T0sq`Y4uuX;W=vqnj70% z6~$D<#*c--!vhgRj9+w?VVzh{uH~+Lo{ag%$yNRqwfGJDXc8DqxWr|3(-^I{ww}aV zLDEUE`~o}nDE)~Wd`4b)l(@l_x(iA1aZC;jm8=h+z!D+$2*x#LYD7gLcea_!6FYzl z?du38bm`|#fb3leOe^V%tIWKbL0Hm&{)}pkxaaPw8@fXg<`Me!{23=pkp%t^yX!v3 z3sD# S zWu8>VYv?^O0KEoHR%BFuOD(_+&Gz#^l~@Ut8~-!ntBH)JDGCHc6dTMcHfOW( )^Ys=q@|q5KdFDAp;8&T+B?dDXDr4fo^~y ztr-;i Z^V?k}3 rC=QZqE}>A2?{pPpbt8-u0!_}qjuKv(*C4?qhsxo3cejQ7hb zlBH~37d+{)?kocpjbw>E_ @O)N=zJmS z#-bME`p&uAX1(vV0WSj;BVuXPGrNdn0dvJ30Er`FX%!pW^SE|FfRJQig7C{S`B%WO zSUL6C!ZLw~^dD6CMm$5F58Zkt`}?E$!Dk171vRy^nXmRgh2ClXZ2vnhHJGVCTW&rj zd^o?<)7QQ#lFQdN&K=e1vU%nLrc^tIi87iB19U%wHDS)hvRsg+h+EJ?Ea(!=rb&!t z9 h>6a6m9R~r^dmknM65# zLE%-7K`xIp>GQU(>}gSSD)C5HiZwSFhxY7bTxOs9n?))%HCb*ZzA=jYHfsO@xSv;m z?c`2!P$^@6^FD1}*Op32o^ZGtH;#MnQ>f4UQ*MwtcW2D6_Z8c(gzrTuk+6EY)vwtv zPb9_itJU;oZqB;k;A~04MbN)x;$Q|2QSGS#OyC@XHQ^YrmIRmRX46avzhX1&SECbQ zhk{5}%4G(7FKcdY )5U4 zkirV`RiVNiqDRDGjO5_8NJ)8G`~)Rlp=yS2Q3h3R){Og;5=pZ3m~Pgb`v=3h=tRFK z(85%&BwGHcJRhLsR!-NZ@bmR3UMD42H=iQ_-o||4KU74*z-KG{jG_P}Rf>IBt1q|? zySLL0x6Nylf2$#};Vt$TEjK8fKBLYwL^YbMdSEDB-v_|yld#j7Z5VzK2B@afCwwfg z5>;gw q!0UK6DO|bfM@lxgku^5;^2Y6mbm$V|St%J)ARi$-|l&8K=_;>n2XDc@8 zC8Kbo=ILN9<~6wg6C5$3SP&b+_m^PY6j?}6As=W!)Q}`1V=NR|Oo-%r+Q;}G*l11a zUj=@^$l;tN*NwwxCJ)U }qjvpsTc5c} zk(eC1Bxy!D2tcHr{tOQD^NJcr#k)_h#e2eB>ED`co+j4=B!jUuHB4|A1r9z#Y9T)7 z<6eGu<23m)e9+MQWqX+ZMNwUMh|OLUE9-RA5~k1YrUq~Q4Iz=95)m9xwZ#l j=o zl$?B{SZy(GYtFB)IScB edlH8VJ9p8!qI0zy$+&f$*=qK=aMY5cnxL2F!1q2&g zdv%SVY21?IVg7fW*#>pL`(Yu!_3gl r7mxdv}UTa#JW@RS!&Ej0}ee(8SJ*Tu;D z*<3QqTd+FU@Uw1vM8{554-PCruOsPIUx-J6&)w;pOA8K`5uQ5U44~3U#L R HH( zscV#*;IwFly8njziK-V0{C;`1LwlV|6>%F7E0emd1|1Lj+!xq>21YbvQ(=5cMT{O! zi=Q!t)uWo7qU5RNN}ConJlC}>nUMNOJ`D&5ZTw|X5(6dWGQ~e 7Gm2c+B8Gd!8P<6OqXs+1)O~H72cviY+ z3JNt>9bUhe;x$IgttcrmG5^o51fN?Icx^hqK8{5>rvNf1AQbR=y0ux!8WrGw)VMtD zGn%MquIx1UxxBeJ!6)Kt6hgMJpuF$`+pF)X$6qMOv?UC7>wTu!w$1E3sc892)|n2b z`FRn)s)sg%w@FA)8!lwz 90THsomr*5|wH+?rd2cxwpdYuI!w znW4{%<(=p~ShM|bNw=U6F5^|Uc6KLO4|$j_ZZ>B{N#s!1nmiHBRcyI>l-#N#;HHzu z-qFuDf=AWa>8B%qlo2On*c9auY`x_(ypL|9KfADI>Jr|1wIBbfk&-eR>7N@!-5^0z zsY)#BO;y?_o13XGF_QM9s5C-i$GMAstWqd15Cp_80>n%=Q;3MtnuO<#ZCnDfT6}Jb zlBl3tp?lhjMbYGd11a&DoCoIh`B)ro>4J7KFu<%)=2MVNVOQL p=xB{5wkS28t;2;uI5$`G>NwuTW+Gw~ zWhUnsTHWdw`uBSytMQ4gCwK9>>6{MpZqVupc&Z-w;|r9d>Cu|es^w!wcS0Z4z^Ps6 zc?5IUk>7an%m8YwL**{VaNkJ-(D~L#h!;LxlbA=keTR5DzVEwDvZmQC6(8;Jk>197 z5{vK53^WBWNuP2lZkf0r=CWYzkf)5N^N@FC{X_SW{YwWu7S9XREXc*Y6q=J*$>jy+ z&Wk<@_Tm(28WVUIa%CwKBxKZKdzPxS`8%+S#@qub7!e;k_E*-@{o~QUY>>91#X-w+ zIphYe&!>9Lx*pD8I{$|&uak>C&(yd}Qj<_gmMEtNms)s}W6|{&z1zSz0aezzPDRq$ zp9>ps8l|Tk(IS_6deNbwf^~lxdLtHc=#W`(IUQ1PvlH;}QR<$cx?^-bPt*;{34Ujo z4 6cI> z`13e#seGI?%u7G4yEhMhW|Qh5TyRC?x%@T>)u%oXi#H1W;cjZi^WyLs9e&-IBA-0E zhss*{)W_b&7sXk$dbJZ7jihK_*AH#$U9#1q=u~}d!mo6jy1M7i?HZr|`I>Q&v#|e0 zjxh4teX2gt4ua!4xE%2i!#5-d#tv2CY _v6gKqKw>07XbZ-XrNt4?_L``U2k7JQQF;X5bE;MH>j5Jdi7LjFx)Ab z!~M^jbh3IDupB*#@C3Q8U1gIU?t(_%g*-d*mbK-rcMG2}xMM&p)wA$sas{9V)k`Io z8>ztd+I5;U3(hmoks;iE28fA=1zCondtCNpmdoh={JFNSWU#rrb?5CXCjlMAefc{; zJf%%@Ff7c@htFHlXG5b^EwU@$*-sl@E^a$8+HfSU_o!GoT!d4vwQnbyDeLrJ_!MS_ zqze$>4(_1jUa+PuQV|~-4GIhyI4m=?;Hp3iYmBES#Z^W1l+|6B+j0 N7wAX3N;SRoKKO6A$bv+h#rS$jS>%YH8KU{hr;OW_R^G-^JxmHzt z({*3G2JB8+2fNV0D~*n!9I0$%0k(acoG+1t6JN|sIxjNPo8|lI>gb5!5W3F4)2ll^ zCO;dplwR!{>zOm>8IBF`g-xmBT@TSd*@7AW<$@ipYa$RzRlNY*S~2*5`<8+=VovnE zWS9cE*b>^Gqh(I^NfxYntE?jKDVTb7ZRX>>o>0v&an2L)Ut08etoA_jat{fEN8c-f zs8p|jNqsVPCx8vUjxQzV2L}o2uk|)|n!}(jVWG6VGM*^ng5a_A>NkgAZm+dDi<> 2R^W%E5E3?E#mWyvQ>S*C#A(Vz;Mn>$QgxZc$`&ZhG+OGK?yu|!eB^l_?bufCyu z8GU4ofy*FeHz;^TosL5VO>&+zRTljfk=yL6v&pI{UIb`n$^A2#eUV&W%S%B>bm)Vmyg&`^itQH)9c zFRQ!ZKUl?f+W%%HiC9%VTFXq7DPzysEmK|bDK?;nrmk}Nf><$s!5%sl9fr`%K+>9O zYDav$v#t&fPEQzL){kzlH$aKj=A0+^F>E@#+QrxBkvcvHHmpvr&~9EI+r_+6&E0tL zJHCq3baq~G!WiWqAX)iad-8M#CD(_u>$-dd6CB*6-e)SNvr9%-<-IrCzeyhkmPkdK zDrJBQOVAOnLu7qp*2SC0Ly83@>*A*Ot{pFr7FMH64Ism-LPZ8nM%C2#(ubO85# Q%lY!kkvw>ery;F;NnQ01h4usv% zfzM5iCF0}lvOb==7VQ&O{l akh%-A9!GqMO9r4J%kPQ>HW(Q5=-Yn-conb z28}&rB*de|GvHrQwq=nnraiCI%ktNe32S;{>oqW#l|j9y(tBl=I129O>T_4}<)JBT zgK!}SXlV||psZ`g^w!&REmr6aI8xZZsd(CV=Csn&{_Np8++edd$!3kWf(zrEV(dKy z9~wn@ho$w3{l|QBZtGQYKzMQ;Z;_YOvWss^yG*DpB=aCuE4YucCV~Q}NZa%vbhJtm zttYfc6AqoJKK1LQR(`J07aA>XB3>ti2FSS9wskR5=4LBE=<(WCP`w2{JU&Im+jI&} z+YOM+2Nte$d2?OjXhYpINdc y0ta zC}RJEH&G88sy;g_F=?Fg+!4KJeK&$Y%`a5(GHCb&^tO`&{1WQb6=(@|U%Khp-WqR| zrL5uCX|e-|dlKj4>1*oS ;-)O&uVH@jxtSbJdz4(xjlWn z5jh0*Hvfd;>BN#0Ii$1g;W&u(%)7LCxLLqGMZ&Thr6Az?g^kRl^wcZoX{BLl-dJ z#Fm0vNUUgHbSAATnToX|mlqxDVh_HA$g>FbEUha!ZgxDsboa0lYZK$$GyAi~@WSHA zE#>1mRZCJy@ys2M!TYe~Ca3Tm{!ukLb*d>@RgR=vE{L-dI%p@^O3ZBS*^ki_m&qF9 zd}Krg@pjMeWS$~aO5JVVECyQx0$GrSAXIS9<=e13f9S>2TG|<-tSgHny>~~B!NQR9 z1$0*vgx4|fh)y_GVR4&gjA3!%re e+ zuM4OhG`l?O&o|b>k%4i*964$zSHCaaEr#H^%iLOeL1L+8;;0vA+<#?0tiN n!wBSM%e2;!x!UBklnFbd6Nw#ywDw#k!%QApgF+M9DM`UzaFym=m#zb3nL 4h@xJpRk>jPGyFUHVw zi3Y-|ktYs(Q#UWC36_18km1*UB509LIGs-=?0rX__4~ZQ>w2UAol+e2POITc!vFlA z)Z)Lx<>y{T-W#mVSdPDPUxo?{6ovVz9flm7ylrBfL&iI%$m_K#I3F$CeshLdUSD2b zK@vxO?~B&-$1}OVhK Jrqsi%OKpOn7x2-Yx5AKwpK&vbzH7N*xxmInS%W9*BE_{rsN`mY3MnD zCB%#=E%@%Losx%IM;4#4zTx51JAEc}hrM%%*3DJ0n&P0AxlQ;RxS-P3OG1%`bM^z{ z;kj-K4XHg{la3ufjB4jflJX>evF{QnT?i<)mvF7k&D{k`BnB7oGI4%pk2@D~aNu4a z$81rm^zRyW?g`4_qmZ&Mh|0n9@^orbKdfJ>0;@>jqPTr1_G|AfKV25NJpN869d~ZS zb}akHWrtP?16M6K%q0hhm7yRUO5b?iO2G}oB}cEO9wzrd6~1aspaUvb8?;jV>Q@%( zIRw487QS2jUkh5bTP`iXbI6X@XO>so(R2@Jb*-d`Im4tdF8Rhr!YCY@?VwC$v@6ZW zQ4-X ?biFwCc#R7NT(SB{!wM*u9P7+9AGR%{N zvzX`_QYOPBB(cdZ#(rHzR`nB6$-R9$Hxxv6gW}Ob9R;MmpUZY%L$fgTF$=v1#$vqA zwiJHf*S7Q*>v-^bIHuu-6F`UbgTk@aX0>~>cKjtp3VgN69E9u^NgVj)>${#E&YWu- zb1pt7E(V4 xySYQ;mBB^b7s8%gEUmXIBjFhL51r9p5PzX!b-B z{8#oK&DxAf4$E5)cZaoJXDgu-YVN9oeiJYWHTXZF;zk}6kZ;0`Rs;dNZX Bdd_=?r&z%CF`^_Xz2g^BnIZ{6U6=xnJJ~TXrv*c}Yvp5cg zeu*!EeOqN48_trb#H9%?km1vXoaiF=7-|_Z^2gdOadW+32wDD(%F=w#{fm?MsE2qE zuHdChA{$$7TLl7sxe@<4ld7pNfLud`BzdEwzWbvQ)ahaCK9}JJM&6v-7fdp7!oWvA z=~=aSq~(a*dk{CDpgIc}aeh278xcg1{kG2pA?|7On;*lSb >m>{>QLVtPg=>#t7v`IH(Fk z5jMsLmS0q~a^b@Xvei%$_7(%1&Ebt!&W)eh*a-eQ@AcdoG%$M1sgRDxobvwMQLUkG z{M+K;Q}tYg82J=TwTcRLqI{8PvAnfWCJrWZ6d &zaXcmQHp=!q!?4#L5`54-5OZ(gnuTBMoq53 zU3U!bt-B6l6=nZp!{M)u)k`J6uKgef=lxqQ6@z~IQ7oi9$0m#}B=15Hj^(Q^Wh;7J z=nb-E-X48{HQSlvLaD5kv#cAu{yIjP_b`u0#;D=p;B>rr6l1?&sE(6|3KpY$XK8J& zhQNJ`^5QZzk#yVHlpimVZM>^*!bY{l`2@S=u22cc4c!ST*5ghFnEmcd%y~*H$jbpd zpJC3DrSrxo2kOpk(dD>*(J1p-YSYrFim%4{^_%FV`CLw9ZLNu8;+p7Q5JU5Z{jU+d zU)`+9tlsuDBzD1(>=vnr&S>ZGmuXS5hTfWG^~A{=1Fx<)ojN8UBd3!h50D6{_;({Q z)H_rb|3$cX@-RbZq0TQw>l5A=8gX<9lsqvVMmxQV8P^D#d}cXG8eA1|Ubl~^{?}4H zdQh1$_+LbCx2I4BX*$OucpmOV9Ag;s5R6&SC}PCPr$kkaV8nu|`5p0abMh%v08v@y z2UowJ>+BKz(5I3aA9(a2S#b{4?vmZEZO @vC^mcHx?lC>usP_p zbVP2p`ORR<(OiYaTOnk}g)y0YRhAKDip|li=OTPNY_Ks~APmP=@*YYj|HnqV@WnRF z^mLu`4g1l-(w4hCF_xAqdMDE5%dq0jxX~tmwN6(+@@MJgwrcl|>PWlH_q+7aGL!Lt zgxuTXDcJDmOx~xi86G7~gVkmu8M7*IrqIriah)wiT8?H~%nGhEX3h@Bp~P-9UATKf zNw9pE3rZwhkKVvEU>;>HEL`mwO4Dt0OM3$vYB1$QvyIz9Ua;rC{27b_PD>Os&%r|= zEOD?u`=un(SvX|!zj)|%J_Zy?LK<6k^`}nKHz_IGq)at91p*}KDM5 8u1Zq2l17>(Rh*H_~FLU{<-$m7ZiL&Nr~JctjZKHYGd* zkyn2`sR|k~SAqv^+QJ-v`@?CNQpMOcfKg_g^=u^b4>#vVOK9qtTy1g9E}Hzr+~;EU zMZ$ws2qLD$; 0FPz2cPYN=n~ 0KP0?E<+OJx%wx`xigZQ` zGa4fLk_wgKvxEYO4@69bt;v`WZCB!Qa^63s-vnKX{&6X)lb+4mx^i$tYGTf8*^Dcc z2Ggp`)Y-#O@^HlRibtnAT-mqQc2otud@QDtSY^ib`XAjhx~YBBeUa9*6gi6wDnTR8 zPke&}Rvon8)*OUOt1lRY%h3g>Y>chbT_1$7j^|bFB17Yw@Hf8iiWB5&?avPGsW1xm zCU3AUqA^l7XlSZAtJx>}uqeG11`8=F)e%(`eO6Vo)+TRVr*NTq+vbrv$-V~!!2Ld8 zWpT1<*`NmHzzhOrca!90jYuhJxX$sWomabn1wVpN>792MZr&NRKtGu4@q;_#IhK9S z>@r)OQz))-wfSr%b@vP{_$)Xut4xEnL#szWcf7UaLplcE!i#BMz(Q4)^&>Qen7h07 z88lze*5b=GsPsQ$fc78wR$%+#qD^`7GBi-YWLYRWB!nhSr&rzg2KuoVe?J!5yy$OD z7Yjs)f1yvQQBz??lL#%7GG*mFw;Md5Ew>bC$Ua{99dXh>@uS5Dy5jr4E9T(o`|Qxr z4pPxtb@^G>@mp)|B~`V3Go9`bU8W93(vZTPmfNx=;4QBozV4?}Zx)TqZPeGjc>cdm z=TPKDozo5%hW*kP{8#YK^2FU;O;-KzQN|nAJmxT$s&d637L8#KgBbf#;PSxo2$tSy|M8ri~>GNCHF_HGAd7FqSo%KYMit_Dgg_x zeU2;&PT>mKxO2=Cd-^}J{B~t>U{Az5%)$Stk(hYDa@mzL4@ihYga1=EIi!n;)*Suw zPb{Q}ZxO~T;9Gu!yYZI*2m6xuVbE>}{xMQ;Z(X)_8ClODtiJ 2QT<9+bi0-#SuUTG(Yuv1keS9;| zt`EzGh0LTPu7Q#utHEfeKN`n7r9oS7ks|rIKk%%V8|eq>pV$8)K;+bB9E4SG?U(m2 z;_kLwGR=a~3%TIr6rNaL!UnA5OF7!SicAg~gjAFeh0ekQlA3&?|JLt*tdU5)#ygDV z*7q4XZ;Zl0%CPmKVX?%p6S~sp3xttcQM9(3(8`Gj=_uOMw6{AQ4YM0oko^BxXujU1 zu^)=oM2*!ojD=kv1qRAuC|euqviBy*ZLzUyvFuPz(mI#bclWDWT!ZUfs@mZQq3(b8 zNK37;0aqo*J$VMA=vW+Vw5i$vXlEHB5d{*aRS9|y%At)_HFY=u49#))9Ckc!sq?j+ zQiT>8 Xb ztxxChl3WwL!8kbUaRdtdnK!c&J~wMQf{iUblTej1Ui#Oc2~10k9rMfAa`w$$VZbca zpTWuukVFoAHs@K+E?P${%02NBrs@qr#~2(gJTYXSt=Qh1&R$Z;hAEh{`+wbXrrG0` z)=5a5c1nMLY@RWIl$rm;sw2^Xp7dD)l5w?&*i$5IsrcY~ybNP;!l3-`a|dtG> LrUCldd^2JH9P()|wy$Ms^KI%1qNtmIyaFlDhX=una&HnP!-vEEc9W{VEf zrJ4{_RvC225E-1Hiz4!%k-7aVyB=Ph-3#ga@4UeX0eK;*kxL;xca9+DV%B3Wx=I)aixMo)M#1wdsxQnV#hy+iw^fK%I^=-=1Nj^1nqaeySy z32; 8|*YJZ@qeLtf M;g%d|- zLMFDgbJ;Q(ITjH<0TeXaS3@l|j67zZf5F@miT>@G$ogf%V9|w3; uXtCsWY_;e1aC_M*p{0C&e<<1BkeC}C2j|RMn z6Fa8d!A#YhYVP fv-(aQmhE9x|X*S z7=j-wN}iNR6P9dPd@y^r@N(`5u_uRZF9$nkJ7fx4*}%UJk`oeKxgeS$a5gJoncam{ zJ$FXhz}pr#BxS6ebQGw@qm0iV-|Tq*aj2J!PO+e NvgDgIzSg|5pnQC5q|Yh@Qy^KhY3fTE!OCQ(PXp&&e8a-OsV7QI?0hp$ZhO8% zq@f@5*Tt18o{)>I%Dx0zHE63K4Bx{i9vXp}g6RI2GY1{zu54NE &xAwW2Lkf+S zI5$)*&)Sf-k%*^6E4f#3{f|eIONvY12UE*n691RFLT%2)`-ev-Td2#M2^t1w9(<1O zY$hTSiELxNT_=9+w=sOOVQ57OVqcx{D7iXr%b9y7s^2NaQtyENYc6vU)eaF$n$A^O zTJI=pSz4vi5ET<-bI0GN^mb+B=g T@PZ98oJDob#w8P{{@AEu#-KD^FL^iJ#gjQ*UkY&kY6LSv74(vgRA3yz zCUoL~O_vl>Wd_cuF`KRmy!{ WB_#NwapanEL^A45R!|_MNIr}UPg+Qr|x$> zY^HzPkJ;zYGMo~i*CU?I3|CH6nI+(^DmMY6rZ^HkOS%P*vS%ivYKV{1)%A8BTQPGZ zwl`~K<7E9uCKNvZwp^H@JWIYwwZC_Xs(6;x$L@tvjSLB>;?w7}SY{*9L+G873Edl` z5<9laOm&UE#o{o8EQa3Gvhn%FNeN#%3Hz?XQsli;iiZZ^KTOX>Y&*QL*}p$&HNL+j zu|6oQFN*+CNCu|@Foi5``5X%9!?C_qmxYFTNrR0$?RmD!BGIa|=jPT_NBq)Rg-`Hu z#w@2MsAb-N`7bGVglAfRVKhE$8I0>S4`|CnPgV6uzTi7Ypo!wb?hS$}!O5juO*0V$ zY!-1GgUNl*+?~zWXa8s!hqKY35E+W1_o>kQ68tZ}7JHX|x1$pKLee5io5VF>2c5n$ zrv#%^W69;=KyT+rY;9DO$&-XzeZ@y=b8lTydu5v?JY>@P3o)I~8$Y5EDkoq3ml>{P z-}%mNYk$YxTxD4}|3XlpM}zOFW;gAFmu!1~IOo7`9i(EU%h8+U5}HuF`Ee+nfL663 zJlgs9kJiER43a;6ng{mdo-C~Co36-y2X01ZSyVJCr7?oQRqEWoy7cFjt-q*A<4wDa zL auSXQS*4LOI$LXkeH8++d0*>71xC4&%FhI @|eIP_G$8j-A=irmbH+5GvZrve=$A2c7rwkh9 zwoUgA#f=u~IVs3ugCc_K%l{Bz-1p1=;_4;OLtMa&z7gL!Q<^lTvNg?y>~|nan5;R! zsq9D5k=K@*xn0^Nfq*);x!hk}m4dFTuyic?xkL);LJClJ75eM+x{JG7MEE*%8p& z_~hQ;xBZ;e<2_*Bm)3=@G&m+Si35`Q>?jH2=jY{{13lcE@mVYDBfe3U^E!c8e~O6u z9`4ap^q`0R*)5U7i8)K)WEmV9UMgYXGg;&fwUj`4Q*tb;S6E-dQsA`hiRX>4Ckt*) zlUfJ*-`4K_Y4OM&o3E?7AFK}%GZro-9?WUt(CaOeIJ}kuQ5PIYWgGV{p7S`C$dfoo zC-?r9-fNt_!VfgUzb83}dHy&@>A&IexX|GgQLPspCzx` F)n!f!MeTf0J}cT{V9pt2_Qv5iB1`&gww%=;fjM5 2Ib zNT_K>VNQ;Oh>IgUR>!Uvi_+@VXQc4Y0OL+k)451X(q_@C<$I-lTL-rPMR?>C{eQ#% zh7i40mk^t0)=264#N~Wwwi}r-sBl3PT+}PtxXHm?O<_fL4lXBGzjfTB>?$U1HDAe$ zH-iQ0{}B3Or+%|bi1~IsFwKR@qNm +<`NGTnoH^X?NIk4Y%ZTVqrUiVHpO+aE1gNO7RGIhU_+8HT*)8;&a<8x#=06 z*(g5;9q3t3&|@i4oDuQN{;CvN-7cOnsy7wlqK5UAS7xmIye&=*rw~Z-GLa2BRsYNg z$yb#f{*g%moyC#=Ck`5 }NyPaPvGE |pV5(K`0bYl>bH{IRcNJ)o;NQsDaNjC`6-QC^Ie{a#>^Wu4dA79*O z&+hE(%r)1{&QYm8@u#%A%oB!~m*`G9%xt~5BF?W6C6E5p)veceIAlLTc$NB SJ O}2P8P8^;P(V{yC}6 z`dFB-UR_eOjN+G}`1DGHAe_*gp~}$NTnMjtN{lqUDx_7 uX@#lBuiM5Y5llGiSI*b zgX!eN#7b{Fy2p`yhPN=V3E9_?e+AAFHqLr@CM#^{EVMql8K 1wzAYy$%zc7qbl5L13G@X2 ;#UJWfPf8TFp@Fz`PFCFr?HppjA_2!Z+`@GHtzPZJQ65+qh-J}1k?Svf`c9x z>HEok?>i26>-tyE;B!P(Im&WZKbvOy-c~L$(GfBa#kJ63a~Xc_=$amuU&~{)yHU+p zZ0o~ vt+PY&5RRIf&Ne|law>34Sp2gnbH@k`2QGTJH8#=->4>#IN3 zXAVfJo^`0J^$K^h2%dM}!tKj=fm(q#l`!B49b?F|_aUNp_Rn0e5WdBqtFv!odyI>A z!afvDJSs{bqiUf1#B+-{Q1qQ i(}Vva~5+v8T3x-CPXNMe7{ z;+ukaSx^-b24K`GL1uFCj_9n{-P8wHR}Ai&0v@L;wnA0) z()iSJ<0x6Ua^qAkf*@Er=X@~4g%hVw_Ya4Ov=?TDa76V~IP%{*C7?&D=u_ZV{fy)w zs7!pxj})Zj;{LO5aE!gdZjIpnq{WqCo0KhCbh_dG3_yaP`wyVUG;qtVyZ`=V-rmwW z>bKy)Sg)Rp_?&QpUOi<}w%liq0I4T|ARSp@718d}%h;E;?#wFKdy;uP5c&3{WDK2W z+k=xUrvYi)>oDQfu{}()pwmo7P-rJ^hAE;a6^izKv{!p;V*iB%Xgwlhk-^_@Z>&&O zQ;#WMwZ$LvKLA{gR#ED)>^OHd`Ly>ahB`v}wHsUo9P>vG7GE;B8VM}X)>2Hlqb3u} zUwN!TZS85x`;?tHE#HU$jCgcV?g>>N4d2zBki^Dw%d@C6zVFeuxrk3lbJ%_))B94t zRVf^Sp+=yI$J!VQQG9uVqnIv)ILxfK;|h@0%dZ~(e{#}7G8HzrYnWbFY5N?t9)S!9 zSU+)VEtibUCYfJqA=>E?;%R+#sNraniy;54#OH1nY!6V#iM7zTwQ1-u#SgML!Bu}w zRA;-1mpJDdrfJ>KJf(ypK6afx5mECZT~ruSMhP@1Tgl8viC>BqSku~)zDq^#pkX3P z#Q7P(qWC_L``J+3xxmv@S=dzKXrwekJvEYnq{f#duV?5Te-g#X? ztm=>OdS+kBsN<>jm<*PMN0U*FilX_d-o_l>Jx`Q`{HUNk`;;JEXwgTsf)b@T=CV|l zk)=8R9%>LBi2fRmU|pAM`MH}t=jziv&6UZRS4_Q-F9d3p(MDa_8q5eB@uCJP$Q0?6 zCBv+fmKuHiQAr7+Y2mInkp5z)z05cLV9%XN9*%@()0Ol5VquYYn&!JX{d9C@A{7ie zxNA#v1pVLPGSo<)B{-B&0yL82 uJLSZ=*DEQaG4x(27-Qp^gIEnlO!go7z5X{ z_+K$iIQYTTqTj=xl0|mz2%e!VOH!QfY5~9Dd_)AY1YlM$GR$>%Eyp{a_lPYP|DlEo zNyroe_bf|23P5NvG0idClEiq)8>Ez&P4fjd?r=D{r)}MFd%doaFE26lN-MWqq4WA1 zHO&v$5m%qI9J4eYV@e<+v#8L$HZfN$RFXPjSCY-iEamLwmx}hEC_(vseV;Be&CSJ* zllN(7FLmXjhSMTLp!Q*~2c|DuM>Rjb9uSUm=Q_G~$3*;2+dT65EGpS5pGCqynlX%s zU`8u(fE&`?vMG;4GCx9k*eKYo1Q GPDx2`Y5TC+#E;S9%U3JH0l5$R}Wm!=` ztj&X$jr(l3R+uTKr|7=B 8J;`Bwq4MNM=Mp>s^J2~UY+I+lvA>EOuP{v7O|IJ*wxehp* zJFf@ebXBzJe&o?H?d){fUZ`1TzmDY|hG-h?dNS0{=jk9qM8h9R5}YpWtHC*}r`sq^ z@TBMCR}n-!C4F6qo>EI@O7|dR3il6Xmf2PrR92SJqEy6A^wLAZF%ROnyEn_BAdfMY ztaG_U6Rvjh&)DC$A2}~?ZR(y3_s<;Sc_uc_Mv@R7B=rexn*^>n0Xd<>H>oC8f`A5Q zI0kh&(qj>o!tIQI?2}YkrGnbL%Y75T(%Cw`f2A#5_$U%9UsAHp>-5QdotwY2l~!IF ztE&M!L<6aEjk7Wck#{ { w=Kwa2UmM>Xzk(hTX5j00T0~vIM9@wF9G>#1P3CPo%b~G zIV&@@UA1fYVoks8;-<0d#R;=UE3oEQFn<- 9lK3arEHIpcs~8&LRvB*SIAf!dFLG!AxX)(1I{XT z#6RsJj`~c=$v*`V#0VGjAxIjdrxu~4b!FP&fmlUoMxM+5 _fEOd*6Qonx}lo;5>(G)K@5Yz&?RS8HS!97ZP&Pfkr`#DCfNA_#{-Uz>h&b8-K ziDS!{t(1@zP+sheMn0%+Z6?NPxSp>!F8H*u!)cN82~bX$Yhda3DC3g^{z|^Y#a@-8 z#OvX)I~aI11c@rTIs)ekzT*MfH5#0sS)S>*MGxAvl`=@YmVuVuj16$&sBwid5KW~> zQ`^*%;C5!c(E+iX+y8_g*V~NU(9<08^u&QIoN5rpw~}B=BYDmD2jxa>LL5AOOS8+b zzO%D$McM!n`26+2 _K$h-POh$uh+K(wmL}*+sy3xtcL`MwMAY zBgdx?`gYRPBeu5YeF3r3ZtTVZ*@)r<&M;zMQEI$=9KF{Z*O_`luk|s>93YiEWBmMD znx_~*D_|ai6t{)hyF+X~k5i%(ZhIVo$7t^C9DT{eG&Q2A(Qt7v+#))(l9sYn4b98z zee5Kc(SUnA8GPVh+&-@gI9FfZR8^0izqcH(<}s5N`JN2%G|D=A{REc^Aq9q eot9sOH3o4^xQ3hxn!CFOIE)?XCP)1 zZA2qEFLHt>bz*8^FqlH$+}Iden+NJfh1mhyBJHNT+U_?FE;KkpT7Un@>X3 PBj(cZ=s~4P#ye1;>sp@n#`FI0e6HW7uVy{6hW8jD zS&AxvIe_M|h_Z4yVI~@l(;IP3)7tk11qzmyw>9N&dbTtIU*#_~QOUf{){jT?W&1?{ z$3aI8%K<~({X1>HW<7O%(*6Ff`r`*Zv^6`cmi3A;t!~#ouXJN?>pRyz#%m8=fhC$} z3`?KI64|V~qs1+EBc6+a66Cp+5&wrKuX7F(>2tl-);g~|i!(y`3FN4Ln;R(0q=_^m znepg%G2rC1@g3=!9 5KhlbZE!$~m&hRAY%2=!;Qjf8_mUVw`}zR(R7bm&c&wViTc%N@*t-dKRq_}gf~ z8gIJNVsUfYnsIlo`$u+@E?LBnK1_acb&1o E@!WvW+C+=k;yMgD?&za1Pkpq j z0p8}k%{s5b#ve5=H{eIyFF{C2qa_v#FsA!J5(+^RVmwwt!7477WJXrZ=&K{)G_kaz z5y#CPM1 cBsrX&vJ}SNZzdq~E-aTCYpPuSBkk!)-Z0 zuyp5xZ22llXivALIILK~?_`Got|=@X3?7xQ&>kb#i2oDwhU> 2A$O1%S z1U|5jU=m|!xpv?re8V0o&W3FoUK4zl!vG#fixy%4yVP|jruZC;0@P;SUX!Qfa&DT0 z_=i#`#Ee0|O&!CRNyM*{MAitCo`^{)?{TLZeA+45^y|-tcODu>{iY7g&?ntr!9LvV z*%|*<>vY&=Syfz7)DjY5i&X5$L5d%q^HD%$UCKfs^;Px6!m}hClRi6{lIFhDSHpv{ z(s-WYctEPRVd>h?-4-`! >CdQu^0hdXwTQlkTw_!8HPLx{Sf>h1_i^V?tR^{@BRY`W>9emtNguccpb6u(w~$v zZ{7FW=2OO(6vL62I6E6P%3_g00Z|_}gHW-i#~~;ygr!|EdS9pGJbrPlrC&H1kvkN( zfO}84lh*%s`BoIg*O;;{!*~7%wVM-Z?%SLcg8a!4rgImFO~(R!8 3XdLNr3;2M zig;!uH`~x;w;p3dnrWFagj6dDEUt@E 9Xhnx@==O*CGUh zCB8F{J&MJ17&O-UAZsJ0ToqN^KcU^#qCG|b+CGE#wUA{A9^qPlfAdESMsHG%!$U+K zv-AmIBrNh7zVnH3E;lA=e(dK #BNecb#-2xM*AUl+}v{p#B#b+~2=7jP+ro08; z^lEW3vO*!+W8CDDfg!n0Wm)y=3$_<2GD#BS^w5!_{^^4)eSnD5y!F?cwYNvUPi)Nv z;=5ulMA)#lpHZt7e`HLEah|{-c4Gdm-goj{A|Y;bcPo1}B!`U4`?-9M{=+Is@X;RJ zg~9u73LV+APXhU87#yhtUz0+5o1_ewUj$R@Vz^L#okTH*lio9Rax4xKWL8r1K+rnI z))Q3?RY?~E6_7kXx&Fvs;jeOqlV)nP&z5|!^oO@#j-N=6BaWnf!m~E%2eI=E&_}6W zDDf#v(8gB{#T;d7VPGb=U*pgl)KAgWFku%-$1Nqx`eU)NME=cf=Br>`P@bEc%adnE z7OKg7&Rnbf{_O#IDJdw#FW$#j&Oqv5DL3R*uVUh4sB^N){44#}2j|8_%?a>fGvBr% z%x?@qO+!b(Kb4Y27 z_@#7)GP3Bwy{YXx-CA_E9B#_{>|;Ka@4&UyX!y9l ~1BYh*6=xSV+FP^Qg-PabMe;j3(m)~lHT6$!bzou ^y68{e^1 zd*GQDd}$*2u-mKx_C$SgX*5J5{GYTUpi>hctvM00@C5{N=5glKn4b7i`}9b-PDV z(ntOBHJTpUv_G8W- D?@^4rfy#0UmvcSk 4O6>of kpW`sfg zfz9;4r=UrX_=->7UlcHB `!8`o(F{M2V*WEv$-pF%nX2+=Rd{^)xJ9 zHiZoZSw8sY@Ux*b<$NV963bPigy-6#FI>OzD1xJb>ze-WsHqAe@XVBaV03oCM+` yoR)9yQM`68ngW(`2a!jowQ0a%7Db+J+mhouse7!Cu^Q13pK+ey#LH_ z($v)eyoH+wyz5)W(?~eq1--To16ze9czG-&+N7k>WMy&&Ufgt_iUCq0;&lF4X-Tq( z%?%R=exUg@%OC#Dhto5vXc@r#tn^ifRmY(Pb}X7@DJ^lrS0fhTr&z}NNO+Re;y4(| zp &UZAbA{ni9+JRF@R@{hE`LZBgm`Cs5CbB|? zCC2U7Mf{E0sO^OvhI$H4MLGNKL2ELPIbp|?L?YCRbL{=|2cA#*In%Wo)7ST^Bbx7o zf?@;i^kpi{LJPAN;NO^=_H(ER=Gz+t1_+8Qy`%_1!(B}vOj)NCJ@!LvlVANi*z H*4J3+ccZK%TbntIAEXal zSl*E8iBj>TFY;w}uhZ2)_##P4ac%LUf|}JBdXxKBAc_BJBIk}ED35HE{xRMEP}vdk z;au5Sa^XplhIC0Ssefi;5=V)4JI>c+5m l 1eRbFs; 7NiTC;KqF1?`X+J=?c7bPYR!#Oyk-sCX(lSAmb z46HX%WuX5N*H-D;`Y3?nRZeL|23bN7rJ62HzSGf)qTJErD>=z!mc~+s`~5s`hr ^S zU?aruL|Ff7Ju7!!U&UTsmN+AM($4H}`+=LnT6GIc#+8aO3$OEpKqVX<17d3`N-xcn zsA9zOA{8WtVv|r(QrLj~8UiBdpkF7OzdNhCygP5~Z^agtv$yAzBzGj>ov{(i%41me z`75AHVOOM9F{OOnFDOe0;l2yql`mTtAlQRdrzA)PZ`gwDx|j_4r4KOL*%{Q_vS`Rh zHoC~=VW05OV8fDjiZ>5aw3Bfe3&mom`?JITdZxq@`2&v-SiF}WCs~xMlEPPmd*ksk zfz8d$NPSWr`1qnI5$OS7n}Lsmr^Z1-Mgi|;3a^B?Xz#D(O}Ng_Vw|28&yoho$+^GH z;Ve=;<9B57l)myHBXS^7rveVJV?A2pBD>JU+BdPRYZA&H8(&b*Rt7KfAaX;Z_4 zE|!orh%S(+g#az7+y@$3L?@oL;VbUkT~{^US~4i6&ooVTx%_jyFet8At`bs1gVo&q z#FKYqiiI^9#@9%uNBqpV^q+U^zTk8fX0j?A%nhhhW{!?*grUFA3ebb&6T@>CHAf$w zccU35e9j=F&t_DP2o+=9mwC(ffyv3qrsOV{e W+YbjE#OkfMWmSZz+=uA`WI!KIngx)d{NDar? z)zo!fG&Bf3ZvaKof`{T7nwqATma8kVifdoOo_{GS+Na-FE*J&B Wu2PXMTCckfA2JDShw%FpOuy6Us=fm9qDen@h(gz=cx4b^^->p=k@!x zTlslIgM n?GetccHmIq`W^YJ&qlh`1JixgB}!^Ozq%I*e;GE$0!b$&L?9jA$!$Q z@7{I>`EV+Q(VBG(#0bCz{R|{G^{o_y^mVb>vN xS-maljZ{A2oD^> zGt%`mXNvjTJ!hSxdOGQ^ N?%F9(8!PD;;BO-&cm-S_kczr137;dQ-R zWj|$_SO0akZGYVUH}|;B)n;Df%JtE&a=! m=*FZTllu_eN}w1^C`n{#a7$x@b&N9-H<@??7J%554ni-Z>XqP#VuL z=l()Kpk}AE$7QFaQ?1I1{QffIUb^PJk&VsA9N9z;Hn!sHI`_Sr;MJZ)PCmY_@9JgM zTi*(xzjnDf?7Y0}_wHlwBoj+8^f>URTuE%aSrxi_*1&Iq_&|#+)aALaV^tP;hFeAn zioeYtiZkAkK|5hY rVJNwb z-E#MHx-XDQQIF%eR+YP ~hpY1w0I_|Ouv-E6iZRzXk`iNn_jC0?wcaGx0{lsg% z_Sqi`ZlOo#jzi~aD6y+FoP^V;7}ANQ@bdKakH$N bSQ1F2&+=krK5P zW8rHOm^t@```i7-m5M&TMgqgzhi<%Pb~2wAB=U znvFgIVt{QLeWz0|S&g1W+Ua?_t<$N|b8x^0d{k?}>t~JD{qx`cSe`mlg#F2j3%4<$ z6P((hE2gN|p;{8u2>PEz6t?t(EPGXRjB?)vGrLEz>xSo02 z3F6gIR9;d#dIaOO|4aGfQl`2LDhKC z&N>q2%(`g`4Q9kwelxj @!a4R08C5&kfc)YU? z_~-N9_p%N5qV9q3e)g9d_OQ7h{!YE#tHt&KrzgmCIJZ96p2B6pcih91