From 17f72b841556e140eabc2fb4d8f05a4d7d2abd6a Mon Sep 17 00:00:00 2001 From: vkovtun <vkovtun@ethz.ch> Date: Wed, 6 Dec 2023 16:15:23 +0100 Subject: [PATCH] BIS-772: Fixing failing Java tests. --- .../systemtest/asapi/v3/ExportData.java | 971 +++++++++--------- .../test_files/export/export-sample-all.zip | Bin 8752 -> 10753 bytes 2 files changed, 500 insertions(+), 471 deletions(-) diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java index 38268bb1565..2074a1e59ed 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExportData.java @@ -17,15 +17,44 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.AUTO_GENERATE_CODES; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.CHILDREN; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.CODE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.DESCRIPTION; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.DISALLOW_DELETION; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.EXPERIMENT; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.GENERATED_CODE_PREFIX; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.IDENTIFIER; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.MODIFICATION_DATE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.MODIFIER; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.PARENTS; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.PERM_ID; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.PRESENT_IN_ARCHIVE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.PROJECT; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.REGISTRATION_DATE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.REGISTRATOR; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.SAMPLE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.SPACE; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.STORAGE_CONFIRMATION; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.Attribute.UNIQUE_SUBCODES; + import java.util.EnumSet; import java.util.List; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.EntityKind; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.AllFields; import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.ExportableKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.ExportablePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data.SelectedFields; import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.options.ExportFormat; import ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.options.XlsTextFormat; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId; class ExportData { @@ -36,496 +65,496 @@ class ExportData static final String RICH_TEXT_WITH_SPREADSHEET_PROPERTY_NAME = "MULTILINE_WITH_SPREADSHEET"; static final Object[][] EXPORT_DATA = { -// // XLS: All fields -// { -// // Non-existing sample -// "empty-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("WrongPermId"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Space: TEST-SPACE -// "export-space-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Project: TEST-PROJECT -// "export-project-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment: EXP-SPACE-TEST -// "export-experiment-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/EV-TEST -// "export-sample-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1055"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-compatible-with-import-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1054"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// true // withImportCompatibility -// }, -// { -// // Sample: /MP -// "export-sample-shared-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), -// new AllFields(), -// XlsTextFormat.RICH, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -//// { -//// // Sample: /MP:A03 -//// "export-sample-contained-xlsx.zip", -//// EnumSet.of(ExportFormat.XLSX), -//// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-653"))), -//// new AllFields(), -//// XlsTextFormat.RICH, -//// true, // withReferredTypes -//// false // withImportCompatibility -//// }, -// { -// // Data set: "ROOT_CONTAINER" -// "export-data-set-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample Type: CELL_PLATE -// "export-sample-type-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample Type: CELL_PLATE -// "export-sample-type-with-referred-types-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment Type: SIRNA_HCS -// "export-experiment-type-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT_TYPE, new EntityTypePermId("SIRNA_HCS", EntityKind.EXPERIMENT))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Dataset Type: HCS_IMAGE -// "export-data-set-type-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.DATASET_TYPE, new EntityTypePermId("HCS_IMAGE", EntityKind.DATA_SET))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// -// // XLS: Selected fields -// { -// // Space: TEST-SPACE -// "export-space-filtered-attributes-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), -// new SelectedFields(List.of(CODE, REGISTRATOR, DESCRIPTION), List.of()), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Project: TEST-PROJECT -// "export-project-filtered-fields-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), -// new SelectedFields( -// List.of(REGISTRATOR, REGISTRATION_DATE, CODE, IDENTIFIER, SPACE, DESCRIPTION), -// List.of()), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment: EXP-SPACE-TEST -// "export-experiment-filtered-fields-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), -// new SelectedFields( -// List.of(CODE, PERM_ID, IDENTIFIER, PROJECT, REGISTRATOR, MODIFIER), -// List.of(new PropertyTypePermId("GENDER"), new PropertyTypePermId("DESCRIPTION"))), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-filtered-fields-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1054"))), -// new SelectedFields( -// List.of(CODE, PERM_ID, IDENTIFIER, SPACE, PARENTS, CHILDREN, REGISTRATOR, REGISTRATION_DATE), -// List.of(new PropertyTypePermId("BACTERIUM"), new PropertyTypePermId("COMMENT"), new PropertyTypePermId("ORGANISM"))), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Data set: "20081105092159188-3", type: "HCS_IMAGE" -// "export-data-set-filtered-fields-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("20081105092159188-3"))), -// new SelectedFields( -// List.of(REGISTRATOR, REGISTRATION_DATE, CODE, IDENTIFIER, PARENTS, CHILDREN, STORAGE_CONFIRMATION, PRESENT_IN_ARCHIVE, -// SAMPLE, EXPERIMENT), -// List.of(new PropertyTypePermId("COMMENT"), new PropertyTypePermId("GENDER"))), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample Type: CELL_PLATE -// "export-sample-type-filtered-attributes-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), -// new SelectedFields(List.of(CODE, AUTO_GENERATE_CODES, DESCRIPTION, GENERATED_CODE_PREFIX, UNIQUE_SUBCODES), List.of()), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment Type: SIRNA_HCS -// "export-experiment-type-filtered-attributes-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT_TYPE, new EntityTypePermId("SIRNA_HCS", EntityKind.EXPERIMENT))), -// new SelectedFields(List.of(DESCRIPTION, CODE, MODIFICATION_DATE), List.of()), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Dataset Type: HCS_IMAGE -// "export-data-set-type-filtered-attributes-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.DATASET_TYPE, new EntityTypePermId("HCS_IMAGE", EntityKind.DATA_SET))), -// new SelectedFields(List.of(CODE, DISALLOW_DELETION, DESCRIPTION), List.of()), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-plain-text-xlsx.zip", -// EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, + // XLS: All fields + { + // Non-existing sample + "empty-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("WrongPermId"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Space: TEST-SPACE + "export-space-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Project: TEST-PROJECT + "export-project-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment: EXP-SPACE-TEST + "export-experiment-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/EV-TEST + "export-sample-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1055"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-compatible-with-import-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1054"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + true // withImportCompatibility + }, + { + // Sample: /MP + "export-sample-shared-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), + new AllFields(), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, // { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-rich-text-xlsx.zip", +// // Sample: /MP:A03 +// "export-sample-contained-xlsx.zip", // EnumSet.of(ExportFormat.XLSX), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), -// XlsTextFormat.RICH, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// -// // HTML: All fields -// { -// // Space: TEST-SPACE -// "export-space-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Project: TEST-PROJECT -// "export-project-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment: EXP-SPACE-TEST -// "export-experiment-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/EV-TEST -// "export-sample-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1055"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /MP -// "export-sample-shared-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), +// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-653"))), // new AllFields(), // XlsTextFormat.RICH, // true, // withReferredTypes // false // withImportCompatibility // }, -//// { -//// // Sample: /MP:A03 -//// "export-sample-contained-html.zip", -//// EnumSet.of(ExportFormat.HTML), -//// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-653"))), -//// new AllFields(), -//// XlsTextFormat.RICH, -//// true, // withReferredTypes -//// false // withImportCompatibility -//// }, -// { -// // Data set: "ROOT_CONTAINER" -// "export-data-set-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// -// // HTML: Selected fields -// { -// // Space: TEST-SPACE -// "export-space-filtered-fields-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), -// new SelectedFields(List.of(CODE, PERM_ID, MODIFICATION_DATE), List.of()), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Project: TEST-PROJECT -// "export-project-filtered-fields-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), -// new SelectedFields(List.of(PERM_ID, IDENTIFIER, REGISTRATOR, REGISTRATION_DATE), List.of()), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment: EXP-SPACE-TEST -// "export-experiment-filtered-fields-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), -// new SelectedFields(List.of(CODE, PARENTS, CHILDREN, REGISTRATOR, REGISTRATION_DATE), -// List.of(new PropertyTypePermId("DESCRIPTION"))), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /CISD/NEMO/3VCP6 -// "export-sample-filtered-fields-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050946559-980"))), -// new SelectedFields( -// List.of(CODE, PARENTS, CHILDREN), -// List.of(new PropertyTypePermId("BACTERIUM"), new PropertyTypePermId("COMMENT"), new PropertyTypePermId("ORGANISM"))), -// XlsTextFormat.PLAIN, -// false, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-plain-text-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-rich-text-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), -// XlsTextFormat.RICH, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-with-image-html.zip", -// EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_WITH_IMAGE_PROPERTY_NAME))), -// XlsTextFormat.RICH, -// true, // withReferredTypes -// false // withImportCompatibility -// }, + { + // Data set: "ROOT_CONTAINER" + "export-data-set-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample Type: CELL_PLATE + "export-sample-type-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), + new AllFields(), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample Type: CELL_PLATE + "export-sample-type-with-referred-types-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment Type: SIRNA_HCS + "export-experiment-type-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT_TYPE, new EntityTypePermId("SIRNA_HCS", EntityKind.EXPERIMENT))), + new AllFields(), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Dataset Type: HCS_IMAGE + "export-data-set-type-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.DATASET_TYPE, new EntityTypePermId("HCS_IMAGE", EntityKind.DATA_SET))), + new AllFields(), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + + // XLS: Selected fields + { + // Space: TEST-SPACE + "export-space-filtered-attributes-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new SelectedFields(List.of(CODE, REGISTRATOR, DESCRIPTION), List.of()), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Project: TEST-PROJECT + "export-project-filtered-fields-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), + new SelectedFields( + List.of(REGISTRATOR, REGISTRATION_DATE, CODE, IDENTIFIER, SPACE, DESCRIPTION), + List.of()), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment: EXP-SPACE-TEST + "export-experiment-filtered-fields-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), + new SelectedFields( + List.of(CODE, PERM_ID, IDENTIFIER, PROJECT, REGISTRATOR, MODIFIER), + List.of(new PropertyTypePermId("GENDER"), new PropertyTypePermId("DESCRIPTION"))), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-filtered-fields-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1054"))), + new SelectedFields( + List.of(CODE, PERM_ID, IDENTIFIER, SPACE, PARENTS, CHILDREN, REGISTRATOR, REGISTRATION_DATE), + List.of(new PropertyTypePermId("BACTERIUM"), new PropertyTypePermId("COMMENT"), new PropertyTypePermId("ORGANISM"))), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Data set: "20081105092159188-3", type: "HCS_IMAGE" + "export-data-set-filtered-fields-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("20081105092159188-3"))), + new SelectedFields( + List.of(REGISTRATOR, REGISTRATION_DATE, CODE, IDENTIFIER, PARENTS, CHILDREN, STORAGE_CONFIRMATION, PRESENT_IN_ARCHIVE, + SAMPLE, EXPERIMENT), + List.of(new PropertyTypePermId("COMMENT"), new PropertyTypePermId("GENDER"))), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample Type: CELL_PLATE + "export-sample-type-filtered-attributes-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE_TYPE, new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE))), + new SelectedFields(List.of(CODE, AUTO_GENERATE_CODES, DESCRIPTION, GENERATED_CODE_PREFIX, UNIQUE_SUBCODES), List.of()), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment Type: SIRNA_HCS + "export-experiment-type-filtered-attributes-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT_TYPE, new EntityTypePermId("SIRNA_HCS", EntityKind.EXPERIMENT))), + new SelectedFields(List.of(DESCRIPTION, CODE, MODIFICATION_DATE), List.of()), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Dataset Type: HCS_IMAGE + "export-data-set-type-filtered-attributes-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.DATASET_TYPE, new EntityTypePermId("HCS_IMAGE", EntityKind.DATA_SET))), + new SelectedFields(List.of(CODE, DISALLOW_DELETION, DESCRIPTION), List.of()), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-plain-text-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-rich-text-xlsx.zip", + EnumSet.of(ExportFormat.XLSX), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, + + // HTML: All fields + { + // Space: TEST-SPACE + "export-space-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Project: TEST-PROJECT + "export-project-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment: EXP-SPACE-TEST + "export-experiment-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/EV-TEST + "export-sample-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("201206191219327-1055"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /MP + "export-sample-shared-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), + new AllFields(), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, // { -// // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST -// "export-sample-with-spreadsheet-html.zip", +// // Sample: /MP:A03 +// "export-sample-contained-html.zip", // EnumSet.of(ExportFormat.HTML), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. -// new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_WITH_SPREADSHEET_PROPERTY_NAME))), -// XlsTextFormat.RICH, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// -// // PDF: All fields -// { -// // Space: TEST-SPACE -// "export-space-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Project: TEST-PROJECT -// "export-project-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Experiment: EXP-SPACE-TEST -// "export-experiment-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /CISD/NEMO/3VCP6 -// "export-sample-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050946559-980"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /MP -// "export-sample-shared-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), +// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-653"))), // new AllFields(), // XlsTextFormat.RICH, // true, // withReferredTypes // false // withImportCompatibility // }, -// { -// // Data set: "ROOT_CONTAINER" -// "export-data-set-pdf.zip", -// EnumSet.of(ExportFormat.PDF), -// List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// -// // Data -// { -// // Sample: /CISD/NEMO/CP-TEST-3 -// "export-sample-data.zip", -// EnumSet.of(ExportFormat.DATA), -// List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200902091225616-1027"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, -// { -// // Sample: /CISD/NEMO/EXP1 -// "export-experiment-data.zip", -// EnumSet.of(ExportFormat.DATA), -// List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new SamplePermId("200811050951882-1028"))), -// new AllFields(), -// XlsTextFormat.PLAIN, -// true, // withReferredTypes -// false // withImportCompatibility -// }, + { + // Data set: "ROOT_CONTAINER" + "export-data-set-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + + // HTML: Selected fields + { + // Space: TEST-SPACE + "export-space-filtered-fields-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new SelectedFields(List.of(CODE, PERM_ID, MODIFICATION_DATE), List.of()), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Project: TEST-PROJECT + "export-project-filtered-fields-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), + new SelectedFields(List.of(PERM_ID, IDENTIFIER, REGISTRATOR, REGISTRATION_DATE), List.of()), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment: EXP-SPACE-TEST + "export-experiment-filtered-fields-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), + new SelectedFields(List.of(CODE, PARENTS, CHILDREN, REGISTRATOR, REGISTRATION_DATE), + List.of(new PropertyTypePermId("DESCRIPTION"))), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /CISD/NEMO/3VCP6 + "export-sample-filtered-fields-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050946559-980"))), + new SelectedFields( + List.of(CODE, PARENTS, CHILDREN), + List.of(new PropertyTypePermId("BACTERIUM"), new PropertyTypePermId("COMMENT"), new PropertyTypePermId("ORGANISM"))), + XlsTextFormat.PLAIN, + false, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-plain-text-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-rich-text-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_PROPERTY_NAME))), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-with-image-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_WITH_IMAGE_PROPERTY_NAME))), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST + "export-sample-with-spreadsheet-html.zip", + EnumSet.of(ExportFormat.HTML), + List.of(new ExportablePermId(ExportableKind.SAMPLE, null)), // null perm ID indicates that the newly created value in the setup of the test should be used. + new SelectedFields(List.of(IDENTIFIER, CODE), List.of(new PropertyTypePermId(RICH_TEXT_WITH_SPREADSHEET_PROPERTY_NAME))), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, + + // PDF: All fields + { + // Space: TEST-SPACE + "export-space-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.SPACE, new SpacePermId("TEST-SPACE"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Project: TEST-PROJECT + "export-project-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.PROJECT, new ProjectPermId("20120814110011738-105"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Experiment: EXP-SPACE-TEST + "export-experiment-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new ExperimentPermId("201206190940555-1032"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /CISD/NEMO/3VCP6 + "export-sample-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050946559-980"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /MP + "export-sample-shared-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050947161-652"))), + new AllFields(), + XlsTextFormat.RICH, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Data set: "ROOT_CONTAINER" + "export-data-set-pdf.zip", + EnumSet.of(ExportFormat.PDF), + List.of(new ExportablePermId(ExportableKind.DATASET, new DataSetPermId("ROOT_CONTAINER"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + + // Data + { + // Sample: /CISD/NEMO/CP-TEST-3 + "export-sample-data.zip", + EnumSet.of(ExportFormat.DATA), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200902091225616-1027"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, + { + // Sample: /CISD/NEMO/EXP1 + "export-experiment-data.zip", + EnumSet.of(ExportFormat.DATA), + List.of(new ExportablePermId(ExportableKind.EXPERIMENT, new SamplePermId("200811050951882-1028"))), + new AllFields(), + XlsTextFormat.PLAIN, + true, // withReferredTypes + false // withImportCompatibility + }, // All { - // Sample: /CISD/MP002-1 + // Sample: /TEST-SPACE/TEST-PROJECT/FV-TEST "export-sample-all.zip", EnumSet.of(ExportFormat.XLSX, ExportFormat.HTML, ExportFormat.PDF, ExportFormat.DATA), - List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200811050917877-331"))), + List.of(new ExportablePermId(ExportableKind.SAMPLE, new SamplePermId("200902091250077-1026"))), new AllFields(), XlsTextFormat.PLAIN, true, // withReferredTypes diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/test_files/export/export-sample-all.zip b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/test_files/export/export-sample-all.zip index 1c6f0113c488075c673b47bf57e53e0f2779be26..55f3d9749b08bb2a447d362d0c705eeeedc9cfba 100644 GIT binary patch literal 10753 zcmb_?1yEeex-}9YxO=eR?m9Su;K4PxySuyF;2u1KLvRQd+}$m>yXy<*zvrHFPt`s3 z?z{h*nX0bZv%ar;_wHT&t<`c;kZ&-+-oAYcM&}o-3ic;J{c5{fI=C`Ig2_q2ynVd_ z@sG=L|CWUIJITt(QO{7%QIFv@gqJETSArIPk8WwA+;u@8aHuP`pxQ9CloeIf*}w#c zY*GAPOdTek3WPEb)M8^Zgf%-f&_NGB1m^e@J|DbnK0L2DWZrmH+_<0Y@QivLUt~PA zUxHtLW|NkdW~2PUyv^pppdwi>M8fMSR6XUP_r9YHd?>ieEQ3H<qcX}*btO6dDpEZ^ zNKKoq(uNd~V#8&@i2h3bwoN=d=o!peOEsb;G-R;QB>2H)b-)&P?)}*+mruE_d}cb+ z0UxXp?~HFb!mzIQb`a^Np*Rr$BGgyqMm4^356GMm72qH#n9&_s`(geps+2XW<F2G9 z((L?uW($2&V&wDH4+&msGys7giL)?r9-P5O?S6_ttC|e|njYj>>w-eMaKMW~wbOF1 zh+6CFm~J`JPkS;NYqh52RwtI5G|ww#TZx5t3KatUknN?Nq9c{YX|$LWK@%O9e$w2` zLbueC+t_=irn)a1V#Y+A841>I;Covkr{~|85iiAVHTqXhFR3`qE{b7@-mhBhC98Z6 z(Aq|7BVO_(b3wGF=h_?KJj*STN>>piUn*#(<EKTE9g*F}kH+N3#KLCd7QsssUXf&! zXqKMV6*el}2^c;EmR;SA3NQGDBS%FeFl+hka2U)aru*eqUfES8io6+N7^*R-`_Y0m zA|rVvXJouXiqqk?rySxOm=nlcb+z)a0_xV-#SNfHp6i;Dav6MZVx1|gLSqDP*BvoJ zP!t-Ys=I<}Gw#%K^W&PSo4S+7o_Aqb9U2V9<oOA+#LwU61-|mI=`fI)06ZOwR)y9~ zRz`9#D{v579#}vlilXz5CP+3L^IWceTw)34E|C!bP+NA(f1y!1t^vmbbTs1bY?db; zTb^5^=0l!Y-YuNhpRpgY%`Ak%yEu1pPeC3Pn`;+}qXKB_O=X7ZZt!T(+z2(O5GiZm z;ep=^*!hG`5X2!dVN5Jy8}1y*kgqUBw+oYKAJA$vLkX}{<V*)OcPBiHipY>zh{x^b zsOJ`OB+al+BSnvbymi=cX_fP|xt53qp_C)T(wPB_O9G6A;hc@_ogJWsED~b%u<8hh z);&ANqYnb_o4W+rDusB{>j`t;d9BWf?H<2D&3&NY5c){`f*+v$(}mE%<T|e%RSUh; zYZ?dJEgs5i4d9zL@<AMo+K**UGEJc1M-?Xl3>loza4$L_{|0NQfPjKOit{kd^W0G= z|7shZd{Io8Tt&BUMfLL7$=<d;9M_WWEaC+<EKMlq3Xm5l-U-<{!RFyk03VcqEprB6 zT|5lbaOTSDwB>)^l@zh-c<@5ZOKQJ>LF#BySm7PKK^@6xk`X|$`!IET-5s{;6jASe z;Lo2{D-ZJp&jBYHkmf?JX}A!wydudfHFVNxb7w2AT~lBp(4iJHArzldO8UdMKYIPl zS=C;PsB}}igl2<_P@NScZ0;Pa;yNP6q-3*I1D%^9EKeY!eBTUKjk&h2SczbpCO(1F z;qrhXjuT?pH=8s2m~t>ynXb3o$O0N<V<RA4>*;AvZeko9Kaf+}7XAiO6phjBrHcf+ zVD%L2u4yg@C7QyUN|n(>hbHQo3x89DNp)kcFhSa#ee6isevSYK!i5_g&rWS&@|N&) zNDDRwW7M*@cNYo%$irV4P@FE@$?+H;mm!|Z#8JHD?XP!n1Qpi;SJa;@HB;8Ne672C zC&s5bY0n#n39BCBC$1CJ1kpaIMub!k+i~7)z?}TF7v(Mz(%Df~do!^lY1a;cxy{0= zm3H$85wi8x%pQHc`x+Y_C?=;escP_u{HY3hdktbvR2X}e%%$J6G7PD)SicXfZ1|#d zWYQL7i-kG_YT$oItVU&9V6^ddPj^y~VNFZf4s6vS6vWatri}jFgDXXT%6hianQyc= zHJWx-SPbdKdZFzfQMHX&Rc<AIRD}gr?-#>*D-{<YwxM!T%c9NmDF!M`SbeyH7lft@ zJFc|$0nWL6hgb<Tx7_T0y0l3tBJINWb;_J!BD7S93UHc95C)G4-Bz|qtDgN6a5W(( zG|{-$+Fv)f004&ul%<X&=*>^jL*R?l!>ea}n&;%Dz8hBD+K6h_d+(mU=vs1B?T1ZE zQm%Na&U`(B8Xr|N7GCBZ7&Iwov$z&>+KoL9gGyFytB>Q<vmCedb84RB)&N!a<s|X} z%AMF-_R7DJ#2(G_ZJU{QK^;(#SFKF-<??h38Q#4Et~YX^<DKx%&sUXlrZG!KiY z7yRRBVLePm7Rr+^l=7}oiU;PH+I%j?TNnOs`6!4#ewZ5xW?Q$H6+JwnPlqQ!YJeFP zB|+<0?NT5&eBWW<q|C(%ceiYO96v^0pk<<v1=|H6Cr;@VQ6<gQS@dN|4UA8aVPDv7 zN6*Yg0{U~)C1uNgG~<aDuF8b5W*1b|sp%sq+-*+GoAqsdGv3ivFy^tSmq~@en<ds4 zYQ!ca*k<+R!90lXM<a4HyC`|g#M^iL{vCpvemW0Pi;gUjeQ31+#YGh<^#H*8V0jou z<v!B6ki^$#)S$yO3kr!0P5}LyEbE<N={4{$U^5%|L@I(pexAZ<D~`n{lMUnX{sb z+tIpc%=<e4Jl=M8B|hXN7!f$-XE0=qu(~*2$DSm9g&6$u^6k9zv!K&&v6r-x#B+$5 zc<*U-_!2IpZ;=nF6PU(#C+G67<;Lb39v9NkbWFOx$Ni{B`#8k8sk~|U@hxG2KvVsB z;p2VLIbnGAL$w_HNg|cw(__SbTB*2Q*eopvEO-p(z&kn_n4lUbi~=;;OLR2eylO1z zcLc04jWk*+WQz<gNKsx|;PQ!aRJusGc~p6uYuO2Qr^zf3u~aS|WD}XiQEGG@U;UZ@ zfse|BYe{*-2|0m2xgpp=swCJ51Q;|dgIe{%6VhfI6Zb5T%F6Nu09sV#5VB}7-K8wh zkM_*z6)h>#iBP;8h?D2{KSfwaLn7_uXVrB`TtNAaE=X8Wuxb3$^un#MBw^*zX~+RA ztzbH-!#@HZO~0pLdW*kndlvUTI(^7^N2f3a#^fMjw>;?E01qoRm&u{dh~j@s9X5_g zMNuX@#4m`>P%Q{uYHYJ#-7F&u@4?v0u|`axN3&Dv%zQioCzYqYf7Dz{Z!M;JUnoE7 zf&;2?r6RtEp_b5ms`_yLl)IIjvnVyf=#Z?tE6eP%FObV4;??w)H&vS$W__oX052q- zpP|?Fs@~*)aF*>71gSjRrJv-FoD`J{079h45PS-E{V9o}7YZ2hZg-!&9V#rF;kK%s z`~-eYR?&(q=@(?KU!{szQzbdpLhld7`i(VonY+aOSh@LXM}ec;>V&*~Z7XLST&Y*) z?3fW3m3-Wv+7*Qu*|utiBmY7{Q{~vTHXNOs-wl8Gy3D9ku_)roeR%k7iy%nSacAo2 zIoD>sd34{|{YOh;P8uJDpFio=z3KhCthC}NTooEl9A9%`WO9c)fhO*(Hu8-Ff5F>3 ze{X)-mnqqku>wyf?2X%NB-Q=O0(k>YnT#NhR`uui&n2*mWH9JOPdgwyrw<37R|>(N zGb6{a=K!Y@qg%e1_~)ci<wC&92+k$ufhefbdV0FdIPD9!b4ta*bYfelUS~vbWp)~I zHqawo8`BijX#h`goIbL5b~;qwe3m_N96od)>}DN*Ub9vL9HaW)8n*~-6}$I9pgB$i zM{a`cZOVYOzWji2c6ul5ol0g2DMh#EbWlK%={{lE-u|sK)TY8}MKi(N=+in0alK@z zGm8)AXIH!7Ms`fk$O6k#HjiceCQx^OIV?v-meZn!<<>-#K5ToYa;sg~b<0NOZbEFl z?*IniWHw$gBGiKB+~0l~(XT?ZIbL>!#Wc&CxH^4eB#_5r9pO8R4X`>`{=%_3^qWXn zA3@0NO_)7FzMgCR+K;svN*ulZw`LYxc>=ft7EPUDzO{|@{BEae1FAb!`YFI2HzJwa zYHr!Q@t(jqP5O8lcWly|$8;8my3Z1KZ-J4a)s0<!1cieKH`^9!c085O!SH<uMW`(Z zTl4^PX*cQ-WBf>G>n9GW7QA-?pp8(p8`cAEcCtO)0hG3j=v2#;5UH=*luRzthkaFh z1^kuQ{pC_RE7T!v$Y0;i7}L^ZJ?*hcx1PUT#Z?E^;eZr!3N~`@9@J`X<k}^_y(~D0 zFTm#)TUO+4JtC3`K2%VKK7n7m_ldMYiRU~NA+E%%9At5MivS>>yPb|hPL{(Py#sb8 zUz&d|5b4?U8^6$ZlJ<Dv-+J$^R6Cz?nvzcn&^&sdt~ia};5P)^eR8t($@reTc1J(L zJNQz8%j5+uwl6T0P$-5Aelt4t0{L19Eggx9^&^0RnInV!DvbVJ_4MXfA!KW4{2vuh zu>atQNGN{zkBEqWCdz&i{g22ve<h2m$<Zr`Dk{;l{6}#p{w9vd?-3bH9jz>#;-zfz zm{5989;jQmosidH(hG^PsM)_pB#}|c)$%FJ+M-FdyeS7B7U_t@QwUxg8gJhajY2N2 zE<;7F3L_sHCi$P<F`rW7n4z@dU<h+McO0C!Vu6*CqV!9ak_WDMz7YdZOTl+Oc~_hu ze*ap>q}?eJ55-wMS)@{r#~0V%cV}Fm{H~g<!e?3BS7!2YiW+MUFoM<_e3Ub!9QSS- z^f;H3gXJM#ii+8jExUdTJ6bRo${wHF=a+2*he=`8;CPsL@o_T@%CbR0eJ~!Nubz4y zQC4}YcFr&Mo!AvQ!0gaTPJ>M3QehDj_nZc@buk21nBsk3mto|XVXoeXV?dLGV#~f1 z$rUN~2sUAh*9OogD2+e9Tad<$-saoz+Gh$F8FnZ0P}9CQDQbN+J>sfYY3O<JCMsmf zP>%wm0l`FIS!x^ENp=<KUA&Oynj|Gky;rl_Q$jB9WfE@8(|3~2YO84^wIw<Zju*`0 zjA)G7FuY?iM_t|D)S5nn%MHd17fz1kE>wS>QrEe!QM(snI;xDj1?<icH~gr4yv+iE zl>7?<`hA-zZH}LI->O(Hj}ZmH5f-ssCp}+CdqBGA^hlJBU6*}j{#w8J_}jAJD2V4B z2L}V&g#5c@LH@sbNPaCGMMPV>N%kq$p9)Xco1<O~B2bV)kNI>A`1lM@u><}}P+mJ- zz^;r(M~0`$soeFUM_wo|5k3coC*Q8iDSar?FXzMz06_Uv3q~x50ol=rC@73v5RoB_ z90Z5Qpdtn>))OoSZ5(V2og_xF03Ey!4ZWWx7$1JFDEaI4iotdcuW-R4Y40HUt1)p2 zyl`NTi{$A1B@MuSzF$eD?uHwuAWo)A@$XanvV2$IMh+(?z93U+zB6$nBhxSKI8Y%M z$}z?&2d1YerN~F>pa=zzF2V=zFsT-+6QLl~<HrZj2B>(`N3X&Za2lWxaUm4}^vltU z#=<L{s-J{dmX%@y496Z`N(@Ue_RBG`GjC703=UC)2UoRfA~ErNR*1h)R1j(km-4Mj z7#vh)E^-;zYZ*j(Z?!5AVX57D<Z~>0Phs^bq=%ZmH?XM@qwy)AlXGC3%48^8701GA zWxjD|vO8_(dJ7Jwju3>+#jCUC*95=u6m)b#4%f7gF>9rJc?inRF9oIJbdzO%(^Tj2 zEOTDZis%?TSZup#i=A0OKLxPeM`SMQd!ugj^tMFIgg8|ZMh~bc=y7Sxxr}nsjZxe; ztQ`js1(^`kIsq))4qe2QMq0EYWYd;;+cr0;3on*i6HoBAH5hGCQd^#TFW3otr*WOX zNxQjj`nydmQMT>ao0yj#-mWwA-H&FSe;BVBsS9FBkKyOZQl|21rQQ|n4M{om9!<59 zN|ttroA`dN)7%<2=_Xcq`JL?Ov<TC=WjR=zUVjlwimkF*t9fMmv?+jEjhQ3P>F0Oj z#bkgAr<VNyFBuJ;1@pns)gX3}z%Vs6-*(rS8us;Z`TYL8Mru(_k!kVHN8VqB#HMY< z0Q(g}+l*%B#gwNDT}yn$Sq;ZiQo;jx0pd%RWJ}m>!8fBty6ax#Lh%-zaxYTn!i@O? zEi4~b-15YVef~p**(QaN#Z&wTJ<`3e{zjaXvPg*c>MqMwq#p8s<m{#GIaL7U^%Sh5 zcd9;q|9kQpE=dl%t71U2YG%s@&rdgbaj^+}zl7A$qdJN=<&mmPUlCg!eALHB7VBcl zs;{7Chg$^}XE%(;bFaTu>D4D^xEd+4f{c9@=i30+L$lb6-g36_@F%z>=2BVTe(K!9 zZ(}K)`UA1a%G%M=xD|vQASpgUi9pumoBE|<L?H}^iiejywa!aN^IDzwgln|&q;T(T zr)PPT%+OhxXL2x8S?C{ITsgtBB|Wd2lqPrVt2yppo=}EUQ<g>#!1ponZl=k%pJ}gb zz}Q?u4;Fvv?Uza|w?_Y5Ud_8x@w_cr0umr!(#BNx!G39H*Zg5|VQF#!S#?2KO}Kr> z{DZ1&@3YI#uE$MGcr;BDsX(Y2ahWk|HK%jn{lIMt&(&Dw#j1=)Q^_1NL&K!!P9hYt zvnN6&s@LO?s`o~Z=*Oj1tLKf{;l|7Jnq?EVriyOQRmv6ir`v8so$e6^pXS2WVSXWU zmbX$k8v21bBpNvWkeKCNavdld#0|LAICyy_>>m^@BIP2q<?!{fiilxs_h6DK5`7zq zg+v&<in`X7Dkm>RSR521oHEZH6dEqIE_|z!Qj^QS5M`zAq^M@Vq6^k_rbyHJpF5ym zgnrA*rDBg76zmua90Wtc7?PHWlEIvC{iz?^?vFzk4};Ch_N@zrm8rfRg_VV)6NQzd zL&-$n*q_1JR97#Q#5i;hO9UN~PQM4|n3b)HsRxCXouwCrm6b&#G!cW`csn1<kCcQ; zfGDMlIINSEkzNNpO^{a$BiHI3BK_wm#O2SKk(tu;!-&I?ezmoJRete}=@B^~kY7Y5 zgdTajJ1y5Y8cYnLHH1txC5UJe5eHIM24!VcA5Mnf)Zec{(Yq196k*$6I`F^W^t?*O zucGgNv~S@0o%D(Jb>l<(YyU#~&;0_exQL>TgpANfQCb!zCN5@XCUz!n7G`#C78aKO zaDO8BU*s_~GS+jlbo`ITCGr0u-|Nj}W^i<MgzxX8Qvu6ee_T=u0#2=?1toL=Kk)rF zHM(8%s@T7Bz5f3F)Cm0-y?NF08O$AQtdF!7?H9Swyhc?kFWEF}on5hOKjrn|Y1Y;i zR3{u7Drz#M`P0i%DM%^UB`EQmwi<X_cF+o<Ax;3PdM&odImX`D?HxOSaV)H^z7^h? zwf!bc@RLZm7eRI>#|1BCFfl;3=*%axt(WDR7Z|&)qtaS0>}{GyO!E*OVf)kZ@<eYb z^u5#>Yr~<I4-@`M<cdx==A8{CQIO8L&T|s%O@+XU_Elczvk@I5d|L)`MMz`&?RJX~ zUm8VJW{izka`IEDHB)O7p7!WE%_aNgI2t!TNo5}DTcL*5wiDeBBD<Rtc~knHlCkU0 z?qFkVUF+KKvqt)D9O2E7Cvbt2I`lS2!Sa61&KWg_D>q36?+0tJb_dca8CwZgk?sQ` z^kyh5a@F}{wm7<5WhWHGY$SXVTYSe2jI$5iqYfZPkyov%d)Ft3_F}8ce+2jyc?FX< z2FNesNOLqk5myo|k=y_1H0Sl=6Bilki2Z4*gz6yJ9=i_{M1Fd3WXme$q3zC#-(Fgy zv50{Ence-XdkzW?9oG^CWDkoD?_i52ps-Dkql!&rbFuJ8R=jwb1HGYYUO^b;^nP<W zc3PtcsPAsK14(!lfiHU*sgAHR*HC4=jcBTqeIK$7ru_jxYx1Pq?CV*eDG<u~^+aJO zVsGxE!Mf8E{@W*B&H&|eWW%6ZYgV-4uU1NZSFFn%j|lhS!`&lKQg-=O+scF3uDIWe zd0hMx&2r$s0Nqi^fUU^I+RfQoC*x4r(JR_Jqy{;_<d|@C&)o6CPo-7x*Y8oR43xop zlnhuiq8*b~mRjrOYdeLuGvqCUNeH>VsD5HA85lTjD4#FBUSOhHArpp%D%*@V3CF?p zX$t*pHxlf|?Xpf*B|4zEp6Q{VrL<GP5!Kk!B@7+;P1k_2T_{T3I&rE4r_)InEP9Gq zf|L#<8n3~tM>;^r6r_P!Ah&?_QcCVUc5h2!{IRF6m-nruV8c(yks066{v2*m4_&dY zTA@So%sqOL{LDB#NU;tk6@!;45AvPgnCDk4>u#!R34(nw71r{Rfy+V76M`5^stcQo zwJ%N>R#z#yA2Ezh;C+w8X=eoYWbCf6>R5Y~r{P8sWfqN60=DQ?vj!~@FF!3lkQ@`1 z_ejKXL*a`TLKTk~!<3Fvz+&}n7n6Uwb8zR@D7ii<bToI@$w=Q<F#5>p<f!<O^D5Fh zTqW!2fjS^<HR(~w4j8koH8!2+rn<eKn98Xs3I_*~?nQ?AW#Vi`{hVs`RFk{cO81s` zrV}4=XVLIkNGE^bdPLJVX0X6{pFakiMqxBU->cnx;4~{jMpv^CT}G*3qH1~6bfk3s zcDzgC+3+~=4B=2Gb*A;ZP1#LMfBWKfmMwhkF{?S`EOHB`Nrsb&cC6H<ce`7zlwrBT zGM?R7OoW#c?VuL-bJMi0_A>D7EV@|%;fS#UWk(S(!!k;5^=^ZO;Y%M{f!PE6Cw&&d zth&3b04|26i_qiy63ndGF=t$cPR9%%WwK)#N<nEa1}X+Cf`@FKyXjHJzGfVT!hKy} zs4(xt;CMzUN<)10&fc>bkT;Gay(}2m7}D}Rnl7AA9?Jt*8m3?G@jk3tRv7ol4Wma{ zDds*orcbc|DSv0Jz!_izleag&cyM-lq-)QDFKa@{vKNp@4FQT6tlIaKisjS^t2yKx zCBhI)A{Qj#%ySn8%a->L8~?13NlVNDMThF50mM|^cW(Y}YHtAQS}6r4Q0xOu9j~(9 zDK4R%mBQvkk@iTkW)d!_`pZv;!`bS?tfRDkWz$&HBOFteW7yB!yp2_;>^MC?cebC; z9?ucCQ+%me{$RM!mi8G5P(UwMx4*RmaKKP&B|xT*6O1O6&M;+AgoUXHa7(uB7}Loc zYMOD8|8}DF&}N~;@-w;->AORq9dbP@QNB$Plz-3-*B6)JElEj}-Q;a{RVua}>Y{>d zuP>`SXXD?W*i(}%xhxaqn}Q8-f{XXnrI`e;1=zz5%b;UaW|IR85^E(5N<H)9wM$i} zIg>9V_Q44<MIodIPZoue;cX5uCGU8&ie?k6v1f|SUesAtCVfQTJY<V~i_cPawg%tM z0{LNn8N1l2v*4+MOFB%&Y#0c;wE7a6U_gry8GS%q@*Z<fiaXA+{Stx+!$}97ku%%1 z_+zwNNXCaDO)R?DpO^Q?VyB%@=TNk$3>oxvGP9n77pN<|cdoS=GC`I3N_?70BO%Yj zYq>rmoSpC{<*>%v!7MHi(kDrYWnO{qt$WZnS#50UO_Ya}k12?g)y9sP5<s@Z=cVsm zziPwaTWz({tp(U4<U$c}iSA%qogL%4aq4l=NH|g#uKFLy9PV_&Vj5ls{5?l8?|Z5Y z<wv0XMiEluB5HejY!$8Iq;m9}^Jw`b$kyZ#Hf80#KH=oYK9G$D3WZB1)<z43LpK4F z{e*a?ULNbFt%*Nyq=Z0|+<Q2Xq6~cWB*tLLV!D#X!Fxb1w1AN!L>k5tKULr+Sr~?o zfnU^ki$$>|6ewfL`57;=!h~~UaPa4R$k~^d<0qq+?G4oYXyPl!SOq5$lGPXuDC+Yx z6A0?W=dV*d;vlq5Gi_*b5V1}SBf$x@TwvupoG(f=+by_)-FbWnTp;rw)Fu#<Q_sQs zg4FFS{w|DxsDjJgad-gm@m+TgUZU1>MBv;cd)ddB^H4sS%8!c5TTJ+5od{Wo9;T}k z{MU{oAJ2s=VGQ?zJTaT~P#V2$O%ZavL`e~7BJY{h^8I%5+tHYq`yDy!Q%867(8+Eb zKj_O$miXu2=BcZmI5%JVouUHGiK*{qs3gN>kv=U1l0|t^xl)Kv>`GOYi2w@)pEr#J zfzb92KpQho-uHvvy1Wy+4)J2HAA&uJnIMp*)#FD$<N_wcA0N{^ta~wd^v9BL$SjKO zd4V20(0jo`4b<=ffiGm!SDEFo`V5Ty>AZEt89;E^-dJN@s-OkaJ)}2%4?PyA{b7DJ zD%P!!M8?o8czfFpg-vE?zKMGh5JclKg1d=g1eTLkUO+lLAdN&Wm4sF|SKNnM9OG`d zQ;V5+$ylPjC|O{Spr5y3rK(bVQX*JHwV~Krwjk6FV#LBwLMmEW;Q=?LPWV?Ub!$v2 z;=$d0_lgisGWAmeQ#H$P5dMAKLhDY@-RzX!Y|a}>(ss}Z#YpY>Z9%14?j`Cr-f1;j z&PUMHsclqfocDUcrBDtc`ID>AogXB>yl*;pamtr1z#gtM@6PhoWX(h>`cf}BC$FR< z1JRVb-||b~j;;UV)e)#cE*N;kaEl~z7$z3u`KZ^7khIA^5sukHJ4fv6BYkP0r!$gc zuM?-n$I6Y%$&PzAPi|jeQl5}0`o)1G1Ibz}e%{oRfRn(?|MQ#V?HbG8&t~`F6O^$D z#<j^n35rSs=RA8D?a$766qa!ctGi!mUJ%zJd9H-Q-H5t&L3~3viS*Q@Qv`%|WHkgW zBrK1at?xV6ViN>eJNsIOtJpOo1#WTAHqYkuRmVMorxYFP)YwfIGA^tr7E`jjs1C}> z?N12pske}3Uz}yulzqG^3GdbhHO9`s+h&*eC+oun$YBW7#}Vy;tkFT=;U-jjt}cT% zJ`q=|pdTu7%#=_GbwpqAKB$R?`3a|9`<NImVB<7i7wDIJ<s?|WtUoEgq)m;_U$+ta zkfvNP7Fy(ROVqX@w%Vjx=X?0R`%309&O9%!;UvugF*02u$uSXlZ(Gr(kR(0F8h<X% zCmLPRZoVj=wGdIMr1}<MqL}$}nyU?wR>+0);@(&qrU6qEMQ=Hx07{M1Aia`$<w%V_ z&4oczvK8ADn3PFBQ%OD}gmtlGIZ76|hbN>|^kJ@*m2sPY;JSRc`tooHGlrTjD?XsG z2309OfrLft-E5+0JsjUnf_3HokFNs9=uTfQt&Ra+#yAzm%EV_D-08-}EMNMd*n=Bw zld`C<q{umzlxfYickj{Xwr14Jn#kU*SE`qZ?}H3-3x9o8fnPzenM2aJ=#5jpB*OjD zZhqg(NF;J8t_>v)`l}JLl&i?_6&khNG|(B;DiJmEGq5XWj<D9N&gTQrCFRON^E-t- zcJ6nBd!Ny!*0m4{>+?#Uxi?}`x4_*^p44BQc{1$y<&@Jwfx23A$nbixb5TsSo`Ihi zy->uYF8tC;$hG~XVVT(ly{AJkMX{!>atKnQH~6whV2o@Sy?f15^a8n9wS_zG+v=3b zS-Lp*P2zbQZ@CB%&&OEa=Gqz<S6;_glF^(D48V7$&)E=*k-s%3&hPMm#>%LziSu=a z1q<!a1cR1ej((mUcSW*23R)NWG;90l-cZb4YMlavS-U+oo|9_^E*vFp(WHm;;Z>dw z&8igGDRhS$#JN|eY=N`V!$S!%<b(pti_>yI^VweOmfSe|ovK*2MSb&>=hG2+g1lEh zkCE@vek|hKV-)IJA9e-nE_|1G)NwliQum{;Bh?SCo7C8YJ?B>6vWL$|8FRwLMfgB) z<#q4|BFLj)Nv!h-@@u7*)g8h7tZkI8I1KiAYSc(!knl2As8x0CD{Ol_7%j!pD~^2= zw)#-`aI}fcD0oxUr~dwBRyQEW9@mqv7AuuYpha|0%>PN;)JKRs(kQdJ<2kaqu6>}j zU!aq@h0ZZr!Ol$J8Rpfy2-?vl`~J%<C~$wR6~Q4e!2b2@*Y5|sUJLnu#cwCU{!00? z74mxW>kqL1YW_y~mvdl$<-h*__mr=O$sgeV)yY@;<nI`-cF7;G{|DnY^W^VnuV%>~ zDETw()jIh*>Z?`q2X_BT{gZL>*C>Bh$6t+-Kfr|a|3>;-zh67>rzroFL4LDM{u=Yo zn#`-N{s)v%{x>my-QT~4d=2sYg#7C>z>4(`Y3J`KuTst*F#VnKe-L*5E{otFDSoxa z{);TX%Q}C}_Gd}uRmS-Pg1=Oj-xRL@!<c^0_D@mguWA3hI$!mgKQQuNr2VIQBPRs~ S{TdSS*XQh)OLPC*L-Rjbjeo}g literal 8752 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 -- GitLab