From 2364a7aded9f04137eeb8520d69ffe97f7caef66 Mon Sep 17 00:00:00 2001 From: Erik Hatcher Date: Thu, 3 Sep 2020 14:16:21 -0400 Subject: [PATCH] SOLR-14792: Remove VelocityResponseWriter --- .gitignore | 1 - gradle/documentation/render-javadoc.gradle | 7 - gradle/maven/defaults-maven.gradle | 1 - settings.gradle | 1 - solr/contrib/velocity/build.gradle | 33 - .../org/apache/solr/response/PageTool.java | 92 -- .../response/SolrVelocityResourceLoader.java | 61 - .../solr/response/VelocityResponseWriter.java | 468 ------ .../org/apache/solr/response/package.html | 23 - solr/contrib/velocity/src/java/overview.html | 21 - .../src/resources/VM_global_library.vm | 4 - .../contrib/velocity/src/resources/_macros.vm | 70 - solr/contrib/velocity/src/resources/macros.vm | 3 - .../src/resources/velocity/_default.vm | 14 - .../velocity/src/resources/velocity/browse.vm | 73 - .../velocity/src/resources/velocity/error.vm | 4 - .../velocity/src/resources/velocity/facets.vm | 23 - .../velocity/src/resources/velocity/footer.vm | 19 - .../velocity/src/resources/velocity/head.vm | 185 --- .../velocity/src/resources/velocity/hit.vm | 27 - .../velocity/src/resources/velocity/layout.vm | 19 - .../resources/velocity/resources.properties | 6 - .../src/resources/velocity/results_list.vm | 3 - .../velocity/src/test-files/velocity/file.vm | 1 - .../velocity/solr/collection1/conf/schema.xml | 26 - .../solr/collection1/conf/solrconfig.xml | 52 - .../collection1/conf/velocity-init.properties | 18 - .../conf/velocity/VM_global_library.vm | 3 - .../collection1/conf/velocity/encoding.vm | 1 - .../solr/collection1/conf/velocity/layout.vm | 1 - .../solr/collection1/conf/velocity/locale.vm | 1 - .../conf/velocity/locale_number.vm | 1 - .../solr/collection1/conf/velocity/macros.vm | 3 - .../collection1/conf/velocity/numFound.vm | 1 - .../conf/velocity/outside_the_box.vm | 4 - .../collection1/conf/velocity/resource_get.vm | 1 - .../conf/velocity/sandbox_intersection.vm | 5 - .../velocity/test_macro_legacy_support.vm | 1 - .../conf/velocity/test_macro_overridden.vm | 1 - .../conf/velocity/test_macro_visible.vm | 1 - solr/contrib/velocity/src/test/custom_tool.vm | 19 - solr/contrib/velocity/src/test/foreach.vm | 14 - .../org/apache/solr/velocity/MockTool.java | 34 - .../velocity/VelocityResponseWriterTest.java | 318 ---- .../src/test/velocity/resources.properties | 18 - .../test/velocity/resources_en_UK.properties | 18 - solr/example/files/README.md | 167 -- .../velocity/resources.properties | 82 - .../velocity/resources_de_DE.properties | 18 - .../velocity/resources_fr_FR.properties | 20 - solr/example/files/conf/currency.xml | 67 - solr/example/files/conf/elevate.xml | 42 - solr/example/files/conf/email_url_types.txt | 2 - .../files/conf/lang/contractions_ca.txt | 8 - .../files/conf/lang/contractions_fr.txt | 15 - .../files/conf/lang/contractions_ga.txt | 5 - .../files/conf/lang/contractions_it.txt | 23 - .../files/conf/lang/hyphenations_ga.txt | 5 - solr/example/files/conf/lang/stemdict_nl.txt | 6 - solr/example/files/conf/lang/stoptags_ja.txt | 420 ----- solr/example/files/conf/lang/stopwords_ar.txt | 125 -- solr/example/files/conf/lang/stopwords_bg.txt | 193 --- solr/example/files/conf/lang/stopwords_ca.txt | 220 --- solr/example/files/conf/lang/stopwords_cz.txt | 172 -- solr/example/files/conf/lang/stopwords_da.txt | 110 -- solr/example/files/conf/lang/stopwords_de.txt | 294 ---- solr/example/files/conf/lang/stopwords_el.txt | 78 - solr/example/files/conf/lang/stopwords_en.txt | 54 - solr/example/files/conf/lang/stopwords_es.txt | 356 ----- solr/example/files/conf/lang/stopwords_eu.txt | 99 -- solr/example/files/conf/lang/stopwords_fa.txt | 313 ---- solr/example/files/conf/lang/stopwords_fi.txt | 97 -- solr/example/files/conf/lang/stopwords_fr.txt | 186 --- solr/example/files/conf/lang/stopwords_ga.txt | 110 -- solr/example/files/conf/lang/stopwords_gl.txt | 161 -- solr/example/files/conf/lang/stopwords_hi.txt | 235 --- solr/example/files/conf/lang/stopwords_hu.txt | 211 --- solr/example/files/conf/lang/stopwords_hy.txt | 46 - solr/example/files/conf/lang/stopwords_id.txt | 359 ----- solr/example/files/conf/lang/stopwords_it.txt | 303 ---- solr/example/files/conf/lang/stopwords_ja.txt | 127 -- solr/example/files/conf/lang/stopwords_lv.txt | 172 -- solr/example/files/conf/lang/stopwords_nl.txt | 119 -- solr/example/files/conf/lang/stopwords_no.txt | 194 --- solr/example/files/conf/lang/stopwords_pt.txt | 253 --- solr/example/files/conf/lang/stopwords_ro.txt | 233 --- solr/example/files/conf/lang/stopwords_ru.txt | 243 --- solr/example/files/conf/lang/stopwords_sv.txt | 133 -- solr/example/files/conf/lang/stopwords_th.txt | 119 -- solr/example/files/conf/lang/stopwords_tr.txt | 212 --- solr/example/files/conf/lang/userdict_ja.txt | 29 - solr/example/files/conf/managed-schema | 520 ------ solr/example/files/conf/params.json | 34 - solr/example/files/conf/protwords.txt | 21 - solr/example/files/conf/solrconfig.xml | 1423 ----------------- solr/example/files/conf/stopwords.txt | 14 - solr/example/files/conf/synonyms.txt | 29 - solr/example/files/conf/update-script.js | 115 -- solr/example/files/conf/velocity/browse.vm | 32 - solr/example/files/conf/velocity/dropit.js | 0 .../files/conf/velocity/facet_doc_type.vm | 2 - .../conf/velocity/facet_text_shingles.vm | 12 - solr/example/files/conf/velocity/facets.vm | 24 - solr/example/files/conf/velocity/footer.vm | 29 - solr/example/files/conf/velocity/head.vm | 290 ---- solr/example/files/conf/velocity/hit.vm | 77 - .../files/conf/velocity/img/english_640.png | Bin 138412 -> 0 bytes .../files/conf/velocity/img/france_640.png | Bin 99992 -> 0 bytes .../files/conf/velocity/img/germany_640.png | Bin 105271 -> 0 bytes .../files/conf/velocity/img/globe_256.png | Bin 46622 -> 0 bytes .../conf/velocity/jquery.tx3-tag-cloud.js | 0 solr/example/files/conf/velocity/js/dropit.js | 97 -- .../conf/velocity/js/jquery.autocomplete.js | 763 --------- .../conf/velocity/js/jquery.tx3-tag-cloud.js | 70 - solr/example/files/conf/velocity/layout.vm | 42 - solr/example/files/conf/velocity/macros.vm | 16 - .../files/conf/velocity/mime_type_lists.vm | 68 - solr/example/files/conf/velocity/results.vm | 20 - .../files/conf/velocity/results_list.vm | 21 - .../velocity-engine-core-2.0.jar.sha1 | 1 - .../velocity-engine-core-LICENSE-ASL.txt | 202 --- solr/licenses/velocity-engine-core-NOTICE.txt | 7 - .../velocity-tools-generic-3.0.jar.sha1 | 1 - .../velocity-tools-generic-LICENSE-ASL.txt | 201 --- .../velocity-tools-generic-NOTICE.txt | 12 - .../licenses/velocity-tools-view-3.0.jar.sha1 | 1 - .../velocity-tools-view-LICENSE-ASL.txt | 201 --- solr/licenses/velocity-tools-view-NOTICE.txt | 12 - .../velocity-tools-view-jsp-3.0.jar.sha1 | 1 - .../velocity-tools-view-jsp-LICENSE-ASL.txt | 201 --- .../velocity-tools-view-jsp-NOTICE.txt | 12 - solr/packaging/build.gradle | 1 - .../conf/solrconfig.xml | 112 +- .../conf/velocity/README.md | 116 -- .../conf/velocity/VM_global_library.vm | 186 --- .../conf/velocity/browse.vm | 33 - .../conf/velocity/cluster.vm | 19 - .../conf/velocity/cluster_results.vm | 31 - .../conf/velocity/debug.vm | 28 - .../conf/velocity/did_you_mean.vm | 11 - .../conf/velocity/error.vm | 11 - .../conf/velocity/facet_fields.vm | 24 - .../conf/velocity/facet_pivot.vm | 12 - .../conf/velocity/facet_queries.vm | 12 - .../conf/velocity/facet_ranges.vm | 23 - .../conf/velocity/facets.vm | 10 - .../conf/velocity/footer.vm | 43 - .../conf/velocity/head.vm | 37 - .../conf/velocity/header.vm | 7 - .../conf/velocity/hit.vm | 25 - .../conf/velocity/hit_grouped.vm | 43 - .../conf/velocity/hit_plain.vm | 25 - .../conf/velocity/join_doc.vm | 20 - .../conf/velocity/jquery.autocomplete.css | 48 - .../conf/velocity/jquery.autocomplete.js | 763 --------- .../conf/velocity/layout.vm | 24 - .../conf/velocity/main.css | 231 --- .../conf/velocity/mime_type_lists.vm | 68 - .../conf/velocity/pagination_bottom.vm | 22 - .../conf/velocity/pagination_top.vm | 29 - .../conf/velocity/product_doc.vm | 32 - .../conf/velocity/query.vm | 42 - .../conf/velocity/query_form.vm | 64 - .../conf/velocity/query_group.vm | 43 - .../conf/velocity/query_spatial.vm | 75 - .../conf/velocity/results_list.vm | 22 - .../conf/velocity/richtext_doc.vm | 153 -- .../conf/velocity/suggest.vm | 8 - .../conf/velocity/tabs.vm | 50 - solr/solr-ref-guide/build.gradle | 3 - solr/solr-ref-guide/src/_config.yml.template | 1 - solr/solr-ref-guide/src/libs.adoc | 2 - solr/solr-ref-guide/src/response-writers.adoc | 10 +- solr/solr-ref-guide/src/searching.adoc | 2 - .../src/velocity-response-writer.adoc | 122 -- .../src/velocity-search-ui.adoc | 26 - versions.lock | 8 +- versions.props | 2 - 178 files changed, 4 insertions(+), 15382 deletions(-) delete mode 100644 solr/contrib/velocity/build.gradle delete mode 100644 solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java delete mode 100644 solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java delete mode 100644 solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java delete mode 100644 solr/contrib/velocity/src/java/org/apache/solr/response/package.html delete mode 100644 solr/contrib/velocity/src/java/overview.html delete mode 100644 solr/contrib/velocity/src/resources/VM_global_library.vm delete mode 100644 solr/contrib/velocity/src/resources/_macros.vm delete mode 100644 solr/contrib/velocity/src/resources/macros.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/_default.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/browse.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/error.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/facets.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/footer.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/head.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/hit.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/layout.vm delete mode 100644 solr/contrib/velocity/src/resources/velocity/resources.properties delete mode 100644 solr/contrib/velocity/src/resources/velocity/results_list.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/file.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm delete mode 100644 solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm delete mode 100644 solr/contrib/velocity/src/test/custom_tool.vm delete mode 100644 solr/contrib/velocity/src/test/foreach.vm delete mode 100644 solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java delete mode 100644 solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java delete mode 100644 solr/contrib/velocity/src/test/velocity/resources.properties delete mode 100644 solr/contrib/velocity/src/test/velocity/resources_en_UK.properties delete mode 100644 solr/example/files/README.md delete mode 100644 solr/example/files/browse-resources/velocity/resources.properties delete mode 100644 solr/example/files/browse-resources/velocity/resources_de_DE.properties delete mode 100644 solr/example/files/browse-resources/velocity/resources_fr_FR.properties delete mode 100644 solr/example/files/conf/currency.xml delete mode 100644 solr/example/files/conf/elevate.xml delete mode 100644 solr/example/files/conf/email_url_types.txt delete mode 100644 solr/example/files/conf/lang/contractions_ca.txt delete mode 100644 solr/example/files/conf/lang/contractions_fr.txt delete mode 100644 solr/example/files/conf/lang/contractions_ga.txt delete mode 100644 solr/example/files/conf/lang/contractions_it.txt delete mode 100644 solr/example/files/conf/lang/hyphenations_ga.txt delete mode 100644 solr/example/files/conf/lang/stemdict_nl.txt delete mode 100644 solr/example/files/conf/lang/stoptags_ja.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ar.txt delete mode 100644 solr/example/files/conf/lang/stopwords_bg.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ca.txt delete mode 100644 solr/example/files/conf/lang/stopwords_cz.txt delete mode 100644 solr/example/files/conf/lang/stopwords_da.txt delete mode 100644 solr/example/files/conf/lang/stopwords_de.txt delete mode 100644 solr/example/files/conf/lang/stopwords_el.txt delete mode 100644 solr/example/files/conf/lang/stopwords_en.txt delete mode 100644 solr/example/files/conf/lang/stopwords_es.txt delete mode 100644 solr/example/files/conf/lang/stopwords_eu.txt delete mode 100644 solr/example/files/conf/lang/stopwords_fa.txt delete mode 100644 solr/example/files/conf/lang/stopwords_fi.txt delete mode 100644 solr/example/files/conf/lang/stopwords_fr.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ga.txt delete mode 100644 solr/example/files/conf/lang/stopwords_gl.txt delete mode 100644 solr/example/files/conf/lang/stopwords_hi.txt delete mode 100644 solr/example/files/conf/lang/stopwords_hu.txt delete mode 100644 solr/example/files/conf/lang/stopwords_hy.txt delete mode 100644 solr/example/files/conf/lang/stopwords_id.txt delete mode 100644 solr/example/files/conf/lang/stopwords_it.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ja.txt delete mode 100644 solr/example/files/conf/lang/stopwords_lv.txt delete mode 100644 solr/example/files/conf/lang/stopwords_nl.txt delete mode 100644 solr/example/files/conf/lang/stopwords_no.txt delete mode 100644 solr/example/files/conf/lang/stopwords_pt.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ro.txt delete mode 100644 solr/example/files/conf/lang/stopwords_ru.txt delete mode 100644 solr/example/files/conf/lang/stopwords_sv.txt delete mode 100644 solr/example/files/conf/lang/stopwords_th.txt delete mode 100644 solr/example/files/conf/lang/stopwords_tr.txt delete mode 100644 solr/example/files/conf/lang/userdict_ja.txt delete mode 100644 solr/example/files/conf/managed-schema delete mode 100644 solr/example/files/conf/params.json delete mode 100644 solr/example/files/conf/protwords.txt delete mode 100644 solr/example/files/conf/solrconfig.xml delete mode 100644 solr/example/files/conf/stopwords.txt delete mode 100644 solr/example/files/conf/synonyms.txt delete mode 100644 solr/example/files/conf/update-script.js delete mode 100644 solr/example/files/conf/velocity/browse.vm delete mode 100644 solr/example/files/conf/velocity/dropit.js delete mode 100644 solr/example/files/conf/velocity/facet_doc_type.vm delete mode 100644 solr/example/files/conf/velocity/facet_text_shingles.vm delete mode 100644 solr/example/files/conf/velocity/facets.vm delete mode 100644 solr/example/files/conf/velocity/footer.vm delete mode 100644 solr/example/files/conf/velocity/head.vm delete mode 100644 solr/example/files/conf/velocity/hit.vm delete mode 100644 solr/example/files/conf/velocity/img/english_640.png delete mode 100644 solr/example/files/conf/velocity/img/france_640.png delete mode 100644 solr/example/files/conf/velocity/img/germany_640.png delete mode 100644 solr/example/files/conf/velocity/img/globe_256.png delete mode 100644 solr/example/files/conf/velocity/jquery.tx3-tag-cloud.js delete mode 100644 solr/example/files/conf/velocity/js/dropit.js delete mode 100644 solr/example/files/conf/velocity/js/jquery.autocomplete.js delete mode 100644 solr/example/files/conf/velocity/js/jquery.tx3-tag-cloud.js delete mode 100644 solr/example/files/conf/velocity/layout.vm delete mode 100644 solr/example/files/conf/velocity/macros.vm delete mode 100644 solr/example/files/conf/velocity/mime_type_lists.vm delete mode 100644 solr/example/files/conf/velocity/results.vm delete mode 100644 solr/example/files/conf/velocity/results_list.vm delete mode 100644 solr/licenses/velocity-engine-core-2.0.jar.sha1 delete mode 100644 solr/licenses/velocity-engine-core-LICENSE-ASL.txt delete mode 100644 solr/licenses/velocity-engine-core-NOTICE.txt delete mode 100644 solr/licenses/velocity-tools-generic-3.0.jar.sha1 delete mode 100644 solr/licenses/velocity-tools-generic-LICENSE-ASL.txt delete mode 100644 solr/licenses/velocity-tools-generic-NOTICE.txt delete mode 100644 solr/licenses/velocity-tools-view-3.0.jar.sha1 delete mode 100644 solr/licenses/velocity-tools-view-LICENSE-ASL.txt delete mode 100644 solr/licenses/velocity-tools-view-NOTICE.txt delete mode 100644 solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 delete mode 100644 solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt delete mode 100644 solr/licenses/velocity-tools-view-jsp-NOTICE.txt delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/README.md delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/browse.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/debug.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/error.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facets.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/footer.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/head.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/header.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/layout.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/main.css delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_form.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_group.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/results_list.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/suggest.vm delete mode 100644 solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/tabs.vm delete mode 100644 solr/solr-ref-guide/src/velocity-response-writer.adoc delete mode 100644 solr/solr-ref-guide/src/velocity-search-ui.adoc diff --git a/.gitignore b/.gitignore index 15a2736ba50..f120ec44aaa 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ dist lib test-lib /*~ -/velocity.log /build.properties /.idea lucene/**/*.iml diff --git a/gradle/documentation/render-javadoc.gradle b/gradle/documentation/render-javadoc.gradle index a34d8a103ff..3b0b8d47ff7 100644 --- a/gradle/documentation/render-javadoc.gradle +++ b/gradle/documentation/render-javadoc.gradle @@ -261,13 +261,6 @@ configure(project(":solr").allprojects) { } } -configure(project(":solr:contrib:velocity")) { - project.tasks.withType(RenderJavadocTask) { - // TODO: clean up split packages - javadocMissingIgnore = [ "org.apache.solr.response" ] - } -} - configure(project(":solr:contrib:analysis-extras")) { project.tasks.withType(RenderJavadocTask) { // TODO: clean up split packages diff --git a/gradle/maven/defaults-maven.gradle b/gradle/maven/defaults-maven.gradle index 570d0118d7f..5c260f3c5d2 100644 --- a/gradle/maven/defaults-maven.gradle +++ b/gradle/maven/defaults-maven.gradle @@ -66,7 +66,6 @@ configure(rootProject) { ":solr:contrib:langid", ":solr:contrib:jaegertracer-configurator", ":solr:contrib:prometheus-exporter", - ":solr:contrib:velocity", ":solr:test-framework", ] } diff --git a/settings.gradle b/settings.gradle index aeafd2b5a37..520b7bf4a83 100644 --- a/settings.gradle +++ b/settings.gradle @@ -62,7 +62,6 @@ include "solr:contrib:extraction" include "solr:contrib:langid" include "solr:contrib:jaegertracer-configurator" include "solr:contrib:prometheus-exporter" -include "solr:contrib:velocity" include "solr:contrib:ltr" include "solr:webapp" include "solr:test-framework" diff --git a/solr/contrib/velocity/build.gradle b/solr/contrib/velocity/build.gradle deleted file mode 100644 index b17b38be9f6..00000000000 --- a/solr/contrib/velocity/build.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -apply plugin: 'java-library' - -description = 'Solr Velocity Response Writer' - -dependencies { - implementation project(':solr:core') - - implementation('org.apache.velocity.tools:velocity-tools-view-jsp', { - exclude group: "commons-beanutils", module: "commons-beanutils" - exclude group: "org.apache.commons", module: "commons-digester3" - exclude group: "com.github.cliftonlabs", module: "json-simple" - }) - - testImplementation project(':solr:test-framework') -} diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java b/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java deleted file mode 100644 index 193c89b0ecd..00000000000 --- a/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.response; - -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.search.DocList; -import org.apache.solr.search.DocSlice; -import org.apache.solr.common.SolrDocumentList; -import org.apache.solr.common.SolrException; - -/** - * This class is used by the Velocity response writer to provide a consistent paging tool for use by templates. - * - * TODO: add more details - */ -public class PageTool { - private long start; - private int results_per_page = 10; - private long results_found; - private int page_count; - private int current_page_number; - - public PageTool(SolrQueryRequest request, SolrQueryResponse response) { - String rows = request.getParams().get("rows"); - - if (rows != null) { - results_per_page = Integer.parseInt(rows); - } - //TODO: Handle group by results - Object docs = response.getResponse(); - if (docs != null) { - if (docs instanceof DocSlice) { - results_found = ((DocSlice) docs).matches(); - start = ((DocSlice) docs).offset(); - } else if(docs instanceof ResultContext) { - DocList dl = ((ResultContext) docs).getDocList(); - results_found = dl.matches(); - start = dl.offset(); - } else if(docs instanceof SolrDocumentList) { - SolrDocumentList doc_list = (SolrDocumentList) docs; - results_found = doc_list.getNumFound(); - start = doc_list.getStart(); - } else { - throw new SolrException(SolrException.ErrorCode.UNKNOWN, "Unknown response type "+docs+". Expected one of DocSlice, ResultContext or SolrDocumentList"); - } - } - - page_count = (int) Math.ceil(results_found / (double) results_per_page); - current_page_number = (int) Math.ceil(start / (double) results_per_page) + (page_count > 0 ? 1 : 0); - } - - public long getStart() { - return start; - } - - public int getResults_per_page() { - return results_per_page; - } - - public long getResults_found() { - return results_found; - } - - public int getPage_count() { - return page_count; - } - - public int getCurrent_page_number() { - return current_page_number; - } - - @Override - public String toString() { - return "Found " + results_found + - " Page " + current_page_number + " of " + page_count + - " Starting at " + start + " per page " + results_per_page; - } -} diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java b/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java deleted file mode 100644 index bf778e14509..00000000000 --- a/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.response; - -import java.io.IOException; -import java.io.Reader; - -import org.apache.solr.core.SolrResourceLoader; -import org.apache.velocity.exception.ResourceNotFoundException; -import org.apache.velocity.runtime.resource.Resource; -import org.apache.velocity.runtime.resource.loader.ResourceLoader; -import org.apache.velocity.util.ExtProperties; - -/** - * Velocity resource loader wrapper around Solr resource loader - */ -public class SolrVelocityResourceLoader extends ResourceLoader { - private SolrResourceLoader loader; - - public SolrVelocityResourceLoader(SolrResourceLoader loader) { - super(); - this.loader = loader; - } - - @Override - public void init(ExtProperties extendedProperties) { - } - - @Override - public Reader getResourceReader(String source, String encoding) throws ResourceNotFoundException { - try { - return buildReader(loader.openResource("velocity/" + source), encoding); - } catch (IOException ioe) { - throw new ResourceNotFoundException(ioe); - } - } - - @Override - public boolean isSourceModified(Resource resource) { - return false; - } - - @Override - public long getLastModified(Resource resource) { - return 0; - } -} diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java b/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java deleted file mode 100644 index 58d8b2b55dc..00000000000 --- a/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java +++ /dev/null @@ -1,468 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.response; - -import java.io.File; -import java.io.FilePermission; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.StringWriter; -import java.io.Writer; -import java.lang.invoke.MethodHandles; -import java.nio.charset.StandardCharsets; -import java.security.AccessControlContext; -import java.security.AccessController; -import java.security.Permissions; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; -import java.security.ProtectionDomain; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Properties; -import java.util.PropertyPermission; -import java.util.ResourceBundle; - -import org.apache.solr.client.solrj.SolrResponse; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.client.solrj.response.SolrResponseBase; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.params.CommonParams; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.core.SolrCore; -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.util.plugin.SolrCoreAware; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; -import org.apache.velocity.tools.generic.CollectionTool; -import org.apache.velocity.tools.generic.ComparisonDateTool; -import org.apache.velocity.tools.generic.DisplayTool; -import org.apache.velocity.tools.generic.EscapeTool; -import org.apache.velocity.tools.generic.LocaleConfig; -import org.apache.velocity.tools.generic.MathTool; -import org.apache.velocity.tools.generic.NumberTool; -import org.apache.velocity.tools.generic.ResourceTool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.apache.solr.common.params.CommonParams.SORT; - -public class VelocityResponseWriter implements QueryResponseWriter, SolrCoreAware { - // init param names, these are _only_ loaded at init time (no per-request control of these) - // - multiple different named writers could be created with different init params - public static final String TEMPLATE_BASE_DIR = "template.base.dir"; - public static final String PROPERTIES_FILE = "init.properties.file"; - - // System property names, these are _only_ loaded at node startup (no per-request control of these) - public static final String SOLR_RESOURCE_LOADER_ENABLED = "velocity.resourceloader.solr.enabled"; - - // request param names - public static final String TEMPLATE = "v.template"; - public static final String LAYOUT = "v.layout"; - public static final String LAYOUT_ENABLED = "v.layout.enabled"; - public static final String CONTENT_TYPE = "v.contentType"; - public static final String JSON = "v.json"; - public static final String LOCALE = "v.locale"; - - public static final String TEMPLATE_EXTENSION = ".vm"; - public static final String DEFAULT_CONTENT_TYPE = "text/html;charset=UTF-8"; - public static final String JSON_CONTENT_TYPE = "application/json;charset=UTF-8"; - - private File fileResourceLoaderBaseDir; - private String initPropertiesFileName; // used just to hold from init() to inform() - - private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private Properties velocityInitProps = new Properties(); - private Map customTools = new HashMap(); - - @Override - public void init(@SuppressWarnings({"rawtypes"})NamedList args) { - log.warn("VelocityResponseWriter is deprecated. This may be removed in future Solr releases. Please SOLR-14065."); - fileResourceLoaderBaseDir = null; - String templateBaseDir = (String) args.get(TEMPLATE_BASE_DIR); - - if (templateBaseDir != null && !templateBaseDir.isEmpty()) { - fileResourceLoaderBaseDir = new File(templateBaseDir).getAbsoluteFile(); - if (!fileResourceLoaderBaseDir.exists()) { // "*not* exists" condition! - log.warn("{} specified does not exist: {}", TEMPLATE_BASE_DIR, fileResourceLoaderBaseDir); - fileResourceLoaderBaseDir = null; - } else { - if (!fileResourceLoaderBaseDir.isDirectory()) { // "*not* a directory" condition - log.warn("{} specified is not a directory: {}", TEMPLATE_BASE_DIR, fileResourceLoaderBaseDir); - fileResourceLoaderBaseDir = null; - } - } - } - - initPropertiesFileName = (String) args.get(PROPERTIES_FILE); - - @SuppressWarnings({"rawtypes"}) - NamedList tools = (NamedList)args.get("tools"); - if (tools != null) { - for(Object t : tools) { - @SuppressWarnings({"rawtypes"}) - Map.Entry tool = (Map.Entry)t; - customTools.put(tool.getKey().toString(), tool.getValue().toString()); - } - } - } - - @Override - public void inform(SolrCore core) { - // need to leverage SolrResourceLoader, so load init.properties.file here instead of init() - if (initPropertiesFileName != null) { - try { - velocityInitProps.load(new InputStreamReader(core.getResourceLoader().openResource(initPropertiesFileName), StandardCharsets.UTF_8)); - } catch (IOException e) { - log.warn("Error loading {} specified property file: {}", PROPERTIES_FILE, initPropertiesFileName, e); - } - } - } - - @Override - public String getContentType(SolrQueryRequest request, SolrQueryResponse response) { - String contentType = request.getParams().get(CONTENT_TYPE); - - // Use the v.contentType specified, or either of the default content types depending on the presence of v.json - return (contentType != null) ? contentType : ((request.getParams().get(JSON) == null) ? DEFAULT_CONTENT_TYPE : JSON_CONTENT_TYPE); - } - - @Override - public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException { - // run doWrite() with the velocity sandbox - try { - AccessController.doPrivileged(new PrivilegedExceptionAction() { - @Override - public Void run() throws IOException { - doWrite(writer, request, response); - return null; - } - }, VELOCITY_SANDBOX); - } catch (PrivilegedActionException e) { - throw (IOException) e.getException(); - } - } - - // sandbox for velocity code - // TODO: we could read in a policy file instead, in case someone needs to tweak it? - private static final AccessControlContext VELOCITY_SANDBOX; - static { - Permissions permissions = new Permissions(); - // TODO: restrict the scope of this! we probably only need access to classpath - permissions.add(new FilePermission("<>", "read,readlink")); - // properties needed by SolrResourceLoader (called from velocity code) - permissions.add(new PropertyPermission("jetty.testMode", "read")); - permissions.add(new PropertyPermission("solr.allow.unsafe.resourceloading", "read")); - // properties needed by log4j (called from velocity code) - permissions.add(new PropertyPermission("java.version", "read")); - // needed by velocity duck-typing - permissions.add(new RuntimePermission("accessDeclaredMembers")); - permissions.setReadOnly(); - VELOCITY_SANDBOX = new AccessControlContext(new ProtectionDomain[] { new ProtectionDomain(null, permissions) }); - } - - private void doWrite(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException { - VelocityEngine engine = createEngine(request); // TODO: have HTTP headers available for configuring engine - - Template template = getTemplate(engine, request); - - VelocityContext context = createContext(request, response); - context.put("engine", engine); // for $engine.resourceExists(...) - - String layoutTemplate = request.getParams().get(LAYOUT); - boolean layoutEnabled = request.getParams().getBool(LAYOUT_ENABLED, true) && layoutTemplate != null; - - String jsonWrapper = request.getParams().get(JSON); - boolean wrapResponse = layoutEnabled || jsonWrapper != null; - - // create output - if (!wrapResponse) { - // straight-forward template/context merge to output - template.merge(context, writer); - } - else { - // merge to a string buffer, then wrap with layout and finally as JSON - StringWriter stringWriter = new StringWriter(); - template.merge(context, stringWriter); - - if (layoutEnabled) { - context.put("content", stringWriter.toString()); - stringWriter = new StringWriter(); - try { - engine.getTemplate(layoutTemplate + TEMPLATE_EXTENSION).merge(context, stringWriter); - } catch (Exception e) { - throw new IOException(e.getMessage()); - } - } - - if (jsonWrapper != null) { - for (int i=0; i - - com.example.solr.velocity.MyTool - - - */ - // Custom tools can override any of the built-in tools provided above, by registering one with the same name - if (request.getCore().getCoreDescriptor().isConfigSetTrusted()) { - for (Map.Entry entry : customTools.entrySet()) { - String name = entry.getKey(); - // TODO: at least log a warning when one of the *fixed* tools classes is same name with a custom one, currently silently ignored - Object customTool = SolrCore.createInstance(entry.getValue(), Object.class, "VrW custom tool: " + name, request.getCore(), request.getCore().getResourceLoader()); - if (customTool instanceof LocaleConfig) { - ((LocaleConfig) customTool).configure(toolConfig); - } - context.put(name, customTool); - } - } - - // custom tools _cannot_ override context objects added below, like $request and $response - } - - - // Turn the SolrQueryResponse into a SolrResponse. - // QueryResponse has lots of conveniences suitable for a view - // Problem is, which SolrResponse class to use? - // One patch to SOLR-620 solved this by passing in a class name as - // as a parameter and using reflection and Solr's class loader to - // create a new instance. But for now the implementation simply - // uses QueryResponse, and if it chokes in a known way, fall back - // to bare bones SolrResponseBase. - // Can this writer know what the handler class is? With echoHandler=true it can get its string name at least - SolrResponse rsp = new QueryResponse(); - NamedList parsedResponse = BinaryResponseWriter.getParsedResponse(request, response); - try { - rsp.setResponse(parsedResponse); - - // page only injected if QueryResponse works - context.put("page", new PageTool(request, response)); // page tool only makes sense for a SearchHandler request - context.put("debug",((QueryResponse)rsp).getDebugMap()); - } catch (ClassCastException e) { - // known edge case where QueryResponse's extraction assumes "response" is a SolrDocumentList - // (AnalysisRequestHandler emits a "response") - rsp = new SolrResponseBase(); - rsp.setResponse(parsedResponse); - } - - context.put("request", request); - context.put("response", rsp); - - return context; - } - - private VelocityEngine createEngine(SolrQueryRequest request) { - - boolean trustedMode = request.getCore().getCoreDescriptor().isConfigSetTrusted(); - - - VelocityEngine engine = new VelocityEngine(); - - // load the built-in _macros.vm first, then load VM_global_library.vm for legacy (pre-5.0) support, - // and finally allow macros.vm to have the final say and override anything defined in the preceding files. - engine.setProperty(RuntimeConstants.VM_LIBRARY, "_macros.vm,VM_global_library.vm,macros.vm"); - - // Standard templates autoload, but not the macro one(s), by default, so let's just make life - // easier, and consistent, for macro development too. - engine.setProperty(RuntimeConstants.VM_LIBRARY_AUTORELOAD, "true"); - - /* - Set up Velocity resource loader(s) - terminology note: "resource loader" is overloaded here, there is Solr's resource loader facility for plugins, - and there are Velocity template resource loaders. It's confusing, they overlap: there is a Velocity resource - loader that loads templates from Solr's resource loader (SolrVelocityResourceLoader). - - The Velocity resource loader order is `[file,][solr],builtin` intentionally ordered in this manner. - The "file" resource loader, enabled when the configset is trusted and `template.base.dir` is specified as a - response writer init property. - - The "solr" resource loader, enabled when the configset is trusted, and provides templates from a velocity/ - sub-tree in either the classpath or under conf/. - - By default, only "builtin" resource loader is enabled, providing tenplates from builtin Solr .jar files. - - The basic browse templates are built into - this plugin, but can be individually overridden by placing a same-named template in the template.base.dir specified - directory, or within a trusted configset's velocity/ directory. - */ - ArrayList loaders = new ArrayList(); - if ((fileResourceLoaderBaseDir != null) && trustedMode) { - loaders.add("file"); - engine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, fileResourceLoaderBaseDir.getAbsolutePath()); - } - if (trustedMode) { - // The solr resource loader serves templates under a velocity/ subtree from , conf/, - // or SolrCloud's configuration tree. Or rather the other way around, other resource loaders are rooted - // from the top, whereas this is velocity/ sub-tree rooted. - loaders.add("solr"); - engine.setProperty("solr.resource.loader.instance", new SolrVelocityResourceLoader(request.getCore().getSolrConfig().getResourceLoader())); - } - - // Always have the built-in classpath loader. This is needed when using VM_LIBRARY macros, as they are required - // to be present if specified, and we want to have a nice macros facility built-in for users to use easily, and to - // extend in custom ways. - loaders.add("builtin"); - engine.setProperty("builtin.resource.loader.instance", new ClasspathResourceLoader()); - - engine.setProperty(RuntimeConstants.RESOURCE_LOADER, String.join(",", loaders)); - - - engine.setProperty(RuntimeConstants.INPUT_ENCODING, "UTF-8"); - engine.setProperty(RuntimeConstants.SPACE_GOBBLING, RuntimeConstants.SpaceGobbling.LINES.toString()); - - // install a class/package restricting uberspector - engine.setProperty(RuntimeConstants.UBERSPECT_CLASSNAME,"org.apache.velocity.util.introspection.SecureUberspector"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_PACKAGES,"java.lang.reflect"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Class"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ClassLoader"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Compiler"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.InheritableThreadLocal"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Package"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Process"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Runtime"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.RuntimePermission"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.SecurityManager"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.System"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Thread"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ThreadGroup"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ThreadLocal"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"org.apache.solr.core.SolrResourceLoader"); - engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"org.apache.solr.core.CoreContainer"); - - if (trustedMode) { - // Work around VELOCITY-908 with Velocity not handling locales properly - Object spaceGobblingInitProperty = velocityInitProps.get(RuntimeConstants.SPACE_GOBBLING); - if (spaceGobblingInitProperty != null) { - // If there is an init property, uppercase it before Velocity. - velocityInitProps.put(RuntimeConstants.SPACE_GOBBLING, - String.valueOf(spaceGobblingInitProperty).toUpperCase(Locale.ROOT)); - } - // bring in any custom properties too - engine.setProperties(velocityInitProps); - } - - engine.init(); - - return engine; - } - - private Template getTemplate(VelocityEngine engine, SolrQueryRequest request) throws IOException { - Template template; - - String templateName = request.getParams().get(TEMPLATE); - - String qt = request.getParams().get(CommonParams.QT); - String path = (String) request.getContext().get("path"); - if (templateName == null && path != null) { - templateName = path; - } // TODO: path is never null, so qt won't get picked up maybe special case for '/select' to use qt, otherwise use path? - if (templateName == null && qt != null) { - templateName = qt; - } - if (templateName == null) templateName = "index"; - try { - template = engine.getTemplate(templateName + TEMPLATE_EXTENSION); - } catch (Exception e) { - throw new IOException(e.getMessage()); - } - - return template; - } - - private String getJSONWrap(String xmlResult) { // maybe noggit or Solr's JSON utilities can make this cleaner? - // escape the double quotes and backslashes - String replace1 = xmlResult.replaceAll("\\\\", "\\\\\\\\"); - replace1 = replace1.replaceAll("\\n", "\\\\n"); - replace1 = replace1.replaceAll("\\r", "\\\\r"); - String replaced = replace1.replaceAll("\"", "\\\\\""); - // wrap it in a JSON object - return "{\"result\":\"" + replaced + "\"}"; - } - - // see: https://github.com/apache/velocity-tools/blob/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ResourceTool.java - private static class SolrVelocityResourceTool extends ResourceTool { - - private ClassLoader solrClassLoader; - - public SolrVelocityResourceTool(ClassLoader cl) { - this.solrClassLoader = cl; - } - - @Override - protected ResourceBundle getBundle(String baseName, Object loc) { - // resource bundles for this tool must be in velocity "package" - return ResourceBundle.getBundle( - "velocity." + baseName, - (loc == null) ? this.getLocale() : this.toLocale(loc), - solrClassLoader); - } - } -} diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/package.html b/solr/contrib/velocity/src/java/org/apache/solr/response/package.html deleted file mode 100644 index b36606c837f..00000000000 --- a/solr/contrib/velocity/src/java/org/apache/solr/response/package.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -{@link org.apache.solr.response.VelocityResponseWriter} and related code. - - diff --git a/solr/contrib/velocity/src/java/overview.html b/solr/contrib/velocity/src/java/overview.html deleted file mode 100644 index 21686399120..00000000000 --- a/solr/contrib/velocity/src/java/overview.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -Apache Solr Search Server: Velocity Response Writer contrib - - diff --git a/solr/contrib/velocity/src/resources/VM_global_library.vm b/solr/contrib/velocity/src/resources/VM_global_library.vm deleted file mode 100644 index fd3699b3033..00000000000 --- a/solr/contrib/velocity/src/resources/VM_global_library.vm +++ /dev/null @@ -1,4 +0,0 @@ -## legacy support, the writer will load this as a macro library as it used to -## but best not to have your own file called VM_global_library.vm; put them in macros.vm instead. -## This file is needed for the "builtin" resource loader as Velocity requires all macro library files exist, but -## we don't want users to have to have a macro library file in their template directories. diff --git a/solr/contrib/velocity/src/resources/_macros.vm b/solr/contrib/velocity/src/resources/_macros.vm deleted file mode 100644 index 406c4a976d4..00000000000 --- a/solr/contrib/velocity/src/resources/_macros.vm +++ /dev/null @@ -1,70 +0,0 @@ -#macro(param $key)$request.params.get($key)#end - -#macro(url_root)/solr#end - -#macro(core_name)$request.core.name#end -#macro(url_for_solr)#{url_root}#if($request.core.name != "")/$request.core.name#end#end -#macro(url_for_home)#url_for_solr$request.context.path#end - -#macro(q)&q=$!{esc.url($request.params.get('q'))}#end - -#macro(fqs $p)#foreach($fq in $p)#if($velocityCount>1)&#{end}fq=$esc.url($fq)#end#end - -#macro(debug)#if($debug)&debug=true#end#end - -#macro(sort $p)#if($p)#foreach($s in $p)&sort=$esc.url($s)#end#end#end - -#macro(lensNoQ)?#if($request.params.getParams('fq') and $request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end#sort($request.params.getParams('sort'))#debug#end -#macro(lens)#lensNoQ#q#end - -#macro(url_for_lens)#{url_for_home}#lens#end - -#macro(url_for_start $start)#url_for_home#lens&start=$start#end - -#macro(url_for_filters $p)#url_for_home?#q#if($p.size() > 0)&#fqs($p)#end#debug#end - -#macro(url_for_nested_facet_query $field)#url_for_home#lens&fq=$esc.url($field)#end - -#macro(url_for_facet_filter $field $value)#url_for_home#lens&fq=#if($value!=$null)$esc.url($field):%22$esc.url($value)%22#else-$esc.url($field):[*+TO+*]#end#end - -#macro(url_for_facet_date_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end - -#macro(url_for_facet_range_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end - -# TODO: make this parameterized fully, no context sensitivity -#macro(field $f) - #if($response.response.highlighting.get($docId).get($f).get(0)) - #set($pad = "") - #foreach($v in $response.response.highlighting.get($docId).get($f)) - $pad$v## #TODO: $esc.html() or maybe make that optional? - #set($pad = " ... ") - #end - #else - $esc.html($display.list($doc.getFieldValues($f), ", ")) - #end -#end - -#macro(link_to_previous_page) - #if($page.current_page_number > 1) - #set($prev_start = $page.start - $page.results_per_page) - $resource.previous - #end -#end - -#macro(link_to_next_page) - #if($page.current_page_number < $page.page_count) - #set($next_start = $page.start + $page.results_per_page) - $resource.next - #end -#end - -#macro(link_to_page $page_number $text) - #if($page_number == $page.current_page_number) - $text - #else - #if($page_number <= $page.page_count) - #set($page_start = $page_number * $page.results_per_page - $page.results_per_page) - $text - #end - #end -#end diff --git a/solr/contrib/velocity/src/resources/macros.vm b/solr/contrib/velocity/src/resources/macros.vm deleted file mode 100644 index 0018c5f580c..00000000000 --- a/solr/contrib/velocity/src/resources/macros.vm +++ /dev/null @@ -1,3 +0,0 @@ -## placeholder for users to specify their own macros -## This file is needed for the "builtin" resource loader as Velocity requires all macro library files exist. -## This is the file we want users to override to add their own macros. diff --git a/solr/contrib/velocity/src/resources/velocity/_default.vm b/solr/contrib/velocity/src/resources/velocity/_default.vm deleted file mode 100644 index 71cac961482..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/_default.vm +++ /dev/null @@ -1,14 +0,0 @@ -

Request

-
    -
  • context.path = $request.context.path
  • -
  • params.qt = $!request.params.qt
  • -
- -
-  $esc.html($request)
-
- -

Response

-
-  $esc.html($response)
-
diff --git a/solr/contrib/velocity/src/resources/velocity/browse.vm b/solr/contrib/velocity/src/resources/velocity/browse.vm deleted file mode 100644 index b651295b054..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/browse.vm +++ /dev/null @@ -1,73 +0,0 @@ -#* - - Make search box bigger - - Add in pivot and other facets? - - Work on template default selection logic -*# - -## Show Error Message, if any -
- #parse("error.vm") -
- -
-
- $resource.find: - - - - #if($debug) ## TODO: this would automatically happen when arbitrary parameters are kept on URLs - - #end - #foreach($fq in $request.params.getParams('fq')) - - #end - -
- #foreach($fq in $request.params.getParams('fq')) - #set($previous_fq_count=$velocityCount - 1) - #if($fq != '') - > - $fq - #end - #end -
- -
- #if($debug) - toggle parsed query - - #end -
- -
-
- -
- #parse("facets.vm") -
- - - -## Render Results, actual matching docs -
- #parse("results_list.vm") -
- - diff --git a/solr/contrib/velocity/src/resources/velocity/error.vm b/solr/contrib/velocity/src/resources/velocity/error.vm deleted file mode 100644 index 1c4d1dcabcd..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/error.vm +++ /dev/null @@ -1,4 +0,0 @@ -#if( $response.response.error.code ) -

ERROR $response.response.error.code

- $response.response.error.msg -#end diff --git a/solr/contrib/velocity/src/resources/velocity/facets.vm b/solr/contrib/velocity/src/resources/velocity/facets.vm deleted file mode 100644 index e832704c62b..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/facets.vm +++ /dev/null @@ -1,23 +0,0 @@ -#** - * Display facets based on field values - * e.g.: fields specified by &facet.field= - *# - -#if($response.facetFields.size() > 0) -

Field Facets

- - #foreach($field in $response.facetFields) - ## Hide facets without value - #if($field.values.size() > 0) - $field.name - - #end ## end if > 0 - #end ## end for each facet field -#end ## end if response has facet fields diff --git a/solr/contrib/velocity/src/resources/velocity/footer.vm b/solr/contrib/velocity/src/resources/velocity/footer.vm deleted file mode 100644 index be9c687afa6..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/footer.vm +++ /dev/null @@ -1,19 +0,0 @@ -
-
- Options: - - #if($debug) - - disable debug - #else - enable debug - #end - - - XML results ## TODO: Add links for other formats, maybe dynamically? - -
- - - diff --git a/solr/contrib/velocity/src/resources/velocity/head.vm b/solr/contrib/velocity/src/resources/velocity/head.vm deleted file mode 100644 index dbcfb31c61f..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/head.vm +++ /dev/null @@ -1,185 +0,0 @@ -#** - * Provide elements for the section of the HTML document - *# - - Solr browse: #core_name - - - - - - - - - diff --git a/solr/contrib/velocity/src/resources/velocity/hit.vm b/solr/contrib/velocity/src/resources/velocity/hit.vm deleted file mode 100644 index ec4dfd84342..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/hit.vm +++ /dev/null @@ -1,27 +0,0 @@ -#set($docId = $doc.getFirstValue($request.schema.uniqueKeyField.name)) - - -
- - - #foreach( $fieldName in $doc.fieldNames ) - - - - - - #end -
- $esc.html($fieldName): - - #field($fieldName) -
- - #if($debug) - toggle explain - -
-      $response.getExplainMap().get($docId)
-    
- #end -
diff --git a/solr/contrib/velocity/src/resources/velocity/layout.vm b/solr/contrib/velocity/src/resources/velocity/layout.vm deleted file mode 100644 index aa68ffcbe2d..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/layout.vm +++ /dev/null @@ -1,19 +0,0 @@ - - - #parse("head.vm") - - - - - -
- $content -
- - - - diff --git a/solr/contrib/velocity/src/resources/velocity/resources.properties b/solr/contrib/velocity/src/resources/velocity/resources.properties deleted file mode 100644 index dff221c1aee..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/resources.properties +++ /dev/null @@ -1,6 +0,0 @@ -find=Find -page_of=Page {0} of {1} -previous=previous -next=next - - diff --git a/solr/contrib/velocity/src/resources/velocity/results_list.vm b/solr/contrib/velocity/src/resources/velocity/results_list.vm deleted file mode 100644 index 91ae6ea2657..00000000000 --- a/solr/contrib/velocity/src/resources/velocity/results_list.vm +++ /dev/null @@ -1,3 +0,0 @@ -#foreach($doc in $response.results) - #parse("hit.vm") -#end diff --git a/solr/contrib/velocity/src/test-files/velocity/file.vm b/solr/contrib/velocity/src/test-files/velocity/file.vm deleted file mode 100644 index 9a2c7732fab..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/file.vm +++ /dev/null @@ -1 +0,0 @@ -testing \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml deleted file mode 100644 index 5b12cdaa4a7..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - id - diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml deleted file mode 100644 index 35ce52b59a5..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - ${tests.luceneMatchVersion:LATEST} - - - - - - - - - explicit - 10 - - - - - - - velocity-init.properties - - - - - - org.apache.solr.velocity.MockTool - - - org.apache.solr.velocity.MockTool - - - org.apache.solr.velocity.MockTool - - - diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties deleted file mode 100644 index 853e5fcaab0..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -foreach.provide.scope.control=false diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm deleted file mode 100644 index 7bd767e84e7..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm +++ /dev/null @@ -1,3 +0,0 @@ -#macro(legacy_macro)legacy_macro_SUCCESS#end - -#macro(url_root)Loaded from: VM_global_library.vm#end \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm deleted file mode 100644 index 419f3f2da94..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm +++ /dev/null @@ -1 +0,0 @@ -éñçø∂îñg \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm deleted file mode 100644 index 39136e11bcb..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm +++ /dev/null @@ -1 +0,0 @@ -{{{$content}}} \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm deleted file mode 100644 index a85fd05723d..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm +++ /dev/null @@ -1 +0,0 @@ -$resource.color \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm deleted file mode 100644 index 9994022e4cd..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm +++ /dev/null @@ -1 +0,0 @@ -$number.format(2112) \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm deleted file mode 100644 index 46a508f7320..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm +++ /dev/null @@ -1,3 +0,0 @@ -#macro(test_macro)test_macro_SUCCESS#end - -#macro(url_root)Loaded from: macros.vm#end \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm deleted file mode 100644 index 7bafdcdd648..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm +++ /dev/null @@ -1 +0,0 @@ -$response.response.response.numFound \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm deleted file mode 100644 index c52c94bd2f7..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm +++ /dev/null @@ -1,4 +0,0 @@ -#set($x='') -#set($sys=$x.class.forName('java.lang.System')) -#set($ex=$sys.getProperty('os.name')) -$ex \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm deleted file mode 100644 index 8a4890f4d7f..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm +++ /dev/null @@ -1 +0,0 @@ -$resource.get("color","resources","en_UK") \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm deleted file mode 100644 index 80c7422ffb0..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm +++ /dev/null @@ -1,5 +0,0 @@ -#set($x='') -#set($sys=$x.class.forName('java.nio.file.Paths')) -#set($path=$sys.get('/dumbass/denied_location')) -#set($ex=$path.resolve($path).toRealPath()) -$ex \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm deleted file mode 100644 index 30f32fe9584..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm +++ /dev/null @@ -1 +0,0 @@ -#legacy_macro \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm deleted file mode 100644 index f06b28f81a9..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm +++ /dev/null @@ -1 +0,0 @@ -#url_root \ No newline at end of file diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm deleted file mode 100644 index 7a5baed0676..00000000000 --- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm +++ /dev/null @@ -1 +0,0 @@ -#test_macro \ No newline at end of file diff --git a/solr/contrib/velocity/src/test/custom_tool.vm b/solr/contrib/velocity/src/test/custom_tool.vm deleted file mode 100644 index 3efff7d43c5..00000000000 --- a/solr/contrib/velocity/src/test/custom_tool.vm +++ /dev/null @@ -1,19 +0,0 @@ -#* Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. *# - -mytool.star=$!mytool.star("LATERALUS") -mytool.locale=$!mytool.locale -log.star=$!log.star("log overridden") -response.star=$!response.star("response overridden??") diff --git a/solr/contrib/velocity/src/test/foreach.vm b/solr/contrib/velocity/src/test/foreach.vm deleted file mode 100644 index 5d7d1e91cbc..00000000000 --- a/solr/contrib/velocity/src/test/foreach.vm +++ /dev/null @@ -1,14 +0,0 @@ -#* Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. *##foreach($x in ["a","b"])$!foreach.index#end diff --git a/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java b/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java deleted file mode 100644 index c6287fd9d33..00000000000 --- a/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.velocity; - -import org.apache.solr.core.SolrCore; -import org.apache.velocity.tools.generic.LocaleConfig; - -public class MockTool extends LocaleConfig { - private final SolrCore core; - - public MockTool(SolrCore core) { - this.core = core; - } - - public String star(String str) { - return "** " + str + " **"; - } - - public SolrCore getCore() { return core; } -} diff --git a/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java b/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java deleted file mode 100644 index 1aa3dfa8168..00000000000 --- a/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.velocity; - -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.security.AccessControlException; -import java.util.Properties; - -import org.apache.solr.SolrTestCaseJ4; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.response.QueryResponseWriter; -import org.apache.solr.response.SolrQueryResponse; -import org.apache.solr.response.VelocityResponseWriter; -import org.apache.velocity.exception.MethodInvocationException; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; - -public class VelocityResponseWriterTest extends SolrTestCaseJ4 { - @BeforeClass - public static void beforeClass() throws Exception { - initCore("solrconfig.xml", "schema.xml", getFile("velocity/solr").getAbsolutePath()); - } - - @AfterClass - public static void afterClass() throws Exception { - } - - @Override - public void setUp() throws Exception { - // This test case toggles the configset used from trusted to untrusted - return to default of trusted for each test - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true); - super.setUp(); - } - - @Test - public void testVelocityResponseWriterRegistered() { - QueryResponseWriter writer = h.getCore().getQueryResponseWriter("velocity"); - assertTrue("VrW registered check", writer instanceof VelocityResponseWriter); - } - - @Test - public void testSecureUberspector() throws Exception { - VelocityResponseWriter vrw = new VelocityResponseWriter(); - NamedList nl = new NamedList<>(); - nl.add("template.base.dir", getFile("velocity").getAbsolutePath()); - vrw.init(nl); - SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"outside_the_box"); - SolrQueryResponse rsp = new SolrQueryResponse(); - StringWriter buf = new StringWriter(); - vrw.write(buf, req, rsp); - assertEquals("$ex",buf.toString()); // $ex rendered literally because it is null, and thus did not succeed to break outside the box - } - - @Test - @Ignore("SOLR-14025: Velocity's SecureUberspector addresses this") - public void testTemplateSandbox() throws Exception { - assumeTrue("This test only works with security manager", System.getSecurityManager() != null); - VelocityResponseWriter vrw = new VelocityResponseWriter(); - NamedList nl = new NamedList<>(); - nl.add("template.base.dir", getFile("velocity").getAbsolutePath()); - vrw.init(nl); - SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"outside_the_box"); - SolrQueryResponse rsp = new SolrQueryResponse(); - StringWriter buf = new StringWriter(); - try { - vrw.write(buf, req, rsp); - fail("template broke outside the box, retrieved: " + buf); - } catch (MethodInvocationException e) { - assertNotNull(e.getCause()); - assertEquals(AccessControlException.class, e.getCause().getClass()); - // expected failure, can't get outside the box - } - } - - @Test - @Ignore("SOLR-14025: Velocity's SecureUberspector addresses this") - public void testSandboxIntersection() throws Exception { - assumeTrue("This test only works with security manager", System.getSecurityManager() != null); - VelocityResponseWriter vrw = new VelocityResponseWriter(); - NamedList nl = new NamedList<>(); - nl.add("template.base.dir", getFile("velocity").getAbsolutePath()); - vrw.init(nl); - SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"sandbox_intersection"); - SolrQueryResponse rsp = new SolrQueryResponse(); - StringWriter buf = new StringWriter(); - try { - vrw.write(buf, req, rsp); - fail("template broke outside the box, retrieved: " + buf); - } catch (MethodInvocationException e) { - assertNotNull(e.getCause()); - assertEquals(AccessControlException.class, e.getCause().getClass()); - // expected failure, can't get outside the box - } - } - - @Test - public void testFileResourceLoader() throws Exception { - VelocityResponseWriter vrw = new VelocityResponseWriter(); - NamedList nl = new NamedList<>(); - nl.add("template.base.dir", getFile("velocity").getAbsolutePath()); - vrw.init(nl); - SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"file"); - SolrQueryResponse rsp = new SolrQueryResponse(); - StringWriter buf = new StringWriter(); - vrw.write(buf, req, rsp); - assertEquals("testing", buf.toString()); - } - - @Test - public void testTemplateTrust() throws Exception { - // Try on trusted configset.... - assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound"))); - - // Turn off trusted configset, which disables the Solr resource loader - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false); - assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted()); - - try { - assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound"))); - fail("template rendering should have failed, from an untrusted configset"); - } catch (IOException e) { - // expected exception - assertEquals(IOException.class, e.getClass()); - } - - // set the harness back to the default of trusted - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true); - } - - - @Test - public void testSolrResourceLoaderTemplate() throws Exception { - assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound"))); - } - - @Test - public void testEncoding() throws Exception { - assertEquals("éñçø∂îñg", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"encoding"))); - } - - @Test - public void testMacros() throws Exception { - // tests that a macro in a custom macros.vm is visible - assertEquals("test_macro_SUCCESS", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_visible"))); - - // tests that a builtin (_macros.vm) macro, #url_root in this case, can be overridden in a custom macros.vm - // the macro is also defined in VM_global_library.vm, which should also be overridden by macros.vm - assertEquals("Loaded from: macros.vm", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_overridden"))); - - // tests that macros defined in VM_global_library.vm are visible. This file was where macros in pre-5.0 versions were defined - assertEquals("legacy_macro_SUCCESS", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_legacy_support"))); - } - - @Test - public void testInitProps() throws Exception { - // The test init properties file turns off being able to use $foreach.index (the implicit loop counter) - // The foreach.vm template uses $!foreach.index, with ! suppressing the literal "$foreach.index" output - - assertEquals("01", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"foreach"))); - assertEquals("", h.query(req("q","*:*", "wt","velocityWithInitProps",VelocityResponseWriter.TEMPLATE,"foreach"))); - - // Turn off trusted configset, which disables the init properties - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false); - assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted()); - - assertEquals("01", h.query(req("q","*:*", "wt","velocityWithInitProps",VelocityResponseWriter.TEMPLATE,"foreach"))); - - // set the harness back to the default of trusted - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true); - } - - @Test - public void testCustomTools() throws Exception { - // Render this template once without a custom tool defined, and once with it defined. The tool has a `.star` method. - // The tool added as `mytool`, `log`, and `response`. `log` is designed to be overridable, but not `response` - // mytool.star=$!mytool.star("LATERALUS") - // mytool.locale=$!mytool.locale - // log.star=$!log.star("log overridden") - // response.star=$!response.star("response overridden??") - - // First without the tool defined, with `$!` turning null object/method references into empty string - Properties rendered_props = new Properties(); - String rsp = h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"custom_tool")); - rendered_props.load(new StringReader(rsp)); - // ignore mytool.locale here, as it will be the random test one - assertEquals("",rendered_props.getProperty("mytool.star")); - assertEquals("",rendered_props.getProperty("log.star")); - assertEquals("",rendered_props.getProperty("response.star")); - - // Now with custom tools defined: - rsp = h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"custom_tool",VelocityResponseWriter.LOCALE, "de_DE")); - rendered_props.clear(); - rendered_props.load(new StringReader(rsp)); - assertEquals("** LATERALUS **",rendered_props.getProperty("mytool.star")); - assertEquals("** log overridden **",rendered_props.getProperty("log.star")); - assertEquals("",rendered_props.getProperty("response.star")); - assertEquals("de_DE",rendered_props.getProperty("mytool.locale")); - - - // Turn off trusted configset, which disables the custom tool injection - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false); - assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted()); - - rsp = h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"custom_tool",VelocityResponseWriter.LOCALE, "de_DE")); - rendered_props.clear(); - rendered_props.load(new StringReader(rsp)); - assertEquals("",rendered_props.getProperty("mytool.star")); - assertEquals("",rendered_props.getProperty("log.star")); - assertEquals("",rendered_props.getProperty("response.star")); - assertEquals("",rendered_props.getProperty("mytool.locale")); - - // set the harness back to the default of trusted - h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true); - - - // Custom tools can also have a SolrCore-arg constructor because they are instantiated with SolrCore.createInstance - // TODO: do we really need to support this? no great loss, as a custom tool could take a SolrCore object as a parameter to - // TODO: any method, so one could do $mytool.my_method($request.core) - // I'm currently inclined to make this feature undocumented/unsupported, as we may want to instantiate classes - // in a different manner that only supports no-arg constructors, commented (passing) test case out - // assertEquals("collection1", h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"t", - // SolrParamResourceLoader.TEMPLATE_PARAM_PREFIX+"t", "$mytool.core.name"))) - // - NOTE: example uses removed inline param; convert to external template as needed - } - - @Test - public void testLocaleFeature() throws Exception { - assertEquals("Color", h.query(req("q", "*:*", "wt", "velocity", VelocityResponseWriter.TEMPLATE, "locale", - VelocityResponseWriter.LOCALE,"en_US"))); - assertEquals("Colour", h.query(req("q", "*:*", "wt", "velocity", VelocityResponseWriter.TEMPLATE, "locale", - VelocityResponseWriter.LOCALE,"en_UK"))); - - // Test that $resource.get(key,baseName,locale) works with specified locale - assertEquals("Colour", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"resource_get"))); - - // Test that $number tool uses the specified locale - assertEquals("2,112", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"locale_number", - VelocityResponseWriter.LOCALE, "en_US"))); - assertEquals("2.112", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"locale_number", - VelocityResponseWriter.LOCALE, "de_DE"))); - } - - @Test - public void testLayoutFeature() throws Exception { - assertEquals("{{{0}}}", h.query(req("q","*:*", "wt","velocity", - VelocityResponseWriter.TEMPLATE,"numFound", VelocityResponseWriter.LAYOUT,"layout"))); - - // even with v.layout specified, layout can be disabled explicitly - assertEquals("0", h.query(req("q","*:*", "wt","velocity", - VelocityResponseWriter.TEMPLATE,"numFound", - VelocityResponseWriter.LAYOUT,"layout", - VelocityResponseWriter.LAYOUT_ENABLED,"false"))); - } - - @Test - public void testJSONWrapper() throws Exception { - assertEquals("foo({\"result\":\"0\"})", h.query(req("q", "*:*", "wt", "velocity", - VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.JSON,"foo"))); - - // Now with layout, for good measure - assertEquals("foo({\"result\":\"{{{0}}}\"})", h.query(req("q", "*:*", "wt", "velocity", - VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.JSON,"foo", - VelocityResponseWriter.LAYOUT,"layout"))); - - assertQEx("Bad function name should throw exception", req("q", "*:*", "wt", "velocity", - VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.JSON,""), SolrException.ErrorCode.BAD_REQUEST - ); - } - - @Test - public void testContentType() { - VelocityResponseWriter vrw = new VelocityResponseWriter(); - NamedList nl = new NamedList<>(); - vrw.init(nl); - SolrQueryResponse rsp = new SolrQueryResponse(); - - // with v.json=wrf, content type should default to application/json - assertEquals("application/json;charset=UTF-8", - vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.JSON, "wrf"), rsp)); - - // with no v.json specified, the default text/html should be returned - assertEquals("text/html;charset=UTF-8", - vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound"), rsp)); - - // if v.contentType is specified, that should be used, even if v.json is specified - assertEquals("text/plain", - vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.CONTENT_TYPE,"text/plain"), rsp)); - assertEquals("text/plain", - vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound", - VelocityResponseWriter.JSON,"wrf", - VelocityResponseWriter.CONTENT_TYPE,"text/plain"), rsp)); - } -} diff --git a/solr/contrib/velocity/src/test/velocity/resources.properties b/solr/contrib/velocity/src/test/velocity/resources.properties deleted file mode 100644 index ec6320f487a..00000000000 --- a/solr/contrib/velocity/src/test/velocity/resources.properties +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -color=Color \ No newline at end of file diff --git a/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties b/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties deleted file mode 100644 index 21a476f860d..00000000000 --- a/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -color=Colour \ No newline at end of file diff --git a/solr/example/files/README.md b/solr/example/files/README.md deleted file mode 100644 index 04771be0b41..00000000000 --- a/solr/example/files/README.md +++ /dev/null @@ -1,167 +0,0 @@ - - -# Solr-Powered File Search - -This README guides you through creating a Solr-powered search engine for your own set of files including Word documents, -PDFs, HTML, and many other supported types. - -For further explanations, see the frequently asked questions at the end of the guide. - -## GETTING STARTED - -* To start Solr, enter the following command (make sure you’ve cd’ed into the directory in which Solr was installed): - -``` - bin/solr start -``` - -* If you’ve started correctly, you should see the following output: - -``` - Waiting to see Solr listening on port 8983 [/] - Started Solr server on port 8983 (pid=). Happy searching! -``` - -## CREATING THE CORE/COLLECTION - -* Before you can index your documents, you’ll need to create a core/collection. Do this by entering: - -``` - bin/solr create -c files -d example/files/conf -``` - -* Now you’ve created a core called “files” using a configuration tuned for indexing and querying rich text files. - -* You should see the following response: - -``` - Creating new core 'files' using command: - http://localhost:8983/solr/admin/cores?action=CREATE&name=files&instanceDir=files - - { - "responseHeader":{ - "status":0, - "QTime":239}, - "core":"files"} -``` - -## INDEXING DOCUMENTS - -* Return to your command shell. To post all of your documents to the documents core, enter the following: - -``` - bin/post -c files ~/Documents -``` - -* Depending on how many documents you have, this could take a while. Sit back and watch the magic happen. When all of your documents have been indexed you’ll see something like: - -``` - files indexed. - COMMITting Solr index changes to http://localhost:8983/solr/files/update... - Time spent: -``` - -* To see a list of accepted file types, do: - -``` - bin/post -h -``` - -## BROWSING DOCUMENTS - -* Your document information can be viewed in multiple formats: XML, JSON, CSV, as well as a nice HTML interface. - -* To view your document information in the HTML interface view, adjust the URL in your address bar to [http://localhost:8983/solr/files/browse](http://localhost:8983/solr/files/browse) - -* To view your document information in XML or other formats, add &wt (for writer type) to the end of that URL. i.e. To view your results in xml format direct your browser to: - [http://localhost:8983/solr/files/browse?&wt=xml](http://localhost:8983/solr/files/browse?&wt=xml) - -## ADMIN UI - -* Another way to verify that your core has been created is to view it in the Admin User Interface. - - - The Admin_UI serves as a visual tool for indexing and querying your index in Solr. - -* To access the Admin UI, go to your browser and visit : - [http://localhost:8983/solr/](http://localhost:8983/solr/) - - - The Admin UI is only accessible when Solr is running - -* On the left-hand side of the home page, click on “Core Selector”. The core you created, called “files” should be listed there; click on it. If it’s not listed, your core was not created and you’ll need to re-enter the create command. -* Alternatively, you could just go to the core page directly by visiting : [http://localhost:8983/solr/#/files](http://localhost:8983/solr/#/files) - -* Now you’ve opened the core page. On this page there are a multitude of different tools you can use to analyze and search your core. You will make use of these features after indexing your documents. -* Take note of the "Num Docs" field in your core Statistics. If after indexing your documents, it shows Num Docs to be 0, that means there was a problem indexing. - -## QUERYING INDEX - -* In the Admin UI, enter a term in the query box to see which documents contain the word. - -* You can filter the results by switching between the different content type tabs. To view an international version of this interface, hover over the globe icon in the top right hand section of the page. - -* Notice the tag cloud on the right side, which facets by top phrases extracted during indexing. - Click on the phrases to see which documents contain them. - -* Another way to query the index is by manipulating the URL in your address bar once in the browse view. - -* i.e. : [http://localhost:8983/solr/files/browse?q=Lucene](http://localhost:8983/solr/files/browse?q=Lucene) - -## FAQs - -* Why use -d when creating a core? - * -d specifies a specific configuration to use. This example as a configuration tuned for indexing and query rich - text files. - -* How do I delete a core? - * To delete a core (i.e. files), you can enter the following in your command shell: - - ``` - bin/solr delete -c files - ``` - - * You should see the following output: - - Deleting core 'files' using command: - - ``` - http://localhost:8983/solr/admin/cores?action=UNLOAD&core=files&deleteIndex=true&deleteDataDir=true&deleteInstanceDir=true - - {"responseHeader":{ - "status":0, - "QTime":19}} - ``` - - * This calls the Solr core admin handler, "UNLOAD", and the parameters "deleteDataDir" and "deleteInstanceDir" to ensure that all data associated with core is also removed - -* How can I change the /browse UI? - - The primary templates are under example/files/conf/velocity. **In order to edit those files in place (without having to - re-create or patch a core/collection with an updated configuration)**, Solr can be started with a special system property - set to the _absolute_ path to the conf/velocity directory, like this: - - ``` - bin/solr start -Dvelocity.template.base.dir=/example/files/conf/velocity/ - ``` - -If you want to adjust the browse templates for an existing collection, edit the core’s configuration -under server/solr/files/conf/velocity. - -## Provenance of free images used in this example: - - - Globe icon: visualpharm.com - - Flag icons: freeflagicons.com \ No newline at end of file diff --git a/solr/example/files/browse-resources/velocity/resources.properties b/solr/example/files/browse-resources/velocity/resources.properties deleted file mode 100644 index 4cc15b2eee2..00000000000 --- a/solr/example/files/browse-resources/velocity/resources.properties +++ /dev/null @@ -1,82 +0,0 @@ -# Title: " Powered File Search" -powered_file_search=Powered File Search - -# Search box and results -find=Find -submit=Submit -page_of=Page {0} of {1} -previous=previous -next=next -results_found_in=results found in {0}ms -results_found=results found - -# Facets -facet.top_phrases=Top Phrases -facet.language=Language - -# Type labels -type.all=All Types -type.doc.label=Document -type.html.label=HTML -type.pdf.label=PDF -type.presentation.label=Presentation -type.spreadsheet.label=Spreadsheet -type.text.label=text -type.image.label=image -type.unknown=unknown - -# Language code mappings -# - from https://code.google.com/p/language-detection/wiki/LanguageList -language.af=Afrikaans -language.ar=Arabic -language.bg=Bulgarian -language.bn=Bengali -language.cs=Czech -language.da=Danish -language.de=German -language.el=Greek -language.en=English -language.es=Spanish -language.et=Estonian -language.fa=Persian -language.fi=Finnish -language.fr=French -language.gu=Gujarati -language.he=Hebrew -language.hi=Hindi -language.hr=Croatian -language.hu=Hungarian -language.id=Indonesian -language.it=Italian -language.ja=Japanese -language.kn=Kannada -language.ko=Korean -language.lt=Lithuanian -language.lv=Latvian -language.mk=Macedonian -language.ml=Malayalam -language.mr=Marathi -language.ne=Nepali -language.nl=Dutch -language.no=Norwegian -language.pa=Punjabi -language.pl=Polish -language.pt=Portuguese -language.ro=Romanian -language.ru=Russian -language.sk=Slovak -language.sl=Slovene -language.so=Somali -language.sq=Albanian -language.sv=Swedish -language.sw=Swahili -language.ta=Tamil -language.te=Telugu -language.th=Thai -language.tl=Tagalog -language.tr=Turkish -language.uk=Ukrainian -language.ur=Urdu -language.vi=Vietnamese -language.zh-cn=Simplified Chinese -language.zh-tw=Traditional Chinese diff --git a/solr/example/files/browse-resources/velocity/resources_de_DE.properties b/solr/example/files/browse-resources/velocity/resources_de_DE.properties deleted file mode 100644 index 1837bf5ceb8..00000000000 --- a/solr/example/files/browse-resources/velocity/resources_de_DE.properties +++ /dev/null @@ -1,18 +0,0 @@ -find=Durchsuchen -page_of=Page {0} von {1} -previous=vorherige Seite -next=n\u00e4chste Seite -results_found_in=Ergebnisse in {0}ms gefunden -results_found=Ergebnisse gefunden -powered_file_search= betriebene Dateisuche -type.text.label=Text -type.pdf.label=PDF -type.html.label=HTML -type.presentation.label=Pr\u00e4sentation -type.image.label=Bild -type.doc.label=Dokument -type.spreadsheet.label=Kalkulationstabelle -type.unknown=unbekannt -type.all=alle Arten -facet.top_phrases=Schl\u00fcssels\u00e4tze -submit=einreichen diff --git a/solr/example/files/browse-resources/velocity/resources_fr_FR.properties b/solr/example/files/browse-resources/velocity/resources_fr_FR.properties deleted file mode 100644 index 5b62757b79e..00000000000 --- a/solr/example/files/browse-resources/velocity/resources_fr_FR.properties +++ /dev/null @@ -1,20 +0,0 @@ -find=Recherche -page_of=Page {0} de {1} -previous=pr\u00e9c\u00e9dent -next=suivant -results_found_in=resultas ficher en {0}ms -results_found=resultas ficher -powered_file_search=Recherches de Fichiers -type.text.label=Texte -type.pdf.label=PDF -type.html.label=HTML -type.image.label=Image -type.presentation.label=Pr\u00e9sentation -type.doc.label=Documents -type.spreadsheet.label=Tableur -type.unknown=Inconnu -type.all=Tous les Types -facet.top_phrases=Phrases Cl\u00e9s -submit=Recherche - - diff --git a/solr/example/files/conf/currency.xml b/solr/example/files/conf/currency.xml deleted file mode 100644 index 3a9c58afee8..00000000000 --- a/solr/example/files/conf/currency.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/solr/example/files/conf/elevate.xml b/solr/example/files/conf/elevate.xml deleted file mode 100644 index 2c09ebed669..00000000000 --- a/solr/example/files/conf/elevate.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - diff --git a/solr/example/files/conf/email_url_types.txt b/solr/example/files/conf/email_url_types.txt deleted file mode 100644 index 622b193e0a3..00000000000 --- a/solr/example/files/conf/email_url_types.txt +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/solr/example/files/conf/lang/contractions_ca.txt b/solr/example/files/conf/lang/contractions_ca.txt deleted file mode 100644 index 307a85f913d..00000000000 --- a/solr/example/files/conf/lang/contractions_ca.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Set of Catalan contractions for ElisionFilter -# TODO: load this as a resource from the analyzer and sync it in build.xml -d -l -m -n -s -t diff --git a/solr/example/files/conf/lang/contractions_fr.txt b/solr/example/files/conf/lang/contractions_fr.txt deleted file mode 100644 index f1bba51b23e..00000000000 --- a/solr/example/files/conf/lang/contractions_fr.txt +++ /dev/null @@ -1,15 +0,0 @@ -# Set of French contractions for ElisionFilter -# TODO: load this as a resource from the analyzer and sync it in build.xml -l -m -t -qu -n -s -j -d -c -jusqu -quoiqu -lorsqu -puisqu diff --git a/solr/example/files/conf/lang/contractions_ga.txt b/solr/example/files/conf/lang/contractions_ga.txt deleted file mode 100644 index 9ebe7fa349a..00000000000 --- a/solr/example/files/conf/lang/contractions_ga.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Set of Irish contractions for ElisionFilter -# TODO: load this as a resource from the analyzer and sync it in build.xml -d -m -b diff --git a/solr/example/files/conf/lang/contractions_it.txt b/solr/example/files/conf/lang/contractions_it.txt deleted file mode 100644 index cac04095372..00000000000 --- a/solr/example/files/conf/lang/contractions_it.txt +++ /dev/null @@ -1,23 +0,0 @@ -# Set of Italian contractions for ElisionFilter -# TODO: load this as a resource from the analyzer and sync it in build.xml -c -l -all -dall -dell -nell -sull -coll -pell -gl -agl -dagl -degl -negl -sugl -un -m -t -s -v -d diff --git a/solr/example/files/conf/lang/hyphenations_ga.txt b/solr/example/files/conf/lang/hyphenations_ga.txt deleted file mode 100644 index 4d2642cc5a3..00000000000 --- a/solr/example/files/conf/lang/hyphenations_ga.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Set of Irish hyphenations for StopFilter -# TODO: load this as a resource from the analyzer and sync it in build.xml -h -n -t diff --git a/solr/example/files/conf/lang/stemdict_nl.txt b/solr/example/files/conf/lang/stemdict_nl.txt deleted file mode 100644 index 441072971d3..00000000000 --- a/solr/example/files/conf/lang/stemdict_nl.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Set of overrides for the dutch stemmer -# TODO: load this as a resource from the analyzer and sync it in build.xml -fiets fiets -bromfiets bromfiets -ei eier -kind kinder diff --git a/solr/example/files/conf/lang/stoptags_ja.txt b/solr/example/files/conf/lang/stoptags_ja.txt deleted file mode 100644 index 71b750845e3..00000000000 --- a/solr/example/files/conf/lang/stoptags_ja.txt +++ /dev/null @@ -1,420 +0,0 @@ -# -# This file defines a Japanese stoptag set for JapanesePartOfSpeechStopFilter. -# -# Any token with a part-of-speech tag that exactly matches those defined in this -# file are removed from the token stream. -# -# Set your own stoptags by uncommenting the lines below. Note that comments are -# not allowed on the same line as a stoptag. See LUCENE-3745 for frequency lists, -# etc. that can be useful for building you own stoptag set. -# -# The entire possible tagset is provided below for convenience. -# -##### -# noun: unclassified nouns -#名詞 -# -# noun-common: Common nouns or nouns where the sub-classification is undefined -#名詞-一般 -# -# noun-proper: Proper nouns where the sub-classification is undefined -#名詞-固有名詞 -# -# noun-proper-misc: miscellaneous proper nouns -#名詞-固有名詞-一般 -# -# noun-proper-person: Personal names where the sub-classification is undefined -#名詞-固有名詞-人名 -# -# noun-proper-person-misc: names that cannot be divided into surname and -# given name; foreign names; names where the surname or given name is unknown. -# e.g. お市の方 -#名詞-固有名詞-人名-一般 -# -# noun-proper-person-surname: Mainly Japanese surnames. -# e.g. 山田 -#名詞-固有名詞-人名-姓 -# -# noun-proper-person-given_name: Mainly Japanese given names. -# e.g. 太郎 -#名詞-固有名詞-人名-名 -# -# noun-proper-organization: Names representing organizations. -# e.g. 通産省, NHK -#名詞-固有名詞-組織 -# -# noun-proper-place: Place names where the sub-classification is undefined -#名詞-固有名詞-地域 -# -# noun-proper-place-misc: Place names excluding countries. -# e.g. アジア, バルセロナ, 京都 -#名詞-固有名詞-地域-一般 -# -# noun-proper-place-country: Country names. -# e.g. 日本, オーストラリア -#名詞-固有名詞-地域-国 -# -# noun-pronoun: Pronouns where the sub-classification is undefined -#名詞-代名詞 -# -# noun-pronoun-misc: miscellaneous pronouns: -# e.g. それ, ここ, あいつ, あなた, あちこち, いくつ, どこか, なに, みなさん, みんな, わたくし, われわれ -#名詞-代名詞-一般 -# -# noun-pronoun-contraction: Spoken language contraction made by combining a -# pronoun and the particle 'wa'. -# e.g. ありゃ, こりゃ, こりゃあ, そりゃ, そりゃあ -#名詞-代名詞-縮約 -# -# noun-adverbial: Temporal nouns such as names of days or months that behave -# like adverbs. Nouns that represent amount or ratios and can be used adverbially, -# e.g. 金曜, 一月, 午後, 少量 -#名詞-副詞可能 -# -# noun-verbal: Nouns that take arguments with case and can appear followed by -# 'suru' and related verbs (する, できる, なさる, くださる) -# e.g. インプット, 愛着, 悪化, 悪戦苦闘, 一安心, 下取り -#名詞-サ変接続 -# -# noun-adjective-base: The base form of adjectives, words that appear before な ("na") -# e.g. 健康, 安易, 駄目, だめ -#名詞-形容動詞語幹 -# -# noun-numeric: Arabic numbers, Chinese numerals, and counters like 何 (回), 数. -# e.g. 0, 1, 2, 何, 数, 幾 -#名詞-数 -# -# noun-affix: noun affixes where the sub-classification is undefined -#名詞-非自立 -# -# noun-affix-misc: Of adnominalizers, the case-marker の ("no"), and words that -# attach to the base form of inflectional words, words that cannot be classified -# into any of the other categories below. This category includes indefinite nouns. -# e.g. あかつき, 暁, かい, 甲斐, 気, きらい, 嫌い, くせ, 癖, こと, 事, ごと, 毎, しだい, 次第, -# 順, せい, 所為, ついで, 序で, つもり, 積もり, 点, どころ, の, はず, 筈, はずみ, 弾み, -# 拍子, ふう, ふり, 振り, ほう, 方, 旨, もの, 物, 者, ゆえ, 故, ゆえん, 所以, わけ, 訳, -# わり, 割り, 割, ん-口語/, もん-口語/ -#名詞-非自立-一般 -# -# noun-affix-adverbial: noun affixes that that can behave as adverbs. -# e.g. あいだ, 間, あげく, 挙げ句, あと, 後, 余り, 以外, 以降, 以後, 以上, 以前, 一方, うえ, -# 上, うち, 内, おり, 折り, かぎり, 限り, きり, っきり, 結果, ころ, 頃, さい, 際, 最中, さなか, -# 最中, じたい, 自体, たび, 度, ため, 為, つど, 都度, とおり, 通り, とき, 時, ところ, 所, -# とたん, 途端, なか, 中, のち, 後, ばあい, 場合, 日, ぶん, 分, ほか, 他, まえ, 前, まま, -# 儘, 侭, みぎり, 矢先 -#名詞-非自立-副詞可能 -# -# noun-affix-aux: noun affixes treated as 助動詞 ("auxiliary verb") in school grammars -# with the stem よう(だ) ("you(da)"). -# e.g. よう, やう, 様 (よう) -#名詞-非自立-助動詞語幹 -# -# noun-affix-adjective-base: noun affixes that can connect to the indeclinable -# connection form な (aux "da"). -# e.g. みたい, ふう -#名詞-非自立-形容動詞語幹 -# -# noun-special: special nouns where the sub-classification is undefined. -#名詞-特殊 -# -# noun-special-aux: The そうだ ("souda") stem form that is used for reporting news, is -# treated as 助動詞 ("auxiliary verb") in school grammars, and attach to the base -# form of inflectional words. -# e.g. そう -#名詞-特殊-助動詞語幹 -# -# noun-suffix: noun suffixes where the sub-classification is undefined. -#名詞-接尾 -# -# noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect -# to ガル or タイ and can combine into compound nouns, words that cannot be classified into -# any of the other categories below. In general, this category is more inclusive than -# 接尾語 ("suffix") and is usually the last element in a compound noun. -# e.g. おき, かた, 方, 甲斐 (がい), がかり, ぎみ, 気味, ぐるみ, (~した) さ, 次第, 済 (ず) み, -# よう, (でき)っこ, 感, 観, 性, 学, 類, 面, 用 -#名詞-接尾-一般 -# -# noun-suffix-person: Suffixes that form nouns and attach to person names more often -# than other nouns. -# e.g. 君, 様, 著 -#名詞-接尾-人名 -# -# noun-suffix-place: Suffixes that form nouns and attach to place names more often -# than other nouns. -# e.g. 町, 市, 県 -#名詞-接尾-地域 -# -# noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that -# can appear before スル ("suru"). -# e.g. 化, 視, 分け, 入り, 落ち, 買い -#名詞-接尾-サ変接続 -# -# noun-suffix-aux: The stem form of そうだ (様態) that is used to indicate conditions, -# is treated as 助動詞 ("auxiliary verb") in school grammars, and attach to the -# conjunctive form of inflectional words. -# e.g. そう -#名詞-接尾-助動詞語幹 -# -# noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive -# form of inflectional words and appear before the copula だ ("da"). -# e.g. 的, げ, がち -#名詞-接尾-形容動詞語幹 -# -# noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs. -# e.g. 後 (ご), 以後, 以降, 以前, 前後, 中, 末, 上, 時 (じ) -#名詞-接尾-副詞可能 -# -# noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category -# is more inclusive than 助数詞 ("classifier") and includes common nouns that attach -# to numbers. -# e.g. 個, つ, 本, 冊, パーセント, cm, kg, カ月, か国, 区画, 時間, 時半 -#名詞-接尾-助数詞 -# -# noun-suffix-special: Special suffixes that mainly attach to inflecting words. -# e.g. (楽し) さ, (考え) 方 -#名詞-接尾-特殊 -# -# noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words -# together. -# e.g. (日本) 対 (アメリカ), 対 (アメリカ), (3) 対 (5), (女優) 兼 (主婦) -#名詞-接続詞的 -# -# noun-verbal_aux: Nouns that attach to the conjunctive particle て ("te") and are -# semantically verb-like. -# e.g. ごらん, ご覧, 御覧, 頂戴 -#名詞-動詞非自立的 -# -# noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, -# dialects, English, etc. Currently, the only entry for 名詞 引用文字列 ("noun quotation") -# is いわく ("iwaku"). -#名詞-引用文字列 -# -# noun-nai_adjective: Words that appear before the auxiliary verb ない ("nai") and -# behave like an adjective. -# e.g. 申し訳, 仕方, とんでも, 違い -#名詞-ナイ形容詞語幹 -# -##### -# prefix: unclassified prefixes -#接頭詞 -# -# prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) -# excluding numerical expressions. -# e.g. お (水), 某 (氏), 同 (社), 故 (~氏), 高 (品質), お (見事), ご (立派) -#接頭詞-名詞接続 -# -# prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb -# in conjunctive form followed by なる/なさる/くださる. -# e.g. お (読みなさい), お (座り) -#接頭詞-動詞接続 -# -# prefix-adjectival: Prefixes that attach to adjectives. -# e.g. お (寒いですねえ), バカ (でかい) -#接頭詞-形容詞接続 -# -# prefix-numerical: Prefixes that attach to numerical expressions. -# e.g. 約, およそ, 毎時 -#接頭詞-数接続 -# -##### -# verb: unclassified verbs -#動詞 -# -# verb-main: -#動詞-自立 -# -# verb-auxiliary: -#動詞-非自立 -# -# verb-suffix: -#動詞-接尾 -# -##### -# adjective: unclassified adjectives -#形容詞 -# -# adjective-main: -#形容詞-自立 -# -# adjective-auxiliary: -#形容詞-非自立 -# -# adjective-suffix: -#形容詞-接尾 -# -##### -# adverb: unclassified adverbs -#副詞 -# -# adverb-misc: Words that can be segmented into one unit and where adnominal -# modification is not possible. -# e.g. あいかわらず, 多分 -#副詞-一般 -# -# adverb-particle_conjunction: Adverbs that can be followed by の, は, に, -# な, する, だ, etc. -# e.g. こんなに, そんなに, あんなに, なにか, なんでも -#副詞-助詞類接続 -# -##### -# adnominal: Words that only have noun-modifying forms. -# e.g. この, その, あの, どの, いわゆる, なんらかの, 何らかの, いろんな, こういう, そういう, ああいう, -# どういう, こんな, そんな, あんな, どんな, 大きな, 小さな, おかしな, ほんの, たいした, -# 「(, も) さる (ことながら)」, 微々たる, 堂々たる, 単なる, いかなる, 我が」「同じ, 亡き -#連体詞 -# -##### -# conjunction: Conjunctions that can occur independently. -# e.g. が, けれども, そして, じゃあ, それどころか -接続詞 -# -##### -# particle: unclassified particles. -助詞 -# -# particle-case: case particles where the subclassification is undefined. -助詞-格助詞 -# -# particle-case-misc: Case particles. -# e.g. から, が, で, と, に, へ, より, を, の, にて -助詞-格助詞-一般 -# -# particle-case-quote: the "to" that appears after nouns, a person’s speech, -# quotation marks, expressions of decisions from a meeting, reasons, judgements, -# conjectures, etc. -# e.g. ( だ) と (述べた.), ( である) と (して執行猶予...) -助詞-格助詞-引用 -# -# particle-case-compound: Compounds of particles and verbs that mainly behave -# like case particles. -# e.g. という, といった, とかいう, として, とともに, と共に, でもって, にあたって, に当たって, に当って, -# にあたり, に当たり, に当り, に当たる, にあたる, において, に於いて,に於て, における, に於ける, -# にかけ, にかけて, にかんし, に関し, にかんして, に関して, にかんする, に関する, に際し, -# に際して, にしたがい, に従い, に従う, にしたがって, に従って, にたいし, に対し, にたいして, -# に対して, にたいする, に対する, について, につき, につけ, につけて, につれ, につれて, にとって, -# にとり, にまつわる, によって, に依って, に因って, により, に依り, に因り, による, に依る, に因る, -# にわたって, にわたる, をもって, を以って, を通じ, を通じて, を通して, をめぐって, をめぐり, をめぐる, -# って-口語/, ちゅう-関西弁「という」/, (何) ていう (人)-口語/, っていう-口語/, といふ, とかいふ -助詞-格助詞-連語 -# -# particle-conjunctive: -# e.g. から, からには, が, けれど, けれども, けど, し, つつ, て, で, と, ところが, どころか, とも, ども, -# ながら, なり, ので, のに, ば, ものの, や ( した), やいなや, (ころん) じゃ(いけない)-口語/, -# (行っ) ちゃ(いけない)-口語/, (言っ) たって (しかたがない)-口語/, (それがなく)ったって (平気)-口語/ -助詞-接続助詞 -# -# particle-dependency: -# e.g. こそ, さえ, しか, すら, は, も, ぞ -助詞-係助詞 -# -# particle-adverbial: -# e.g. がてら, かも, くらい, 位, ぐらい, しも, (学校) じゃ(これが流行っている)-口語/, -# (それ)じゃあ (よくない)-口語/, ずつ, (私) なぞ, など, (私) なり (に), (先生) なんか (大嫌い)-口語/, -# (私) なんぞ, (先生) なんて (大嫌い)-口語/, のみ, だけ, (私) だって-口語/, だに, -# (彼)ったら-口語/, (お茶) でも (いかが), 等 (とう), (今後) とも, ばかり, ばっか-口語/, ばっかり-口語/, -# ほど, 程, まで, 迄, (誰) も (が)([助詞-格助詞] および [助詞-係助詞] の前に位置する「も」) -助詞-副助詞 -# -# particle-interjective: particles with interjective grammatical roles. -# e.g. (松島) や -助詞-間投助詞 -# -# particle-coordinate: -# e.g. と, たり, だの, だり, とか, なり, や, やら -助詞-並立助詞 -# -# particle-final: -# e.g. かい, かしら, さ, ぜ, (だ)っけ-口語/, (とまってる) で-方言/, な, ナ, なあ-口語/, ぞ, ね, ネ, -# ねぇ-口語/, ねえ-口語/, ねん-方言/, の, のう-口語/, や, よ, ヨ, よぉ-口語/, わ, わい-口語/ -助詞-終助詞 -# -# particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is -# adverbial, conjunctive, or sentence final. For example: -# (a) 「A か B か」. Ex:「(国内で運用する) か,(海外で運用する) か (.)」 -# (b) Inside an adverb phrase. Ex:「(幸いという) か (, 死者はいなかった.)」 -# 「(祈りが届いたせい) か (, 試験に合格した.)」 -# (c) 「かのように」. Ex:「(何もなかった) か (のように振る舞った.)」 -# e.g. か -助詞-副助詞/並立助詞/終助詞 -# -# particle-adnominalizer: The "no" that attaches to nouns and modifies -# non-inflectional words. -助詞-連体化 -# -# particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs -# that are giongo, giseigo, or gitaigo. -# e.g. に, と -助詞-副詞化 -# -# particle-special: A particle that does not fit into one of the above classifications. -# This includes particles that are used in Tanka, Haiku, and other poetry. -# e.g. かな, けむ, ( しただろう) に, (あんた) にゃ(わからん), (俺) ん (家) -助詞-特殊 -# -##### -# auxiliary-verb: -助動詞 -# -##### -# interjection: Greetings and other exclamations. -# e.g. おはよう, おはようございます, こんにちは, こんばんは, ありがとう, どうもありがとう, ありがとうございます, -# いただきます, ごちそうさま, さよなら, さようなら, はい, いいえ, ごめん, ごめんなさい -#感動詞 -# -##### -# symbol: unclassified Symbols. -記号 -# -# symbol-misc: A general symbol not in one of the categories below. -# e.g. [○◎@$〒→+] -記号-一般 -# -# symbol-comma: Commas -# e.g. [,、] -記号-読点 -# -# symbol-period: Periods and full stops. -# e.g. [..。] -記号-句点 -# -# symbol-space: Full-width whitespace. -記号-空白 -# -# symbol-open_bracket: -# e.g. [({‘“『【] -記号-括弧開 -# -# symbol-close_bracket: -# e.g. [)}’”』」】] -記号-括弧閉 -# -# symbol-alphabetic: -#記号-アルファベット -# -##### -# other: unclassified other -#その他 -# -# other-interjection: Words that are hard to classify as noun-suffixes or -# sentence-final particles. -# e.g. (だ)ァ -その他-間投 -# -##### -# filler: Aizuchi that occurs during a conversation or sounds inserted as filler. -# e.g. あの, うんと, えと -フィラー -# -##### -# non-verbal: non-verbal sound. -非言語音 -# -##### -# fragment: -#語断片 -# -##### -# unknown: unknown part of speech. -#未知語 -# -##### End of file diff --git a/solr/example/files/conf/lang/stopwords_ar.txt b/solr/example/files/conf/lang/stopwords_ar.txt deleted file mode 100644 index 046829db6a2..00000000000 --- a/solr/example/files/conf/lang/stopwords_ar.txt +++ /dev/null @@ -1,125 +0,0 @@ -# This file was created by Jacques Savoy and is distributed under the BSD license. -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# Also see http://www.opensource.org/licenses/bsd-license.html -# Cleaned on October 11, 2009 (not normalized, so use before normalization) -# This means that when modifying this list, you might need to add some -# redundant entries, for example containing forms with both أ and ا -من -ومن -منها -منه -في -وفي -فيها -فيه -و -ف -ثم -او -أو -ب -بها -به -ا -أ -اى -اي -أي -أى -لا -ولا -الا -ألا -إلا -لكن -ما -وما -كما -فما -عن -مع -اذا -إذا -ان -أن -إن -انها -أنها -إنها -انه -أنه -إنه -بان -بأن -فان -فأن -وان -وأن -وإن -التى -التي -الذى -الذي -الذين -الى -الي -إلى -إلي -على -عليها -عليه -اما -أما -إما -ايضا -أيضا -كل -وكل -لم -ولم -لن -ولن -هى -هي -هو -وهى -وهي -وهو -فهى -فهي -فهو -انت -أنت -لك -لها -له -هذه -هذا -تلك -ذلك -هناك -كانت -كان -يكون -تكون -وكانت -وكان -غير -بعض -قد -نحو -بين -بينما -منذ -ضمن -حيث -الان -الآن -خلال -بعد -قبل -حتى -عند -عندما -لدى -جميع diff --git a/solr/example/files/conf/lang/stopwords_bg.txt b/solr/example/files/conf/lang/stopwords_bg.txt deleted file mode 100644 index 1ae4ba2ae38..00000000000 --- a/solr/example/files/conf/lang/stopwords_bg.txt +++ /dev/null @@ -1,193 +0,0 @@ -# This file was created by Jacques Savoy and is distributed under the BSD license. -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# Also see http://www.opensource.org/licenses/bsd-license.html -а -аз -ако -ала -бе -без -беше -би -бил -била -били -било -близо -бъдат -бъде -бяха -в -вас -ваш -ваша -вероятно -вече -взема -ви -вие -винаги -все -всеки -всички -всичко -всяка -във -въпреки -върху -г -ги -главно -го -д -да -дали -до -докато -докога -дори -досега -доста -е -едва -един -ето -за -зад -заедно -заради -засега -затова -защо -защото -и -из -или -им -има -имат -иска -й -каза -как -каква -какво -както -какъв -като -кога -когато -което -които -кой -който -колко -която -къде -където -към -ли -м -ме -между -мен -ми -мнозина -мога -могат -може -моля -момента -му -н -на -над -назад -най -направи -напред -например -нас -не -него -нея -ни -ние -никой -нито -но -някои -някой -няма -обаче -около -освен -особено -от -отгоре -отново -още -пак -по -повече -повечето -под -поне -поради -после -почти -прави -пред -преди -през -при -пък -първо -с -са -само -се -сега -си -скоро -след -сме -според -сред -срещу -сте -съм -със -също -т -тази -така -такива -такъв -там -твой -те -тези -ти -тн -то -това -тогава -този -той -толкова -точно -трябва -тук -тъй -тя -тях -у -харесва -ч -че -често -чрез -ще -щом -я diff --git a/solr/example/files/conf/lang/stopwords_ca.txt b/solr/example/files/conf/lang/stopwords_ca.txt deleted file mode 100644 index 3da65deafe1..00000000000 --- a/solr/example/files/conf/lang/stopwords_ca.txt +++ /dev/null @@ -1,220 +0,0 @@ -# Catalan stopwords from http://github.com/vcl/cue.language (Apache 2 Licensed) -a -abans -ací -ah -així -això -al -als -aleshores -algun -alguna -algunes -alguns -alhora -allà -allí -allò -altra -altre -altres -amb -ambdós -ambdues -apa -aquell -aquella -aquelles -aquells -aquest -aquesta -aquestes -aquests -aquí -baix -cada -cadascú -cadascuna -cadascunes -cadascuns -com -contra -d'un -d'una -d'unes -d'uns -dalt -de -del -dels -des -després -dins -dintre -donat -doncs -durant -e -eh -el -els -em -en -encara -ens -entre -érem -eren -éreu -es -és -esta -està -estàvem -estaven -estàveu -esteu -et -etc -ets -fins -fora -gairebé -ha -han -has -havia -he -hem -heu -hi -ho -i -igual -iguals -ja -l'hi -la -les -li -li'n -llavors -m'he -ma -mal -malgrat -mateix -mateixa -mateixes -mateixos -me -mentre -més -meu -meus -meva -meves -molt -molta -moltes -molts -mon -mons -n'he -n'hi -ne -ni -no -nogensmenys -només -nosaltres -nostra -nostre -nostres -o -oh -oi -on -pas -pel -pels -per -però -perquè -poc -poca -pocs -poques -potser -propi -qual -quals -quan -quant -que -què -quelcom -qui -quin -quina -quines -quins -s'ha -s'han -sa -semblant -semblants -ses -seu -seus -seva -seva -seves -si -sobre -sobretot -sóc -solament -sols -son -són -sons -sota -sou -t'ha -t'han -t'he -ta -tal -també -tampoc -tan -tant -tanta -tantes -teu -teus -teva -teves -ton -tons -tot -tota -totes -tots -un -una -unes -uns -us -va -vaig -vam -van -vas -veu -vosaltres -vostra -vostre -vostres diff --git a/solr/example/files/conf/lang/stopwords_cz.txt b/solr/example/files/conf/lang/stopwords_cz.txt deleted file mode 100644 index 53c6097dac7..00000000000 --- a/solr/example/files/conf/lang/stopwords_cz.txt +++ /dev/null @@ -1,172 +0,0 @@ -a -s -k -o -i -u -v -z -dnes -cz -tímto -budeš -budem -byli -jseš -můj -svým -ta -tomto -tohle -tuto -tyto -jej -zda -proč -máte -tato -kam -tohoto -kdo -kteří -mi -nám -tom -tomuto -mít -nic -proto -kterou -byla -toho -protože -asi -ho -naši -napište -re -což -tím -takže -svých -její -svými -jste -aj -tu -tedy -teto -bylo -kde -ke -pravé -ji -nad -nejsou -či -pod -téma -mezi -přes -ty -pak -vám -ani -když -však -neg -jsem -tento -článku -články -aby -jsme -před -pta -jejich -byl -ještě -až -bez -také -pouze -první -vaše -která -nás -nový -tipy -pokud -může -strana -jeho -své -jiné -zprávy -nové -není -vás -jen -podle -zde -už -být -více -bude -již -než -který -by -které -co -nebo -ten -tak -má -při -od -po -jsou -jak -další -ale -si -se -ve -to -jako -za -zpět -ze -do -pro -je -na -atd -atp -jakmile -přičemž -já -on -ona -ono -oni -ony -my -vy -jí -ji -mě -mne -jemu -tomu -těm -těmu -němu -němuž -jehož -jíž -jelikož -jež -jakož -načež diff --git a/solr/example/files/conf/lang/stopwords_da.txt b/solr/example/files/conf/lang/stopwords_da.txt deleted file mode 100644 index 42e6145b98e..00000000000 --- a/solr/example/files/conf/lang/stopwords_da.txt +++ /dev/null @@ -1,110 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/danish/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Danish stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - | This is a ranked list (commonest to rarest) of stopwords derived from - | a large text sample. - - -og | and -i | in -jeg | I -det | that (dem. pronoun)/it (pers. pronoun) -at | that (in front of a sentence)/to (with infinitive) -en | a/an -den | it (pers. pronoun)/that (dem. pronoun) -til | to/at/for/until/against/by/of/into, more -er | present tense of "to be" -som | who, as -på | on/upon/in/on/at/to/after/of/with/for, on -de | they -med | with/by/in, along -han | he -af | of/by/from/off/for/in/with/on, off -for | at/for/to/from/by/of/ago, in front/before, because -ikke | not -der | who/which, there/those -var | past tense of "to be" -mig | me/myself -sig | oneself/himself/herself/itself/themselves -men | but -et | a/an/one, one (number), someone/somebody/one -har | present tense of "to have" -om | round/about/for/in/a, about/around/down, if -vi | we -min | my -havde | past tense of "to have" -ham | him -hun | she -nu | now -over | over/above/across/by/beyond/past/on/about, over/past -da | then, when/as/since -fra | from/off/since, off, since -du | you -ud | out -sin | his/her/its/one's -dem | them -os | us/ourselves -op | up -man | you/one -hans | his -hvor | where -eller | or -hvad | what -skal | must/shall etc. -selv | myself/youself/herself/ourselves etc., even -her | here -alle | all/everyone/everybody etc. -vil | will (verb) -blev | past tense of "to stay/to remain/to get/to become" -kunne | could -ind | in -når | when -være | present tense of "to be" -dog | however/yet/after all -noget | something -ville | would -jo | you know/you see (adv), yes -deres | their/theirs -efter | after/behind/according to/for/by/from, later/afterwards -ned | down -skulle | should -denne | this -end | than -dette | this -mit | my/mine -også | also -under | under/beneath/below/during, below/underneath -have | have -dig | you -anden | other -hende | her -mine | my -alt | everything -meget | much/very, plenty of -sit | his, her, its, one's -sine | his, her, its, one's -vor | our -mod | against -disse | these -hvis | if -din | your/yours -nogle | some -hos | by/at -blive | be/become -mange | many -ad | by/through -bliver | present tense of "to be/to become" -hendes | her/hers -været | be -thi | for (conj) -jer | you -sådan | such, like this/like that diff --git a/solr/example/files/conf/lang/stopwords_de.txt b/solr/example/files/conf/lang/stopwords_de.txt deleted file mode 100644 index 86525e7ae08..00000000000 --- a/solr/example/files/conf/lang/stopwords_de.txt +++ /dev/null @@ -1,294 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/german/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A German stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - | The number of forms in this list is reduced significantly by passing it - | through the German stemmer. - - -aber | but - -alle | all -allem -allen -aller -alles - -als | than, as -also | so -am | an + dem -an | at - -ander | other -andere -anderem -anderen -anderer -anderes -anderm -andern -anderr -anders - -auch | also -auf | on -aus | out of -bei | by -bin | am -bis | until -bist | art -da | there -damit | with it -dann | then - -der | the -den -des -dem -die -das - -daß | that - -derselbe | the same -derselben -denselben -desselben -demselben -dieselbe -dieselben -dasselbe - -dazu | to that - -dein | thy -deine -deinem -deinen -deiner -deines - -denn | because - -derer | of those -dessen | of him - -dich | thee -dir | to thee -du | thou - -dies | this -diese -diesem -diesen -dieser -dieses - - -doch | (several meanings) -dort | (over) there - - -durch | through - -ein | a -eine -einem -einen -einer -eines - -einig | some -einige -einigem -einigen -einiger -einiges - -einmal | once - -er | he -ihn | him -ihm | to him - -es | it -etwas | something - -euer | your -eure -eurem -euren -eurer -eures - -für | for -gegen | towards -gewesen | p.p. of sein -hab | have -habe | have -haben | have -hat | has -hatte | had -hatten | had -hier | here -hin | there -hinter | behind - -ich | I -mich | me -mir | to me - - -ihr | you, to her -ihre -ihrem -ihren -ihrer -ihres -euch | to you - -im | in + dem -in | in -indem | while -ins | in + das -ist | is - -jede | each, every -jedem -jeden -jeder -jedes - -jene | that -jenem -jenen -jener -jenes - -jetzt | now -kann | can - -kein | no -keine -keinem -keinen -keiner -keines - -können | can -könnte | could -machen | do -man | one - -manche | some, many a -manchem -manchen -mancher -manches - -mein | my -meine -meinem -meinen -meiner -meines - -mit | with -muss | must -musste | had to -nach | to(wards) -nicht | not -nichts | nothing -noch | still, yet -nun | now -nur | only -ob | whether -oder | or -ohne | without -sehr | very - -sein | his -seine -seinem -seinen -seiner -seines - -selbst | self -sich | herself - -sie | they, she -ihnen | to them - -sind | are -so | so - -solche | such -solchem -solchen -solcher -solches - -soll | shall -sollte | should -sondern | but -sonst | else -über | over -um | about, around -und | and - -uns | us -unse -unsem -unsen -unser -unses - -unter | under -viel | much -vom | von + dem -von | from -vor | before -während | while -war | was -waren | were -warst | wast -was | what -weg | away, off -weil | because -weiter | further - -welche | which -welchem -welchen -welcher -welches - -wenn | when -werde | will -werden | will -wie | how -wieder | again -will | want -wir | we -wird | will -wirst | willst -wo | where -wollen | want -wollte | wanted -würde | would -würden | would -zu | to -zum | zu + dem -zur | zu + der -zwar | indeed -zwischen | between - diff --git a/solr/example/files/conf/lang/stopwords_el.txt b/solr/example/files/conf/lang/stopwords_el.txt deleted file mode 100644 index 232681f5bd6..00000000000 --- a/solr/example/files/conf/lang/stopwords_el.txt +++ /dev/null @@ -1,78 +0,0 @@ -# Lucene Greek Stopwords list -# Note: by default this file is used after GreekLowerCaseFilter, -# so when modifying this file use 'σ' instead of 'ς' -ο -η -το -οι -τα -του -τησ -των -τον -την -και -κι -κ -ειμαι -εισαι -ειναι -ειμαστε -ειστε -στο -στον -στη -στην -μα -αλλα -απο -για -προσ -με -σε -ωσ -παρα -αντι -κατα -μετα -θα -να -δε -δεν -μη -μην -επι -ενω -εαν -αν -τοτε -που -πωσ -ποιοσ -ποια -ποιο -ποιοι -ποιεσ -ποιων -ποιουσ -αυτοσ -αυτη -αυτο -αυτοι -αυτων -αυτουσ -αυτεσ -αυτα -εκεινοσ -εκεινη -εκεινο -εκεινοι -εκεινεσ -εκεινα -εκεινων -εκεινουσ -οπωσ -ομωσ -ισωσ -οσο -οτι diff --git a/solr/example/files/conf/lang/stopwords_en.txt b/solr/example/files/conf/lang/stopwords_en.txt deleted file mode 100644 index 2c164c0b2a1..00000000000 --- a/solr/example/files/conf/lang/stopwords_en.txt +++ /dev/null @@ -1,54 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# a couple of test stopwords to test that the words are really being -# configured from this file: -stopworda -stopwordb - -# Standard english stop words taken from Lucene's StopAnalyzer -a -an -and -are -as -at -be -but -by -for -if -in -into -is -it -no -not -of -on -or -such -that -the -their -then -there -these -they -this -to -was -will -with diff --git a/solr/example/files/conf/lang/stopwords_es.txt b/solr/example/files/conf/lang/stopwords_es.txt deleted file mode 100644 index 487d78c8d56..00000000000 --- a/solr/example/files/conf/lang/stopwords_es.txt +++ /dev/null @@ -1,356 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/spanish/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Spanish stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - - | The following is a ranked list (commonest to rarest) of stopwords - | deriving from a large sample of text. - - | Extra words have been added at the end. - -de | from, of -la | the, her -que | who, that -el | the -en | in -y | and -a | to -los | the, them -del | de + el -se | himself, from him etc -las | the, them -por | for, by, etc -un | a -para | for -con | with -no | no -una | a -su | his, her -al | a + el - | es from SER -lo | him -como | how -más | more -pero | pero -sus | su plural -le | to him, her -ya | already -o | or - | fue from SER -este | this - | ha from HABER -sí | himself etc -porque | because -esta | this - | son from SER -entre | between - | está from ESTAR -cuando | when -muy | very -sin | without -sobre | on - | ser from SER - | tiene from TENER -también | also -me | me -hasta | until -hay | there is/are -donde | where - | han from HABER -quien | whom, that - | están from ESTAR - | estado from ESTAR -desde | from -todo | all -nos | us -durante | during - | estados from ESTAR -todos | all -uno | a -les | to them -ni | nor -contra | against -otros | other - | fueron from SER -ese | that -eso | that - | había from HABER -ante | before -ellos | they -e | and (variant of y) -esto | this -mí | me -antes | before -algunos | some -qué | what? -unos | a -yo | I -otro | other -otras | other -otra | other -él | he -tanto | so much, many -esa | that -estos | these -mucho | much, many -quienes | who -nada | nothing -muchos | many -cual | who - | sea from SER -poco | few -ella | she -estar | to be - | haber from HABER -estas | these - | estaba from ESTAR - | estamos from ESTAR -algunas | some -algo | something -nosotros | we - - | other forms - -mi | me -mis | mi plural -tú | thou -te | thee -ti | thee -tu | thy -tus | tu plural -ellas | they -nosotras | we -vosotros | you -vosotras | you -os | you -mío | mine -mía | -míos | -mías | -tuyo | thine -tuya | -tuyos | -tuyas | -suyo | his, hers, theirs -suya | -suyos | -suyas | -nuestro | ours -nuestra | -nuestros | -nuestras | -vuestro | yours -vuestra | -vuestros | -vuestras | -esos | those -esas | those - - | forms of estar, to be (not including the infinitive): -estoy -estás -está -estamos -estáis -están -esté -estés -estemos -estéis -estén -estaré -estarás -estará -estaremos -estaréis -estarán -estaría -estarías -estaríamos -estaríais -estarían -estaba -estabas -estábamos -estabais -estaban -estuve -estuviste -estuvo -estuvimos -estuvisteis -estuvieron -estuviera -estuvieras -estuviéramos -estuvierais -estuvieran -estuviese -estuvieses -estuviésemos -estuvieseis -estuviesen -estando -estado -estada -estados -estadas -estad - - | forms of haber, to have (not including the infinitive): -he -has -ha -hemos -habéis -han -haya -hayas -hayamos -hayáis -hayan -habré -habrás -habrá -habremos -habréis -habrán -habría -habrías -habríamos -habríais -habrían -había -habías -habíamos -habíais -habían -hube -hubiste -hubo -hubimos -hubisteis -hubieron -hubiera -hubieras -hubiéramos -hubierais -hubieran -hubiese -hubieses -hubiésemos -hubieseis -hubiesen -habiendo -habido -habida -habidos -habidas - - | forms of ser, to be (not including the infinitive): -soy -eres -es -somos -sois -son -sea -seas -seamos -seáis -sean -seré -serás -será -seremos -seréis -serán -sería -serías -seríamos -seríais -serían -era -eras -éramos -erais -eran -fui -fuiste -fue -fuimos -fuisteis -fueron -fuera -fueras -fuéramos -fuerais -fueran -fuese -fueses -fuésemos -fueseis -fuesen -siendo -sido - | sed also means 'thirst' - - | forms of tener, to have (not including the infinitive): -tengo -tienes -tiene -tenemos -tenéis -tienen -tenga -tengas -tengamos -tengáis -tengan -tendré -tendrás -tendrá -tendremos -tendréis -tendrán -tendría -tendrías -tendríamos -tendríais -tendrían -tenía -tenías -teníamos -teníais -tenían -tuve -tuviste -tuvo -tuvimos -tuvisteis -tuvieron -tuviera -tuvieras -tuviéramos -tuvierais -tuvieran -tuviese -tuvieses -tuviésemos -tuvieseis -tuviesen -teniendo -tenido -tenida -tenidos -tenidas -tened - diff --git a/solr/example/files/conf/lang/stopwords_eu.txt b/solr/example/files/conf/lang/stopwords_eu.txt deleted file mode 100644 index 25f1db93460..00000000000 --- a/solr/example/files/conf/lang/stopwords_eu.txt +++ /dev/null @@ -1,99 +0,0 @@ -# example set of basque stopwords -al -anitz -arabera -asko -baina -bat -batean -batek -bati -batzuei -batzuek -batzuetan -batzuk -bera -beraiek -berau -berauek -bere -berori -beroriek -beste -bezala -da -dago -dira -ditu -du -dute -edo -egin -ere -eta -eurak -ez -gainera -gu -gutxi -guzti -haiei -haiek -haietan -hainbeste -hala -han -handik -hango -hara -hari -hark -hartan -hau -hauei -hauek -hauetan -hemen -hemendik -hemengo -hi -hona -honek -honela -honetan -honi -hor -hori -horiei -horiek -horietan -horko -horra -horrek -horrela -horretan -horri -hortik -hura -izan -ni -noiz -nola -non -nondik -nongo -nor -nora -ze -zein -zen -zenbait -zenbat -zer -zergatik -ziren -zituen -zu -zuek -zuen -zuten diff --git a/solr/example/files/conf/lang/stopwords_fa.txt b/solr/example/files/conf/lang/stopwords_fa.txt deleted file mode 100644 index 723641c6da7..00000000000 --- a/solr/example/files/conf/lang/stopwords_fa.txt +++ /dev/null @@ -1,313 +0,0 @@ -# This file was created by Jacques Savoy and is distributed under the BSD license. -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# Also see http://www.opensource.org/licenses/bsd-license.html -# Note: by default this file is used after normalization, so when adding entries -# to this file, use the arabic 'ي' instead of 'ی' -انان -نداشته -سراسر -خياه -ايشان -وي -تاكنون -بيشتري -دوم -پس -ناشي -وگو -يا -داشتند -سپس -هنگام -هرگز -پنج -نشان -امسال -ديگر -گروهي -شدند -چطور -ده -و -دو -نخستين -ولي -چرا -چه -وسط -ه -كدام -قابل -يك -رفت -هفت -همچنين -در -هزار -بله -بلي -شايد -اما -شناسي -گرفته -دهد -داشته -دانست -داشتن -خواهيم -ميليارد -وقتيكه -امد -خواهد -جز -اورده -شده -بلكه -خدمات -شدن -برخي -نبود -بسياري -جلوگيري -حق -كردند -نوعي -بعري -نكرده -نظير -نبايد -بوده -بودن -داد -اورد -هست -جايي -شود -دنبال -داده -بايد -سابق -هيچ -همان -انجا -كمتر -كجاست -گردد -كسي -تر -مردم -تان -دادن -بودند -سري -جدا -ندارند -مگر -يكديگر -دارد -دهند -بنابراين -هنگامي -سمت -جا -انچه -خود -دادند -زياد -دارند -اثر -بدون -بهترين -بيشتر -البته -به -براساس -بيرون -كرد -بعضي -گرفت -توي -اي -ميليون -او -جريان -تول -بر -مانند -برابر -باشيم -مدتي -گويند -اكنون -تا -تنها -جديد -چند -بي -نشده -كردن -كردم -گويد -كرده -كنيم -نمي -نزد -روي -قصد -فقط -بالاي -ديگران -اين -ديروز -توسط -سوم -ايم -دانند -سوي -استفاده -شما -كنار -داريم -ساخته -طور -امده -رفته -نخست -بيست -نزديك -طي -كنيد -از -انها -تمامي -داشت -يكي -طريق -اش -چيست -روب -نمايد -گفت -چندين -چيزي -تواند -ام -ايا -با -ان -ايد -ترين -اينكه -ديگري -راه -هايي -بروز -همچنان -پاعين -كس -حدود -مختلف -مقابل -چيز -گيرد -ندارد -ضد -همچون -سازي -شان -مورد -باره -مرسي -خويش -برخوردار -چون -خارج -شش -هنوز -تحت -ضمن -هستيم -گفته -فكر -بسيار -پيش -براي -روزهاي -انكه -نخواهد -بالا -كل -وقتي -كي -چنين -كه -گيري -نيست -است -كجا -كند -نيز -يابد -بندي -حتي -توانند -عقب -خواست -كنند -بين -تمام -همه -ما -باشند -مثل -شد -اري -باشد -اره -طبق -بعد -اگر -صورت -غير -جاي -بيش -ريزي -اند -زيرا -چگونه -بار -لطفا -مي -درباره -من -ديده -همين -گذاري -برداري -علت -گذاشته -هم -فوق -نه -ها -شوند -اباد -همواره -هر -اول -خواهند -چهار -نام -امروز -مان -هاي -قبل -كنم -سعي -تازه -را -هستند -زير -جلوي -عنوان -بود diff --git a/solr/example/files/conf/lang/stopwords_fi.txt b/solr/example/files/conf/lang/stopwords_fi.txt deleted file mode 100644 index 4372c9a055b..00000000000 --- a/solr/example/files/conf/lang/stopwords_fi.txt +++ /dev/null @@ -1,97 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/finnish/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - -| forms of BE - -olla -olen -olet -on -olemme -olette -ovat -ole | negative form - -oli -olisi -olisit -olisin -olisimme -olisitte -olisivat -olit -olin -olimme -olitte -olivat -ollut -olleet - -en | negation -et -ei -emme -ette -eivät - -|Nom Gen Acc Part Iness Elat Illat Adess Ablat Allat Ess Trans -minä minun minut minua minussa minusta minuun minulla minulta minulle | I -sinä sinun sinut sinua sinussa sinusta sinuun sinulla sinulta sinulle | you -hän hänen hänet häntä hänessä hänestä häneen hänellä häneltä hänelle | he she -me meidän meidät meitä meissä meistä meihin meillä meiltä meille | we -te teidän teidät teitä teissä teistä teihin teillä teiltä teille | you -he heidän heidät heitä heissä heistä heihin heillä heiltä heille | they - -tämä tämän tätä tässä tästä tähän tallä tältä tälle tänä täksi | this -tuo tuon tuotä tuossa tuosta tuohon tuolla tuolta tuolle tuona tuoksi | that -se sen sitä siinä siitä siihen sillä siltä sille sinä siksi | it -nämä näiden näitä näissä näistä näihin näillä näiltä näille näinä näiksi | these -nuo noiden noita noissa noista noihin noilla noilta noille noina noiksi | those -ne niiden niitä niissä niistä niihin niillä niiltä niille niinä niiksi | they - -kuka kenen kenet ketä kenessä kenestä keneen kenellä keneltä kenelle kenenä keneksi| who -ketkä keiden ketkä keitä keissä keistä keihin keillä keiltä keille keinä keiksi | (pl) -mikä minkä minkä mitä missä mistä mihin millä miltä mille minä miksi | which what -mitkä | (pl) - -joka jonka jota jossa josta johon jolla jolta jolle jona joksi | who which -jotka joiden joita joissa joista joihin joilla joilta joille joina joiksi | (pl) - -| conjunctions - -että | that -ja | and -jos | if -koska | because -kuin | than -mutta | but -niin | so -sekä | and -sillä | for -tai | or -vaan | but -vai | or -vaikka | although - - -| prepositions - -kanssa | with -mukaan | according to -noin | about -poikki | across -yli | over, across - -| other - -kun | when -niin | so -nyt | now -itse | self - diff --git a/solr/example/files/conf/lang/stopwords_fr.txt b/solr/example/files/conf/lang/stopwords_fr.txt deleted file mode 100644 index 749abae6846..00000000000 --- a/solr/example/files/conf/lang/stopwords_fr.txt +++ /dev/null @@ -1,186 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/french/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A French stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - -au | a + le -aux | a + les -avec | with -ce | this -ces | these -dans | with -de | of -des | de + les -du | de + le -elle | she -en | `of them' etc -et | and -eux | them -il | he -je | I -la | the -le | the -leur | their -lui | him -ma | my (fem) -mais | but -me | me -même | same; as in moi-même (myself) etc -mes | me (pl) -moi | me -mon | my (masc) -ne | not -nos | our (pl) -notre | our -nous | we -on | one -ou | where -par | by -pas | not -pour | for -qu | que before vowel -que | that -qui | who -sa | his, her (fem) -se | oneself -ses | his (pl) -son | his, her (masc) -sur | on -ta | thy (fem) -te | thee -tes | thy (pl) -toi | thee -ton | thy (masc) -tu | thou -un | a -une | a -vos | your (pl) -votre | your -vous | you - - | single letter forms - -c | c' -d | d' -j | j' -l | l' -à | to, at -m | m' -n | n' -s | s' -t | t' -y | there - - | forms of être (not including the infinitive): -été -étée -étées -étés -étant -suis -es -est -sommes -êtes -sont -serai -seras -sera -serons -serez -seront -serais -serait -serions -seriez -seraient -étais -était -étions -étiez -étaient -fus -fut -fûmes -fûtes -furent -sois -soit -soyons -soyez -soient -fusse -fusses -fût -fussions -fussiez -fussent - - | forms of avoir (not including the infinitive): -ayant -eu -eue -eues -eus -ai -as -avons -avez -ont -aurai -auras -aura -aurons -aurez -auront -aurais -aurait -aurions -auriez -auraient -avais -avait -avions -aviez -avaient -eut -eûmes -eûtes -eurent -aie -aies -ait -ayons -ayez -aient -eusse -eusses -eût -eussions -eussiez -eussent - - | Later additions (from Jean-Christophe Deschamps) -ceci | this -cela | that -celà | that -cet | this -cette | this -ici | here -ils | they -les | the (pl) -leurs | their (pl) -quel | which -quels | which -quelle | which -quelles | which -sans | without -soi | oneself - diff --git a/solr/example/files/conf/lang/stopwords_ga.txt b/solr/example/files/conf/lang/stopwords_ga.txt deleted file mode 100644 index 9ff88d747e5..00000000000 --- a/solr/example/files/conf/lang/stopwords_ga.txt +++ /dev/null @@ -1,110 +0,0 @@ - -a -ach -ag -agus -an -aon -ar -arna -as -b' -ba -beirt -bhúr -caoga -ceathair -ceathrar -chomh -chtó -chuig -chun -cois -céad -cúig -cúigear -d' -daichead -dar -de -deich -deichniúr -den -dhá -do -don -dtí -dá -dár -dó -faoi -faoin -faoina -faoinár -fara -fiche -gach -gan -go -gur -haon -hocht -i -iad -idir -in -ina -ins -inár -is -le -leis -lena -lenár -m' -mar -mo -mé -na -nach -naoi -naonúr -ná -ní -níor -nó -nócha -ocht -ochtar -os -roimh -sa -seacht -seachtar -seachtó -seasca -seisear -siad -sibh -sinn -sna -sé -sí -tar -thar -thú -triúr -trí -trína -trínár -tríocha -tú -um -ár -é -éis -í -ó -ón -óna -ónár diff --git a/solr/example/files/conf/lang/stopwords_gl.txt b/solr/example/files/conf/lang/stopwords_gl.txt deleted file mode 100644 index d8760b12c14..00000000000 --- a/solr/example/files/conf/lang/stopwords_gl.txt +++ /dev/null @@ -1,161 +0,0 @@ -# galican stopwords -a -aínda -alí -aquel -aquela -aquelas -aqueles -aquilo -aquí -ao -aos -as -así -á -ben -cando -che -co -coa -comigo -con -connosco -contigo -convosco -coas -cos -cun -cuns -cunha -cunhas -da -dalgunha -dalgunhas -dalgún -dalgúns -das -de -del -dela -delas -deles -desde -deste -do -dos -dun -duns -dunha -dunhas -e -el -ela -elas -eles -en -era -eran -esa -esas -ese -eses -esta -estar -estaba -está -están -este -estes -estiven -estou -eu -é -facer -foi -foron -fun -había -hai -iso -isto -la -las -lle -lles -lo -los -mais -me -meu -meus -min -miña -miñas -moi -na -nas -neste -nin -no -non -nos -nosa -nosas -noso -nosos -nós -nun -nunha -nuns -nunhas -o -os -ou -ó -ós -para -pero -pode -pois -pola -polas -polo -polos -por -que -se -senón -ser -seu -seus -sexa -sido -sobre -súa -súas -tamén -tan -te -ten -teñen -teño -ter -teu -teus -ti -tido -tiña -tiven -túa -túas -un -unha -unhas -uns -vos -vosa -vosas -voso -vosos -vós diff --git a/solr/example/files/conf/lang/stopwords_hi.txt b/solr/example/files/conf/lang/stopwords_hi.txt deleted file mode 100644 index 86286bb083b..00000000000 --- a/solr/example/files/conf/lang/stopwords_hi.txt +++ /dev/null @@ -1,235 +0,0 @@ -# Also see http://www.opensource.org/licenses/bsd-license.html -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# This file was created by Jacques Savoy and is distributed under the BSD license. -# Note: by default this file also contains forms normalized by HindiNormalizer -# for spelling variation (see section below), such that it can be used whether or -# not you enable that feature. When adding additional entries to this list, -# please add the normalized form as well. -अंदर -अत -अपना -अपनी -अपने -अभी -आदि -आप -इत्यादि -इन -इनका -इन्हीं -इन्हें -इन्हों -इस -इसका -इसकी -इसके -इसमें -इसी -इसे -उन -उनका -उनकी -उनके -उनको -उन्हीं -उन्हें -उन्हों -उस -उसके -उसी -उसे -एक -एवं -एस -ऐसे -और -कई -कर -करता -करते -करना -करने -करें -कहते -कहा -का -काफ़ी -कि -कितना -किन्हें -किन्हों -किया -किर -किस -किसी -किसे -की -कुछ -कुल -के -को -कोई -कौन -कौनसा -गया -घर -जब -जहाँ -जा -जितना -जिन -जिन्हें -जिन्हों -जिस -जिसे -जीधर -जैसा -जैसे -जो -तक -तब -तरह -तिन -तिन्हें -तिन्हों -तिस -तिसे -तो -था -थी -थे -दबारा -दिया -दुसरा -दूसरे -दो -द्वारा -न -नहीं -ना -निहायत -नीचे -ने -पर -पर -पहले -पूरा -पे -फिर -बनी -बही -बहुत -बाद -बाला -बिलकुल -भी -भीतर -मगर -मानो -मे -में -यदि -यह -यहाँ -यही -या -यिह -ये -रखें -रहा -रहे -ऱ्वासा -लिए -लिये -लेकिन -व -वर्ग -वह -वह -वहाँ -वहीं -वाले -वुह -वे -वग़ैरह -संग -सकता -सकते -सबसे -सभी -साथ -साबुत -साभ -सारा -से -सो -ही -हुआ -हुई -हुए -है -हैं -हो -होता -होती -होते -होना -होने -# additional normalized forms of the above -अपनि -जेसे -होति -सभि -तिंहों -इंहों -दवारा -इसि -किंहें -थि -उंहों -ओर -जिंहें -वहिं -अभि -बनि -हि -उंहिं -उंहें -हें -वगेरह -एसे -रवासा -कोन -निचे -काफि -उसि -पुरा -भितर -हे -बहि -वहां -कोइ -यहां -जिंहों -तिंहें -किसि -कइ -यहि -इंहिं -जिधर -इंहें -अदि -इतयादि -हुइ -कोनसा -इसकि -दुसरे -जहां -अप -किंहों -उनकि -भि -वरग -हुअ -जेसा -नहिं diff --git a/solr/example/files/conf/lang/stopwords_hu.txt b/solr/example/files/conf/lang/stopwords_hu.txt deleted file mode 100644 index 37526da8aa9..00000000000 --- a/solr/example/files/conf/lang/stopwords_hu.txt +++ /dev/null @@ -1,211 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/hungarian/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - -| Hungarian stop word list -| prepared by Anna Tordai - -a -ahogy -ahol -aki -akik -akkor -alatt -által -általában -amely -amelyek -amelyekben -amelyeket -amelyet -amelynek -ami -amit -amolyan -amíg -amikor -át -abban -ahhoz -annak -arra -arról -az -azok -azon -azt -azzal -azért -aztán -azután -azonban -bár -be -belül -benne -cikk -cikkek -cikkeket -csak -de -e -eddig -egész -egy -egyes -egyetlen -egyéb -egyik -egyre -ekkor -el -elég -ellen -elő -először -előtt -első -én -éppen -ebben -ehhez -emilyen -ennek -erre -ez -ezt -ezek -ezen -ezzel -ezért -és -fel -felé -hanem -hiszen -hogy -hogyan -igen -így -illetve -ill. -ill -ilyen -ilyenkor -ison -ismét -itt -jó -jól -jobban -kell -kellett -keresztül -keressünk -ki -kívül -között -közül -legalább -lehet -lehetett -legyen -lenne -lenni -lesz -lett -maga -magát -majd -majd -már -más -másik -meg -még -mellett -mert -mely -melyek -mi -mit -míg -miért -milyen -mikor -minden -mindent -mindenki -mindig -mint -mintha -mivel -most -nagy -nagyobb -nagyon -ne -néha -nekem -neki -nem -néhány -nélkül -nincs -olyan -ott -össze -ő -ők -őket -pedig -persze -rá -s -saját -sem -semmi -sok -sokat -sokkal -számára -szemben -szerint -szinte -talán -tehát -teljes -tovább -továbbá -több -úgy -ugyanis -új -újabb -újra -után -utána -utolsó -vagy -vagyis -valaki -valami -valamint -való -vagyok -van -vannak -volt -voltam -voltak -voltunk -vissza -vele -viszont -volna diff --git a/solr/example/files/conf/lang/stopwords_hy.txt b/solr/example/files/conf/lang/stopwords_hy.txt deleted file mode 100644 index 60c1c50fbc8..00000000000 --- a/solr/example/files/conf/lang/stopwords_hy.txt +++ /dev/null @@ -1,46 +0,0 @@ -# example set of Armenian stopwords. -այդ -այլ -այն -այս -դու -դուք -եմ -են -ենք -ես -եք -է -էի -էին -էինք -էիր -էիք -էր -ըստ -թ -ի -ին -իսկ -իր -կամ -համար -հետ -հետո -մենք -մեջ -մի -ն -նա -նաև -նրա -նրանք -որ -որը -որոնք -որպես -ու -ում -պիտի -վրա -և diff --git a/solr/example/files/conf/lang/stopwords_id.txt b/solr/example/files/conf/lang/stopwords_id.txt deleted file mode 100644 index 4617f83a5c5..00000000000 --- a/solr/example/files/conf/lang/stopwords_id.txt +++ /dev/null @@ -1,359 +0,0 @@ -# from appendix D of: A Study of Stemming Effects on Information -# Retrieval in Bahasa Indonesia -ada -adanya -adalah -adapun -agak -agaknya -agar -akan -akankah -akhirnya -aku -akulah -amat -amatlah -anda -andalah -antar -diantaranya -antara -antaranya -diantara -apa -apaan -mengapa -apabila -apakah -apalagi -apatah -atau -ataukah -ataupun -bagai -bagaikan -sebagai -sebagainya -bagaimana -bagaimanapun -sebagaimana -bagaimanakah -bagi -bahkan -bahwa -bahwasanya -sebaliknya -banyak -sebanyak -beberapa -seberapa -begini -beginian -beginikah -beginilah -sebegini -begitu -begitukah -begitulah -begitupun -sebegitu -belum -belumlah -sebelum -sebelumnya -sebenarnya -berapa -berapakah -berapalah -berapapun -betulkah -sebetulnya -biasa -biasanya -bila -bilakah -bisa -bisakah -sebisanya -boleh -bolehkah -bolehlah -buat -bukan -bukankah -bukanlah -bukannya -cuma -percuma -dahulu -dalam -dan -dapat -dari -daripada -dekat -demi -demikian -demikianlah -sedemikian -dengan -depan -di -dia -dialah -dini -diri -dirinya -terdiri -dong -dulu -enggak -enggaknya -entah -entahlah -terhadap -terhadapnya -hal -hampir -hanya -hanyalah -harus -haruslah -harusnya -seharusnya -hendak -hendaklah -hendaknya -hingga -sehingga -ia -ialah -ibarat -ingin -inginkah -inginkan -ini -inikah -inilah -itu -itukah -itulah -jangan -jangankan -janganlah -jika -jikalau -juga -justru -kala -kalau -kalaulah -kalaupun -kalian -kami -kamilah -kamu -kamulah -kan -kapan -kapankah -kapanpun -dikarenakan -karena -karenanya -ke -kecil -kemudian -kenapa -kepada -kepadanya -ketika -seketika -khususnya -kini -kinilah -kiranya -sekiranya -kita -kitalah -kok -lagi -lagian -selagi -lah -lain -lainnya -melainkan -selaku -lalu -melalui -terlalu -lama -lamanya -selama -selama -selamanya -lebih -terlebih -bermacam -macam -semacam -maka -makanya -makin -malah -malahan -mampu -mampukah -mana -manakala -manalagi -masih -masihkah -semasih -masing -mau -maupun -semaunya -memang -mereka -merekalah -meski -meskipun -semula -mungkin -mungkinkah -nah -namun -nanti -nantinya -nyaris -oleh -olehnya -seorang -seseorang -pada -padanya -padahal -paling -sepanjang -pantas -sepantasnya -sepantasnyalah -para -pasti -pastilah -per -pernah -pula -pun -merupakan -rupanya -serupa -saat -saatnya -sesaat -saja -sajalah -saling -bersama -sama -sesama -sambil -sampai -sana -sangat -sangatlah -saya -sayalah -se -sebab -sebabnya -sebuah -tersebut -tersebutlah -sedang -sedangkan -sedikit -sedikitnya -segala -segalanya -segera -sesegera -sejak -sejenak -sekali -sekalian -sekalipun -sesekali -sekaligus -sekarang -sekarang -sekitar -sekitarnya -sela -selain -selalu -seluruh -seluruhnya -semakin -sementara -sempat -semua -semuanya -sendiri -sendirinya -seolah -seperti -sepertinya -sering -seringnya -serta -siapa -siapakah -siapapun -disini -disinilah -sini -sinilah -sesuatu -sesuatunya -suatu -sesudah -sesudahnya -sudah -sudahkah -sudahlah -supaya -tadi -tadinya -tak -tanpa -setelah -telah -tentang -tentu -tentulah -tentunya -tertentu -seterusnya -tapi -tetapi -setiap -tiap -setidaknya -tidak -tidakkah -tidaklah -toh -waduh -wah -wahai -sewaktu -walau -walaupun -wong -yaitu -yakni -yang diff --git a/solr/example/files/conf/lang/stopwords_it.txt b/solr/example/files/conf/lang/stopwords_it.txt deleted file mode 100644 index 1219cc773ab..00000000000 --- a/solr/example/files/conf/lang/stopwords_it.txt +++ /dev/null @@ -1,303 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/italian/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | An Italian stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - -ad | a (to) before vowel -al | a + il -allo | a + lo -ai | a + i -agli | a + gli -all | a + l' -agl | a + gl' -alla | a + la -alle | a + le -con | with -col | con + il -coi | con + i (forms collo, cogli etc are now very rare) -da | from -dal | da + il -dallo | da + lo -dai | da + i -dagli | da + gli -dall | da + l' -dagl | da + gll' -dalla | da + la -dalle | da + le -di | of -del | di + il -dello | di + lo -dei | di + i -degli | di + gli -dell | di + l' -degl | di + gl' -della | di + la -delle | di + le -in | in -nel | in + el -nello | in + lo -nei | in + i -negli | in + gli -nell | in + l' -negl | in + gl' -nella | in + la -nelle | in + le -su | on -sul | su + il -sullo | su + lo -sui | su + i -sugli | su + gli -sull | su + l' -sugl | su + gl' -sulla | su + la -sulle | su + le -per | through, by -tra | among -contro | against -io | I -tu | thou -lui | he -lei | she -noi | we -voi | you -loro | they -mio | my -mia | -miei | -mie | -tuo | -tua | -tuoi | thy -tue | -suo | -sua | -suoi | his, her -sue | -nostro | our -nostra | -nostri | -nostre | -vostro | your -vostra | -vostri | -vostre | -mi | me -ti | thee -ci | us, there -vi | you, there -lo | him, the -la | her, the -li | them -le | them, the -gli | to him, the -ne | from there etc -il | the -un | a -uno | a -una | a -ma | but -ed | and -se | if -perché | why, because -anche | also -come | how -dov | where (as dov') -dove | where -che | who, that -chi | who -cui | whom -non | not -più | more -quale | who, that -quanto | how much -quanti | -quanta | -quante | -quello | that -quelli | -quella | -quelle | -questo | this -questi | -questa | -queste | -si | yes -tutto | all -tutti | all - - | single letter forms: - -a | at -c | as c' for ce or ci -e | and -i | the -l | as l' -o | or - - | forms of avere, to have (not including the infinitive): - -ho -hai -ha -abbiamo -avete -hanno -abbia -abbiate -abbiano -avrò -avrai -avrà -avremo -avrete -avranno -avrei -avresti -avrebbe -avremmo -avreste -avrebbero -avevo -avevi -aveva -avevamo -avevate -avevano -ebbi -avesti -ebbe -avemmo -aveste -ebbero -avessi -avesse -avessimo -avessero -avendo -avuto -avuta -avuti -avute - - | forms of essere, to be (not including the infinitive): -sono -sei -è -siamo -siete -sia -siate -siano -sarò -sarai -sarà -saremo -sarete -saranno -sarei -saresti -sarebbe -saremmo -sareste -sarebbero -ero -eri -era -eravamo -eravate -erano -fui -fosti -fu -fummo -foste -furono -fossi -fosse -fossimo -fossero -essendo - - | forms of fare, to do (not including the infinitive, fa, fat-): -faccio -fai -facciamo -fanno -faccia -facciate -facciano -farò -farai -farà -faremo -farete -faranno -farei -faresti -farebbe -faremmo -fareste -farebbero -facevo -facevi -faceva -facevamo -facevate -facevano -feci -facesti -fece -facemmo -faceste -fecero -facessi -facesse -facessimo -facessero -facendo - - | forms of stare, to be (not including the infinitive): -sto -stai -sta -stiamo -stanno -stia -stiate -stiano -starò -starai -starà -staremo -starete -staranno -starei -staresti -starebbe -staremmo -stareste -starebbero -stavo -stavi -stava -stavamo -stavate -stavano -stetti -stesti -stette -stemmo -steste -stettero -stessi -stesse -stessimo -stessero -stando diff --git a/solr/example/files/conf/lang/stopwords_ja.txt b/solr/example/files/conf/lang/stopwords_ja.txt deleted file mode 100644 index d4321be6b16..00000000000 --- a/solr/example/files/conf/lang/stopwords_ja.txt +++ /dev/null @@ -1,127 +0,0 @@ -# -# This file defines a stopword set for Japanese. -# -# This set is made up of hand-picked frequent terms from segmented Japanese Wikipedia. -# Punctuation characters and frequent kanji have mostly been left out. See LUCENE-3745 -# for frequency lists, etc. that can be useful for making your own set (if desired) -# -# Note that there is an overlap between these stopwords and the terms stopped when used -# in combination with the JapanesePartOfSpeechStopFilter. When editing this file, note -# that comments are not allowed on the same line as stopwords. -# -# Also note that stopping is done in a case-insensitive manner. Change your StopFilter -# configuration if you need case-sensitive stopping. Lastly, note that stopping is done -# using the same character width as the entries in this file. Since this StopFilter is -# normally done after a CJKWidthFilter in your chain, you would usually want your romaji -# entries to be in half-width and your kana entries to be in full-width. -# -の -に -は -を -た -が -で -て -と -し -れ -さ -ある -いる -も -する -から -な -こと -として -い -や -れる -など -なっ -ない -この -ため -その -あっ -よう -また -もの -という -あり -まで -られ -なる -へ -か -だ -これ -によって -により -おり -より -による -ず -なり -られる -において -ば -なかっ -なく -しかし -について -せ -だっ -その後 -できる -それ -う -ので -なお -のみ -でき -き -つ -における -および -いう -さらに -でも -ら -たり -その他 -に関する -たち -ます -ん -なら -に対して -特に -せる -及び -これら -とき -では -にて -ほか -ながら -うち -そして -とともに -ただし -かつて -それぞれ -または -お -ほど -ものの -に対する -ほとんど -と共に -といった -です -とも -ところ -ここ -##### End of file diff --git a/solr/example/files/conf/lang/stopwords_lv.txt b/solr/example/files/conf/lang/stopwords_lv.txt deleted file mode 100644 index e21a23c06c3..00000000000 --- a/solr/example/files/conf/lang/stopwords_lv.txt +++ /dev/null @@ -1,172 +0,0 @@ -# Set of Latvian stopwords from A Stemming Algorithm for Latvian, Karlis Kreslins -# the original list of over 800 forms was refined: -# pronouns, adverbs, interjections were removed -# -# prepositions -aiz -ap -ar -apakš -ārpus -augšpus -bez -caur -dēļ -gar -iekš -iz -kopš -labad -lejpus -līdz -no -otrpus -pa -par -pār -pēc -pie -pirms -pret -priekš -starp -šaipus -uz -viņpus -virs -virspus -zem -apakšpus -# Conjunctions -un -bet -jo -ja -ka -lai -tomēr -tikko -turpretī -arī -kaut -gan -tādēļ -tā -ne -tikvien -vien -kā -ir -te -vai -kamēr -# Particles -ar -diezin -droši -diemžēl -nebūt -ik -it -taču -nu -pat -tiklab -iekšpus -nedz -tik -nevis -turpretim -jeb -iekam -iekām -iekāms -kolīdz -līdzko -tiklīdz -jebšu -tālab -tāpēc -nekā -itin -jā -jau -jel -nē -nezin -tad -tikai -vis -tak -iekams -vien -# modal verbs -būt -biju -biji -bija -bijām -bijāt -esmu -esi -esam -esat -būšu -būsi -būs -būsim -būsiet -tikt -tiku -tiki -tika -tikām -tikāt -tieku -tiec -tiek -tiekam -tiekat -tikšu -tiks -tiksim -tiksiet -tapt -tapi -tapāt -topat -tapšu -tapsi -taps -tapsim -tapsiet -kļūt -kļuvu -kļuvi -kļuva -kļuvām -kļuvāt -kļūstu -kļūsti -kļūst -kļūstam -kļūstat -kļūšu -kļūsi -kļūs -kļūsim -kļūsiet -# verbs -varēt -varēju -varējām -varēšu -varēsim -var -varēji -varējāt -varēsi -varēsiet -varat -varēja -varēs diff --git a/solr/example/files/conf/lang/stopwords_nl.txt b/solr/example/files/conf/lang/stopwords_nl.txt deleted file mode 100644 index 47a2aeacf6f..00000000000 --- a/solr/example/files/conf/lang/stopwords_nl.txt +++ /dev/null @@ -1,119 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/dutch/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Dutch stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - | This is a ranked list (commonest to rarest) of stopwords derived from - | a large sample of Dutch text. - - | Dutch stop words frequently exhibit homonym clashes. These are indicated - | clearly below. - -de | the -en | and -van | of, from -ik | I, the ego -te | (1) chez, at etc, (2) to, (3) too -dat | that, which -die | that, those, who, which -in | in, inside -een | a, an, one -hij | he -het | the, it -niet | not, nothing, naught -zijn | (1) to be, being, (2) his, one's, its -is | is -was | (1) was, past tense of all persons sing. of 'zijn' (to be) (2) wax, (3) the washing, (4) rise of river -op | on, upon, at, in, up, used up -aan | on, upon, to (as dative) -met | with, by -als | like, such as, when -voor | (1) before, in front of, (2) furrow -had | had, past tense all persons sing. of 'hebben' (have) -er | there -maar | but, only -om | round, about, for etc -hem | him -dan | then -zou | should/would, past tense all persons sing. of 'zullen' -of | or, whether, if -wat | what, something, anything -mijn | possessive and noun 'mine' -men | people, 'one' -dit | this -zo | so, thus, in this way -door | through by -over | over, across -ze | she, her, they, them -zich | oneself -bij | (1) a bee, (2) by, near, at -ook | also, too -tot | till, until -je | you -mij | me -uit | out of, from -der | Old Dutch form of 'van der' still found in surnames -daar | (1) there, (2) because -haar | (1) her, their, them, (2) hair -naar | (1) unpleasant, unwell etc, (2) towards, (3) as -heb | present first person sing. of 'to have' -hoe | how, why -heeft | present third person sing. of 'to have' -hebben | 'to have' and various parts thereof -deze | this -u | you -want | (1) for, (2) mitten, (3) rigging -nog | yet, still -zal | 'shall', first and third person sing. of verb 'zullen' (will) -me | me -zij | she, they -nu | now -ge | 'thou', still used in Belgium and south Netherlands -geen | none -omdat | because -iets | something, somewhat -worden | to become, grow, get -toch | yet, still -al | all, every, each -waren | (1) 'were' (2) to wander, (3) wares, (3) -veel | much, many -meer | (1) more, (2) lake -doen | to do, to make -toen | then, when -moet | noun 'spot/mote' and present form of 'to must' -ben | (1) am, (2) 'are' in interrogative second person singular of 'to be' -zonder | without -kan | noun 'can' and present form of 'to be able' -hun | their, them -dus | so, consequently -alles | all, everything, anything -onder | under, beneath -ja | yes, of course -eens | once, one day -hier | here -wie | who -werd | imperfect third person sing. of 'become' -altijd | always -doch | yet, but etc -wordt | present third person sing. of 'become' -wezen | (1) to be, (2) 'been' as in 'been fishing', (3) orphans -kunnen | to be able -ons | us/our -zelf | self -tegen | against, towards, at -na | after, near -reeds | already -wil | (1) present tense of 'want', (2) 'will', noun, (3) fender -kon | could; past tense of 'to be able' -niets | nothing -uw | your -iemand | somebody -geweest | been; past participle of 'be' -andere | other diff --git a/solr/example/files/conf/lang/stopwords_no.txt b/solr/example/files/conf/lang/stopwords_no.txt deleted file mode 100644 index a7a2c28ba54..00000000000 --- a/solr/example/files/conf/lang/stopwords_no.txt +++ /dev/null @@ -1,194 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/norwegian/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Norwegian stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - | This stop word list is for the dominant bokmål dialect. Words unique - | to nynorsk are marked *. - - | Revised by Jan Bruusgaard , Jan 2005 - -og | and -i | in -jeg | I -det | it/this/that -at | to (w. inf.) -en | a/an -et | a/an -den | it/this/that -til | to -er | is/am/are -som | who/that -på | on -de | they / you(formal) -med | with -han | he -av | of -ikke | not -ikkje | not * -der | there -så | so -var | was/were -meg | me -seg | you -men | but -ett | one -har | have -om | about -vi | we -min | my -mitt | my -ha | have -hadde | had -hun | she -nå | now -over | over -da | when/as -ved | by/know -fra | from -du | you -ut | out -sin | your -dem | them -oss | us -opp | up -man | you/one -kan | can -hans | his -hvor | where -eller | or -hva | what -skal | shall/must -selv | self (reflective) -sjøl | self (reflective) -her | here -alle | all -vil | will -bli | become -ble | became -blei | became * -blitt | have become -kunne | could -inn | in -når | when -være | be -kom | come -noen | some -noe | some -ville | would -dere | you -som | who/which/that -deres | their/theirs -kun | only/just -ja | yes -etter | after -ned | down -skulle | should -denne | this -for | for/because -deg | you -si | hers/his -sine | hers/his -sitt | hers/his -mot | against -å | to -meget | much -hvorfor | why -dette | this -disse | these/those -uten | without -hvordan | how -ingen | none -din | your -ditt | your -blir | become -samme | same -hvilken | which -hvilke | which (plural) -sånn | such a -inni | inside/within -mellom | between -vår | our -hver | each -hvem | who -vors | us/ours -hvis | whose -både | both -bare | only/just -enn | than -fordi | as/because -før | before -mange | many -også | also -slik | just -vært | been -være | to be -båe | both * -begge | both -siden | since -dykk | your * -dykkar | yours * -dei | they * -deira | them * -deires | theirs * -deim | them * -di | your (fem.) * -då | as/when * -eg | I * -ein | a/an * -eit | a/an * -eitt | a/an * -elles | or * -honom | he * -hjå | at * -ho | she * -hoe | she * -henne | her -hennar | her/hers -hennes | hers -hoss | how * -hossen | how * -ikkje | not * -ingi | noone * -inkje | noone * -korleis | how * -korso | how * -kva | what/which * -kvar | where * -kvarhelst | where * -kven | who/whom * -kvi | why * -kvifor | why * -me | we * -medan | while * -mi | my * -mine | my * -mykje | much * -no | now * -nokon | some (masc./neut.) * -noka | some (fem.) * -nokor | some * -noko | some * -nokre | some * -si | his/hers * -sia | since * -sidan | since * -so | so * -somt | some * -somme | some * -um | about* -upp | up * -vere | be * -vore | was * -verte | become * -vort | become * -varte | became * -vart | became * - diff --git a/solr/example/files/conf/lang/stopwords_pt.txt b/solr/example/files/conf/lang/stopwords_pt.txt deleted file mode 100644 index acfeb01af6b..00000000000 --- a/solr/example/files/conf/lang/stopwords_pt.txt +++ /dev/null @@ -1,253 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/portuguese/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Portuguese stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - - | The following is a ranked list (commonest to rarest) of stopwords - | deriving from a large sample of text. - - | Extra words have been added at the end. - -de | of, from -a | the; to, at; her -o | the; him -que | who, that -e | and -do | de + o -da | de + a -em | in -um | a -para | for - | é from SER -com | with -não | not, no -uma | a -os | the; them -no | em + o -se | himself etc -na | em + a -por | for -mais | more -as | the; them -dos | de + os -como | as, like -mas | but - | foi from SER -ao | a + o -ele | he -das | de + as - | tem from TER -à | a + a -seu | his -sua | her -ou | or - | ser from SER -quando | when -muito | much - | há from HAV -nos | em + os; us -já | already, now - | está from EST -eu | I -também | also -só | only, just -pelo | per + o -pela | per + a -até | up to -isso | that -ela | he -entre | between - | era from SER -depois | after -sem | without -mesmo | same -aos | a + os - | ter from TER -seus | his -quem | whom -nas | em + as -me | me -esse | that -eles | they - | estão from EST -você | you - | tinha from TER - | foram from SER -essa | that -num | em + um -nem | nor -suas | her -meu | my -às | a + as -minha | my - | têm from TER -numa | em + uma -pelos | per + os -elas | they - | havia from HAV - | seja from SER -qual | which - | será from SER -nós | we - | tenho from TER -lhe | to him, her -deles | of them -essas | those -esses | those -pelas | per + as -este | this - | fosse from SER -dele | of him - - | other words. There are many contractions such as naquele = em+aquele, - | mo = me+o, but they are rare. - | Indefinite article plural forms are also rare. - -tu | thou -te | thee -vocês | you (plural) -vos | you -lhes | to them -meus | my -minhas -teu | thy -tua -teus -tuas -nosso | our -nossa -nossos -nossas - -dela | of her -delas | of them - -esta | this -estes | these -estas | these -aquele | that -aquela | that -aqueles | those -aquelas | those -isto | this -aquilo | that - - | forms of estar, to be (not including the infinitive): -estou -está -estamos -estão -estive -esteve -estivemos -estiveram -estava -estávamos -estavam -estivera -estivéramos -esteja -estejamos -estejam -estivesse -estivéssemos -estivessem -estiver -estivermos -estiverem - - | forms of haver, to have (not including the infinitive): -hei -há -havemos -hão -houve -houvemos -houveram -houvera -houvéramos -haja -hajamos -hajam -houvesse -houvéssemos -houvessem -houver -houvermos -houverem -houverei -houverá -houveremos -houverão -houveria -houveríamos -houveriam - - | forms of ser, to be (not including the infinitive): -sou -somos -são -era -éramos -eram -fui -foi -fomos -foram -fora -fôramos -seja -sejamos -sejam -fosse -fôssemos -fossem -for -formos -forem -serei -será -seremos -serão -seria -seríamos -seriam - - | forms of ter, to have (not including the infinitive): -tenho -tem -temos -tém -tinha -tínhamos -tinham -tive -teve -tivemos -tiveram -tivera -tivéramos -tenha -tenhamos -tenham -tivesse -tivéssemos -tivessem -tiver -tivermos -tiverem -terei -terá -teremos -terão -teria -teríamos -teriam diff --git a/solr/example/files/conf/lang/stopwords_ro.txt b/solr/example/files/conf/lang/stopwords_ro.txt deleted file mode 100644 index 4fdee90a5ba..00000000000 --- a/solr/example/files/conf/lang/stopwords_ro.txt +++ /dev/null @@ -1,233 +0,0 @@ -# This file was created by Jacques Savoy and is distributed under the BSD license. -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# Also see http://www.opensource.org/licenses/bsd-license.html -acea -aceasta -această -aceea -acei -aceia -acel -acela -acele -acelea -acest -acesta -aceste -acestea -aceşti -aceştia -acolo -acum -ai -aia -aibă -aici -al -ăla -ale -alea -ălea -altceva -altcineva -am -ar -are -aş -aşadar -asemenea -asta -ăsta -astăzi -astea -ăstea -ăştia -asupra -aţi -au -avea -avem -aveţi -azi -bine -bucur -bună -ca -că -căci -când -care -cărei -căror -cărui -cât -câte -câţi -către -câtva -ce -cel -ceva -chiar -cînd -cine -cineva -cît -cîte -cîţi -cîtva -contra -cu -cum -cumva -curând -curînd -da -dă -dacă -dar -datorită -de -deci -deja -deoarece -departe -deşi -din -dinaintea -dintr -dintre -drept -după -ea -ei -el -ele -eram -este -eşti -eu -face -fără -fi -fie -fiecare -fii -fim -fiţi -iar -ieri -îi -îl -îmi -împotriva -în -înainte -înaintea -încât -încît -încotro -între -întrucât -întrucît -îţi -la -lângă -le -li -lîngă -lor -lui -mă -mâine -mea -mei -mele -mereu -meu -mi -mine -mult -multă -mulţi -ne -nicăieri -nici -nimeni -nişte -noastră -noastre -noi -noştri -nostru -nu -ori -oricând -oricare -oricât -orice -oricînd -oricine -oricît -oricum -oriunde -până -pe -pentru -peste -pînă -poate -pot -prea -prima -primul -prin -printr -sa -să -săi -sale -sau -său -se -şi -sînt -sîntem -sînteţi -spre -sub -sunt -suntem -sunteţi -ta -tăi -tale -tău -te -ţi -ţie -tine -toată -toate -tot -toţi -totuşi -tu -un -una -unde -undeva -unei -unele -uneori -unor -vă -vi -voastră -voastre -voi -voştri -vostru -vouă -vreo -vreun diff --git a/solr/example/files/conf/lang/stopwords_ru.txt b/solr/example/files/conf/lang/stopwords_ru.txt deleted file mode 100644 index 55271400c64..00000000000 --- a/solr/example/files/conf/lang/stopwords_ru.txt +++ /dev/null @@ -1,243 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/russian/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | a russian stop word list. comments begin with vertical bar. each stop - | word is at the start of a line. - - | this is a ranked list (commonest to rarest) of stopwords derived from - | a large text sample. - - | letter `ё' is translated to `е'. - -и | and -в | in/into -во | alternative form -не | not -что | what/that -он | he -на | on/onto -я | i -с | from -со | alternative form -как | how -а | milder form of `no' (but) -то | conjunction and form of `that' -все | all -она | she -так | so, thus -его | him -но | but -да | yes/and -ты | thou -к | towards, by -у | around, chez -же | intensifier particle -вы | you -за | beyond, behind -бы | conditional/subj. particle -по | up to, along -только | only -ее | her -мне | to me -было | it was -вот | here is/are, particle -от | away from -меня | me -еще | still, yet, more -нет | no, there isnt/arent -о | about -из | out of -ему | to him -теперь | now -когда | when -даже | even -ну | so, well -вдруг | suddenly -ли | interrogative particle -если | if -уже | already, but homonym of `narrower' -или | or -ни | neither -быть | to be -был | he was -него | prepositional form of его -до | up to -вас | you accusative -нибудь | indef. suffix preceded by hyphen -опять | again -уж | already, but homonym of `adder' -вам | to you -сказал | he said -ведь | particle `after all' -там | there -потом | then -себя | oneself -ничего | nothing -ей | to her -может | usually with `быть' as `maybe' -они | they -тут | here -где | where -есть | there is/are -надо | got to, must -ней | prepositional form of ей -для | for -мы | we -тебя | thee -их | them, their -чем | than -была | she was -сам | self -чтоб | in order to -без | without -будто | as if -человек | man, person, one -чего | genitive form of `what' -раз | once -тоже | also -себе | to oneself -под | beneath -жизнь | life -будет | will be -ж | short form of intensifer particle `же' -тогда | then -кто | who -этот | this -говорил | was saying -того | genitive form of `that' -потому | for that reason -этого | genitive form of `this' -какой | which -совсем | altogether -ним | prepositional form of `его', `они' -здесь | here -этом | prepositional form of `этот' -один | one -почти | almost -мой | my -тем | instrumental/dative plural of `тот', `то' -чтобы | full form of `in order that' -нее | her (acc.) -кажется | it seems -сейчас | now -были | they were -куда | where to -зачем | why -сказать | to say -всех | all (acc., gen. preposn. plural) -никогда | never -сегодня | today -можно | possible, one can -при | by -наконец | finally -два | two -об | alternative form of `о', about -другой | another -хоть | even -после | after -над | above -больше | more -тот | that one (masc.) -через | across, in -эти | these -нас | us -про | about -всего | in all, only, of all -них | prepositional form of `они' (they) -какая | which, feminine -много | lots -разве | interrogative particle -сказала | she said -три | three -эту | this, acc. fem. sing. -моя | my, feminine -впрочем | moreover, besides -хорошо | good -свою | ones own, acc. fem. sing. -этой | oblique form of `эта', fem. `this' -перед | in front of -иногда | sometimes -лучше | better -чуть | a little -том | preposn. form of `that one' -нельзя | one must not -такой | such a one -им | to them -более | more -всегда | always -конечно | of course -всю | acc. fem. sing of `all' -между | between - - - | b: some paradigms - | - | personal pronouns - | - | я меня мне мной [мною] - | ты тебя тебе тобой [тобою] - | он его ему им [него, нему, ним] - | она ее эи ею [нее, нэи, нею] - | оно его ему им [него, нему, ним] - | - | мы нас нам нами - | вы вас вам вами - | они их им ими [них, ним, ними] - | - | себя себе собой [собою] - | - | demonstrative pronouns: этот (this), тот (that) - | - | этот эта это эти - | этого эты это эти - | этого этой этого этих - | этому этой этому этим - | этим этой этим [этою] этими - | этом этой этом этих - | - | тот та то те - | того ту то те - | того той того тех - | тому той тому тем - | тем той тем [тою] теми - | том той том тех - | - | determinative pronouns - | - | (a) весь (all) - | - | весь вся все все - | всего всю все все - | всего всей всего всех - | всему всей всему всем - | всем всей всем [всею] всеми - | всем всей всем всех - | - | (b) сам (himself etc) - | - | сам сама само сами - | самого саму само самих - | самого самой самого самих - | самому самой самому самим - | самим самой самим [самою] самими - | самом самой самом самих - | - | stems of verbs `to be', `to have', `to do' and modal - | - | быть бы буд быв есть суть - | име - | дел - | мог мож мочь - | уме - | хоч хот - | долж - | можн - | нужн - | нельзя - diff --git a/solr/example/files/conf/lang/stopwords_sv.txt b/solr/example/files/conf/lang/stopwords_sv.txt deleted file mode 100644 index 096f87f6766..00000000000 --- a/solr/example/files/conf/lang/stopwords_sv.txt +++ /dev/null @@ -1,133 +0,0 @@ - | From svn.tartarus.org/snowball/trunk/website/algorithms/swedish/stop.txt - | This file is distributed under the BSD License. - | See http://snowball.tartarus.org/license.php - | Also see http://www.opensource.org/licenses/bsd-license.html - | - Encoding was converted to UTF-8. - | - This notice was added. - | - | NOTE: To use this file with StopFilterFactory, you must specify format="snowball" - - | A Swedish stop word list. Comments begin with vertical bar. Each stop - | word is at the start of a line. - - | This is a ranked list (commonest to rarest) of stopwords derived from - | a large text sample. - - | Swedish stop words occasionally exhibit homonym clashes. For example - | så = so, but also seed. These are indicated clearly below. - -och | and -det | it, this/that -att | to (with infinitive) -i | in, at -en | a -jag | I -hon | she -som | who, that -han | he -på | on -den | it, this/that -med | with -var | where, each -sig | him(self) etc -för | for -så | so (also: seed) -till | to -är | is -men | but -ett | a -om | if; around, about -hade | had -de | they, these/those -av | of -icke | not, no -mig | me -du | you -henne | her -då | then, when -sin | his -nu | now -har | have -inte | inte någon = no one -hans | his -honom | him -skulle | 'sake' -hennes | her -där | there -min | my -man | one (pronoun) -ej | nor -vid | at, by, on (also: vast) -kunde | could -något | some etc -från | from, off -ut | out -när | when -efter | after, behind -upp | up -vi | we -dem | them -vara | be -vad | what -över | over -än | than -dig | you -kan | can -sina | his -här | here -ha | have -mot | towards -alla | all -under | under (also: wonder) -någon | some etc -eller | or (else) -allt | all -mycket | much -sedan | since -ju | why -denna | this/that -själv | myself, yourself etc -detta | this/that -åt | to -utan | without -varit | was -hur | how -ingen | no -mitt | my -ni | you -bli | to be, become -blev | from bli -oss | us -din | thy -dessa | these/those -några | some etc -deras | their -blir | from bli -mina | my -samma | (the) same -vilken | who, that -er | you, your -sådan | such a -vår | our -blivit | from bli -dess | its -inom | within -mellan | between -sådant | such a -varför | why -varje | each -vilka | who, that -ditt | thy -vem | who -vilket | who, that -sitta | his -sådana | such a -vart | each -dina | thy -vars | whose -vårt | our -våra | our -ert | your -era | your -vilkas | whose - diff --git a/solr/example/files/conf/lang/stopwords_th.txt b/solr/example/files/conf/lang/stopwords_th.txt deleted file mode 100644 index 07f0fabe692..00000000000 --- a/solr/example/files/conf/lang/stopwords_th.txt +++ /dev/null @@ -1,119 +0,0 @@ -# Thai stopwords from: -# "Opinion Detection in Thai Political News Columns -# Based on Subjectivity Analysis" -# Khampol Sukhum, Supot Nitsuwat, and Choochart Haruechaiyasak -ไว้ -ไม่ -ไป -ได้ -ให้ -ใน -โดย -แห่ง -แล้ว -และ -แรก -แบบ -แต่ -เอง -เห็น -เลย -เริ่ม -เรา -เมื่อ -เพื่อ -เพราะ -เป็นการ -เป็น -เปิดเผย -เปิด -เนื่องจาก -เดียวกัน -เดียว -เช่น -เฉพาะ -เคย -เข้า -เขา -อีก -อาจ -อะไร -ออก -อย่าง -อยู่ -อยาก -หาก -หลาย -หลังจาก -หลัง -หรือ -หนึ่ง -ส่วน -ส่ง -สุด -สําหรับ -ว่า -วัน -ลง -ร่วม -ราย -รับ -ระหว่าง -รวม -ยัง -มี -มาก -มา -พร้อม -พบ -ผ่าน -ผล -บาง -น่า -นี้ -นํา -นั้น -นัก -นอกจาก -ทุก -ที่สุด -ที่ -ทําให้ -ทํา -ทาง -ทั้งนี้ -ทั้ง -ถ้า -ถูก -ถึง -ต้อง -ต่างๆ -ต่าง -ต่อ -ตาม -ตั้งแต่ -ตั้ง -ด้าน -ด้วย -ดัง -ซึ่ง -ช่วง -จึง -จาก -จัด -จะ -คือ -ความ -ครั้ง -คง -ขึ้น -ของ -ขอ -ขณะ -ก่อน -ก็ -การ -กับ -กัน -กว่า -กล่าว diff --git a/solr/example/files/conf/lang/stopwords_tr.txt b/solr/example/files/conf/lang/stopwords_tr.txt deleted file mode 100644 index 84d9408d4ea..00000000000 --- a/solr/example/files/conf/lang/stopwords_tr.txt +++ /dev/null @@ -1,212 +0,0 @@ -# Turkish stopwords from LUCENE-559 -# merged with the list from "Information Retrieval on Turkish Texts" -# (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf) -acaba -altmış -altı -ama -ancak -arada -aslında -ayrıca -bana -bazı -belki -ben -benden -beni -benim -beri -beş -bile -bin -bir -birçok -biri -birkaç -birkez -birşey -birşeyi -biz -bize -bizden -bizi -bizim -böyle -böylece -bu -buna -bunda -bundan -bunlar -bunları -bunların -bunu -bunun -burada -çok -çünkü -da -daha -dahi -de -defa -değil -diğer -diye -doksan -dokuz -dolayı -dolayısıyla -dört -edecek -eden -ederek -edilecek -ediliyor -edilmesi -ediyor -eğer -elli -en -etmesi -etti -ettiği -ettiğini -gibi -göre -halen -hangi -hatta -hem -henüz -hep -hepsi -her -herhangi -herkesin -hiç -hiçbir -için -iki -ile -ilgili -ise -işte -itibaren -itibariyle -kadar -karşın -katrilyon -kendi -kendilerine -kendini -kendisi -kendisine -kendisini -kez -ki -kim -kimden -kime -kimi -kimse -kırk -milyar -milyon -mu -mü -mı -nasıl -ne -neden -nedenle -nerde -nerede -nereye -niye -niçin -o -olan -olarak -oldu -olduğu -olduğunu -olduklarını -olmadı -olmadığı -olmak -olması -olmayan -olmaz -olsa -olsun -olup -olur -olursa -oluyor -on -ona -ondan -onlar -onlardan -onları -onların -onu -onun -otuz -oysa -öyle -pek -rağmen -sadece -sanki -sekiz -seksen -sen -senden -seni -senin -siz -sizden -sizi -sizin -şey -şeyden -şeyi -şeyler -şöyle -şu -şuna -şunda -şundan -şunları -şunu -tarafından -trilyon -tüm -üç -üzere -var -vardı -ve -veya -ya -yani -yapacak -yapılan -yapılması -yapıyor -yapmak -yaptı -yaptığı -yaptığını -yaptıkları -yedi -yerine -yetmiş -yine -yirmi -yoksa -yüz -zaten diff --git a/solr/example/files/conf/lang/userdict_ja.txt b/solr/example/files/conf/lang/userdict_ja.txt deleted file mode 100644 index 6f0368e4d81..00000000000 --- a/solr/example/files/conf/lang/userdict_ja.txt +++ /dev/null @@ -1,29 +0,0 @@ -# -# This is a sample user dictionary for Kuromoji (JapaneseTokenizer) -# -# Add entries to this file in order to override the statistical model in terms -# of segmentation, readings and part-of-speech tags. Notice that entries do -# not have weights since they are always used when found. This is by-design -# in order to maximize ease-of-use. -# -# Entries are defined using the following CSV format: -# , ... , ... , -# -# Notice that a single half-width space separates tokens and readings, and -# that the number tokens and readings must match exactly. -# -# Also notice that multiple entries with the same is undefined. -# -# Whitespace only lines are ignored. Comments are not allowed on entry lines. -# - -# Custom segmentation for kanji compounds -日本経済新聞,日本 経済 新聞,ニホン ケイザイ シンブン,カスタム名詞 -関西国際空港,関西 国際 空港,カンサイ コクサイ クウコウ,カスタム名詞 - -# Custom segmentation for compound katakana -トートバッグ,トート バッグ,トート バッグ,かずカナ名詞 -ショルダーバッグ,ショルダー バッグ,ショルダー バッグ,かずカナ名詞 - -# Custom reading for former sumo wrestler -朝青龍,朝青龍,アサショウリュウ,カスタム人名 diff --git a/solr/example/files/conf/managed-schema b/solr/example/files/conf/managed-schema deleted file mode 100644 index 5ad98831f43..00000000000 --- a/solr/example/files/conf/managed-schema +++ /dev/null @@ -1,520 +0,0 @@ - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/solr/example/files/conf/params.json b/solr/example/files/conf/params.json deleted file mode 100644 index 22aadccdd07..00000000000 --- a/solr/example/files/conf/params.json +++ /dev/null @@ -1,34 +0,0 @@ -{"params":{ - "query":{ - "defType":"edismax", - "q.alt":"*:*", - "rows":"10", - "fl":"*,score", - "":{"v":0}}, - "facets":{ - "facet":"on", - "facet.mincount":"1", - "f.doc_type.facet.mincount":"0", - "facet.field":["text_shingles","{!ex=type}doc_type", "language"], - "f.text_shingles.facet.limit":10, - "facet.query":"{!ex=type key=all_types}*:*", - "f.doc_type.facet.missing":true, - "":{"v":0}}, - "browse":{ - "type_fq":"{!field f=doc_type v=$type}", - "hl":"on", - "hl.fl":"content", - "v.locale":"${locale}", - "debug":"true", - "hl.simple.pre":"HL_START", - "hl.simple.post":"HL_END", - "echoParams": "explicit", - "_appends_": { - "fq": "{!switch v=$type tag=type case='*:*' case.all='*:*' case.unknown='-doc_type:[* TO *]' default=$type_fq}" - }, - "":{"v":0}}, - "velocity":{ - "wt":"velocity", - "v.template":"browse", - "v.layout":"layout", - "":{"v":0}}}} diff --git a/solr/example/files/conf/protwords.txt b/solr/example/files/conf/protwords.txt deleted file mode 100644 index 1dfc0abecbf..00000000000 --- a/solr/example/files/conf/protwords.txt +++ /dev/null @@ -1,21 +0,0 @@ -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -# Use a protected word file to protect against the stemmer reducing two -# unrelated words to the same base word. - -# Some non-words that normally won't be encountered, -# just to test that they won't be stemmed. -dontstems -zwhacky - diff --git a/solr/example/files/conf/solrconfig.xml b/solr/example/files/conf/solrconfig.xml deleted file mode 100644 index 5d7bedd240a..00000000000 --- a/solr/example/files/conf/solrconfig.xml +++ /dev/null @@ -1,1423 +0,0 @@ - - - - - - - - - 9.0.0 - - - - - - - - - - - - - - - - - - - - - - ${solr.data.dir:} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${solr.lock.type:native} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${solr.ulog.dir:} - - - - - 15000 - false - - - - - - - - - - - - - - - - ${solr.max.booleanClauses:1024} - - - - - - - - - - - - - - - - - - - - - - true - - - - - - 20 - - - 200 - - - - - - - - - - - - - - - - false - - - - - - - - - true - - - 75 - - - true - - - 75 - - - - - - - - - - - - - - - - - - - - - - - explicit - 10 - - - - - - - - - - - - - - - - explicit - json - true - - - - - - - - - - - _text_ - - - - - - files-update-processor - - - - - - - /xhtml:html/xhtml:body/descendant:node() - content - attr_meta_ - attr_ - true - - - - - - - - text_general - - - - - - default - text - solr.DirectSolrSpellChecker - - internal - - 0.5 - - 2 - - 1 - - 5 - - 4 - - 0.01 - - - - - - wordbreak - solr.WordBreakSolrSpellChecker - name - true - true - 10 - - - - - - - - - - - - - - - - - default - wordbreak - on - true - 10 - 5 - 5 - true - true - 10 - 5 - - - spellcheck - - - - - - - - - - true - - - tvComponent - - - - - - - - - - - - true - false - - - terms - - - - - - - - string - elevate.xml - - - - - - explicit - - - elevator - - - - - - - - - - - 100 - - - - - - - - 70 - - 0.5 - - [-\w ,/\n\"']{20,200} - - - - - - - ]]> - ]]> - - - - - - - - - - - - - - - - - - - - - - - - ,, - ,, - ,, - ,, - ,]]> - ]]> - - - - - - 10 - .,!? - - - - - - - WORD - - - en - US - - - - - - - - - - - - - - [^\w-\.] - _ - - - - - - - yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z - yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z - yyyy-MM-dd HH:mm[:ss[.SSS]][z - yyyy-MM-dd HH:mm[:ss[,SSS]][z - [EEE, ]dd MMM yyyy HH:mm[:ss] z - EEEE, dd-MMM-yy HH:mm:ss z - EEE MMM ppd HH:mm:ss [z ]yyyy - - - - strings - - java.lang.Boolean - booleans - - - java.util.Date - pdates - - - java.lang.Long - java.lang.Integer - plongs - - - java.lang.Number - pdoubles - - - - - - - content - language - - - - - update-script.js - - - - - - - - - - - - - - - - - - - - - - - - - - text/plain; charset=UTF-8 - - - - - ${velocity.template.base.dir:} - - - - - 5 - - - - - - - - - - - - - - - diff --git a/solr/example/files/conf/stopwords.txt b/solr/example/files/conf/stopwords.txt deleted file mode 100644 index ae1e83eeb3d..00000000000 --- a/solr/example/files/conf/stopwords.txt +++ /dev/null @@ -1,14 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/solr/example/files/conf/synonyms.txt b/solr/example/files/conf/synonyms.txt deleted file mode 100644 index eab4ee87537..00000000000 --- a/solr/example/files/conf/synonyms.txt +++ /dev/null @@ -1,29 +0,0 @@ -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -#some test synonym mappings unlikely to appear in real input text -aaafoo => aaabar -bbbfoo => bbbfoo bbbbar -cccfoo => cccbar cccbaz -fooaaa,baraaa,bazaaa - -# Some synonym groups specific to this example -GB,gib,gigabyte,gigabytes -MB,mib,megabyte,megabytes -Television, Televisions, TV, TVs -#notice we use "gib" instead of "GiB" so any WordDelimiterGraphFilter coming -#after us won't split it into two words. - -# Synonym mappings can be used for spelling correction too -pixima => pixma - diff --git a/solr/example/files/conf/update-script.js b/solr/example/files/conf/update-script.js deleted file mode 100644 index 2589968b50d..00000000000 --- a/solr/example/files/conf/update-script.js +++ /dev/null @@ -1,115 +0,0 @@ -function get_class(name) { - var clazz; - try { - // Java8 Nashorn - clazz = eval("Java.type(name).class"); - } catch(e) { - // Java7 Rhino - clazz = eval("Packages."+name); - } - - return clazz; -} - -function processAdd(cmd) { - - doc = cmd.solrDoc; // org.apache.solr.common.SolrInputDocument - var id = doc.getFieldValue("id"); - logger.info("update-script#processAdd: id=" + id); - - // The idea here is to use the file's content_type value to - // simplify into user-friendly values, such that types of, say, image/jpeg and image/tiff - // are in an "Images" facet - - var ct = doc.getFieldValue("content_type"); - if (ct) { - // strip off semicolon onward - var semicolon_index = ct.indexOf(';'); - if (semicolon_index != -1) { - ct = ct.substring(0,semicolon_index); - } - // and split type/subtype - var ct_type = ct.substring(0,ct.indexOf('/')); - var ct_subtype = ct.substring(ct.indexOf('/')+1); - - var doc_type; - switch(true) { - case /^application\/rtf/.test(ct) || /wordprocessing/.test(ct): - doc_type = "doc"; - break; - - case /html/.test(ct): - doc_type = "html"; - break; - - case /^image\/.*/.test(ct): - doc_type = "image"; - break; - - case /presentation|powerpoint/.test(ct): - doc_type = "presentation"; - break; - - case /spreadsheet|excel/.test(ct): - doc_type = "spreadsheet"; - break; - - case /^application\/pdf/.test(ct): - doc_type = "pdf"; - break; - - case /^text\/plain/.test(ct): - doc_type = "text" - break; - - default: - break; - } - - // TODO: error handling needed? What if there is no slash? - if(doc_type) { doc.setField("doc_type", doc_type); } - doc.setField("content_type_type_s", ct_type); - doc.setField("content_type_subtype_s", ct_subtype); - } - - var content = doc.getFieldValue("content"); - if (!content) { - return; //No content found, so we are done here - } - - var analyzer = - req.getCore().getLatestSchema() - .getFieldTypeByName("text_email_url") - .getIndexAnalyzer(); - - var token_stream = - analyzer.tokenStream("content", content); - var term_att = token_stream.getAttribute(get_class("org.apache.lucene.analysis.tokenattributes.CharTermAttribute")); - var type_att = token_stream.getAttribute(get_class("org.apache.lucene.analysis.tokenattributes.TypeAttribute")); - token_stream.reset(); - while (token_stream.incrementToken()) { - doc.addField(type_att.type().replace(/\<|\>/g,'').toLowerCase()+"_ss", term_att.toString()); - } - token_stream.end(); - token_stream.close(); -} - -function processDelete(cmd) { - // no-op -} - -function processMergeIndexes(cmd) { - // no-op -} - -function processCommit(cmd) { - // no-op -} - -function processRollback(cmd) { - // no-op -} - -function finish() { - // no-op -} diff --git a/solr/example/files/conf/velocity/browse.vm b/solr/example/files/conf/velocity/browse.vm deleted file mode 100644 index 535a7713bfd..00000000000 --- a/solr/example/files/conf/velocity/browse.vm +++ /dev/null @@ -1,32 +0,0 @@ -
-
- $resource.find: - - -
- $esc.html($response.response.debug.parsedquery) -
- - - #if("#current_locale"!="")#end - #foreach($fq in $response.responseHeader.params.getAll("fq")) - - #end -
- -
- #foreach($fq in $response.responseHeader.params.getAll("fq")) - #set($previous_fq_count=$velocityCount - 1) - #if($fq != '') - > $fqx - #end - #end -
- -
- - -
- #parse("results.vm") -
- diff --git a/solr/example/files/conf/velocity/dropit.js b/solr/example/files/conf/velocity/dropit.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/solr/example/files/conf/velocity/facet_doc_type.vm b/solr/example/files/conf/velocity/facet_doc_type.vm deleted file mode 100644 index ff471674cab..00000000000 --- a/solr/example/files/conf/velocity/facet_doc_type.vm +++ /dev/null @@ -1,2 +0,0 @@ -## intentionally empty - diff --git a/solr/example/files/conf/velocity/facet_text_shingles.vm b/solr/example/files/conf/velocity/facet_text_shingles.vm deleted file mode 100644 index ddd96933867..00000000000 --- a/solr/example/files/conf/velocity/facet_text_shingles.vm +++ /dev/null @@ -1,12 +0,0 @@ -
- $resource.facet.top_phrases
- -
    - #foreach($facet in $sort.sort($field.values,"name")) -
  • - $facet.name -
  • - - #end -
-
\ No newline at end of file diff --git a/solr/example/files/conf/velocity/facets.vm b/solr/example/files/conf/velocity/facets.vm deleted file mode 100644 index bb27b5cea71..00000000000 --- a/solr/example/files/conf/velocity/facets.vm +++ /dev/null @@ -1,24 +0,0 @@ -#if($response.facetFields.size() > 0) - #foreach($field in $response.facetFields) - #if($field.values.size() > 0) - #if($engine.resourceExists("facet_${field.name}.vm")) - #parse("facet_${field.name}.vm") - #else -
- #label("facet.${field.name}",$field.name)
- - -
- #end - #end - #end ## end if field.values > 0 -#end ## end if facetFields > 0 - - - - - diff --git a/solr/example/files/conf/velocity/footer.vm b/solr/example/files/conf/velocity/footer.vm deleted file mode 100644 index 6cb0096fa16..00000000000 --- a/solr/example/files/conf/velocity/footer.vm +++ /dev/null @@ -1,29 +0,0 @@ -
- -
- - - - toggle debug mode - XML results ## TODO: Add links for other formats, maybe dynamically? - -
- - - - -
-
- Request: -
-    $esc.html($request)
-  
- -
- Debug: -
-    $esc.html($response.response.debug)
-  
-
\ No newline at end of file diff --git a/solr/example/files/conf/velocity/head.vm b/solr/example/files/conf/velocity/head.vm deleted file mode 100644 index a7e9b087828..00000000000 --- a/solr/example/files/conf/velocity/head.vm +++ /dev/null @@ -1,290 +0,0 @@ -Solr browse: #core_name - - - - - - - - - - - - - - diff --git a/solr/example/files/conf/velocity/hit.vm b/solr/example/files/conf/velocity/hit.vm deleted file mode 100644 index 2c658cdd954..00000000000 --- a/solr/example/files/conf/velocity/hit.vm +++ /dev/null @@ -1,77 +0,0 @@ - -#set($docId = $doc.getFirstValue($request.schema.uniqueKeyField.name)) - -## Load Mime-Type List and Mapping -#parse('mime_type_lists.vm') - -## Title -#if($doc.getFieldValue('title')) - #set($title = $esc.html($doc.getFirstValue('title'))) -#else - #set($title = "$doc.getFirstValue('id').substring($math.add(1,$doc.getFirstValue('id').lastIndexOf('/')))") -#end - -## Date -#if($doc.getFieldValue('attr_meta_creation_date')) - #set($date = $esc.html($doc.getFirstValue('attr_meta_creation_date'))) -#else - #set($date = "No date found") -#end - - - -## URL -#if($doc.getFieldValue('url')) - #set($url = $doc.getFieldValue('url')) -#elseif($doc.getFieldValue('resourcename')) - #set($url = "file:///$doc.getFirstValue('resourcename')") -#else - #set($url = "$doc.getFieldValue('id')") -#end - -## Sort out Mime-Type -#set($ct = $doc.getFirstValue('content_type').split(";").get(0)) -#set($filename = $doc.getFirstValue('resourcename')) -#set($filetype = false) -#set($filetype = $mimeExtensionsMap.get($ct)) -#if(!$filetype) - #set($filetype = $filename.substring($filename.lastIndexOf(".")).substring(1)) -#end -#if(!$filetype) - #set($filetype = "file") -#end -#if(!$supportedMimeTypes.contains($filetype)) - #set($filetype = "file") -#end - -
- - - $title - - -
- id: $docId
-
- - #set($pad = "") - #foreach($v in $response.response.highlighting.get($docId).get("content")) - $pad$esc.html($v).replace("HL_START","").replace("HL_END","") - #set($pad = " ... ") - #end - -
- -toggle explain -
-    $esc.html($response.getExplainMap().get($doc.getFirstValue('id')))
-
- -show all fields -
-  #foreach($fieldname in $doc.fieldNames)
-    $fieldname :
-    #foreach($value in $doc.getFieldValues($fieldname))$esc.html($value)#end
-  #end
-
- diff --git a/solr/example/files/conf/velocity/img/english_640.png b/solr/example/files/conf/velocity/img/english_640.png deleted file mode 100644 index 81256a1b8f9767116c6e2e9857860307008cca72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138412 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 z 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 afj49RcZbIpji!MPY&KSx5j7Ux$^QXT{Gyrw diff --git a/solr/example/files/conf/velocity/img/france_640.png b/solr/example/files/conf/velocity/img/france_640.png deleted file mode 100644 index 16d4541902e130fc7fdc028d0ed25be4563a382e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99992 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

vH^Ngv&-QjOPVAkS8*plvB0DPuIW zFbqNign?DUm`h(!_p9LOktAfaa?2TfgGc*GHiUEaE~^k_IOfR!ycc0_qV@O^o|Wer z5)k@H*rVBnqH*ExTWO5e9>zUK%HQ~Yrp4XXr9)%(+KglXuU4vK_d9`X&%VQIZZe#jFip1`u42aN_ zaG3O%NT|tC(j8Ide-EuR%bG-vL-iwvJ;#~Su-x49Pq{kzj14h`;}gE>FH{=*WdOEV zv-vm*<_(?|dfVi=JdxzV<{D5YCtYDH1pe zq^!8gW-^6pmggrn@m;PIfcwhu*WSAw9Ds5ht?_xQ$L8%^394DvISdCSR?|s%Y?10Lp<3L+CKs zsf~~`X^yKBCoU}L>+LbQWR%10^Jis6?WTi6;!29P51RS263J&}@Uiok_E9czx}ja{ zQSc5CbYpZaZ=7PM>y=zU@3P->r|-Wvv4ZGJ=lRj(xreP@NbxE9fQ=0L?IINLf2qtg z1-Ij@N5E3O>g&Tif6%^J*nj4_zg+k1(qVg0F72H=hXK3E3k`x)Lq;eF1Y$rc(laWPt^~6p1T+iJts{K2 z&uO$+MmJ)x>*p-&pTzwT2yB-)sa66IHnKZzG7i_tX7XPt1i2v#ki>AAkDO{h-#Cov zN^cW~qnU!*s*qU%u5kR6;ne0=f9L^(oq%^iYVuj-LT zc=*S6LpeX^)<=2MzK>peXMjf@K(EbtI2TJ*D=(=w$ z%!|Revt2MO4Ab!7_-6*lw=wdanCx#A+{06A`nkpa1qqhtVmyD1kBtAyH9NSE6Gt8x zs%v}PGutJqdch045FQ%o=^Xm!>u*=YG~vKQQR$R&e5^=zP+6;P5<3P{bn62gfGs+< zuNcm}&)t?11y}xJNY(niqSE#`1%eXY{^1{Yu`+0MYhIOSU-}BfKVn^P~HrbO+hFGKu>a(R0{=8Fu-3_ujQZ#9rT`2@H;*U_W82^va@I0 zAgBMHj}o01oWs}9LQgAk5*jiaQ+svMY&Jq2(JVmWP}xCce&Xd3>J8#?{&^#GVdV7c z`2zpX<3zjb9`|-KKj-jJu0P~s#W-7ySCj0yrq*Y80MU7@7H4h>1Jcw2yFY$SCv8qr zXhJV>(~yO3ljxma@lv9{a7!qflszN(n-(FPTl^3D)3TxcHOLq?8!9&`ClEpWLNTjX zW3b#xqGebPdA05G))0$_h2pspKal}?2}Prpgu#9*|q+-wdbE-9x3%r zL2LjHH@Cdcy23FVr1o{Qb7vUw zTd{a&P&g<(Obj0NdIf-KH(nPQ-96PiC*Ah13E0Bx{kh~+q}|}idMjn8lD%|!gJW22 zE9}M{t*EMyuiqhA@NjSS&h?&}@oRd8jKL`LczP;L=rgX^Z7BC1Z|Z~EXFR$2I(1P= zmhOv_@38Jio_odRcS8e>i}x97y&e&U!geI|=2)o-(MBTY$b--dBY{#& z#Z(S-!wwkxa$T(OL~1-9287;A0(wj$TV0SlmcDwjY|0!j5`7N25JmhD27b;NVS8rX zl=n+t;xe4D#XK(vi5~O{6AJ-E4GvjjyOhk2g0po1Mh5zHv0nU1;ee9nclt5>=Di6| z%H;8dnXQN4T2e}d_$lPj2ET6(k3xt%FrD--^tsT>0=szgf9ePIbT)iFJ0_psJqHQ4 zinP7BBpqH6Q9azZ$7kqo~eZ%Wk^5SNZ@zqP-crnecI^X@l0>aA4A4MPa^$Q4)=UJK0QNDpM42=#@D>BAwB)nl!7;4r zEizc<#ajE@GeOdkS_Sl)g^vx5Pv53d;p>IyRyk*_X6d;{g*WS)t})Ljecql9M!DX2 zp`Fd$L73x1kRVO_o!{-$oS>9^W;~ygQgget(wjl$ob(A^K zZ>2|O=V-4jFDgyzZbeRM#y(Gbab)`x(Bg;UZ0P+&!}{RGpQG!CxFEggxAzRu)a{cd zl&%$xuUzK+f)em8DE~9~yliRxE=MG@PFS+Vh?YPc>F_Zbio28-#;#C=No8;AxGEMj zOrESIOOadNsu0Ln1eS$gxuId}iWNg_WLRtu6~LfG<~clG#t2M8lE;*Y;PzIP z!-NPY9uQGS`4Wiaija4qot%zK2UYL3N!*2T|#MR02%zxQZ=sqUqJ);#es zXreanziJR2QBcS)r^Qp|#Rpf%*8+Ed)eZfW>lQT2croD>s`#^*jtpzc$wsq&4t3+1 zyl4@OG-cLm`3=J2bH$fbdl*?+0&vvrl&hO;BagSqWv2S)8_)v6lb{ezEz^Vx_l;L2 zo2HE!<55XW&GGKLAlAgO-7Uq8R0Z1xZj(f~X`NT%!xgyggMvWetMWf4s9dvq@Ypb@E%&|iv z#Lmkb6yzp2m?Fg75`LLu_&SH`1AH=qESYI(?RA$3>@@E5PC+1`&F|rh)X3D@$&sqe zpQhH=>+ozU_IP|asP$(lH;)^@O#v2SOPJ&9fth)`e1L#|!rO|#jOH!wA&`1w@*1Cp ze?4PWUAplDp6oVih8O(LVi)xXqVvB=i;R?oK`}z%FKS=%Yras*TFPExcQT>DB9U2- zcB*EJr1$!XQ5hE^$_fsqUs%gfrUL67C7qB#wXj2mSGYm^hS!b@3lgfctZLdyf~*}Y zbS_nzbb9*q^5*g>!;obA_9Q1QE2q!n=q|WBR*<*_8z+~He3L-#{vX(T){_?AmWG7> zP)a+*@;53iQI#xM;>HJJwUGmuW@AODlS@bh`YEAe`9lts%7lc&I_dDV(Tp;dZKm^B zH$Ll%6|&7@)CEiG(^11Y=D;tb`0l0l6Z=>9mQg_aKMv1FkIZKn%;)YkGX*R4?IrHo zroMcv&Yixx(&)Cr@LONirfE{(KEb>c(5t3R=zXV+lT&*9G4uf2&GVIR-6JdQ$Rd^S zH&&>crO8tM&pUlN)19`sG!s6-83P9MV?>n-Cw|$$;7}5G5sq^~OSt$}4lI~&#Wyfh zMTNm zbgc;|wYJ$UfSJR*J;=f5Ee?WC@D~f9<0amAijSr=ik8&<3xSvyu`3HJg8C`X(R}zd zJy5RcCkXb-jD`KjNLyRMf#s|pyKBu`Bo%oKYq zKLuKW%KGwjt3UjDr&d%2rs4fH0I_Y+C|J3O5H zYl>y|zI);V>O_$l8Of2)(N!GqpQ>juTX-v#W@@FxJ(6$Uf=9=-=x6S)tlE?pucWiu z5lIT;8*1wDMnp%U_~Kw7v6eZ%hfa#hc5|aA@0!Sb2&K%$je-^aDW}CyxuZa^RD^cW z=!7X-S%V#1Wt&tK4oeB)2L1ItD1m$lp19zaQQ9Y{IWa2CLVcZfZ)mMMRs_*@lqR`;zL_ivz4BT<_J^y2}zU%`arMtEiXTw8FQJKEzMilT$N?W-)yX->9+5qh(NsA~U_z+Enu z?K)gGI#iibLS?meqa0~7%Y#i^!JY*WP|x1OWZo~vjwL6_N97u8(1R=0i6BMxx1ogU z2)I`fX2uALZxLsGdk)WjX36JgP@>keP^+2-b?y^M;~$=y%>!W)#__7)#f@)#(L1jb zOb((_jU*Z{$e_fK!5PEE<4kHuK;#jC5LN^(*@CJpF8aik8}^8utG=1d*_q8P%eDdW zt#d(duh>I(U-dVuF(Izc%Wt|P+FV5P0fO$w*7qh>-(1pag^E`_>mRy+BDIYeoZL;$ zu(31i$zPjSL77(YnS-;>uf%oh`mD`3Y{SN##oaXmKXITu@C!8lGr_MtJDF~^nFATEG$Z|vm5rzXJDME35FbP&hy9q4HJT8Z8!Ws6YbKE6j4T7h z#l=PCTSt4{+#^fBs?ooS8?GH1B-D4HzUkT|Zb@pz(z9HV0oBi~5)(|r!^Uti!p7+m zOiFN&HV>2N-$t4J7$fG$N2(Wo3W%*p4)=GWl{2eiki9rxeD= z#(-e#Bb`pvLnk2!^3Vi>9j44-oL&}DFWKU2Z9z-Vl=Xr`2f&LW`_wGnJWBG!6QD(a zmJ%2d3(!IbQZn^TFxNLE;De*NruqigR=(jf0|wVTsb#>hJlJq1VFn^Dges_XcmvzV zgR&^~QOJ4|DG2|)awuP%1zz5j{g~n;H2sOBihD>OU0j{4q0h+dm;3b-@tzWec|L@rxk&Uq(h;AU5hu@wWYEldcV4nd z%%Gpl8!Be7ir&elI%%iw9$drBDN!D*;4W7=UA? z1%?`oDU|w|RfYF6zi~lBx?Q%a_YNBssr8=s=o&gwx{2h9uuu&- zEi2=uLJzP4zlz;eX)F;GUu|YZx&p{AD~Arp(8;#YfuyYC$LdSP^7!>elDQx4|CTfp zW3um#q?%;LwG-#&N1%P5y!;Jsqm(03-VGT#y zmFY3p>NSdQ+vDc_Y|FCF*c0cN{@&WmUyDaRkN~=~&-NZH*}~d++@fAwJ_G>mPx<}u zUto_PzGr+iBe{DJYwD>Y#I&bhcQ2#}5Y3o)kr?PQDRsRz;(PmM49pHI)B7W$2-d3` z`u#zX_xNgc_9P$=)dqC`i?QO`2N1A5SshelyMIbNh!?`Vjm0QbFVlywH1y-bmVnDj zux9Kd4QrtzXi0yrzr}w>+S2W`^s!_wnsp>qIIA35#=^zdVzvJK;(Ij0eM|a@B0E@v zKrAAs5v>SP*bInw-{uoKA+PD8EeHSvb$Y&V)X&Hq2)}l4<*LAcrvF^M6wf}{kZL9D zPF;kifn9U}G6i4)9MtTqt*lr)9rT^m7+HS&3?GM?x9PqFL`=K@tSZgOTL=qu#Qatq zzgcsCu6yF$iMWdU@b=IQvofbUrzwL$Cn5Nm{8Y(w5ud?(=6bSkr?AQOeuoI?C&b6T zW5K4-p)Pe2CY`d@_XX%d!J=Yv7z7_<%GWnQ^dbuyTtjGop$L|$e>I;Bni4hliy$Fm zJBqLz45*4$&}ra}G!73j&>ec-%f?qykB1k+SN23&uGulPB~?Th&FfKNw5Hn+&|w%v zxQ|XIJ(g*F3A<^v6m!0?SfpC{jtn9kg1si6kFAW$LeF;01P4$e#KQJdS~P z(X8rfx!q_J<7Vd5+EMsN^T`91@U%if9XaaC4kmWwepIt?f03@$t1wb}lLi&L^X+QV zi8?V}X$pRX-dTGiii=gZLy6E+FZ#LBE87N=ZbMr$t&{g}3)(w#aIZRP*Hdj5r|As2 zH>a%;v)S}X>=og=Tza>qMg2kY?dyj6UEb989;3@m0=U*{iM;V6-OVCuNGO_JO=2a;G0#{I{<_?K0&5;Zb z5~k2*it{82mw8nXqmTm$0?3yYyr`}NRWh7XD|~Ekl6F)XC!U4ZN;Ct+uqz{#YAp>g zY2i2!!tdpUY^Dl*k(GibFLT0g7HVxfFMv2jSa{`8^0n~c!5bMP55sWc0uXWX)9|ora9Yt9DcE6$DEwC z=TNituPG$Pubw+MZf*j6oPXS!J_6+ZUUB+SK9IB-nCI*Wo*$P}Q(WHpdpp zhNkp~UOI2x22hQz$iV;VO5_-F!8cVpI0gvEpU7{rGrSYv>e;WBR}<Q77tF~ERHYo9ttvp z3v$+(X>M~sft;@!SazlpgDvof#xsvO6?7?ECTQqPismMngBLutd%derARyq^QjXNp zi;uv7h)43O>Fd>pXg~atl=xU~^o=s)mG>F;=h$mEJG-@9%h5dgH36vDC}uDb>FaNzGw|v+ zg5&`D;ebK(ND=M6C`A~Cdva+roebU=Y29o=b4Moi+BGp^5?MAAH8yy#vOG3TJ|3J> zCJZbMFZIQfQ30UR+&Sovazc2~<4U)WNzZ<`3SS;jv=2Mz_xpm_QdE9m<%BCUC!@>g zWM^~8med_eHr6PQj9MuqHS%?Sp0hwyQ#)iyXkjQ%h)RKsdvau$GUbnVA-MUrE~F=X##R*;HMi<@!$f zy#1|j(lvKs_Tg#89O>3+$AwUmD1ZH$!lv*US`XcwE3=uz%HaR`dZ0{hCx-^~{9`_H zSwGJ4G{*;ZtDk8H^EneePuWsKzO)fms9>@pl=&-yKtrF=I$oBdQ{m-) zVgeou+at&rqs2U2`-D4Ff!NCJ8DTP?bSIi;ld;GWvxsRIXwSrKf zyh7gLYqsL#uZ~kkk;#J2vF^;ZeqI|aQVH|5HwfDc#VowUHrHL8l4ZMCE9dROvyhg~ znpv@<9&f)`p+Z}=*Hs{sgWf94@2P=YXaZ%yxb~;S?$#jt`G_{V6DJ7~sEN^g$fH}XmT=0KPh{k=p;n7qNNvzzbI z$tcA^be69{Lb3DB>G`aJ3PZ-gXc~?N`t^}kAo{0`N?9E*8I?J8Fx_=T9TY6X5e6o< z1(hA%_exY=OrJTRbj{- zDAQtU<1Zwhkn^AHzSYjS8T3mUXNe1Lr`rCCB66+AemXIkKBJaWus;B;Hh%_G0m`ZR zXf^2#2G@qWUEN3y>5to9Q)`ZcTu#QYHK)E#FqUv@54|rGIy>-MryCG?)wqG2qUR7!^DD|4iKKxFu|83i>j zbwzCC!cyq0DP7O9kn`x(HLWn_)AKT|=a(5Cs=y$^P^fOrB85zJV`L?m5#kv8>IFvp z%o7O|Z9|oXM6za(I{RF$R`)yRFe|WXXFQBPE}FmGDyCztU*)`Q50gDNc(F^pg?!m* zwwh>uL-MILq1YosGy`h!s$^|z9HnK83Hz*x9g$cXwq$w-QvC~|aZpcUz}E=tZ^gZr zQ^wP|aRMGNg#tir^`~ls=4{^Jv3-+p<@J5Z8m5NPtd`fA0>#HZ*R&S65w#{Gi=N93 zJbP5qYs~zKPNbE!hE*pjAH)kaJ?J}D@r(X~QpNw^&LhI8T7qYKv%S@iRq~%SJ*9%d z6c*KHp}preR!k6s>M?l+K+=Brug7|Y#P>3-#fc#^mHD#Z-f=?U_{!=VK9)GsHBLkd zFxMVT=W5qF<=KzToV8S+*@d=|$1Wp5)IrqN3eU{CL5?+=(|3By=NiW$d&uYEGjwpA&{*^IIECnqAz?0u@IhyJ;+S@ zao1r^+WBJk9dYsE=#EqHhoKQ?tY)a`pTC@1f z1DM{BZ2JNk`bf6Uc=9K<83FSsVIznb74f&vP6!F9^Uhi8fygm^Jg`q3u5hJXn5nfF z3s|8!!GXCm&-wYYB|pVct6!~^Y~%!%qa$N9%#sraE`U0^_qK<`js z*ZheuXT6_2V#O0t(>d|h+pGO_7D|(d5i(N&W z1RK)x9KMcDkA-;E2dWzx%bosyT#fIzEdW$~VX@f{{d;y#{vY7!^&ch)YAI&=1o8q$ z)hJI;3Jey4Qvy$clfO;jh)|0H5+c>;CS)`*rCE!IiGk6~Lv1b?K1yn|=^>e!$)Vn! z7y#X$k1%)%3q2?efR0bT2s6K_&y|Am>%f!W2=K-q$7Y|rzp%(rD8|%Nx5g#G@NK0W z4JoaK#$k}jLBjU&T>{oi2#ZGzSwfOpM z^~z9*>OIeX&Zol`@|&c)9T|Ek17w+g@Q^1U2uGXx{l(M`D_QVgpYtE@SHYeFr71p@nByYTQl=I0oTFG|-I{mXxAV>*O&RO@G7}+O6Hd-R+~_d?<9Ibl)C;wIc*=ZSiBjXbm+q0Q9_Z5!yR(@%XFN^)fcRlNl(+bd{Hz(j;x1UN z%)p+s>ZE3Ua_aY$si~+<8T|RyKgI9%k*6XJ47PG(#cIy(JNi-YAGEK{A)@0SgyF{jM@=MMA0i;uYLwyHfP|H?xY{u1x} zJKn|%lECQr_A-({#lb|`=?3ln^gL`~$x~1JG$Un1fU+22^B;5cJN$XxM84d@iv&-yg?%@itTv!-pQCECmO^u39&%__ z%6~HLApaKV+N&gpfsV7YJ=rGu<{1&feP?83LdybQJya=EJxraZ!on@Kn=byh60se~ z>p8FRQbcW^cjFQRwO4`o+ zB7CIJC+fPbt|ip)cXxMpcmJRExBKj~7kjx^=W5QEOeV=YNhYz_QURIY5!E); z5fY$`C);>=#{I22*z1Xr_!6$`_>rds*9RBnG~?bOBv6506W;bQN% z^}8yDA1?aDKvNE&Adk9=hkI)IgUWq0rys?M(l?2t<6bR4g)vXRJiIx#MY|K9d03j^)NaYHYV%#ABL&q8W{oqlCyd-#V@E>^5{tI5T>8w`o4HB1%A;h#z z5w2@x8(6%I8Rk=!@nT6e*km<+{iah^EvJIMF@iN!UV?;_au0G{Yucmcy5M+}<+O21 zDza$v+fX-t^u0p@B*AFu8_Cjd`DRf8jnI)F@xRgP&ID8Z`p3W%um)T1lX3bIbDtZ4 zPe_^F*gVc6Ki)(qU1|q^!UL52np=J48g=A48{JlO&Z(KL%1=*QZkUupDj-b8j6Bl= z-Z}=VG;JnLcUFWH`KyibsSlnGvge901%p7DBHf$0{#~^H(-lu7wh_2()JpOaL*qH! zK;dalwUnAqD6;dzgl^nwR6@5ZPeoH^NLzsTO(7LZmX-diVwXg5fRrImSxU__$;ozg zDsyP}I2C)@K~M@iKj{IImC~G~J>=oFnH#6*%o<^;46^bKcpQp7qk_2ph9>nR^Lx_FU%B@Old>N6#yW;uuuIq_0)VqwY@^_)~rYWHCO>fbp#FI6G{ z2ZMIJrWOtUQ)j^Dx;aP0Pn^((JlGf1jZNU8@SZnC*J$ z>P?Eus*o;*6=TdP<-dnw?z}~*myep#F-#(ezyXG|d#0Xv`EqMh_R# zv^4!osZpS8Evg*Zd^gsucRQB(tGEmKL;bRGT@)YRY`n*`TkCxrIcxgAZ8yjbn^vs6 zd2`W%4%)AoJ7yW9vp2?!KCpFQpgXvIsU5PkEG(j;bXA=I-hQ0TpCYklXD9h0>pKu(Ov5F?oGKLtaV z+1+CXsm)D2nI0>!4Mb|vlBQ%4n{lddLf`!Y@Fh5HWGw^e6pew3-XAe)%DTs& zZaB^Q`7_mtU^Bs>E?+FyrIjybmN_}MohzNBE2}%rtwHEI3hxUqw+!&kstgW2ITgBe`{jcM?#gIi-u?|E zp#N7U5IG+JKavAr$=4dablbp34Qc;(** zaGd|WL&`!W8ba!k6H`-L#-tt*Fsk6IVabOtEhn?BdW>2IQI$v~Gp1MHn^&HtXC;!4 ztTm+5%bT`^b~?G1vgKyGg^Et>wa?#WT9A5wlW8upIAr*E@ zLq^Qd7;=;U@iR?HGcm|5Vj{etDGBao$iw3yYT#tV+2Y3Vv&~~YHWYGNuB2CkwO=H-tSXy)+PcN-qkr~kQstK}bI{;S zu1k54{+T~oP4KOD-0@RFx$l38hlx zj32J}q60%gQoPV*n7iU`-K)ByGSCJRS_evP_uD)TV$iRyPV#HlktR4&9|(;=x0N{v zY*zxAv9KQ=E;Ms}K;m!Gy<hMK=7>S}Mh2WQlXWjTk$-y*I9{BTaGNhSA^7 zo_{d}VBCj92Ol55T&B0Fh`v~HRX$$Cr2P=#CP@9u#){_}9WyA!^Emicoz<-4$|1v>` z7QCwpOpGL$BqXV?#0br^B_hLaL_w9V(5}VTfi$|J{DJ0R?6prA_HWC zYberS@T3K$%Tb>7GO{jtbLhjRBa;F#-%->IiCbkX1CruVf@=Ja4_)le+;|q! z{*u>J;ePm6@+>lj`fR4wVBV&H&y~1@TV>3)NxX+gheF<&F;Ths(^~j{k?4Pkj8~C_ z2s{`ge|MaOR57GDAEGq$j8I!LIy?PPE9x_$n`nALe=qO^(qat>$Ls-(j**0wOe(PL zEJVRYkujneMEP7)(Ru$=7A2mBeumg+`%%Drz@Kc&om~iU)%~uq+|ChU_!12(Un4?g z6z(%Q0~O0vvdZ&5O@P(`KF{~Okq;&>OgV*p$Qo++Q-tz9|02|_GAu(wrL9xX8!3lOA zZpS_e4^hh&$)uqAMXaWvDvqJ3sN@I(p;7x%8(3`nzg+{VT~bbr!cw|>f!1_F@wEqp z>qwDYxPd@Dh1=@<5|#CsY}}nv!N(V-FCo4p1jM*qTXX11eG~a-d=6*7NPX1}BhwhH zWf#Z9t=$r{PEfC;>NS)}I4Ed^WR>PH+i`Jr!#lybE$qK6TCrsT=)Z(f&F@8e!$n#k zZ^O2gIGHS~HzjP+VW^d~26H5wf`FKoa8!!-rtqeYX&aA`^GK^#w02jlf6sL(JoF;A z+ForP*aQ6zm&&w8_4`{R(Mc|XhxPUboURMl>NDe!i-G9)*!tOTsfn%M!VU`<4L?Ua zSmITqRu{1zY9K7G4ha~Jp@UF$23Y?ExcIkY%E!Pwg#{OC3Hl~Gg}2vK)|uJE{B zP|>f1(a44|jLZsVBJUC@P}3(XieuEUV9jW$OAI2w6)>GS(?!R{gHER;HlHWf;+E*Y z_htp1KsRSVf!IulrQ~ooOvlc~D1!w~4zPdWOsUhNWN(sQ6_+|S0rfW$#st?eDdj%` z!%i=Bj8R{bAXU&(W-_4krP!nCQJ*j+K9bNim<~{L3%N@(9&v3yzes|=lBwJ$ky`lb zBKo4+REP$y^cdTyL;AuN=-%1`tci4j!cme;fjnMPTriap(TCiUL5;8_1ogWhe4f%N0q~M@X zfPUuI2J{ZDRlPRClrB@W>MyEDdI3TS<@sd4z@fuLTbJP=nOtreLo~)=DJbq^{nn6W zgw$>gWA18=C2cr==_DU)x1U%odgo%38qf_^u=CbA6qWQh0sv5D5@y>Cz82EAo?5di zjvgY&rkovriUY++ljQ7ll)_tG$HE(*W|Q;OBLOCEx7VhA)ulQG%35!CF%Rm4q@1GX zIN@G$u_prz{Arhz_>#$cC`4iNdN4z>LhH_7J6VL*Z;jUCMUkNW5+mk_{joB?AE#Pb#vlc#=X69)!zGkP|;6S zuyyoMb^l5kf0MO9E#%F0D_N8{NZ7exc*B3fBHmlgf?M?q zjsF*97&qbSSsP1XiQ~WqEb)yaskKBdpURGvvN~YE$OiN&itF{7GhpX;o9H$ipl1I$ zJZ<)@g%3fJz!rc9-F{G`1wGR_)Xt= zRsCl&l`%rqfdjnX#2q03)UGNU<=z8K6`_W)oTiG^R?6b3*HzW0Jd8V)q#cC~zQ#3o z>r|$J zWVd9=1?nPT7WZ{`66DW^RzV;jQMQplUIe0|WNP*t?61o^{}EbNdFB=7pmf-R`F18cc@#!BqJlSvIq5${FqY!E_X9#uP?Eor z8D6t=%RGPDTw1tWN>`RHcyA~?ZZyOfef<(*$WfC3?I21JEAu2)K+iAr1Syq5uutAa zk_$(V6$phCM;{6n59c4#g-1w8;LHyNf(0O4XN_uI_d0Ex)UV>pR8VS^QCeT!Pv01| z-z>TH?mSG`a9Y@~u)=OGf!E{7LmmK$LL%M+Oc!DMZ1s{QxiZ5U=!nAj+1`wVAX&Rx z0-FgA)sduxuEjQLuC(nPVMV;U1n`S&)uZSE(to5OaRJ66%-cd;#P|NF>wmOG7mhyg zkozeL$(A`W?y?owJ-v$PLT^;`Ro-1c*Tm#W`sjHsSf>5nWfM(`{+T$)u9B2>sP-Xq z9;1%e;q-7-ecvg%+ieQE)PyJ%!>A;U9BI;Ug@L&(+mzDCX{h$FYp@2WHW`P2p)~vB<4gO&oBXy%A>bd-q+sm80*UXgM(*o zL6(VhV)zBW`%Hvs_KTfDWW!)_3^)9l$hkis z7eDYUNxrhew|-CKRrHkA8X)i|9^OJ2T7hog*I7lXAralz$h<5DuH-WDu7b z>_T-9P$YUFuq7PWEMhRHYf5Kf#QhRB?a?eZh zCC8n&64+dZAu@iHD0mR5{L%MxZZAk7ElcVZM92doqoI0-UApWsX>VaS2!-*-W;rWnYw)`eR8A z)azh%^+tQo+mUyd-@3*53fEWeSTPij`VG+5C90UV^7$jz#aIdgxjdE^X)<^hXxWtK zCnaYt-cWZjWK6dOW<+23kG|gAXWYeMo0bb3Yz|A5ZJ(cH$S>e* zI1{S=oM=S*tnkwU+uUWrjvVNn0;{rPK=jIzlBXb2e94~Vm`xwDeN|rW4V8Z2KXxz^ z6wms^RiKrbgOUA(k$~WP#xXNKTCvM-t3SlgU~Y&DS14MRvQyv{u7MZq{AUA;JWX5W zy!-daf+(1DE6!qXK3ksP5mt~J=O0Qjn~&i5DI^Z2^lO5`6hH9YEb~lMRw^)d#M+4V zz6`vKG%q6}RLcW>?CL zk)pdY%pjJUVC>N(h0a)VrBw!_hY^Vcl$^X@Md`9&68kw{0|PwWiN1B@zk$oX&hA1> zATe|s>cU+Hg?rOPX4>5wTx1>mSjjN|}^hG7p)PMwv57^(9m3 zt$Nxn-`@1QL0B}bLk_O6j7Q@eZf`!dV65fRPru>t8Q$)0XHFO5=|IY;G6=8|jg<)> zozniswsn`c2qtZx*&Bz%zRB9d%Qh=x1`aoeF0<$P#0Jb_Wy0%3qviJaRwF3_#kG4r zUzRrx4P;NEq4Cu2dq9w@L>nqo>+Y@A$H$tNwaotR92PT>W4*sd465zp%!7m;T(I&* z{WmWqBjXIRzS#=Q2yCYzeOD21IoEKIqLQcSML`ezCN{CN;q-9W`Op5AX32Gm{7b$8e}Q_LxLo>qCy( zYNmCR#)m}uT8VE}37NnXPY@eJ5B4rHLb4p8Gd4^a?LfEOS&qw!r}vZ)sY#5J?<<>V z2q-%7HRDAO;ES?{+~*Y(dzBy$IP0Tu57DrMGl0v8vqZl`S>^F~%s3Tl^kRZuBQFtvo+!uw`z}Y@T_I0o61&yow>P&juj?~uwTziaLsl%w zH#2N6_a!V%?qt(29e;7sKPqh0jMM@e^W|&g6R@G+CE;W1v}qQ!?yev~4G5~t>1RCQ z-C<-By4M<343C^_Vi;JJ2J8CDYI5|*kqVWU+yx@u0&fvQoz*J)uXy3YT&Ekq$1Syi z&?DUSloYu@#NWKo*EiHOi&H^OSfjVurlgv`Uyj;?ws&Za1Oe8J3{IqyuJU+SzKLU4 zoVgib@(kccxLd?`b4E1ryiR?R{n~htWi*y!eUs9xY2cdf%gSr>;lbo>4-M|O8_LJe zdW*>IiG5!iDd%`)P7F$%-8b`Il=VTd((bvv#{R@`C~vdA$f<>JrGc1#Bb? zUk(4rJmJbY>^ums8{F+agy}leAX)2GU(wzt$0l;74d3iNj z;al>bVho;u2S-%7eiDs3O%j?439Jx+=}P+M)z<{9&K6As?NKiQbS=4{RMrObJAkiX zSwNAz#|L-q)RQ?T*StK>CO33oW1I8prR$D6g4;ReDo>>BgzT*~m1&^@AHc9JJpMAi zm;E`@1DQ^T?&Etz8?DjSo4%|%#G9jaN19uQJbVK6(*pw)q(~|l!Ct8q@iZ9FEm8b) zOZcDH_%VCwsBt?DLS6d5rBD3XT4(XK=R+-EGE4p8hKX8E+vE#KwKvJc4IiY`q@)lj zRq&ww(JrSO7j54oOd*I5z`1|4r(jTgk#RPXaubxKBz2Lb= z1ml?$J8ZN@>yF8^tbNs-=UVknPjIG0Z|!mVlw_~-DM%fNkm$~x^XOSIh?BAWV*TXa0-H?;(YvOrh-m&HXTOJ&a6}PY<0>jem zzRMgpmH(S)H>&{QVhDMoO5BZ~f`bvDo-W31XcD8`uAv<^DkXqK-eOG^D$f~U`lBN! zviwU9WGyD5#PAi(J%UM_vvu*)_a3JUyFc!{E*Z0KgY0(zG zOa@VNO||FcZ&3E;MtT8ONtIOo^Vt>%T5&&ynqc+=q3*v!sg-2Nz?`{@x=p=&S%50h z4ogl9(iVMKjg`Z7mPX&+Q91Vt!BsHhR#>w+{Yw!=k;QOiA{^0o#hKM1%6CAF# z`E1L}06Q6@P6lgF<=S!Ef*aG0qN6panxo81yNP#8W^D3*E+~eJ{Be=wAU)*(oE3{I zAJSY3PV+q{c&=xlHkBwzVIr(nemT0FkMSldJ_h=fEiYtiKK!de#J+fu{;)N?A-Q-7 z`blrIadWr(Nlquc9%3v~0W$RMu&B6-6*vDdXR&G`*Xebw{ApH1z#lD&bYplwqm`nt zgx&Ku`<%DZch7!AL0h76%2)o8a{)U{=u}y|%Uw;I|lv^R~Ck;%(=L zZ))HWiBz3$-S;~(Ul_^=yV{@cLezg8#zIs=JSH+qP_18;g>!xod>K%S8v?&5GA3o+S6ATE&t{sF&T&_*)eu2KDBT zByN5_`J&N|q9TWSI)qd2Jetb2)sC~hOe4#Ff~fl@CDOV{zY?DZX;TjYO&|3rk%($f z86c)i{U_?T(ajep&Gskc`gbWZt(>ct{DbbLu^G=Uk$q+&)xADUWHdf9wUT#h<&i|S z2O*|-c2lLf_Jm1as9Cg7JkE@vY%gj3S=J--70hsfUT4sW45Ya+&k>7-4G8@e&faM7 z@=-UF%nkCwx9@dkgWrUK~s};aFNR>BcfB3}PKNdz^GQgz5^#+&vG^VS(r+-O# zc8SGbm*0sjbyy58O}Gvkl31%G+_1*v2gZtIN{ zDkBZ$#K#~ZXZrDzusAR^DY0EF=uHGdErBldsBv~vi1s#^%p_^$jHTN4s3!JLKXMt3 z@eP3`>NhD`W_fbf-{T=^mZXpqWHC#V5!$V0BAV;b4B$+8QX!UCXZ%d|!oftnsb?5F zeRfT0ZpYvrjvQO>d^WyB!ua zbXIvP`gtd3M~Y5O*4-a`p9E2e_fE|FEzxEfpUa@N5 zpt^I*cit6bilFojM{}EC)j#Y1beBC(7fS32X{Ur`Zon$n8aHKw%ctPMeyLIYcF?P( z&l6hvD=*fsAKV_{g8H4ez~r)G|M7g+(ap}7TVT7@<~jX2s8_O^5Vh9QMg5}wLjiCR ztb@wYEO6qQLsI~XDf2Rey$v~f!E-6C+Da`mGJR9NsgAH3SUK%_`tLlS4dUxg5FdhZ zkaO_2Jp1Yn(?sz;se2nLvD|PNnJ51kJe&TBnLWHTQX9#tql-4O zivB2X5JO6BD<>b0krFsRTBPvx8<;Q8+(^o%#UjbR-o(mdB8hEe4c5*D?7EG4e4)Jb zz<7%Jv7s7)q!Asn!1ZIGa@a2%F14kwOSTKD3o;R#T$(qxWS7j9TNg->H3zr4nT!OL zjCe`ARR|EAz#l>tneE(ptwTROba%C=%D;}*rH}aCzO{O;nsU?q6Pv^LYjRX#);ivt z=GQZgRRTrWSC*C;9*KV3@QO2}tF2lkxoUhK;l*?u70B)-2sf>HWKvCa2)um!3H%je zkJ`Rn{en~#n6J0?X4%ozG)*~!#d8fM(CeF76Q@oL1GQj}5$(lZG0Ln7x`^I9w(?u{ zx%Db53^V=6hty;^Edr1Yn$deFG+Ri#hRsK}&}#RrqVH^Z z`@Sf>ZY3}Sjkz__PUnoHUA$z7LG&$gS}u@)8|W^Tm)%D1Tad=GY11}~f7d!~p9in8 z=2b^cBYQLTG2d-ZR*vi&Z+46(89_T}Stii%e&V4&5F>rvqQZ^r+sHPaKismySf0k$ z=LTCQc9QajjG5`g;?59*#(j2IjZW}Bz>!==jG+t zjITk&2Eay#hN<0|PGm!uDq$iAFsg8)1mvwYH=>$qR)5?dfE=P!IfQI0gs!%#9_&R- z6K>7&=8$%at~Oz7_j65JPyBS)=zxp(KB9dd6H{;Kxm&hrv9oCU7LxN9>0WJq+*ak<5ec;3;l!(bla^qOgmsq(=jw*JeRrjOZj3}9~>6RQQd9ok=Vv$&rM}MXusEc^Is@G7@50c&u51f z-s8TIQY6zXd$lCU94y%D^bKdl4Ld$x_XYSFi?eNAa-xt1)RM<$a zdxUVhEjI5Ut&%@LYkF|UFx@l4%XCuA;R*anFt@O4P`0>Ly-xjpXy^467hY?^iunWV zA8T0*G$`?cy0X7q;R#&O`iPc6lM=dPiX&R)Ltr4Sw5=0-ywZPzWzXSzI^uvt5%{Ya zOe~Iw(+P~fXrlA8Mk+AyC|Gt>q7)d-L79&x8b1xQW{t-Lid}DpIfEBC%!+Oz4_h?V#QUdAqz+LI zae2aOa*`=MA-7+2D>etrkVLmc7NpJ7}?+q%WGHdH6quJ}Kc)_474pziri zT;7s7aUcK7bpK(yQIOSADb%LrK}@%!h`OcZ#8o{HOs;WR8XPWsT5O@&sWktXQrh@K zoYtLk**6W2LisRBWpJl=8Tyf`s@oX{+5=>o2}$uDs+8$1x(#yUoXnJ)fiW&B3@qH z@~-de8?c0%7n320JDW36P-IGh56m%O|01q{-RoU59tSCVGTUo9rH&N$?XR}v(ih|i z5~aKDQx0PbvcU8pruHZ*26Q9<57}8}5K492?KHGK^w5 zlwQ-N{a23Ze*I3zoVJiC9=?ehLiMFAM6Qi3rr+I+{kXwu&+)1C?wI9pjETyf`PBDy zDg9fuVuKC}fvvb9BqrRPx>t)R9n!Xq!jKgWF={7BbdlN!&siZcL$Kcxn8YJR4D^LY zPqkM|jHeu@+>bYDr!ifVpEOsGK1Ob89ru%qy(%6=H^ zDjfAlJ~KGe|F)S+r?SC~uhqk2vaA55S6Epbq|wn7)N1t-jh*>396FnWTfnkK$GYE0AonZ4OFN+JS-v7AD~-I zNmgX9zq63p+oKXij%>|8F?$b~wn%LbUC=oO;n?{>Z?3fhF67kag}CM=e91d_VUWzz zA^du9j_34e##|eCT_pNzVjz4TO8Jt<4FQ8)s7OfJMj(vT6@c_6*N5`B0;mvPagET; zIf3ReI`DZ_q|TyhWUh5!^W0b`o03PrwOYsUeqA~E%WW@#bi@kHl1|bO+$Vn7lshDI~ z!FylIM*Mw%3BMJpxRFl!N)mTm5qGv5&>E=c7KB5US=}K(%aY7dt;Y=_@yxNd>`27^ z)7fcZ_4CT;=lVl=#Ue@Nw5g}|U#o^Gg{L=?0lq4pAa#g3L;!98{WRNA2jyRJOsU*l zmM?eXxMlt=6g>}NAKa8K-IkLwH%aS<<7{zQK}pVjUcwl!(*Dsvq8?R7qD!LG^Bp9y zEH_a}wj*E7BSB7#2G=$rRRFTUN!^WAA2V88ju;HTj`mtx(EQOd5z>WO#pZSXZ-1Iqo_*i_t*-xhU5|~HU z7{4UkoTLyjD2Dd-;OFprZOiY-E3AHrs3R(Nl+~%<%j5M9rF55ECUmc zknLPickkHG;t4a-&g#yHDUJ*C`A`%c=y@x$h}DtK!@WD6{vo@?=C!aU6X`dgonp!b zq7;34H$|ID6T+XiForn23P}MGNGInZu4t9nNrR26LaIYQi=3@Bp+v$P`V{2BF58y~ zYFg(4C@@ODpvR<=YS`Tlu2?i-#%17szxDUiRYn427$W2*Wbh=c&}jxv$6^jFzR-|YrT3J348QplO{f%0+#Ppu|bSp>PZO5VY?7 z9X6igip)R{d#(7$^j^`=938_tTeRb%0xxFV{6I2*rl$K)&i#1Tvl-!{JzxbiL43pi z4yEVAG5)qB-vbK^qSTnzM75nlYY$iht?3_eP2Qpf?J$006^QWChQK6UJAG6lL@ISl zSqdbplQg4uk*jKIEgC~wXUw$l&q4p}UhY_ECi5o>H!s5ymudVIGB}<*9X69=$yJ)d z7~L^MQN$gZlbH&_(Or&}@nie#0a2QM2aNqdO*gTI={_%in=Lh$#9uZVmxQMAqPf#g zf`22e`d8cdA0BUgDj#c()EDUl9N@h<$_I5+Wo)C+NsP7$KZtonTyUou49*S0{q0jX zwsY;0&4{y~np;G5zZ~Lu`N_kfCkltc2?~2Ust@UtF14_G$Nvd~jc$!&ucpCZ^A&b> zh+ANH@g;&}30%rU5KdtUTEy54XP4w%oCgh%>U~&!j1`eT1XId>;XskHPV>jS


=zJ*_pvLmQ2e({IEG2-s>@!7+r>r`ySxw?8dvKql1MQLw*(u(-@bjYHd$%Q2~X zm=!_Lj^RjPv`+ah&l!HyV^&JEKI2`nFnMGGUv7cHK3*>+FgNv^4a#}V3OgiTjbYKb z%oBcs3Y@Lm;y*VS-h-4r2z{?LHAhYulm_cDJ!$+&S?;c$o_?*4E$ErB!W^eq3(~I+ z6S>aNqh!nO+7>}+)(fpdXw8sK+{a?o4x59<6NCt*HcmYyBs!_Dx#>uz3P-KxnPfy1 ztmS=27`77dewc>EBsn+Svi1UHM2|M#77Q5m$Vm-rsWn?;8@LU{QoJDcUa$O{#EBOE zyHQ&n`0u<2Z*ZV&il)$Zu-W3dQVAi)hKR|PfyQvz$XJm=*Eb|s5a3uLk#F}TdZ<`C z-r;)^N%fE*hO?Mk1RkVmllT2w#xvzq1M(fZ^U|K4(Z5Xjem-q6w!R}uda!nLCfekMR=dQykAWN|i17`-OrCT5L z-WZ?$;Mc`SF(^0f+eLVaUN^%0;;8&Sxh7O>urnNCdGUFr!{@Q&L;LzxST^`JWggcz>cx-$!@++M6T+!F0IkkAJ~ zTDeya8DB2{GZBwG1!eg*wrQQ(siUK6T*%4(;%v?(@~ity_seEJ`ADE{#{M;P6m5?i znW+vJV5~AQWP|}H3Ev71(9Y>N9~3Fd++0S-5P&bsQm%v|qJ!g5%(qHLE7 zY7X<{nxhw0nXpB6b?b1ymSl^J5tbD;W2t1=A?r7L7VI4Z3}tBa)u`;WH!EOc^Hfkw z-+23P97BXv9S>gePcTM|hTW>?n^>RL6>oUoe&TaK{wM}+*!RC+6(i{U%4nB#tW4ju zc?x^NQ6w`=Kw-b90=t@KjuIaNsq_K6ySjn}NogyDXQUA+jB$(cq5@Y`@V zkHfFZA$|@J9$lxI7IU)RHnNi}T0j51pFG!OJWtmdd(dEM@M57*xXOdy!`;oQnWt(R zq*`<9ZmOGoIKGP)(K>2^ho)~w>f*|=9rOp`>gAR#$}o1B z3rZ4eu(0aR2b3pxB!)ym4LTX>F|)hNIXvWK9%kbNMc-LM61{rm$~+R4z%v|r8_xIJ zuaR$mA^2RHWWL7F0CiEv^lv}~wW5-5V1An)i!S2X^zyea=10J(+71%spJ%qzGO18_ zO7eWI;kK@RF@FN{G1bH~F9m(03Oxkx0f{G)!Q%chJ)Q#S=-!+AbX;`U@YRs;+oj>u z?=`0k`wF6(ObaxfYpf>M=u9wb{`nxff_pGsB~spZ9(<2$_`ot0U{D9-pPVMWpM0)Q z_M>~}IcdRHO=FJA9ln-vDuILqcN?BLPlX{GwVxpXUQ46D`urXA-zRJJZC4@sZay7DlZ7Eq??UgCP}Qi(j6xDM z<8d{aw0y_W%I6nYgfkqQ5$(m!q9#MA3FhnoH4cGE+e) zShzt+f`H=B@%q>%lS8T;j?f(y!!I0tH&6mm*Pwgw_B**YpZka2TtHiwdmZ(+FhuTY z5Arkovh!0RmVqWo2zi(sJYEprIGbB+_)m*Xknlk1UZ+#hN~AA8Y0{M$x(tNX*zyu1 zZNFl#dsIt%kiepMA3JwBn{9x3h^T(*;PjN4KM^ABZCLy=SFl;k)72_aA2t5k{m4nA ze}ewW_xuGn+6V6y3|=L72?xv}ZbiG$UHbr(3Nqrja~hJJ7-h;i8|vinVi7p86d3(2 zv=~6+sKkQNGCXpViZE%DBK0|tYGAO@#Cg|L0_)P_R*;-cVi99=8Ny7NUBRE;U;Qgm zlE0V`MhMo9{?;XIM}J&xZd>rZFLL~%v;xKIm1s{v|0wI7`~}C)T8i#*CjtM9ns^+&hBO2- zL2++Q+9GO$0YbZd%^AH=4O~!1qs| z(i#1FYkeK})%xYzn>{Ul{mH)*=HmO;M}BE;{Zt+R{PJ}`t_d~X%nr;cY7XcJE90XJ zj5c~NuH_C~`gH)X#<5)j3l7j-1zWvh$71s~U3b&=iLkpjvH|q{*!-ZL^eP1kHuoC* zuWb9bU+(c8JnoGI;W33IJB98(Bjl{(vM2D)X?Vp0Sdrmv9l+bcXw>1*LEwd&zNP4A zZ#Rr}Uw%e+zOOa@+t1MY6OO}!U$ph&yTtJjz ziu`Qk{5kmObi6<}s(cP>+3tRq*QNld&il!)-B@;9LykMT_khgi$Gg8wO}qZ9k0KdZ z;vV{Ga)X^G-1H=++kM3X0_%^|4C*FrFRHz{*H;zMsq-ET)L&9yRR(Y?OowJ&rcK|D zwlO{iE_ZBwHNQb@cz{QML@>}B7Cb5g>;6b#%!AOf;~fA>IX z8PvePgA`@nY5UCYqwQ;L6ul_%15pd8tkJWlhm4F?ax!WIDmL6~pZ{ZJ!^I<271FlX zVa|El{iiGlZ}Hg=x=$Z}I85zU)cu&*Jv1zVhM8*LC#C%p^z=Pxo^awHP^xBhED6mj z$>A!A6!9o}_-d&J)%(U4eg%hYo5nopH@mLkpN{Z8dL!Z}BtCi|zPx1nK>PnZBpP$R zLEg&#-$!@Ty=>IN_8&O!Jlup+QmA)SCb-}Fi*hobg_YHP8R3-Pre$G5)4&^>=9{f_ zfz0yGEjwGCX-APx53%lR3vb*1{hE=UVldhsBvp!^-QsYsX6}hzg>n19zyK1yI$dsb zy|68nJVmq5Z4xhH-0VZrc1+NA{Hw`bK8N&o`2QR@e8%-bQBj1B&d$9KNeiYXIF$rCG0|2v5<;(?eBuGXE{1Y>gkWb}{<|4(kU< z#7U`oz~f{-6F($6$lJCfa5i4b>YGY^42bd3+F9a?G}G;$PLWjxX|^B=ioZBeyBeAl z-|u&Q4srO7j*ctih04GUb^D(k-|kheuXRU!M8Zp)o^UZR|GLV)i-(>5YC6+s*L!dL zaYQo9{fLK6HPZXP>*mF~Y6fEHI4tF&P0JI!FV)p6by@Wd^1fRx#kg5*29&%6e| zL(Ck*mew}WPFn%wzqhWMC`YAG`<)`Wd28OdO-Z2E(*YiRGc#`!oip+r7c_9g`bI`j zqYEJ+r^Ut)Dl>lpZuP82p@QpLNCdzCD#7*e^4;*au@G@)IG&FkM_T6Fz@@NOpA?(s zJ&wC@BBr~QhfMHC6ciL~U#VfY6WLzL&i7ky$Kkw7{%5KSP2T*b=?E63FQG2mBMi-V zr-S+?CbAR4-SvzP%GV2UUfY^Eagte-Q}*#^+T~L`vQ(8;wF&?#|_(A&{_8XGiLw)GymTR+*JfI!tebXvm=oqTcMv76*!jy>%^)bhEQ(i6y3tE#H{e1ydu>DdUJnVZN2Z!e#* zV)nDq?mn27qfQ}pa7cWy+WOu4c2#X{u&r?5?Bc&!<&*grQxr{<02DnGk|*`ro8|?; z2m}%l5&0KR`4A(}@9qdH*ON6_U^zBYgkJ)!>VJ)X2Nz1Mf! z;AQ_^t!!F#cC!7s8pIoqzbmUd9@W{YH@`pMM@2J%Po4w`e0_J4y)lwC_j6Id1$I>z z6;+pBtd?bp+Cbc4cC^&NLU=Ek^DgS;Cetrugh(tKI&6|7e%$`h$wys_UF3$J19bPSf zeNWHDf>5JUp3&G->|y0fz!8)`%YT<9BXFM_7`>1H)aBem5`ePZs^Q_`6GssTQ~#6h=gItLQg3CNtEyW4S35$407zGz5cascK3V@p%p~?X zI)j&Nj0_Y7G7ktqccD>NG51w!43w$(n%#VWX_%ZN`fja<%lVG@X;*anix&)+An$Jb zwI0yfTulrl`wi-Pk*qhy#Qx)X&*kOx6w=$N?Xs0B3wXJLt=!5>-NlMCVRmCofdRi} z03omuM>ossolG~>Sw3s75}51w*XUWUePkPx^7`gC$#Y=Y65mS%>1u1&|2iClULF2R z#V4q}%C_jbx>rw0Dok6#^-O*7;`?!dgpECB!bs~Rg}LVgS6T?u0(oNQL<@YORomJc zJyEQ_j%+Y8xB<0>v^9?@6!UC~1##^#pVT7NqS z2h{xZ7P@JBM9S+1eT4l%$8`5co=*yM-B1=I>2(<;{f)>Ny>ADGZdYk>%vWMtvOyqr z7Kw|EH~v@NSUaC10{)eT?d;yF^^mG&^8x2QiW*iQNUzX}Q_^2$Kwli#XB0 z@wdK6Z@Wn^8f`hoJPP6>se@rg(f0lmqA;9oMi~95)EQ&OYghW-=k%14h<^hVg zY_E-@55Or%$O;OjOHWTfK^Zx>P^>Qi4C)_TtFV&+Lz`@d5d_$TAgCh-JsY#OHEi_x z_r2eYAk^*XFjd=iHyVI>8Zr_-)8_hf;1-T9@2ddlk|~a00)Wi~Cn%mno$*cJUDvwI zN6;Tf5ok38*$MLT^t`yf*b^O5E1n?1KOaaolX64fMg^!!Klva;8`UF|v!o-o8wj%f zfP}|tkJt*S6l+Z##&O&B8(wcalHiRjAy^OIozC6~nmDbyNJh+R{s3R3CPxb)z!M|#0)g_ry=4Oa`$)BfTm3E$I=%}q(Dsi}cMLvusb$v|qa+Tu;u5o)7_ zIN(}(&u%2c4DZ)vnDg!JC9(}IeyqcEi_a+TPN|*&j*lf86h$KFN#V2Me!Zq z^LpKT=I-ufqRvZQ)6=>OY8&NopH z*e=b?)p)KPE{bpeA(3eG*co3%T^&VPCQiB%%3Za|?Bbq0}|jIoP%Z>|O3mw_codedifxXdBYfc4A`DL9hxrp5Pge-6a~P`F9q;i;(M za?xo$=a!4CtLCe50{&)~?R7I0v;vI1J42|0y|&ncnqXH)cT{&B1V`QOqmti%NnY*e z$nF|H6--L{)NCQ!t@iF;l6L<+R1d>S@tHJ+4mun6Y_}cbH3LlYx&el+sXyLz;LZe< zmzUo+UugCv!0wu%c^dsL9`~#ZVE!_p^P!havoO$*aC)8c-kyUU9KnGCNX5~Tq|3$b zl)KDt4>1SRfQ!W53X`V5&{Wr>rI!2I*t=~twPG?HeEAqg$*Sh&S}IVQZLOW~r)U8y z6`AI`x&Uh^bnht$5H&FXbA7Y4u)w|lrZ^@2dLj0+3_kVZe8_h`>~_A^zUG^7kFL1x zfDPGA-Gu(ZyicjL)Ew$zujg;K64w{A?Rt?){NK!T2s1njnAbuAlkdyn*7Dj}HQM#6FUh2rV?*af*uKOmqOACUJ-Un_VjVR7aW$_rfp!dVPtMmExzMoDKAYR{024R`*YqJEr9~%IZP5Dpwb+ zZ-4DYU>c5ZbB4|$;54sZ!i9{Fvbu>>g*r}8Nr~uZW9~mBQUP*Y+k-#59%2UK9>>2I zi?jT;Zc)ouOUfMT*@0*v`Bzp}RJ8hSk1UpSft$s{?&&v!}94xKJ)G_c#~4j+F54xaw1D#-oZ>;Y~G{ThMGDC*8`HKrxdT zR%mR&ds3FJ*2G<#I~c2SkCN-6r_o?uiFGDxrR2NAqicK8b~YTtez`=k*9*mG3Xaq~ zd2dD1E6Q6slzYTj%q1AF2(0n*HNK9Ogp~y)CpDH6q!+b+6vp}eG3|k>&@NT33wJtx z{usWpvNCl{Z%vVXk&G~N$3|7}$kH1C)i;IgMgslZ-Pf0omSM*Pu*1=SD>{HwwO+)7 zZ$?j0Ff3vfV96x_qumBHcz4A^q4k~%hwF}Q@K^P~J*EZJ8Ws2oGh+tbygzg|C38M@ z5p{9p{IfDULybcji6nD`K*o1>X?68xez_en9xj=*XEu2QaUAfo(%BpWA#`xq1MslR zQ6yqltqqY;&OnT@OHo!z1HE77zrl$}niXznOrCkjQC@DxiT)ZnV`;5fJiIurJ7*oM zSL$FY|Hfp$uDJHo>$%n9tHs6OBIa61S)Y!4*Z9@j`5>ndcNRN_&va3=!ubyfUrBy; zc$zhQOk=Jkza)iv0j)rukH?z6#j&T4k*AKj&9?2zKM5VphMh){aj4yWnh?fbUZGo^ z(Nq752IxC}%o@K6_@>{vv|=?p+?)D>|A(cXWk3L7HfFM|Q#9a=!xeQ|KGt)4djs&h z9iz%-&l@tC>%Rb>IE(MU#N=29D^8`8Ba;AC^sAvEBq}NzwA9e_rAd;j8S0IPI9lii zbUVPxP~}Pm1bQ8$br0LWtLU(#G4{vLSR4|YX~N^5fhr1@`1%b6cXQ<%>AfGOq7(rN0H<#An~ZnQnF~F@K%2 zBz)aa%NV3t_Yt~f`9r_CY`1vOt)6yO8IUx`mHF44vE^-F+OSvH)z-b4%9f+uDMahp zZ5&)6*i;qSLNeU>*Hj=v+*M)(4%{#6vyz9aV-3;Ia*pCFm~0{9 zPZMTJHJ`l~cTk=4T`<4ue_lG-E1JjQH<>J{R24Ty=tQ;4YAMPn`jKV@?x`(K8g9W^ z>>e8}_Z-MB1a68-o&bk)#deSA%g}D=IhWU)SVLu>nP#~`22*_6Y{BqWRxS1 zw!}*4p7jsw+Xc8qtUOZE+q||$MC$7*4bcrdS&OXtt>XGTNz3;l)$lT(4V4?2ic5eWOlEW|b!d*Z=67TcdTA@;hq}Tlp%_F1ue zAD@ok$}(O7m${LuP>_5fl^OO-``y9({QQI8`i6$#);1#P7WNWygONKPv=eR|sd+o# z!Kne}Xu-FEriQct{m0olbbpS2RSQP5e$Rfpmh#zF2F*pIYTQp7>fmxQpx*?5XGV!# z=pO6SKh#Vf^jD^@f{p9PmG~P*LPe03ar63hrzYHe&h47YS4nZnwFYOKUi@2R@ zK74u<9ZeuTl%X?je-UL+ps61=e9OjcvUZIStW60Cby@ixC~-M!p8A0&H ze31^@oi5+Qp6sGgOsT^~8?lWqg-Goa71hky1gR&UcK0u6;VQF^^|&eG2xpD}I6KBG zVbJi6PSj~_x*S>GRQ-ic)OmFzv+0C>so*t^V0|`CCNxGonKf6dzJps8q*1rGHY|4a zg5Z>#9I@ju-wnGrThol2BW}P_VR^6^0_0jiUa+Lb2G{Y>>6;oVm3h(OAQnn9|LS&o zIi1J^*KeAx?%^92e`FK&H-s$8u~7C>YR(N^xx~i2(|(cfH^+TC=UOikH?ZP%sGwi` zSgp7Q6T8;BJfCG<{Y$9ydp|nHCnMc-IAf?rIq3YsLP4OSEgOo{gaFrt6K2uKSuU!1 z8DghF_IoY*-Fv$yogN!~7XQX|RPyQtP?6}T0v~@S#`C+=Vr|4E(M6`^uAdcU}BvyPzhZaA^YyVV|A-NK~6_w(&+o-$8~ z7_K{SA%Z*iwjx0~6Z1~NJnZSfGfWO;MMZ@tPb`qLqS8fO(YJ&PZEfLmj^Se;$rD8i zU0wxi;zJnBM zmagrd`iL{!-)>lSNBG^na+Zu%86e89Zk<`8?ho)J^H8yCtv7!CS+?nCxSgU6=LAPs z?t!I};DNPmWbg9~sQ_B0>)+6myR*^7z{7@ZY{ijKLXB_N>O>9Arbb6AJV1O#mv7-dG0eTnxzgN1=^V*#O0& zm`LtRnx%@Fkn%Zc{9tzP{b2jS!exYbV>j(*g|5WX+{o4}-7Xck&^iZ{EaBM6a(r7( z^BbjP_>37Y**@Q*-62y22Jb7OvQh+#0-3DZsQC+{r?1k@W+31i;hDSP(1i8}tePAY z8afERhF{31-7&(ym9-v_`i2nxojeB0GHXjMP(T7=PUajhXXfFHS2|`FtJtj2iY>ZK zJ#FoT4_HlZMy{7aQa7qhy~`MJ>_u;dS<@+E*>CTZDP7eL3S#xF#4e!oPCfe`eTa{% zhtZLw_0ewz!gj8{H~GZku_wK>1-FRnLGF+Dra~YP3wJ95Kpk|JBN0v4?THkQ5cRhp zV31T$iJ8E-0Hx^PPlk$wemXk_8TELGM3p6c6)T{6fII%D!S3sPPs<=8!d1CUUz&EO zA}NBQLy>ZUrBT@~K*G#$G2$4YC~SwNqHtD+~=Z*}qY-aLrWy9hBG_)p!`y-`;iN6G>(2Lu7`kV_NpX z0=i|LzxlWo`$=S-Ap33uA*CR%qrGpajrVIU79_N8hnZ5(g&or-;Apnxz~tua)3M7QxfNvPofwW6(|Q=ajt1@mVeGRZuBOpJC9qZ=OG9^LHx5>VF^0eEEFL`e=mKpq{w z#%&Gv(7=(W#`n!xW%s=DP`+GQ0CxZ zGQ=o0#rp!6nI*DUb%CXDCkD?!PSx0Y%<{p@m#J#MYHKG|>yh!b2qrw7Svef){RyMc zf*MP<6he!gilWb4PPGdSTH=B$4X^t-UR0Tq;}>vpJr}%hl=*s8>yu%%P+32-%vfPs z_fjF;#*S<6vCgv5#5d!~hQ@whnnH_R$V|XM$Sr5tOpSa)2kInYY5RjFQjpKshe1ZQ z#%?t02r>*%EbF4%nJJW-Wq05Yx7> zG%rT8HUJ6=d)2V_j@(OCc_3?OrZ9HbqWOnjQk)r__48^Vr4eUX=CkktlNXk_fONDL z>~4WBDy__zwgm(2Xe$Q?0%W|RaZvkTW9vos!A0(s6;p^DAzZXrAj_eNBZRC^i;mQF zPXtE|x3iJT#*sc&Ext@U_u$=0thKsRy-J>1*{LEaXErWR&5nek&1tAS3oq?-TxSWvSqVWJGYrdz5y9XZC%!u=H0TY7JFJCWs#~& z-E5>U9}_O$iDD0z(M@0_87-hqS6}kjyt|2XD3a+Wm+7r|I>R;au$Z>v@j-q}wus2I zy5fw6q2A+@M_+!1l_h};lYb5IIX&?Fuko=K(71^wgI2t-t@`q7M=TC{Fi!~dW6SE@ zF1U4db#LR@I<-B_22bfhnVZ58jUC@i#Ew(HyuMS%GKamC;oGR-dqYK;^(6S_ zh_A! zBk2*?6#hwZgzf{?!vur5k-Wxwmu$cAJji-RYjyd$X2Yg=S1qC16%;6i957)zmoaGA zD*s(b8)nujX3=*m)edN+<^C(VG!db}=j%*2tFYT-@YUS%t+S}8Xml}ktFVPNx%AIS zZSvn|4I%z>{yYl^*JY7a%R|IBE(lLN*<01OU;Gf&ZcLTUe)r4*H*tX8X`ZjeShuy< z!KBo0&NsGe7Yoi+JSrJko;x=3fj3>x^)M=a?XUl%V$s+4_E!UKaIei$o|ycIGQ=A% zg9HeQTTkSLFN0inQ61++6EQa_{ToUNFK)uWIg;f*!EiB3-?X@PWSqa%?3Qj}TQj7- zKlah&LHFoGB6@vv8SJ7GJ$!VNb#x;Y-X06o*Y8c?8J{@e24KNA*=_5CW`R3U5fRbo z`yjuIh*vWukOSVtOo7_3!=P2Oh zJpklty~mEA=`FBqJ@-V4R`(aY{xfJZIPnmRy43^97K%*K$GT{^nVBTe`dID*ODC99_{}$Ud9$FJ%$e-+Y{iV8*1!@qr zNJ**H{$bfdr|V}ct(4b#c)qZSD^|zR{Ce{s_sxK5#edrn!ppc;o24d4h0nD2>l|ti zt$-{_0_YImB3ywqL~!{KxiLQn{tcjSA=(MM&EO!55ZU@*p%acOk#3HH{aup#90^20N4pG~ z<$}=1y9x5m*69Tex*UAFGHh;^kE(z1K8MpY6&Mfiq0~qiM#5_kzR&2S=lP_Yn$P-k zH+1Nr1YI*82QTi33r%a5DhGgrKLoMCjH%7gqOa12j|X@v{ikB?`eN>i0gK4;9n5xX zSP6%Rn^cY%85ABadvb+YTJ8jzmP~$Yh5P|0ZEb!R101%HGVB}T2&S$pd?9JOFT{zD z6mwoJVEJQzxnzbQW7l697`z6HW`wtAIHsxD{hRKZ$3b zk7`a@V0EuE*x!}uKT7*^B&~n>*SDaZQ`rsQuV0gN)zK5~8Wj&yo;idd-{-w4@@Gl! zt{+fLWK5Jss2YGb4iJZ*>>tX|LCc4qu;i-5onm6dw|_SWQ8#&*un%|KaUM~%!J7B9 z`<%)3j%X86tdWqCV&)EjVAVsAy(uS0ZCehlTjP1iv<}yK$K%XYi!(R!$;``Yj0BW>5^m{r%j!ahw@2G z`+o-^sjgRtl6TY2Fv@>m?darXcL1+ZJ3%fj^>~Qw^}kp9ui&97cl2BVM7UX-vYYAg z52~6JSp&TdUoSQi(s5=;MkMV0r7ZAV4AR(ZSC7qS99BK z=Y{;3;fuPd_*m*+e_rXUCf;;JRP2AQkfmk{fLXi>|KYY zGKlD6F8i-v+bdLJVwdc`7m!vk-P@!XNfi5*Azra{EV&%Q=^gJ-CDm4hYM4Y6u^f(! z1_Di`tY*K9U8V-0eWEqgY@!1g4QcP|S9P`zU9ac`d^}ReoH3!Yc=VR;;wR=jSncG? z8m?(op2=qfc3N`>Wt@gEeYow_)|lrlOY8>(<+@`xWy08=a_xPp)hwVI?EWD0BHfO_jm!_hmnbN=TshI%Js^|b zU$8f&?z`C7aF8UGSDrBUnHrH&nNo*u^OVzpf7684y+4_jBTFMX^O5VbzD76E>c=5Z zzL-wGFB_i=e03=f(Ph(YWF()=NC`u2H7-tbpjQh{J7?w`<>LF#&szgffv5RQ=)Wfa z3{zAt-O&%xCjr9*LTD7)2bi870;Z?gDs$VrJs4W37?3QR zqst8ed!>IjNL^vBI_1sZJoppH*agXKiq2A*$SdlS@a1sAqP2SxTLmBd>W-olJ!u$i z3r$BjSqamAZqy0S+%0B@zU?-^vmP*?wki!VXioLi=}4`7!_TYLwL<=^P0LC2v>H7q zhc`&-yPN-kn1JYRBaoc6`*~a{FJo!{Vg=(#Uk@v#P4@d@BDi{~?&;}km3YIr58O{h zoH@e9Fv8#U>KOMkF46`|@u0G#v3%KLiw+6 z@dDnZWWe2M@`9K5b3?cFIKyTVzc!`Qq$v#-{a=BFx7}g24r&l^Tm!H4(py^IQg`E4 z+3y-GvNU6r9BVTR)e_mFxMQ(_E}=ct;xyFosVaUt^-;NA3Ilq^QSj~qqLOlo`@;;h z*o|DO&8izUg&jdHM_51Rd;x75SQ+z%J4R&UZhif3+wpbJxVN-AJM#Q=kRNuOsAqb^ zDTK9*y8mrQ)l1`I{R<0~ z?v@{)>CQZaz;}_!dih?@ViS+g&L;o*;UdM$pd@j`k%w3WJ!dH-nm|h>PC%HrXOHqw zX(lC8zWf>PYgdak2g>C_okACn%pcFcQWNWBNUJ?-ZF-#d%*(O0Oky+Tt+VH+{mK%} z5TtIAn?bzBC2MM?{6}|H!z~S{;rrK(6z#)_i_G5j+<9Fy)e+;1Y4nIUu-)}1Ixt*8 zWxst3X+E2Utmt)u8=KG{jH0A7ncEyh&vWh5dINWhG2I;h?4kgl9>En_$DpCG{bkI2 zWx)AhrSb1VisfZ`MB*B+Z8%^~lW9D;mfMCFEICVq zBY^EB2?qEHH_MIySLPGIKuHgf?5gJ{yJeMGcXQe3Iqbo0PfymI$A1J95wi;mUF$K~ z-DCOkKy3pTIr|R~DtML*Nbra@l zwpO_3we&i;jf52M!TW=Ya-9$xL$p8cl(-baAjixS>cv@zezABSAUVIcG&Kk3C1R4g zYXwLr>pWMHsOP@jmSn9wR-^>DU3M(@m)k9PNbqOPq`PLKl%zCHFW&oS& zJtt&}RL|(B>&$@I{K^ucl7$QMazGb}?V3t^&zoSXAo7DrC_l5V-sgl6Ft{cj%8=%O zry*Oy)G57!`Hk@n{7}teIC+1>=r6w#S{y-Rnt~k?Ak1zpIb< zrSqIoXp(%*jCyZxAN*^60hYZy z`^GEkLd>IrDF4pMO!f*Na_T2+JKIz=EHgd*Nq@4bsH{lucRU!-t2F8DR!#;Q31h;G z(;@K(Vbwegib?FBC?j|axM|3v{bLmrGT8SOq7_W>8SKU6lXCeUP-V})o@M5FCrR+Q zWN~oV$$flL)YYL&BUWcCn1A4qx$tqHVz&Gmz38F&oKvyqj|2*-n)58d-Pq1^@ojxZ zjYmIn`p6>S)bmU3 z$jK$${$nY!qs-@41CL=Wd;j|Y7QbjDbUU>7_6)mY`OeuW2(Sn);Whi{!CgV zBrZPdxUuN@LR?jBg1~dUQ<|wiH4H8DiWo`RJWJz((5rBf*PjgbJKx~mTkPV!ktuqZ z%F>ZXPjfH17Y|2GvFOtdh6uM95jyEI+uM~ezr8-5^rE0qQ_20tic6uE;l8(zpCPw# znn9SwV3wu2#!`=?qjJE5|^ zAae=0U;i+g*{>=zo0Envi@=);zMSKp0?||Nci~rg=_zVkBci5j@6hm6%Z8gYm~Gv( zW%pe`vw@*27l%UbwT6qU^7DJ&@Gkqp+*z9Ebt;nVIHwf3`CC~Mj!?Ed6o-F4P=&aX zB|gs5I!~~LSm{)n`j}72DeG^f{)U?t^Zr2lX2**Yh4h5Fp2N+?0y1vC>ohtxF{|P7 zg)Q9FTdyDbIZNsxRE&Kt$qguXA}k1Q8zs}{?pFWq%K*#2Lo54svUo)BEO|E&=vq_! zTLGMRJO@zm-F^!AbcUygt(1Je`UyyNCyo6@ZC0wpu+|}gv(=sRCUN#CVZmwI=2OO>Ja;Ad#Z4qsuiD))(Up&X$)(miY3#2&>_O+TdY_!u$%Hje6~cU{~jV&!Y^Op zSJa*W0o8E=k2;>s3C6-0E+WEgtnC`oIr`R1SxV;X{#sUO&G<6r+yQMLPsD!00P!EXgP4fPFaBc|Z??}^;y zrM`uRMa4yFLc=CR?#)yz|K1$bdpVbNj`aCXY3yhEF7GGC>BU$Ccw&nkhqCy?YTEGj zREAH%AmdytpXnTN?t8_bE5$n8vFvVAQ{TgL>ZXK4tBKvn7oj(K)JEQ0>)+U|@pN8Z z=2rRs$xPX0nV{S`zC;B*P@W9fDLn2g&|xdTbu=Yk;T4SCwQPh_bHPU$)3=?d$zMcb z<8PX!ls%*62tg9Q0LTmclP85GxIi9U`IGx~bg>D#Eh!&O|KQc4wLrQjYYZ(8f?jdq zXJ&40(el?yE#y4ho$8w;+R(PPh6XTUrv0)6_& zT&nk=0eqI0#0YXL%D~?8p)R!cw-i=FE|sZ=2+o_wW-C8Mo(ynX>!w9Q-V%+^ng8-QEjji(&Hf2#(wfthdNDZF}o1KN$6>TG%8_-v2JZh;&T z6Yzd-Z?719)i4_K;r~f~zjx8E=Cd4O2R^>dOj=#fCwkUhGw9~w2MSEo%FV120gB}g z4YCXI6*jKrC_=UPtoeL3RqmxO)lbz4d<*}&y|+>68aD*2f7H~xq$U%Kr>aCMPsw|z zW$CghhBazGo3N3Su43|I1|^Y_3cFHR7cFd`xnWuuz!#;^t3m&wujfPGcjsACZ)hGD$DD zI9;X4RL=r^1RVZZbh-HpusyTL{#?o-E;97EYQd_6>Zt;8I!nG~T@hz{nDpQo2lKEy z%2&XHw8M(4RJTto zECQ&702%K4 z3(LvzVfCaYYqFMC$tA~CWQOe3#~v%;e3G;=e2ch5W%4g&A`DD+92iVJ0{%~uyPi!m zJbmSgL%}gmhgho_Vd%4cw!c_QvQvU0Xw}*1n(cI*M&8VySYGg*6SsNV3=;GcAOSizmEnZbx)w&cHyyY@IvMle^qAp(oK64+y;{5g7 z|4Zk71BR>Ol$+NGJPN!oxJomcA`dsnTDR9e$vuy}&6a~O@^XmMITnnPFD=aX6pHfo zCJu~U@KoC+R&0@^uz|MthsxcX0v7qmbX^w-}l{2o>W(sQwkOMnJ!MK_3ZMc ztvy0{XkfXH)E=c!vH+*QDjd43le#CrNbeZWcz>^gkBKg&t?T>xr;3tURRC+(a=)gY z^lXY|IU?tnTh@sCj59lUX{G-&SA0H@7lVEhM7vATKJrS1@LfYhMn6n2buCJCsmoD} zV!AM1ti!pbBsmJjBTp{u$eEBiJH(nMTEAkN4yJW8|4qc)KcUS1aw9O&Nm0}39k`XR zQaOp~T+nMzlW1(!DRe7&VcnF8y4V`)vQ=gcxg}K`)=_E6;c(6ltoKK7_X{rC6{_GQ zk}CRQJhC&~JkzI88QZo=Hawy=l`G0$?>IdAOql#awn+bmhs)FaBTKlEzy^fd>q~3s zn<4u&xeu%oZY-J;WiG=-=a#3`YwyS66+X%l%H_Ly5E@|}Q&#kJ4=pyABx_p+(^UL5 z6w26LW7%URR$B!Rk_4jo1V?h#^DJ-RRklvrM#8-iM-Ssvr?%x7KNh|Q|KW=@T*rRZ zz;ry4{s~vzXkGuG5pbE)^TD@6bS6n@p}+mdgGafIeX-nneD*WWe$0lGQ@lvUki8&v zoG7RSluW=&0m;c9pQuD2i*wd3l;*$92T{y0faY#@%-6Z}0FOijJd%XR%d@QV^5OW* zG)j1z3wvWmOe!70OhrThma{aVozad3-Za9x8a6>c_>#|z zLu5ek>q?$(aPa#3q@R^fsv>)r4Pt)$%^5PGOXtK-x`tIRK4;7eiu_KfE)*)>PP~lb)Ub0^Y=0=0D6^q%w9yT#bGU2 zdd$Y$AEr*=s)eU#2yao==4doqv}cXO7Xdc3S30j;9yFnS+Z0nZpl_6~NQ=Gt2usLF z2!cnf@>gNxA;q)GRZjnz-rp@#YJ_rD{x`_VrNw^6vJ(Fw-G!4;l?(^GrFE|7#c;g$ zEjtOc$Yt|N&BPPA%u~eph$JG3R8ehv_Pu`%-r&hr-W~TK@45HAn}{SXQK+rN_-qWc zc{s$QvBY=vsd24IjIv1ZxY4sVy3-jqqcFf*FSqy*h#D)wxg~(EUgGoFlqCq z?y?;Mz21LAwfJ^=cyb$&zBvDAVU_5_e?{<|;BEo@VCuu)V6a>_NMgE^?NqG+Hi=Sxw4|XA~->aZpVT>j#qFa``<4bXq@2ZaR*Tl zGdQ>2Op}1VePxkuncNH`UV2b%|2RHdp|`KMpR1eEW;bU}`o%Pzlt^$Ajkn$*pegcp zJ=9l%G*HbnYLA|^C>4;uN19sYtWgz=(DOa4SFTg#d70`!xEaE3V4VCZp?0bVM{F~; z@QLF$K4p%hPZtvo^#RoNPq8}l@SYv$gkC|P+2??+vjTTKekP|qMmQ98!BrjaaEht& z_0#fz+PLRgnz$7vwGor9EK$O~I;cmH!^~2j@apw(P_?wBEd_G;Pw53*UjjWph_?2= zCZH-${s1M!fk4p1_Yx)_G(v?7_oO~#d%M$azDc@5y4%e9%>VxyM}=!}KbIOChmkBuD0sRA}(ACZlZoc?x# z;;J)s=gJ84)?=_=zE7OV1a>Y5JCFQo5>1MYVh{%xnZ|;>N57r)^*RbO)}^PX*M$6E zJiUWsT;KQo9XGaZJ85j&W@FoGV|!xTwyg;p+jf)2X_{yH{(OJW{0DdLIs5Lt&RVa- zUte^9_K#_RLV}6OfCj{rP1w>;NHpF4*=>aJDyP(p%!m-9O9;)B*iMG??MKQoC_d!; zeA7Ekq*&FL0qrv63Wbk_Vr@T}aIM&O9+0p;#k{dxZOBy={di===cPR!i5JFxNkb4* zPGeuYGBM-P<6m`m!3`Hi-##3J^Z=(pY-YKA=X}4e!_MB`-D5L)BY-uZ=CF^}qn3T& z*klr7a|u8nZ2h?H{EcTWqpQCV=lnId{y!BdY^bZtP}Qe>L`4|NfN zGMLlVnfpz9b&?{tgdNu{nUW?7o<5Ayw+oR>!#3`Na@u?h^bm(YlDjKo-gCB*uLQp> zvE=ettl>6e18HyY#1boQlDeXN!%uok{&tKwvw92n({v`eo7nOhXC39@cKrk&voJ36 zO>6Ms=$H0AL5v-D&&VarW4y)~EZLfMGebe!dB|1Bp7L4r&^m_GT$G@HW4`lYcJs-+ z7q}nPk}&oLV~1V_%!lc3x_o*`qGgrQNy3A?r}zI2Eu4H%M>r`qwUgUEP^K6e~9rbdr3vXWZ9=p8mP1Ln8u920}7eT6g zbzS9+X+7cD%DHQw<%Q)Or)PB)m6*w#zd79l!&6w5YWx1`W|eQg#DiXu_0Kw4CJogY zUnNsnyzZ{q%7i_y&f-8WNT-l;71`{pTxJtvc#gt>Cc&}rh3ziVY{vIXKMzsV_HManSTQEG?`jOhb|5eL=O}Sg~@)I`85HO|tW-*!$>< zq#UdI$$PZENhrEu^Tj+1xmRpR@&!HXhHblR7IS~pE|OMiG`c62(sPF|k%E-Wuugfn z>ZW*@Oeeq0=%v?rRmvT8Dd;Tj1`|TM-XlNudX8=8#qOqN`%N$@7ReK?vZP=9+SIwi zfH%QyGL~-(E0mes0|IF3{SUdnA7cKWo+jY#Je4t{*V5dk&f$wwZ64@iTP)S_m!}g8 z+9qXOTX#_U8gflp>hH-=@Wexnn?rzL*AFbX)S%mS|I&cr^*c}K1S5?tF-kr zM$C#2@!jekqC3)E$oEs4<|8ZGuC>@pH^vwW{2qO33yU9V`(&oxs`caCBC2O2Kg*eou_ik z{6Ts+pH5^8*=VZ+uUzZ>uV*vk%UyVSf&y7crfXH6IUgErWGw;J5y#IW1dGuJM{DbkRVCn+`1IC+y=#x~2HgacZC#gK zluOoZU2DU+fR>lIy~$lEnuvnB02N`A$q@BA=P%uubiBR}+b;b)m63W~81Gx!WK6QF zT)^)Hk=0XL^JQ%%ao_&*rO=n`*ji0g8Z;CK`d4GWt2EXhZOkk}<2}d}tY8VM8L83A zGr5alPwb?d-KG)%$=Fby)j@*KzbH8|A4s|aCF()HCRY@@%S%wg!nzY0a{FXT#9WkU z{L%xy*(=8#PF}ml1F2lV$Kcx^rF;6H?1!_tSRmMis&_hh(tuA*?8BD%*7${9Mh|YZ zIX!u4Pd^n-ethwwUb>2096$efPgHUa9CvKCM+6SFH#%h5&BhaDd!@FLl;aZbOetA% zwBGu$9(DD7Gfv29`uTicj{D|Z=QiKTvJmM77U|A!<$!q$I~+S*&6!K4IJC}Vx`o;u z*Kip#=gSyBi*>cl>FF8k7GKcxGYOg#m@Z^VL7!5P?SCk@Eq6O}wrp)@Bi?qa!e&9p zZ@=0hOT@%LG8l9OAoz3SH-QB3|T36Vm_WkqDhlT#>S^xD0-kaNOSX$fR9k# z&@mH#GN42vZ`|GUwcwWp^EMeVni72wugA!SNp3UMfsPi5dZpBB>IZsFxtgLWoZ?IN zl!n=5Q<$6a1|Oq##P_7lF2)D;Qp_FR^O=`8>BFhhx%_%IkVuKG`LDUN#y7Qe79Z4{ z_&1hsjsYWl$un|E=-Xo&*#cpKBQT4zPTd8R7K*PRp^ooSxw8O?jEW~zqM389x8hl; zxoxw_luV2fWAX2|tyFjDIRdO=*D)AA3;wz#cQI&wABFerH>Safcg=D9H;1R^@I{Xa ztLV`C6l^>{^OP@>9`;CHp+mYt>b%<%%2bV^lZkAz^7ovR=JcJlD!%kSRJ>&1ZeyL_ zM7xGLX$;BJ=uC&zEi5u2m2uiPLtr#D1P=bUrv!*w&pvA%Gylm8R?R$kG%PfuKVF9= z=vTqN0L5;htx;i%G8RD@z3~x?Iumk`+9(Pg3lK-Z&1ffz=&2XX%bBUyD+QX>^W==} zcj=1va^?T6H33S!VF4QnxXXbugqa;4Qv)R=Q%Y6Denk5#U(Nfk^ylKTE@(S>zXEBi zU3e?o`A=kjgM{oa=Pl@?Jk=nkd-d+!!Z_b-V7BH%S&X)sDe9Ug@ zq>v8!c4fQ;*+&#MB_x}L%Tv-;m61S^e_1kf_EdMbJ9S`AwyV>H+P5q{O7bbRa&O9; zA74{+2QDLYMh0)Th{`+{XH$H9oO%6`xKh}E~$5_Llk0xEN z5Nm6?kJAnIPxv>pV)OOGm8V~0YAd{#RLwx!31Wq-y=?`&Bty7B`}YEWv{wxlY1uXE zZ>y~$6EXDJUR(|tnf(w<14oy?3fTfqjt-ev0}yK8P`^g3b+}7ay0dI#(685_7Rx}p zo*ffqr3BqWO+s@q5J(rUhN4^FPO;ZCnQf;>VY|;vUs7xSa6|{>3^Jjm?Dl2|`fay) z(bmnyq+z5zm@~A@)J9lP8to`wK-o{q`d17ZEvCW2WAo;ynjH@3GdS(DFyIt0!Od=_ zAA6A9V;#O&?{$4JUNE`(VBw};l?NTcDgi*2%Ger4!STRM1E{U!_lEcK`7xWOJ}Zw$W*vQEkQ7#*OqdfzPa3; zyq=%_NnHtE=57 zZBMz5T6a0r7t-~ROuoK7V|H1?B+lke*s>u0kf$UO3}I=!tfGJP%tHKnD8^g)sA)OBfX; zjm})3GN~+e#9DQ=C5U66GS%OcIMGe`a!t9ihm_{FRxRc{rk=-UWG#T#Rmw1#9K5>F zysNQ-*N)uziS!VSIgLX9O$K27mHBdlwQ zf@D>*{uYheWzsEjqIMgPbaC^=bW)0O&no%pV;%O~%~pPuLhmPlc{}B4tmD%*x3j$$ zwT#GuxYC^RFWMRc7ylD_A{$zIde&pd*w~rv!568(4*DokDHtm?bRe7vdO&Ce?R}ZuL?$U7LMwxLAzp z1te|h&8a<(O`kMruj8+a!Pm>luaxfFa!sd;-t*uCYG!`~8D9n>Y&WXV&D)PpE=el& z)d+vQ4~Oz62q#*hqx`(Nx|P;TO0T~)y}=@gv0_4#Sk#AtED??tIofg^jv4rwQ7QmB zAvgt%&#N!}(S~uL`sRtqr^+}A&W_u>&Y0Iv@YhB8cW8z=)EzC~F>HazPRa$%J+9hX z>80V~2W3fQA(cQp7<%psf-`*bmgM8KzocZhf@HCwBv9d$UQi-`LUwcIG*N--$A)qx zk$KHea@(rKvUoc)bN)kd@ZY^xFi3LCrX$c{8dS*+!ZB<=(JcyX5Q$4aBt6+t`cEY7LubitNiKTcywA7z6H(vNbuDj@VMX6daB z9qyJQM6^ktRV&$|A*C< z=#CQ=Y*MghY7QF(^PsY52=kOaT7pCU>;$T4T#~?rEY>>9-7Q&KLIFSWRipG#lc0Cs z5m;+S9T4G6KSv`*a`Fx~`F)l@6T9PNJ z<(f=SMCXwJ?W8Gf-nAcs8y-Ju;P^LWrJpXYj&^1S z{33BsAdf3@UJRh+dCJ3>>TnyYcE`W0&W(DY1cOMTU*`bN3^n4U#YmUn$q_%KHy%5S z*iFiP>BwNBoLkIO1K1EzbiQ~4$lE*oQDe98S^}Ax%-{dRDA_dwbF0OB0@eKP0CkjY zrL}>*?+AYuPA8qk>-zLYVZbk=M66t^rTR^5^Y=o)#Fx$<6TU>P#ZyY&nhuuElSO&a zC;z54{y9DJkMm{^M6WrA?g?Wt$x(`!e;W!m5@dH?fDIMHNMW)1f`vG0dyFh0UZfzq zQA{}t8}A42s&!m+I?uQ0A2fXqClnP%zmzGNF8@JHR2Dd@_lbEu~>=_QgwE5HKnC!lgyN2 zn=x#`bIZ+_F!#EcMO?*{c&}z*txWXBz)Zm*k5jbt#5DU4U9n3sM9Zv8$tcyl>?zvZ z!RiIyX73txz0&b%_ahNO<}mjKJsevTWud|$y^BhRecCNw!RyD|+u-&?(F=gbyf3`D z8Vlepr~BmEZIMbru4)&sAyxm~WW^#J>zntcC!#fZV-3m!cu03f@KL4N{raZ?b~-OZ^6-fGS&OfZjVM*|ZXFW;r3XAEoik zdsH)Fr|&67=^p`e!|#!P3J>DMmuWdY3t?Hag(pELnQW0oSxZL8#Oe3a3@xuy5!dB? z(pw#T>$4@SfWsZCcj<3-Y7qGzw|p#Gv$#IKEq@Ltffd}If#1LBd^n7=#WB3j$B#c! zE=6zuSF(}ceso)jzEYGp=r1Xlwc;qk98#hyA;C45YToS`F0d&uPT^S6yU2k?1xU1e zv!lI40+-wwkET@t9OpjMb>hz~z_R2QDf(*SsFV@uwX{3E>H}UjaYZ)i4)@{$xv?)5pdRX-4|am?dsJ(H5Ndl|6_pGcboW^-bgx^YBkBncBP@D4X&p zQ&u(iDrt#fyP-s*Q6{~ScUjfvO9N%lLG*=}SahxXV3q&ujY}7x((vA|?z?ZJ&#Ro~ zouBA^4s2En8J(9;E&loZp^gzEG-+`c{_zT-TygT~sKmM(B(O|jRo2zQL++OLt8&;Q zrvO@)ipCd*1Q$k;ygjq`?;Tzg8}rsJXW0^<%^vk{vqOOlNB1C0M5i!*9IGupry^vu z6*#18v*l>p$f=L5lmPK;v~7GgqYt19AiM-`A;QGjpg&BRUN2P6xgzJYpUlk`I;z_wW9IZr@@V=e4=68_erK&oR!Sm}sLj>Bl-;gjJih$r8sU_h{ zrD=VuZUt-4mLHdF>!%5ElLZ2*XEGd zQ&c<&Rq3`{()7lj*f?@R%LdSU;%@^|Vi)=Osa( zxw2=2S)eB4vRZ4Yr^jCqS`qXf#0LcQ@mUlH1_jqE@g#crJLDNzs+_aGTz@{sWVc0O(GIh87xe-8M2 zY0kb5#VY>)e`E4Lw@y23q#QCbtgadBU}ob97%Hr7TrYOtu5*A_7aXI!T8X*gSq9)5 zE>W%!Zun;~9;!!yMvNu~uj|GPPR%CFNz~L`29*=I+y$z40;6s(lqeij^4OxXLEt`Z zyl?n+2RM@tvUyi%@-Rc~TccU+R0vWN@A`s2?$?`Z&oz4&*5t*+eH?3lO?LH!;T0hr zgi({Q{EosXR6-VMr)3ItOtC{2{~7Sx|#~9bBs|(Vb3SN(3$T!6rtSK3#-_DS;~|XGvTPU zQo)}z#(<}Cb zxAB24)BP^FuO|1`a-P}hEIQRCb<(}c%1VaOl;JplfmVbEccJweIQ*#3DZ5HdquoI| zhIXm%`6M(5kNRp05~0^?R0?GPJmNi;(xL;^fBam22oS*L{dK8waTTmZ!e%qI?OF>` zJrWY}a|#)TtK4g#gEfRiRWuob|52X1)`JKEmOHh(A3x_lx7m6M!-bRB7A?XdBH9ii zpUJNQ(B-l?`k^85CKFpT6J-C;o7%b_bBO_;(7G8$rIh@ufwr(*J^Aapr$l-^DRW9> zqURtAUBz1``oluwvNq45P*B%M&vgn5)E(im2{%qXm!D;mfx%5Zw$dD#mHE`d>>r;= z*@l);2K6UR8#miZ13!!GQ;FEPa#L=ww0{Waf6m>3FG4SxJl_vSklYExKx9x4{Xvx< z4|<#AH_+CHS(K{{7e-0OYhrKSOqpyI?9;e$W7ha{sgi6C(WUqFZJ`4c{tJ)vH2W%F z6u#f_vVy7C{S=Ij@P4ANm_$kD~nXh$(OLtoFFl;@aL(~DvTH1 zvs#Iqcpj3ElZ_6y-(NMro18vdeV)N!Ge{1XU-*vvgJP*N;0rjR=@=T=X+nNRz~0?& zh6WTfP+jiT-mI?0HRpl>xT>68M#{~Bqy}!Q^MY0>-=qc_d`Dtu(d1HLV+1ekX+T0{mN?)Ea zcbTIIX#;!+<#A8ZBukN7DxI=)b%eP}j*vTi_GFmdJiw;CsZ`slt+zZ)9*~EXO!E!XY!6(u(f|H>kuyB z6M|1O3!|fzh={_B_s$T7)y9-PkAa~*w+F8i^IX{?e)N#v~U*j++y&<=kz;LLE)MB6gOu8}`BxuIRv z`@l{rYvE|OGbc)?bbPLCxUOeDO-nA&>n+n5bB)DEeE2 zVF9Ln`@FxWWyyuBkyPRwTGRnUCKOE;c-j9#Dbh4}r2o5Yz7Iyml%BcTJgOpz7a^nQ z+C@*((V=mX!txN$lO&_Hk&(kL`o*c`1)e@4k zp9AX&3gQW3Eh4_*8rnoS&TkU;Ry85NmD-PyGQyG9gRf9=cV>87jB#{mWt!2$-%q94y9?7m{RMR_>5Uo z&(Q`Xu3uU@8-CnKs}4_-Y=sq$Ay!E=kr9<_?*-n155OzKFl3VjEo@6Nqgp|)@?N7m zMYy(G_QJa7i=zKp8^w}jn)lk1T;@E5)L?*<0~2qyM}88iTl54RIbMFe%o*zKls1&z zkF}JIa#CVd_5|5NB+q?V(ku3lx~V&y(ifI5;XUJ=Z>?~ngk4T)Kbcy1!1pNmMsIk$ zLT@ELKO{b1QDMJyQh583Qj@)&V*Y5Z^qnZ}!_5kKzhw+KqVVb~5(715;QyL3vwv9V zPKQl8w4a=0h>bvxE)Nqw=Mm(5`=ICv6nEyv2_=>Q0@@YE#o7 zRAWm!z8kQiHPyvH-~sRPg85jT_~vz`s2JFy+R2o^_zkus@*<6Vl25VUks+(gZ~ zr6+ojN;%S5(}AjWuGB**4C$qLGgv&eby0Ir1tJV?)erK4+RAjwYOWz%c}4*IiI?u1 z-?+K#UJ$X(q&d+0oVev8Jn_tbZ*=PSuD>*-cVTtN>*^zfoMvYA7Wf1VhPg`o7;%LK zQ?%LrO9ygI@&4=m+17S;cHoa#a={Tn=bM4Big&bJ=VGnzca?}2=?kn&wn2N;%W{C| zSGhsoqM9IC<}@-bsc_Bs8(kC1h4O-`0i+CzZXj)V9(W0C1(o05185&01x}uy%I9pz zCx)o!X@INM--jRQU!A#ki0>Ms(>!iAe@iU*NiMv*_A<}~WyM7D@F_ii2;HM;8Z^kts5YdLoG>yRIRk{VAJ!=4EH-1#cWvMj2f}=eZxXlquwWI75 z{yl}o1r=cEeZ;P7wRlJ#g#l62CvY8z!l1~(W&@+lk&{f1iL3ynEux0sR>d`u$rqpY zi9~7}5Njue$G0Fa0_1;N7DP?o750Dm^|8GCK0ZJMwB7uNNCYOpMt>>d*BN~%&6YWm zQ5IOZF8vu1UTT_555jTJqn5%EZz;#|{m7aLp!%6mjlQG|Cq=yPcHhh`dSb4)N@O}L z5H|UsE5#aStE-{*=F&tU*c|}qo=-jHQFrf&GZ9Em8_U$-4|ni{;R|=UUf$Lf}Ur;Kw0FE zzq^ju`m$hJ09hq=&x2i_N{_dyO!cb|DD?C6v@sWc{LVk*9qyWu^95dXUix;Lbp0uK zmTzLi36SdVFk<&yaiJRFBPHo7rt|S`VidP=yrsS=_Wn0-M zEt+EajF#NLnR8LUp8PTiT5-ziRLsbGwoyhuyH9gbman`1#C^=H!5uqEVe|TYWIqGU==TA&3x$HJ=N$T@p)NDI`wMXlutlU} zK8%F|D~!Aj9&sN&_>}o#W9+aI13ZXBs?H=K(maTJoUm2{JRyH8*dLhnSf9XgF@Dkx z)e*Z(v$@^)ka;wA1W#VDJq$iW-qlp}7%@Wo>ulN8=Q}qu8LZ_lvf~0(9DgUFXSB#M z{ideJmQZ#)L3r$*I(?Oc7DTGTuu3i2fT9EV^^N{^&_r2#=}abAdeVuE;LO$1aAs%l z_%f#Fkdxj(%A=cbOkL#hGleO+W-1IPu3+BGJ)0?JkQ+9~fn3>(yy4H3vV9W6L^7vHRB-%-7QOa_t`in!RDLnO@Xa|w?t`C zwbyBspA3Yz!qFJfBJCp=y9wWJc5^#Ui7Be(9woVvDXXMUBvvTUVOAw$uR+v?QHW>4HQ!N8kHqfFUJ) zBgOVNp0$XX*olNM*b8}p*O}6De1K=i$hc=3bvX|li%LG-O{b}8a`f;cnHLN5v3n7t`2?lLE!2i4S2xfV4T>NWsO!JZ z!HqQ=Vj3w6#yZP!C~L;KfXx3J=TI}!J~?hb^qwZGmWUwQk{#_jDhA7rw6fg}CBd4w z_DY2fh>r@cBEF|p%|?{e$kBc3&3O^-;$q7%V!pybxQXZ~bX+TuRZ-kn=5OcJV~_3T zEOa-PIug9ah8xHCMYl!#$an;)+~91ot;H+f6X-^H-t@*5j_m#zzT$N{2lJJAWY6Pb zn-`T>+Dl`d?q;dG7z`QBIneJhJ`k;Vvv?so=U%XgQ$uckHe%L~a4A5OxRhOfPJ+4V zq%GB;)qEoL^!wAon6G&bsYQ?4too|Um5<3FK~|iP!p_Oku4cLe3Y0yLzoHHWZVxJ%_7;3r`~_= zsJvlLn{~^^1OF- zXveBe=gL-%I~wH#t4BQNC9P8u2M#4-P2Iz$pN2Evc_oMO*cwkE96k5B@y4Yq(N)mh zBF5eoe1fJQuYZ2h+z_k$TvMNO*OOsL@Q?7Hd)R(Hq0d3TIKiD*4-vrnVE2&u@Du6G zhU7;J4OaG*@mMBfG4Ls<#1338{?OxK@MVh(+FIu-ir>q{bX-3yzzuoE?fUo?kKr5{ z6tY#@V_0_6!C@g5)nlQk7KeA^sE@t*9UH!~yatIbctPFH><>u4bV^HU^+yfgb=ulz z=m_n7npl%0mNR&h|LUYz`XUTdw&f6~uG+ZyuRtk5K(-)R7C3<49JWLSmgOIhRE_pd zdlL@;5dContl(Y*AfLe$fU{vks*Hw_AA+XXM~Poi*x7XN3{2;IRW1Ku!R8)2doEh1 zb4E24+}f2cWInT#Uof!SG{XCqHmmRTv@0UrXUXlMY#O0 z5JLq0VX#4Vr2I4r+6zzm}p-@RU_Cc|Aku?R$=80z$&-RM5CCbKUNAm4N+O_O9ORc!&?( zme7!oTaGiWrMz?PpTvjE*Wh69k*wh^Idf={(W|fE_ZF1Os7c^KbRN-GG#0==2sI>1 zdWnC0p4I<|IQ6&IVyd4mwMQcGAg7SoH7UnHu>-C=@GcZ>E9NIYCCop-L^Rq1D=S3) zP3Z_6TfKfDj(wT>(7o%AOg?fMMvZ~3Ufc$#JsYr7aDS))958?4C5%BRZpNy5mR!st zJTxqthMp0Bef$}oEhaFI1$5kf!hXH7vIgG2aS|6I3!%{&Xv&-YHcw?czbG-;@ZF(q zDZ9M80cQqH(my*bNDgl{*oq{6bx=gaHB1YCS$P+_O)JL@bLZWk-R_r?!*^|!DuPi| z=}5Hdv(5qtr`N#KZBhuTsTLQ$VSj5&R@nHf@=W#Ee&byEU7z5D-3~A^@gmNUAJ@n+ zfU*y=by)lpn8pJm2R_q3%d!nC&S~KG+ibH8kQ6dGJia0B$+|O-pcLyf-s_WYL76RB z1Yfp^&GsKSaKM%N{4m-BFji*=@peHI^%rR%bCl`8tA&v9r14y28rP=9uXp>Kko2%6 zXL}%iWATXI)`ggLk$#E~agGhdIBQdeE7u8awjQ5fN|vzVTfLs-b+IXZ=sNsbnGP%o zrt-R?2DIT~Xg3%N3R6qXqVY%dDgWkIi5f*iXE|4tFHBlS3uyxzf{R`qW3G%lh{csY9Z z`luj?zc|B$CIsH$!3ZJj@deJ%CZ5fhxjqh6D|ZDTbtb!b*YPcXVsnd68?{MBdQdz! z8W7#eSe*a%x5$fMW8=G7bZ}Tp>JbEcLN_6S^c(!>^A1%%i`?-+orT~DyJ6fY79j~) z?c5rMh=UM*c6W0I0QlRiO0%9oQE%6^pS@?QR+L9 za0$sfQb{AOaKQ%L>eTJdb@e7yUZHbUkO*n=!n{1ND9=Z@aiotkmL28}H8vePKl|1F8LeN+=FhqWq^lu^pdKqnP-^;l;u{b83$K7U!~ zY4e2Y92!(iN@%%(z z4cp(vs#2duNtPxJIe94QDksUiCe$C67$}_v+ZkVrv8$enW6>KQCw_@la7tX6N&;{r?|R!KxYrTfnfZj_9iWHo~~lb{>if#;XsR z!-Bum$uU>3DRv}|=noe=7wildE33@dv?z)Tx?o~bB1U4(e{3-9^=l=i?EGaP+ydD~ zU5qRv`?McY*WrXxuyc4I#ulBYbj9Z94cmq3ulOQ;e;2UrbDXI&uQj~LN_T#?F&T0i zJUmgC$j;t!*rFb*?L*5RqP*Np`getOg{(bqHa|&M9afhKcb`S|LygxlL0e;db_-=p z+>Or2>Me?E$psjSat651WTP%=f{acq(kGnr(Nsgnp3bKpqmpp2G6X*r4`o&byuWH`v^O-lRcKJ_SAT$#&bGq$shnE35lHi(wpr4&U`7OhF2Y>%Y2V zWwP6cH&!hB$8lZ59rBqY{!c`ItBWKv2Bw8aKR&7wn{zNO$+x{2DE}<})n9yS+la+` zl{$Uyg2W+G$ybm38xH_8uhawH7DGfMzU(K=u8vWfe=411=pkqwMu0y2L+H3>7Zaw% z_NEcjDJAr9Y=u?L4uY$-qFn1z{f{DsE3+zT#Y;#@!U-cCF$f(B-u6QEgkFWxgH)GE z{c1RRj&%7xek>IMO}pW5yqCh8LYXTXZ9lugj?b6Vc&WNeh>FaDlWm3(3^J1u5?cM+ z*x|m9O-*HkAj+6Oyk1>S=^q!-zXVJe|>ltd{eHU*?3jNCI~jYsuBpykPx^otxmNVz$M z@^IX2m@sAG!%D2!tqT(vBi{hD0zA5=HLdt}%RILHM!|mQN4UF8Jy7*GR_u16a`2Q; z*eyaB2{|S7#vVmIA-bMJZ)b?t8Dv@#SO|Z5}=4>G1Ireb_0ZV9oA!la4 zL;?`=D3!ho5`{uw%SLc)N`_T@>#h#=DM7V#O>^YIO{Pgz((j{*(gj)SgX;K~j~Xc_ z4mm@t`uUFMHdmFaRNI`)KPWShdG}$fYG*w*teF*}qrjIm{GI2xxvup>C&jmQ`m zcx>@)E-w%2sXQoFiio!)4>Mj$1tebV4r(gMNKbtYViX(c&|RicRFDSuXF?MSzY*BP z>&k^32a}R0Ag_dH#XwI~ZrZUyZ&H~v#JNH0k{9=thltpkWUnvxmxb7;1FSHMD;YeF zJ%reDoC28&Ikr=Al&kRDodlZ|a9-fVUIl3C-HjP60T{}2%SQGk*MGsiTBufZ@i9WQ z)t;JMI6f-JGJm^n$Gd)+xb;|xPXg_TM zCzHuNl0&%H;rLJJFgP`&;HY5Cfb}zDx~_(?lnIbWDZPInJ@mxVsZx(z9TV~7CLPtt zpvj2IMe`K%)O7Ik$TZs|N;JQp`p|i)Ii_m|;8v@6one^n?iAt>C~H1ou9=vPtg0BP zywR@PVXcK-T`hppP-8CxK?MJA<&kwbS#h{L=tC-$307We_KCpEGX(jiW6&8GU3^a% z2O0_xQ?;{!TU&huT)HMtO4pqxv zW_ML8P@8gO$D2{6Ltdrsc4wf2R7y*5>C_TcPz-nKE^>(+zS)N@s?M{%ACd0yBK0@5ZQl$iaW_=(@v(C1lB;lEh&5*DC66unml-bS{ArRmEZrj zyM)!~0w?1^!dbQ>cDN{61RGKnijOK8p}B|37;Fz73B*Q9hGdse{+@FxX4yfbHZm6< z%y||L$d_jWVX2G%(83{}N>-B#jK;w~BDR!bexA_FL0%J*Vt&tGe}i}QdA}z$yG{8; z8+l01yf%2*X8$r`(=ePP^z`N~Q%eC@?W1J8A0x+FDC9eCwG4ea0@k9jf^Oyc&#QrxB4i5Oy*XrkS?*bHMzh%0u?g>{bC>=9DD|F0JnL2aG?%4s{)T5=&9 z8b&Tkg=nL00@gthY|Wp%%08g}jSq5+W5mHccoXOB0J>6^A!#@``CQ{Fc<4ixw5uvo zVI9@Dv|7H+sl!YS{Aec2lZ%+vv@z({^&G(&=1uE*WAmAi`&NmreSU4kAK!?`@J-G` z5J=s7T@nv(|M%pb!Su(6Ocmv83bS{%m38d3$0@(de%@8~US1fAq!yCPO!On>&){qy zRw>o*-YQ=;S}X+e96!zy+WxN;jR)Q3JsXT}Y(TX;GL}|<^zS8~K_`kAF%~A5$lpNX zVh-!}f7MYzYi~o7>Gas5D+Wo#pT^+EI0HWdoPm6-c3 zZ-k?Ytl4AsxxV={ng&3VuJ2udzHM-}Gnz-bY8ihN@`I89ev7=&wM@o!qF<}Na>*;T zPv{fdW(R1n#6)Mu(P556oy5AVcq}0E+l!Cv;&CiHCRogZ_#ga`d&3}R%YQx|rI9?r z&9(0Gxbc2)*;0hhyf5TyPmSt#5~zh04VjpDL_rApGZT0fUyDTeA*BM|WJ#Q4pz>y> z|J+s>MN4O9syY_c-0NBZyC`~Pzgv@Y`e5!qu(FUcCfajZti!FlfUY{VUFMGO&2up6 z334AvCpbIJu6q+!@2Kf+Hpe(+v-hD^=gz)2@679>%L8|^7Bk*(OD~P#+PFy6yPRxu z09d40^!9b!_IRz-NrirI&kvT^{x?(wwtG(T7 z#`N1Fj_#paJ)c~j8Zq$bB}*XrPuMM$+ZHm3h`UMlP|xXx(9{zfz|2e=T0gm_t{XC3 zhVR;Kjk9^avspX4{x!=aO$P*n`mfIzUT-GQ(c2hs&)O1l5KXckHAVAKz$=Gi8DMUK z1xRd)p#i+VH_&!}Dil-aQ&V-4^P+8}1Doz*xlVp6Mejf{rmFDbNmEst*HhI= zjWW_1c@DK-7`Mo4sp9T3I;v>wxiG1R*?oq5qs{KciSU#WB*48D{VmX6%PEpbbq~*2 z+2z?&+hSvk{$_V`apD8DK+*D3?(`cD?+;=7+o=8!1^;r-hnK_E@!k8{|6BPq2O%Uq zkVX6%3h0e?MD0j;VkHKa(8;J#WSMXgoT4dprx`nL+gZ2F=MA=*nim3J8B?^$o$`{k zGk7`BuV@R6rdJATsc;NlvS#l4R9F1$k+e#-)kSk}ZP|W;(V2*5$Q`0J<75=9I@F;9 zm4?t4lfryikm9SoB1@4y3(3^&C)NF!vs_Gg4%Nx6xM~;sZ7X`5!8RR9X}X8Wz(&Ak z4DB^l8~OkHi^UgN)6#exKhX__M3km$HdiQI3}I5DBqP-?XmUlkLW0i}f(fS(k1a?D zano~h?KSZkOk_r5;Q{@!hbxMZtFXNL1kT5DIQnBw-b$UUp+g&-P%EQ2rTx4Zf@ocF zeKS+R(L}j`eu=sg1g%snOweT&hmGiP5qv}j z!z%0hvsiz%YmOYD()4sjVB;fLua@c^Z80-M<(dy{4Cj_+uawWk&dGZe?PiKDI#$wZ z9jT?8AS2(IY~k`l$_$mH{e)rG;PjX)Nw-=Lpc>3)vN#44chuB4|~HT-?^#c6z^FlVf*+ z*(LnSThUTSta`Xuv%YH%`#a$E&Ex2c^a*=ftXXz98$d6Cs4C!QiYPF8ogd_R-}Ju> zE$J>N@E)7JF2sA}mHjH?;yBNVD59jT00K`#GM{Snofh z{F;zAjo8j_6!8{WC68Pik@p^sGE(3VPS#F1YynRTtjH)2u4lJ%r$a9&%i2%b_ z2Y}*e`sv{eOGnJ?Hoiss5f5t5I%~*LnzBpC5s^}-|uz}FQ zGsVKEvr9$uv7LH-`QX_llR&zh1(07u5$e z{B~O=;eWPR>Gjp-LEERLb7l<_00+eq1Ydgud`#d6PEnw?S+2^^1(e&4-r=r~K>uf= zc+wQJHBDiwXh%x4Z@5g#WV?LBFdt+(_HS=8*3404B55GeZ}#4qVjPTPh~2vMlO)M2%$?}h99#^LSk06Lo%SZP zzTqu1cMR1mGNQ{>W9!IQoHA8^rv4tBa8P#TRyOrVMSb}gUGmW}wu7`|$0HPqyx>#7 zr*V3lqK$t~*&JD}t?YX~H`>ge%eD%QR`d7xF&cJelb2DknG(vyIr^UsTu`Qx81FGv zWMRB%u&k8{r5<&EN1ECVbwXYgkLoN4=rjYQvVt*}tcCe|OGSXXz$o}^sj~}X6zX1{ zibN;rLaFe|iQD8gQSN}>3DKbuXq)hY7zQ^<;q53Ytp$@dR2lL@EwBcd{?)*0_YH;p zcGp^^KdIbUpzn5Uxd_|H6*TL!kEqjbU--w+HyTud(+lZbT$&vvzNA9QJ1h7Er1Trb zy)u*L*jHTTL?}CKY1zM5VoMbnLy5kJPd_-8XI;+HWa*G_fJ!bwTBln2=me98LB%M& z-?8|DkuWNGB}BT%*M@n#hv(7fKUthy3=k@AH;iMOf25-{pzMRWU`6<_wVWLH5*s) zkiaaz?w)k83m&?TIW_M6PylLk;cABvLWgN>)w{f4mETPA+CJ zzbh^CeMB`@eV$Ui|6~9hImO*b%NJ(awdtz#dtFjaWdz?1fp=cf(h%r^+IE{;OSyHlv zdjWsxg%&;}9+V!yv=4g!oc(7m4W=W`Z1!1mBWe09`i4qOq>H2l^@v;<>BMucs#U-Tw35-D=NGB+ToM(g&Wgp zT?$NPh3WX~#+D)Za1Q9Y=BRe6cyT)XjNrP0-Sk7$7KdilsIjquIxZz4)NZy>I480LbZ~5CM zO=<{m(yn!~w?jav?s*C{G5B+m7IjKhP_CwWb)93IRV?*WkSt#BU zjBVQ0lqU=a!jw0y?<~1yx+RCZ1(*| zXvHF^6nz#B>AJqJrr;&i6Hox+O&Q%0n-CTjvfx&R%U2#loT|h=!zf~gW#6B)!9a?d zl78m5XI#|O`?F+%)F3Se0p;{hZf;MsYo$bnEffwd=OHR5hvt4tCx7%*(=L==iBMkG zgcj-&!G^_zJ(`CFhB}B=O{r_9%pk|2xmWhX#!r%Fw#VBB+@wEz2^l|VTpo~0$Y z9em6X)J&{fDoG-1Wd;UNTIn4q>o@TPBHO66_*o7KRjsVGa)n~6o88Fl(tEVF)21SW z3cImggL;^3|3(B;e6r9ioSH0JO3v$ox1YeiO;s5cf$&?WW>Q8+v6to7mi)Jao0$6Z z&m?Qk0(2kWaWip_Ey1i#!`v-~?@`A{FQINbh*^77S*6BHk3quSY(QgsrTMRA{tC_vna>sZ7AH6;BqJmMlvR3|@U15*kN7hJaLNbrESL%x4Yx zDoWAOA2#jN4a3qHWk)^JE!CgNHUU8>Wqi7zh@2+j4d7WdL8u;{?0n<#~1 zW!ZK>^W?z&D9o3BbzSFDmav@73%Dtz_toES4k8Wjr3VG>W|4ngV3`GFkV>Nj;-m+d zV#=pI@1HDOXf>NEif=R{Fyie@0KZ&sxK>+PUrG@sC=I0amtQmfWm&SFIL=1v0)bLG zjylquI>%*C-Q9E8h7plnqeH0^_^7Tu?qeL#>Pm17%{%m8+z*;6f3ElmbI|B-N`E04ILVZG*&CYGScYGvgGIJ7_&!~i-W*WodHT(Iyd`?0 z>WYc|qYo+M^Ln6;A1@c<1ph1+q40uEE8Q96S~#baMEDsCb7bJZTi`q&$xQ_YFhq!+0g(ANd|t;hip4|3PFudkdzN$0p$_GG@Mx)`GsG-jy^+tApAr#3os~}qFL@EF2Fa6FqWe`5eJ=V9%%%Ed zu1C3CoW zt&zf7cWO&ZP>GAVPPfFX@Ox6yVmuFQZL)2`=#QvMk70sIvocQaOhIsO8LgR4^lUUf zc;a#&Na_oK^nIIE7bQ&x1g(x>H!3Rdi;ktpfHfTSTukhDFWc(hE4Om?P#}dFn1hq` znx%@<2tm(5JD@Y+=oIUv;vp?WWEUyeQD`8cv<$=50dDWi;{MPF?2M z@#$8j-1m)dmOzq^wXU5Ft|HG3$;L_yxMOil1#Xh9b8M8yAy&c5z~y_nhvgN6Jx{(W zE!#;^V%$qD(Ag$iMMGr4t-RN%Z(&|Yuap(69p~`_q2d2#=R*sg;LU63%^Z}T_bqV^ z-l+&{xA&g6GvG)&&8dy=H)W)O_-2Pabi8|7p2@02a6u4e8_6NC9+HFL&PC++-4l^S zerZgz)z&cckJ^T&drgm;IxE#O&QK#Pzl&e=#@Z9KttHBBhQJtHS!fek~%sgAz`dGZr z&(^^3wUrua{{h9Jy?&Wllker{W z@0r6t4c*iG+;1id!!|~#yj@phu1%O9x=sIdR+&+`AGDZ(&D>8@9Xmw}f{=kn1D@>=#vk|0B$TDKe(lMSWu?u-d7K?>eE|JFO{= zwrUsjM&$W}A~KpJ6EhV#a-^&T5o4rkvX_+(Yj9CFZkDd5(-a>n6)fSB+b8wL9Q%kr ztBDyC&SHt}5j4jQs5VZAYA}8vcbe2@k?U4HbhLI~MM<2Ou3xs|nO{x^VmttF;L8JK zOw)31oHC{+gU{oGJV9^Xg<&`2nDb~m|9G^4a2teVsHiADiEz=Uso7dn9d|I9P})OnU&D|zyp*y&WoW@ha4l|k7C)5Od(I4yfc%? z>Lk==l$dIxa9%ahwby6FlY}(ZaE-r(&70@c3!`5g%*!414*qbaO|05a%m?o5eSDwwL#Fh>=pjJ+WgB1Tw=Z`DYk48Gw!@- zWguIwOoO3Lj`KU%`;l=sYH~9e@<+Do4PvC@_T&EHCA;O=vGRAEBXejHaeVgZfHQ1BkqD3iPOx1B}jaI8T12)oLNGZ+EM-k@-7R5^)>;+9}3#m#g3-Lkt z8ZMW1URa6^8+gkO;Ho*)7jBS!TkqE!2CgySP0E}Re#}?ETWT~K-9pCf!|6l65qV*6 z3OaIJ>(0!hJTONaH8VRpgS9{jrI$-)P_4)}@F~X8Rl6!BVvpKQY`f9S_DYMHiqJ{> z^Z%D_Z=1_LO*}IeJ-NM;@x_AUK=_C>!D*_5@E=LDjrGfJybh`T0wk)Dp4^qzVo?Z1jVUQr%M3pMhf)u{fBC0d;X9Yn2G;)^ND4A z+as5EU}~}10qV>gf%U8r+#S`C9ntYAD}vVC9RU$MhCt0YLys4Lao$X0G)`a?V6L!C z2suo#IyK{#4h;OcG9~3NQ*``Wd8m$PEV2)OUhT0JQ%`bBJ}k@cQj=_|N40JPs|LGP zNmvCA|6IV8Ln4-BBSu2|+P#>5JS>?i*X6tRrxUCm=+z~z)rYV`;VUEii3}8Z32LBM%8qyDH%e9;)sf2pr%Qf6(V0uSSEgC*T))in8WyC zT5T_%n7uxWvqF!vS24k{I7=~0bA~u2pIZOj}?cHg6e{mi(&GceL>kcv7iIJ}hScikdVw zU8wdUa37Bon_9|(A$Ck^aZjkYgm)SmsjXR83K$av{)%$z9X<{n2*%WDE zrd|#fBN}S@q#(R}7{BWB}7 z(S6OcV&)m;s_;5v>$GZ0$vgh>?qiepnUsgl-KinDC#3<`<@Ep6)V>&qh5n1=qY!vv z-d(-pwe%TR$h+QyT$=n(h^|L1%oHXY&i;8~Uo-&-Ex;4TWFzD76xVlQ$<<3I{^Z`{ zWLJGRPo(x>I&=V#oESuib=8!^ZS{0(mHAn+JWH`(q zv~s?Q&!_d)2IroXOwWC5{Ih9)BBTMje_twOCb4>1#01NTdQuwv78}jnJka5+C(L-2 z`=38vy=IIDnq8!5hiZJI#JB6h87kd&vbGeyO%ok^p)Cfl|C;$i$>`vyd*N4q--{Kc zP{7j~zB3Dy8(;R?r#@l4Qu$iURjOojxnC0e|DTE-A2e@?2Vw!wdHCa2?h~e+UK!z= z6-oKb({KY`$C0XdV0Wj(z>yY-rXHkxuD<8V^8@){>fG`l35 zDNfp-Mq>FnH2(%SOCxEatNE*M_I{JxtSm>r>tFa5=e%h2Et`pa*AgI86)|;iKZ9ii zT(q#DMUy#n`YnD&(W9@VNFA!1b#trSU-1UN7AaE6_|FOpk*(DV>_)-;v#+3t!-tF` z@B2SAEc^D1(2Kiw;pL89Reja>isIT+gv8|;7-d!l%NjBb)n zzv_|BG5&61QldQc5kiZRUg3-DQ^Ko_8cWxffd6QgcMds?Q=?tl$0h4vxz9LUq}7zt zxn{RQc=E?<-%BeRo~*vXNShgJ=d6_%jMf#62_R&6{OXM zenC0k<`q-u)=RU!w6qa8wJBn}pCnLQqu0cQfCeeFeb{Inm#$guMwMJa%vtEczev4= ziBWyTZlC9%*(HS7I5xp*BHIOHrYMebJf2$kdEyCe#(%9JQPdTK66sDAOgb@+u5j|# zNX5O;swk;be%AOBj7^30XqwcqE!s@D9Y3y1H|o=MQX z@RpVqZXUO;JYX|H{I8i9ZneQ`^y7CoW!r1n9?|5hTgC$F=l^wJ1w{QG^p%C$(cj4Fw` zSg=jE7-}`fqTN-lngySwsEQ?*F(3ShqGif4E|@!>2x^#vRKHAj#g1Xg?$2z?v+_4# z49uek94{=wyDN`7T`z_F`@biB;5bqw#onDrHis6T?Lz zslp`DcsK3(wNlMql3y;1oMK5KO_`6mtwEdnYWXRfjRdnA0nqv?aL86=5STA;4--UF z5e=b0CjZ|t!BAloBY|LU$Z_%E=b$5Us@dV+3mXh--#V#Tg{bAN_2ci6n^NE~4Mt~# z%iE?Qor)mE4c9v>CB;OQ?lqr*qI^v?=XM%G)-=CPII#@)_O3D3A(TjS2DhK-Yg5N` zv@C_HASd_H5Jj024~fgqD7?0Q+lMAB@N#(R5+)U8uiZY4e5sSpn4=x#;}Hyhdk0qc znP}R+DXLcWr(BV?(kQ~N*i!)lA6q=&B}+yOb3n{oVY;DCU!xZx zxhvyMtK?DAL0lj1YW7bqw#<@Hn5>x?kN?^}&b+=rz3eajrB&c4_LLQF%g{eQBkT$H zvmZ<1Y;Cu2Re>VkTNM@uN5?c@_C_mVw!%-TDS%*`H*t%uYgKa4lB2inZHg7>VpkDS zVF9XfsjJ)H7YPo{$&~H3BT;PMjeem{U;FzJGir)7s7m(f0tJmg>-kVPqgZ&2Y}+Gy zMeTejH0dH6URFrH$Ml}IbtC~Wz$Kczt)OVxuBbBJ?O^hswDPiGSK)1-qL{cNI4D-s zjUsQ9Xr~Ls~Z8q1nsrXBWLrllTNxmjB)17j{H*-(b97q zn@Y4h8!r7^AMlL$`Bk_a>zElcs+W3YFl(#*f^V9#V9wtJ10^s+C!igjxuH>xRN7vY zm7%U6BJV@=lwXXwjgx3Q{h|k6N-vNuzY_{1NZ^Wnc0(X$VS8HjI!A@nf1*xeC&}^$ z8`oK^$o_zIW8HY2Nu#tkKTyOLv8h*1M^uWkCMoU0ay#m}euXp;+$F~f2!A@7;E08T ztbEB~0Se?Pkb#0ZkWmmmfwu}^uO|Kv5H+?8VaHow$1mvn?VYw)^kEMYZRN-%r=4?{ zJCDo1qO4#!VxV>X2MNg8r=nYv#e#-JtMz4KVZqT2u!cI=8)vPC=@M@3WS<=;ZC+pH z7{#!)Yfo>w33E+-k*4=gtdmrL#l!wJl?#u)bZJE!1-FMf6bq%jn9qodOsE7rt-5gDNmP z5&&?(;+$kw2&honi}n-$=|8aoc9G?o*7^c>UVz?(DI7LP)&**2hh(H%1#-n|aL+9X z9|1wCEj3cbE?F?FKk>jUj5N1J9WGe?+ zmB!5vZ&?)SucI+{B=$$@JuR0;yHtV6AphJi&_K3Dwr*HA6MMlS=zh^zkv%4gKVQ$v z8wLZ}*@%Bv=HVGaGbZ+9elfgcN%BN~mZ6+>Wl^Q3P;e9;-5SZJ+oDea-<_;bSGTZ_ zG+d;bnC+UrZVm@}7DC6zv2JHn-BM8Fm^^J`49DU{$A+3;9+;-_JV7H(Oz*ThE_5al zsa%`&O!oOxze#}avTWf3`#EX@Xm>Ah5*{aQXxkmDsdX7~C(BOY=<0iI9`C6$U1z!- zVKJ%C$y}%1Y>~^60OYRje~JCYAWwzS7n5)ec8!cQo1?ZsMhxQLSK{>H8(pR)w84T) zdIs6ffalEGG7X*39kit>$YM1uoKPVC)Y@hj9VTwpNFE(6QkP@eXpc={$}sS7-trgD zbRdmiRlKoC&=Ov{poN_@U$Ux}WG_^}kV}s9a3zVuEV^OE#isiyO|?%kt;IreT~E}D z?aAwEGDSf=ana0DzFYhQshSOxyOr#fD{;P1JZwEW)sz3d2ci^AtSv^TQjd`LL!wWWrj=UHrmN z#z-53`LvUD65U||u-7nKu&zH8ib#DGluu^(X8^?K3t@_J3)meQ&qUt&uQ$_?Qmo$h zFJP%aeI(6SRW;AIS&7y0-=rtBc{yzr4AQ55%N0;?5_25e=>`aElN4A1*pvyl$!ks- zyL8zz%|R{Znrlu5O>#H&rgkfI^K2H68~v4~*7;UW6V5ZKlaV?Z9^)_izB@mTgJRN6 zt3);PXvK%B(VDGsq|Ju@@@>8!_GsUMv%kO1gf|-&K&IiEfXl>UNo5o!l}=Ho#HnuGYG8$X7rDsY{J8De+7`^+(7$s+d{`2dAE|C|h9o|}^ zNOdy(CKjZKzD(a|O*D7ARN3AKm{a*&EGV54R=5Y!mOAZh0+Ap8Ja5R%7B2yb(?i5V z(Mk{7!v_IK3y1>k-|C8nuOpSRc(^v3lbL{7y!baGmrFm2h`cpLS|m3<9+p6ROem(N z=jdpqodt;THQx-KI@pEqkVWOltzlD62v=3=l;sxSXLSZX`=U$GOfIcViPCCPWk6Zq z9HG6R_%LnjxC+7=u?)ey+U5{da+0Jb#-dHqx%dG`Yt1D2p8N(2yH;Gj(?ME_Uc80G zvt57-tX|AECi2nQoUs}QC8hlfE!=4fOZ2)+0 z%m1%-Sh`E-uOB6V(VmzLsm+>xK!M;h0R+I%F(CHUQ!t|2djaY#Q-4|M&v!;(v_@qP zFeziTUbjcjU5fYGT4pTj0k{Ip+C;1Odk|@soc?u?b=oHWLf#!+xZa@X-qMy#rSBq` zfoPKUCNrGGj(NOJq{i3+yAio8DzIn_FBARf>!1I%lQ8%A}Zn#z&zIV1L7*ZR2 zX8T~!o)D94*P@@Rl1c0rDI>zy$>2p(UIa^(`!jN#X*ZRqmM3M6hjEShV?dhj8N>}? zMt(oBPILb2#o&QDebggs(~L`KlkfVRJ)=kra*tDzLuJm9)%O%8muBF6q0M$0vB~YK zQI z>nYC+zdy2rE+3}GpE&qnjg#Vzv_#tjiaPgC)m6KpCu{sL0G1SY@tWeMxGX0%YYm_MV> zI3)c|Cq!c)omNoAs$Gbue4b?4tF*38EeZ8#SAD(ENgjW+{4noIfIlh#4I;;Um#Z`s z2YKrE@!xBHNRQpCAwQg;`kIlpb=N~o{*^b!0kw5GUdYPw`O6v0o!4st!%-kr`OiVe z!en-I`R=V+<8JFWM4rWNKA2}>P$g?2vk1N^@*%S-=7aj{x}D+Bv+YbXO`aR<`ayq5 z(o)t#*cBO8Gj2d#EHYiL9qk5*1A-hN?Ys6p=BqD}gL<5koP`%0givVNyr3C5Fou1l zs);RO#im%B%d|;b;T9%W#yv*9(FY+n>lvXdnPtYQUGf0prFgz$<0o=pT5+%VH0dCC zo$^}Xs(AADM%YMm_;CuMWE&Bo>c$XtzYw~bM7o-o)AE3Q~w~~ z0mT11Abma;?b42#xILu7{=oBxuY1+g6Z$1*vbnWvTd;JJ6XuiD0v|cU%rEjIG1bE~ zGu^G_*qkMa+ju)PhPEjg%L`;bhZoT;k8`m?eGCutWV&5thDV!7Q!mqy#F+v7LX}JT zq7AygT!FyDDLn3XuE@HmmqY$X5YtVq>2|Nz!X*hsk6wCn580AS$|xD12%GA0j=lln*%g#m#XyF_h#1e0!G>` z7$IyOF4Ds$p2Z;ETXJ~qRCzJC*-~LPsB)Ze$TXFr3rL8&E-_`!$Y09i-+@s&r<##Z zkyA-yut%9$U8L6d&bq4HBuK-Ok;tCvHe1XOAM?w7M`AyGbT0642lQm+5wqu-vUc)Kb$gpb0;2&!zU?hOJt79mq5uzNf$Go zC>|U-8ln{Q?9;`|ro8&esxTRuBB!sC?i`9N#a#BL8LANGriGCIJF?A-IVMw!z>3PB znZazH(msad;-%!(J@Q49|2n1DqJtOu8TNd${iGv$30|U@9&xo~{nDd0E?h^kk(9`O z#Uy!VqpQ?2;9HT!D0gxobGl>|DJ=hUokknA1b=)8%gL2JQ|*=m()W&jL2z0ccMRZ% z;fWOpY74$O+qOtTgLs1d=fB0ykbuCz*%kn%GwPl^hy1Q*jkDmu>Cd&!m3Q$0@r(T= zi#E&+F-T*JD^B-nF|ttU8s~lgu)GwkqtInF8?5mR3h!z8tMl>dYUe0-R9;af4hS#M zG+n6YD{TBA-Vg@$8<@ayP`+8coHH-!ax;h`&LnW=S&y68N!?EiBM_PK+>Fs3CF~K^b}qbVKb_a06Vybb90nx+Oy(pY7DQBT;4uj&22DGU!b5mYRw{eEi6r4yFH%VbBf6f^{2-ND|5ehdL*t6J_X?lPNG36s>0Vg}o`Q#-WsAbb9c1 zMt^1MJp+mHT{RkG$Srpq$jS<+r+gjE_bC7|7!UwgY23~fkow+yYxI_wOXT-3;2(Xz zYAYT)en22EZDyn5kTql|*CLY}c&l-!y>dzEDdI1cw#yR!Zq&i~TUVyF*>2!J%;~-z zFK^%moBh8nLHr9qt<5e}!8e{^I$038dZ;3wqE+bputt3ATHhH=B^dbv#fw3M6p(p@SU;jYH7 ze+1&`cioev`1 zgTk50UGM@F8ZtKP+F)|vF7h%z_g8A2auvPsUaNx!h^4Aq{Mihu^xUPU? z5;y{aZE4{bbz2`mh}R(s2=5>TV??moq-J|VXxwhnrEiut{`fFgWCrsngQoGMNw4J{vRn1?tmnhz zjuwUgZvhu0f0g!fK>cwkEk%r)^dPn|6b>Ll2)gaW!&z+j`hWF>@O>QuiN!KE5OWu2 z{}RYq%-RvD81Hkz?()u4i~NAtT_MJd0BDG%yr9>uWssf+M2_7XkEJ`d(-aN8bWw5Y z%o;va@Ib$pjKQRDk&Ms;*U1^1KaCkoSzzF2{fZav(Wi}i`7BO-4?>@mz#w*zNcxJ+xW@I&6W_RB7`FRcaon#*()*?D_eNBA-~ z{x#!nv+*8&kZ9Q#6Y`+9*coI>s8yVIp)jv<+$b9RqAB3YzP<6Ag`thQ%&PPIBtq~yw6cogv!k4;bK#Sd9&{FE-ld_>bBNRA4 zDE{-h=H^UOXd~@#(%MosRl@HyPbpSBCUAW{$(10imY`O@q3hD@{RQ%LjOJ4~AYVR1 zs+D90{!4ldWeweI`T!T6UYOw^F$=K#|F899gyoYcvJk*5qE)ty66jzHv$Ouq^`+h zDj-6(|8{!->%1N^kU~h`LJ-2Czn#T5`gYNfV=$xjwrn+ZU;(rG`e^(@5PU zMm%Ad!(@M1ja&Hih;TLR^ts^+`eK#qJhArsC+gp?=R%|BS5D{NhBsS3hwil~w)q70 z58o`mEl9y59y^MyDg88!(oQg3FaFPX&EWBg$+_fJ7AcOre!0tGZ zb?30Bx5tj1@{@f({Lc>lKaoo7h1!emBt1q39pimKS8DC~{=LS$L7TmdWbOIL%=2z6 z;kSl*pdj)T=If-onJwJVxIy4)zxHyA``&kkp!e2PN`6x05d`b z9`sPzTBY^K@W>pCaxQBP#{}vf@#=~G(-up7=%+8G!sBIqZmbl@x!aIT)gQrRslch_ z^vUZ7>K>xL5L6Gmqc=XEHhAmgu9+w~lRVeGOZI5PXk~X40F#x`kQuv+%n|fHlEe1l0kNt9i0Jbm$4L*D~Iq^?^7pQ%A^=Zg>y0RTsc98DqF zVkKAHB)4>Pv}B{WP{o=WE1YMlL;|#c<4{MfJqjA%8p?YvVi)Iwyx>)h_^ys#%DGO* zqj}3=VCH4SIPHB;60cJMp|t%UAu8@g!oZ~SQ4up~AM!?qjumJn7-+{G*`Z#+BIBuG zsR~S`j0DK`F5#)eIZd$vD`Awx35e4rc5Ej;~Fz4W< z>_U^ODYE>|)Nx7&7Mny61QeJhtYz_Y$?c3T&)(uwJXxxH0Pw5orz%G|K4f-@8g{nwocSXM&HZFFD}(LYK@IpVMn zZcVrk24zl$@AvYYyDvP^xW~N%1dk1VcK|Tp6o}w zx%D8*u!oUe1@lA#1f#+d*ZLs0bl?g_yz~bUfj?7#==weo+KA3&fq^7&n%)5O*iV0s zfB}Pb*LZf~c5}G&MH8(R6^FpKZww7KqxhKr)G0!lK8{9DieFTD&vwUj%WkW4A2cFg zi}8HoB_xshy{TH_iibYG5*W*ff%J8D{k6=~6_TN~{H5gBJ7uvHT+rZXGy=PAXV`SzF8OY(rs;KI@UxSlXN(OV!=HK? zOz4ECOX-<*5ozhm`VH{>x~OWF;bciHee%m#<9XP#3-D5yl$M`iX0Jo=`gAhuH?3;R zXjy<{bKj0Su(}GzFLt~e@O@HgqplFKBpsdQSXg5nj$qXob4m=YGkws4C!=(=NK$Q9ur`T zbEZ%;?fhSBlP zVYRDWuJ?+U=@_UpqWbsO5TR6%x2OcBy$1Zzv6QMmJBh%w`UcZf;K-KalE`!ywjYOj zdv%H#@kSJA0M-zvYCgtF;MO|o73OBxEwfm&P6?yn{=o#x>G9(mL*Z++-u_JND;p2{ z4UVhnjnnyJUopgYL&NwK^3ba;aH!qCb33rBn!H)b48D3PArn2|Z5FR*UUunA-%_kE z*7rJm!i}MOS&aF&|8T#PT!FLQMM^&;y!*RAJB$=2w+Yj=3Bwg9SpVtCSjAo-wksEX z6ZUl=dbAd?d~Y9WzLF~g=L9N-6TkBEJV3?KZbvvOFiL3Ne$%>)cPS*QLbjnbtI|P$ zW<(mNgZM^tL89DH?v7%6>ZPx+kv4wjyXHn(Hzgy;)@bCQ7h+kUbfGaJIY%w={|yq>#e22bMr4wR;#X6myg}SbvHv@+^hFltz{e`mK=S%~YBw}sL^NCE zj$ER`2>LtF48|E_gtd81iE#;*py~U>51l4+HJK%gpq$JTz3ZLwmldkeLVK^-kJ#ov z3sE#YwoYDV^`!UN&H4`q~LGIm!_fbnB5xswG7oiH7r=jT@LG zTDGdxVF>07ntxg#A=E7%2uGoCQ5T_waN0wuD&DVpCLtCN+NAhG9V;I&0QLD|uf-hw z6ilNxbOmX-w9uVEIzmvgKfyecy%wXo620^7{_F8lGf|0lx?T7KQe{fiZOTH%20Z<` zX9AbB*A^=28Wu+qI-6+2|`PAfbF1KM1({k+y zGXKMUBYDtwh4FM#k1XV_5iVrNR+MP zt2Bw~SYBNyRw;35yMu`p7w)`)vR{i^NWa<{$F-R65w5)tyT9pq>J7%ZgMLN2^caB? zug}Z6?G+^lVZ#9s1AqC@dU6(I2YJEG5x9Qt#t-esqIghl);b5nwv$OA)G4zhxAPmY zQ^g_%mc#sc0NIuRJhubNyAC4fpUNQIg6BF5(y%p)fUuS?@MJzW&52-ZnKr&LVhNlr znvTlS_L6|FT`f)Rqw5w0ospK>wjdZ9aV%d1;-szEH2RcxcR;sGBnorfrsRis=_2*3 zP@8F^Q`vA`njP!Ykn_~DCdCm)V+X@Us$E)@5t)^;9=dqD@ZZUOh}RqXlM;rcO+`-1 zZf(~R<_|eem9laMmOeDVj#fhe@X@|NjVGre6i*}Qri5zqrM`(^77Vskks&u8dqla; z(0Js3VDN&Bn-R3siRV0`fOb&NthqOk!oQp#9I$Lc68lI+E-M1iyPZ&;QQgU`@=woC z4b5B9ktK9h4E!L)J_&wDn2d{!E`q(+NF|C*qR*JR3ln>5K zcT?i5o>ded_|O{M$}!D=SVZRNzb}kwzFH>xJDG~>WJ-&f4-udn&!rNf5Q)**t=SBA z-0%GDdk*S7=%M|uj`+=2=4XwwGi~|)bDUo;$w9!5XB#miaMl3az+{dejFaS}Ivs|D zn(4ZtEk72QS!rl|5tb)DUks zg2jG_ojG${N=q(GIFw7a;H1mCqL9J9p1Ii~hm3!vP@-tJ+=rJ^BxQnTo8vBMJI`rB zHJ)s&>9CR<)qygMiPmIWPUNuWCAHHS@$UCb2jU7pM%^iHSrE&W+r>7%b18C4HhKF2 z)uIaJkc!=~F=unybP|n83^_Vtvvk2`7R4g5nqF%|H6yEi5yLu)FiW5)Drhe)I-2Lx zAmVK==O^;cPvCwO^t6UPFb(Vm%yO!rEFQds0ZMV$85nr{?fEARjZw}4_Z1{eFb|7- z9bF7qjv_1Bj|8|q1OPe!0J11_MWB?y~x9zjlk45uIXHa@=5YEZ?CkYBU5$|?^L z1b-MOV>Z8G**>}c4SK!{vvw;lmw-6BN<9drX_{|Nqb;bUbsEbcF64ZlgOSRMe~zt6v&Bcz{atn{ZC*Nb`_(wHgE36D-iSN@bl&WD(BJ7QRfO|$em zFC`Ww7e1%Yx@*%dG!ExAS6P4p6}9TnbkST{%FD9|4YJ8(`FCZ`_Z<^B@YV%RT<;hL z#?=ZkU6bwqOJu~UN2ds{5cjN#fk8)JVckdHPo8ocCms~#?kL0#qLAW_H+ULFzNGES|tZZb(n6G9w`#*i@F@YwGq-ydR7 zC13udH+4ISPpTXH=p+j9Z}d>~JCCUz%9${KZOxC2YyJymy%V;Jgk)2_!;o@ z!MEN-UW*JKU@)|8(P45teKsw^Uv;jgw1|K%Moh&-pO6S4d2LTGMXx0@vaG#j2cTE4 zo^DFha&Na~bCnTpGh1`k88b&gB??La0W~fwsH!+y${zLQKAGm-ae0dS^AaDyxF5}R zay$vG7W>fqUYqK5!)qn5z!c>!nH^c_TbRK4Cj7L&DGrKxk$diL(uGJ{ zR&UVWjvy)(dyss%02!#-S~=S3yYFDqk5wk$D_>L7SN0J}Uhlw}m;6#aLk+TmI_JzA zs#A_sMXN%GzmfEu-Wc`rL0nf>2xgy^``>`HTdxUXo;@$;Sl|qd2^F#|KzPAU42m)M zjyyR{dhzU`AmfK$z-R!Z;^95-u@b{;@aMkH51FUJwArmxRb8ADr!Y3hljEnL)#aL4yA1GV`c=DFMxSc`up7YrXD@1XDaW zQOLsjn>*!G+S;=3?C+2JHQgg`=|u2sSlxj_Wx+Q3cn`2uf5Sq zhjc3-2+}DqP(r%9Mt4X^!w5kn1*N2v&XH2WMhMa&-Q6&H)Zm@p-{<`k?mhRO=Q-y& z(Mrw~ZsS%zlA{$o?Filrt!lY^ZJ~KX^|AmuhA@F7hLT_Hl|zF;1R^uvrf~pbGmDm6 z9cdkBsFgEOg=0i4yNi;QF2xXYDT`AQi}-KtDwxw#>30zv+wZF(-o&dlfoIjju^r?ZE3cr2FGdtgu3bd;)dyt3!J z2hqDkg}zlHzG0L6B&a!Kr5?`{iC2VEz5s!OiS(vTPT`gm)#Zin$RBoZBgDVhsF+Qj z)(`g9?yqcQ?=fkZN=uXXPRRvYxdeJ?0r`Z7}v36>l9!fgWs%3j`vo_b^~0xjyASX^`UC-Xe~lTRLyM9qleqa&R>)sj6Ks=;f_HLx zm4Ey3s?Py;8+CagR3FQgZ*_;8J0^hsz>Ocr7w-bnJlE9KYgw0fFu%QC#ZH%XIjuar zCNp=Ck-AQQ5}_Po^ksyf@_6ykh#+|AgXr(K*B)cZZzgW>ZQC{5h`F(uVQJ&`^1kLO znPvk1P#?8`__KX+V;PZ59zB39i+Js8`IsSznBWO`^LjO)eQT;VN6w zp5G1oBI<@w=l*Pnsl&%Ajy?}%(Z!vv;hrDjySet*G-ce3Jnfk=ReNdfc#JaFx+y9? z$g>MKl&7l$R)leegXy;-M#h=mCZBiUvu);KaUK#>={k8?SApTKE3=^g8 zBhOj8XEG}8HlAEbs79MQjq&f&culS(ke}rIRGXJ+Kv7_sd_XGs-G$qJFUMcc&TV{0 z-PGVq;|Oufg+}bGNqeOnXnHR8?u{^YpU`k7%S4{yGM%YN?vgR9bFPgki!g(*34{?F zj4z_rH}1Qpo)>)V6f?!!9MaLgD^k|{x0idxrT^gD_HTqbM);(2RaMQ3c34WUn&B@! z8`t{8mx40;qO!}E?!ZBdKnz^EgCSQ;OtBd=tG`lwL-1(GVfcZHYsif~zy_$T9(tOw z^lb0X^tsNn&BvyG-Q8o&v#cHGuRXzpQ*OQKljGaj^d|EH;P-SZ%x5(f&9j1LCQI z7(Z{TZ7n^8SwKeEP@{u(Tp2}2dJe~h&o&C(qU|Rk!3x+n`s5C9o?s#q%Z$wg zKu>3tRGsCQb~R=kodA-`u)9e6NIdqq;@*5bF`WPs)=8!&Z3x@_gmn}7;q5HjIM4L< z)H;kD1Tw#GJzB3Nv-fdpqJ6fcUu5=)J&h?~jbuX7ajR54GMH7xUz^Ds6Km%(ZCJ`0 zINd%avGYDv8kg@A1@FKXd(D*hsRYRcs%m&z)kjMO8F`(W7H2wXXJi|1>u5~2^5%ZY ze|VYK@=?PV{GQjsq=iCME=@rr+TGBbB?@l4yWK2=J(G?MevQ zr9S_e*3pBT;epd+23IWXecne^Vu)!2g~v zIMANV@}|PA7zZ5mjeTz@BxZRoCQW)3GOe5DzI|2{_TiorJsR`*qOLH`;kTbc)e-KY zu2Q^lWXE{7-ipk8mj+C*B=enyt*|q{Pxg-pvvhBB&gggRc`D{6LAL77^6lx0Y%tnj zcdce~j-fC>ovn@MA$bX=IGJ;Ki2cS&iMJ$=K$`IA1l7wK*$pau?!c}*bV_g302GQ_ zE`_$3B>)n!$RlEGJ-SuA+Cr4@Mu-KIh4b7Jj3N9cO@!ED4R7Q`s%`8=X(`@biD5HF z3Z9te*Ee_B%<{^JC95n^+iS5w|8dsG>9;_xqh`h)zswR%Op;l?t_VB<&8t>6V%kV_aENx z0U}vheUyAteZY=3CFdsbj=<*t{EE47COV#)_GK?4JQwh}OZJLW zot-&<+K~&-@WQj53j246F+~Afnh`Y(Jm0qS$1w0ID+tfuLuC%arF2pD?Gd9@$KdahrO4~wXzQ>7Gv}c zyupPnF2_zeQt2(-Ael^o=)vm@iruQ@xbJh~{z6~ROEpPzJ?>&o7qt($=LPco1N+@i z*27oJKoz^yEzSc8g(+b*(ry`#O{d4yTrzRIo;XxYyIJz20&-J=}#Uv>iD|Xifu_`x^a{N^jnex5YcTT^Ji;&`!>Ni2mW1gQexTweaqI z|1adrKm%s#a?V=2W!cCkx|qv<#c0Jjl)gF;^Y)+J-2Ss$&8{dDkSYZGr5iEUZ#m|- ztzvl0)!=)I73C+7H5ItnQ>-Zj)2XR1pi4=6BewY}s(+JDC<34GS~X+qCs2wa=EIs> zDlz0AHMEsmIYjpBw-T;aonA+Qddz~KLE#^{X54!gC$ z$$h0T!ouWDCHf&DY>A~HD&u!(mZ*>A?Oyh0)?^jBq`54rei!+kur(r8tfZk{3LsXA z$lNqAUA;DZs61pEMkyl$IUsZN`u?g0l=+=2U3d|ZdCw_fd|C6cLN9mvuh+P3q*6t> zbAdDWE-tTQ<4emPj><>*0B_nsyq%{$S&S-H$Eg)2TD;UWLe1pV0|5zp&m9O^3zvw2qq{qQZUFaOAp~d$2i?)E zXrP#nJNa?wT&kyS|1%*!4g_?Lb#;QSQwN^MFs0jZ`Vn2_4`TH)NaP;6(fcpcL)-C~I#kg`nx+4H)<_o0_0QMT1v* zTH8zu+uC0T+oWu}>L`>S3KjmKvayxvI0?{N=GYA((^t8$l{GF-wl#a7jkV%;J+~w3 zbS++!0)3ZA<8!A3F%Hon$ib-hu_e_G9-DmUl$tOp?~IJ=Uip50COC=p$fL@O%4tel zkz&5`&5Zlq?QtSV_EHPY+`-V1f7IQ~+6K=M^;1RWY+&V)a?cyrplsX)ez>A6E@u@ULcG)eeid_QQb9YeJ$_(vZejk>9nK=Zc-94$aAwqM?V;X(4Ivrai%v zx#VXU;|%8}GJDC$<^Yukid}JjU5uczcRw(=1|Z)}VK~aa1NbNb#Sqf6+Yge>K2Or; zqFq;6!o6S@GuV;4xY(9|C~pR0wR#?@mc|yH?EIXlp}pGm78gL?bSOcxBsVCmKRrB2 zvtZp;X40n1>d46fydUB;ET_f%7c*kF|W47M1GaqKT#bClF?_FUWNw9KY(@|ZpVX3;dm|A7mkwH!g;@PH*P+d24LtbjaOrYwd9~}o+%-H-98xu`z<9K zA;}Xa_~Wi@OM%!_rp&z6_93+<|FrcSmeixAyf(M3br-NnZxR+9H0!mJct^Oh-&pET z_1`o7kN+RlDl%cIKlH*LSKPC=uw#Oh@Yg45hNC~Rgn;6#Rjpk`CL1k^m(jHUuSZg`k`O+|(v8U}hF7 zVn9x*nlR(931UqVIilouJb{jm>idQ&_|wHX)}%wvx17Ew@KFLYrHiE%q`5?F6SK|( zXx{3)a_^YpT&bmiu!O$M`|6&)Yw60Q38I%(LuSr#Ja){$-@zZFXPJ0_jRq%s$x2w+(+lbV4yGbWO@w2%y zLWL`HB|fE*X76utZ?CX(z`Fx0M{DQkfC2d* zcvK0pVu;)mgL?eVbyh^MY|c+v`gat%r`s_-=wN8GAwj zQ;^6e(3+H)OugdNRtE@wd3bXFE>q7muV3>j8?{6!he~Pwd|$5Om|902 zC~w9Sd;ayTfx8V(=`@w1yrN6rxDkwMKFSA}#AHp5)t}~R2}UX@6xOOW=hQn+(DQT* z@6u;06sIfNWEg?~jz#bKw6~?1F@I82#+H40>taIf`8m0vzH0kT4-0|Ao9kDlh_6*tj_km$$`GHQx>w^L)68%&E|G@Pjhf=(jr)r>$+dh8h2be#b9`MtN z1dbm^ZP+`-Q{_%<&PU3J5aZL@=QJJ98rN(%o9r$qsaXjpG~H%)C3Oq?%d9E;J4@Fo zXN1b&y4bJNZkYG>x&74!stN%r${lqs0Nt>(tIt*YCW(3>Q-x#bC8_{*eg6$EN@c*e zDv{4cDwQ#SuPqz7seks#oEt*Hr!nO-1~Kf@&iZwbfhjW$`xAJbT*BAo!sLV;M8J?v z1A`AD_BP^cC`SEf7?n>OcyUBx!=u1Q^7^W5tU4)5Gfd)f(QsL+(c{%dAMLDPo9?5%&9|93c)w z`@N~c&0@`K`NB{=ppB;6)^9sAesj(3{%xOonIV$NgGnWZmwe@W`F4(vSIXguc3&q} zvB?dCAZ+cH6*C6HW0`8>$wKAJn}*p5a!5;~8%8MuxFC zkmXorO~o^PZ_T;4rOB_>@yTHdj)D_1Z!4y{oXW#K0I-M-9l<|t4GOZgf-6z*$0nyC zg@0atrFHg~K_@%myYG_=A0IQ6f!){hD`qz)!X z8%9wDlwlE^CTkaBK6U(TTx5lAwKR%1xkIQMlS@s;oJ^f{#v;F8o}}#SEJn4YSE-p6 zrl`dvn6ohR?5y zwq=oKVbiZqt6B;p2sCqO;o%TP?7`Sil$tWJ0>?tM6UA0>EPiNZPsJ7C zWch$}bgKg_w%Wjdoazl~@?)OpA&bvzs(yX9UBGbB_d-m(3%GZcG{>mgi>4oM-2%goECv%{*C1SrRte)^ya+;(8LHt-&<+urULks=kL%*vyWD+l zNA4@HkCu>vFpu|=0zh(cNP74I8$nX+t7`d~1$ux4P6hCeA`eHLMIh-}8OEPSnq@P2 zetwsUI?UWg;|sbGPWhXAnfMoxFM6KwhkuG0=g!bge@@Nz+~a!&ZU13kuX$L)M6azb z(Zt0?!}>OBpHpsMcK}Zc7#q)E`fXmRRU_HA?$~u3ABNq;tHQn}yux~m#F4twcPZ`9 zt8<=hZ>oIVs!!6|zl{~ZXZMo(_!6IX=S`&s+X=dOVAWhh>C1)xWP}W`tlai%KfT1q z=tAgoX#TbyrZfImGKC0bqTrP18Y~>C8R)BY={p?NS90JSi`xDYf18nee7q5j0ce_YpR%qfEFsRe#;@p8aue^NakD8F1ungBCaEgul;39Z^g5DP!6)xssU< zZe~Fq$?&wuX?97^=LLQ-fta#o{?I%m9qR7NImGJyxmsxRtGl1uOn0M%1lRXyaKrzP zpj9>YH8*0~Boq+`^*(%4WV*IjR4l*W`8YNdp#e?~XRzm6B^mGWK0ys*y5Ss${Gr() zy~Egiu{Noo=W=6;@pyJZh`cEAMM5!|P{DeV=!G$>t-f^Fr_0g|Q2Y;yOU^KpJA+@) zTbgAqRzGLJgPz~r)#0Be+iLfsqvzM7kxzGYRjZUY%bH6@mq$N9dkFc)1^iumaE zJ}L)c-It?Qhcusp~-3ibTi zmeayOnG;1{a(Q%wRi&Ourtp{B-(28l&75qNpGxOaaH&ROxlJpLV+;MYovV!G%hb(} zmnTr`r%S4X1q=9J!tBX`?I9n*{RGX`kuRa2k^9lOxXY&?iEWcE zAK5$$WXsM!|76vt6M8C_GuWj_POfd}ATHPkq4nS#txh6Rc-du$m7pADUb0?(IY9eo zXZZum#I{3{tlqMB02NIv6s|Xxns7aM?!|>t& zHk8GXE$m*iQ+$TTTvtqKOIv^gIa?_x&I+h!u@WZlVj|0&F`U_T4D}9?y^|+%)M41r zLMNR?OnlFGk{Qn-Qc^FO&6l}%8_kL3z;i$L5v@N1_Y)uB#nLFk&_hh7`@d9^S`n9M z4b0*h9W}gTiEoNz6`WX88&zzN8@hU%01aOlgWhR56UQ}Jk_*zWNv)8W^I_|227Mzj zdh{3ABX8&S1j5-7Wz=bGWV}#i=vpNlTR@ZX0g(9P^KWP13=-j613_=ooZN9A z3I|y;6{V5V0TmfLS4XiY`=wzfEpEcND*Ke>Xdm|k5LbR(IU~*EJQWNLX3*hEnF*uN zB~5(t@Y5-P3eaNS*b?Qzf}8&(FQxw1hM#!V^UWxNgo|GT#7fn_nB8@9KpAfqsi1~` zTKeNcK91f;cAm3cr>6yRY!pZD_lV^L&u$YFx8J+pZ)mh_Dn6`*o+~1?UQdPr>CsS` z{0}Nczf@L5FK(UM-}iCoGhPip%-;{JN1!4SgIkel>?xezU4c26KP^d~S2IzT4Suzg zre+a~1RBeJBAL?W>|Lk*J^t~8tX>Pk(GU5aB>$D7m`$0GnNnnv)?w1v-j?I!g%a&V zEgzcG{|V3>KS&+63M1l_Rd_Lk|%d7O2&S%?GhwRt@wL?g+w5`PwjZ zrUOF9!MKr!tH!m3Kp66VG3~y?H}i<z<$ajOG$o*AGIokKvy~TIOb)iR9^YJ zDvWyC-8Zu~>%*e+m^WR=?^WQXcBEN-CqzasD>7c1b+BeD&yFo+vVrAAyoN*cTAU)Z zrnvx$i-~O0Qv@lOsALw$M|zkv!W%z$Xf&+KxB!K0+q!jW)k&FhJ)Eeo6rjwGalDUO z!|~O+hP4V8)J}HQIpmAQDLrPGDz4t0ftlD7kTk51oPZgp7;1m1{kOK3B|g|>Wm6V{ zb-Ov*hf|xk)Lc$t_w~A|kdy%<3<=_Gx}~;@)EA;|A;(Pjd(gIv(3`V|G2iwAyXepB zKbiwVt2=ORG3MX^qRS{D*4HC(_V<$(Eq*s+pbGQe$X}*+*1l=Td~q`NWa`eV%t0dl%m?ztqAY|g|m9klQ4vd3fY{+Q+4xy z-{}Q^y)1;<^@-CiOsxM!skv0)s0!fjnKJZM09);pE{rEVn<~ilg2%jENYbUNwhJ)) zFg(ANAu!&%O3up0zmZ|vytH}AT?!#0I;y)_ji5%6den!yA?6wyQT+o{uuItWekjs6 z1Z8n|PE4;1wbcy}nJ|;!3qwB;?4Q7Y7t#>*8tYi_VXKvh>FyM98+N$O6kr>&A9|;O zy7xk4sBcqa@_E6pnu?V=jhQj9`tQ}cA>tSTOdDW9?dy^H5&BYOAqOqI1ewgkA|Cl& z`LqbYg#E|+Rl)Gzm=KzdwDR_>%R)@bftn`-3}2O!b>uiHZQV*owa`5n?3HgtO!?&` znBPoKPJS+;U72c#*>9fI>TjoY#)#jWF{acwt;Nyc81u`D;Lv6xoJ<%-aO{`rl>8Bk zwbg`ZWBMqiXz&}k9-zEY}a^_p-jS=oE zr=9-o`;%!#i`x!_^Ib2f_UBK<^%~i~+9g|4n(Rp9{*d5gE(JqUT5P2mRUmcVJZ6GB zkQw|M&iOt5i)v|Ob>{r@(+y5aEkV(SC!9tTfu)2)cKnq6p)oNQsaa`ruOHQV^Wm4R zvthsOIOqBN-e<#uR+N*Zz;>@N!ko2~3-Ak4ihZYdR*oqrBv>A%k0JD_LB*9jLlLOC z*2uAt(J~dL-lJjS<4Utb(s{%UxVnytG3$Ar>OnS^Y5uIP1x9pxP zMh;FkoI<)cgDG7@2AkgbH_U_XYBfxogN}MZ*Rx2}-NPnt=yDzW=bv8!0}^os38Gcv zv;Sgie4Brf{+h2j{us6GDAXarO;#y{9|pUHd-;qyb{stXH-_C&nUH^`NYx4#anucmx_hwf%K2%24ySpsve&Ldk3hEuNVFD!o_hCPRazov2e_IC3p!Y32iYYwRwJ zpf%ig{?oF{CD8V#x6FOGD{OQGFZ%Xr==JZuj-`8CP-|fQ1vv=mo@sH%6mn(FYX-Zi zp{ZSXq4z;}V+z7sDT#B879uPt=m0BVcdq$)+q(l_()OFckei(RauDhPeph_2@pr6n zXi_+~hb&X;m{1j>5keL9w$4)xbLI(L7|x9WCk5_{xFrM_$nTC67A^*0R?$>TjIz|| ze`VDN)ZLickmS)cOB_D~Vt0<0EVdMtABBg2-ib)0DG6CJ#0tHv`Q9DGDZ|bzH!@c1 zM8mqu`+}~hP*_fft<8Ve-Prgw=qagPC=|k+mIg*CA8fdtR7~0g=50 zveX%OA9VHVn$DxYlo;f)FTqO0= z{0lHk(JU1}B^XP%l`VBnZdOFy0ag;k@~!36;P12wBqB|c(n-8AIlzY`ieC3^U1r7v z^s}rF>4A*xF@S<(f=oa&yktTRz4tGQWNn$IG=L|X{uM;KjJt-x_m;2CJsSE>#CzYEHLqC*TcbC>{)lN`<{RX!8uZPz?rq@?e zdsmMn5)zKGU6%_M4RWM@g*b2DQ~4bZgzVRim_J-F-F;{B_qTU{NDt<GZHW)Pp(fj6AfkaHQQ@Aj48ppqen;9n5Vn zPYC&}jN_`6in*U;l%<9rC;aE*H`fkxtpvVF0oOxVT2Ql43dhq?xRMbM{*<&I8D5^P zzIYRkB)TrCj0$4Krbph6L0llg;`Q5SdBVBmUb)g}C_Ls@Mv)9~(6&NvEv4*iZ$c#K zoAl$i%C+~8P}66f#!-_p`Xjb%eH<|L-&c?S&S=gOkFZIO7p`Vy#!~#Qc(xLyjH5Lt z`bSSzwd9ju)5y%SrHjS;plYN?s1Pi4`(`qqj#s+X_weR&FP(q#kdNuq`!|l ztW|pd-Pt&g>8w{exlG)e=OYX`kS|EGvxQWvz)+*W$ne>Spu_cT!?4TM?_ zx>)@hdh?K(Abs*R<>a%YV&vF!oM;k^r(z;B0HvglE|;7Lqc4zY)jp>uD^LtNxMwbR z-ub}aQrUXYJVuhty=tA5@G|STMRJ4q_A+Kay0t63GD1JE$^a9}#Rp#HRj>K|B9$8` zbJ1>E{_#`0TA=aE$?^Ks7~yK}JFfg)FoC5ExyLpc7QV;(to@5U3LZwbri$seQ+nI) zCYW_RWy8Ism4FSkIhl%e9E;YIS%NE4T^Ded5i8&M(@WuP_g`x_sC*;?{keS=?7VZb zd_>ykVs2O(!Qgwg-nO`Z8-3fF&2pYk>E%2|YDol!`pz`_d{h}R>nzO1r1y*JI?W>{ z1Z3x+8@>NI;@JN=V)w?XUy(y+#A|4Nd$N9J0y?uWMtX(XNHhy)sPj~?8PWm4)~sh7 zkZ|QvO_8gw)Of6eUx=QK$}-Vz?EdnY(;(QR=N4BCnJ#%9(UrOSA_!jA{@ulnvvs@M zpz_pg0>I(Ts*=ol!^ZdeF|}uca$#*OO_paLenuJ8GY%kBB9gV2AJ0&tljVn9Vk`{u zlrc+In=Ts_sCZ)pZA$&%4F0s&U|P5Rd!t_fd`MUNv;?g`c-Dmc8Le$T^XO$<99;KX zUIT}cw>HjQZ&KNx4e+`%GB!23A?P!lHG=O;oku_q{p!=VMu?X7Z%mgs2ekOphJM!Y zs1@4S9K2zY0M@~DerqtoA%Ut9`EI>=ps6_!LW7(0>k{*z%v~dxiU_U6p(7!*gN^`- zHJwP_Pnj_Owz%1F2YGvM!fs#EKPBJ0=i-6HNy zY+XpjX?Y42z9YE%3l`p&?Qz$+Had0bir0_Wg-b?*OY*&9!H?POF=^mp!(rq; z&pcQRbck9;gC~-&1aNd4E4SM(Gfa(j8jW8_Dew$A?>6I93Oi^#(NU+)<;$i=Jk5qk z$g}64&;Hd^X8oeW7r!S8L@ijq-*{JzZm(+oghJhJiMo%E#cCiBX0VWu+q~tLi@k>I z?Bd*jwVolm>8+kT+&a;yHlSFzy;Sz6ny@;)tx&)#RE^K8gq4qghXp`(j8Cl59f?S5{yAI9qW z)l@O5Pa4NpMwr9Ar7#Z-j;aP=l%dF5W)*?9)HhTwmqv)8XU!j_bv+8tU2Pt0|SSjj2 zXh!l;I>x7c(k*Oi9XVb40ipl;s!r6hMbHw~L9&5|b@BQOGfFjUx_I+?k zRbhUh&vFCt_d$QC%)1i+y!m}q{W=LFV|Uu9K1v1o+M%0&B@q1Hp~ma)>5xhr?49Er zf(eFlKwg~>ZRf(g*GoBGnzc5#Baw*`u;BdwQP2{|iJ+wjXo4xi4v~BlHWmvQ)xruA zfwZG{vTs*}HBv5NdHjhFtD|J3pL68SBJ4$C4aV>ZMq2ka9nhQqYL7)N`;jS9xkEsw z>MI7)$V`iY|2U)znnSu&v%O#cV9_OyT!S!r{{lp8T}B%+ritd*IF8b33xUHU{yfi6ub|? zUL9N=)?uwv6M}(Nd8fWB`7_mT0xnF5sVeEVTERv%N!=zWm+*0G_^ihMAke+)fZ?WG z1J>CXvMQMVFoXa+AVGwZC;f=CSagCXVzGwMAN?d8?u0vp-avdk8D7%ZZhuB=#rPY>;TumoJq{+a&Y__4?cssKQJiSB+}(^Wgq! z=$rWv=2I5z=w->RDa-L(whSj(4=FV8v;NaZqT{hJ%5h@CIALeQTg$!Nes_(nI?$=u zf{)n3h1dd(HDZNlF@Aq*rO@7u;a9+Q&f-&;&whXW;vw3tIoaQC6(`~yP!D2l_58q; zd5SNBQ&scX`B`;*9+ZE_T1N5o(3yZfqx)VwWf?gLcJ4^2Ie9^jP^erj;y277fmVjM zH9E}a5E_Z}z;6>OT)AiBvVAX)|A^-BOCdatKI2}E-!2`w-*rPRZ(|HbgBNch7I#?x zB$fxz3_437GIJQ;^dJU1-YvHXM=_z)=^x5r)dFqe42fYU>7zeoiA4A}qYyv@brDvXC?fhQd;OZ@>wa}SCnEs*8 zPSV-VWZ_PIfjOpSc0XGsc9;K(2i45-`AoYi&G465Sdj-&wnF z-MTnJEHPFTc^7YSPr-Dz;GX|5NGx)tvb?;W7K)6$Sww4$5x(+hRmJYO=h+0YNo9K=lqrdd%WoBKe{~&Iyl2;^4tck<3^DAsAE%(u@ zCT`8hiR&t>iV_LR=cq$(8UaU%>#gr`A(c8=&%~b;c9#!iJ~=Jfvws{#l2=Zx2(+T5 z7RR3OeyEQ#sml~zvHRkx-1_Jb*R0;aalHA{$)W<2vE+b}O=0=R@Be&mQFCdv7wbJH zN@oz6X`Vf9FpvmcKUEI(xVu`t4_cq{8Zm1<>E1SPt7(hv@?U0JnrnXN*96-p3{&Kh z5I|QE{;>HLE+W?>%zkw!uRo%wWMC*osYwmA#7N1B zXTok}sNygugR6s?)i!#(hr?&iqN-2$O{``xayHKI{f58${Mk|bQq6kRxBRmNq-$&& z3bWn&qy=`NlDmOU>WD4m-aTK43{8C2)(@f(O+dyuzgEtaE1n?U zr20_06JOPAXJ;|L@*-K5WvXfM$E;NT>M~MQB?Ux4&)sPLE38Xjjn$rucfJ>e5wjOB z>=Q0;8W&q?BIt5MPn-8gq;JP9myywC(-*6w04#%&{zlg9V-lIFjg+ORWUXJt|@FXH*M| z=ZOtu`WbXdZ`qv)5^TqpwT&APzr*;c- z;wvw5LrF#Ndvm>`mro8?9&VUW_pm{95NGK4AC_&h=a`VKv1Du>=O9BTcMw4c(NNU& zWbOkD`ZG89p}(J{vV!Czo*L$P@G@ z59^lh8j(NaMi)k0SxM^r` z_Pw6_u()_FHE#e#xPUIsbzX^9S!81#tXW<4U@h?pcrT@ozESa*>NI*h?t&GxG)Izd z8Sy0+@5&VG1O3^RKV1;eUm}Vr5pVtT>Q~N_8(O~!V>c5xEnj+5O=K0any|W7eP$*y zx579}+I{CBxVw0SHb-^+FzrYWz=N$gE1rh*_T#e@!UIJFLJ-@>^9EV1=dYK|T6gSP zr%_{L{1$=NToyq`$@7b*?l*`BMXCSf@2vkENcdQCC=MIm1oT_zvFQCe^k!u~=LVLO zbAQQXY$nB*q6C1*VQq^&&n>6S$IUb?fAajP|EA9>6MF?^KRDKSt>Wy~kuz=bL#iG( zu-~Q+<5cpsLpsqgz-j~YLAI$nNt(7I%V*}XzQ2Q+cV&{9YaGTJa>I}1>P{rKT$sg`iifRjUlArcqH zB)qcwrMkxHu7_*ELC&E<_LYDGce+#^KcoidAZ9+MYs$ZKYnGC(xTAQOL_~vB!{E_- zIT>= zTcH;qWS#pJ^XhhJU{d72m5GRba?&6+v=gj3c#r{k=emLr|)HXhB%;U#|P5Y<>LfS)3x6yZ~MCcbVGM)N4G{7 zyGcKEP9Abd``QL>!w-kHP^*`f`-+Ouw_e+Pw2eD+B7A{h>Zf_}+DQs;d+0lI<#xG> zM&xHjvER@5sakhTb;g?<_kUX5jjWcig|$143Z>4o*Sr6LtjJKh@O1e1Y^8Qw-_m7C zs08g1SlUMLnX$NWytBJ76^Y5%s+W%Wo`BfJCB}@B{gb;vy<>RyT)ZlYW>Krh${) zy_t$GaWPhLs<>%d+$A8fZ#Ix|_GX7E02#e>F(ZgrGz|`+EsLV2rqjf(Bx5HQ;UiC( zB`akr|C{s&r=_Acs`}kP&}PNs3p4i5Q{pGyk!4Uos@-HN8?!pht8d(~+2C}2*EGV% z)p|GdFrNdWg&`dmQ0cYl_{fN(Zt8&jMdXV!4jH4{qg^tOPKrI7$KmTa_47cuZzr43`3(@Wqj4PV!zcpJvA{lsceB88uTXkmUJ3-nMEA5-~g)3ej z_p>8sL{pPX%x0bVLyn448c!Bb@`Hn!J5SJG2*=Z_zVth9D?S>!EGa@z_6*>&RK6pm zCp;Td^l8LcB)^%Z`LcjmF!c8O;kK-H%)g8$R^0?Gc%JVG601Z==03? zqo@f>z&H`}z+zk$@nLvZ$4EjG?8;j-@H!?0(XSVJGA+HydmkDy!w@RljzX& z;qE5KHUv59aZHKu{qpW|ozA(;lY>WXm<@zA{DW$5s1wuYIUUyPH+Q*CcD>-cUa8X> zq&YVZX=7CdJW zevWeQ`VgqT-m#0f9aDWIRn*p%&Q1HKT8>XKy7eBdcEL~!m2JcfAs4qx_hEsW0JvuI?Ocz#qXp zGsX(mG1=C%5&lBhx$R*8{j82sp5y+a?_UYYS$#~fC@8lx2|sZ1lU87}zr4NP1Td?w zm>#`J*e1nT*}_}dkY$zBe~06D!f0hBl-ZDQ50PMEld+S#%<0Y4dezA_b{B3>A9}~x z-V^lwY0K&FyFheTr@O;{l?4O}lL*?onBMFVwJEstJ&AhTHvd9nLxLh*1kZNO8a;cC zWnkjeE5i|p7hhY%ZeUXH$EE8k-^DZ7?VnQK(2aWzCgTjZ6c$X9?~4M4{-aU#e2~+c zzXv&1vsk&*avmiR9Sm)Bk%;wP$vhi$|1o__mhtB+n!Off0kwk!oT!_i6GfX%m0s*E zWoGE5nl~x4iB0NQNxRC*2fj##v|c>$l>ehZqF!SNLsuZ&H!fc)wk$wZ2Q`_kNITZEA)tifx2=NJqXg*4*WaQ`7OwI0&~h}t{_W3v9i z7jS*N@G*>$lR+hayzb+2uJB4xm^(p}>mO(p9~7EwVc}dY&>-m~MTe0YB?H#5SxE<1 zD*g>0$!Qb|4)fdp^}RuDZTGQdt+E3%gfqekBAd=8KZ>^_6zCM{$|abXB? ze`fu#-R`UT5519A|G@{?c#s0{T>tiAY!531>Mxodcy8W~9_*)>{;oezHM@64Txhrp z66T-SBd$5!<%c6qyvGoSjA9HqKhasfYDjE<$acRTOsi0X3ipTr`1Kj<(@izgrpKLG zP_M6%oOY_X!8;<4lM3d@lI&7Vq0&E-(w>}gn2m-+#AvM(unOZ(m+vcg7hhU)v%c5+ zHm-?E>(kDN&?I|PoY^`G#M`_INWA}JEsYeDa6$J0hM9=YADzb5%}yGKCMH~|ynnge zeW{}X3cQ}R=Vct+syb``HnOca9H`(tW`wUnVH}_A!c^`mmLh9ZK zpC$02_s1RAg1g+|&nc(E3YweiI&v5$Cq!@eD=~yN=+@Te=5`v>$lrTaJ&!nUd7H=M z|1L@AQ6I>|Us}F2U99L)@=}fc=-nwkYAgjN3_GRE_29i`6e4?Cg4$lwC{}p( zxjI2WWR)EbX*z$HS4PxaAVDRG7W{n9EQMY$VW@Mt*>ek@qZ&52-hkD6~uy zjT{-Y1)eVn(ouz5%?I;l4iIT_JtRW(|JC91-5Z zg_r+!&lKAYFCVXDXY)z|IDM4^CV~w%YQ(ej{psh>GL*`uN_w&~k^Js%b_CL8mbmD; z(o@brM2tWn6PRWLH#fVo({h*F-?;|Xw|dzS@mee{ws~HQA`=rO49V}1x;}){hUfgh zfNFRvJ27zn)mox)5_oh^luSZ;D>479r*iv3)CkJY#b1JjF;Q~LfG5!e>^gaM@~7I1 zU|W(}POWRnFmbG8QxHiaGD0TO$UQYeUEzk|T#n_O9vnoSmlL5_ie`%^Sz89!D9nnH$cZ9LLNne7j9*!ZP54j|A$!xeR zmp(s=zCTv{Kcc?EugUL^cOym(X&BudGP44i`S+GK2LgiK71v#(lQndCs*FB1 zqvSN#_~)F=YE5ZzN}0OeB3U}|GeQvyHZcVSsn`~qZ*Bd3x59b!j3d`5WFh&W;R4#Gb|xxBsBi9I8V$e0(#S+s1( z5?M9dbot`KXVCg9V&eCv+^tnadVSR~vlU4%D~u>i#rB&wpR9H#Yf|L5oh|~Qo}90nzovpSn4_d!atVt{#GnM6`51<&Roi2dN0%?O;7k}^a% zVQ4_p+T&f-yTjYZ@N1f&VU>lFOJ5RR$vh+Gh7%7rlEDgAv(8- zz9q7GD_azD)bKXsadYBuHql$<$9ezT%H_>G9jVj9%U$?=&+Fp{WJ{%_jEwaa4^dOL z_D3G-pJu6!HiRIR#;5O%NN$Zj`gzO9(36M+x+qA_qHPh~mNHu8q!ehw8Zxt9lp?o? z_>aL&iR>;p_wadQZ%MR1?yMItI!&)3`9IdqPy^$Tgx(UdCc22;A|?QiMIp_M%pIJ1 zqChzwnIDipD}i(YJb$tgLY(3rJGG2=o`n!msa7&+Y?`@K{TvR|7nT3t89HN@ZkfM&tJ-$UAQHuV=RHKNX2b2QwZ_VWQ6 zbn3DiDZ6W#j}8r&LQlmMS`E)DzhQ0Qc-;yx}wP3-yQ$`=ug3pEDV zcC<#j4dP*7%W-VWvESx;2V3$7fzMo(&EFY{w@)hF*P4EaJ_|lSyIlG00QV2L?rY%g zCrV9+F6SY3^e(o}Nr#JaQcwYUj;0Dl%6vppj5`Mgliy-%-BByuPwfsk*0d z&iistxeekQSv8dpzp*w0a$DTM*V3tOu*)eBbs6PB-ul!oPvcQd(7u$F5F4AnkQ0N; zpwhY)1w}XavzF&ce7(!+WE6ZKo0((4hu(l@Fq2NW)=Nf7ok z-CSn=#A<0CyZp){xywMpfZl5+kODm0^ABm>x_t{J=2ca%6B7yzlsF&{OX}%-ft4hg&h+kp^Dif>p$rFj1d9$Ok(!v z$89xH{>vaJvKN2)7I8<37K=f%z`BbAvJAM&acKNIk^HvfPk;OEX`8Ri+2;H2FRGG~ z2?FwizxLW1K!YXb;8|e}^`>*bDXB-y@fa z*hpsPnJjGqkNGtnBl8^_9tYn$N59?QhcC1RR#`~R`yZ8mU7GV%UTR80{+V$Jynj&@ zbXc7?_5oj?+nNw$pjtQi)tQRsV4uyuDK_;7X?E*s&!-`%{9Gzd)ijrt!p?7b_-o%6@2TIHJ^q=He9}ZP>)w8`c}ZRHc-U*Y6euQ< z?^E~K_Isr}T>5Dz>1>oGwOYMqC%q2f1D34*ix;;?k)*tgdV(siWZX;oDluFcrf1!9 z8IHA;Ph7ayGs`>o)w>ffmyHXZc)>)`4>Ry@KxLb-8uA0vgmVHa8DE|7k*W1lE-NWk z=a)~AFUQ39;oI!>SMGOw#D`8#DIntz9cRTG;Eq z-`D;&6y&vC%>B7KEqQgbvZ;+inLA(G{F{XmUF&ah_ullI0qNZzsB$MMfE?%j4Fo4ir+b1qWJEe2WjP0=mHj^7^l34%{LlY?N-JOX}B?P>+8meEmK9Tb5^nsJ|`CK_NlP5<$hFUJAA z;W)s?W0;z(fph*gFs=^v49^nr34RevgIQa_aj11X;X_x4-sf6S)8UKz;%V~EoP~Jy zN~`DFM$vamSC{7RE*BguT5p%npB~fE`HZ$y=8Yu>9CwGT2>~l2%cJ85(@S`$RH4B} zA3bbJ@HzAB!9gw?gmQ4}8} zqNUZ6vxZ6@l%#j0by$_O{*z{}XpDW6Db7?dB)6pQOI&pQN>AU1yVi3kqwk?&Ki5w@ zrKqQ)dS#HVDDrb$PBXoPH<&*?6K4!!R1oOVhd}OvcV$xzKdusi zyM?somD-|}EK5J*5m&pTxhPFg;E#sJ$gTu++@r`pKX}QSJbOs;UGu%0X+pxA zg(R9cJa#6?4|bWTvmtb>Q{)1b2^m6`#uv<_Y9>4-Z^{?TxkIsK$LBKdx?^d#N3@{nkA|eJ}2Tf(CM31?caCin5H&rErWS7D1~c$#nsHj|0;if zv$P>Lt$g68-0R(s4+Su;k0-TE)PHM@YyTi0Fi=n@*KQ%N-kqe-lQe(~QH6-X z$sh@g!yNSbpO&cshT2IKL*(i?sSN4E!iFCmM-kJZxmkxTc=iGNL4ue&s7vKqE%{$} zp=GspTgLA9%WLf+Hd&jlWw*lL!DgkUve@w0|BX<%9UH1uKN;;5+}q1e^kvk^Kj%Le zAD1kxWZtJ;m&)Tf4#Up&g}2%uCFXn30;+w1*b>PD5M>i%Xjm{oe#dcYCPCZZqW<=a zZ+|rAa@j|dUJy8KS;PyvJJr~KDK?M(wla{$HQe{L^zt#S#eDGP=ESJR*xF)yfVbW5Z0bsf*X91|PmQN^ zZ_SUt;mCOOeSB|W91hn6xIyU)NMc22$MAodq!4op5(Oo!YBl&$=grF{g@i2|H|wEy zd`F{8rlL!fDkZU$c|WKRzZvQbcaa-5TJYP{rnb13}}{&LM{lxR>2aZBen5oDBj zPsB0^7hInN@&)Ic0f)7agJmTqpmC=AAvG30Ch8rNnN33;9_zrLR6F_a(7vE)Q14B{ z$z0+OU+npuM5X0lE^6G%g6t!t;52|9rJp&^=UxO64Lj6=_qQK<#Ll|Vjl* zq0d@>5`_GEHTLRG^4;~`P{%_LO52ArP_h1Jnnk@jT2OPdoeuwV*dZzXcU}5{)w1d5 zf~MT^g|y=`@jx{@%83a3e6&+{%oSD&6vd#|Xjd9c9TW^&g3U)qb5H|-4O*&_lRpkK z$vSK`0pe((mP~LP1^!vUi>GZKH)HR1&UR(4r%n0ZZF6@#xDmkpkKCevyf<<;m-zS% zi^^4c-nvzuKhgRPMr4VZKknhLFSM~EQ+YnUdnE;@k^EXUx^!bfCu`@3Q+V%HVpLVf zWQ*zC%Xj?mt~(RkE)OVPwZAZ9+0hDdQ9&fh()-$HHlSl@`anka7 zNm@Ls^D)3X=La~$%++k4BVH=+@sM;+-hPZ`SM1tMB84O{i)3J1ojPK&$w2?RvCojEC=j_~pONjP6o?t#=hn6L)j?qT@qYe{0@+V9V=U4lJO2cfrl` zIIPo*LMTM$Y3EU#w7~AA8S13=`>_O_woAqk$7xHvY0Xw&dPzMR$@kRtzGs1EiBq_su>4cn%I|}d{>aY{o?&5r4P>huL)27gpj}RJ-=?E4| za{@`{&QaRyF{$&GuTR@9Hm@XCZ*RQmgXWg#o_Rm~AUJaKJ$MgaggVf%xJr*(2MiT{ z$gY0xz{y+3t(`5ek3>ZbRHwwKVP^N>H=pm>)16ap-3)AcIH1o}CGAwnbUa&XYkAwc z)Dd_;q~-g2Vb@|lT&(F3*z&BG>Stq$Pj(1rYZ{qun90@}GDK9b2v!>@rvt_hxqtxLdSmbX`LH4o|aB@m26)av&5lMzZ=p zAx`77dlg=~c6X^;gyiq;uiOs+OQSYl=3UF&KD60WS5Sg7h)gnq)OWjTGjn*s${tqtvCUO(T38QC~mzla}ch_Sr6R<{h zu^!odCc8b@Tr|ZE;nU>UZ$>b}GG}r*L@)boc&wt|EvgvTW6%tYF zgmY9!6q8HQQm-|xHyBz9h(H>m%1A(hMQ$;2bgRNAaR1gW<29Cw*CMT+RP*x!Z~pv= z5^Y3`#OQ;yGROoA$)5=`jw%Z{NZbkt?CsAysGAc1TvS1nrH6=~ey4SaHJIlEYUneK zGogPyB*?Aeh8U`l2hRA4KZW}9xY<^l?qDE+oQqFMaR&l0Wxchma3%-jXuROaug?Lg zXKy~G>EoedI2~BsTsqX%nvQae=A455&?NGsJhnhTnEz34+>P%yI@*&8?wX>nxZ5+v z%;yEJp;Hpw$!&PG+yl^5t1E^mg*8f=v3cX+?flrK_GmXqUyU1c$~k=CzL_0lkLQN2 zqKKga0xZG0ILHau?8&y&fD)=-vK!@|=IhvW_95O#Q?Jpt=sa9K?Km6MNvM>%IoYBn zSgG^h*tlPNJ9gV$N6}ZcEM@n*ZYy&nsqZT&-O$o!*s@j`qQ&uv6({6vArV^N0dTGt zFf7hr0F0JIVI#?HdGO?9x}$4{>)#gN{i+`y>h1&IyVw7a?6?1WciFbW{r+8GRo?X~ zMAv468gn+I3jTcbg!ls<0J=Ea#Hd5Ro!|F`*!5*!BF`%lW6syqH=cO#gwFI>I~VD` z;;0udc#>a6_o=sl?R801g@%n+P$XBIY9I2Dt%{P7I@DMfdYWM=pG&O$OZ&}29SD~3 zLJ*oO%t}bCoJeL6HTl#4V3XR2#Z=>U)`3KDV#)hG8BE8dVa0hb$j>?iq>XtLje}0L zzdNJi@?i2&?Rzemn^7EFLY%1D3=)qO)6*siA7C1SoT010=}9`-dkNa&B(mO!z$#Tf z+$$}vK}R^t_JtLNEJWWP)H}T-yFt~*@DHvEgafGWY4d04CUEUuy6o8ld}sKj3!PwNm$-ooveqeSbfuWMNo4Mmy zzDz@Hqx=EE^1Fb8Klev%)r)V-5(2Hdb18BsBDAKcoL?$1e4Lmsq$J75x*NSc`iG}1 z`@%o?&$aeH-Z#CiIX|p>YJpl8e=u!&g52mlJ=~l9mUkZhC|#bmktd?Es2nv$0{DzE zjO~9B5Zl%8WjR;aL#yJW9CQu-rD2$@I;Zxe$G>Zl+6ixXMO^aC}T6g`x*80w|1ZNY_CHGg~fCP|94eY?@#W*?N{jOSJWNO7dOGX zCvO%0Ot%)}%!{_!p!I)j^T-}U*W0BjI*7?XpT0(#>!7%3@raSr4v7G8Z#k+gN2_B6QqKVutZp!U z=f|3nX_4Q}jEKsrZH?ra{dYmlP?X%MA{pfitEeNpDtbB*3t=Cv&9aSB~vASh!)x9+EP+}I?(iN4y z_@fU&-BbURx7jU5h55{dJL*L#-IQAR#6Y1N!czWN3IWdvorr0sq^|g8N~P85aE$rN zZ+!EDvdfmN8U^uZkiEu#n}FuUlzv5Yp~|3$qo`g8p#~dDGLf)Nd?%HbVr8r?L0a1x z@xWS?F+FeQYo`}yfK+K)W6F(RDby&%{XQ95mQVfm;Q8Ap9&OPts{!Q_bN-HxInFr; z4rR%hoMN~vFwj-mv)6u1gDAv4PgmZBI~NBrkn#M$sx^!3Y1CE!{;l zeMw9IFgrHJ_h)|$Ss606Mj_#e()CIX{%3mdDfq}l=kM+_J3c9o(BnGtuTlI=-S#rf z5CNozXBF;Zx_2Kx3D_S&MPKU~L1l!>8jz7`43T1F+TX~J>t#iVv(+;wz`S7%mbkL` ziNgHgv8aVWhz(jy{4HQ%5pYA;D1RkWuYj?o&?2}dncYkgxN8Nt7^S_vJ=Hsw+FM_r z-RRY@Ex36QoC}rx!5@7g7-Ra{5|YCc`5T_27Id<1gCQ7sqlr^rE%F>?et~#@)2_Jm z9g<@@J)}kKp*ftUUmH(HPcjqLOne~{ z8<5&`{Tp6U*3lwc5!tU)@o>%$=&6NgyESnZhQ#F=65i_^QtW~|J&ic= z9P3(jwrJB`_Z4Wo)^GS63e)Ka1)I~Z2t)G~$*CtQN~9-VadwCh@vAM`Y7DI<^|%X- zDWExSE1ZBFZu3%UDZ!XV{I>*N_83a`Z?b%E^J)_%)Xzque+lB`MkNZCR$A-G9P>^R_CbV^UHG7 zNT z{ZXdo=C6rQMaCNvte2--8YR0KJx6xZMe4*{fdxEbt^FV1kgDs@NyK^rm{pOBf&OxDV+cm)>5S!fjPbWSn2RYju;MzKQ?OhMg^gqfU5zY~&wFzbw9Z@Jz#3;Bd7 ziiQ>BI&E!}I8F(3D6Kl{=6uqP5asn$@6(j0RZd65H>+;=WCVRU8=i{&WH9Ln2<{a^ z6PLzkm}tr8YEqSru6`TJ$ZH}h{lsc{vB!4jHuFL-tJ#v@$61yZhbPl5jRkHzB*l() zlAvhnozHyYPaZW+SY(x${g33A{-4aT=82)!Ux>bWEv{mZ2NjZZlzJ+}#lrurNurB~U z0_!8Lz+8-ye~D6}MLD30fhaX>3AwBQuKD5Nk-$*J1pzus>M*igQ1G!;F7_VNeDNwK zU><`o8y0}!$J9%s+P8*Gk z3Cca(-1xIbp^Z=}XCRuO-n4yAw)8rl z*y)f1G7aQoGMX_4ND2vN#mjac)CUog+8Iu|mAiN+yw1%1!MLLRM46DBkR}wL(-NJG zvgObdlffM?QA?VT3G7>8amF)(uEyR0R@)PMJ zSf|J75i|KR8dJDmnG#ubndd(3WK6Qv#AS3c5JHrHhyM~s*Zp8X)N2-ZLHDH(jDaGU zt)%|XEab79{)g+I%_jGJ$%c(4fGCLiAioUJZ_)@Vgm#Lf@0!g=4}7daK1v-5x*Y)7 z#8ezjtA%?;!#kyOqxSsl=L2<$^}5q>PABxD`ydc&ChH^_SanuR4*J@ZfrkN83bY4~ z6MT%51q^GV3HqC#oHOzrV|KooP}iFC)89+0uR5y++P5UQH}O08q4y`0swIx8fG0!~ zEV~xgXPR-7T6#ZZReLl+^#afkDS;5FGe|PdRC%v01`6JSb8hDYJ1;R@q?^)FXcn*0 zEG4yR)Y!6%C+bnERdbB^hJK-3fFgt5ZYy1jaNVE%_{DY?~e+yatelws4p}o}r@!U*uBErlb!^9Qq)xCbwQ4Zj2G5@hw z8X}IARSeLK!4SV;zP(HZ(XxuMU~22*2=~HpbkDK%%ddnk8j|av9W2(mx$zFB0c#x}+~mk?MBmqzHkzB(z=Aa!(ttO1!iGol*4Gmd9jA zd_agl%PJvSG|C1Ej{Oe-$frBnh?}+Q#n3xeR5(Vtb83L}Od8E$yvA3*?pFh3(-^M2$kb zvdgy1TMA50rN&uFk*0bjbEKY`js7H}8iU~9yWzq8W&op1WB)WLNZAbZvwbiVt#Dxo2NG0PAQ2Y64{AjuO=dIvg>tN<1qa z(b}B&A~&V{thj+`8@h^bBUbuul(j251VffmOyZRJsz5*yLZlw7JZu*lE^m=nS&^ zt2;IO`mcQ~6>(vDw#E>q{)?3j+G3ciI!?FUBK62qbuJ3=m zN?K=Qn@dd0owch{x2;`OvkmN--W{Z@cvA?U{qxn-uKjN%SG^J(?QQyd=kYp0hdP`H zu=N;|yF;3PuK5OI7ovqO<_;8D_5pvCjg9E(qzfLawiSO4_+k>QdSaF zgzc{P&kB*tW&O7LI2CjZz@z>c+u~5VuH(on_8gFe>q>$a_`wdjE8ThuNz8GmtHw`y znR3l&7v~Vxq`4)6klU5cR}17349~|SN+LRm_1d?43eMCFt17TY3&zEbt$02~SW1G* zn#;D-;A|^ zRZ8PO^lGg9Dh8+$BPX!%N_&($Opc@AsT}B*YN!f-p}%662Ea)CWhS_AZ%vuYqz28A z_a`Zfto`^K7Ei!?ny;Qc?Oc>Jr>a1){SRT{S^$Y!i>}wD*e0s`RNA+An9tSjbM?}d zeHKK?>7P}j*|t1=**62w;);=#eOV!pwwkb&ViwK$4KH(REF?d_Fkg{K;TyX*X0&6BSdpix>MUt0~pT<7)f zRs{fl$B1hFJ_MrpoQ~KPS|I8%TI?21LRqJ>6mWb;7))eV2__LIq~s?Fd!xA*Sm=ap z?l56Ya0ONOlV2a8x`cB+AK~u-+Y|5y`aNlnLaDbpSD}h`i2_emW|D2n#q>?4P_T5K zolWQrS@1Q?elXUPXHIljEQ-#u3z}aH)x$WszVwu1k8*Y2@#VoDsrlW zzHhszKg5GUv<@BOr(-0AnZ!KYg(+w2jKl4dAy+QL$FawGtRI@iuz0o+iP)R^gmIr# z1`7?d)vXFYtqrp4BnbFr&Oq0h(oDAPRxk?;gH{ZYbQPybosprlnYk0|Wd-_SbrSG9Kxhg%BMh}e9zLBAI5wk0q2K@iQ7PFInD=+CzUAq=H4k^m6q0c6*KXSeXcV6C~ zgn)`@V<2)@w)M=`bJQ@FD%={zK~rpx zl+JlTF_D#>dbT#cD840l+y@w;`NFiK0=?`hWcjag_y}*8pStU&XKbQc%g)D)>;*p^AIfRi?`y(Ofpu?D2^^hb?h%68&#F2anD^|2)Wv+YnN8u2zGk1d6}h*OYcYG-e4Q&Wn3qN-`n-y=FMxjihl$C2B8MzyvhG~!JT_6$Ht}wn#hcp3RUIVC;%=4 zAoo|j(wci$AVIfucHrwJ(5mRkY9}PQv}V~yx;qb*7Tcw?wFDPC zNx71AKb5ZAmF*JS1=d=El9gfJa<7j92&l!>2Ya!SGG)bJ?Dpw1f;M2;P<)Km7prC` zGIRYY5G+DJ2}Vu!hz4O2T=iyt3N7@Cf*LX3s?G&0Dw%f$oo~X!dU$zqZ_+RgLY%Mx z@`yyfCN3Gb&FZIWslB4wb>e6|ciS(@HmI%JmcX_!p4&LHugq^4=Q7rbhC;k1qYO0j z0WXSSu>i8-K4u1$heziE>B7nbYHj2%7lHVJ8Bb1q3UNeu&W37@85701K#JMW$eF$7 z4R$fh0t?jJ#Nb6GuS|p;y?0z*57HAnOd+3`taI@@R3Q$|z}wtiU5If00E z+mRywe2Y6+Nl6nzH5gp#D9O(CV<16jOoce-?vq zqfWvLR6)1Vi40D>&K>|vt9*=H_(7=coNy?bwUinP1({RKOCHmTCPsS8G}-{KG)b8p zC>gEi0^)Cx{Tz#huil!gvMcm?+Tc`PXKTaS3D!|IT=~}JLg-hV8zvZ~bY^w$08)r8 zsFlx*r4Q>Y%)3VsY!hlg!9y3~((Q26FfV2^p1{y@RcmWJ?AeZ{C4puz3hW2qk{RZD z%`1IkESc0NRES$mNG-;tQT-#vLAaN0i^M!&A9#T%*&a-vEB{2TzV;m{Z&y$!rT?=y z2BEK(XsJe-zK`ZYu02>voRx_EIg(cs7CU_AjyCy5z%JD>J}8vTMI~-9WAZKB@Pgm4 zQ2Se`o|_uAg<4zgH;md(A0DnJ+fwO?Awbu%XbhuZ&1>aM<*4ZgSwqS4O81mdhotJA zJugIzHd$K;KdPbZ)UHQ$FmLCUn*MH_Z%qtT3TP^9bApsSc=DneF~2{dL6gLedimxJ zE?|CKrWNW)6?NV7fn5l{Qyh_{ix}=ha*o`+L`Nl z&s)76Rmg3z&s(~K?5)6p{Ugsm{RBu6q3c;2R|B(^R`7Evz;($=VRjv6ImQ*=FbN&C zdQ|cK?4~x0`c0S5t9$pkpe7NE4JNrGUIj_AncwEPW;v=~FQmQ_@j7joQcL}?c!~E) z#I~>c0!u;FAu*pqTmO@4!L~7PalnkuU}XQ7SNaN~m!U!kgVb*^bI(QJ1L!E-ah3H# z;?rCuO2W52@KGwp$Js*BdXuo~u$g$O8hhHGF9&t>fQHI+awz7-KlX1QEI9t~#BP-BC{vhX4^r zsv`V;&)XG zV=@3FrTl7PUedP88ZuL%#8%*i<76i68G+a4?k~awwtWE1`IGPW6sHA@a>Pb(ojo%4 z_xrZqeB2d!(#wzQh@SbFPAcdX1gJCF*VY@UvDtL_yif;TBs#v6O7{A=j8)NxaMEpA z&ShC3XZV_I_dBm_Hg-#D9)e@AdzWtGV@Qs_-cV5mWY$NS$M+8333i>6`}QLx17D>) z<3`~&QU8>gZ=0y0jy?iT$^dEsx=K7`ETi%n8XtotPW3p@yPm9X z@oIk%*4*qj41?#}D`2TXiZW9kJ1`jh8GbsYTcR`6y{z?gsD@>{(_S1b8CN&b1rX}V zsAvQ;?poNlaPS42a~oyzILT$pen?^?>(TIPLW>pNE2L?0F-8d!L!zzu&_-#5X=L0P zLK16qK9!tIE=~5FlVtCJBfR8oKhZfaSZp7*&i*uxAj+)gu}CyjuX4%~sYx8rthzZJ zR8Sa!b6G=`!pknp(rBm0wP)K6Dhff-7T*lNN8M;e`7k41Ekyme`TjTJUlE-8FABu% z-I31f()?@%l?MJjAUOewTRrfPf3Ic|@-#jBwpMNlvSfNnM{ z(dvS>TO?G?d$lt~Et7Y^*stG%Z(NkIfUdIzgrw6_SiXkU(Al`G2cYjtTgL9vMy}6e z%fv$3;HQ!(1 zX>9O!)fQ=*rvo*5ozu9AO7GOLVVa|bUy>)Y0L~PhRMQQKVG?J1R@@5|Uubb!2MT%7 z`J|g#w2UmD2eH-_zz06nUI|ojj%Z&vke2GAw@eG_>-BQgN*MkstPSzpr{5(a2hz?2 ze7f9l4o>MTS6zyM^X!sF)CcE2XXBDi;4%JC>_WXM1S8a9G}KC`}Poc8lB^dY>4omAiz8|AmKo z!@N74#voCQXw2K8HTdfRh#z!rE}iiCMFd@d`$XfDRl)QxmE(;)=l&M}q0TZ-n{Ypg z#2;l?i?N--?k=8xZL-SpJe$Ud-RHN319!+SQd)hw?ENugdT2f-lUJ{wv*KiM9&L8I z5f8fSc=Z7(QC_`z01%@_G}A3^D=B}b?e2V)d>96k#{2tn6V=Zy!@--(-43>J+t&Q4 z0RSZriMmHgj`Hm?%uA6+09%6u26pU8CdBrtQZ1$;ba^I$-&|D5dBF8^-}a9hus@=9 z8&6L6Aji(b-;vmZbEWcYAa)*C&frh`$+KqA!5Kf(D@`|x75cN6g28M8ab9k+NvZWpo@D2Yk99)A+h;lX=dc zdn-`_*k?%2vRuNDEI%M&sV%Z=l|$S>KYV-ANj=UkHU{7A8e8*uCyQJOf!r0Qrfh?~ zKVhQ}MQALn3xk-ckO+WR7^ACwc}j>d{K6vlyS79G8++0M&D~j#7x5oW+0rM_Qa{a$XDaF0tQg6N0wyt8lkpdAJh@} z-uYEeTkgC7daCwrCHe4*0%ZKz<*+~AuqDJF0?Yl29Ph(+vG%*Fv^kCop~I8*Zn zvZ1lr^tqDjj~G)wK-ftNoe)tFTkLyy* zpfQ|agR`~w^L`o{Dly#+;s|m~RvHK##Y8Ak zi3fIdHF-72RSMM%B$z}WP`W11-xJ;v63d0>;QZ!L1Pg+91jj~|tdRmSXeWYEEyw4p zL(BYico7sN*mMlm-S`!rp3EY9AJDzA#eil!l2{cL#8nl#htDicyRU=P;_vBP_$}Dg zTJ!Ddl>wAR*y^feWQ3zc>t(^+LU^Fh>U12G*%!Iqy5U&GjJ;3dD)Q%>1***R;fKYl z;&yl`p%G;?<8oBJy-bY~451lFPX9YEQnwozhY?x1+^fS>)nq0&@^&}pCwTRdhye22 zC!KrxuWCQx@;#Dtid##}Jk=g?$T7{<1g0#iR2Cuqh872;hFhU_0Pde>RJ{_;1@gc% zv_89F0cPW{-^k^xLW_2o#5l%4nzZUqx^0y5gn(wU>;fj|#Y+%%O!;T&Z_mKH{%e|G z#y|C_vPQl7zn8b*2D!TD(!N=bpO?1#JOPexDYcFtBP9rIO#Fc@SXZ|GnaumX7x@+& z$iN#TVg;@_xbBV|C_F}=tP%NSV|8pUjcvl@GPlMUKgV(dvrmWIpETdiI0| zquT_1)^bHm`y=h41dQ3cwBt$GE?*-Cg|>wcB?~_g(gmpuQ_wkCQe*U~j%Q?!JjedP zR4a&1?NO>DZ3RR4w6{$ zTTXdEs7{Bd9v)wbiTbXwzFzey#GFzgoYOo<9xGS1ATEPvT(5?zRq<6L+F@i=+v|A2 zc=m++fo_Rcg`h%NkkO#8eqUmmG)uPiKIYNti1Vjl;g0*O>L~~OqT)rv`&z=Wq zHB{t%Y|o51wyk7d$v-M_c2%}L4T@J7A}y8Zq-k~mjU|C7{>R(@*9F&2xb|(8x`F2n zKxmdXH%zZBYzc9r-|AZk1ArvXpl%dhDm)fDk=4(6-H}<*Yn<^R-^%exZPp+m_`Z;z zIvEbI;T1i}9#QxN9Tya|)VhgVnC<2-$_peU5)`$f-_>0y_N5ioLU+Nb%L#|}xG6vq zVGRwNTwe8E9X)9Y;*t0giyDQ31HhWTquN3`51AZ(HP%%;K(GYc$glo<(OE6S>=z;9$)jOc*+Z&Y77D0ro<+ojy z31V4C%R`VLiECXl2v~nfD_94t3r7(^IPb_nZ+SiAfoVf7*uABCS1&TwDJVssztblpV(kr3P8DDsoLO8$nT>Vh4lovZYd;PG^kfac zwg8paFd!Rqbh$QbYm6ykkiBZJeompJznHISKyPq$LlX)d?{) zN1BwkjNJ_A_A2@bp~aGPu9|I(k(>}@1i9_3f)CfKgD%#U$n?SoK{FjokSK4cbmvO~ zbo66vet4T!98-5ROm)5*o!IBFtrJO|oozcGSY7kPZOO*2H{#_JW=p%N^&;N{k9~_g zQAeCn%krDThrTmq8lcsKER%p8o>t3E+BPMd&U?=(V&^O!!O!ZoPitE%a%g|&u?5c% zGZ%)Dh|LXW`lNsF!pO`p!NgLPcNsh%AsQF}Du>d?67wo4eO|{hI`ao1sllA75E6% z+{Kljg#g~`vOJE7UfC84<F<^B1bM|k|2OPqN_pSBr&*}^#y z#&((7Rn2}wuxHTIq&+-w2d_2sNpAn%PUGf?`^_AL)0g3|5jlmeeKt9X(`GrMhjTlJcTai{#NAy^F^^PYtIh=)7A!(W)-i3 zcJR+w-%Gy^qW#A+tAU?$RDJ{(ZQJ>0{*8O8a7<%$PWJcp1O@mVS z=eWWr^&GDN^6fy))5@!}6V_`bf;RO1sauu2$Fwo#MPJ=cpUV1**5Gp)R z{7f~6K*3}(>p;Txl@hUi3YiD2Fm9S;flj zNeN}IK5$#yNR0I5o5lz6EY8+ArP0LP)6-j>hjICRJ>Le3``0RlOMK4Yt4P{yl^YIJ z8{!2h4gyNjJW|a`?e!3p+y!;HiSmcZ4CL`V!9$Q9ES)5ZlZ-w{YQ&YC2C;RJo55PD zb9dGsYxPpi<9J@9AF@8}Fr`yG&55c3FuXeWCDp7?B6|4X;FxZZ9yM2vJg{5a{OPik z|L-@iWhVN9zrVhs2g3yKg@y(&5dK`=0&%T;zZ^B8L(On!sjyxjNdX5OUGIG-Jtbup zZxec}Uk1-T(7xKWZEjjIuefhaJvqF>LPbV(9!>x643F<7^>!bNu)y6q@|myXo9jL- z9-3WH)`H4=K;g0S0gxmHmD)lCW&JmYV^*hrRB;3&AqyuDLpmagBQ>X|Dobf9lhlKFoJpATk2Wm>o;2l@#w5vi z3f`EJN2a>$MiU1taK!XI-)k=1Yk@YPrfeBSOWmUHDT>1>HgwC~DyQl;)n2s{swY^> z@*a4!kQ51HP)RKyWzJeVO#L{OjE`2zOI^-l5`w5Jy5}@<;O8FRCJCubKYn$%`*$h0ovB-j$2L zg|+IxVZDfV<9qtk785q1bTH`ZHarnbMTtU2C29eXT1laoKJkEr9+h4wz|y+OKaMow zv1hD&g@@3N5z?;FT_w~3KekiYgA zWRC3Bhj8JZpPFXUD-U>dU^SL&N{z4O_xR9yBUayObZ7%?30?D7aw$TNJ-f13r|fO_ z3=Kcx&b?>*aK$#>y@MScNVepZzxVkEa}9iFjy(<`e@hr4$uc>2*w1jn%hXx)w@&2>qw(Pd~uYt_d+{Q?dIrGmuE3z`7m6R1{nP|M<)GQ4Su#Fg4a*l6dL zE^GU<_Y|FAHxyxc)4C0Q(9QH?fLKuq+q1Aa?%8PtOv_V?pSZ?rn4!xxZOjI5cQw^R z?_jNJB4M&o%G~#&=@($C{J#VAX52)-z^4Rg(q+y_DBb^>`xCwQQS(;6Whjgp`?sYz zkPx0+ig~;LpR&^Spa0zqC~>|1rfN4bC{03MxC~tIOj#PkmgOcp|MuGf3@04+c}b9lGDT_Y=*MdXeZ< zCykRU73br1?%c8(gl?3wk(U@xlk%HQya+(y3hpNx+LBj;`gBW%IA*jx-| z?bJt#a|~v@T+{ONklGPqGxkBQ4X6KxRsWfCNeG;u2$|)K5`iMN1G|3*&kMtB?dA7z zm~(jp+mf!$(T^;yKH)ew0sf00N@}0@^r;*Pqm+q-Q*dM0YC|lxcxt?M z;N*bphi0}NY`TNr4is3zN#z1%@<+6a=>mWGj`w5)iKI$04qgoGDypp7Q$`SVLUhOH zI1xa~$bABp+EjU-uGaYS<&M_GaOG0{ViIIOwx2ij=E=|bsUqQ;cw zrX)^UIw#%Wh%qy~yhH^}Ct=x%+VUc-P2faxog5)zY5BTlXZ=BFEcH%KJWp+6J&m~z zv0yL;xa^8TX^GS5-IV7I9~-(mkxitxY6wcMjQ$!n1k;T|R>>+7(;XcTx ztgbcCZ<_>cJ zI1%nfSg(-#UZ!rm)xG?-b!c_31mas8bFhx)3;%+*D$xf|6>Xpuiphz>z%NUy*+Vxf zzgKUw#cf1aSWeVf8OEKYR7|*pE5lEPIFnoihNVmMFtc#kE%GA#cGM*wYF)O`nutk^ zm6kk`fC@=Dr3UIYrFe!UsCdn5xW_qq<^JrOq;WR=$9HH-~Cx4r+$0@ejkJyfgHCepH}u^@xD%l?pKCS z-ZxfEIgH82(X+xpq<={-|BGWzqzi~WL4Uv%$)R@Y+m|F0)yKX&fk&N8!GdQmunZQ5 zfQ|qdgS?+t6->k+1Td5~r;-?vZQ=(~W>FkywI5`*xgd`lt(XMO;Y~wZO4sP8mQIg5c*=muYw86-ZY%=}-C&=AU`^IV-Mg*w;55|2IEA(4LrgYY#R0n*l``Wq5V4`| zZe=Po{ZOV-5uQ?vd+a&MR&W~|w1-U<_aqKrEnmI(dy$k>y2Qi2=l80po}}kk^roaX zzrEZ1S$e+u#p9RQu#&e9FZL`&d7z>c4)`^ zQxP;3#W7%d%sbzx*ER1jh-1^*;~{4moxb4P9Zh)>VjPiv8D3k_8KBj-+>z)T=$`mS( z1|GE)nV@qmq!>UU4g~I>(j0t*GigPw3`g_QZULx&?QJxo0gOA-tn!7ek~qh}LOsYl zUrD@pqMy1ncEfW#3AN;T^Pfq-61iFoYWwqKn`%OtV1^lga;BT9hEcQ%vr1q_zfW~! z5HKQzPZM&oAb@ME0F&%_Mx?d>6)^~CvJNFq`pYzTAv#Ee6Wx5>Q@4%sY}uBP{rIEs zz|L)moWKU2PYUqH1MOk`&tMTOIl@ta%8DfY3Fr&&>A!rU$Y^%==lY!Jlwq9&Qw!u_ ztj-Y0lI#`7HjuIePC~b|2AIhksXb{8;ef)V?;#ldEozN}YfuD&GAnpOv;DaJ^KauG z#%8ko&Lbe&JwtJZQ)^xZ*Evy86)&hNO=P&fm!%GV6ihs!@0a3M8wQ``QffSE~1RoNZOiHf2Kt2VIwz*qo zn4uT&*RGE#3IA*gvb6j&mee!iOI*`iNs}UB5CA(}wP+HPWn=McfY8iG>9C(bG`FOH zzeq^bLFkLzF&tW^=O|CCL=+uK2nX~o# z_vrh?%uA@FBnY_wp#Q0Q8XvGrq(kFv3_M;84r*po`EzrGR9^AyPT z7(Q1S4vxLUuFTq=nxyE$D)Yg8B$-u1=fy-lETS+kPpy$P#x7p>^zYs11$;xF2C1#5Ef6l0h6C znw_^2J8k`6^6ATBk>-1fZP*F1|DwsQHu>VsG(hy(H(2A`$&od)ZVPg0waE=c9NCE| z=q}(G#YARaJ`lP2(cB|-(J{xCohLOZ9_tZ0R%6#d6fQzzkKy}jk2=0g25=nw;1ExW z^UU9xP>Y|eTr}RdY!cJm)AeU-5?eK8fzup&pnObZ@NME|Ra*VRUMI8 zLZ$nq5ZY&q%|Fn{KbupPdW(%+0Wm=%*V@OOaLSe+A_7d3*pI~P6vfu9sioB0gp`Lc zBGNtz{4(qX4aAV+E4~j01gI`E+Ve|QXEcADt31$I(qF)fF8s3b9Sg2|6r#gkKnvwU zec}bvWjzL+b*XUuvvB->#=8#*h!ycfr$iqmg+&iT8ZTsUWsTOS1gmW6W6^6PCY4y4 zk?{&P<3vRz4Zv-1rQQMo4@oh!uv7?u!2;}c1e1uisf1gpX3iOF+=@5$s4WY=LP6+} zcnFsGVoG5nW1E=H8h5F2&c#MCDk5fx7>9WW^^PvV2#!LHIQP!R-#5j2jcL&s?!#ml zc45UNWUEy{h0keXu9V{L$Wbw?6X+UGfXwlRa@ZVOl_l{Y0^8hSJ4_X$WuPi3;a1wE>|ir38O+=E*vG6*%U2eots~(`$PF! zq_%(Zqx4915LWr@j%BqH677vaiqsdSG*;LPc5Vbqe25Hu0pN^*U33(Zin@{F7`aO7 zDFXbbx*q>WJ(4AV7i`*I?~57F6@}%)&S5wfr^J?GBv13EMANxTMAiU@M^-*U)HxIB z6(-7=IAnI?vWsSCGpco;nyh+ZV0Bx0{QF1L1w$go zz*!kDO3XolVFlGQW*c0gFF}WI%IJi?7Nc)p0b%t|TDh_Q>W8r_5zY^DRR{S_AKBla z5V2F-rY40uC|5uio-wHRn0KW%sUAq+V*u%#7}Qsh`gDP+FiM_UV1pTNFd>ar-U7>T z6F$u!$}t=t4RE0_GfrFiB2OaWiVf6&T@(qL3Mha%;~aR@hMi`&xF;~xWBP|m70Bow$jMF%D`m|%(*hZqLz zNeQfTFul_dglyQPg#$ zDPgLytzui5F4^K5Hpm7A#h<>poznV>IX>=sTwz z1H+t#iN~bIid7LGom)Mo90g#=W9v7|K@kSop!aHc&{mlMr;zTXSMnw~sG|-TKz8|Z zv%&rD2&n=MFc+8dN~-z85`Zs%QI$}yVv<0)ui?{*A3e=Amt|Zm6-XYi$BVg+Q9%nN zxzF-BM5-au7ebS}N&Z+ioZd0Gm2~MB z2!!0$WMfAt2;>|Q=D`9$3pA3JJyiw@-lEb@fzUl+wrq_!!dT5dnZLMhRb+rS3BMd5 zuBi&J1}p9-|2CDNrqM4^IGJ+7$=iGxdF4OVt(@u??kSZF2X|6D@Rc{wp16cx3vH%W zB+RZ0V9$^MeS;9Cp)3kmKRd!ei9U3+$Stl}LSY=>o1-n;{^w`w7?Fsm*zIx(-_051 zd$S3ma+ECroeHLXyk17zZK4r9Cz`Y&>m(6e`ZC0 zT!FXKMU!=;b^Qif(rg6JN?>YM*N}$qX05Qnedu3)E_%N0v0m5pq(%CEEH0tbaky&cKfsN7G}LbzZ@KB*=VPw0mKaFN$nr7#KR~}cBBzsUF=5@-KEOCz?KFv=SX7mS zOUEH{Wm$_*!kmg^^)C@M+TLZc!lRyy_kX3r@Xs1C>ozwtWHex-%k8nKquxg;s#Y6I z!p)^JQ`F0HLsmyDiU|m~X^JHds27T*jCs4G;pf?Wu#l;8P^pAekqpD{!P-CeQkDLF zd7;;AM=b+}fgcXj4X&B{lHQS7T%zo^Hjm8W?xMI3fj*j`B10OA0Jw z5fp?hW!~KZcj2d$8gl}j_k+@X9%KZP00z1k35%XFIPyKXR)6;FIc;Tp?4}Xat?4Y~ zq>$XIabjoHz&s{HSoRFxLy-88EHMiM$Y4M^Ls`N30VK$Mw)kTA%>quH_M+t%+-Iy}wQ5puW-jrSh^`b0^lpl2dJwvYQ0NoSojB%|xqZ!O5$(LwianKK> zxc!?}OcwJp#*B%Ui;h^kVXSiUn9rO6x$82>C-bxmee5MU@rz0r4>IJ9)ycV~o!`B2 z#7&oOL0Q$;s_2A^P??j6E0(QHPk5iVTjel?z%wI&C<+uAY=n4GFYLtq&^uqr|6=k( zlNHjFa?uZE50yK@KlpcXe*Ry~*EN%M`su;&kQN*GzCi1wE36LlmDer(hLXgx#EKc9 zq!Py69NC#ffNJ5SJVh&A%-6WoavK#KKDzP7f&m@JgxceFPTs$A=Gs)ps{=~X zREew1&8nxy%f=L(nY;ulBj7?b6KT;ivA6}CiV->im#RVrb#C#=_-qmESv+RdrLJ}a*&mM87c`$f%_ zMqUQH3o@2TP)lyC4tfTtgN3YBbcj^T%yUN$zaMat&T5yPC^%w0Rw{uMR$h&xYTvXa+Es+J~x+Y%tmE}&8f3Jt?a2{TSRyNO9cm`++Bun~cMc<_F=iIx^St0##IN_FC?mG~ zd%xCI<31FC2Syt$E(S`q&-ay&t~I%*91<>!rvWd*LT^M1GhdhglDKMc$kre+d?4!I zvs!@G*YgUM53Zb`YKyA|4Ip(&Ye#%=#1;&W_0JI)QRx@WD`ILTc2c+CnJKPTwEj4x zX@|JE^uw+!3)uzpJ$chIdZp--wE3_S*ipt3gCIPx6sufC>gf^?)qXY}QH4_5x@IXl zw$0QKsaF5`E3+@W)m%zN*4q<^!@MbEAu}vJzDNm#bG6l=G*^DblmtjZt$sgh=OSVQ z49i!E?d@&A5 z*%_un@cJ!|{Jz+sl==ws37b${jj@rcDd^{5fhRQbN{%ZLL~eb;Jb`AS&yt-;?&{EP z-}JdAjmwkd#*c{^o%8!294VUJALMZE(^(VJqe(9gpOZWnG4i|Dnr3oGiyOJXs#)4Q zaA(B^%KmKoD$*Ilo-RF4E%Kbxg0CNbJJk>8h9*9Jm*B3Oin3Z!b*i>_2TV7yO{P$} zHR_&wZRl}5{L0)_Pvm)gT2o)`L$a!JG=zl|6-iAlje*=vjgF~E4yF(%6_?zJJQKsf zLRUy4Pow}jrGk?{h;%;NN4?+HeL5a@5}tZwcp16*%y%rbc=YmCvZ5VihIxuB6nVssim zUEgkR$?j>l3uV-iv4m8UMCQdSVhR+hUh;$;!}_v7G=&{u8c=)cshf=KLP{Ws;- zjmXJO*pva`o&Dh#@n$5g2Htpuv_V@N(NxtOAKbM=%83*j!=^Hroku-3vOjF^T;pBe zxRPM=Yb)?abE^)XN6IRGIvKAYE{nqs$P$K=L7OjV^L98-#%gvu&IDhxvr5>0@y~se2O8N1iy6p%oW52la@sDoRH6xO zz{XCj-+q>fGzQ;}L-4P~-?pxM9v!{5~ac7SX3N%{FKd*8#HWkO$8(7M1t zWFlT&R|5|_m;NN=ymtXO&X@eC^pzEffm|uHVAJu24eX(z9jA_l>+!LPa~><_R2>)* zjk+3(@j}M13!tk-DPZ(Bn1B# zQUZ2duj}tHkS6@%>#u^Z;sLth()0YKax6%Oyc$e6CiXM!OG_F(0qrTkn+*hoAzVZLt_^?S3{}b(Ix1_}SIG7ls1bA!ZLEvSb^LFk9K5f&SLv=xw z``AQ_)Yf9b!a!0l+gSLN_a|a6$cNkRb;vnw5TxN5DPutxp^2FYfF)&#G#=%FKOs z)hz{)kpI$b{3UT9^rRXBjfsBmH5IOR%f3P9QI7sZnL@^7H1K%eoj$`+f{XaxtM;dH z+NuTJv58)eDS5{RFrrNAn6#m)l*Cl< zgtQpp_(T6b;~H+e4zkJ&8#a6;;_KO~B)Ej4?0k|NF-q`iH%AJnV6U-(qyeXH*f$19 zydSvnTugd~Kg0sdc>Nb{;~spyShQ$HU%R4G5sg}SPru&ee|EpYk+VEi)wM(u5VAZe z+PSS7f8kq3Gmz9I-rg0kOuuFL_6IuIFf2PE#$8tecS(k&d zt*9!m18A%TC05{<| zhM|_ZHP6!%M19gS&-+d>#eZAj?WB`o4(pr}k}E;Of<1S2em;#nqs)}iSd{qj+TM>o z%`e?c&@!tqCv&3FkGMvX=um^fh@~&|hC*WdJOyJ1wRqt|2!e!dk1hV6vNSYRBSvgJ ztZr?6>TN$ip36EI&Dy<6Xv|{;Z(&1Obh<0+v?rASCY6x%^Pbx_L*)facBS$}*{H7$ z3%`6(@%`HM`^n)Rnq(itab0G^zL>untx)+|o?jKsRC@0jwOZ>WBxQV0w8<_= z*xu2;zUu7Z8R|&v+M$FvJ$-a2F{B)?Jv&lIG@h|7#1!UJQ_H%*MTccEs|(%6?MRQe zlnxW9(Rnfp6Svl_Kf~>-bq z4wHOkC-x;nKY2x3y}xk8z{!Oob z&+%Q?JHsAxhSlPX$gpz@g8H9sRg{}osA%YZ(}-FjMi2IKTPp&<$bw|xS}QT%&}NL=+@!=H4`J`n}LBaWrc8R{E3I_Zd9X^CmgQ4-v z9XXa~FA1dR;!3+w8?*{}m#wW*#;a=pI8p?1WS>$k?vDy$l&u^BT^P4TxMfap0j3(m zWK3r{fMvjjbRyxWWzkkofBs%N0EKo~;ccG&(CB$qIKAu6SuZ|=*3^;Li2|0>-l`h! zs^N9CW|BNL={p4gwp?f`c2&GYEp8>8M>ESQ$9ll-Fz+xA$0~9@mpq3iW6YPeACU9r z1`GjlnKsf9;<~n4J@O%sMTxP>Es`Fyi2B(ZW`uZyV86Ja+wsu})iW#~wNF;*ycaL#DB?WJ6;;^|S6I9;V{j69Zx6W1mWVlZtmVe`opg zPyk#%DVqhf#WuGN?U?AcD9Vx^3^0~gj;7~(!he~sE{Er7a3cN~@dSOOg>)fz!wpXY z3Ur_hz}|OI5uJ_GTag&Y7BwYfg(!72Vw3wUmeAZj$K4m@&9c*EF7pfUXi4K=(b%|4 zJfW@VMwed1{#={NuFOCo?9*`N$K0i{ju&3eW1DzP2d8Jt)|5$ zi&45U8QL@sD3!$pA%8fPX#A_7_c{`AiSrvS>b-2|(2>r$p?AcusdF2If`hW0`$|#M z6K>9Wqy)O$^)mC;_m&n;Wpjur$qf-p<4&UZ5tQRZd;LGOn|EP3H|4zAo=qZqRuNxDzV82&9|d!ESwYPh`WC)Q zqqqI1j$C#5mrt3=j5v`wIz`ygkuq=PMFTqFy4{c&Y*{tQCgpCBLs|xsx5WyF0H|JO zOqi)+Gj`5v0bF2lUgmzYO8*|EsGd~aR^1^R6{30LE~DZ8N7<)ZUl*N@bY~M~d8;R; zwJIMpt$uz_4-5r7ufu?e`#$j=+u*MpP4k7Jc9A4?pLFV!!sbr9YYBZ*_N zT&)9oOCd_?!tt^XCf{|x?LUj&N{*rz#}~-8uG;rxyM@XVv$!-I$91X)hY$zo3EnPr zPODK%#@Gv)u3xzm*-7o&XcAahTq_rEPm4mLhoq>G%y#JAF88HAgs3sG#_pU}?tmUp zDqBD;Tc6+8UPLHfptsiz?4eUl} zTBaZ=Hm|@LSX2UQGoKR$Dci(fHQ(rWdDyTmON7Z6BU67V9NkyLqauPHgnJb0IK-sD#wm>qNGb&PrSjf%I+=g}8GMXo&N_Z?TEN!@ANat^^W4XDk9A?(X zKSSZM4ws_Aw6Y0t^zS6M5A4rlP8rN-wPkOK`uZDBi0AU!WnM_qxOOzt-#;n=n6 zIWjvf=l6fOqh4vSoA!9U7s!0v(g$r{MfKh7kkq_twp{2iNPUGp ztfCV4)vh~s)GJQMxxB` zO;}>cY9r7U_5DkQRm=5|%7~x3RN3_a7lt$5R_o)Es-U-I_a1O~$6 zaik!#EBaL!p2_Z;zv%b#)_kNwGo`VeJ7IjZ9~QrQQYPO) z-`;cl$lac=PS1`pj2Mfq;`@Et!{u;yg!ER<)mh$8?3x&`V%a#jen$k* zh}G}v*_CzN6~i&{o%}5o*>-bH;6x3JMc*HODq_!`S|=# zorr_VVupeGbS?+O$IeU3!Ff~X5eIpR{@>MaE1%FAvMvpN7VxDm8yO%9Ci~gF#RUnR z3)wrv;%X5XeN)}xkUGXb1F#y3EIxv+uQJe5XNc3i?v~{?YX9a#Z7=F@wNZ-UH>}0& zopy9A1v@fxdhfh=2ZvRpDvK6QkaTQT-FLr+H?fYH;=IZ=+JN(Vx3*~~HCFEF?0Usl zP43wAM{IPg*vjVNyJnXbgmT3IF|!UrYf35`G&Z-~0!O|R{>t82dA?*CT~ZbQww!qA zv2;dt>ssJ)k)KYeEg%pnMh|Elu~QKy&jGq8407Z9q%e}0s1jnViI(s9ht_7c*O#PY zd1jkoZetYv=C4&h{6%k*t%7;Q?iC58fZaNdCE`}El6<;r4*sul@BLf_YAiCqKQRFO zgIw^V8l$qhvYQ-&k8^hf5|%)M9UPExIvlP}l`PK3ZNw#HMNZ7r;^qXU{tjumBpzmjg01|`)){dFC*srC)Q$l=LjmWP8bzYy9y=wVEAwyN5yPswRI~O zkh$Ksns?-n2Nx6n4FKS=b(r`IIrTLyBNdd%@&YX!$NGd!XWuVeNJOc&&Ia zxa?cZ4XPkRU*eMUt~a;iZOz)weJ?BI{r;&sv8zT!$<*+j-WY6GVbKGFP%F3L)WrVj zC_(T_#kZa!hP8n9#^c-3-G!!+Lx~S69bBJFSOYE-3TM{I-W4^AUT(lX{AvCj_SQ@_ z{+AQn9-nbzVhnK|>-Z%?#obN8Y{+g3p{77L1B*N|CJEUi+=6>Z@8+MD1bd(9`^rQu_3y)>sTZxO=oVkWf;t2JJ+#DYw~ zDU2UNOhd6j*DUCc7Tf{ocBOWA2<63>{pFY_lp`@wxxsE85;6)uOPQDr}a7`2!H0lHs>Em%wYoyM2-`B#jwWI=k%I&)S|K|F|L_4a| z8hYc#GW-a5L4;Vt1uNj-OT?(?N#;24Fz^nX3U68k#(aYltd-q?f%B{_ED>+aQCu2j zu`16QXg5^G`x+`^jK&Be`M5cde2tvA+CrGUVEdkqxx%3oFW!2i_mZVpikr4cT9cS% zUqkduDj;|}x8oBFbvM=TOj~v zzGVc+cR(*1^c%?c!Pgq|FPU-~BDd{h!jXlbt>8LRdNTLN~vfA;K%O2CJ3tFb$ketweJ>lxYMMt|P zrV^kd4K^fp?}US*!*$li^ua+vM{t`aGRE~0shD?zQF2@K6#Y@UA$~cr8Bb#B&L4x)!CA2pF7kq0aEkxxP21Epe8!7WHq} zg;RCqKe7fp-S+)`$8m^YaDkFK)2>RSGp>r~tSX#DlS!W}7$L4L^+ay8X5we)hOp&x zEW=%X%Fr4%bz8)LxXiY&es|o=@Qp2cFKdybeP2qpW#M_9X!2c6Ha5>)vyc_n%0jgW zsf2&08&g-1|FL-chd%-A^`(lpZ7pO?s^ns>OF}X?9^iYE0ny~+_P2=We?zp~nJcT; ze#_S3>d3_ZG#B!rl?vZNF6WV8B4MQ}tco+>|_ZomM1ue^e}qz*h^_X-jvG z)<@S+E*x*%TRS;##I0m&TD#l(XdDuNzM&tEPa@}G!sSjX@-|~CQh8Q`(=xJ}Zvxne z>TDjJCUOk=+jT2M;VD6IdPmR`YRTIP-7=c7Pk64+7I|Rxe(90uZV`B;&;Iz34qQLD z7+XMhS>5%T&_XnAzu}0?TGKt&kn0+bDPm5I2vx_&XmDy6AH9Z^q9tHvEPwpELK!tE zWH69}Zr7~DPH0)DuTnK~m<+!R)GQ+MtB>o;pKo|6kTSj$M>xaD{Wl|={p$=*>mgUS z%SLP=&WnbQ_H4Wn(WD~1iZR^Q2PnwKSWw%hcq1-iz6?2u(?5z6XgyG)=Wp%BH0FT) zCf#=xHy>Gbm#nN71`t08xdOeL8vO}4YVZ&atiF%y#Ni+P7}b*vWY)dX6?DNFtU%Rg z3b3p$TOCc8M_vBeVlw(9$XC*#-nSv~>wyGM+CzBf=E0j0`?n~<$q*-w#PwtAv8=Kl z+!ihr4X!|ISj%p;t3jz|y2Ehfawri#8Tl_B$6qsZSx%lzt0o>|>ZH}zgx|b{U0nuu zmR4aWfv%}Cyf6wRK5{Sb{ua8R$01W3BfSPBXG2yIOv4R+TESiSAEv!MyRrW57@63* zKgCWi2)g-QWuveg5tsyVw`E&Vexk zy3xBkwdhU5ZFTuqh#v*;{ZP#cPt@h76n}*cS6~oIG@q}v#VN}u`OOAu1sh@i`AOQH zXU4vRGmI-^Ia4A3&O$!JD|>uNdL)hn&)q|B9Ir!wC11L`0pbnV)`l`w-(kam1cM%&t?gDle80^ak)*rzq=3B zv;(tO<);|#BzZDq=YO49r4Vw@*}YAj>xs1Nqnk{vS?*n?c*_X^AR~NXekDi)-?uH2_hBVOR09RGe*I=C$*$m^3YxOg&C=@4sd@tps~7SW=H*Ax^3K z?Ce?MiJGR3WoV|zi#0IWF>Qd_j`l%%x1VVy+~amWD6ZIybi)U2Ibpq{o5LAt(j|DC zp7Pd~MPq9xvM>+DGP|(h1f5iGOTwlc--qc2oYES`w(0$Fxa3*zH8Ld34ClSpF!RQZ zUgOZn`7xy*XMllM;hOnJziVCK-Ao^;Gk8;9tm|ArUag-b@Ia`eO?UY4atk_xzw1^{`0QBu!)|rmnZhD+ zU6>&_f(wD(;HL~AvvsEhAPSc_zT?X}GGA|JU=f+j&bs6Dfo#n{P+RKb<~t!B>3|;o z#QSi}RtaGS3AmSmJj;iodYrWlxo)zJcO=GUbUrg9)+s_GSY(60BMxw+B?*i@SY3DI zK61uBw51;n7w?84u`Kwa0susa3epnV^s;Eu@>E`W-%1{hUl05N4U+D}p)UR)v>=3| z6N5QR5H2i36OWc2C{%vVC#}ZJbA%1IPWCDIn}~9*0IS=n=AdN0wE!AIqP=hIHm}E! z)9>E?sdv(AcXEk$A0rxO!krHOG%$$K;J#S^A@L2DEQMUR?WDHp*69@M;3_p#$hnrC zt2#92k<3j53crIc>X4KYHm7b;{oVO_tJ*~keX%}uHTy|MbAR7ST2P@SPD3|d{sWUX-HgNb z>V5LwLw8%MC7c^ROF~QA2QA^6I^OMEfQu4y&mh!;{UEvhzFPuBQ(&pUX}(_OvOvC@ zrRytDZLynmwn}4(B(2pkddYu4^JUIg?RLge!ACBB{qxo^4{>?KoylYGH^zx}WlyYb z>77BjH!#JWoG8x5>!W*In?av;N`249EFcgQLIViFkC{B%s-qOd!UHJ&jYti@^Ppxr z1F2`|8_kWy4L40c2cg8{H(N(nvimouaD}qNwN)3+Z~v)tlvkQKOCZw?m{Y(r@^o5t zccLYF1Dp+pNz%a$K|$IQp% zi3f~hCn8wAG_F6yrVaS33DK>!+Z^Mb@1@0L;5yoR_J~1thjl6Am*iGt3VhtqF3&72 z@^U`!#=*Ai8?S;YEKkJGodIw2#k_X?-UD1el)sKlyraQ41^M<|q%j32Wa~6?*)uZc zx27GiuDfb#BB>l&!X{*5TTulfd@exSPwX2?Nu(XTEKF@a70T;ReCRb1=Uwk*TLffQ zJwF@wyn99|Bze1EH&hz>Uvx@ER9D+MSHXspN0%(Qh~Z%gSMEmk?A62E!RQ!+&X(s9 zbG^G8oeZh;WHI7nKYa{zi%qy6tuTUbY;vRM>H6&V*e=Nt1;LTyg?FIJ6g|aV$LF*C z{W<#Ta!G>Hxu&CU_h{WZCced--+$;PaW7FpwFclKaZU?6>+5)n3uu73(`s#ZS_*cd zQn`q!n)T+pNpKPU>x$UqBX#|~DeV&AUPpI5U3hS1jIk_+A^nlp*i>z%E7_pVa?wZb z{L(7n_;MvUsQo+v7h)Lc@I=nTcDyOQGyl)@OamJ13DBvzdE=s{qI=5>n|}J{?}}_# zyNW;e0QX9g$DEDD<+R_MkIju-3*lUQZT&a^rjzmel=ESEViKo$i?Q2S0lV5l0gEYP zs_jl6mt;7DCL`QE7d;#)i^pg_YLgQ)c|ax)^HqcXua{V|@ozilFKbx*TX1JYIBzcw zOF%>AP8YyM+#Q4Mu=(n8HolJQm%>o|%3TJ*@eq^)Jz*jrlap+0bWNe`w?m0)IIM37 z{YMQ)l#pYNS^ESo`@Hn7nMDlF^e>jbcDT_cleMq0qN)DFZC^J#qqm=~)aYx`^y`oX zoEthRh1gy_O@cwghsc5NATq!gM<_8?GyBE6ULF zva0YyHlNs%Lu-`$Ir+!DupwjPZ2D+nx)^Pzd6>)4Iv2ELG1=_l^0pYaxLtkZFAbJh z%zpv+XEn%JK&XathuW=DUl-QUH`;8)OheBU;Yh|YTgEd-L zjO{M^PPLJXH+Tmg%r}R{-y4JX{g#K`1*nDRI4cj2&0KhRbW<|RS7|XwRX|q5Hd4vQ zKWsYk3F9b{>)2AWTOg6yohpWEd{@r!+5(|C-vI6@RW84q%o?W;hcYZt^L*i-H63xh&4c?6Q~O=1k-SJj##`UZ%BVC zJ0Sstb0GV}a1A~?oY0|-FE+A}kOti8AYANPOwIHW`_EePv zby|g)kB#714d}M06S;pGD2z7z9bf`;CJW~h)6r^KawN)Vt%kjuiwyHU|3Tbi>x6+| zc85Kl{bH`yXWh}Mg8Uq+GG!W)6#(zZW%4COM94khCMam`c%A5P_pHVBLbD1r*7iT$ z%_y9XOkLaJ7)%(8?U~h-d3Q7ut4p|UtK@v9_W2|7ar>@iIT=jxvSCXSF)QN> zNyjq(F_S|do*gAEGu~MdRKaw&sV7zKpd%h3%%sNcd3&Z{{NrRql_do_b##CmV{|c|K$yt)=P}gnMRbNdHY)|QyC5%FV^=?Sft`JD1)H-PbX)v(-6=Q!N~8*s zS&nPfi!hvRW+lU>IAl+&cN9>KUD1BW@#5OfZE^qbFhII8W!r`JvYQ+&{SdK#m# zUA4m5jL+WRDuX@LIh@gaTAH&-JT(5Ya2?|X*=*8cMW5pT({P4|Tx%895ANY;q%A}h zAd>f7%VIcI?96C$bw)b#lz8DoUgwuMPcq>;$rUX!@MUg%dq7GxX!?uTe5&%%R^CaI zb$R$L`y7w;UMkn|Lcmx>ifOwz?0OWvCuW7RqD7WKG6*ivWPZz5FSMb0$GO#Fiby_X z{h+pc1Wv}vIM*uid8-qsT)Dz|Vmql!z(;y~MQ1Q@*(Sq%p_Xy>i#m1sj;PL>syp!0 z8949*ETzB`3 zkcHd{>a44~yFjtqxy9S`;67ljWb1{uw87cQ)YSw^o7} z+ZJN==3^yBm+UwMQJypefhgDR4N~XZKx0j)YnTJT2MgnyHAb{0lW)YwfDV@crFv#iH?PUbZZ)Qqt6@okbvI>HPt2dmwJrk2ZFo3u_x*GQzhO%Xw= zB?u{3Z&pVC&r9^Sy2AUe?#ds|WAVL*o`5V(W^j$n1QFRC1=~++==s({NZQ?{VY5ny zco&yNw?dh88mLP{L&d`{a8&_eEtE*((yx%*r^wJN@egKVPr+Yk%J19JaOF z;d^yn8|QU8OG;g;-{PJc%G{uSpMHWm2j#Z{1yCQbL|etY*^$`Hm7Lbc^?EXpUlx74 zKKfpW{1WECe(Hwr&09yi^d%X+w8zhP?k|lXzv)i@mE4J9 z$ip4`+3ED%m@))QDU+wCIL`1^(fx8VU<)tjH?7dJaS<*fcsk$l6-%yH2)prm-fktX z=oFk6uve9qy!gJTWpyj`O*bllL*6R&5XbfVy_7YY=*9o6~e=SXdxy zNQSni-15Pt>c?hNq#AsVrKRnU7LN&P^g^$XI$NcwEx+R^jF|kvhrWuK!^$REpnl2#i)o~_ZNME45yVPWz8 z>R~=(&Evddz8|8=8TZJQQpJ4$m6NFp2b;pWe6p>vXylbPeOeNFM`!S+Ln=FcQNb|0 z5em+H=P4{)^lEJ~QRs26QGAj605ZE|=?`IBC@ z<;PF?o?(hzYiwhT%HWHQbx|?_vbmZ)(d>VAt&RNlvGVAZATVQpwKDXV%eWSnPdeyh zaC$Y8TwDO1aT~Gn3v!agEfXPWP!U~L6VdjBVS?v^4LTk&H?tf_`dGw?X(?~hWF?4y z%2OIo!{5&`o4NE~kZu1oI71FA@L^3$#9I9K)}ych@qqn;2&)+7LE>Zyp75ucieT@p zcmcOJstv6?U!1DNt`N)9*>XRzU?azh7{k|`Nk1M6r4lGOKLcH zWXY=-(uk?==oK?puqn*7M>>eD-WJ&Z`Kxct@TiD$hLqhDVCo8EkhysMvM%=CMb7b;`AKfD6t;_g&Wn+v$VwG`8KKV!T(rBVo05XH(i`w&E` zqsE#@aXcI({xqrFWEgvM-=&9Nz^XCWvqx~F5O0rUgUlhXNM~+900}7dtXC7TH@gU> zoas8u$+md;r9PU}o(0TLz&$#-c+yaaDcTM|(z1)pZe^aeq`DC# zHHx6It7siEdP5KiE*-l`8^E}!#L@3l)k{BH2C8Jb=V;H#&(j3FF?=AK(C;lu5ZZgf zF0eQ1#{Xc_ieE$wasetHr15Bg=gVu?$K}&<8AQ{V^;bSeQS$!osPqA{?d*JX23Ew} z9==yRf43F&2y;7wH4?RILJ(%eKwvtpZ*>j#_@OAWTGK)(sNm~ zo1=w`skC0A4Gx(3ey3>Bh_;21(8N0VXdYk%glTn3KG0h5jOm0_^nm6%EL$p0jJ4Bq z{A`&Q0+lbwcjsa(IZcl5{1a6w$giE#T7cM z)NuXfF%DZ!bC;WHbbJY~uH=2OO%dN!3L12?ybenshf}nGtb&8*D80g;S)^q_h~fj9 zwjTqBM2(BHw4i{^yQ((Q4?lx@Crad43R-_Q_qcTh*medPBv(VGTK^N<>GRvT-3#0Q z0k6v)W>WDz=0mzwJ6F7=IG4_RHj1^28z&9U6B5;8c(35Zfu#sE=S1BauxMvP$>pP) zpP85!15f^=c`K@iI)Wurhs`BzP1GOXkc-mlw6l0pe~JbcJnAN1*$6wh#zXj}X2||@ zqM_5IYPqQKsnHjD<4JySu!P4zhB_B-sQLE%AyoODZm0joGtn?KIjDQ2M@jtVJY_T; zF2Z-o(?k9h;Bg!eLk)|N0bRoIsM6mszF~%RBNrXfbWpZMo>k0;I)RR6n&|#gjXjIl zZ`vp~i9-1#WE{NJdiF&^0(?!=gmI6hiKSCr0*>7W?>ehJ>Jif zf2)|oidZBpEH#`l_fE~Z)R#8GOnXk%_lEtt|PJ$`DGM2mOL5Ubya+ zehz5$9L{eUzH}ai8(* zU)*RH`rJY8`OcR7M~AhyuKyG9E!r~?+pS_2-3F6Jwjtep(#3~Vn=hLaC#Z(15WqzL z2@?nAk{!LY%5HC*fB8OqEBmwMezv;#)m{Hu=<~;M7dVW^M~yP_d=?whxq;W(t3$pj zV8h-^L zWGr059S2r&?Tu>k`v1T=6(vJN2WfYq2KCOSEIb0@YLS7-8bg8+Kce?hrC6yniqZhj z&L23{ibbw!n@Qb6j2ljas(zSsM2vA047tW6{DBlwZvDs$14vXx@fn_Ia+WL7@x1J%&Wr1Jtf-(NA;(VcRkyDd{5Wr!OsZQF z(VQ2%$bq3OfI}x4_uM&GhNkl(6+Nb**HJ7?-Eh-%nG`1KDrXlTQ zHwr{EpYa*~10xTxW{f|vVN_a#*_Ica=sP2hAOTCvH~9yadDs-ZKMOC+yGm-3f@asJ z1`gVVMwUA&Zz@?hFR5T<-CyDmCG0)LDHM~be(6k)O9H3bTTAmt?i{*n_ixkINQQWK zZmMt73tD&5!MY=~dNcl8FHUrkNJ)mrU5n#!G3`jPA1NB~ga*C#zPnm>1<-)_+2L?z zgw@+YGpDTNkdHpUHJF*H_*u-`;d#=i796wxNBDC!Q^F96P~5ef85nj)-~%YLNaZFi z6lQxow~W@oC|T5bp3()685Iu11NCn|(D&eh%BAgV<_EcQF z-r~n}0z_S)mg91smW!j)Wn=y>hT!XQ>ltwL+M=!LTo2mG=Eb%(<2@CCFvvf|5|A_u z%pFH}<5ve@DC$yhw*wgfvbP1DWn35lcUEPi;{1>97h^4H$NJ}OKKSh;PBbOyq@TDi zb4#}^OT5c4Ac=~l5fgUS?rNYNDby%KimO&V{z^!)h6f1`WoV||p&#&}D%;ESzAJc9 z&O}8r`qB;rP*7vt?(V&mMSWLAG4@8h)aiPi2JtmTqbpwRLgCtuH(#&t2%Y? z+kp2E#u!;%+x)gxk+{p1F>{C&*z+eR(&WvaXXd*osv6ne6)=CRv`)D7Pt!ouiOkUq z_1}xFN6s@k{}7bz-q$4WAACd_uL5w(FhaQquT8Xur}UUb;aLN>b^NjzOeTknZm8e))W# z_jmuf_n&*tS?jF5@80KGH(Xm&84sHh8vp>j=PC*>008v(2m+uOkGD6@g_ZyS1D-3$ zzViIG+uRe!+?CF9Ua#DA_kO*vzqePe#DEF_o4rQrs|Yuab?De8(oV%N8tgFr_`(|L zN`Ia2@bx8-^t1PF&4^((K>YID zCAzz~7##+WFHmfO68v{Pv@9&EK^X!G!36CE0)iR0raV>ceL~N9l(~M!( zzDNFW*lPbTw|)bzK)~M^x+ERssRCr~4ts77@w5Y%#E6%G?qrBVSu|H42pG_%8qk$! z$N(%1qTFjYqF)=ltCl$JD$jcL^N*(oCijQxs;$Z?I4ooW^rmXYwj(XTO%HMu14tVz z(Sv;DTu!S6=Qk68uhh^bchQQ!JG-537G`3;$I?vdDK>%&r>?I zdfrU|Ngw!@+UBM=f3q=3fc42TJ0S(oT+ zgL4H6E0Jdx;~#J4((3N^pIN__!<&G&yA6xRw4DyLUN6lH-SbKoKGM3+Cm1<#kBxAw znb}LoQI3AQH0=E3RB~4qxG=|o?C;{B{wFWFwh8Rc2XVZ(q;7MJSd z)a}>Xp_B8IkS8SFOV7IhK7&em;ZfXEqM{1|9+C(&f-#>yt^y=~auV&Eqa_^rj0jyStB9T%X@eHdWy3Xu>=k;86~8&@*{x(`gKJpGT4jk%~gLHu+jO z9j|WP+53>~&*6$9=(3^!egAogHt_21N?aL+1w`Tg0d<1)=}>tA{vd%+D_-`RVnYJL z=W1XLLP}U~7JV@bA)pCSSE9_>!xDD1L+iCBigd>r(40v$27VJF$H3mNG*I&okil125AfALWaP%#AA%0vyI$K@-#oMM3K{rCA51v;hU(qPIALw6<2w%@>J)4yD3kdfi~%S@CyZcs zI(1Q|KcS`^U$O#~c2nC;m^Y~{mb3;FOv

f%fkYG|6IAq4W*rYMiBjAX>#sLp)7#)|WI~V{2 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

") - .hide() - .addClass(options.resultsClass) - .css("position", "absolute") - .appendTo(document.body); - - list = $("
    ").appendTo(element).mouseover( function(event) { - if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') { - active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event)); - $(target(event)).addClass(CLASSES.ACTIVE); - } - }).click(function(event) { - $(target(event)).addClass(CLASSES.ACTIVE); - select(); - // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus - input.focus(); - return false; - }).mousedown(function() { - config.mouseDownOnSelect = true; - }).mouseup(function() { - config.mouseDownOnSelect = false; - }); - - if( options.width > 0 ) - element.css("width", options.width); - - needsInit = false; - } - - function target(event) { - var element = event.target; - while(element && element.tagName != "LI") - element = element.parentNode; - // more fun with IE, sometimes event.target is empty, just ignore it then - if(!element) - return []; - return element; - } - - function moveSelect(step) { - listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE); - movePosition(step); - var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE); - if(options.scroll) { - var offset = 0; - listItems.slice(0, active).each(function() { - offset += this.offsetHeight; - }); - if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) { - list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight()); - } else if(offset < list.scrollTop()) { - list.scrollTop(offset); - } - } - }; - - function movePosition(step) { - active += step; - if (active < 0) { - active = listItems.size() - 1; - } else if (active >= listItems.size()) { - active = 0; - } - } - - function limitNumberOfItems(available) { - return options.max && options.max < available - ? options.max - : available; - } - - function fillList() { - list.empty(); - var max = limitNumberOfItems(data.length); - for (var i=0; i < max; i++) { - if (!data[i]) - continue; - var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term); - if ( formatted === false ) - continue; - var li = $("
  • ").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0]; - $.data(li, "ac_data", data[i]); - } - listItems = list.find("li"); - if ( options.selectFirst ) { - listItems.slice(0, 1).addClass(CLASSES.ACTIVE); - active = 0; - } - // apply bgiframe if available - if ( $.fn.bgiframe ) - list.bgiframe(); - } - - return { - display: function(d, q) { - init(); - data = d; - term = q; - fillList(); - }, - next: function() { - moveSelect(1); - }, - prev: function() { - moveSelect(-1); - }, - pageUp: function() { - if (active != 0 && active - 8 < 0) { - moveSelect( -active ); - } else { - moveSelect(-8); - } - }, - pageDown: function() { - if (active != listItems.size() - 1 && active + 8 > listItems.size()) { - moveSelect( listItems.size() - 1 - active ); - } else { - moveSelect(8); - } - }, - hide: function() { - element && element.hide(); - listItems && listItems.removeClass(CLASSES.ACTIVE); - active = -1; - }, - visible : function() { - return element && element.is(":visible"); - }, - current: function() { - return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]); - }, - show: function() { - var offset = $(input).offset(); - element.css({ - width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(), - top: offset.top + input.offsetHeight, - left: offset.left - }).show(); - if(options.scroll) { - list.scrollTop(0); - list.css({ - maxHeight: options.scrollHeight, - overflow: 'auto' - }); - - if($.browser.msie && typeof document.body.style.maxHeight === "undefined") { - var listHeight = 0; - listItems.each(function() { - listHeight += this.offsetHeight; - }); - var scrollbarsVisible = listHeight > options.scrollHeight; - list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight ); - if (!scrollbarsVisible) { - // IE doesn't recalculate width when scrollbar disappears - listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) ); - } - } - - } - }, - selected: function() { - var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); - return selected && selected.length && $.data(selected[0], "ac_data"); - }, - emptyList: function (){ - list && list.empty(); - }, - unbind: function() { - element && element.remove(); - } - }; -}; - -$.Autocompleter.Selection = function(field, start, end) { - if( field.createTextRange ){ - var selRange = field.createTextRange(); - selRange.collapse(true); - selRange.moveStart("character", start); - selRange.moveEnd("character", end); - selRange.select(); - } else if( field.setSelectionRange ){ - field.setSelectionRange(start, end); - } else { - if( field.selectionStart ){ - field.selectionStart = start; - field.selectionEnd = end; - } - } - field.focus(); -}; - -})(jQuery); \ No newline at end of file diff --git a/solr/example/files/conf/velocity/js/jquery.tx3-tag-cloud.js b/solr/example/files/conf/velocity/js/jquery.tx3-tag-cloud.js deleted file mode 100644 index 3597b4aa3c7..00000000000 --- a/solr/example/files/conf/velocity/js/jquery.tx3-tag-cloud.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * Tuxes3 wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return Tuxes3 - * ---------------------------------------------------------------------------- - */ -(function($) -{ - var settings; - $.fn.tx3TagCloud = function(options) - { - - // - // DEFAULT SETTINGS - // - settings = $.extend({ - multiplier : 1 - }, options); - main(this); - - } - - function main(element) - { - // adding style attr - element.addClass("tx3-tag-cloud"); - addListElementFontSize(element); - } - - /** - * calculates the font size on each li element - * according to their data-weight attribut - */ - function addListElementFontSize(element) - { - var hDataWeight = -9007199254740992; - var lDataWeight = 9007199254740992; - $.each(element.find("li"), function(){ - cDataWeight = getDataWeight(this); - if (cDataWeight == undefined) - { - logWarning("No \"data-weight\" attribut defined on
  • element"); - } - else - { - hDataWeight = cDataWeight > hDataWeight ? cDataWeight : hDataWeight; - lDataWeight = cDataWeight < lDataWeight ? cDataWeight : lDataWeight; - } - }); - $.each(element.find("li"), function(){ - var dataWeight = getDataWeight(this); - var percent = Math.abs((dataWeight - lDataWeight)/(lDataWeight - hDataWeight)); - $(this).css('font-size', (1 + (percent * settings['multiplier'])) + "em"); - }); - - } - - function getDataWeight(element) - { - return parseInt($(element).attr("data-weight")); - } - - function logWarning(message) - { - console.log("[WARNING] " + Date.now() + " : " + message); - } - -}(jQuery)); \ No newline at end of file diff --git a/solr/example/files/conf/velocity/layout.vm b/solr/example/files/conf/velocity/layout.vm deleted file mode 100644 index ef6caf70518..00000000000 --- a/solr/example/files/conf/velocity/layout.vm +++ /dev/null @@ -1,42 +0,0 @@ - - - #parse("head.vm") - - - - -
    - -
    - - #if($response.response.error.code) -
    -

    ERROR $response.response.error.code

    - $response.response.error.msg -
    - #else -
    - $content -
    - #end - - - - diff --git a/solr/example/files/conf/velocity/macros.vm b/solr/example/files/conf/velocity/macros.vm deleted file mode 100644 index 8bebb7f5df1..00000000000 --- a/solr/example/files/conf/velocity/macros.vm +++ /dev/null @@ -1,16 +0,0 @@ -#macro(lensFilterSortOnly)?#if($response.responseHeader.params.getAll("fq").size() > 0)&#fqs($response.responseHeader.params.getAll("fq"))#end#sort($request.params.getParams('sort'))#end -#macro(lensNoQ)#lensFilterSortOnly&type=#current_type#if("#current_locale"!="")&locale=#current_locale#end#end -#macro(lensNoType)#lensFilterSortOnly#q#if("#current_locale"!="")&locale=#current_locale#end#end -#macro(lensNoLocale)#lensFilterSortOnly#q&type=#current_type#end - -## lens modified for example/files - to use fq from responseHeader rather than request, and #debug removed too as it is built into browse params now, also added type to lens -#macro(lens)#lensNoQ#q#end - -## Macros defined custom for the "files" example -#macro(url_for_type $type)#url_for_home#lensNoType&type=$type#end -#macro(current_type)#if($response.responseHeader.params.type)${response.responseHeader.params.type}#{else}all#end#end -#macro(url_for_locale $locale)#url_for_home#lensNoLocale#if($locale!="")&locale=$locale#end&start=$page.start#end -#macro(current_locale)$!{response.responseHeader.params.locale}#end - -## Usage: #label(resource_key[, default_value]) - resource_key is used as label if no default value specified and no resource exists -#macro(label $key $default)#if($resource.get($key).exists)${resource.get($key)}#else#if($default)$default#else${key}#end#end#end diff --git a/solr/example/files/conf/velocity/mime_type_lists.vm b/solr/example/files/conf/velocity/mime_type_lists.vm deleted file mode 100644 index 1468bbdbf77..00000000000 --- a/solr/example/files/conf/velocity/mime_type_lists.vm +++ /dev/null @@ -1,68 +0,0 @@ -#** - * Define some Mime-Types, short and long form - *# - -## MimeType to extension map for detecting file type -## and showing proper icon -## List of types match the icons in /solr/img/filetypes - -## Short MimeType Names -## Was called $supportedtypes -#set($supportedMimeTypes = "7z;ai;aiff;asc;audio;bin;bz2;c;cfc;cfm;chm;class;conf;cpp;cs;css;csv;deb;divx;doc;dot;eml;enc;file;gif;gz;hlp;htm;html;image;iso;jar;java;jpeg;jpg;js;lua;m;mm;mov;mp3;mpg;odc;odf;odg;odi;odp;ods;odt;ogg;pdf;pgp;php;pl;png;ppt;ps;py;ram;rar;rb;rm;rpm;rtf;sig;sql;swf;sxc;sxd;sxi;sxw;tar;tex;tgz;txt;vcf;video;vsd;wav;wma;wmv;xls;xml;xpi;xvid;zip") - -## Long Form: map MimeType headers to our Short names -## Was called $extMap -#set( $mimeExtensionsMap = { - "application/x-7z-compressed": "7z", - "application/postscript": "ai", - "application/pgp-signature": "asc", - "application/octet-stream": "bin", - "application/x-bzip2": "bz2", - "text/x-c": "c", - "application/vnd.ms-htmlhelp": "chm", - "application/java-vm": "class", - "text/css": "css", - "text/csv": "csv", - "application/x-debian-package": "deb", - "application/msword": "doc", - "message/rfc822": "eml", - "image/gif": "gif", - "application/winhlp": "hlp", - "text/html": "html", - "application/java-archive": "jar", - "text/x-java-source": "java", - "image/jpeg": "jpeg", - "application/javascript": "js", - "application/vnd.oasis.opendocument.chart": "odc", - "application/vnd.oasis.opendocument.formula": "odf", - "application/vnd.oasis.opendocument.graphics": "odg", - "application/vnd.oasis.opendocument.image": "odi", - "application/vnd.oasis.opendocument.presentation": "odp", - "application/vnd.oasis.opendocument.spreadsheet": "ods", - "application/vnd.oasis.opendocument.text": "odt", - "application/pdf": "pdf", - "application/pgp-encrypted": "pgp", - "image/png": "png", - "application/vnd.ms-powerpoint": "ppt", - "audio/x-pn-realaudio": "ram", - "application/x-rar-compressed": "rar", - "application/vnd.rn-realmedia": "rm", - "application/rtf": "rtf", - "application/x-shockwave-flash": "swf", - "application/vnd.sun.xml.calc": "sxc", - "application/vnd.sun.xml.draw": "sxd", - "application/vnd.sun.xml.impress": "sxi", - "application/vnd.sun.xml.writer": "sxw", - "application/x-tar": "tar", - "application/x-tex": "tex", - "text/plain": "txt", - "text/x-vcard": "vcf", - "application/vnd.visio": "vsd", - "audio/x-wav": "wav", - "audio/x-ms-wma": "wma", - "video/x-ms-wmv": "wmv", - "application/vnd.ms-excel": "xls", - "application/xml": "xml", - "application/x-xpinstall": "xpi", - "application/zip": "zip" -}) diff --git a/solr/example/files/conf/velocity/results.vm b/solr/example/files/conf/velocity/results.vm deleted file mode 100644 index b8a17a9c3eb..00000000000 --- a/solr/example/files/conf/velocity/results.vm +++ /dev/null @@ -1,20 +0,0 @@ -
    - #parse("facets.vm") -
    - - -
    - - - #parse("results_list.vm") - - -
    diff --git a/solr/example/files/conf/velocity/results_list.vm b/solr/example/files/conf/velocity/results_list.vm deleted file mode 100644 index 908e45b0c99..00000000000 --- a/solr/example/files/conf/velocity/results_list.vm +++ /dev/null @@ -1,21 +0,0 @@ - - - -
    - #foreach($doc in $response.results) - #parse("hit.vm") - #end -
    - - diff --git a/solr/licenses/velocity-engine-core-2.0.jar.sha1 b/solr/licenses/velocity-engine-core-2.0.jar.sha1 deleted file mode 100644 index 9cbf13d1ec1..00000000000 --- a/solr/licenses/velocity-engine-core-2.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6e5f29e1237b1764a4ce769feeffb85b0b19cfa7 diff --git a/solr/licenses/velocity-engine-core-LICENSE-ASL.txt b/solr/licenses/velocity-engine-core-LICENSE-ASL.txt deleted file mode 100644 index d6456956733..00000000000 --- a/solr/licenses/velocity-engine-core-LICENSE-ASL.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/solr/licenses/velocity-engine-core-NOTICE.txt b/solr/licenses/velocity-engine-core-NOTICE.txt deleted file mode 100644 index c016d50c0c8..00000000000 --- a/solr/licenses/velocity-engine-core-NOTICE.txt +++ /dev/null @@ -1,7 +0,0 @@ -Apache Velocity - -Copyright (C) 2000-2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - diff --git a/solr/licenses/velocity-tools-generic-3.0.jar.sha1 b/solr/licenses/velocity-tools-generic-3.0.jar.sha1 deleted file mode 100644 index 018c1b3946d..00000000000 --- a/solr/licenses/velocity-tools-generic-3.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e789f6ec06f9a69ccb8956f407fb685b2938e74b diff --git a/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt b/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/solr/licenses/velocity-tools-generic-NOTICE.txt b/solr/licenses/velocity-tools-generic-NOTICE.txt deleted file mode 100644 index 7d6375e8da8..00000000000 --- a/solr/licenses/velocity-tools-generic-NOTICE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Apache Velocity Tools - -Copyright (C) 2000-2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Support for using SSL with Struts is provided using -the sslext library package, which is open source software -under the Apache Software License 1.1 with copyright attributed -to The Apache Software Foundation. -This software is available from http://sslext.sourceforge.net/ diff --git a/solr/licenses/velocity-tools-view-3.0.jar.sha1 b/solr/licenses/velocity-tools-view-3.0.jar.sha1 deleted file mode 100644 index 67cf265142b..00000000000 --- a/solr/licenses/velocity-tools-view-3.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -2f72ca8eb2bcb8af2c5fab826d64add20ab70a2e diff --git a/solr/licenses/velocity-tools-view-LICENSE-ASL.txt b/solr/licenses/velocity-tools-view-LICENSE-ASL.txt deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/solr/licenses/velocity-tools-view-LICENSE-ASL.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/solr/licenses/velocity-tools-view-NOTICE.txt b/solr/licenses/velocity-tools-view-NOTICE.txt deleted file mode 100644 index 7d6375e8da8..00000000000 --- a/solr/licenses/velocity-tools-view-NOTICE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Apache Velocity Tools - -Copyright (C) 2000-2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Support for using SSL with Struts is provided using -the sslext library package, which is open source software -under the Apache Software License 1.1 with copyright attributed -to The Apache Software Foundation. -This software is available from http://sslext.sourceforge.net/ diff --git a/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 b/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 deleted file mode 100644 index 45dd7f863ab..00000000000 --- a/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -27f6a21c7973ffb75001b3e9ac4731facf5757b4 diff --git a/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt b/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/solr/licenses/velocity-tools-view-jsp-NOTICE.txt b/solr/licenses/velocity-tools-view-jsp-NOTICE.txt deleted file mode 100644 index 7d6375e8da8..00000000000 --- a/solr/licenses/velocity-tools-view-jsp-NOTICE.txt +++ /dev/null @@ -1,12 +0,0 @@ -Apache Velocity Tools - -Copyright (C) 2000-2007 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Support for using SSL with Struts is provided using -the sslext library package, which is open source software -under the Apache Software License 1.1 with copyright attributed -to The Apache Software Foundation. -This software is available from http://sslext.sourceforge.net/ diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle index 12072bc34cd..a017a0dd55b 100644 --- a/solr/packaging/build.gradle +++ b/solr/packaging/build.gradle @@ -51,7 +51,6 @@ dependencies { ":solr:contrib:langid", ":solr:contrib:ltr", ":solr:contrib:prometheus-exporter", - ":solr:contrib:velocity", ].each { contribName -> distSolr project(contribName) contrib project(path: contribName, configuration: "packaging") diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml index 26141b88f6f..34c7567c29f 100644 --- a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml +++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml @@ -83,9 +83,6 @@ - - - - - - explicit - - - velocity - browse - layout - Solritas - - - edismax - - text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 - title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 - - 100% - *:* - 10 - *,score - - - text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 - title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 - - text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename - 3 - - - on - true - cat - manu_exact - content_type - author_s - ipod - GB - 1 - cat,inStock - after - price - 0 - 600 - 50 - popularity - 0 - 10 - 3 - manufacturedate_dt - NOW/YEAR-10YEARS - NOW - +1YEAR - before - after - - - on - content features title name - true - html - <b> - </b> - 0 - title - 0 - name - 3 - 200 - content - 750 - - - on - false - 5 - 2 - 5 - true - true - 5 - 3 - - - - - spellcheck - - - - - + text @@ -1561,14 +1459,6 @@ text/plain; charset=UTF-8 - - - ${velocity.template.base.dir:} - - - - ----- - -== Configuration & Usage - -=== Template Rendering Protections - -Velocity template rendering is largely controlled by the `trusted` configset flag. Templates built into (the `/browse` ones) the component library are always available -with this component. In a trusted configset, templates in the `velocity/` subdirectory of the configset are renderable. Also in a trusted configset, when `template.base.dir` -is specified those templates are renderable. - -=== VelocityResponseWriter Initialization Parameters - -`template.base.dir`:: -If specified and exists as a file system directory, a file resource loader will be added for this directory. Templates in this directory will override "solr" resource loader templates. - -`init.properties.file`:: Specifies a properties file name which must exist in the Solr `conf/` directory (*not* under a `velocity/` subdirectory) or root of a JAR file in a . - -`tools`:: -External "tools" can be specified as list of string name/value (tool name / class name) pairs. Tools, in the Velocity context, are simply Java objects. Tool classes are constructed using a no-arg constructor (or a single-SolrCore-arg constructor if it exists) and added to the Velocity context with the specified name. -+ -A custom registered tool can override the built-in context objects with the same name, except for `$request`, `$response`, `$page`, and `$debug` (these tools are designed to not be overridden). - -=== VelocityResponseWriter Request Parameters - -`v.template`:: -Specifies the name of the template to render. - -`v.layout`:: -Specifies a template name to use as the layout around the main, `v.template`, specified template. -+ -The main template is rendered into a string value included into the layout rendering as `$content`. - -`v.layout.enabled`:: -Determines if the main template should have a layout wrapped around it. The default is `true`, but requires `v.layout` to specified as well. - -`v.contentType`:: -Specifies the content type used in the HTTP response. If not specified, the default will depend on whether `v.json` is specified or not. -+ -The default without `v.json=wrf`: `text/html;charset=UTF-8`. -+ -The default with `v.json=wrf`: `application/json;charset=UTF-8`. - -`v.json`:: -Specifies a function name to wrap around the response rendered as JSON. If specified, the content type used in the response will be "application/json;charset=UTF-8", unless overridden by `v.contentType`. -+ -Output will be in this format (with `v.json=wrf`): -+ -`wrf("result":"")` - -`v.locale`:: -Locale to use with the `$resource` tool and other LocaleConfig implementing tools. The default locale is `Locale.ROOT`. Localized resources are loaded from standard Java resource bundles named `resources[_locale-code].properties`. -+ -Resource bundles can be added by providing a JAR file visible by the SolrResourceLoader with resource bundles under a velocity sub-directory. Resource bundles are not loadable under `conf/`, as only the class loader aspect of SolrResourceLoader can be used here. - - -=== VelocityResponseWriter Context Objects - -// TODO: Change column width to %autowidth.spread when https://github.com/asciidoctor/asciidoctor-pdf/issues/599 is fixed - -[cols="30,70",options="header"] -|=== -|Context Reference |Description -|`request` |{solr-javadocs}solr-core/org/apache/solr/request/SolrQueryRequest.html[SolrQueryRequest] javadocs -|`response` |{solr-javadocs}solr-core/org/apache/solr/response/SolrQueryResponse.html[QueryResponse] most of the time, but in some cases where QueryResponse doesn't like the request handler's output (https://cwiki.apache.org/confluence/display/solr/AnalysisRequestHandler[AnalysisRequestHandler], for example, causes a ClassCastException parsing "response"), the response will be a SolrResponseBase object. -|`esc` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#EscapeTool[EscapeTool] instance -|`date` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#ComparisonDateTool[ComparisonDateTool] instance -|`math` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#MathTool[MathTool] instance -|`number` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#NumberTool[NumberTool] instance -|`sort` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#SortTool[SortTool] instance -|`display` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#DisplayTool[DisplayTool] instance -|`resource` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#ResourceTool[ResourceTool] instance -|`engine` |The current VelocityEngine instance -|`page` |An instance of Solr's PageTool (only included if the response is a QueryResponse where paging makes sense) -|`debug` |A shortcut to the debug part of the response, or null if debug is not on. This is handy for having debug-only sections in a template using `#if($debug)...#end` -|`content` |The rendered output of the main template, when rendering the layout (`v.layout.enabled=true` and `v.layout=

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'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger') - .find(settings.submenuEl).addClass('dropit-submenu').hide(); - - // Open on click - $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){ - // Close click menu's if clicked again - if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){ - settings.beforeHide.call(this); - $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide(); - settings.afterHide.call(this); - return false; - } - - // Hide open menus - settings.beforeHide.call(this); - $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide(); - settings.afterHide.call(this); - - // Open this menu - settings.beforeShow.call(this); - $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show(); - settings.afterShow.call(this); - - return false; - }); - - // Close if outside click - $(document).on('click', function(){ - settings.beforeHide.call(this); - $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide(); - settings.afterHide.call(this); - }); - - // If hover - if(settings.action == 'mouseenter'){ - $el.on('mouseleave', '.dropit-open', function(){ - settings.beforeHide.call(this); - $(this).removeClass('dropit-open').find(settings.submenuEl).hide(); - settings.afterHide.call(this); - }); - } - - settings.afterLoad.call(this); - }); - } - - }; - - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error( 'Method "' + method + '" does not exist in dropit plugin!'); - } - - }; - - $.fn.dropit.defaults = { - action: 'mouseenter', // The open action for the trigger - submenuEl: 'ul', // The submenu element - triggerEl: 'a', // The trigger element - triggerParentEl: 'li', // The trigger parent element - afterLoad: function(){}, // Triggers when plugin has loaded - beforeShow: function(){}, // Triggers before submenu is shown - afterShow: function(){}, // Triggers after submenu is shown - beforeHide: function(){}, // Triggers before submenu is hidden - afterHide: function(){} // Triggers before submenu is hidden - }; - - $.fn.dropit.settings = {}; - -})(jQuery); diff --git a/solr/example/files/conf/velocity/js/jquery.autocomplete.js b/solr/example/files/conf/velocity/js/jquery.autocomplete.js deleted file mode 100644 index 442f5a0d893..00000000000 --- a/solr/example/files/conf/velocity/js/jquery.autocomplete.js +++ /dev/null @@ -1,763 +0,0 @@ -/* - * Autocomplete - jQuery plugin 1.1pre - * - * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: Id: jquery.autocomplete.js 5785 2008-07-12 10:37:33Z joern.zaefferer $ - * - */ - -;(function($) { - -$.fn.extend({ - autocomplete: function(urlOrData, options) { - var isUrl = typeof urlOrData == "string"; - options = $.extend({}, $.Autocompleter.defaults, { - url: isUrl ? urlOrData : null, - data: isUrl ? null : urlOrData, - delay: isUrl ? $.Autocompleter.defaults.delay : 10, - max: options && !options.scroll ? 10 : 150 - }, options); - - // if highlight is set to false, replace it with a do-nothing function - options.highlight = options.highlight || function(value) { return value; }; - - // if the formatMatch option is not specified, then use formatItem for backwards compatibility - options.formatMatch = options.formatMatch || options.formatItem; - - return this.each(function() { - new $.Autocompleter(this, options); - }); - }, - result: function(handler) { - return this.bind("result", handler); - }, - search: function(handler) { - return this.trigger("search", [handler]); - }, - flushCache: function() { - return this.trigger("flushCache"); - }, - setOptions: function(options){ - return this.trigger("setOptions", [options]); - }, - unautocomplete: function() { - return this.trigger("unautocomplete"); - } -}); - -$.Autocompleter = function(input, options) { - - var KEY = { - UP: 38, - DOWN: 40, - DEL: 46, - TAB: 9, - RETURN: 13, - ESC: 27, - COMMA: 188, - PAGEUP: 33, - PAGEDOWN: 34, - BACKSPACE: 8 - }; - - // Create $ object for input element - var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass); - - var timeout; - var previousValue = ""; - var cache = $.Autocompleter.Cache(options); - var hasFocus = 0; - var lastKeyPressCode; - var config = { - mouseDownOnSelect: false - }; - var select = $.Autocompleter.Select(options, input, selectCurrent, config); - - var blockSubmit; - - // prevent form submit in opera when selecting with return key - $.browser.opera && $(input.form).bind("submit.autocomplete", function() { - if (blockSubmit) { - blockSubmit = false; - return false; - } - }); - - // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all - $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { - // track last key pressed - lastKeyPressCode = event.keyCode; - switch(event.keyCode) { - - case KEY.UP: - event.preventDefault(); - if ( select.visible() ) { - select.prev(); - } else { - onChange(0, true); - } - break; - - case KEY.DOWN: - event.preventDefault(); - if ( select.visible() ) { - select.next(); - } else { - onChange(0, true); - } - break; - - case KEY.PAGEUP: - event.preventDefault(); - if ( select.visible() ) { - select.pageUp(); - } else { - onChange(0, true); - } - break; - - case KEY.PAGEDOWN: - event.preventDefault(); - if ( select.visible() ) { - select.pageDown(); - } else { - onChange(0, true); - } - break; - - // matches also semicolon - case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA: - case KEY.TAB: - case KEY.RETURN: - if( selectCurrent() ) { - // stop default to prevent a form submit, Opera needs special handling - event.preventDefault(); - blockSubmit = true; - return false; - } - break; - - case KEY.ESC: - select.hide(); - break; - - default: - clearTimeout(timeout); - timeout = setTimeout(onChange, options.delay); - break; - } - }).focus(function(){ - // track whether the field has focus, we shouldn't process any - // results if the field no longer has focus - hasFocus++; - }).blur(function() { - hasFocus = 0; - if (!config.mouseDownOnSelect) { - hideResults(); - } - }).click(function() { - // show select when clicking in a focused field - if ( hasFocus++ > 1 && !select.visible() ) { - onChange(0, true); - } - }).bind("search", function() { - // TODO why not just specifying both arguments? - var fn = (arguments.length > 1) ? arguments[1] : null; - function findValueCallback(q, data) { - var result; - if( data && data.length ) { - for (var i=0; i < data.length; i++) { - if( data[i].result.toLowerCase() == q.toLowerCase() ) { - result = data[i]; - break; - } - } - } - if( typeof fn == "function" ) fn(result); - else $input.trigger("result", result && [result.data, result.value]); - } - $.each(trimWords($input.val()), function(i, value) { - request(value, findValueCallback, findValueCallback); - }); - }).bind("flushCache", function() { - cache.flush(); - }).bind("setOptions", function() { - $.extend(options, arguments[1]); - // if we've updated the data, repopulate - if ( "data" in arguments[1] ) - cache.populate(); - }).bind("unautocomplete", function() { - select.unbind(); - $input.unbind(); - $(input.form).unbind(".autocomplete"); - }); - - - function selectCurrent() { - var selected = select.selected(); - if( !selected ) - return false; - - var v = selected.result; - previousValue = v; - - if ( options.multiple ) { - var words = trimWords($input.val()); - if ( words.length > 1 ) { - v = words.slice(0, words.length - 1).join( options.multipleSeparator ) + options.multipleSeparator + v; - } - v += options.multipleSeparator; - } - - $input.val(v); - hideResultsNow(); - $input.trigger("result", [selected.data, selected.value]); - return true; - } - - function onChange(crap, skipPrevCheck) { - if( lastKeyPressCode == KEY.DEL ) { - select.hide(); - return; - } - - var currentValue = $input.val(); - - if ( !skipPrevCheck && currentValue == previousValue ) - return; - - previousValue = currentValue; - - currentValue = lastWord(currentValue); - if ( currentValue.length >= options.minChars) { - $input.addClass(options.loadingClass); - if (!options.matchCase) - currentValue = currentValue.toLowerCase(); - request(currentValue, receiveData, hideResultsNow); - } else { - stopLoading(); - select.hide(); - } - }; - - function trimWords(value) { - if ( !value ) { - return [""]; - } - var words = value.split( options.multipleSeparator ); - var result = []; - $.each(words, function(i, value) { - if ( $.trim(value) ) - result[i] = $.trim(value); - }); - return result; - } - - function lastWord(value) { - if ( !options.multiple ) - return value; - var words = trimWords(value); - return words[words.length - 1]; - } - - // fills in the input box w/the first match (assumed to be the best match) - // q: the term entered - // sValue: the first matching result - function autoFill(q, sValue){ - // autofill in the complete box w/the first match as long as the user hasn't entered in more data - // if the last user key pressed was backspace, don't autofill - if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) { - // fill in the value (keep the case the user has typed) - $input.val($input.val() + sValue.substring(lastWord(previousValue).length)); - // select the portion of the value not typed by the user (so the next character will erase) - $.Autocompleter.Selection(input, previousValue.length, previousValue.length + sValue.length); - } - }; - - function hideResults() { - clearTimeout(timeout); - timeout = setTimeout(hideResultsNow, 200); - }; - - function hideResultsNow() { - var wasVisible = select.visible(); - select.hide(); - clearTimeout(timeout); - stopLoading(); - if (options.mustMatch) { - // call search and run callback - $input.search( - function (result){ - // if no value found, clear the input box - if( !result ) { - if (options.multiple) { - var words = trimWords($input.val()).slice(0, -1); - $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") ); - } - else - $input.val( "" ); - } - } - ); - } - if (wasVisible) - // position cursor at end of input field - $.Autocompleter.Selection(input, input.value.length, input.value.length); - }; - - function receiveData(q, data) { - if ( data && data.length && hasFocus ) { - stopLoading(); - select.display(data, q); - autoFill(q, data[0].value); - select.show(); - } else { - hideResultsNow(); - } - }; - - function request(term, success, failure) { - if (!options.matchCase) - term = term.toLowerCase(); - var data = cache.load(term); - data = null; // Avoid buggy cache and go to Solr every time - // recieve the cached data - if (data && data.length) { - success(term, data); - // if an AJAX url has been supplied, try loading the data now - } else if( (typeof options.url == "string") && (options.url.length > 0) ){ - - var extraParams = { - timestamp: +new Date() - }; - $.each(options.extraParams, function(key, param) { - extraParams[key] = typeof param == "function" ? param() : param; - }); - - $.ajax({ - // try to leverage ajaxQueue plugin to abort previous requests - mode: "abort", - // limit abortion to this input - port: "autocomplete" + input.name, - dataType: options.dataType, - url: options.url, - data: $.extend({ - q: lastWord(term), - limit: options.max - }, extraParams), - success: function(data) { - var parsed = options.parse && options.parse(data) || parse(data); - cache.add(term, parsed); - success(term, parsed); - } - }); - } else { - // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match - select.emptyList(); - failure(term); - } - }; - - function parse(data) { - var parsed = []; - var rows = data.split("\n"); - for (var i=0; i < rows.length; i++) { - var row = $.trim(rows[i]); - if (row) { - row = row.split("|"); - parsed[parsed.length] = { - data: row, - value: row[0], - result: options.formatResult && options.formatResult(row, row[0]) || row[0] - }; - } - } - return parsed; - }; - - function stopLoading() { - $input.removeClass(options.loadingClass); - }; - -}; - -$.Autocompleter.defaults = { - inputClass: "ac_input", - resultsClass: "ac_results", - loadingClass: "ac_loading", - minChars: 1, - delay: 400, - matchCase: false, - matchSubset: true, - matchContains: false, - cacheLength: 10, - max: 100, - mustMatch: false, - extraParams: {}, - selectFirst: false, - formatItem: function(row) { return row[0]; }, - formatMatch: null, - autoFill: false, - width: 0, - multiple: false, - multipleSeparator: ", ", - highlight: function(value, term) { - return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "$1"); - }, - scroll: true, - scrollHeight: 180 -}; - -$.Autocompleter.Cache = function(options) { - - var data = {}; - var length = 0; - - function matchSubset(s, sub) { - if (!options.matchCase) - s = s.toLowerCase(); - var i = s.indexOf(sub); - if (options.matchContains == "word"){ - i = s.toLowerCase().search("\\b" + sub.toLowerCase()); - } - if (i == -1) return false; - return i == 0 || options.matchContains; - }; - - function add(q, value) { - if (length > options.cacheLength){ - flush(); - } - if (!data[q]){ - length++; - } - data[q] = value; - } - - function populate(){ - if( !options.data ) return false; - // track the matches - var stMatchSets = {}, - nullData = 0; - - // no url was specified, we need to adjust the cache length to make sure it fits the local data store - if( !options.url ) options.cacheLength = 1; - - // track all options for minChars = 0 - stMatchSets[""] = []; - - // loop through the array and create a lookup structure - for ( var i = 0, ol = options.data.length; i < ol; i++ ) { - var rawValue = options.data[i]; - // if rawValue is a string, make an array otherwise just reference the array - rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue; - - var value = options.formatMatch(rawValue, i+1, options.data.length); - if ( value === false ) - continue; - - var firstChar = value.charAt(0).toLowerCase(); - // if no lookup array for this character exists, look it up now - if( !stMatchSets[firstChar] ) - stMatchSets[firstChar] = []; - - // if the match is a string - var row = { - value: value, - data: rawValue, - result: options.formatResult && options.formatResult(rawValue) || value - }; - - // push the current match into the set list - stMatchSets[firstChar].push(row); - - // keep track of minChars zero items - if ( nullData++ < options.max ) { - stMatchSets[""].push(row); - } - }; - - // add the data items to the cache - $.each(stMatchSets, function(i, value) { - // increase the cache size - options.cacheLength++; - // add to the cache - add(i, value); - }); - } - - // populate any existing data - setTimeout(populate, 25); - - function flush(){ - data = {}; - length = 0; - } - - return { - flush: flush, - add: add, - populate: populate, - load: function(q) { - if (!options.cacheLength || !length) - return null; - /* - * if dealing w/local data and matchContains than we must make sure - * to loop through all the data collections looking for matches - */ - if( !options.url && options.matchContains ){ - // track all matches - var csub = []; - // loop through all the data grids for matches - for( var k in data ){ - // don't search through the stMatchSets[""] (minChars: 0) cache - // this prevents duplicates - if( k.length > 0 ){ - var c = data[k]; - $.each(c, function(i, x) { - // if we've got a match, add it to the array - if (matchSubset(x.value, q)) { - csub.push(x); - } - }); - } - } - return csub; - } else - // if the exact item exists, use it - if (data[q]){ - return data[q]; - } else - if (options.matchSubset) { - for (var i = q.length - 1; i >= options.minChars; i--) { - var c = data[q.substr(0, i)]; - if (c) { - var csub = []; - $.each(c, function(i, x) { - if (matchSubset(x.value, q)) { - csub[csub.length] = x; - } - }); - return csub; - } - } - } - return null; - } - }; -}; - -$.Autocompleter.Select = function (options, input, select, config) { - var CLASSES = { - ACTIVE: "ac_over" - }; - - var listItems, - active = -1, - data, - term = "", - needsInit = true, - element, - list; - - // Create results - function init() { - if (!needsInit) - return; - element = $("