From 86aca7ed1cd085b48e1b2df94e1f96b68afec61d Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Fri, 4 Jan 2008 14:19:14 +0000 Subject: [PATCH] merged TRUNK changes r608809 into REL_3_0_2_BETA2 git-svn-id: https://svn.apache.org/repos/asf/poi/tags/REL_3_0_2_BETA2@608846 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 160 ++- poi.pom | 4 +- src/documentation/content/xdocs/book.xml | 1 + src/documentation/content/xdocs/changes.xml | 15 +- .../content/xdocs/hslf/how-to-shapes.xml | 52 + src/documentation/content/xdocs/hssf/eval.xml | 4 +- .../content/xdocs/hssf/quick-guide.xml | 21 + src/documentation/content/xdocs/index.xml | 14 +- src/documentation/content/xdocs/status.xml | 12 +- .../apache/poi/hssf/record/DVALRecord.java | 157 +++ .../org/apache/poi/hssf/record/DVRecord.java | 590 ++++++++++++ .../apache/poi/hssf/record/RecordFactory.java | 6 +- .../apache/poi/hssf/record/StringRecord.java | 8 + .../apache/poi/hssf/usermodel/HSSFCell.java | 2 +- .../poi/hssf/usermodel/HSSFCellStyle.java | 49 +- .../poi/hssf/usermodel/HSSFClientAnchor.java | 4 +- .../poi/hssf/usermodel/HSSFDateUtil.java | 94 +- .../apache/poi/hssf/usermodel/HSSFFont.java | 2 +- .../apache/poi/hssf/usermodel/HSSFSheet.java | 93 ++ .../poi/hssf/util/HSSFCellRangeAddress.java | 253 +++++ .../poi/hssf/util/HSSFDataValidation.java | 471 +++++++++ .../poifs/storage/SmallBlockTableWriter.java | 3 + src/java/org/apache/poi/util/IOUtils.java | 20 + src/java/org/apache/poi/util/StringUtil.java | 3 +- .../apache/poi/hslf/examples/TableDemo.java | 127 +++ .../eventusermodel/examples/XLS2CSVmra.java | 2 +- .../src/org/apache/poi/hslf/model/Fill.java | 2 + .../src/org/apache/poi/hslf/model/Sheet.java | 5 +- .../apache/poi/hslf/model/SimpleShape.java | 12 +- .../src/org/apache/poi/hslf/model/Table.java | 291 ++++++ .../org/apache/poi/hslf/model/TableCell.java | 155 +++ .../org/apache/poi/hslf/model/TextBox.java | 19 +- .../org/apache/poi/hslf/model/TextRun.java | 15 + .../poi/hslf/usermodel/RichTextRun.java | 6 +- .../src/org/apache/poi/hsmf/MAPIMessage.java | 23 +- .../org/apache/poi/hsmf/datatypes/Chunks.java | 1 + .../hssf/record/formula/functions/Date.java | 2 +- .../hssf/record/formula/functions/Day.java | 2 +- .../hssf/record/formula/functions/Mid.java | 76 +- .../hssf/record/formula/functions/Month.java | 2 +- .../record/formula/functions/Replace.java | 89 +- .../record/formula/functions/Substitute.java | 94 +- .../hssf/record/formula/functions/Trim.java | 60 +- .../hssf/record/formula/functions/Year.java | 2 +- .../org/apache/poi/hwpf/model/ListTables.java | 12 +- .../poi/hwpf/sprm/TableSprmUncompressor.java | 6 +- .../apache/poi/hwpf/usermodel/ListEntry.java | 21 +- .../org/apache/poi/hslf/data/43781.ppt | Bin 0 -> 39424 bytes .../org/apache/poi/hslf/data/sample.pptx | Bin 0 -> 47215 bytes .../apache/poi/hslf/usermodel/TestBugs.java | 32 + .../poi/hsmf/model/TestBlankFileRead.java | 15 + .../poi/hsmf/model/TestSimpleFileRead.java | 12 + .../poi/hssf/data/FormulaEvalTestData.xls | Bin 125952 -> 130048 bytes .../record/formula/eval/TestEverything.java | 40 +- .../formula/functions/TestEverything.java | 9 +- .../org/apache/poi/hwpf/data/AIOOB-Tap.doc | Bin 0 -> 57856 bytes .../poi/hwpf/data/IllustrativeCases.docx | Bin 0 -> 22858 bytes .../poi/hwpf/data/ListEntryNoListTable.doc | Bin 0 -> 19456 bytes .../org/apache/poi/hwpf/data/sample.docx | Bin 0 -> 14860 bytes .../poi/hwpf/usermodel/TestProblems.java | 77 ++ .../poi/hssf/data/1900DateWindowing.xls | Bin 6656 -> 6144 bytes .../poi/hssf/data/1904DateWindowing.xls | Bin 6656 -> 6144 bytes .../apache/poi/hssf/data/AverageTaxRates.xlsx | Bin 0 -> 23107 bytes .../poi/hssf/data/SimpleWithColours.xls | Bin 0 -> 6144 bytes .../poi/hssf/data/StringContinueRecords.xls | Bin 0 -> 1182208 bytes .../org/apache/poi/hssf/data/Tables.xlsx | Bin 0 -> 54387 bytes .../poi/hssf/data/TestDataValidation.xls | Bin 0 -> 21504 bytes .../poi/hssf/data/TwoSheetsNoneHidden.xls | Bin 0 -> 13824 bytes .../poi/hssf/data/TwoSheetsOneHidden.xls | Bin 0 -> 13824 bytes .../org/apache/poi/hssf/data/sample-beta.xlsx | Bin 0 -> 8836 bytes .../org/apache/poi/hssf/data/sample.xlsx | Bin 8836 -> 12050 bytes .../hssf/data/templateExcelWithAutofilter.xls | Bin 0 -> 13824 bytes .../hssf/extractor/TestExcelExtractor.java | 13 + .../hssf/usermodel/TestDataValidation.java | 910 ++++++++++++++++++ .../poi/hssf/usermodel/TestHSSFCell.java | 131 ++- .../hssf/usermodel/TestHSSFClientAnchor.java | 19 + .../poi/hssf/usermodel/TestHSSFDateUtil.java | 90 +- .../poi/hssf/usermodel/TestHSSFPalette.java | 65 ++ .../hssf/usermodel/TestReadWriteChart.java | 2 +- .../poi/hssf/usermodel/TestSheetHiding.java | 105 ++ .../poifs/filesystem/TestEmptyDocument.java | 25 + 81 files changed, 4408 insertions(+), 199 deletions(-) create mode 100644 src/java/org/apache/poi/hssf/record/DVALRecord.java create mode 100644 src/java/org/apache/poi/hssf/record/DVRecord.java create mode 100644 src/java/org/apache/poi/hssf/util/HSSFCellRangeAddress.java create mode 100644 src/java/org/apache/poi/hssf/util/HSSFDataValidation.java create mode 100755 src/scratchpad/examples/src/org/apache/poi/hslf/examples/TableDemo.java create mode 100755 src/scratchpad/src/org/apache/poi/hslf/model/Table.java create mode 100755 src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java create mode 100755 src/scratchpad/testcases/org/apache/poi/hslf/data/43781.ppt create mode 100644 src/scratchpad/testcases/org/apache/poi/hslf/data/sample.pptx create mode 100644 src/scratchpad/testcases/org/apache/poi/hwpf/data/AIOOB-Tap.doc create mode 100644 src/scratchpad/testcases/org/apache/poi/hwpf/data/IllustrativeCases.docx create mode 100644 src/scratchpad/testcases/org/apache/poi/hwpf/data/ListEntryNoListTable.doc create mode 100644 src/scratchpad/testcases/org/apache/poi/hwpf/data/sample.docx create mode 100644 src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java create mode 100644 src/testcases/org/apache/poi/hssf/data/AverageTaxRates.xlsx create mode 100755 src/testcases/org/apache/poi/hssf/data/SimpleWithColours.xls create mode 100644 src/testcases/org/apache/poi/hssf/data/StringContinueRecords.xls create mode 100644 src/testcases/org/apache/poi/hssf/data/Tables.xlsx create mode 100644 src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls create mode 100644 src/testcases/org/apache/poi/hssf/data/TwoSheetsNoneHidden.xls create mode 100644 src/testcases/org/apache/poi/hssf/data/TwoSheetsOneHidden.xls create mode 100644 src/testcases/org/apache/poi/hssf/data/sample-beta.xlsx create mode 100644 src/testcases/org/apache/poi/hssf/data/templateExcelWithAutofilter.xls create mode 100644 src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java create mode 100644 src/testcases/org/apache/poi/hssf/usermodel/TestSheetHiding.java diff --git a/build.xml b/build.xml index 73338a2a7..8661595b8 100644 --- a/build.xml +++ b/build.xml @@ -70,6 +70,7 @@ under the License. + @@ -77,6 +78,9 @@ under the License. + + + @@ -116,8 +120,33 @@ under the License. - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -130,7 +159,7 @@ under the License. - + @@ -162,6 +191,15 @@ under the License. + + + + + + + + + @@ -225,12 +263,15 @@ under the License. + + + @@ -281,6 +322,57 @@ under the License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305,7 +397,7 @@ under the License. - + @@ -363,6 +455,14 @@ under the License. + + + + + + + @@ -590,6 +690,43 @@ under the License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -976,6 +1113,21 @@ FORREST_HOME environment variable! + + + + + + + + + + + + + + + diff --git a/poi.pom b/poi.pom index 7395157c2..ed6923b62 100644 --- a/poi.pom +++ b/poi.pom @@ -77,8 +77,8 @@ under the License. - http://svn.apache.org/viewvc/jakarta/poi/trunk - scm:svn:http://svn.apache.org/repos/asf/jakarta/poi/trunk + http://svn.apache.org/viewvc/poi/trunk + scm:svn:http://svn.apache.org/repos/asf/poi/trunk bugzilla diff --git a/src/documentation/content/xdocs/book.xml b/src/documentation/content/xdocs/book.xml index 36c50e6fe..e8e6eb674 100644 --- a/src/documentation/content/xdocs/book.xml +++ b/src/documentation/content/xdocs/book.xml @@ -57,6 +57,7 @@ + diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index f429eb361..23ed0537c 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -35,8 +35,19 @@ - - 43877 and 39512 - Fix for handling mixed OBJ and CONTINUE records. + + Support for tables in HSLF + 43781 - Fix for extracting text from TextBoxes HSLF in + Improve JavaDocs relating to hssf font and fill colourings + 44095, 44097, 44099 - [PATCH] Support for Mid, Replace and Substitute excel functions + 44055 - [PATCH] Support for getting the from field from HSMF messages + 43551 - [PATCH] Support for 1904 date windowing in HSSF (previously only supported 1900 date windowing) + 41064 - [PATCH] Support for String continue records + 27511 - [PATCH] Support for data validation, via DVRecord and DVALRecord + + + + 43877 and 39512 - Fix for handling mixed OBJ and CONTINUE records. 43807 - Throw an IllegalArgumentException if asked to create a merged region with invalid columns or rows, rather than writing out a corrupt file 43837 - [PATCH] Support for unicode NameRecords 43721 - [PATCH] Support for Chart Title Format records diff --git a/src/documentation/content/xdocs/hslf/how-to-shapes.xml b/src/documentation/content/xdocs/hslf/how-to-shapes.xml index df40776a5..36e4a1138 100644 --- a/src/documentation/content/xdocs/hslf/how-to-shapes.xml +++ b/src/documentation/content/xdocs/hslf/how-to-shapes.xml @@ -39,6 +39,7 @@
  • How to work with slide/shape background
  • How to create bulleted lists
  • Hyperlinks
  • +
  • Tables
  • Features @@ -387,6 +388,57 @@ }
    + +
    How to create tables + + //table data + String[][] data = { + {"INPUT FILE", "NUMBER OF RECORDS"}, + {"Item File", "11,559"}, + {"Vendor File", "300"}, + {"Purchase History File", "10,000"}, + {"Total # of requisitions", "10,200,038"} + }; + + SlideShow ppt = new SlideShow(); + + Slide slide = ppt.createSlide(); + //create a table of 5 rows and 2 columns + Table table = new Table(5, 2); + for (int i = 0; i < data.length; i++) { + for (int j = 0; j < data[i].length; j++) { + TableCell cell = table.getCell(i, j); + cell.setText(data[i][j]); + + RichTextRun rt = cell.getTextRun().getRichTextRuns()[0]; + rt.setFontName("Arial"); + rt.setFontSize(10); + + cell.setVerticalAlignment(TextBox.AnchorMiddle); + cell.setHorizontalAlignment(TextBox.AlignCenter); + } + } + + //set table borders + Line border = table.createBorder(); + border.setLineColor(Color.black); + border.setLineWidth(1.0); + table.setAllBorders(border); + + //set width of the 1st column + table.setColumnWidth(0, 300); + //set width of the 2nd column + table.setColumnWidth(1, 150); + + slide.addShape(table); + table.moveTo(100, 100); + + FileOutputStream out = new FileOutputStream("hslf-table.ppt"); + ppt.write(out); + out.close(); + + +
    diff --git a/src/documentation/content/xdocs/hssf/eval.xml b/src/documentation/content/xdocs/hssf/eval.xml index 548df78e7..d697eb082 100644 --- a/src/documentation/content/xdocs/hssf/eval.xml +++ b/src/documentation/content/xdocs/hssf/eval.xml @@ -63,6 +63,8 @@ HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); CellReference cellReference = new CellReference("B3"); HSSFRow row = sheet.getRow(cellReference.getRow()); HSSFCell cell = row.getCell(cellReference.getCol()); + +evaluator.setCurrentRow(row); HSSFFormulaEvaluator.CellValue cellValue = evaluator.evaluate(cell); switch (cellValue.getCellType()) { @@ -106,7 +108,7 @@ HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); CellReference cellReference = new CellReference("B3"); HSSFRow row = sheet.getRow(cellReference.getRow()); HSSFCell cell = row.getCell(cellReference.getCol()); - +evaluator.setCurrentRow(row); if (cell!=null) { switch (evaluator.evaluateInCell(cell).getCellType()) { diff --git a/src/documentation/content/xdocs/hssf/quick-guide.xml b/src/documentation/content/xdocs/hssf/quick-guide.xml index 6dc4dc909..ddbd447fd 100644 --- a/src/documentation/content/xdocs/hssf/quick-guide.xml +++ b/src/documentation/content/xdocs/hssf/quick-guide.xml @@ -41,6 +41,7 @@
  • How to create cells
  • How to create date cells
  • Working with different types of cells
  • +
  • Iterate over rows and cells
  • Text Extraction
  • Aligning cells
  • Working with borders
  • @@ -234,6 +235,26 @@ fileOut.close(); + +
    Iterate over rows and cells (including Java 5 foreach loops) +

    Sometimes, you'd like to just iterate over all the rows in + a sheet, or all the cells in a row. If you are using Java + 5 or later, then this is especially handy, as it'll allow the + new foreach loop support to work.

    +

    Luckily, this is very easy. HSSFRow defines a + CellIterator inner class to handle iterating over + the cells (get one with a call to row.cellIterator()), + and HSSFSheet provides a rowIterator() method to + give an iterator over all the rows.

    + + HSSFSheet sheet = wb.getSheetAt(0); + for (HSSFRow row : sheet.rowIterator()) { + for (HSSFCell cell : row.cellIterator()) { + // Do something here + } + } + +
    Text Extraction

    For most text extraction requirements, the standard diff --git a/src/documentation/content/xdocs/index.xml b/src/documentation/content/xdocs/index.xml index 807009396..45b27b0b0 100644 --- a/src/documentation/content/xdocs/index.xml +++ b/src/documentation/content/xdocs/index.xml @@ -31,7 +31,19 @@ -

    POI 3.0.1 Release +
    POI 3.0.2 BETA1 Release +

    The latest release of Apache POI is 3.0.2 BETA1 which was promoted to "Beta" on 04 December 2007. It contains a mixture of + new features and bug fixes, compared to 3.0.1. A full list of changes + is available in + the changelog, and + download + the source and binaries from your + local mirror. + The release is also available from the central Maven repository under Group ID "org.apache.poi". +

    +
    + +
    POI 3.0.1 Release

    The latest release of Apache POI (formerly Apache Jakarta POI), version 3.0.1, has now been released. It contains a mixture of new features and bug fixes, compared to 3.0. A full list of changes diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index e4ed1065f..72761cf9c 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -32,7 +32,17 @@ - + + Support for tables in HSLF + 43781 - Fix for extracting text from TextBoxes HSLF in + Improve JavaDocs relating to hssf font and fill colourings + 44095, 44097, 44099 - [PATCH] Support for Mid, Replace and Substitute excel functions + 44055 - [PATCH] Support for getting the from field from HSMF messages + 43551 - [PATCH] Support for 1904 date windowing in HSSF (previously only supported 1900 date windowing) + 41064 - [PATCH] Support for String continue records + 27511 - [PATCH] Support for data validation, via DVRecord and DVALRecord + + 43877 - Fix for handling mixed OBJ and CONTINUE records 39512 - Fix for handling mixed OBJ and CONTINUE records 43837 - [PATCH] Support for unicode NameRecords diff --git a/src/java/org/apache/poi/hssf/record/DVALRecord.java b/src/java/org/apache/poi/hssf/record/DVALRecord.java new file mode 100644 index 000000000..858f525ca --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/DVALRecord.java @@ -0,0 +1,157 @@ + +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + 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. +==================================================================== */ + +package org.apache.poi.hssf.record; + +import org.apache.poi.util.LittleEndian; + +/** + * Title: DVAL Record

    + * Description: used in data validation ; + * This record is the list header of all data validation records in the current sheet. + * @author Dragos Buleandra (dragos.buleandra@trade2b.ro) + * @version 2.0-pre + */ + +public class DVALRecord extends Record +{ + public final static short sid = 0x01B2; + + //unknown field ; it's size should be 10 + private short field_unknown = 0x0000; + + //Object ID of the drop down arrow object for list boxes ; + //in our case this will be always FFFF , until + //MSODrawingGroup and MSODrawing records are implemented + private int field_cbo_id = 0xFFFFFFFF; + + //Number of following DV records + //Default value is 1 + private int field_3_dv_no = 0x00000000; + + public DVALRecord() + { + } + + /** + * Constructs a DVAL record and sets its fields appropriately. + * + * @param in the RecordInputstream to read the record from + */ + + public DVALRecord(RecordInputStream in) + { + super(in); + } + + protected void validateSid(short id) + { + if (id != sid) + { + throw new RecordFormatException("NOT A valid DVAL RECORD"); + } + } + + protected void fillFields(RecordInputStream in) + { + for ( int i=0; i<5; i++) + { + this.field_unknown = in.readShort(); + } + this.field_cbo_id = in.readInt(); + this.field_3_dv_no = in.readInt(); + } + + /** + * set the object ID of the drop down arrow object for list boxes + * @param cboID - Object ID + */ + public void setObjectID(int cboID) + { + this.field_cbo_id = cboID; + } + + /** + * Set the number of following DV records + * @param dvNo - the DV records number + */ + public void setDVRecNo(int dvNo) + { + this.field_3_dv_no = dvNo; + } + + /** + * get Object ID of the drop down arrow object for list boxes + */ + public int getObjectID( ) + { + return this.field_cbo_id; + } + + /** + * Get number of following DV records + */ + public int getDVRecNo( ) + { + return this.field_3_dv_no; + } + + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("[DVAL]\n"); + buffer.append(" .comboObjectID = ").append(Integer.toHexString(this.getObjectID())).append("\n"); + buffer.append(" .DVRecordsNumber = ").append(Integer.toHexString(this.getDVRecNo())).append("\n"); + buffer.append("[/DVAL]\n"); + return buffer.toString(); + } + + public int serialize(int offset, byte [] data) + { + LittleEndian.putShort(data, 0 + offset, this.sid); + LittleEndian.putShort(data, 2 + offset, ( short)(this.getRecordSize()-4)); + for ( int i=0; i<5; i++) + { + LittleEndian.putShort(data, 4 + i*2 + offset, (short)this.field_unknown); + } + LittleEndian.putInt(data, 14 + offset, this.getObjectID()); + LittleEndian.putInt(data, 18 + offset, this.getDVRecNo()); + return getRecordSize(); + } + + //with 4 bytes header + public int getRecordSize() + { + return 22; + } + + public short getSid() + { + return this.sid; + } + + public Object clone() + { + DVALRecord rec = new DVALRecord(); + rec.field_unknown = this.field_unknown; + rec.field_cbo_id = this.field_cbo_id; + rec.field_3_dv_no = this.field_3_dv_no; + return rec; + } +} \ No newline at end of file diff --git a/src/java/org/apache/poi/hssf/record/DVRecord.java b/src/java/org/apache/poi/hssf/record/DVRecord.java new file mode 100644 index 000000000..0bae009bd --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/DVRecord.java @@ -0,0 +1,590 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + 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. +==================================================================== */ + +package org.apache.poi.hssf.record; + +import org.apache.poi.util.BitField; +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.StringUtil; +import org.apache.poi.hssf.util.HSSFCellRangeAddress; +import org.apache.poi.hssf.record.formula.Ptg; + +import java.io.IOException; +import java.util.Stack; +import java.util.Hashtable; +import java.util.Enumeration; + +/** + * Title: DV Record

    + * Description: This record stores data validation settings and a list of cell ranges + * which contain these settings. The data validation settings of a sheet + * are stored in a sequential list of DV records. This list is followed by + * DVAL record(s) + * @author Dragos Buleandra (dragos.buleandra@trade2b.ro) + * @version 2.0-pre + */ +public class DVRecord extends Record +{ + public final static short sid = 0x01BE; + + /** + * Option flags + */ + private int field_option_flags; + + /** + * Title of the prompt box + */ + private String field_title_prompt; + + /** + * Title of the error box + */ + private String field_title_error; + + /** + * Text of the prompt box + */ + private String field_text_prompt; + + /** + * Text of the error box + */ + private String field_text_error; + + /** + * Size of the formula data for first condition + */ + private short field_size_first_formula; + + /** + * Not used + */ + private short field_not_used_1 = 0x3FE0; + + /** + * Formula data for first condition (RPN token array without size field) + */ + private Stack field_rpn_token_1 ; + + /** + * Size of the formula data for second condition + */ + private short field_size_sec_formula; + + /** + * Not used + */ + private short field_not_used_2 = 0x0000; + + /** + * Formula data for second condition (RPN token array without size field) + */ + private Stack field_rpn_token_2 ; + + /** + * Cell range address list with all affected ranges + */ + private HSSFCellRangeAddress field_regions; + + public static final Integer STRING_PROMPT_TITLE = new Integer(0); + public static final Integer STRING_ERROR_TITLE = new Integer(1); + public static final Integer STRING_PROMPT_TEXT = new Integer(2); + public static final Integer STRING_ERROR_TEXT = new Integer(3); + private Hashtable _hash_strings ; + + /** + * Option flags field + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + private BitField opt_data_type = new BitField(0x0000000F); + private BitField opt_error_style = new BitField(0x00000070); + private BitField opt_string_list_formula = new BitField(0x00000080); + private BitField opt_empty_cell_allowed = new BitField(0x00000100); + private BitField opt_surppres_dropdown_arrow = new BitField(0x00000200); + private BitField opt_show_prompt_on_cell_selected = new BitField(0x00040000); + private BitField opt_show_error_on_invalid_value = new BitField(0x00080000); + private BitField opt_condition_operator = new BitField(0x00F00000); + + public DVRecord() + { + } + + /** + * Constructs a DV record and sets its fields appropriately. + * + * @param in the RecordInputstream to read the record from + */ + + public DVRecord(RecordInputStream in) + { + super(in); + } + + protected void validateSid(short id) + { + if (id != sid) + { + throw new RecordFormatException("NOT a valid DV RECORD"); + } + } + + protected void fillFields(RecordInputStream in) + { + field_rpn_token_1 = new Stack(); + field_rpn_token_2 = new Stack(); + + this.field_option_flags = in.readInt(); + this._hash_strings = new Hashtable(4); + + StringHandler strHandler_prompt_title = new StringHandler( in ); + this.field_title_prompt = strHandler_prompt_title.getStringData(); + this._hash_strings.put(DVRecord.STRING_PROMPT_TITLE, strHandler_prompt_title); + + StringHandler strHandler_error_title = new StringHandler( in ); + this.field_title_error = strHandler_error_title.getStringData(); + this._hash_strings.put(DVRecord.STRING_ERROR_TITLE, strHandler_error_title); + + StringHandler strHandler_prompt_text = new StringHandler( in ); + this.field_text_prompt = strHandler_prompt_text.getStringData(); + this._hash_strings.put(DVRecord.STRING_PROMPT_TEXT, strHandler_prompt_text); + + StringHandler strHandler_error_text = new StringHandler( in ); + this.field_text_error = strHandler_error_text.getStringData(); + this._hash_strings.put(DVRecord.STRING_ERROR_TEXT, strHandler_error_text); + + this.field_size_first_formula = in.readShort(); + this.field_not_used_1 = in.readShort(); + + //read first formula data condition + // Not sure if this was needed or not... +// try { +// in.skip(this.field_size_first_formula); +// } catch(IOException e) { throw new IllegalStateException(e); } + + int token_pos = 0; + while (token_pos < this.field_size_first_formula) + { + Ptg ptg = Ptg.createPtg(in); + token_pos += ptg.getSize(); + field_rpn_token_1.push(ptg); + } + + this.field_size_sec_formula = in.readShort(); + this.field_not_used_2 = in.readShort(); + + //read sec formula data condition + // Not sure if this was needed or not... + try { + in.skip(this.field_size_sec_formula); + } catch(IOException e) { throw new IllegalStateException(e); } + + token_pos = 0; + while (token_pos < this.field_size_sec_formula) + { + Ptg ptg = Ptg.createPtg(in); + token_pos += ptg.getSize(); + field_rpn_token_2.push(ptg); + } + + //read cell range address list with all affected ranges + this.field_regions = new HSSFCellRangeAddress(in); + } + + + // --> start option flags + /** + * set the condition data type + * @param type - condition data type + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setDataType(int type) + { + this.field_option_flags = this.opt_data_type.setValue(this.field_option_flags, type); + } + + /** + * get the condition data type + * @return the condition data type + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public int getDataType() + { + return this.opt_data_type.getValue(this.field_option_flags); + } + + /** + * set the condition error style + * @param type - condition error style + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setErrorStyle(int style) + { + this.field_option_flags = this.opt_error_style.setValue(this.field_option_flags, style); + } + + /** + * get the condition error style + * @return the condition error style + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public int getErrorStyle() + { + return this.opt_error_style.getValue(this.field_option_flags); + } + + /** + * set if in list validations the string list is explicitly given in the formula + * @param type - true if in list validations the string list is explicitly given in the formula; false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setListExplicitFormula(boolean explicit) + { + this.field_option_flags = this.opt_string_list_formula.setBoolean(this.field_option_flags, explicit); + } + + /** + * return true if in list validations the string list is explicitly given in the formula, false otherwise + * @return true if in list validations the string list is explicitly given in the formula, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public boolean getListExplicitFormula() + { + return (this.opt_string_list_formula.isSet(this.field_option_flags)); + } + + /** + * set if empty values are allowed in cells + * @param type - true if empty values are allowed in cells, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setEmptyCellAllowed(boolean allowed) + { + this.field_option_flags = this.opt_empty_cell_allowed.setBoolean(this.field_option_flags, allowed); + } + + /** + * return true if empty values are allowed in cells, false otherwise + * @return if empty values are allowed in cells, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public boolean getEmptyCellAllowed() + { + return (this.opt_empty_cell_allowed.isSet(this.field_option_flags)); + } + + /** + * set if drop down arrow should be surppressed when list validation is used + * @param type - true if drop down arrow should be surppressed when list validation is used, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setSurppresDropdownArrow(boolean surppress) + { + this.field_option_flags = this.opt_surppres_dropdown_arrow.setBoolean(this.field_option_flags, surppress); + } + + /** + * return true if drop down arrow should be surppressed when list validation is used, false otherwise + * @return if drop down arrow should be surppressed when list validation is used, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public boolean getSurppresDropdownArrow() + { + return (this.opt_surppres_dropdown_arrow.isSet(this.field_option_flags)); + } + + /** + * set if a prompt window should appear when cell is selected + * @param type - true if a prompt window should appear when cell is selected, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setShowPromptOnCellSelected(boolean show) + { + this.field_option_flags = this.opt_show_prompt_on_cell_selected.setBoolean(this.field_option_flags, show); + } + + /** + * return true if a prompt window should appear when cell is selected, false otherwise + * @return if a prompt window should appear when cell is selected, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public boolean getShowPromptOnCellSelected() + { + return (this.opt_show_prompt_on_cell_selected.isSet(this.field_option_flags)); + } + + /** + * set if an error window should appear when an invalid value is entered in the cell + * @param type - true if an error window should appear when an invalid value is entered in the cell, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setShowErrorOnInvalidValue(boolean show) + { + this.field_option_flags = this.opt_show_error_on_invalid_value.setBoolean(this.field_option_flags, show); + } + + /** + * return true if an error window should appear when an invalid value is entered in the cell, false otherwise + * @return if an error window should appear when an invalid value is entered in the cell, false otherwise + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public boolean getShowErrorOnInvalidValue() + { + return (this.opt_show_error_on_invalid_value.isSet(this.field_option_flags)); + } + + /** + * set the condition operator + * @param type - condition operator + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public void setConditionOperator(int operator) + { + this.field_option_flags = this.opt_condition_operator.setValue(this.field_option_flags, operator); + } + + /** + * get the condition operator + * @return the condition operator + * @see org.apache.poi.hssf.util.HSSFDataValidation utility class + */ + public int getConditionOperator() + { + return this.opt_condition_operator.getValue(this.field_option_flags); + } + // <-- end option flags + + public void setFirstFormulaRPN( Stack rpn ) + { + this.field_rpn_token_1 = rpn; + } + + public void setFirstFormulaSize( short size ) + { + this.field_size_first_formula = size; + } + + public void setSecFormulaRPN( Stack rpn ) + { + this.field_rpn_token_2 = rpn; + } + + public void setSecFormulaSize( short size ) + { + this.field_size_sec_formula = size; + } + + public void setStringField( Integer type, String str_data ) + { + if ( this._hash_strings == null ) + { + this._hash_strings = new Hashtable(); + } + StringHandler strHandler = new StringHandler(); + if ( str_data == null ) + { + str_data = ""; + } + else + { + strHandler.setStringLength(str_data.length()); + } + strHandler.setStringData(str_data); + + strHandler.setUnicodeFlag((byte)0x00); + this._hash_strings.put( type, strHandler); + } + + public String getStringField( Integer type ) + { + return ((StringHandler)this._hash_strings.get(type)).getStringData(); + } + + public void setCellRangeAddress( HSSFCellRangeAddress range ) + { + this.field_regions = range; + } + + public HSSFCellRangeAddress getCellRangeAddress( ) + { + return this.field_regions; + } + + /** + * gets the option flags field. + * @return options - the option flags field + */ + public int getOptionFlags() + { + return this.field_option_flags; + } + + public String toString() + { + /** @todo DVRecord string representation */ + StringBuffer buffer = new StringBuffer(); + + return buffer.toString(); + } + + public int serialize(int offset, byte [] data) + { + int size = this.getRecordSize(); + LittleEndian.putShort(data, 0 + offset, sid); + LittleEndian.putShort(data, 2 + offset, ( short ) (size-4)); + + int pos = 4; + LittleEndian.putInt(data, pos + offset, this.getOptionFlags()); + pos += 4; + pos += ((StringHandler)this._hash_strings.get( DVRecord.STRING_PROMPT_TITLE )).serialize(pos+offset, data); + pos += ((StringHandler)this._hash_strings.get( DVRecord.STRING_ERROR_TITLE )).serialize(pos+offset, data); + pos += ((StringHandler)this._hash_strings.get( DVRecord.STRING_PROMPT_TEXT )).serialize(pos+offset, data); + pos += ((StringHandler)this._hash_strings.get( DVRecord.STRING_ERROR_TEXT )).serialize(pos+offset, data); + LittleEndian.putShort(data, offset+pos, this.field_size_first_formula); + pos += 2; + LittleEndian.putShort(data, offset+pos, this.field_not_used_1); + pos += 2; + + for (int k = 0; k < this.field_rpn_token_1.size(); k++) + { + Ptg ptg = ( Ptg ) this.field_rpn_token_1.get(k); + ptg.writeBytes(data, pos+offset); + pos += ptg.getSize(); + } + + LittleEndian.putShort(data, offset+pos, this.field_size_sec_formula); + pos += 2; + LittleEndian.putShort(data, offset+pos, this.field_not_used_2); + pos += 2; + if ( this.field_size_sec_formula > 0 ) + { + for (int k = 0; k < this.field_rpn_token_2.size(); k++) + { + Ptg ptg = ( Ptg ) this.field_rpn_token_2.get(k); + ptg.writeBytes(data, pos+offset); + pos += ptg.getSize(); + } + } + this.field_regions.serialize(pos+offset, data); + return size; + } + + public int getRecordSize() + { + int size = 4+4+2+2+2+2;//header+options_field+first_formula_size+first_unused+sec_formula_size+sec+unused; + if ( this._hash_strings != null ) + { + Enumeration enum_keys = this._hash_strings.keys(); + while ( enum_keys.hasMoreElements() ) + { + size += ((StringHandler)this._hash_strings.get( (Integer)enum_keys.nextElement() )).getSize(); + } + } + size += this.field_size_first_formula+ this.field_size_sec_formula; + size += this.field_regions.getSize(); + return size; + } + + public short getSid() + { + return this.sid; + } + + /**@todo DVRecord = Serializare */ + + private class StringHandler + { + private int _string_length = 0x0001; + private byte _string_unicode_flag = 0x00; + private String _string_data = "0x00"; + private int _start_offset; + private int _end_offset; + + StringHandler() + { + + } + + StringHandler(RecordInputStream in) + { + this.fillFields(in); + } + + protected void fillFields(RecordInputStream in) + { + this._string_length = in.readUShort(); + this._string_unicode_flag = in.readByte(); + if (this._string_unicode_flag == 1) + { + this._string_data = in.readUnicodeLEString(this._string_length); + } + else + { + this._string_data = in.readCompressedUnicode(this._string_length); + } + } + + private void setStringData( String string_data ) + { + this._string_data = string_data; + } + + private String getStringData() + { + return this._string_data; + } + + private int getEndOffset() + { + return this._end_offset; + } + + public int serialize( int offset, byte[] data ) + { + LittleEndian.putUShort(data, offset, this._string_length ); + data[2 + offset] = this._string_unicode_flag; + if (this._string_unicode_flag == 1) + { + StringUtil.putUnicodeLE(this._string_data, data, 3 + offset); + } + else + { + StringUtil.putCompressedUnicode(this._string_data, data, 3 + offset); + } + return getSize(); + } + + private void setUnicodeFlag( byte flag ) + { + this._string_unicode_flag = flag; + } + + private void setStringLength( int len ) + { + this._string_length = len; + } + + private int getStringByteLength() + { + return (this._string_unicode_flag == 1) ? this._string_length * 2 : this._string_length; + } + + public int getSize() + { + return 2 + 1 + getStringByteLength(); + } + } +} diff --git a/src/java/org/apache/poi/hssf/record/RecordFactory.java b/src/java/org/apache/poi/hssf/record/RecordFactory.java index 927d5f08b..cf705a316 100644 --- a/src/java/org/apache/poi/hssf/record/RecordFactory.java +++ b/src/java/org/apache/poi/hssf/record/RecordFactory.java @@ -75,7 +75,8 @@ public class RecordFactory HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class, WriteProtectRecord.class, FilePassRecord.class, PaneRecord.class, NoteRecord.class, ObjectProtectRecord.class, ScenarioProtectRecord.class, - FileSharingRecord.class, ChartTitleFormatRecord.class + FileSharingRecord.class, ChartTitleFormatRecord.class, + DVRecord.class, DVALRecord.class }; } private static Map recordsMap = recordsToMap(records); @@ -146,6 +147,9 @@ public class RecordFactory } else if (record.getSid() == ContinueRecord.sid && (lastRecord instanceof DrawingGroupRecord)) { ((DrawingGroupRecord)lastRecord).processContinueRecord(((ContinueRecord)record).getData()); + } else if (record.getSid() == ContinueRecord.sid && + (lastRecord instanceof StringRecord)) { + ((StringRecord)lastRecord).processContinueRecord(((ContinueRecord)record).getData()); } else if (record.getSid() == ContinueRecord.sid) { if (lastRecord instanceof UnknownRecord) { //Gracefully handle records that we dont know about, diff --git a/src/java/org/apache/poi/hssf/record/StringRecord.java b/src/java/org/apache/poi/hssf/record/StringRecord.java index a880d7235..b3a42aaba 100644 --- a/src/java/org/apache/poi/hssf/record/StringRecord.java +++ b/src/java/org/apache/poi/hssf/record/StringRecord.java @@ -83,6 +83,14 @@ public class StringRecord field_3_string = StringUtil.getFromCompressedUnicode(data, 0, field_1_string_length); } } + + public void processContinueRecord(byte[] data) { + if(isUnCompressedUnicode()) { + field_3_string += StringUtil.getFromUnicodeLE(data, 0, field_1_string_length - field_3_string.length()); + } else { + field_3_string += StringUtil.getFromCompressedUnicode(data, 0, field_1_string_length - field_3_string.length()); + } + } public boolean isInValueSection() { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index ac3943da4..9cc455071 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -521,7 +521,7 @@ public class HSSFCell */ public void setCellValue(Date value) { - setCellValue(HSSFDateUtil.getExcelDate(value)); + setCellValue(HSSFDateUtil.getExcelDate(value, this.book.isUsing1904DateWindowing())); } /** diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java index e2725937f..cdea9ee5b 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java @@ -294,10 +294,24 @@ public class HSSFCellStyle format.setFontIndex(fontindex); } + /** + * gets the index of the font for this style + * @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) + */ public short getFontIndex() { return format.getFontIndex(); } + + /** + * gets the font for this style + * @param parentWorkbook The HSSFWorkbook that this style belongs to + * @see org.apache.poi.hssf.usermodel.HSSFCellStyle#getFontIndex() + * @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) + */ + public HSSFFont getFont(HSSFWorkbook parentWorkbook) { + return parentWorkbook.getFontAt(getFontIndex()); + } /** * set the cell's using this style to be hidden @@ -689,7 +703,6 @@ public class HSSFCellStyle * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */ - public short getBorderBottom() { return format.getBorderBottom(); @@ -697,9 +710,8 @@ public class HSSFCellStyle /** * set the color to use for the left border - * @param color + * @param color The index of the color definition */ - public void setLeftBorderColor(short color) { format.setLeftBorderPaletteIdx(color); @@ -707,9 +719,9 @@ public class HSSFCellStyle /** * get the color to use for the left border - * @return color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) + * @param color The index of the color definition */ - public short getLeftBorderColor() { return format.getLeftBorderPaletteIdx(); @@ -717,9 +729,8 @@ public class HSSFCellStyle /** * set the color to use for the right border - * @param color + * @param color The index of the color definition */ - public void setRightBorderColor(short color) { format.setRightBorderPaletteIdx(color); @@ -727,9 +738,9 @@ public class HSSFCellStyle /** * get the color to use for the left border - * @return color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) + * @param color The index of the color definition */ - public short getRightBorderColor() { return format.getRightBorderPaletteIdx(); @@ -737,9 +748,8 @@ public class HSSFCellStyle /** * set the color to use for the top border - * @param color + * @param color The index of the color definition */ - public void setTopBorderColor(short color) { format.setTopBorderPaletteIdx(color); @@ -747,9 +757,9 @@ public class HSSFCellStyle /** * get the color to use for the top border - * @return color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) + * @param color The index of the color definition */ - public short getTopBorderColor() { return format.getTopBorderPaletteIdx(); @@ -757,9 +767,8 @@ public class HSSFCellStyle /** * set the color to use for the bottom border - * @param color + * @param color The index of the color definition */ - public void setBottomBorderColor(short color) { format.setBottomBorderPaletteIdx(color); @@ -767,9 +776,9 @@ public class HSSFCellStyle /** * get the color to use for the left border - * @return color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) + * @param color The index of the color definition */ - public short getBottomBorderColor() { return format.getBottomBorderPaletteIdx(); @@ -871,9 +880,9 @@ public class HSSFCellStyle /** * get the background fill color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return fill color */ - public short getFillBackgroundColor() { short result = format.getFillBackground(); @@ -889,7 +898,6 @@ public class HSSFCellStyle * Note: Ensure Foreground color is set prior to background color. * @param bg color */ - public void setFillForegroundColor(short bg) { format.setFillForeground(bg); @@ -898,12 +906,11 @@ public class HSSFCellStyle /** * get the foreground fill color + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return fill color */ - public short getFillForegroundColor() { return format.getFillForeground(); } - } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java b/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java index 04a0f5732..4d9098d75 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java @@ -82,8 +82,8 @@ public class HSSFClientAnchor */ public float getAnchorHeightInPoints(HSSFSheet sheet ) { - int y1 = Math.min( getDy1(), getDy2() ); - int y2 = Math.max( getDy1(), getDy2() ); + int y1 = getDy1(); + int y2 = getDy2(); int row1 = Math.min( getRow1(), getRow2() ); int row2 = Math.max( getRow1(), getRow2() ); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java index fc9ac3a3b..fb3a92df8 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java @@ -35,6 +35,8 @@ import java.util.GregorianCalendar; * @author Glen Stampoultzis (glens at apache.org) * @author Dan Sherman (dsherman at isisph.com) * @author Hack Kampbjorn (hak at 2mba.dk) + * @author Alex Jacoby (ajacoby at gmail.com) + * @author Pavel Krupets (pkrupets at palmtreebusiness dot com) */ public class HSSFDateUtil @@ -54,19 +56,26 @@ public class HSSFDateUtil * @return Excel representation of Date (-1 if error - test for error by checking for less than 0.1) * @param date the Date */ - - public static double getExcelDate(Date date) - { + public static double getExcelDate(Date date) { + return getExcelDate(date, false); + } + /** + * Given a Date, converts it into a double representing its internal Excel representation, + * which is the number of days since 1/1/1900. Fractional days represent hours, minutes, and seconds. + * + * @return Excel representation of Date (-1 if error - test for error by checking for less than 0.1) + * @param date the Date + * @param use1904windowing Should 1900 or 1904 date windowing be used? + */ + public static double getExcelDate(Date date, boolean use1904windowing) { Calendar calStart = new GregorianCalendar(); - - calStart.setTime( - date); // If date includes hours, minutes, and seconds, set them to 0 - if (calStart.get(Calendar.YEAR) < 1900) + calStart.setTime(date); // If date includes hours, minutes, and seconds, set them to 0 + + if ((!use1904windowing && calStart.get(Calendar.YEAR) < 1900) || + (use1904windowing && calStart.get(Calendar.YEAR) < 1904)) { return BAD_DATE; - } - else - { + } else { // Because of daylight time saving we cannot use // date.getTime() - calStart.getTimeInMillis() // as the difference in milliseconds between 00:00 and 04:00 @@ -80,32 +89,39 @@ public class HSSFDateUtil ) * 1000 + calStart.get(Calendar.MILLISECOND) ) / ( double ) DAY_MILLISECONDS; calStart = dayStart(calStart); - - double value = fraction + absoluteDay(calStart); - if (value >= 60) { - value += 1; + double value = fraction + absoluteDay(calStart, use1904windowing); + + if (!use1904windowing && value >= 60) { + value++; + } else if (use1904windowing) { + value--; } return value; } } - - /** - * Given a excel date, converts it into a Date. - * Assumes 1900 date windowing. - * - * @param date the Excel Date - * - * @return Java representation of a date (null if error) - * @see #getJavaDate(double,boolean) - */ - - public static Date getJavaDate(double date) - { - return getJavaDate(date,false); - } + /** + * Given an Excel date with using 1900 date windowing, and + * converts it to a java.util.Date. + * + * NOTE: If the default TimeZone in Java uses Daylight + * Saving Time then the conversion back to an Excel date may not give + * the same value, that is the comparison + * excelDate == getExcelDate(getJavaDate(excelDate,false)) + * is not always true. For example if default timezone is + * Europe/Copenhagen, on 2004-03-28 the minute after + * 01:59 CET is 03:00 CEST, if the excel date represents a time between + * 02:00 and 03:00 then it is converted to past 03:00 summer time + * + * @param date The Excel date. + * @return Java representation of the date, or null if date is not a valid Excel date + * @see java.util.TimeZone + */ + public static Date getJavaDate(double date) { + return getJavaDate(date, false); + } /** * Given an Excel date with either 1900 or 1904 date windowing, * converts it to a java.util.Date. @@ -142,7 +158,7 @@ public class HSSFDateUtil GregorianCalendar calendar = new GregorianCalendar(startYear,0, wholeDays + dayAdjust); int millisecondsInDay = (int)((date - Math.floor(date)) * - (double) DAY_MILLISECONDS + 0.5); + DAY_MILLISECONDS + 0.5); calendar.set(GregorianCalendar.MILLISECOND, millisecondsInDay); return calendar.getTime(); } @@ -238,7 +254,7 @@ public class HSSFDateUtil * Check if a cell contains a date * Since dates are stored internally in Excel as double values * we infer it is a date if it is formatted as such. - * @see #isADateFormat(int,string) + * @see #isADateFormat(int, String) * @see #isInternalDateFormat(int) */ public static boolean isCellDateFormatted(HSSFCell cell) { @@ -259,7 +275,7 @@ public class HSSFDateUtil * excel date formats. * As Excel stores a great many of its dates in "non-internal" * date formats, you will not normally want to use this method. - * @see #isADateFormat(int,string) + * @see #isADateFormat(int,String) * @see #isInternalDateFormat(int) */ public static boolean isCellInternalDateFormatted(HSSFCell cell) { @@ -296,10 +312,10 @@ public class HSSFDateUtil * @exception IllegalArgumentException if date is invalid */ - private static int absoluteDay(Calendar cal) + static int absoluteDay(Calendar cal, boolean use1904windowing) { return cal.get(Calendar.DAY_OF_YEAR) - + daysInPriorYears(cal.get(Calendar.YEAR)); + + daysInPriorYears(cal.get(Calendar.YEAR), use1904windowing); } /** @@ -307,14 +323,14 @@ public class HSSFDateUtil * * @return days number of days in years prior to yr. * @param yr a year (1900 < yr < 4000) + * @param use1904windowing * @exception IllegalArgumentException if year is outside of range. */ - private static int daysInPriorYears(int yr) + private static int daysInPriorYears(int yr, boolean use1904windowing) { - if (yr < 1900) { - throw new IllegalArgumentException( - "'year' must be 1900 or greater"); + if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1900)) { + throw new IllegalArgumentException("'year' must be 1900 or greater"); } int yr1 = yr - 1; @@ -323,7 +339,7 @@ public class HSSFDateUtil + yr1 / 400 // plus years divisible by 400 - 460; // leap days in previous 1900 years - return 365 * (yr - 1900) + leapDays; + return 365 * (yr - (use1904windowing ? 1904 : 1900)) + leapDays; } // set HH:MM:SS fields of cal to 00:00:00:000 diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFFont.java b/src/java/org/apache/poi/hssf/usermodel/HSSFFont.java index 852e15ee2..cfaa5e4f4 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFFont.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFFont.java @@ -281,8 +281,8 @@ public class HSSFFont * @return color to use * @see #COLOR_NORMAL * @see #COLOR_RED + * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) */ - public short getColor() { return font.getColorPaletteIndex(); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 91098c2dc..b52fa1e5b 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -23,9 +23,13 @@ package org.apache.poi.hssf.usermodel; import org.apache.poi.ddf.EscherRecord; +import org.apache.poi.hssf.model.FormulaParser; import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.model.Workbook; import org.apache.poi.hssf.record.*; +import org.apache.poi.hssf.record.formula.Ptg; +import org.apache.poi.hssf.util.HSSFCellRangeAddress; +import org.apache.poi.hssf.util.HSSFDataValidation; import org.apache.poi.hssf.util.Region; import org.apache.poi.hssf.util.PaneInformation; import org.apache.poi.util.POILogFactory; @@ -35,6 +39,7 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Stack; import java.util.TreeMap; import java.text.AttributedString; import java.text.NumberFormat; @@ -353,6 +358,94 @@ public class HSSFSheet { return lastrow; } + + /** + * Creates a data validation object + * @param obj_validation The Data validation object settings + */ + public void addValidationData(HSSFDataValidation obj_validation) + { + if ( obj_validation == null ) + { + return; + } + DVALRecord dvalRec = (DVALRecord)sheet.findFirstRecordBySid( DVALRecord.sid ); + int eofLoc = sheet.findFirstRecordLocBySid( EOFRecord.sid ); + if ( dvalRec == null ) + { + dvalRec = new DVALRecord(); + sheet.getRecords().add( eofLoc, dvalRec ); + } + int curr_dvRecNo = dvalRec.getDVRecNo(); + dvalRec.setDVRecNo(curr_dvRecNo+1); + + //create dv record + DVRecord dvRecord = new DVRecord(); + + //dv record's option flags + dvRecord.setDataType( obj_validation.getDataValidationType() ); + dvRecord.setErrorStyle(obj_validation.getErrorStyle()); + dvRecord.setEmptyCellAllowed(obj_validation.getEmptyCellAllowed()); + dvRecord.setSurppresDropdownArrow(obj_validation.getSurppressDropDownArrow()); + dvRecord.setShowPromptOnCellSelected(obj_validation.getShowPromptBox()); + dvRecord.setShowErrorOnInvalidValue(obj_validation.getShowErrorBox()); + dvRecord.setConditionOperator(obj_validation.getOperator()); + + //string fields + dvRecord.setStringField( DVRecord.STRING_PROMPT_TITLE,obj_validation.getPromptBoxTitle()); + dvRecord.setStringField( DVRecord.STRING_PROMPT_TEXT, obj_validation.getPromptBoxText()); + dvRecord.setStringField( DVRecord.STRING_ERROR_TITLE, obj_validation.getErrorBoxTitle()); + dvRecord.setStringField( DVRecord.STRING_ERROR_TEXT, obj_validation.getErrorBoxText()); + + //formula fields ( size and data ) + String str_formula = obj_validation.getFirstFormula(); + FormulaParser fp = new FormulaParser(str_formula+";",book); + fp.parse(); + Stack ptg_arr = new Stack(); + Ptg[] ptg = fp.getRPNPtg(); + int size = 0; + for (int k = 0; k < ptg.length; k++) + { + if ( ptg[k] instanceof org.apache.poi.hssf.record.formula.AreaPtg ) + { + //we should set ptgClass to Ptg.CLASS_REF and explicit formula string to false + ptg[k].setClass(Ptg.CLASS_REF); + obj_validation.setExplicitListFormula(false); + } + size += ptg[k].getSize(); + ptg_arr.push(ptg[k]); + } + dvRecord.setFirstFormulaRPN(ptg_arr); + dvRecord.setFirstFormulaSize((short)size); + + dvRecord.setListExplicitFormula(obj_validation.getExplicitListFormula()); + + if ( obj_validation.getSecondFormula() != null ) + { + str_formula = obj_validation.getSecondFormula(); + fp = new FormulaParser(str_formula+";",book); + fp.parse(); + ptg_arr = new Stack(); + ptg = fp.getRPNPtg(); + size = 0; + for (int k = 0; k < ptg.length; k++) + { + size += ptg[k].getSize(); + ptg_arr.push(ptg[k]); + } + dvRecord.setSecFormulaRPN(ptg_arr); + dvRecord.setSecFormulaSize((short)size); + } + + //dv records cell range field + HSSFCellRangeAddress cell_range = new HSSFCellRangeAddress(); + cell_range.addADDRStructure(obj_validation.getFirstRow(), obj_validation.getFirstColumn(), obj_validation.getLastRow(), obj_validation.getLastColumn()); + dvRecord.setCellRangeAddress(cell_range); + + //add dv record + eofLoc = sheet.findFirstRecordLocBySid( EOFRecord.sid ); + sheet.getRecords().add( eofLoc, dvRecord ); + } /** * Get the visibility state for a given column. diff --git a/src/java/org/apache/poi/hssf/util/HSSFCellRangeAddress.java b/src/java/org/apache/poi/hssf/util/HSSFCellRangeAddress.java new file mode 100644 index 000000000..438f5e596 --- /dev/null +++ b/src/java/org/apache/poi/hssf/util/HSSFCellRangeAddress.java @@ -0,0 +1,253 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + 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. +==================================================================== */ + +package org.apache.poi.hssf.util; + +import org.apache.poi.hssf.record.RecordInputStream; +import org.apache.poi.util.LittleEndian; +import java.util.ArrayList; + +/** + *

    Title: HSSFCellRangeAddress

    + *

    Description: + * Implementation of the cell range address lists,like is described in + * OpenOffice.org's Excel Documentation . + * In BIFF8 there is a common way to store absolute cell range address + * lists in several records (not formulas). A cell range address list + * consists of a field with the number of ranges and the list of the range + * addresses. Each cell range address (called an ADDR structure) contains + * 4 16-bit-values.

    + *

    Copyright: Copyright (c) 2004

    + *

    Company:

    + * @author Dragos Buleandra (dragos.buleandra@trade2b.ro) + * @version 2.0-pre + */ + +public class HSSFCellRangeAddress +{ + /** + * Number of following ADDR structures + */ + private short field_addr_number; + + /** + * List of ADDR structures. Each structure represents a cell range + */ + private ArrayList field_regions_list; + + public HSSFCellRangeAddress() + { + + } + + /** + * Construct a new HSSFCellRangeAddress object and sets its fields appropriately . + * Even this isn't an Excel record , I kept the same behavior for reading/writing + * the object's data as for a regular record . + * + * @param in the RecordInputstream to read the record from + */ + public HSSFCellRangeAddress(RecordInputStream in) + { + this.fillFields(in); + } + + public void fillFields(RecordInputStream in) + { + this.field_addr_number = in.readShort(); + this.field_regions_list = new ArrayList(this.field_addr_number); + + for (int k = 0; k < this.field_addr_number; k++) + { + short first_row = in.readShort(); + short first_col = in.readShort(); + short last_row = in.readShort(); + short last_col = in.readShort(); + + AddrStructure region = new AddrStructure(first_row, first_col, last_row, last_col); + this.field_regions_list.add(region); + } + } + + /** + * Get the number of following ADDR structures. + * The number of this structures is automatically set when reading an Excel file + * and/or increased when you manually add a new ADDR structure . + * This is the reason there isn't a set method for this field . + * @return number of ADDR structures + */ + public short getADDRStructureNumber() + { + return this.field_addr_number; + } + + /** + * Add an ADDR structure . + * @param first_row - the upper left hand corner's row + * @param first_col - the upper left hand corner's col + * @param last_row - the lower right hand corner's row + * @param last_col - the lower right hand corner's col + * @return the index of this ADDR structure + */ + public int addADDRStructure(short first_row, short first_col, short last_row, short last_col) + { + if (this.field_regions_list == null) + { + //just to be sure :-) + this.field_addr_number= 0; + this.field_regions_list = new ArrayList(10); + } + AddrStructure region = new AddrStructure(first_row, last_row, first_col, last_col); + + this.field_regions_list.add(region); + this.field_addr_number++; + return this.field_addr_number; + } + + /** + * Remove the ADDR structure stored at the passed in index + * @param index The ADDR structure's index + */ + public void removeADDRStructureAt(int index) + { + this.field_regions_list.remove(index); + this.field_addr_number--; + } + + /** + * return the ADDR structure at the given index. + * @return AddrStructure representing + */ + public AddrStructure getADDRStructureAt(int index) + { + return ( AddrStructure ) this.field_regions_list.get(index); + } + + public int serialize(int offset, byte [] data) + { + int pos = 2; + + LittleEndian.putShort(data, offset, this.getADDRStructureNumber()); + for (int k = 0; k < this.getADDRStructureNumber(); k++) + { + AddrStructure region = this.getADDRStructureAt(k); + LittleEndian.putShort(data, offset + pos, region.getFirstRow()); + pos += 2; + LittleEndian.putShort(data, offset + pos, region.getLastRow()); + pos += 2; + LittleEndian.putShort(data, offset + pos, region.getFirstColumn()); + pos += 2; + LittleEndian.putShort(data, offset + pos, region.getLastColumn()); + pos += 2; + } + return this.getSize(); + } + + public int getSize() + { + return 2 + this.field_addr_number*8; + } + + public class AddrStructure + { + private short _first_row; + private short _first_col; + private short _last_row; + private short _last_col; + + public AddrStructure(short first_row, short last_row, short first_col, short last_col) + { + this._first_row = first_row; + this._last_row = last_row; + this._first_col = first_col; + this._last_col = last_col; + } + + /** + * get the upper left hand corner column number + * @return column number for the upper left hand corner + */ + public short getFirstColumn() + { + return this._first_col; + } + + /** + * get the upper left hand corner row number + * @return row number for the upper left hand corner + */ + public short getFirstRow() + { + return this._first_row; + } + + /** + * get the lower right hand corner column number + * @return column number for the lower right hand corner + */ + public short getLastColumn() + { + return this._last_col; + } + + /** + * get the lower right hand corner row number + * @return row number for the lower right hand corner + */ + public short getLastRow() + { + return this._last_row; + } + + /** + * set the upper left hand corner column number + * @param this._first_col column number for the upper left hand corner + */ + public void setFirstColumn(short first_col) + { + this._first_col = first_col; + } + + /** + * set the upper left hand corner row number + * @param rowFrom row number for the upper left hand corner + */ + public void setFirstRow(short first_row) + { + this._first_row = first_row; + } + + /** + * set the lower right hand corner column number + * @param colTo column number for the lower right hand corner + */ + public void setLastColumn(short last_col) + { + this._last_col = last_col; + } + + /** + * get the lower right hand corner row number + * @param rowTo row number for the lower right hand corner + */ + public void setLastRow(short last_row) + { + this._last_row = last_row; + } + } +} + + diff --git a/src/java/org/apache/poi/hssf/util/HSSFDataValidation.java b/src/java/org/apache/poi/hssf/util/HSSFDataValidation.java new file mode 100644 index 000000000..af578bee4 --- /dev/null +++ b/src/java/org/apache/poi/hssf/util/HSSFDataValidation.java @@ -0,0 +1,471 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + 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. +==================================================================== */ + +package org.apache.poi.hssf.util; + +/** + *

    Title: HSSFDataValidation

    + *

    Description: Utilty class for creating data validation cells

    + *

    Copyright: Copyright (c) 2004

    + *

    Company:

    + * @author Dragos Buleandra (dragos.buleandra@trade2b.ro) + * @version 2.0-pre + */ + +public class HSSFDataValidation +{ + /** + * Validation data type constants + */ + /** + * Any type + */ + public static final int DATA_TYPE_ANY = 0x00; + /** + * Integer type + */ + public static final int DATA_TYPE_INTEGER = 0x01; + /** + * Decimal type + */ + public static final int DATA_TYPE_DECIMAL = 0x02; + /** + * List type ( combo box type ) + */ + public static final int DATA_TYPE_LIST = 0x03; + /** + * Date type + */ + public static final int DATA_TYPE_DATE = 0x04; + /** + * Time type + */ + public static final int DATA_TYPE_TIME = 0x05; + /** + * String length type + */ + public static final int DATA_TYPE_TEXT_LENGTH = 0x06; + /** + * Formula ( custom ) type + */ + public static final int DATA_TYPE_FORMULA = 0x07; + + /** + * Error style constants for error box + */ + /** + * STOP style like + */ + public static final int ERROR_STYLE_STOP = 0x00; + /** + * WARNING style like + */ + public static final int ERROR_STYLE_WARNING = 0x01; + /** + * INFO style like + */ + public static final int ERROR_STYLE_INFO = 0x02; + + /** + * Condition operator + */ + public static final int OPERATOR_BETWEEN = 0x00; + public static final int OPERATOR_NOT_BETWEEN = 0x01; + public static final int OPERATOR_EQUAL = 0x02; + public static final int OPERATOR_NOT_EQUAL = 0x03; + public static final int OPERATOR_GREATER_THAN = 0x04; + public static final int OPERATOR_LESS_THAN = 0x05; + public static final int OPERATOR_GREATER_OR_EQUAL = 0x06; + public static final int OPERATOR_LESS_OR_EQUAL = 0x07; + + private short _first_row = 0; + private short _first_col = 0; + private short _last_row = 0; + private short _last_col = 0; + + private String _prompt_title = null; + private String _prompt_text = null; + private String _error_title = null; + private String _error_text = null; + private String _string_first_formula = null; + private String _string_sec_formula = null; + + private int _data_type = HSSFDataValidation.DATA_TYPE_ANY; + private int _error_style = HSSFDataValidation.ERROR_STYLE_STOP; + private boolean _list_explicit_formula = true; + private boolean _empty_cell_allowed = true; + private boolean _surpress_dropdown_arrow = false; + private boolean _show_prompt_box = true; + private boolean _show_error_box = true; + private int _operator = HSSFDataValidation.OPERATOR_BETWEEN; + + + /** + * Empty constructor + */ + public HSSFDataValidation( ) + { + } + + /** + * Constructor wich initializes the cell range on wich this object will be applied + * @param first_row First row + * @param first_col First column + * @param last_row Last row + * @param last_col Last column + */ + public HSSFDataValidation( short first_row, short first_col, short last_row, short last_col ) + { + this._first_row = first_row; + this._first_col = first_col; + this._last_row = last_row; + this._last_col = last_col; + } + + /** + * Set the type of this object + * @param data_type The type + * @see DATA_TYPE_ANY, DATA_TYPE_INTEGER, DATA_TYPE_DECIMNAL, DATA_TYPE_LIST, DATA_TYPE_DATE, + * DATA_TYPE_TIME, DATA_TYPE_TEXT_LENTGH, DATA_TYPE_FORMULA + */ + public void setDataValidationType( int data_type ) + { + this._data_type = data_type; + } + + /** + * The data type of this object + * @return The type + * @see DATA_TYPE_ANY, DATA_TYPE_INTEGER, DATA_TYPE_DECIMNAL, DATA_TYPE_LIST, DATA_TYPE_DATE, + * DATA_TYPE_TIME, DATA_TYPE_TEXT_LENTGH, DATA_TYPE_FORMULA + */ + public int getDataValidationType() + { + return this._data_type; + } + + /** + * Sets the error style for error box + * @param error_style Error style constant + * @see ERROR_STYLE_STOP, ERROR_STYLE_WARNING, ERROR_STYLE_INFO + */ + public void setErrorStyle( int error_style ) + { + this._error_style = error_style; + } + + /** + * returns the error style of errror box + * @return the style constant + * @see ERROR_STYLE_STOP, ERROR_STYLE_WARNING, ERROR_STYLE_INFO + */ + public int getErrorStyle( ) + { + return this._error_style; + } + + /** + * If this object has an explicit formula . This is useful only for list data validation object + * @param explicit True if use an explicit formula + */ + public void setExplicitListFormula( boolean explicit ) + { + this._list_explicit_formula = explicit; + } + + /** + * Returns the settings for explicit formula . This is useful only for list data validation objects. + * This method always returns false if the object isn't a list validation object + * @see setDataValidationType( int data_type ) + * @return + */ + public boolean getExplicitListFormula( ) + { + if ( this._data_type != HSSFDataValidation.DATA_TYPE_LIST ) + { + return false; + } + return this._list_explicit_formula ; + } + + /** + * Sets if this object allows empty as a valid value + * @param allowed True if this object should treats empty as valid value , false otherwise + */ + public void setEmptyCellAllowed( boolean allowed ) + { + this._empty_cell_allowed = allowed; + } + + /** + * Retrieve the settings for empty cells allowed + * @return True if this object should treats empty as valid value , false otherwise + */ + public boolean getEmptyCellAllowed( ) + { + return this._empty_cell_allowed ; + } + + /** + * Useful for list validation objects . + * @param surppres True if a list should display the values into a drop down list , false otherwise . + * In other words , if a list should display the arrow sign on its right side + */ + public void setSurppressDropDownArrow( boolean surppres ) + { + this._surpress_dropdown_arrow = surppres; + } + + /** + * Useful only list validation objects . + * This method always returns false if the object isn't a list validation object + * @return True if a list should display the values into a drop down list , false otherwise . + * @see setDataValidationType( int data_type ) + */ + public boolean getSurppressDropDownArrow( ) + { + if ( this._data_type != HSSFDataValidation.DATA_TYPE_LIST ) + { + return false; + } + return this._surpress_dropdown_arrow ; + } + + /** + * Sets the behaviour when a cell which belongs to this object is selected + * @param show True if an prompt box should be displayed , false otherwise + */ + public void setShowPromptBox( boolean show ) + { + this._show_prompt_box = show; + } + + /** + * @param show True if an prompt box should be displayed , false otherwise + */ + public boolean getShowPromptBox( ) + { + if ( (this.getPromptBoxText() == null) && (this.getPromptBoxTitle() == null) ) + { + return false; + } + return this._show_prompt_box ; + } + + /** + * Sets the behaviour when an invalid value is entered + * @param show True if an error box should be displayed , false otherwise + */ + public void setShowErrorBox( boolean show ) + { + this._show_error_box = show; + } + + /** + * @return True if an error box should be displayed , false otherwise + */ + public boolean getShowErrorBox( ) + { + if ( (this.getErrorBoxText() == null) && (this.getErrorBoxTitle() == null) ) + { + return false; + } + return this._show_error_box ; + } + + /** + * Sets the operator involved in the formula whic governs this object + * Example : if you wants that a cell to accept only values between 1 and 5 , which + * mathematically means 1 <= value <= 5 , then the operator should be OPERATOR_BETWEEN + * @param operator A constant for operator + * @see OPERATOR_BETWEEN, OPERATOR_NOT_BETWEEN, OPERATOR_EQUAL, OPERATOR_NOT_EQUAL + * OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN, OPERATOR_GREATER_OR_EQUAL, + * OPERATOR_LESS_OR_EQUAL + */ + public void setOperator( int operator ) + { + this._operator = operator; + } + + /** + * Retrieves the operator used for this object's formula + * @return + * @see OPERATOR_BETWEEN, OPERATOR_NOT_BETWEEN, OPERATOR_EQUAL, OPERATOR_NOT_EQUAL + * OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN, OPERATOR_GREATER_OR_EQUAL, + * OPERATOR_LESS_OR_EQUAL + */ + public int getOperator() + { + return this._operator; + } + + /** + * Sets the title and text for the prompt box . Prompt box is displayed when the user + * selects a cell which belongs to this validation object . In order for a prompt box + * to be displayed you should also use method setShowPromptBox( boolean show ) + * @param title The prompt box's title + * @param text The prompt box's text + * @see setShowPromptBox( boolean show ) + */ + public void createPromptBox( String title, String text ) + { + this._prompt_title = title; + this._prompt_text = text; + this.setShowPromptBox(true); + } + + /** + * Returns the prompt box's title + * @return Prompt box's title or null + */ + public String getPromptBoxTitle( ) + { + return this._prompt_title; + } + + /** + * Returns the prompt box's text + * @return Prompt box's text or null + */ + public String getPromptBoxText( ) + { + return this._prompt_text; + } + + /** + * Sets the title and text for the error box . Error box is displayed when the user + * enters an invalid value int o a cell which belongs to this validation object . + * In order for an error box to be displayed you should also use method + * setShowErrorBox( boolean show ) + * @param title The error box's title + * @param text The error box's text + * @see setShowErrorBox( boolean show ) + */ + public void createErrorBox( String title, String text ) + { + this._error_title = title; + this._error_text = text; + this.setShowErrorBox(true); + } + + /** + * Returns the error box's title + * @return Error box's title or null + */ + public String getErrorBoxTitle( ) + { + return this._error_title; + } + + /** + * Returns the error box's text + * @return Error box's text or null + */ + public String getErrorBoxText( ) + { + return this._error_text; + } + + /** + * Sets the first formula for this object . + * A formula is divided into three parts : first formula , operator and second formula . + * In other words , a formula contains a left oprand , an operator and a right operand. + * This is the general rule . An example is 1<= value <= 5 . In this case , + * the left operand ( or the first formula ) is the number 1 . The operator is + * OPERATOR_BETWEEN and the right operand ( or the second formula ) is 5 . + * @param formula + */ + public void setFirstFormula( String formula ) + { + this._string_first_formula = formula; + } + + /** + * Returns the first formula + * @return + */ + public String getFirstFormula( ) + { + return this._string_first_formula; + } + + /** + * Sets the first formula for this object . + * A formula is divided into three parts : first formula , operator and second formula . + * In other words , a formula contains a left oprand , an operator and a right operand. + * This is the general rule . An example is 1<= value <=5 . In this case , + * the left operand ( or the first formula ) is the number 1 . The operator is + * OPERATOR_BETWEEN and the right operand ( or the second formula ) is 5 . + * But there are cases when a second formula isn't needed : + * You want somethink like : all values less than 5 . In this case , there's only a first + * formula ( in our case 5 ) and the operator OPERATOR_LESS_THAN + * @param formula + */ + public void setSecondFormula( String formula ) + { + this._string_sec_formula = formula; + } + + /** + * Returns the second formula + * @return + */ + public String getSecondFormula( ) + { + return this._string_sec_formula; + } + + public void setFirstRow( short first_row ) + { + this._first_row = first_row; + } + + public void setFirstColumn( short first_column ) + { + this._first_col = first_column; + } + + public void setLastRow( short last_row ) + { + this._last_row = last_row; + } + + public void setLastColumn( short last_column ) + { + this._last_col = last_column; + } + + public short getFirstRow() + { + return this._first_row; + } + + public short getFirstColumn() + { + return this._first_col; + } + + public short getLastRow() + { + return this._last_row; + } + + public short getLastColumn() + { + return this._last_col; + } + +} \ No newline at end of file diff --git a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java index f5bb58a76..4f89af154 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java +++ b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java @@ -19,6 +19,7 @@ package org.apache.poi.poifs.storage; +import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.filesystem.BATManaged; import org.apache.poi.poifs.filesystem.POIFSDocument; import org.apache.poi.poifs.property.RootProperty; @@ -69,6 +70,8 @@ public class SmallBlockTableWriter { _small_blocks.add(blocks[ j ]); } + } else { + doc.setStartBlock(POIFSConstants.END_OF_CHAIN); } } _sbat.simpleCreateBlocks(); diff --git a/src/java/org/apache/poi/util/IOUtils.java b/src/java/org/apache/poi/util/IOUtils.java index 7126b2b9b..42b69c850 100644 --- a/src/java/org/apache/poi/util/IOUtils.java +++ b/src/java/org/apache/poi/util/IOUtils.java @@ -19,6 +19,7 @@ package org.apache.poi.util; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -28,6 +29,25 @@ public class IOUtils { } + /** + * Reads all the data from the input stream, and returns + * the bytes read. + */ + public static byte[] toByteArray(InputStream stream) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + byte[] buffer = new byte[4096]; + int read = 0; + while(read != -1) { + read = stream.read(buffer); + if(read > 0) { + baos.write(buffer, 0, read); + } + } + + return baos.toByteArray(); + } + /** * Helper method, just calls readFully(in, b, 0, b.length) */ diff --git a/src/java/org/apache/poi/util/StringUtil.java b/src/java/org/apache/poi/util/StringUtil.java index 9dd8e4838..673b5246e 100644 --- a/src/java/org/apache/poi/util/StringUtil.java +++ b/src/java/org/apache/poi/util/StringUtil.java @@ -161,7 +161,8 @@ public class StringUtil { final int offset, final int len) { try { - return new String(string, offset, len, "ISO-8859-1"); + int len_to_use = Math.min(len, string.length - offset); + return new String(string, offset, len_to_use, "ISO-8859-1"); } catch (UnsupportedEncodingException e) { throw new InternalError(); /* unreachable */ } diff --git a/src/scratchpad/examples/src/org/apache/poi/hslf/examples/TableDemo.java b/src/scratchpad/examples/src/org/apache/poi/hslf/examples/TableDemo.java new file mode 100755 index 000000000..25ff9ad01 --- /dev/null +++ b/src/scratchpad/examples/src/org/apache/poi/hslf/examples/TableDemo.java @@ -0,0 +1,127 @@ + +/* ==================================================================== + 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.poi.hslf.examples; + +import org.apache.poi.hslf.usermodel.SlideShow; +import org.apache.poi.hslf.usermodel.RichTextRun; +import org.apache.poi.hslf.model.*; + +import java.awt.*; +import java.io.FileOutputStream; + +/** + * Demonstrates how to create tables + * + * @author Yegor Kozlov + */ +public class TableDemo { + + public static void main(String[] args) throws Exception { + + //test data for the first taable + String[][] txt1 = { + {"INPUT FILE", "NUMBER OF RECORDS"}, + {"Item File", "11,559"}, + {"Vendor File", "502"}, + {"Purchase History File - # of PO\u2019s\r(12/01/04 - 05/31/06)", "12,852"}, + {"Purchase History File - # of PO Lines\r(12/01/04 - 05/31/06)", "53,523" }, + {"Total PO History Spend", "$10,172,038"} + }; + + SlideShow ppt = new SlideShow(); + + Slide slide = ppt.createSlide(); + + //six rows, two columns + Table table1 = new Table(6, 2); + for (int i = 0; i < txt1.length; i++) { + for (int j = 0; j < txt1[i].length; j++) { + TableCell cell = table1.getCell(i, j); + cell.setText(txt1[i][j]); + RichTextRun rt = cell.getTextRun().getRichTextRuns()[0]; + rt.setFontName("Arial"); + rt.setFontSize(10); + if(i == 0){ + cell.getFill().setForegroundColor(new Color(227, 227, 227)); + } else { + rt.setBold(true); + } + cell.setVerticalAlignment(TextBox.AnchorMiddle); + cell.setHorizontalAlignment(TextBox.AlignCenter); + } + } + + Line border1 = table1.createBorder(); + border1.setLineColor(Color.black); + border1.setLineWidth(1.0); + table1.setAllBorders(border1); + + table1.setColumnWidth(0, 300); + table1.setColumnWidth(1, 150); + + slide.addShape(table1); + int pgWidth = ppt.getPageSize().width; + table1.moveTo((pgWidth - table1.getAnchor().width)/2, 100); + + //test data for the second taable + String[][] txt2 = { + {"Data Source"}, + {"CAS Internal Metrics - Item Master Summary\r" + + "CAS Internal Metrics - Vendor Summary\r" + + "CAS Internal Metrics - PO History Summary"} + }; + + //two rows, one column + Table table2 = new Table(2, 1); + for (int i = 0; i < txt2.length; i++) { + for (int j = 0; j < txt2[i].length; j++) { + TableCell cell = table2.getCell(i, j); + cell.setText(txt2[i][j]); + RichTextRun rt = cell.getTextRun().getRichTextRuns()[0]; + rt.setFontSize(10); + rt.setFontName("Arial"); + if(i == 0){ + cell.getFill().setForegroundColor(new Color(0, 51, 102)); + rt.setFontColor(Color.white); + rt.setBold(true); + rt.setFontSize(14); + cell.setHorizontalAlignment(TextBox.AlignCenter); + } else { + rt.setBullet(true); + rt.setFontSize(12); + cell.setHorizontalAlignment(TextBox.AlignLeft); + } + cell.setVerticalAlignment(TextBox.AnchorMiddle); + } + } + table2.setColumnWidth(0, 300); + table2.setRowHeight(0, 30); + table2.setRowHeight(1, 70); + + Line border2 = table2.createBorder(); + table2.setOutsideBorders(border2); + + slide.addShape(table2); + table2.moveTo(200, 400); + + FileOutputStream out = new FileOutputStream("hslf-table.ppt"); + ppt.write(out); + out.close(); + + } +} diff --git a/src/scratchpad/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java b/src/scratchpad/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java index 5f7392739..1c8d994bf 100644 --- a/src/scratchpad/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java +++ b/src/scratchpad/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java @@ -283,7 +283,7 @@ public class XLS2CSVmra implements HSSFListener { format = format.replaceAll("\\\\-","-"); // Format as a date - Date d = HSSFDateUtil.getJavaDate(value); + Date d = HSSFDateUtil.getJavaDate(value, false); DateFormat df = new SimpleDateFormat(format); return df.format(d); } else { diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Fill.java b/src/scratchpad/src/org/apache/poi/hslf/model/Fill.java index f0d85400b..7eae4edc4 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Fill.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Fill.java @@ -150,10 +150,12 @@ public class Fill { EscherOptRecord opt = (EscherOptRecord)Shape.getEscherChild(shape.getSpContainer(), EscherOptRecord.RECORD_ID); if (color == null) { Shape.setEscherProperty(opt, EscherProperties.FILL__FILLCOLOR, -1); + Shape.setEscherProperty(opt, EscherProperties.FILL__NOFILLHITTEST, 0x150010); } else { int rgb = new Color(color.getBlue(), color.getGreen(), color.getRed(), 0).getRGB(); Shape.setEscherProperty(opt, EscherProperties.FILL__FILLCOLOR, rgb); + Shape.setEscherProperty(opt, EscherProperties.FILL__NOFILLHITTEST, 0x150011); } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java index b1761b2d9..d8ddc7d2f 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java @@ -153,7 +153,7 @@ public abstract class Sheet { */ protected static void findTextRuns(Record[] records, Vector found) { // Look for a TextHeaderAtom - for (int i = 0; i < (records.length - 1); i++) { + for (int i = 0, slwtIndex=0; i < (records.length - 1); i++) { if (records[i] instanceof TextHeaderAtom) { TextRun trun = null; TextHeaderAtom tha = (TextHeaderAtom) records[i]; @@ -179,7 +179,6 @@ public abstract class Sheet { // TextSpecInfoAtom - Safe to ignore } else { System.err.println("Found a TextHeaderAtom not followed by a TextBytesAtom or TextCharsAtom: Followed by " + records[i + 1].getRecordType()); - continue; } if (trun != null) { @@ -191,12 +190,14 @@ public abstract class Sheet { Record[] recs = new Record[lst.size()]; lst.toArray(recs); trun._records = recs; + trun.setIndex(slwtIndex); found.add(trun); i++; } else { // Not a valid one, so skip on to next and look again } + slwtIndex++; } } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java b/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java index 2f634ccd1..107491600 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java @@ -124,8 +124,10 @@ public class SimpleShape extends Shape { int rgb = p1.getPropertyValue(); if (rgb >= 0x8000000) { int idx = rgb % 0x8000000; - ColorSchemeAtom ca = getSheet().getColorScheme(); - if(idx >= 0 && idx <= 7) rgb = ca.getColor(idx); + if(getSheet() != null) { + ColorSchemeAtom ca = getSheet().getColorScheme(); + if(idx >= 0 && idx <= 7) rgb = ca.getColor(idx); + } } Color tmp = new Color(rgb, true); clr = new Color(tmp.getBlue(), tmp.getGreen(), tmp.getRed()); @@ -192,8 +194,10 @@ public class SimpleShape extends Shape { int rgb = p1.getPropertyValue(); if (rgb >= 0x8000000) { int idx = rgb % 0x8000000; - ColorSchemeAtom ca = getSheet().getColorScheme(); - rgb = ca.getColor(idx); + if(getSheet() != null) { + ColorSchemeAtom ca = getSheet().getColorScheme(); + rgb = ca.getColor(idx); + } } Color tmp = new Color(rgb, true); clr = new Color(tmp.getBlue(), tmp.getGreen(), tmp.getRed()); diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Table.java b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java new file mode 100755 index 000000000..a9f21b54f --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java @@ -0,0 +1,291 @@ + +/* ==================================================================== + 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.poi.hslf.model; + +import org.apache.poi.ddf.*; +import org.apache.poi.util.LittleEndian; + +import java.util.ArrayList; +import java.util.List; +import java.util.Iterator; +import java.awt.*; + +/** + * Represents a table in a PowerPoint presentation + * + * @author Yegor Kozlov + */ +public class Table extends ShapeGroup { + + protected static final int BORDER_TOP = 1; + protected static final int BORDER_RIGHT = 2; + protected static final int BORDER_BOTTOM = 3; + protected static final int BORDER_LEFT = 4; + + protected static final int BORDERS_ALL = 5; + protected static final int BORDERS_OUTSIDE = 6; + protected static final int BORDERS_INSIDE = 7; + protected static final int BORDERS_NONE = 8; + + + protected TableCell[][] cells; + + /** + * Create a new Table of the given number of rows and columns + * + * @param numrows the number of rows + * @param numcols the number of columns + */ + public Table(int numrows, int numcols) { + super(); + + int x=0, y=0, tblWidth=0, tblHeight=0; + cells = new TableCell[numrows][numcols]; + for (int i = 0; i < cells.length; i++) { + x = 0; + for (int j = 0; j < cells[i].length; j++) { + cells[i][j] = new TableCell(this); + Rectangle anchor = new Rectangle(x, y, TableCell.DEFAULT_WIDTH, TableCell.DEFAULT_HEIGHT); + cells[i][j].setAnchor(anchor); + x += TableCell.DEFAULT_WIDTH; + } + y += TableCell.DEFAULT_HEIGHT; + } + tblWidth = x; + tblHeight = y; + setAnchor(new Rectangle(0, 0, tblWidth, tblHeight)); + + EscherContainerRecord spCont = (EscherContainerRecord) getSpContainer().getChild(0); + List lst = spCont.getChildRecords(); + EscherOptRecord opt = new EscherOptRecord(); + opt.setRecordId((short)0xF122); + opt.addEscherProperty(new EscherSimpleProperty((short)0x39F, 1)); + EscherArrayProperty p = new EscherArrayProperty((short)0x43A0, false, null); + p.setSizeOfElements(0x0004); + p.setNumberOfElementsInArray(numrows); + p.setNumberOfElementsInMemory(numrows); + opt.addEscherProperty(p); + lst.add(lst.size()-1, opt); + + } + + /** + * Create a Table object and initilize it from the supplied Record container. + * + * @param escherRecord EscherSpContainer container which holds information about this shape + * @param parent the parent of the shape + */ + protected Table(EscherContainerRecord escherRecord, Shape parent) { + super(escherRecord, parent); + } + + /** + * Gets a cell + * + * @param row the row index (0-based) + * @param col the column index (0-based) + * @return the cell + */ + public TableCell getCell(int row, int col) { + return cells[row][col]; + } + + public int getNumberOfColumns() { + return cells[0].length; + } + public int getNumberOfRows() { + return cells.length; + } + + protected void afterInsert(Sheet sh){ + EscherContainerRecord spCont = (EscherContainerRecord) getSpContainer().getChild(0); + List lst = spCont.getChildRecords(); + EscherOptRecord opt = (EscherOptRecord)lst.get(lst.size()-2); + EscherArrayProperty p = (EscherArrayProperty)opt.getEscherProperty(1); + for (int i = 0; i < cells.length; i++) { + TableCell cell = cells[i][0]; + int rowHeight = cell.getAnchor().height*MASTER_DPI/POINT_DPI; + byte[] val = new byte[4]; + LittleEndian.putInt(val, rowHeight); + p.setElement(i, val); + for (int j = 0; j < cells[i].length; j++) { + TableCell c = cells[i][j]; + addShape(c); + + Line bt = c.getBorderTop(); + if(bt != null) addShape(bt); + + Line br = c.getBorderRight(); + if(br != null) addShape(br); + + Line bb = c.getBorderBottom(); + if(bb != null) addShape(bb); + + Line bl = c.getBorderLeft(); + if(bl != null) addShape(bl); + + } + } + + } + + /** + * Sets the row height. + * + * @param row the row index (0-based) + * @param height the height to set (in pixels) + */ + public void setRowHeight(int row, int height){ + int currentHeight = cells[row][0].getAnchor().height; + int dy = height - currentHeight; + + for (int i = row; i < cells.length; i++) { + for (int j = 0; j < cells[i].length; j++) { + Rectangle anchor = cells[i][j].getAnchor(); + if(i == row) anchor.height = height; + else anchor.y += dy; + cells[i][j].setAnchor(anchor); + } + } + Rectangle tblanchor = getAnchor(); + tblanchor.height += dy; + setAnchor(tblanchor); + + } + + /** + * Sets the column width. + * + * @param col the column index (0-based) + * @param width the width to set (in pixels) + */ + public void setColumnWidth(int col, int width){ + int currentWidth = cells[0][col].getAnchor().width; + int dx = width - currentWidth; + for (int i = 0; i < cells.length; i++) { + Rectangle anchor = cells[i][col].getAnchor(); + anchor.width = width; + cells[i][col].setAnchor(anchor); + + if(col < cells[i].length - 1) for (int j = col+1; j < cells[i].length; j++) { + anchor = cells[i][j].getAnchor(); + anchor.x += dx; + cells[i][j].setAnchor(anchor); + } + } + Rectangle tblanchor = getAnchor(); + tblanchor.width += dx; + setAnchor(tblanchor); + } + + /** + * Format the table and apply the specified Line to all cell boundaries, + * both outside and inside + * + * @param line the border line + */ + public void setAllBorders(Line line){ + for (int i = 0; i < cells.length; i++) { + for (int j = 0; j < cells[i].length; j++) { + TableCell cell = cells[i][j]; + cell.setBorderTop(cloneBorder(line)); + cell.setBorderLeft(cloneBorder(line)); + if(j == cells[i].length - 1) cell.setBorderRight(cloneBorder(line)); + if(i == cells.length - 1) cell.setBorderBottom(cloneBorder(line)); + } + } + } + + /** + * Format the outside border using the specified Line object + * + * @param line the border line + */ + public void setOutsideBorders(Line line){ + for (int i = 0; i < cells.length; i++) { + for (int j = 0; j < cells[i].length; j++) { + TableCell cell = cells[i][j]; + + if(j == 0) cell.setBorderLeft(cloneBorder(line)); + if(j == cells[i].length - 1) cell.setBorderRight(cloneBorder(line)); + else { + cell.setBorderLeft(null); + cell.setBorderLeft(null); + } + + if(i == 0) cell.setBorderTop(cloneBorder(line)); + else if(i == cells.length - 1) cell.setBorderBottom(cloneBorder(line)); + else { + cell.setBorderTop(null); + cell.setBorderBottom(null); + } + } + } + } + + /** + * Format the inside border using the specified Line object + * + * @param line the border line + */ + public void setInsideBorders(Line line){ + for (int i = 0; i < cells.length; i++) { + for (int j = 0; j < cells[i].length; j++) { + TableCell cell = cells[i][j]; + + if(j != cells[i].length - 1) + cell.setBorderRight(cloneBorder(line)); + else { + cell.setBorderLeft(null); + cell.setBorderLeft(null); + } + if(i != cells.length - 1) cell.setBorderBottom(cloneBorder(line)); + else { + cell.setBorderTop(null); + cell.setBorderBottom(null); + } + } + } + } + + private Line cloneBorder(Line line){ + Line border = createBorder(); + border.setLineWidth(line.getLineWidth()); + border.setLineStyle(line.getLineStyle()); + border.setLineDashing(line.getLineDashing()); + border.setLineColor(line.getLineColor()); + return border; + } + + /** + * Create a border to format this table + * + * @return the created border + */ + public Line createBorder(){ + Line line = new Line(this); + + EscherOptRecord opt = (EscherOptRecord)getEscherChild(line.getSpContainer(), EscherOptRecord.RECORD_ID); + setEscherProperty(opt, EscherProperties.GEOMETRY__SHAPEPATH, -1); + setEscherProperty(opt, EscherProperties.GEOMETRY__FILLOK, -1); + setEscherProperty(opt, EscherProperties.SHADOWSTYLE__SHADOWOBSURED, 0x20000); + setEscherProperty(opt, EscherProperties.THREED__LIGHTFACE, 0x80000); + + return line; + } +} diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java b/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java new file mode 100755 index 000000000..bb93e06b7 --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java @@ -0,0 +1,155 @@ + +/* ==================================================================== + 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.poi.hslf.model; + +import org.apache.poi.ddf.*; +import org.apache.poi.hslf.record.EscherTextboxWrapper; +import org.apache.poi.hslf.record.TextHeaderAtom; +import org.apache.poi.hslf.usermodel.RichTextRun; + +import java.awt.*; + +/** + * Represents a cell in a ppt table + * + * @author Yegor Kozlov + */ +public class TableCell extends TextBox { + protected static final int DEFAULT_WIDTH = 100; + protected static final int DEFAULT_HEIGHT = 40; + + private Line borderLeft; + private Line borderRight; + private Line borderTop; + private Line borderBottom; + + /** + * Create a TableCell object and initialize it from the supplied Record container. + * + * @param escherRecord EscherSpContainer container which holds information about this shape + * @param parent the parent of the shape + */ + protected TableCell(EscherContainerRecord escherRecord, Shape parent){ + super(escherRecord, parent); + } + + /** + * Create a new TableCell. This constructor is used when a new shape is created. + * + * @param parent the parent of this Shape. For example, if this text box is a cell + * in a table then the parent is Table. + */ + public TableCell(Shape parent){ + super(parent); + + setShapeType(ShapeTypes.Rectangle); + _txtrun.setRunType(TextHeaderAtom.HALF_BODY_TYPE); + _txtrun.getRichTextRuns()[0].setFlag(false, 0, false); + } + + protected EscherContainerRecord createSpContainer(boolean isChild){ + EscherContainerRecord spContainer = super.createSpContainer(isChild); + EscherOptRecord opt = (EscherOptRecord)getEscherChild(spContainer, EscherOptRecord.RECORD_ID); + setEscherProperty(opt, EscherProperties.TEXT__TEXTID, 0); + setEscherProperty(opt, EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x20000); + setEscherProperty(opt, EscherProperties.FILL__NOFILLHITTEST, 0x150001); + setEscherProperty(opt, EscherProperties.SHADOWSTYLE__SHADOWOBSURED, 0x20000); + setEscherProperty(opt, EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 0x40000); + + return spContainer; + } + + protected void anchorBorder(int type, Line line){ + Rectangle cellAnchor = getAnchor(); + Rectangle lineAnchor = new Rectangle(); + switch(type){ + case Table.BORDER_TOP: + lineAnchor.x = cellAnchor.x; + lineAnchor.y = cellAnchor.y; + lineAnchor.width = cellAnchor.width; + lineAnchor.height = 0; + break; + case Table.BORDER_RIGHT: + lineAnchor.x = cellAnchor.x + cellAnchor.width; + lineAnchor.y = cellAnchor.y; + lineAnchor.width = 0; + lineAnchor.height = cellAnchor.height; + break; + case Table.BORDER_BOTTOM: + lineAnchor.x = cellAnchor.x; + lineAnchor.y = cellAnchor.y + cellAnchor.height; + lineAnchor.width = cellAnchor.width; + lineAnchor.height = 0; + break; + case Table.BORDER_LEFT: + lineAnchor.x = cellAnchor.x; + lineAnchor.y = cellAnchor.y; + lineAnchor.width = 0; + lineAnchor.height = cellAnchor.height; + break; + default: + throw new IllegalArgumentException("Unknown border type: " + type); + } + line.setAnchor(lineAnchor); + } + + public Line getBorderLeft() { + return borderLeft; + } + + public void setBorderLeft(Line line) { + if(line != null) anchorBorder(Table.BORDER_LEFT, line); + this.borderLeft = line; + } + + public Line getBorderRight() { + return borderRight; + } + + public void setBorderRight(Line line) { + if(line != null) anchorBorder(Table.BORDER_RIGHT, line); + this.borderRight = line; + } + + public Line getBorderTop() { + return borderTop; + } + + public void setBorderTop(Line line) { + if(line != null) anchorBorder(Table.BORDER_TOP, line); + this.borderTop = line; + } + + public Line getBorderBottom() { + return borderBottom; + } + + public void setBorderBottom(Line line) { + if(line != null) anchorBorder(Table.BORDER_BOTTOM, line); + this.borderBottom = line; + } + + public void setAnchor(Rectangle anchor){ + super.setAnchor(anchor); + + if(borderTop != null) anchorBorder(Table.BORDER_TOP, borderTop); + if(borderRight != null) anchorBorder(Table.BORDER_RIGHT, borderRight); + if(borderBottom != null) anchorBorder(Table.BORDER_BOTTOM, borderBottom); + if(borderLeft != null) anchorBorder(Table.BORDER_LEFT, borderLeft); + } +} diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextBox.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextBox.java index 2d5c866f7..1f9a489a7 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextBox.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextBox.java @@ -196,7 +196,7 @@ public class TextBox extends SimpleShape { } catch (IOException e){ throw new HSLFException(e); } - if(getAnchor().equals(new java.awt.Rectangle())) resizeToFitText(); + if(getAnchor().equals(new java.awt.Rectangle()) && !"".equals(getText())) resizeToFitText(); } /** @@ -264,6 +264,14 @@ public class TextBox extends SimpleShape { EscherOptRecord opt = (EscherOptRecord)getEscherChild(_escherContainer, EscherOptRecord.RECORD_ID); setEscherProperty(opt, EscherProperties.TEXT__ANCHORTEXT, align); } + + public void setHorizontalAlignment(int align){ + _txtrun.getRichTextRuns()[0].setAlignment(align); + } + public int getHorizontalAlignment(){ + return _txtrun.getRichTextRuns()[0].getAlignment(); + } + /** * Returns the distance (in points) between the bottom of the text frame * and the bottom of the inscribed rectangle of the shape that contains the text. @@ -466,7 +474,11 @@ public class TextBox extends SimpleShape { TextRun[] runs = sheet.getTextRuns(); if (ota != null) { int idx = ota.getTextIndex(); - if(idx < runs.length) _txtrun = runs[idx]; + for (int i = 0; i < runs.length; i++) { + if(runs[i].getIndex() == idx){ + _txtrun = runs[i]; + } + } if(_txtrun == null) { logger.log(POILogger.WARN, "text run not found for OutlineTextRefAtom.TextIndex=" + idx); } @@ -478,9 +490,6 @@ public class TextBox extends SimpleShape { break; } } - if(_txtrun == null) { - logger.log(POILogger.WARN, "text run not found for shapeId=" + shapeId); - } } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java index 4999df758..ca6e02d69 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java @@ -50,6 +50,7 @@ public class TextRun private SlideShow slideShow; private Sheet sheet; private int shapeId; + private int slwtIndex; //position in the owning SlideListWithText /** * all text run records that follow TextHeaderAtom. * (there can be misc InteractiveInfo, TxInteractiveInfo and other records) @@ -537,6 +538,20 @@ public class TextRun shapeId = id; } + /** + * @return 0-based index of the text run in the SLWT container + */ + protected int getIndex(){ + return slwtIndex; + } + + /** + * @param id 0-based index of the text run in the SLWT container + */ + protected void setIndex(int id){ + slwtIndex = id; + } + /** * Returns the array of all hyperlinks in this text run * diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java index 0ee01b9a9..d16bf7bc0 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java +++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java @@ -198,7 +198,7 @@ public class RichTextRun setFlag(true, index, value); } - private void setFlag(boolean isCharacter, int index, boolean value) { + public void setFlag(boolean isCharacter, int index, boolean value) { TextPropCollection props; String propname; if (isCharacter){ @@ -282,7 +282,7 @@ public class RichTextRun * @param propName The name of the Character TextProp * @param val The value to set for the TextProp */ - private void setParaTextPropVal(String propName, int val) { + public void setParaTextPropVal(String propName, int val) { // Ensure we have the StyleTextProp atom we're going to need if(paragraphStyle == null) { parentRun.ensureStyleAtomPresent(); @@ -297,7 +297,7 @@ public class RichTextRun * @param propName The name of the Paragraph TextProp * @param val The value to set for the TextProp */ - private void setCharTextPropVal(String propName, int val) { + public void setCharTextPropVal(String propName, int val) { // Ensure we have the StyleTextProp atom we're going to need if(characterStyle == null) { parentRun.ensureStyleAtomPresent(); diff --git a/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java b/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java index ed215f638..eb915160b 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java @@ -48,15 +48,24 @@ public class MAPIMessage { /** - * Constructor for reading MSG Files. + * Constructor for reading MSG Files from the file system. * @param filename * @throws IOException */ public MAPIMessage(String filename) throws IOException { - InputStream in = new FileInputStream(new File(filename)); + this(new FileInputStream(new File(filename))); + } + + /** + * Constructor for reading MSG Files from an input stream. + * @param in + * @throws IOException + */ + public MAPIMessage(InputStream in) throws IOException { this.fs = new POIFSFileSystem(in); chunkParser = new POIFSChunkParser(this.fs); } + /** * Gets a string value based on the passed chunk. @@ -101,6 +110,16 @@ public class MAPIMessage { return getStringFromChunk(Chunks.getInstance().displayToChunk); } + /** + * Gets the display value of the "FROM" line of the outlook message + * This is not the actual address that was sent from but the formated display of the user name. + * @return + * @throws ChunkNotFoundException + */ + public String getDisplayFrom() throws ChunkNotFoundException { + return getStringFromChunk(Chunks.getInstance().displayFromChunk); + } + /** * Gets the display value of the "TO" line of the outlook message * This is not the actual list of addresses/values that will be sent to if you click Reply in the email. diff --git a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Chunks.java b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Chunks.java index 309efeac9..6a3936d96 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Chunks.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Chunks.java @@ -29,6 +29,7 @@ public class Chunks { public StringChunk textBodyChunk = new StringChunk(0x1000); //BODY Chunk, for plain/text messages public StringChunk subjectChunk = new StringChunk(0x0037); //Subject link chunk, in plain/text public StringChunk displayToChunk = new StringChunk(0x0E04); //Value that is in the TO field (not actually the addresses as they are stored in recip directory nodes + public StringChunk displayFromChunk = new StringChunk(0x0C1A); //Value that is in the FROM field public StringChunk displayCCChunk = new StringChunk(0x0E03); //value that shows in the CC field public StringChunk displayBCCChunk = new StringChunk(0x0E02); //Value that shows in the BCC field public StringChunk conversationTopic = new StringChunk(0x0070); //Sort of like the subject line, but without the RE: and FWD: parts. diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Date.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Date.java index 34dcc7cda..6861a0252 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Date.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Date.java @@ -70,7 +70,7 @@ public class Date extends NumericFunction { c.set(year, month, day, 0, 0, 0); c.set(Calendar.MILLISECOND, 0); - return new NumberEval(HSSFDateUtil.getExcelDate(c.getTime())); + return new NumberEval(HSSFDateUtil.getExcelDate(c.getTime(), false)); // XXX fix 1900/1904 problem } } diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java index 283633442..0ae569476 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Day.java @@ -46,7 +46,7 @@ srcCellRow, srcCellCol); if (ve instanceof NumericValueEval) { NumericValueEval ne = (NumericValueEval) ve; if (HSSFDateUtil.isValidExcelDate(ne.getNumberValue())) { - java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue()); + java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue(), false); // XXX fix 1900/1904 problem java.util.Calendar c = java.util.Calendar.getInstance(); c.setTime(d); retval = new NumberEval(c.get(java.util.Calendar.DAY_OF_MONTH)); diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Mid.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Mid.java index 30593142e..d6c4399ae 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Mid.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Mid.java @@ -20,6 +20,80 @@ */ package org.apache.poi.hssf.record.formula.functions; -public class Mid extends NotImplementedFunction { +import org.apache.poi.hssf.record.formula.eval.BlankEval; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.NumericValueEval; +import org.apache.poi.hssf.record.formula.eval.StringEval; +import org.apache.poi.hssf.record.formula.eval.StringValueEval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; + +/** + * An implementation of the MID function: + * Returns a specific number of characters from a text string, + * starting at the position you specify, based on the number + * of characters you specify. + * @author Manda Wilson < wilson at c bio dot msk cc dot org > + */ +public class Mid extends TextFunction { + /** + * Returns a specific number of characters from a text string, + * starting at the position you specify, based on the number + * of characters you specify. + * + * @see org.apache.poi.hssf.record.formula.eval.Eval + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { + Eval retval = null; + String str = null; + int startNum = 0; + int numChars = 0; + + switch (operands.length) { + default: + retval = ErrorEval.VALUE_INVALID; + case 3: + // first operand is text string containing characters to extract + // second operand is position of first character to extract + // third operand is the number of characters to return + ValueEval firstveval = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol); + ValueEval secondveval = singleOperandEvaluate(operands[1], srcCellRow, srcCellCol); + ValueEval thirdveval = singleOperandEvaluate(operands[2], srcCellRow, srcCellCol); + if (firstveval instanceof StringValueEval + && secondveval instanceof NumericValueEval + && thirdveval instanceof NumericValueEval) { + + StringValueEval strEval = (StringValueEval) firstveval; + str = strEval.getStringValue(); + + NumericValueEval startNumEval = (NumericValueEval) secondveval; + // NOTE: it is safe to cast to int here + // because in Excel =MID("test", 1, 1.7) returns t + // so 1.7 must be truncated to 1 + // and =MID("test", 1.9, 2) returns te + // so 1.9 must be truncated to 1 + startNum = (int) startNumEval.getNumberValue(); + + NumericValueEval numCharsEval = (NumericValueEval) thirdveval; + numChars = (int) numCharsEval.getNumberValue(); + + } else { + retval = ErrorEval.VALUE_INVALID; + } + } + + if (retval == null) { + if (startNum < 1 || numChars < 0) { + retval = ErrorEval.VALUE_INVALID; + } else if (startNum > str.length() || numChars == 0) { + retval = BlankEval.INSTANCE; + } else if (startNum + numChars > str.length()) { + retval = new StringEval(str.substring(startNum - 1)); + } else { + retval = new StringEval(str.substring(startNum - 1, numChars)); + } + } + return retval; + } } diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Month.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Month.java index 065c565d1..d5178b22d 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Month.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Month.java @@ -50,7 +50,7 @@ public class Month extends NumericFunction { if (ve instanceof NumericValueEval) { NumericValueEval ne = (NumericValueEval) ve; if (HSSFDateUtil.isValidExcelDate(ne.getNumberValue())) { - java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue()); + java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue(), false); // XXX fix 1900/1904 problem retval = new NumberEval(d.getMonth()+1); } else { retval = ErrorEval.NUM_ERROR; diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Replace.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Replace.java index 3ba7a2b2c..95413f082 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Replace.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Replace.java @@ -20,6 +20,93 @@ */ package org.apache.poi.hssf.record.formula.functions; -public class Replace extends NotImplementedFunction { +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.NumericValueEval; +import org.apache.poi.hssf.record.formula.eval.StringEval; +import org.apache.poi.hssf.record.formula.eval.StringValueEval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; + +/** + * An implementation of the REPLACE function: + * Replaces part of a text string based on the number of characters + * you specify, with another text string. + * @author Manda Wilson < wilson at c bio dot msk cc dot org > + */ +public class Replace extends TextFunction { + + /** + * Replaces part of a text string based on the number of characters + * you specify, with another text string. + * + * @see org.apache.poi.hssf.record.formula.eval.Eval + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { + Eval retval = null; + String oldStr = null; + String newStr = null; + int startNum = 0; + int numChars = 0; + + switch (operands.length) { + default: + retval = ErrorEval.VALUE_INVALID; + case 4: + // first operand is text string containing characters to replace + // second operand is position of first character to replace + // third operand is the number of characters in the old string + // you want to replace with new string + // fourth operand is the new string + ValueEval firstveval = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol); + ValueEval secondveval = singleOperandEvaluate(operands[1], srcCellRow, srcCellCol); + ValueEval thirdveval = singleOperandEvaluate(operands[2], srcCellRow, srcCellCol); + ValueEval fourthveval = singleOperandEvaluate(operands[3], srcCellRow, srcCellCol); + if (firstveval instanceof StringValueEval + && secondveval instanceof NumericValueEval + && thirdveval instanceof NumericValueEval + && fourthveval instanceof StringValueEval) { + + StringValueEval oldStrEval = (StringValueEval) firstveval; + oldStr = oldStrEval.getStringValue(); + + NumericValueEval startNumEval = (NumericValueEval) secondveval; + // NOTE: it is safe to cast to int here + // because in Excel =REPLACE("task", 2.7, 3, "est") + // returns test + // so 2.7 must be truncated to 2 + // and =REPLACE("task", 1, 1.9, "") returns ask + // so 1.9 must be truncated to 1 + startNum = (int) startNumEval.getNumberValue(); + + NumericValueEval numCharsEval = (NumericValueEval) thirdveval; + numChars = (int) numCharsEval.getNumberValue(); + + StringValueEval newStrEval = (StringValueEval) fourthveval; + newStr = newStrEval.getStringValue(); + } else { + retval = ErrorEval.VALUE_INVALID; + } + } + + if (retval == null) { + if (startNum < 1 || numChars < 0) { + retval = ErrorEval.VALUE_INVALID; + } else { + StringBuffer strBuff = new StringBuffer(oldStr); + // remove any characters that should be replaced + if (startNum <= oldStr.length() && numChars != 0) { + strBuff.delete(startNum - 1, startNum - 1 + numChars); + } + // now insert (or append) newStr + if (startNum > strBuff.length()) { + strBuff.append(newStr); + } else { + strBuff.insert(startNum - 1, newStr); + } + retval = new StringEval(strBuff.toString()); + } + } + return retval; + } } diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Substitute.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Substitute.java index 8a975c569..9d2e9ce36 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Substitute.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Substitute.java @@ -20,6 +20,98 @@ */ package org.apache.poi.hssf.record.formula.functions; -public class Substitute extends NotImplementedFunction { +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.NumericValueEval; +import org.apache.poi.hssf.record.formula.eval.StringEval; +import org.apache.poi.hssf.record.formula.eval.StringValueEval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; +/** + * An implementation of the SUBSTITUTE function: + * Substitutes text in a text string with new text, some number of times. + * @author Manda Wilson < wilson at c bio dot msk cc dot org > + */ +public class Substitute extends TextFunction { + private static final int REPLACE_ALL = -1; + + /** + *Substitutes text in a text string with new text, some number of times. + * + * @see org.apache.poi.hssf.record.formula.eval.Eval + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { + Eval retval = null; + String oldStr = null; + String searchStr = null; + String newStr = null; + int numToReplace = REPLACE_ALL; + + switch (operands.length) { + default: + retval = ErrorEval.VALUE_INVALID; + case 4: + ValueEval fourthveval = singleOperandEvaluate(operands[3], srcCellRow, srcCellCol); + if (fourthveval instanceof NumericValueEval) { + NumericValueEval numToReplaceEval = (NumericValueEval) fourthveval; + // NOTE: it is safe to cast to int here + // because in Excel =SUBSTITUTE("teststr","t","T",1.9) + // returns Teststr + // so 1.9 must be truncated to 1 + numToReplace = (int) numToReplaceEval.getNumberValue(); + } else { + retval = ErrorEval.VALUE_INVALID; + } + case 3: + // first operand is text string containing characters to replace + // second operand is text to find + // third operand is replacement text + ValueEval firstveval = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol); + ValueEval secondveval = singleOperandEvaluate(operands[1], srcCellRow, srcCellCol); + ValueEval thirdveval = singleOperandEvaluate(operands[2], srcCellRow, srcCellCol); + if (firstveval instanceof StringValueEval + && secondveval instanceof StringValueEval + && thirdveval instanceof StringValueEval) { + + StringValueEval oldStrEval = (StringValueEval) firstveval; + oldStr = oldStrEval.getStringValue(); + + StringValueEval searchStrEval = (StringValueEval) secondveval; + searchStr = searchStrEval.getStringValue(); + + StringValueEval newStrEval = (StringValueEval) thirdveval; + newStr = newStrEval.getStringValue(); + } else { + retval = ErrorEval.VALUE_INVALID; + } + } + + if (retval == null) { + if (numToReplace != REPLACE_ALL && numToReplace < 1) { + retval = ErrorEval.VALUE_INVALID; + } else if (searchStr.length() == 0) { + retval = new StringEval(oldStr); + } else { + StringBuffer strBuff = new StringBuffer(); + int startIndex = 0; + int nextMatch = -1; + for (int leftToReplace = numToReplace; + (leftToReplace > 0 || numToReplace == REPLACE_ALL) + && (nextMatch = oldStr.indexOf(searchStr, startIndex)) != -1; + leftToReplace--) { + // store everything from end of last match to start of this match + strBuff.append(oldStr.substring(startIndex, nextMatch)); + strBuff.append(newStr); + startIndex = nextMatch + searchStr.length(); + } + // store everything from end of last match to end of string + if (startIndex < oldStr.length()) { + strBuff.append(oldStr.substring(startIndex)); + } + retval = new StringEval(strBuff.toString()); + } + } + return retval; + } + } diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java index 69b3ce6f5..5e9d91c7c 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java @@ -14,12 +14,62 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* - * Created on May 15, 2005 - * - */ package org.apache.poi.hssf.record.formula.functions; -public class Trim extends NotImplementedFunction { +import org.apache.poi.hssf.record.formula.eval.BlankEval; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.NumberEval; +import org.apache.poi.hssf.record.formula.eval.StringEval; +import org.apache.poi.hssf.record.formula.eval.StringValueEval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; +/** + * An implementation of the TRIM function: + * Removes leading and trailing spaces from value if evaluated operand + * value is string. + * @author Manda Wilson < wilson at c bio dot msk cc dot org > + */ +public class Trim extends TextFunction { + + /** + * Removes leading and trailing spaces from value if evaluated + * operand value is string. + * Returns StringEval only if evaluated operand is of type string + * (and is not blank or null) or number. If evaluated operand is + * of type string and is blank or null, or if evaluated operand is + * of type blank, returns BlankEval. Otherwise returns ErrorEval. + * + * @see org.apache.poi.hssf.record.formula.eval.Eval + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { + Eval retval = ErrorEval.VALUE_INVALID; + String str = null; + + switch (operands.length) { + default: + break; + case 1: + ValueEval veval = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol); + if (veval instanceof StringValueEval) { + StringValueEval sve = (StringValueEval) veval; + str = sve.getStringValue(); + if (str == null || str.trim().equals("")) { + return BlankEval.INSTANCE; + } + } + else if (veval instanceof NumberEval) { + NumberEval neval = (NumberEval) veval; + str = neval.getStringValue(); + } + else if (veval instanceof BlankEval) { + return BlankEval.INSTANCE; + } + } + + if (str != null) { + retval = new StringEval(str.trim()); + } + return retval; + } } diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Year.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Year.java index 76ea617cc..b461a0966 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Year.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Year.java @@ -51,7 +51,7 @@ public class Year extends NumericFunction { if (ve instanceof NumericValueEval) { NumericValueEval ne = (NumericValueEval) ve; if (HSSFDateUtil.isValidExcelDate(ne.getNumberValue())) { - java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue()); + java.util.Date d = HSSFDateUtil.getJavaDate(ne.getNumberValue(), false); // XXX fix 1900/1904 problem retval = new NumberEval(d.getYear()+1900); } else { retval = ErrorEval.NUM_ERROR; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java b/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java index cec20c91e..4196566d9 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java @@ -19,6 +19,8 @@ package org.apache.poi.hwpf.model; import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; import org.apache.poi.hwpf.model.io.*; @@ -37,6 +39,7 @@ public class ListTables { private static final int LIST_DATA_SIZE = 28; private static final int LIST_FORMAT_OVERRIDE_SIZE = 16; + private static POILogger log = POILogFactory.getLogger(ListTables.class); HashMap _listMap = new HashMap(); ArrayList _overrideList = new ArrayList(); @@ -189,8 +192,13 @@ public class ListTables public ListLevel getLevel(int listID, int level) { ListData lst = (ListData)_listMap.get(new Integer(listID)); - ListLevel lvl = lst.getLevels()[level]; - return lvl; + if(level < lst.numLevels()) { + ListLevel lvl = lst.getLevels()[level]; + return lvl; + } else { + log.log(POILogger.WARN, "Requested level " + level + " which was greater than the maximum defined (" + lst.numLevels() + ")"); + return null; + } } public ListData getListData(int listID) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java index 87547565f..f8fc91f12 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java @@ -148,8 +148,10 @@ public class TableSprmUncompressor for (int x = 0; x < itcMac; x++) { - if(hasTCs) rgtc[x] = TableCellDescriptor.convertBytesToTC(grpprl, - offset + (1 + ( (itcMac + 1) * 2) + (x * 20))); + // Sometimes, the grpprl does not contain data at every offset. I have no idea why this happens. + if(hasTCs && offset + (1 + ( (itcMac + 1) * 2) + (x * 20)) < grpprl.length) + rgtc[x] = TableCellDescriptor.convertBytesToTC(grpprl, + offset + (1 + ( (itcMac + 1) * 2) + (x * 20))); else rgtc[x] = new TableCellDescriptor(); } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java index 1b0ba626c..9bafce792 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java @@ -23,21 +23,28 @@ import org.apache.poi.hwpf.model.ListFormatOverrideLevel; import org.apache.poi.hwpf.model.ListLevel; import org.apache.poi.hwpf.model.ListTables; import org.apache.poi.hwpf.model.PAPX; - -import org.apache.poi.hwpf.sprm.SprmBuffer; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; public class ListEntry extends Paragraph { - ListLevel _level; - ListFormatOverrideLevel _overrideLevel; + private static POILogger log = POILogFactory.getLogger(ListEntry.class); + + ListLevel _level; + ListFormatOverrideLevel _overrideLevel; ListEntry(PAPX papx, Range parent, ListTables tables) { super(papx, parent); - ListFormatOverride override = tables.getOverride(_props.getIlfo()); - _overrideLevel = override.getOverrideLevel(_props.getIlvl()); - _level = tables.getLevel(override.getLsid(), _props.getIlvl()); + + if(tables != null) { + ListFormatOverride override = tables.getOverride(_props.getIlfo()); + _overrideLevel = override.getOverrideLevel(_props.getIlvl()); + _level = tables.getLevel(override.getLsid(), _props.getIlvl()); + } else { + log.log(POILogger.WARN, "No ListTables found for ListEntry - document probably partly corrupt, and you may experience problems"); + } } public int type() diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/data/43781.ppt b/src/scratchpad/testcases/org/apache/poi/hslf/data/43781.ppt new file mode 100755 index 0000000000000000000000000000000000000000..ddea91fe89e801f86f79907514f5b9e060d88840 GIT binary patch literal 39424 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 JNaw%P{XZN4W!C@z literal 0 HcmV?d00001 diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/data/sample.pptx b/src/scratchpad/testcases/org/apache/poi/hslf/data/sample.pptx new file mode 100644 index 0000000000000000000000000000000000000000..fbd540c1e0495c9412fe2436705fb7338262a56a GIT binary patch literal 47215 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
    ~ zGsI=fd&vj)O_WFnF{i0+={cK+p+n7(K|=Ng@eU^CRSztk#Hy>ld&%Z6eov^X^aVh8 zvXCoUkxpGjz0;Th`AAoXp-(TLlXj9HyFiczORXjycLA}6R-WL;jAlA+nGeC@A0eef7X~LqGX5IQ2Q070Q5#u!+Z{7Qgp9&utXl7^UW_u_VbvIYEb%D32 zxrxDHuIYvLF;{HrEUyFF$6T4I>u@nwY>VyD6iQMpXRZ%Z6|aK>PfE=di((Gt&NiRq z+pHM2vB|elF>KF;zCElvU31=j$lKj%(vk~3G*6(5JVfW5cZ&_;fVjj%^M&$a4=oVN zr3R65nTHk%Ws8UCpm9;1L8M&nq4R`tg@@>(aZ#N?q`VXmS5Ov-#GNZXrxU7%axRSI zySe6h^9pCrpFiuY<~B^jY7l_BC975yE^ljVS*sZ}^4caD9T{oH(^qb2SvF(Ix|W!6 zHBn1}Vo`Fh3MS5_e`3swB7?huk$G6r7cRYA#J6@aXD@aDY163MjG?wHsai3<1Et)ylAK-^_G{c6)tXBzH-gFD_5>xv91lTS<_N9j^AY&W!H!= zLX?cP7||f9wiT1tT)uh|UX#Wivq-}27}hUBzeJDWy&8N=ATlbIdTR|L*#Oz7t;XsG zAIvr?+A3=PLXe3BUECz7F4brybn=TzEI}odHO(21Vp}FTT5x{$f~*`DqI}*Z6D>Yj zYac3hb8fUtUkYBF*ArGnTn=w=r_oS7LykUS26ZWSPkM!;mvaw`D0g zD<&yY#U!Q2iyM~NYB?*?u^VgF!YkQK#UxwA@pqY49u;SAWzT?Kyago_eed)dokJ zTDbJSp84yk(COKbL8ZpJ)f5Y4fDBMsRS9eNx*u52!wH(<1Q6&*#0<2}z4vfpa zAqQegc!kLHY{-<-U!gLEJgJ=(DbZ=VN=e^=w<0AB&5>*zEn$UU1gj~kN$Q(^>B%tl zN2#pCWm1Q8J+w-o^E^afhD(_ZVvKS=pbB@gYmF8lO&x+59?GzH8FWMcq4LDwgRGvd-w96qNfvdvRn5Y%35w)VO+C)2xpaE{vw3!BEiE%fM3A8UN>2)q`VjV#m z9BteDOizEabviF>3r#4}Mh-XO#hkFdHi^VTg;+MnD_jTdZDF0%FVKY^;)sRo zpbetcEcVa_p_8Y*Ib5 zL!Z4dMuo~#X7PjEtUTT@m8kqkFo{-2V$=_NU?aMNj58mxj_GBW$wgD`qUPmZ&Fv{6 z@+#(blb3FXXz~0$(W^!=-6Y0;ST>oj$ZUmgxI$w5ZJCW0>+jF(a0_Hv_c|z2Rbkn+(VL zX-s~z;bM$`i{WC7f2-kQjQ`~nPWkNwP9MvTF+Sy&cPo5HxK4Dq(nHq^bg73ZL0pe- z5WCDO4{a98)gGb@aRt6Xr2LeRA-4+Ur#(a|=G_ejk&+MVvQuso%FlRcyHMU}5Gl6< zVu#)CZS7Trm^noG7;Rz9@_ZkbRB_(0!IQ;t!a3Z_E**BJJbx%pH3hQRVU>*I#7t7? z0td;4A$Ovy7Rik>cewD0lQ8&CvNG8#@2`7x=k=feHAa)|GMdQdG??XL)z}@&T)0SX zyL3lXUS3a+^FyI(>F&5)CLl^?+!|0wj5c6RfaT6Py)6{?Y$MW9jw4v>=m&}<<(ZUO zH)eNaD@qk|)PzNokiI^yIiUF@WB^=+%~Y(;OC3q5D;g}A`?AOg!od%h&9Y6Z2GQ>h z(eDoEkWPF@N{5VXcBK4;u35XH-dwsvoLvwr?WyQ8N8UT>!XpdiIxg8)i0PStYVe&oRRZ$UtLDW~jhW zBP67Sj&O8HiH`?y9052kAu|FBL?Qe?LCID{t5Zr&d(n7a2hYfqrH=v`tu9%5H=g5Q z!AYj&r^;w?v&i=*$d_8VS>!t^qrWM{Q5g>OH{0N;DHKSpr(#?ABwKG#X;b_YZ+-bdOMe%|n!8 z-hJI5Qf~I6-Y%j1q=zU++`DcNDYtm&excmzAxaXXr9q_pw1*xN${RdHSz@#_h?Jl4 z(8EG`qlYL>jFtwGa)*aXLit%hv|En7N84@KNY{U9dyj!**DL)VH(a#aCkz+u_DRD< zyM5Yl(QcnHT(sL~4HxZp4{%+huICIF?e=-YMZ4W=xM;U88ZO%HONNVf`?BGp-M*5- zsom}auImLalwaO`&g zJ(nkkN6Gm7vgqY5=;ga^ntR#nB^)Hi3=XnobQQ+jcmLhjM_n&V^r$2E%Mx|zxXk{7 z3#L&DN7PrO%zHevPoRGWM9;JqJ4S!oGkq;{iQn_t4~|{0@Ojm6(KEefIQD!UQ4bg{ zdZvShi=OF_;i6}H-Eh$}bpWTMJIl~R$8Q)edZsrG7d_KkhGSm!B!>+bJ=5EUi=OF- z;i6~iOyQKD%i)2cF0a6%{BV)C*TH_#!8Z*GF%Gr$s-*4mX|G!R!!$}a@BYQ7y(X03 zGAPOAfTZ2$(+;G#Q1*FuzfU_Tl-~x#71e`ckpS@Ff#a9pDR7GmJ;n6Q2$0MM30*~e z@(Woy8{_gc7P+v}&oig>T$IKd8os!CCyRBuqF+T$6TyitC3YEb?i@r;48xHDyH9>; zpPZ)Wm}?wzCFA!3xpZR5RZ8TI09shg!A8;TBx}r9VWKKn=8;AX2Z_!U!(KG9AQ;CA zdku*A-bt2CGCH3mC)ujvo0+Og)d@0spD0CSBR7)qjZEZ5bsiGYKL9$0;fK64(BCR! z{Y@!pCqE=@55KilO2g_0yw*|i>IPXFyAp2dMrjIhD0#@Br15k}z5dmwb)<}k9Syg5 z`?NQN@;e@SQ=o@E#IBZi-!+KkJ>sFmLb=;R>}+{gGKiFqdgzEye$PYfZh7~ZL8N@# zLoP??`+(@!{zV*HxJU1km>%%=(IHpXI%{0$${8*?wo1d%aj0XfGF)_Q-3=EVTaDqO zW2-e>bZm9Nbq%@t7%n=tzJ`mAEpIs1PaRQz!$rq7&~VYQ4KiGGY(r8w-j~> zFYo@{>mVySc*3AyRlIT}o6A8jw7r~AJ?W`(xj@A<$~o_z@@bVq`2!DC3G}pwDCs<2 zOs4kSUDAGNP?Bejr2WXJ)uhU!9`bnQm~yEV$~_*c6X-uYL`~$~j}4-=J?EjmLixOh zsEfRN!5~up#Gqu&`b)mOKCOSMX4F(3udLFV4HU|s0-_%p2+FvvOCKmpa}2d);jQ@t zh?PhdqdMmb%mzOsabKE@9_C=?->z!E_d*1J$VM`r8OI_RqPM^;9p4Si$-D3vo5?bs zk;Nd-mB>wA7ZDfw0=IOeH!$blg@?1B^yS8l-Ykw019SAasJ)QoB3XKsWMGaS7mRWg z2!hy9Xbkwc<}xtH1t&BTWb)QOl8pvBy#q5aSIrmjg%>Acd5$Lw5FnDgfm~2W|0$7c z4PP5EAU7x{Z`FeYNJ{e_Bx?NcP$O4Z26;7xhZu6QW;ZC8R0r4W2IW-p8Wp;dMuqy? zh(S3DNL~M+9HpT55Dm&{Q+*!b@hRym7TLM;c-xtp))1-F%N{BS^q+v}Mu(I$KAh}b zXVQi8_Y0YiLqQTPpeP43`#fee(uv6gz|ATgqAl_pznK#@`c+rh%V|0Ks4vk(Yfr}S>(EZ zcbGF)94E@Qxvb2VJ?Kf(4(2s<6d`Q{sb9nu(&6Ars}7$6VA&_GkbPoCmw}^3ce-Rx zGQNUkFkTOX#Z%O8aHX4`C22j9=xD-*FG(x7BP&rSkDE-llIdyuF^4A7`As=G2JR@5 z9V^I=6h0)A*pAz-~()KkVQ{J*E<@LK?umx5PHnvLD9+> z(aMux#(q9VB@d~qr1V?wA{!$@tVz*-sQpo;OprBzX z#b<;Fn#c^@{NW@0WVW3I|su$T|qE zRaPa=kx^-y=<0d2h`R&ROds4qnwFBiVv@2}Oj5RrNy<{W2HA09GR==#N}H63Vv-Wj z+@ZCao2}Bd4tiJwTc|tjx=C8{6NBhE|Lmcnr0q2*q;Z@p$<9I;-!^A1O-&WPg!8bv zvoHgtb=_H*X}CDf%`qH`gFogtH`j1+oIA~Mah#iHxH!(8X}CDf%{Ls&&~=anhKu9e zLc_&z?p(t$uZ~OS87_`37Z6zIQu zh!RAMVh}yX%O095l>g}=$`E6xL8LqanbRIlgDuCsrFoL?uRd*FDvc7(yLWurnL^oV zP?F1hNppUGVt$GX<&VV?pSD0KaZ#JpWkHH^p`>AUD`^W;Y1B@h^I1tdS18L3O4j8( zNvrT_=cTw%cX=FiS1yZ$vdW+&mkT7Vn@_tS#f6&9yK0|ykx+K`&|-mV0I?6Hud!!e z>iXx;kAq{^KD5kmu@5ab98?QUun(;;T548cO>zXV>`_MYW z#Xhv&aIp_vX*lLpo8Mr#*oUq*TI0QO0<2f=^o~l(0p+1&c^f6I+^20!l}8QbU4>8EB$Snac(1`GP@)94?T~-62!}}0S2Z{{y=*;b zad^$o%lCO&%Ub=e z7eX+z+}E&Xxt6HY`NfuvXVq{DD0Lx(W#UsqL(o7S?2Eq%)hv$(bB*@wSz16cWGXN( z3Yc|aW^qO?gjkZnGOY-1G}1Kq-ub)0x7)j42*EPsLWt!Y1=>YZRbFrHkbb>8$6Hi8 z<|Xk$h;|5RyjyH(ybxlELA(&+VnB>R+IkSwE;3o`+0?-Ef!Oez?esGK7q95F9xabFOFkJM5+YHAt)DLbqT=auG3>W?2 zO@?D$^;W?2t%i$!@XINj^4keq*E#cbz~x;xuhr{B$JHLXUZCzCq6G7< z#vppP9v<2(ls!E}8FH~*J;N4Bs{_Od;uh)QXd^$xf*X%hq_Px+^)K1v9O%j7oS0jW z$VM_g&#X&Pfh;{A-lB_cJXohoQGtx1wSKrUyG0k>giIE;0-5$w5>}yZTXZ#z4{PWq zZXgRmI0;F{sqjqR-787#bhUtu{XxGxh;uBH?lM`M)QG;++?xR z7mA5d;1)uBHi2ZaZph1-P$-@UBv}K{w%8_*0d2|Ea?=`Ud{(X&#@;teloW;$0v6|in|>K%22UY45Akdf;W+D4F*x9Uk!_REK#oq zuPSQk`mHySZ1qcYbRk=1qQ~XB!T7DMmprJ3<;3q=DVyCk?|P$bx||!NCVc?$7~u_} zCQ=W|t_MyB4grME;ikdPHNW5qX`Fu=dBF|e`y-#2Kt>Y2a^|OQTGRW_@(N)RHXy;w zb6b0fggFRB)`UIVj@`m@D3WNRljKubBxyMw)xZd$SC<8T(Lh-#WFkMB)Y1HsMoQ93 z^5bFa&=3|%6Fu~ShX#M_pccyKL*xV~R*I}~wWux4vo@m3!#B-WF15i=YyTizBG`N|0mez_edUENQ=Gnc}Gqlx}q;Qg( ziF)!HlHZW~jM$zRjVGs`X{yO;P|tE)l+$@_In866m`7i4sN1}G&_pxsOKGl9D%Oh% zYl~)RPzo@+))v)Jw|PV5e0*C``V5S(0=pk`kV^iKJq-T<%F0oitk(EoRG2?P#{4=xDa}Qp-x#lH1{FQWl*Id04a< zuh^w;HHm1v`k_DEjy@eM9Cpb}V+(CO zpMN9BARksA#*(Ohv^H&_tbX$`u55{mluO-=Dpm_0#)5e3gxAL{!gY{`ZWZV_4>20V+Ybz4>^8(hJB6|Uh;jFPyFig~ z_K>oTxCr{wSkbxO&CSg9>v@cwZwJS&>koGrF2>zoHykRCGMM*H!^OD!Zo|d6`yRu^ zxci%ii*ffZ;Ep;SY`7SA-*31WcRy%2)=%T)hYT0v?(Y~b#@!DaF2>!vQ#j>U0HLLOI$)y965Jq5Fh#tUW*tlZK0Z;c3IgzVM9UVqbXHaIr7!0j}$1qR$yF z_J!vS7yH6q!^OVvqTym+c*$_FFT8BH*cV<&;j}O8GhAGYqx`V% z&EV2gpZ2U!&H%)HxMx90Pp_W>c9Y^c;$uBU94MVDFbDV0HM8&kkKg>M|8IpttVVW#0|l+-?$xWmu&@8OghH%FF1`#Dw3<+gLn+Z} z0tKxmgtV-OSPf4UGzSV=&Aem3yZ@r!{sva_93pqrRIDaY&}x!A;ycj-1+8Yv(y{Zt zfBhk;saT%a6)A>+E3IbH3lFTGQujTfkR4!Jjof(@sAx6Uc0Z-=o&5)dO04F`x#x4; zF&UH^lULemp3{9|?f{F`ggSAy7G%SAiH>AfT9+T57oE<5PPrfZyy=wl!{<}_Q%q7{ zilKh)@%m9rQXjOr=VjSgud{q!V%8vOO{HW*YEp*EEh#g_B;}(VbVi`5$rf`~z%c~Z z^LiWJEA2hS+wfj%FKw8%Q%k+e8HHbp4eu2h?ELuyOP|g5C}I>=8x{)<6qJdlD3Kzb zQ3w>2(Y612#^Yc9;U6$1-K(BYP9Ovd$}CtHDa3}wLIXw8^O3@zK)|wHph(X?_o@wZ z_GuK9bg~}tj6&c+`6nsFhGm_O6vI$1^>Obh-CjGsTfN95ZNq_zI{L#ePucNc+gq?< zWvSt&_IMI3@2+^S1bsv}~S-UKZ$d4>3}~ zCB+6YCOp$a`-E~nAjX7;5T>PL!V>NP_(kRyIC}j|Vt%wA9J}sIylS`@6TW6RbO@Be zc=CYZVoZ3@a4{x4WVjd;zHYb}6LuJmW%y@33>Ra$!GerRs8>31 zu`>{|Bb32p^dXSf;D&@F&#qzVv@8;89A>wbY0+E)%9V8aG;pL-N*2w>+~pD}ULk~+ zAzRTgDr2i(gKrW-?l*!XR-Xb#9cE)4{d*+1&w_>LWhA6j4~SGpqA5Iad%&bBcls3d z#O(oDy9w1}Upyd-gL(t&0lyZbtz_RlAif~bb38m?D=eCum8+NXY5jTZ`Kpc&N^SVO zJL`53wTUz0Ly|VyryWYAv2Wz@rfkjkx=@Y<#Mj)sZf$a|u1Fu+ldu1&bIpBaWO`i; z1jO$ctrbkjYMP&3?)&z@dLiBE%yhk#q_^%lzcrAmj@p7$MN$z zMik+JU7=80`sW9?O?vg;Ut1~lkdcX}@Z_n#Kt-ReAFZw2PWiiBheqy!D!puvHgc5X ztwuddwJed=&>>pIdxl}D{Q>D*OW%TxJ8OXFdueHZ9b%n98??9%u~EGPwnOBscTk}k zQopdas9X__#`yx7IEkCqc)3t>tTgr*6`frF$jz_&%`!}TajUIYapa~wL zC(h%6FQt4-(k20_aPNU%V>?HV{KJ16f86gOXWVztIV3(#20un4v#aN@;EIPHdEe7p zV%9&Ly6KWH?fexof)Va}vP%f%b~GNft(QxpB-3yZ(bD6MAYg(mLA$1IdWO7*fsE!J zc_TK5!mxxrfybby<9=A4TzE@_o@C~)@u`8IM8UL3rL6}ojel?NrWrZ!fH1nNkQbD>@J%y|nEgcpaPKFF=4~J7SR161&&;V-gu(Vvy z4uYiM0M?JCyT;5IfI>?F+rgH0L~Ws`Nq?^r%2vpg_Rw7@ z+YBP*hdopylxqR;F)&K8D0ym;r|8yss#;JL9U=jAtp-qK0pT??-(N3puW2ps&CN94 zfQBBp27hNv&u+jWpPmk@{%5qFG4_nhSGUOZ!|y}poMhf}!@nKFSImG}XT8hUx>FX+ zXkIXD!K^bDoU-tgb7tY1H{Q~We~4Coy|EnHm5y$zw!B<;HV*ub=b3|>%2&GeE$i0f zd=_f79)Amm=$o?MX_}s6_3%KOa|@M(CyQ#!E5Ig>OkmqN;9b}Z#$hoq&@7cwa%r@R z0xY^_xr!wtHcFJ~tA*eXW#TmykY!`@Hj!m5Zh;-`^1Y?%OO}xG;*0scbSd9DiXV8x z4*%hwN@XZ_V*^UF5YlY?wRC9(`f+V}HOfOz_-+t<6$RhJtzNQz>55fLK(}Ja+5ttE zL50J=XK4|2h*wi|cw5jEaO^G|xBc)UU-#u=>$F-0xTqtB(vmU~) z@aG-AW;Lu?&P^CMVS>*e{+&qJ^dq-;PXtv37U*irdxA~Y?YiYA&!$IbL60c>9VV*Q zTCKpo8-326RBKPs)5WWnthp>o$T`n!XsRZ?;9I+pSKwSrZ8>5`cD~y_>p9nU9?Mt0 z6$%BaYMvtJYJY1kiI&^W!KZNLLI`bt%z5#VNgX~10839fI=+n=9 z^ZId*l8iTx%FUdUB!rZJQX)~Fu8<3I5rOg^16(JGtV5q{?snhqk4p6`d5;0BUs1xP zlDr(Cz8VYukOp?#k&D{sFEaiJ?{96>^kfqhldKs_9VoiI z%Ik8V)ZuD_lGD*alD5&O4MP3mRCS1O`KV7DB9#B+p@Kl005PchXIXSgZa&_f`prz_(`CmO9kY=P?^!?} z=0TT0Ml1a6ny3Ca@`5*-Nai2p^6!gK)P$<_HAX)dwkzo+#aJ``)dvI_(S}6Nj zy=dTC(6OJ^iv}ot_R9K{pcRvpsbZ4iQ%q7kib=Mgiw5=Op{eTe`nz@OU+Ae1fU@W0 z-F2uD>(?OlyB-ivEjCE~etEJx;YzWP;Rue7;a!Auz-6Ttx^pVGxe=NoIV~kleDR(E zl9P%Hgh!LJb&qd)bIjInpH;%^Az@g;UG;=ws+`>26u7hLk^5+PV&Sfr=z=>%jRV1f zoN{@8kN&ySr0xyy??TSHXIPm^M{_W83a#cx%SJxDZ;Vu?GSt1IRH1d}Q~O3viN?Dp z8(=)1JE>52a<5SG;bMa`FN zq+*ioP)@9BrPPC?BQ7UKJy@&pQma*f=mf?~tr~ydKJnl=9970+;Vx+#bRN`t^LVk1 z@lxgIU%6+`=Z^g-0!3sec{N6Tu?@bIM3hbPAxNfe=%=no@*Ix^;}QVu6$FlA4>wd| zAmTJ1S+oN5LNFiRES{TB=?ESKnk-P8hZw+M?ZzMm`)dJlr{P4YXV%r#%#=BFrR#;A z2B@j|TBHv~I%|!U8=nq(tg2(UM;{IpRBP6?83lJ5WJX{V)T(nkje73uM!?ZjTXjJG@?=Q3(Z7jhLPG&?+MbDd@JWKxz)lBSyjP1O)9lQur07HLYvL z;@wiZ!o+elR%o+4+#p9Yd>)w(VDdkl1 zI@FQIF-4U8D}$)g2vL0zqN)xVC3O+gDEA0a#w+~Xd5TD{!}3u+zc+}jkNMcj2(dK* zVg#Lc>wUhd(uT_cQRY*n4FLS-^~7&OI%DX^fBf~)a2p{j&~K!J*KzV$m3&;HfjXGweH zK*rSaX=)3Bit>*Olv5D}`>iUu@u-*B$TX4m6{s^^(=?MdUDq^m0ztBhNlH>NNy#aX zASt@EY2wE8s1K@_Xr1OxwpTI9wkZd;LswlmhswJvQCr$K_OSqM07Oe^vbqC-&(!kx z!pzr1x=qraC=ukKM08pLFG4EvVH>9n9rp6Zy|3@a8-!KU+=CYiyop#`_E+2Xf8$rD z9}o)eDb0F+d9hrg*-#qg@WNvQFP#6=-@&Gu5O0e7@m5hrrGbi8GjRTQ-+Ahl*My3% zY874*yM{VZa^>|u8?x(*zZNPv3M5`CP*9RP-st=7zg&1gDCD4zSa6`AWRtCzBaU+5 zDAXlwF-@2|NR4?|4b~T^*pridWIL6?Id4t`6?KEL4O09F^gx>^nr^7kqUgcD>o_HC zT0k)+UBx6NshFhH6qA&YVv-Wkaw&mYiL8p^o5OFms5Zk@jz_RSF($JubEDgu*@{b` zH{;b#ZL-SoM&<#xF>|lGOW&3ZOVpWr+`5`+I55dm0X$w&J$>hhp3;t+iDPN{V5M!Ae5i>5H*BXiWo%7 zZ5~=Il%D~_zVK>U*v8e>J$>Xo{EpkWOHIGAFDx@$>7cMhg>FAZ2n&(~8N5G}34#XyVLRs*#@3&2{m!x4G69k~5Hr+D zhWW>Y%E)nadFwDM6W=?x-)s8?VE}A3w?UO3C?U$vFTJHzC8d+zgs~ zbmBDYFcIDcA>9d5HerJ&C6lYAYF|N$LiBdGd1#~Ly4^#Ygz^r9NcmL{wF~9f0CDvD zNktg_!k*W0*_sT0pNswBIQm@&j_T3l=y$#0>R>Ax34X$GD8P??n++F7zb%G~qu*A; z#nJBu!^P2W8*uR?q3Z?uhKDG@yt~UF>h5lXk}=h0$#;)W+YC#Iks#%pcmM3u zwg~0DfVgqBMQjRQ*&FVat{NLx`Ce}Qik0gM_@8f*U)6eL%i87-!+G_E;@!fzrz|Mo zf4+Bq-kIml!f6-WFe6hOob&XIz!8w*`s6aWP zMLR5$ER=9Lg;ym=TjX{vW^6`A&BWOt4qy)mRh0SdC(E~%%fncIr!+2V#W871oIdv` z;cW1SQ7o05K0&;tyeCI4KKoarb<*b6ffo)FStVoy><$|6p_AJxhWkxaR3ZA!*9_v4 z*a3sMpz&*ixM1@egE+N5Xb`8>VHt3%C^kaW+;5GN>iC^Ol=JHbQGiUNo8F4?C``Jy zO51hR*@`hfE&i8crTpUQgW4JhwJZ!i)knB$3lwZkkttexh^a08* z?{=e5_K4d>2PF^PA<&~9q6G8qdj?T=k9p`$p#&gYC_~000U{-4#Xc=LtlT5{vOeve z)R037;}%e#_D!KgU@2U72?P@nh%&}ap9ZnKDi7T+l+dqGQp&i^(;!lI_s~N^S>qwf z8MmYvM9Q8XdRQoHJw!?4mPvz1i4ji9+ns7rN%HmfX(daey+3Ko2DI(;a)H{t-oX19 zO6zLxj~g!9`xAykao*maG+eazrwteF{Tailz0)#SE^f&5b$?7+($}D*P9K-FV|?1< z)=F|=t@4PMRXR@yCHBumR!<7VL4=g7SKhs15T&}$L(d51&jIa)+ z#*QB$z0Os2&=P2UIBW-ewu2rG)4Gn4_&4Labx?C%KV`03^3nWgbEN0;*=;q7&(bVm zMz_1}9nHKy*pEfS~ZnrF;3yl)IwX= zL7T|p_dmHCGnb*zm+%%hjxW7BnEyj=vO5M(Zw&xVuj0%BEUTTuhkf>Q5B=L!_nfkC z!l|3*p8njm)93z)t=7*W=>#9{t))rQ- zZd+AYxu!6?b?xfQS1p-!#gbK*FInG;gmr~gE7z}I)lyit@{&th*0!u!Us%zyW@$@d z{fd@C%Z9d=rR!Uk6-eKLkZ&!PA6my17PNrA<%+_x)}`1!T(f@3`jxF~$p6wMS1c)9 zvT{|+xM@6C`9%4t|vrm60Q_K;fc!S5`(;Ssmtcq^c{& zuRcV%wV3o1wYD6;di)Y6Tsa|Z!{A(pe4-8EzzubBs+Q)IqstsCa4i&gI{xF0NStr* zyx;2xZt$XN{4KA-(KD$t0DM5xi4V@X(#%}9D(JML&TTC|Q~6?h##O*&b}v&Ml6)Bc zmOqtot$Q=>ZTw;1MG7cG&p>nVyBEHtKe!{``2CMhzj%JrMS>qC_|fuxtzg>Gu<#jy z#TNvr?i!>#nqwo`udfs8>*f1+Q0v`yziw(s{2rP3eL~{*S5Vh(GP9>v%dl<0yJh&< z*A)KExU-Q`jpb{4V|=O`SXLQfv>oDT0J2Qdxr5?*N-HFtFEzib8(~fFK_3p78JM4E zaNK}V;G*d~2J=F1!kP{_!zn0#2TSCK($za6xDlbh*{KRRGFiHwI5q*#tl_%|TuwGD zC~w7W{4linEa^DXDXw*$%e-1f93`wc`~V~3XrmF=I)gZxisE*mjPYdZ9pO(w0;Xk87`K=L+?t5ADJm1XBmSd?z5pCLn01zTx+7% z9Ae?)0dky#@#DGJGw`oMwSZ=O2pRC0-f0G90L8R2KyxfD3uvxEIY6fvR1WA=gDP?O zDe|lW6e+s_id=BGPD)^{dC&N0{HKo&(z%ZUM||clD{_40rN=XI?zl99>sY-?eep7yXR>%@<9Gm*W7FWe7X=5YIKnalADr)JAfLbj2} z#)eE>JL@z1c3)nkj(V~on9r6*&;=zM!bvV0k}I+yW!4bx^@0*5y5bFTPOS`MMT1+p z^(P-V`-SU^n%)PPugu=()B6HC>AX9}J@ToMMK+V;37ht}n#o6JE3luK4b60~9bEb- zb`4x*XSvG|{cx@U$vs>p4vrn?<~jG5629K%*AagGm0#~z%d^t*i)$8s;fWmioxyuq?*b2Au4< z=Cj+EJW^s?xgQ{OMShQz?+f|e_JsUal@4UvMBeVlGxxoPwjyK*ZKdjR(tx%9zGd}E zx3x4g!jJ~!*nk{TdzJELgFu2+#`TrT=Mt4~B&9>)msT}5xL0~MRPuL!{BFN~9KILt zKL_6(_nlA7nY|z7e77D|`TI=>>SB~5{p9?9#~nr!aN$a9!f^yq^x5+HC5BI&#>J8` zPYGsS1^Wj_IST1S2Q5H14V)3sKP+B?(J7P=;5!VD$1&Pmr=T{#Fd{E z8!XBFT{fXM$d+P*<-}xd=wMVl{Qldv#Z^dOo8k{p8@x<2$p)8o{arSpHprG@gV${a zHtaVHcN*Mpdpy$k`Mb){&j$me;;t*Aeh1d$d-uFg(YJ}Huh+ip_X6)merU3=ji8NAxrqmz>;<1zz+uAp{6}hR$Mp(dlo?podo(S z-{{h%i%RTxm7Q?4JpYO>xLP<2emQ>8)lNa58H^tIUlmj9i|J@$F&I;PF~y0Oq8Q8t zSqu;N;0wiIHoz|wgN#-T!xKD!`|CfVBWK#y7Fq96{9g7{QCq|CEVc%0QOw5QKh^uG z_x=lt>7~W+nv$8kh7?~Y23+|Si($m`_lxP3Y7N+;m?d}ovG}ddJtzi3WNWx!j4u?^ zi^YH|zd|wnF^*8(N4JC4g=OGG%{j{SPPMGJQ{&uxux3eLI7m25773Ome4)tRERu`K z_+pVKK~Mb=qy6n7u^E|Y1&i#HYGof^;l3~Yhwr}#2OO#)1@&b?eOVB)@eAVYD+NuJwlS{!TLm2>1<}@6 zkoKKPm@g#@Dxf;u*rH=t&@n6s+4zNmj1TbA&)DJO5Xc6yU zM#1l(pnfa}`S^u`5Crp!qI;i+hY|461@Vk>C@9$?Y79r}Bux*g4KV#NjZq*i+Xa*i2WHZ~d}0 z2#=O|G}j=GG?D=4@^uY@s$!_v5C2tH`!xtf$;v_X=N%@G-Qwy1)82gvfR?WxPK_?X z3sPtQ^8dQ&f439ZL_ht{xEK1I07dHb9Raz!s|R6Cr~F>%71OzEb#`q`XE37lnxEmw z**#-ACd!!pvpi@3K9V0w7V^g*&4{1ME@qT5oSG5oIQ>_;^z>hG>FK}XkO7RCm(%}< zi_?F_rKkUjE5Up zPs1s#ZXzqy zZY@rn@#)x&9-AqZGk)N_QV5I6HZpWYy$6d+fG4jk}6PPM5ga6qvgbBcBRJ zK14s98-V0)t^x~wiSjTrPlc&j1& zhZWBjani>U>W(TQv?wbjtUA>Dg+W8InfrocG82&LtU=<#)(e+4no59hd}g$IYo$qwI zk}FNm^Z$qbaHGW zYmK^uWHyn`XRMp=o5-op3GNd&-oJb2lqw<4l9*^Vv4(RaZQ`4qfAvk|+R{LoA_d{F ziFn33sSmBJa8?;{)e(g_#ncOFtPcBw12r-1Cv=(n-cA>LOXPT_ls| z(n-e00V7#dVGf1%Km&ZCxe_iRu|nC-2|xMu>pxreeUM>_p=9X(B}9)#W-3J!3gDIr z+$u`As{&+fH^+;y?ks#$#F*#-(oX?0L<1=#qUlr_w^6mVZtNdA-xk&KZpK++znC9d z-VUe-Q^k;1S!XSoYoBme>Ev8YE;3n^%aS#BIg*37By&-2Oy+4P{Zy5hTa?RWHj)G2 zSVW`RNK7*!Ku;`1Nh677BjxE^ZRGDe|6+~g<&Fc97&XpDVxr1cFs~*jHO*vcWK514 z*4)y_m`u&aM&bhGG;`CaqbEeRkjzGML?7!G`bKi&BQ&xfG>M9nm}quV?sQU<@IxJ) zfA*bpzqEnzQOMcRG!lf;MCN1@xl+B4SV*u=vS5F(~@a=MAwJ4q+UCia6K zQD{sa4zSY7?hBj7D6KZF4^B_dumvQmGP3?9E-%QtMz#+az)lsL;Qn2Z2nB}eJ}b?fln6jers3mkaXL8)OmmCC zVr~j7RtuF)=cd47GP1>FmK6oYOCV9BcY5=5avxyPy9Rwkr<)zd1YOW-F@Q!O)j>f>y90 z_{7atSDV^w&Ad=W_XA=-`(e!qq8nmnqQ5)vPn<-PrB1BVvmeF9*$+256&Ghe)P~~l z1B_TkWeTUWpKgYWvmeGpnm5jV7(^&e+e&^Mbrlz9KXlfSE^b0XSV&>sKg!4j0Db)& zq2`7kH=}SI^dow~n{!Qn#i2pmi&=?{a^#x8MG(#%NrfdK9OYv-2)>tVXiNzov=ki) zQIXdgFvg5+9#Ewzshvtsr0OyIBt?Zp^9Iu z7>^#*x@&r2>V%5%5Q2)KfZsXXS)(7mKd~I{quSw8Fzh8vN7FQSxzKZUbudjtp!rv6 z4N>FHDqIESW;f4UfGWy43;9j=#JLd5YWLL0&4#1urF0d!XGX%2CC#R?qd0iQ0q9j; z*%E7%3&ce_WYk%*?vgSJ$ie^!W#o8g;)LmC^E3XnJLZ_E;hH)H1UX|M7tIwBP*oSFY@7REFR!@Yy+u6bTS-=@M-pp zFjOA^<%3b`9q0qam3X%W2d%)8o&vmZ`2(eha_fgWNIb*)QV(2dg4#==u{crH0CDQbHkc0k={_7na)S=H} zU#Fj9Rf(el`S1V#`M*a3m`%HEHLW21A!gslzWj$jpShy$?$6**M8kbQWn{v`O`QEO zeFOezJMH+R{cOb_ZRlqF(T?uH9|wVl@JD-k9DlT_J@}(t9l#%L>rMR8k&r2EtOoyb zjN|M5xK>$@e_2jlgSuN^%)4Y+%eob-FTZTXyQH&j{B+G%2i)mP)+}36 zICtf$b**cXG!p<6iSVBy{%zlU-O^8<^Zg8eyS~@%8}EO&msX!JwAT|E%HkjW{5|=X zz3{^qZXGwUZu?D;|Cm4DOZih~lp#a{w}fjA@i!lTl;3&yV_O#Ek8-07us?!`ROLy1 zQAUs9FUXU1Ezfd+ML&P*UtB*gawq>;SG27C2%d#mvwR`0id`pV&R)4@3C>Q=TY0hK zXd?@7I&z(1Xc4Pdu3PGAz=Or>`5@=cZC!iWx)m)g;KbSlE#c=s@X5d$=uU))!`NSlY6xV19>8z=wja$GiH{v-7NPt*LLT>k$6RFFTo literal 125952 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 Xp~EYtsJ~9V{j^<4USHV1LJRzVZ#Y2( literal 0 HcmV?d00001 diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/data/IllustrativeCases.docx b/src/scratchpad/testcases/org/apache/poi/hwpf/data/IllustrativeCases.docx new file mode 100644 index 0000000000000000000000000000000000000000..29dacb652e78512edd47dd05db4ac1bc42072b39 GIT binary patch literal 22858 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 literal 0 HcmV?d00001 diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/data/sample.docx b/src/scratchpad/testcases/org/apache/poi/hwpf/data/sample.docx new file mode 100644 index 0000000000000000000000000000000000000000..8dd04bcdb8113195a9624878de641fbc0ad044fa GIT binary patch literal 14860 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 diff --git a/src/testcases/org/apache/poi/hssf/data/1904DateWindowing.xls b/src/testcases/org/apache/poi/hssf/data/1904DateWindowing.xls index 142d3148f312d0d03a7e5d709ecabf22a0a6ee26..8c0dba1d7ac2415cc48f5678d0cd4450f0d9cded 100644 GIT binary patch delta 1445 zcmai!O>9h26vzMf%}3v;*3{^fpc*97(wgZAO-VZzNF|a^eJ&7HGa*4~D``c{2sTzT zbCbriLBa-$iiM4&gM}_8v5{Daq^ufCb|S9-d2gg`6!+zKKh8bp+;i_e_vN*^Z}n>VZ#5CHSn1n#RZ%LcAia-Htp>n7(6+qciM+_uU)Ng+g*WP z+`|F=!A@iwF-3Kg%~v*Cr4Av@_)npqJLyLpqM@kqLVU9DZJVBr*nx za+z{!3l7Q9f5yT1_&BJ5ghK)EIYAs3$`Z7t;Aps(`6xxUDdmK+cnd8zQHytOjs~&+ zbUHl}7s)1DR4S5ok#vRh^_sSJ3$~l3Udn{$rA)OY2j`XFnLb^m)w29yGkK7i#Pqgm z-Fa_X?%%eUdn^|G6wdHH_~EN))w?rT^C{^`6lNvw8C{2dvUFwNlwF4@H(n&g!0oQa z64|e;uIy@_ z&%9+O|7yRokct)SW2&g*^^uk?t|$}kvAvYr}sufZlI@xff zkeVq5AGFHva3l3Lkyaw(&1_>NPTDK7Ez&+sZC1^4Q=%mf{X|xgq^=@zjxy)Mzw297 HIAQ++v}rVa literal 6656 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�x_m^c?d3tv+^1PLJ zH$ipAk1snrOx{2l%bA$iX*RKuX9A4hEKaVVVQ1PkbFI~87%Y$VKU=sxk1&3e!lw|46gE(DtvMvFvCy`DvQyAG z;8rygqFt(@yy}9%l0tzq6E}3}b3t3(`tj>E4&H?tu}s-kp$uIgt?G^|h8lu~5?m6r zs-+ey`W*YW17zxraSyeAAH_8a*Ex&Y$yoT@G5K(R5tDLER!$4C2pJo>kLnr@iLj9Z z58 zMn-B69O68GV9=Lc_ zkFO}In{61z)PG4zC8|`LuBnqqD7M%)-eZto^{u>P9h}Xk^D| zrPH`yy%Qv0iZF`C`>CgVZYe`h?rcP7=M9O6cjAT*!5w!oqi4N7X;emS-M`c1-x)FM z+ze)!d3Ev0XWF#M{NYadf-=_hMkdX=ZtGux(wu#_eyh$%krBD(y`y$;=rn2+R^0bDKVj(XhmgxF~udJj@VY zUVEz}`D;082d8UzLh&qHXo0`oCgg<|Cs+A#+p_&2B;D6EI zh)?M@e>Mdbhc$=QlC1v4i?3+Pjws?B#MIf2L8w?*(%@9l8-TS`fW3H+@Mb8!Bl&!S zD<6A(y&4~7vl<0UF3aBJ`hB(Pe?IQx|D)qR@n13SanIK2Kw^$e6Ll05(HaSU-H}+K z>EM#%G+-Gkby-b(l!+3uUDhr1dvX~J8gpgb1-X7T( z49ZvF>WcvXRXj(-xsjT+Fkk!f{*CeuEHN>^pCW)FaxWhd?}QU&KjYUaYwzav|BT(s z)ju9tNg6RDvWyWQBM3APx3tGx#DrRGDu+^4yqx%kK3J!`thBOb&WJj@xgas3=mQNv z8yT&lUcNtacJ!W2rZ;1+pXK8bi!M30;XBQPpny|>bsH~;(gupC3qxj84Alkh8ZPD> zW^4sq5^J!>9nE<>$>mM?sKKJ_f`>RSOlzLQd8xSVir=TrH^^hpyH?}545>=O@xteU zLupm>b0HAD(g4*!l`IG_b&8+LxgzJ&9sJPTT(4zv&?%?KNEw6MbL;oxdwZ;BkuvcP zr701v^r;m86MMzIC)(KPcg{@NAYsT#~-4vj?jI6ql91=dmtJTLRYS8poR{vEeF zPfdp5U~m3>=PmY=RgYwL5dv0M8vE*|w!;>!Pgy{c(ci(!Z`huunDC`xfx6zvEwld)Gwb|K=;VNAkdL z&GNnu3?}+%5p~4Bu+AgrkXxpaNcBWdSR&_Z12ytsa{De)usi(^&Ai9~Lf$|{qWJKWQ-0V^MGhqIMP{jDl6UuzfC0z;21x4lAqSH8 z%8-D;g5<#c?{6PPP9d+hAyJU>Kcwu}-jGws4|qrv3+;W%cgH>C1oGWHiBP2b2jQQ4 zd-70nB}xi)H`ovT89n{;P%)zG&%YPx`(pR!p_4xa-B+UI&~Jqy>B9p6>BKIo?_?r* l__vGn*Wvo6Uxojs*Q literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithColours.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithColours.xls new file mode 100755 index 0000000000000000000000000000000000000000..ab3cdecf0b5674d10f5333244afb460443b33fb0 GIT binary patch literal 6144 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 z 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ΝbdLPQLf zGFY&!xm$A@cByRR@iX2;Br%E8k%gl(^AKk^Gmq`{w(YIn&$PATw1LhA4thxT(xrw? zqAjwp5O32F+9syw+TitHOIKoBu{Jg|*^Y@=4?%oj$IEg>*X2OFXR-4Ol$%o1QF8U( z)KDaLP+t90@crQuhsGy)ABj`qPpJ|v5VuiN^$;b5Tp)upj&ye1*H9^1XXa0PokyHip-~&}h zks$zMozuYU1a<~7);BsfKHSxFe4L8pH8mo5Ee%i7MV|vshkTTY6w+7x!`pu^H5Bk$ zb9V{VvK#;r`S`2XHI%XL5wq!|8IPhJ;Z?`op@&$*CE_3&`(7`8=gh*)V%&>NMiUEd z{QuD&BG*uk74=1VQeSlEC4G`R$R?i1_nL{kLr&yPn8+W^rHQ<0lkh&6i%MW3V_cx& zXcF=Z&1Cgrb)WhoC#$#*bwMN09LIB&=yK2K%JfW!|9? zF4|gLB{0%P@18z|XGz~8TUsH0u%zm1Wxa)p@}Emr5)%PSgu=vuIn!NA9S=HyiqFen z^3>(Ap|bNwUdnp5Qog!v&;-1#V?}jZKvR^o1EG?pCDf`?;;$;*MN~qWJrdr^%R4Or zE%Xwo4w^@#nB6c!K8g1f~4tNU!6OexDlYILeSCy$&P&x3P6?7j<>Q zdk6LVzw3dB=NFek2Q6(&Q#lR0Llz|J$#J@t$rAIUB%Md6(c>o<$Uq2I9e1huK4pe= z1|8In{Qh;RtB1Q1Ah+u-rjF6K-MIN=|A%27#QbxGW4|HRSK$nZ_ z+S?nOvskuDK^4XC;M%9%NE-Z&gqMbKj)M8p-4L>3wP8ux%>DRA?nfdHH=Wy>3zUfg zStdq*Yyj$t?_5L|l;K;6?nsFvzLsNF5qRe4RYX3^RYX3^RYX4b3R;bKdU(@g9_zuI za`0ZYgayWywZvoqk0npkW9WTDyo&JoW}bO?q=KWN4s-pZ49tQ}NbJ}NpCt`h*gH;$bc0FTKV9UdCuhrYqF6J5jJ z(6M7keb;C>)H&z@8LLb>+7}XS2jEUOrfI~V6RnBa1=RqzZI8FzJw25;bGY%^_S@(l zKG(i+5*39MP+OY>Te7KcJCvAeqyN0Q`MYD01*?9;1Glx&0>UCfQ;QI8h%Zh~M&t2Q zi!)%IP0r6QKzcbk)p}?mcBBmvL0HfsLFl-x7Of=NdvNm1?EI9sfB*h8VGCr~?yb&< zmOH33nk8M<0J#U^cFMOcU^1M<+lPQ(!A{28b>bi>w?p`Q7@SVI`FZ$~C+;^e&y$;< zht02mH$Tr4-uG!^e{Knsgp!6L)Q0zP)CRwA&{9M=h}KuUf8AYgAEurE&~V?#u_GNf z^&LilZ_&Ec*3ru^-&D}W2h8Mm)5zg^gw&pf6DA{$$W*KV1-xZ}8Cbp*=X91wq4ppM zaoLnGiy!t;iHbtn_6pUulKZh;98s-&rTShdCeV&M_$cE6Zp|xbWj{B-vZq~N5M8|Q zw$oGUEt?cg_UPIJiSEp_{*k`%vHlZ%hnpZ2O*pKnkv5Q`+#@*<*8NemAu*9x zyZv0U_ky&dTwbo`vAJ!AIH%1b9}IM62VITj<@J~!SBR^x7MFv40clRm(EmwBF!=h< z>MI_Int7&CSmQ{wS`A zjnVxRVh?!49)NeCB@s|ov{5XeJ`Zw5o5U9}3Av(;s-oSZu~8g7OUqFGeNN#fMMDcC zgF}bBzM*6O-o3qzwmP$wA8p%C@7P+1!r^8KLZS-2`%A``#6}W_$wD@9AsgirNWQ0{jLO6zg@^!%Of$)P z%U3kBZYO^;%Msg=^-;y8J2W=b+jZ-a^A(U*ERInu4t0-o4ffo4q=(Mb>6^@}`x1f> z_E>1IS|y1c9^=*2jK`dpJmz+CK98t;&gzM= z6Z!1qe0J^>U0z5&V4$Ee{6bG5^fgFKh<9^hMB=ra8zhufbzhL)!p9O9b8HEPW5g2J zkuR<>i$hT^^aJ{~2+HaR^zZTT%vnW}& zXlW5g|Ay*yju{tt_<~!acZr6}#6g?p3*$qA1#0mjx6smMQH4F!gSd_1=Yge}(J4YnM3s z4AuM7RC2}QL$;Fd_pIFpvQ2!>KN`s57b+H@Wcd*j7s*X7NOl>*A?0IWuf?gtTq_Br z8;ZdnmJ6WtxKw~Kk~uqb(x9XOf-Y%8l@%YJ@q_CL5s@ zjqv;22(7K+=p)n!CHJA!#JiM*$rYo+42rkrzD6|cal4-&N}NVr>*!$DaMM0$Jsn>J zbwQUVyu(MlM!6#)B_2uME)S1iUTU~f^&@Q-igUaWjh&+8+Vq3uABUW4$O^S_g}%)d zqJ6qmR;UdX>foKBtxX(l%)zaTV5M@oXC)tn>4co6SLAHZeJk!W6%(iK+){T=2_06v zBBwk5pXh)1(O}q``#}LdnKJ=0Xn~<&s&ycfXG1dqdxo1R5cs*!z{_sL5OPemX*(ZE zKalsiJc)hUWt+C6O@ERHNqf6EI>z+Dz`1ju*AruFE@UN(L}V%k3NzY*n^a5Pxjzjm zrAZ)|pyqZE5PhRnQkFw5@kP1CIQ9c5(S` zSsPRdXP$D3Y|X7D(hQ$+mhjuvjY>N*U3qkRoo`OBsU-O*ynkk$k9Rt=E@0{mLXgT& zhO|$x^Fc?^+4cueFnNNV&uxRdhZ&z>BX3$wNdgTNqdNMx4q0W7B%NTRkQqcvI>F8t z1sO#97@a8>3RNteDWefGh?aDMoiCPkf{kX)Ah)D8@<*>8#o@nJ#BT8Km1r4DRM1ec zkFfJ0@^xB#0Yj6Hsq-NY?H^(1Lx8qjJZt>yBWxU5GgGjfheH#FgE_*cnUoJX=$jF- zTFs;aVGhQMa(i>Saunmg)9cvhb?o&zI_aS4?81C3;SG&+^$hfl-#7$vQ|?FevB>01 zv~6-R7Q-6fc2ETz?i#x>JOs{#ue)sr`8(^T4;;q2x{<}Pp`o$ik^aFkuL+lc`)=qT z1i?E8Zk3mYRgZ(}=wj^J_SRFe*12e+6%>Cgg5yS6R95aF&mtjK)kZLz&NA9?1{`lA zl%#1W!w2T`m<%EttTic*YGgCZQ<=BU(}G34P$yTW`BNG%zjQL zb7p^jD6^jvG0c8UfMjMr1Ip;$?U>an3*5P z)RTuM+hQ~`JxskuIyA{>>fz8Ndt_xR>D+=CShT- zIyA`#DdHcRa5^^n!5!r%d-MrVlL=e!H?%a$;Qj&tRM?4dBF}6aB#r0<;8@gUkm($ zgreLj5lO|uAB#+YL*yAa9QT^Io0`Eh%ch=+&5yl~xqgo>N>rLJ6!)tUsFY{}$zXrX zcsEPX+N8WC&-HQRZFsISwq%t)VZ5)Av3IK2lKHu0yjvt$eGSO!Tab5;xaJyh{UGsY zlKG+d_(c~6^O5M6gGh@-q`>4cATdLJXg*jy#G3s9myS3{h96p#`-1pq=!8hi=+wjm z`b8bUgfclTF`l-zl%3m_Mc3lEo=GC`K(irLLfFD2jw1U}vPhr0TazyJvLAP;ew56^ zrdpAEibhO$U;bL}&a37{c;aL;;@d@5ED*;Wa-=z7ao(?oP-ilsu&$ zs3wF417!u#4u3`!k8!& zWJOFAoF5;-3(fB>vlfnil3}tm0J?9_#=-xC!16O4uQa*I0It${}S3d$}A<;vc1S z27P`a|CN9#xVU_ksQi(M6XG=T-_}B$5cuI6OAQy4MX)aicbQ)tg$;Fu15DMXqO*3elvbl;T1_=ph)^{_eqRY z;F9!sWs2W3-VRA$fV=c0_qW4%J0yJplopV8lkrwmF_H9Bn0}I^Z((l&V1neCuuCS( zGbJG~$TNj3fGp2cn7up`mNAqR%NiGj$j;4jS!+=^RMNCNUayg)L(^i_9S zp$H?d_sWzcdEKj0f{40ou?`$d8|jO^l18w}YtrLE z+xF2rNu2=&b|_fV=5-WlwK7dXREm~`s76pJ3qkS_QAj&bp%I;L>))>OF7oM8|16z~ zTnOhAIfb|u?h`qM*q-)7BY`Ax3i)LHYP=DVQz(g?-}rk~AR=-mO-P%_Da4g=N#ua2 zVNiL73)O@ca8BF{HIehPlE}f`W!cc1RFx!=bK@__p;_df6c;KYXMnvuL}4NaosdN2 zpm9YF+>hJH2I{M zf~<(hLC(u3a>5%cK;%%l*MP`DfADx5HbaJqoQ#GHh@9}EXGG+LRVZ5`CoGMNipU9T zfb~V>gq1KAkrNg+D$!yGIpvM%fj1#sH!0*y}x@)km2CrP@$_01YrIFPqc zLEZ0);Pd65R>zb65Cu?xrn zz&Z9)za}S6u?xtH6d-?^y*(730XaG*36P_4QUh{yjsfKStN=MbD?rZA29R?W79cN5 z1;~rC0_2=b=71dJO9&w6L<}HDhb9AZ3bG%^M2H zu}w)puGZ8d7mybjKrXj~?Ko(@J4fxYz+_p{1yJ&T=x!w2# zcy)`f0Gk&nY`*86dK9b~HeVSL0W8kg{CRvVDm42;R|1o*u2=q=EVw|OVO@kgUw0DFI`EL7~IF> z;czrgY8;M^FgTo_6%OZTg~R#T;Bd~u!r^F)@GDfsS>bR_CUYDPswD)6b0P+ZqeGK% zI0ab|4oA+*$Km0P6~N(C?lr*S=no!Ix0oTrI6R{v0~{V+^o($LScS61;bCc9R5(1W z0oE4|4=Z6R93B=nD;y5%7Zzi@7>L2g;jo1fio>xbNgS@$RA@MmORkjuDK`XNkW_a|erqa0)a;9sFIa@b|;-(a^%d-^B`lKcc*gR|kK)0zHc5j22%3 z{w`Md`_cF6F|Zo=dkqK$;BCg=4=Vg!5{kc}5b#p;mBimq{+_H8>KKB*4-oz?hV=+} zkVg^8o)+QnPjW;;#A)z105b6RzkTal-;($n_UhyqlUFNB9QfL zb))$W>gH#Ky7^h5ZhkhXo3pS`H<}SlFykcZq|#OB~c)k^*&OBa*0Ft*Nj8Aa^v0x=S3?U1Cr-nMt#EH;KCI{!nlA z=}&@%w@S>Ieel|VQv&&VQ%O% zWKb<0lY4K8i@EX2-ucGc!Q3SZa~B(L2XmJw%w2B09n4*#Fn6``1_qaSC}VjPvTMPZ zn^R~8G;lC?iNf5)f1-hfgSnx9AMFYS|H`|>$J`RzNg_UJanT28bNMmVxdg z3h0)G0^Mt6og~oR@uzx5hXLJdB^I=SE*Xg>l-SM@iKCka=#sg@>k(Lpn^*!HaM1?3 zWI*mHJimQCtN{hdMG@bnV(LyNnPLZw%I$4 zK^QWP6B-9vx}nkhR2!SaX*<=ifB%6!2ljiJX)3caNY+@kDmn_({qwfboBNNAwRxt1 zZM#=h)xb)$tAQxto__Gp#{3 zLgiiqA_e`yBkEx@WSB_FXvly_2`_p^L`qnNvL#Z&(zvLIl&}U^Uqnh+2~!a%VPUf( zQc4{nrPLu(N>dOi01<#LdEybZrk1)y3Rz0_W#&r_ky7dqDVYC^j^E9R5KK!)q<|>l z&`+o=%WNX$WhI`YH~9-jrhqKrrfvG5#Fk|?nbHcZA9gsvJ3fdJ56+ZW(I%yeHo1=z zB!bd855OzaCT}#}4sBAZXp=V?Z-+K1RkX?d#@nGyN)>JLfbs^dk|k||!HnVw@ieDE zP3MY(?<-WQM|_w_F+dzu-lce+5(Nn&m(-rw|L4S^hT3iJ{B9|i`Lcd1KGk?Cgg zZfEaiKxIQt$;2fQ^Qa zQijBQlBJCK^_pZUV}3o6EM4 ze?pQhP^%D5vUFT{l4Wma`}!tXP{6i*>xN_jiNZbo#9zw!TJDl8Wr}23Vs8&ah)EVq zktC7@LpL?af@xw%7JgPF3qLE8g`W+{!dX}(3x;br$x@aT$->EGPO^X)4>aoEXaBJBujW>1xOYu_ZpBa=no!IPnsdaBuhp^1|&;((K8}h!YY(4$r6^v zMMbiNHNg5JS;9(~iew23n-$3dYe|+gQyI{SFU?ezf@A?;V3Or2wWgN2Bukk?vXmK; zrOY8&F#j1TKh22{6iP?3fJEWYfSU*04O_RtGPvVcV4rXBc*Bw5OrMY2$d70FVj zNR~%9LE;BHBnw`dWO=voc1V^oMY6olcsnFZnIc&pHQo-%Ql?0j$CNinm@G*a3}z-- zzRfAnxV&&A%j!cXq7=&13DCetH3V`<7SJH*|2#3QyvtmYrA(15W9;1wsO*p|AW`_- zWl51N<>4ethb)LBSENwSo? zBulwNvXomSOF7cjB#S(Gp^LZv$xFF8c|np)#=J?Dry>;@Q_f_JR{B|vYWezbD7*dQ z?Wh`6xZDvtDp#b8JRT}%Qs%S?X^Z`r8?k>7F$_!|;6gPaJ%^|%*8)h-OQNR2Cu*p3 z0E{{I)YEd5RJcI7Tmj`X?Cl{q17&nf5>Q6tqz20990Qd3Spj8!RzR7b4N&GRETD|W z2nWjLSpj8ECUc++5-1%6#&Xq?ll0)=no!IGiJyz zP|j$`04RqSJtLqTR-tTxa#$J{6;KXqfb|8G!%CP6D2Ij33MfOjvjvpPv1R%|xjY3> z#x{lRF;_IGH5GP;<%TB(kjfpPTyB7JxdW6j{~4b>#);4doDL`h7<1^SRF)MsP=477 zAnn<6!C*3AF*j`c-$|HUVZ-Fi#r{tWjGi3*F+gR~Nr>Vr%v`Q9Gp9}rNe46IRbpo2 z?O^6|jhT(NgPF@UW;WgqW-iy5S$P9PXNj4~o;HghaSAj<4Q7_mLh{Vt{r4JLH~>*2KHqv{7Hp{E5fmGr)(36g`ZYQA?YwI z+$o`<&AzWtSom3vNw-DQupYHB1Fu5ht%g~Gyh%rUPpSeQhCDi{k>{uPcY znu>rb8YIbB_(fHo%2Zgm0!jJ0AuAj#T!AsOU;Mg4xE09KSAbt3vGDIdt_n$4V9%J4 zHWschSQyxsvB!70P)$g|!NL_93x7{y;Yt?^1N(C9Pd+0DY^95ZD-;&~410ShEMsAG zOcEAGc z$LIA1%vhK{lLGt-@k&yFe|XIm-~&~2ISz0+XnT1%i}~-na4Oq@s<~kw{wLYNl{U)G zTvu`8U+IGVN(J_hFpjP?V4rl`R2s&&FRO#-4D4@Hc~_+Z_LUB>uLQ97 zbxc+=uz!bw>y>B^Ttw?9rjgz@CDv2-qX%P$N<=f7d<0jA6B7kfqhsS7ZtD%Yk>6y?88c!3fPB*%?jAV z7N^DJu5^HXWeQ-AElC1g1@YU*rme2-4{;74L~48xL0(A3bEf{YcB!j z9_||H@9rAi)icoFH#o*h;92n@>Y)I6r2^!Sb2daoIXrK?G9Z7#csqc+QUUTMHu=P z4?L}E5-q+0KwhZ;`3o=V!LVk4d}Wja062r}Z!16!G$}!LyCV?4N8&&U$i=sG=Y<0D zJ#xvi0XYCA3(r?`OsJ-lbQnx|!laV(CSrPI^&dW#M;f)nQ-c;^2K;GyN9x?~akYVJV(U1Z14ljB} z$UCe;*&^?-G%hOS9o7Kr3wei?FctC+3!4@4u5yrfm4m#iQXuatM&5bikXln~C38sI zl&vzzn~rm<3`@PrLEV`D4EBz4BFzYQHSJNvQV&7hK-nC6Ol4VZqwbfLc*zZr&)9e2 zq_ENK+^|o4TOyKboAG@JL|NFy(SS7_Lfs=n$NC3`@TAJGuy&Qg+U?)baMZ!tRSIkG zG2RZ=u2NY0fbn*)c9p`~hm5y_wW}1?KB~Ndy|cvHRgAUs#JwtoT1{d~E2C8kYu~55 ztA&HLtCWEA8%^;#Brt4MxJKT|d=q;&1M?VwD}jrIm7++R_N)$vm2BIyiut^G;vtn( zmCxsu7|lkK)e1>I%z;UlcN*3%V4sB~DX@bis}+)z_B^W{)^2qOYZuWORX(cnuCY-i znFAHKM&nfEYB(QO(w$CUez}@qe8`f^M z0+^3;p_=gB0hraAwfj-Y+O5%4sbuX|D}edd@5vEfQ+q1I+4BfXRs%fQb%G2AC9NMF0~yFCSorH&y^(Qn}XvV4^=5U_NAq3@aZv%xum)IP05hzFsQ_kJ*sK6%wF5A#9e`P#0$^fGlB`{| zrdI2HSIRF}I{>rV0L*F!U}F9=vU!mcq5U--TNi+mLyP~^%lOM$vSR-QlV1j)jM2U}vga;rY4 zysKA-j~l8W5iPy~K5n(*df2wsX>;Z@^yq>DcESd24P>X3MARREnJ``U~>nJ*Dx9vV$0u4G+qll4YmOZT0pB~?r-Nxw7R`> zx7V@X>)7jcbb32Ig`8Ekf7Gn8%u$aInH!n)dGQT<(NiQ>B(D*E-h_v%9mcbN{+g5d%t*asDj@ z`}5A7qmk|$P1GpL@izAMFhQ7d!~&8;Ibss0rW~<|7|M~K73Ij!igM&WU)sMW z1?31h1sInnrqr5R<5G?_4&_*5D90Lya>V?XBnv0fjFmSX5oWE@uBAR)6P88MhqJR$Dq6lh!;lCdcFQStt@)M|-F zTy5+`ryMnk%zdFmV<3mjtx;s|i^{vkCUaja?hVv9137HAZ0$5u3Fbo_oZ%@jo>Vh)K|| zdv@>ME$P=e+?)Si&0`>4LHB@f(Lu^c|K)1?FRs$(d-|&dhY(jwT{=Q<2z|w{s`0oh^;WrepDhH#&JH zI<+_xo$|&a@jJ+eIYak)@jGW0W)|aKWHOpqXygBnMiL9r#n`p&t*2tGbJ0ZW^jsnq z$;|3O&ro-=wS$#d5CCn(ef46cTxT}9v{o(CT0%TI@HuQWR{%iNp4*z+i_x4!YhjS3 zrnNBO4Xwq`iq_(1MQic1p|v;*i`IfXUO25)n-#6a$z)Dz)rQhqoQR>dYC*F!6bSD0 z?vml0t;Ns~LP1tUYa!?5(^}z;6`-}K+^bA$ZOq?zTVi@*a$e5#g;O1EW6^kG7_79m znfcT4wpE_LAJ4_;=lQ!-L-W_e%FC2(MiUg2ZTLXRh_VeEKG{;XVQE}clxt>FGIdDmpm>3rF5S&yI8a&ZYzH%?D-pcyuN@neb*KXPYKsk-5n;<5Lsk(^Jh9bzY@%DmFjs zb+fN`_n9bCpPZkHdWXHn{;?A$8V`C_BFJWZE;1YS6QGPag#=)Vir>{U)_+qUQs`jv zbt)=tI8D#b9d6vY)3XuJg`#gk&vJK+)k&Pa$)<0+0iDCnMpJ{aKrIx_i=~o@+Rtz% z#AbGmN%6|w&lqoq=B?Goq{iE!d297CsquDb-dcT3s=Pr1XG!xyu68g*mx^YI4R=e6PFC!2(>HRLDdLPQ*yn0Sg~5(Q|Tt^x!I(KQ(z8}{Ogj)}=g zE|t2;rBXL3DpeY!+hk5z>H7L6MWxy&s)){1=nJY0bzxK}5xkq23XPz+@~uoHu!!q7 z(o6MDywPFqCUc^?Nu8(?ecg)hM4iHzA7_O_QBieni-5!)p)rr(7|slPHvs^5=MLu- z<<=1^)AoZ|%FzL$h&Q1!{*@b0vW&Lsw#czq=Tf$t5S%F6E$rQlt%&)f@(gx+&gCg6 zTVq+zK7(EEgbnm#+embBer|GlW;&9>(*vGJ1&urV0*n&jTt(wNl6Sm8SMwsnAo*WSJl?1t+) z_gvTBzDC5mDciD0c(5(n5~wGg%a3y}k8?#~Ua?TLNMe# zD0K?5B1#=OFP~BmZ>#{NPUT)@O1)5g979IZj`x`%!?a^YLk6^Cc+oSW9m6V=E$tYV z#zjRthBd(Yq8-CZn2L4`3!4?~xXI9t5*g5`sKgIj&G{&?o-e`ML7;;}_wUxRxa+=Fm$hx>K7cfdUa_fELqfcrmi55xT?+;73X3+@p(7_%0?1NXad?}mF1 z+Yh0q%=%UxIrM?#pmrfqNeAt8o7e_cgeGfqMb&>u}$I z`zG9raQ_PTEx3P!`!?Kn;Qk-n{|EP7xc`9r;kk3?zK7rcg!?bJ|AzZM+z;S>2=_m5 z=iopN3Y*pdwr1J_zsciR@nAM79?Zi$%xK|tcrbWn9?T=g+u^}%QaqS<8*hgPvq|w_ z-e% zGMQ7Jb)l3eCt@g1bYU{(NkLXbc_QcKQ=Z|C6`(w++-pF2qCa@ZJY$9oQ=SJ*jn zI44Lr&Y?2!%2dV^#@nGX>J*i+WV{_JqfSv7Pa1EB%BWLR##720R7aLn22OUlc==aJ z)V*0Vr{sm$IwdJwY`h&%4wTKHyj*$LxuCpGf%0nhZU&TdKsi7-pEw>>pnP*EDDP~S z-A151PwY@hA!!ZD<&tLO@XZQ`H*w%%4!;dN)zS+Uyn-vZ}YD(eY@XZQ`_Zn{phi_Im z{6^#L;BYh{gQ@}c_VC6y94(!M!_gW`DRDSj+u(41RydrW6%OZTgTpxs3x}f#!g2WK ztZ+CdlQ|B@GC`HXr0)egQ>aHy#NcprVKNSn7Z84VfW@bIE%gu}xslr0VqOXH%#;b9H1zHoS02~*+lu&`O-aHwdqlx1(mw&&lA z+nfT2Z&o;b%&e&n4&N+n9KPA$@XZbm$NXnxeG4Z-n`k;5zFFb$8Iz^K;YGPGN91_n zY(k>pxg(xwl*qAunaI(Yf!wT+V|$avUJi2HtdQd#-{J z$IS{k9#!5zl35~0AVo%w_o@`?UF5h~tLZb|4srw(WaRipQ#?ma-)4mz-^AX{*hw7Z z2&Bl!@qXhSrZq$&$IV(zp9+hlZREJw5oN1a$njwgT#S6vAV52|Gji-w$g$o*j`a#TK5k0k zAjf)z9G@`Wj8I9K%YO3OR;_%?dfzJIJx# zL5}q)kYl|-VSoCSIF@(J@U#H{Pj{W4%I-bt){9wvl7KgB%+aa@@j!i!tY! z){|%dsV+eP?pX+uA~`Yu4GKX@-d_VFNV<+sGKdX=uIdx-v%#pEli%smzWi=q*l#cw z_K}I?R;rS2u`#EcDPOVAUb#QoOfB)d!BZI>S_F@eJEiq_lY-mRh!AtdOXmwrs zimSI-z(M&_>o@pBOGoRnS-?@uVgogrFpqaha!Y~2*t_%A1~sY*D~AOfTvKW5H`?Bz z>o4&|g^%#>b+;_*gU;A6pH^NrW^QdIYxyLoW}t zlkI-!98LBbtk|i+I1;PDs256Gzd=D3q`{DK?i$QpSScEe^1TQe4E4bp>^0kDSc7HN zWT3&^Sx@7a{OFcd6DOK!b4+pKlI8BD4k}(=GrS?!a1t32BTcI;~iA zT0x7c$6~G1@RNm5k@Z$Otypy08tbieTCwP~wbondv|`a|>%<$nEuv0CLr3;JZ$HOC zZT34c1Dz2xwSW`Xn@MSoNpY|(UTg5wsUZu97j7}HiFaur2kT%UdBppnlnMD+toC12 zyHJ!s@=7^PUm@EYr#SqvA;_5fuPwm7(ZH7mZc-l(C{0k})C47>2_BZdbwkkgn(>(ur3p%`CMZ#w0Q~?G#oAPk zq#DQbjn6;>aOlS+$DvRPk#j1Yy5_f&nbf6wrqefXM@ zzi-!};gLJ{9N0B7ya(I7#%Cu-Xd9P!l|cq03M#t{FO`M|YKFXi=hk3pqTp>8rj`W5 zH=GQ~J2iZRpJw>RdMjB_5)9v1ZzT&#g5ewMtz-e%grWXv@rF!@C<`!L!`XX7V%QMq zVKaPF5)9vncc~t}DG7#eZ1&XfO-V3((`{;CeK4ck4BwOpvF?{CW{rZvtpFz>3Sw zz>MT!eHd8712d(FE=jDVidajTSQEG%8VxG7#9C^I_39`SYiTer!%2DQ<6L`KAub_S z#`LfVyLaHAxvB8DOsO50DHU=(!tuuuzarOC8JBsp>_yl&ssZbwOXzz-?Xi~NdqPe1 z*JWG=yQ=Ajbg_nIu7~DB$u8$1B4kgE5Yg|3=B8ycKvXINM9=pH9f(yug|R#GZo6Is zL{v?w<3mmL@6hp~Qqh914^W}`=r&jjqEk%Mg6O0&Ye95~Rtxg6XhA*}Ey%}K3vv=6 zEr^cEtp)KKi7-CI(PXa$OPyMfBe7bLI>R(ANI@2)1(9;@TF_lsDO!;7y$D(m^}$;3 z4clZ`3ue`1patDo&q@orZYZi2bj7ivw4kd1mX{WELbcKzi1xu9{ECrDpEm(@K zFj(h7dqkW4z4Z7HP?5)nuJMyVc1ATmRI0RKsnvp|N(-VNV0HHrogRV`YHDm%03?!s* zGtRTvEEN@4bf>ArQmq2#bB^si?rU)?2B-Qc;2HthZ8urJ@2$tTzuw7T|PY zY?D{!d9%T8p!8LNnNy=vGbbizM~;pkpPU{isfI6Fb0qYX?|w>;UnH*$x2R&m&h8oD@Er#ZFCx}PcWVU9nJenZ&-){7lrs@2TT+z_6h*%oWIc7Vnuu>(+do#RKh)z_Y`$McPX zy)JoKq>dNaQynk;?x=5AHfDhJVg`6~pXn{I(U|E0)}ep9j%EO=rZh7^<2%$0uwKjn zW$&j#^U+nY8327^ni&9nRAw^(`a^35;A1fZ@UfTy_}H2OIEj!M0R58N46r_u8Gxh7 z-VCtbX$Ig(tQmm%!Zb4g1zC_804e8g25=WviWz|Ny$EIi)CYI)zHKsW2FR+(zzpEd zdRArt*9}EA1GwT?QDy*F0W2>wfGdZY%mA*ik<0+=l^I|?nBJHH)e7sG14~Q z+6(|vWHUe|KMADCl^I~YG6Sr)W`Om|41j)sg+!bqsYWF8O%sLe=g{4feDzTbTjYiy5HX zdMh))dNBj^S#Md^(25PXOIigEu20(ExI*pPBT`yzX z>po!W>fZ)bS<5pH*NYjTM7%czBhHIw2B3zNqhv8RWXu4~A2jXzFN5kMGr$jfUx;qF zcsnz|0yLJ%u(1LhkqH1B+!Fv=O<1#$^Wj70=GF(*p{K028UY)&0zilIl+_8ovIsRF znzFjeEA+g<>B&>Gqem$j$aARwGY>xapqZ+=L971_qW)jsNlOeiIH#)O5?1_YIlVY! zxO=MV1{VBBkUPrr2DJ^y1{VCm5{C^|@NY1J-z#D3!v+@o1Bih>K(zrg5t1LEqEAQD zR?O#ZE|gfO4}FpM1?$c4Ci(!CDF!p$^kM656&G#fj3VT#A7O7FNwc;1>SIGXIW#RjLg;7F{tKozEI3ktFzZGn_? z*B0)=O3@aS??uoSs1I&3kJ=`~+9Ina18w2XdRE%Pbwg3Lg)5E~r7c_qu)MT|D~Fl1 zg)3|%Z9(fx%n~%ycayd-3(wY}GbDYHt|>6Blr_a;woheibg+^02Bj%BSWU4(X$n05 ztP(DABsAG-zG$;K-_{q}YjP+L1VS`AAv({TlhYcbf&RK6I9X5z`I4|Ci5)q{X=8bap<|Kx) zKrowmq#J~_pRwL*$PL{w3Nzn()@D!5Bi$hLNS|ZxY7muL`2=j_4dkW-Bg@gu7mMQiu z6ZWjJ`B&^&ChS>ny%l?w$x^3g>#f)mmB1j;&fY$fX7)r~rLiZ6N)ialL76qP+)ajYozbQQqzVoz5NGqI;DY$Wz9 zv+PNW0?P2>Gj9sD1WYx7d~oGbYmDrua8~3OyG3?h#`_P4X60Y^fzq16`Ym{ zoF1~?3Qo%eP7hme1*c^Kr$@vauo@9g0i&F~ixR^|4X0%SrY2Y!|CHTdkRj= z1Wun|?`j~Ff>XdK!|9XO+d0#T;j~N^IbD&kh&l|XWonVrMuF2g4qSwEvw%~Oq=M6p z8csJV^X5h;oZ=FO)2p0r+$+xjryGHVNjTl8;B+Iy=}+Shs0-U@;dG;c)A|{n&jc7{ zIDM5<^6&*-*SaRel?hG<20lP=x>3RDMuF3!Bc>^r>sd@21y0vkZw03t1y0vmZw05Q z1SXAj?Cm3IhEvp48l0jWGs7wB$-*fg3!L(?z$qVFIOQZlaEiin!|BFIaLUnS52xsQ z9B|5!SU9B$OM_DivLHA`%DKa-yRcH=l=8g@aEkiiCR1XY48v(wO$Ko4&U#jG>bjw* zaO#RTqrqk_|o7EU)R zI7L6eFywP2^g5moPB#jiHrpgu0-WN#xMXmO^5^=veAK{cc}{RjIo2PCHfMO!#YTbC znlbZ6->BgfKbijOt+#^HjRL35)?2~pMuF3I>#g8)qrhpmcmq}=!YN>svv)>fDA#bh zQQ-8f^;U2S+GIFAXS1i^bfduOdG@XbtSLC%C~$hgdS`~yjRL2SNmxW3hSQA-PRj*O zFLK}_q#J_M)G>Duq=M3N4W;D@O3R&4ic1(upXBu7Kt=bMdpU40`SIj(HRfKf#@x#- zl$MLd)O>oQoS}3O_eW@1uFw)F$*=OKY%Y}Dvs}>fY3r>%y-_Y`dBu7wv_uhdH3sOESeQJf?+NoS2Ww}Mla)p$5 z{uyDO<4EWwIv-M&3sPQ{BsYcU@!o)A?j3DQ#*!#_u86(I4NGn^6%qB*8_2PYxt9w$ zKF$%6ElZ8L<0qrp6V_XiW4Vyylh#|2W4VyyW$UfTv0TXUDe(qLMkGg&B4_V)iJ?N1 zW4Vyy8{)l5@7)9xWOBS_v!}?hT*&cF_O1p|DRL|qa`f&Csv z95)F$uH(Q(NS8(6{GZ+c?u7`FF1p2(WgdUWVv`VL1<#t?!~{v7-k`mkHhJ{vjo^>j zy9t*wO*Ts&{4h<1_ioyRjwos4+ytCF?Y$onQwOz)aq=nrA{*x>i<6tw06c7(Y~$?a zq&#$2E*mG}5*ueZ=7p$_YRsIx|MbM@?8(Vfetg&dYLjw!{pKdSesh!H=`5!eM_LL` zH!+@i-lIFs`b|GjYP65j_r^YK*Kf8i$@=;FM5LU%LUb2aibAA(FM>iu zeXv5DuuX;)VpdHC3elbQtQ4Z_hN3D&R~#!!A-W1+c_~C!4l^l4SJ+4jag$Yu2DyTn zF`Lxj!zSn812_{PmhVmRlRy?kwc>M=Qi_|bQrx7JBKiRqD6#nQ|jw?sb1_OQieq z5XB}Dn$L0K)Vh?=#7|ao&s%RLG&hORe8GAvp}9$f=1bOF3C&F+G+!2P2+xQ@6VC#& zhfg6)2V#${`T00q82fAQYRbaG8<1;h>i8zn(=X3ZDUf_pBQX%j+`g`g_oiU8V_Glz zlirV~6jGMk%A_{H#gQfE_RQ+hlGDNSVFmvptsY%~!ZR5*Gpp)95o9>C2?CYDv#|Ok zEEe|$CW!DJQf)>)2WtRc^oG2u&*ym)v0se+aQ;nspDzES+edEu^y-VN&#nH(s^4Gp zt83P*{)g3HT>aivpIQC&TfhI-TW-6sx^q?Ms`a;hc~#Nco7Z-(`bqrhTvZfXi`L?K zP2O|(8~^3q=Fz#$I7~fP5jy8fxGkY`m-5Q_+RD(mAik}RbK64ag7~UJ=YnhFj&s$H zbK67bg7|hg&eb^1)rQUm>C&cFK^X+`(T3Nl=jf9x!MWhthS0g-+D6B@Cdawv(77PK zme9E%zE;P%w$QoY+V;@7;M$JRxgcDp<6M{HT({#~Pv~5bMsMg`kjBoGbM&-xXsxY*x0);G>>M*ExbT|O2#Sloz%y~n=KyiqrYEpUF` z#>KF}nF>v{!8NzMLv3)r*x+9HG!-E_S!09q9X2@he3@-<=y|OTj*rC#$H!uW<6~=s z<0L{hIP`XI8yvVbf(?$N$=(KsK?BDu4UWXx;HZa9v%yi21=-+`a_%-bcVVU2;3(gV zV1q+_@QdOl+ho`VmsOL24bGkQtZZCa9g1L&ggekJx>l!AcS$z5m-$H`g{^FGzOupj)&}P*8yxxpqr*9pYD6-h z4GuOp4*iBCxjAfuyC?6xH@*$dynvU=3g?Rz?%{I*VuY-4AN4+xixn~QPe6hsswcg4S=Zht7zx7s@IA1Jr!{QCgTtrJ8 zo(Q(YJ;E_i;|^Kk{=4@|ijiqaEOA`COUk%L&zeo#5C5R4$IaRr=ZiJ&hpH8a=;u5RIX3TO^Rt=i$a^Lu=@oAYw)WBwq z&C0B?*-j#Y8G~u{5GNPMohh@%=3o-hFB`K4%$df}N|T7DW0Tgb(f%DUYnT^7jyo*o zV%SJ2T0NyG#WUVey{zmSI(rHI(?@Pqm+$aiK6VY*G1#ur{RPv%RD|ssoAb)Amt7;h z5Yi?WHMhS*4I7)quyOW>s0<0kd2$gt;Izp_==|oeL(PZAXI2lyD!tO!-{uv==sR{| z(ytgo=W7icd@P0yJ{H3UA6vr)ClNAipu=+;Hh=&T3>zFx_J$4EXX&O;q2XvX)jf;|GMcA;hFYoRf)3D)q122_j zW3yN`njZ-uBec7GCd-D-FJ3PC1Ys6Vh7B9e0BqUVES8PeI0Mwklw|`y*|PDv^;VXR z&0^Vj!+I;r#%8f>T(jQFvawk#8*hp?EFBRo8+atxveEuUQ+(hJBOGXs(c)P)ba8&i zDc3yb#4u+%)G&0^Uo67S7n%f?T6KM~z7(0^c~*t9_tftq1_ zc#N+k6M|hrPZ7hS5Hey=D^W|HDy$KMwi&HpBSx^uY1}hYFK`JPDK2sfaoEj6Mv9vd zfwymx@>KzsoOw|J8^r^#xSIv=6>Otug>B+9F$#IBM-yR;{i1>`6Qed{czb%74VVod zw`nUgLWL}qe?q+Tld~ht&71A%pS0fch^&JhCJ{qXapafTn+6J4tDr>FvKveR9w1Np&$#=Do8nZ zt>P}M6slx;GsRkCU_&?@e%XQfqKHxyN?xZ+q*TE$fW%S)@ca+pc0 zxWY!#Div0%{1)1E1#1=Bl0H?JU^zVNlBaDy%I5Q6OZp0>ODYhN(IpjXz!lFtD~&50 zNi{;vw>%y?ghM|sNmhn+Nqt`JjiXDJY*{=CoQt&PF~b;@rUK~nm4b&*A7kFOZC?Kw zuQ<=E+Ut4$Gu@DdvwtIJarn1$#h$miG**aa$f`;Z=UvXDU0|hewn>TwEtCT6e7s47PV(^o_XRWsqF%=?W&RB0HVk$($ zoVDIc#8ilgIVau_H4#M&R^W5?u1E}90-bMm!LN`N1asEA%4i((#i-(-y2 zi(h%jN5VT6`txBvLub?fG$1MZGsJ$4-Y&%5fSKG4h{?oGjrXI7oo-@_XxOW^gjDr! zk?McNdaLT+BGvz@^;XrtMXLWb>#eGPi&X#X;*I7IvHDTnT>Uj)GRke6uKq1j{q^Eq zsf8Wt6D5)FHH-I_q_8tZL$WE~YiI9jbh@hgQQf@4q1$>p$6LAj5i`Q(dwV79mSpvl z0cs0Z5v56s40zHw2Q0#Gem~IZD+OP|&oLZ%eLv!%Hz)}>x-@pHS6mo;RI9XTihN6x zzVGphZ}a-c#)tR&Gh-*lkDZkXx0*a~TizW0vKpW?b_WfQ z;#6!7|Mm|cYT9dtQ=pjhN#<0FxH3C}RkFDHItqgJlc?ko;y`K{p@qa)XdRJa+!_{I z;nCnqR$3#7iXM$hR$3pjzt(tdcyP>UaHSm$t~8qKl`r<0YiKlh!d?^J38K;t;#P|K zI>8x=GU^x#9wExc}hYtAihd!w2@tk6YMh z2cH>;ZS{B!UYPM^Bzg!0TV; zwiF}yR2PGWT zNP(@90a|J^rON)?drEvPQmq}9bh ze%dM1LDOgaVqS62i#*E)pPZ$4Rwc|QR|47PtKT!6&4dVXV5c_qvQK23AqUZ!_8FZZQ4P<+dTo zC0m|OEOeiBlx|QqC<44n^F8#asst*KcY6=3k|iO%$}P!WWuTC9Xp%?7c+;clP!~`` zKT>W7#bbIQ?x(^%y7>m@z*>ro6-SI8P%1;y(v8XQ+)o>}Dll_6DlxU=O2L=&sHLx4 z=lMTD_5M#mL&WiGbIwLfucc#o#Z8V5iE46WKfPs!M`u2MFhG=%d#8?#&W`)>l&8-44WNxg{h64P_2wV!^8sEhc%vT^TRvOa|JW zA1bz7@Ed-wCcNQ#p$5@xy)E-*YV1I3OWD}i3Y*k;djJWA zrl2Cz=aB&Df?i~ZkHt32$6}l1;~{F@=tU4JX!B^D7xM5sgKZXEj;5FGCN&&Q)^9AN z>axvpB*7aCVH~zu3KBeK#W}ozDCOL3v+lx5Q0Lh-eZSAx!TDYU+brsXZL=3_lVRIz zR!s)BS$Ed6vdvOOq~1_e+pH^&6=j=s6~OYc&AM`!$u{c>8_70X3E`UjbSRllgJm)6 z&>04w4!zSGz@Hv$I$>UZWTyq@$;+?O7#1MM@$$QgUw*#t`QM@!`_;Lm_$F$@Z#T8U z@9(I8B@Uwg6~Dis``b%|H{JVp9k{c%;RCyR5a63c(usy4{_*#ME=gb}zYiSfc@IJc zo=Hi>7alONgaX{euPkV$HKj2oqTtG#0}n!o@?)Ou{6JKOimVNQAi=2L@I;zQSPzZC zx)L@GQ|6{LjluePE={te%r}t+25Qui=e;6jzttG5>GYL?_oD1Oy{%il;=a7%S?}oh zeJ4-($HvDdMyJR9y@OD1{>f9bfXPUJc2H5{IW*A^=au}d6)NHMCO>8MfQ`$|CgT*07yw zJEm`FlkNC--!t($X1&l>Gu4JpUn%H;_mGzdsn+D}ed{f64u2H|uTe24<5b>UW^?jZ zF(-R$!QHCN$y>ej?TL{-o0E4-=C@@sCvR2eJP#KWPf2%boZ#CxR*2|I^ zGAG}UP*jFnVc&kp3${AhYR$#|@(4W4Fi}Wd$Q2i(uqq5sZ9n1tTXB zn#{8`lVC)55kW9=G}#Nrtxmznkyycq%1kqHR#FhlOt}a~q@258bQe~NV5EGf>MK~t zADsU9KtY=IfEXdgn&iO1o4v20$r!;nWSa~N#;lqQ1fx6aSqVnh4Mi1#fLstC0N#>#fLstC0P})?1PNRw4UG#2cg^ zk?hg34cT)H)JPTCZxyn?@GAjasLAwOh3p>|@2!hV_6@nN@HO=$8v^`l&7LI0X*9JqwJ z`z1~<4ngdmFTYJ;_cq4v4v zwlR7?1mre%Zh-r$&4~i;Z8CfQ73*zBh0WClxL>v2{GmA-N+aM#F*41+#@@7H3j;Sw zI}Nx|BAJ03C2oP6j|I5-Sb&?4EpT%ZA>c+4xM$CAiv-*pP4>Wz-j!~OOd)wF5;^2Z zEO4V5(}A0UEC{%fa_+$GF02&brhG2~aHBrB$-Hix3~0G1bUyKWELfE&+0bKW(Mq#8Z%d^70**oF#!&7e(H7`WT=V5a#_3`ekC`8p3p+||<3 zRNvmbWW0@X=aN11>jp`x!j|+Nv<8ud1(hV7e?*NK-bfW$n6Ec4_9#r~zye1-SIQ z3!IdP2Itxe8*$Ci1g65+yjx-K?H|0G_l&Ai_TegPAFdMn@H3oR9H}W>tzumDyhCSR zWcx4%mje5+`tV#!!}Z!TDx>PjS)k>zJ5+?t*tm#u6^|-!X>(}P#{@C?_Q0-#_wF6W z)LV33=KqxDpGeKT`sf^ISM3iK-jC7vE}!k8szCW4#KUmzH%)gRPYyt!K zx4mv@c$;Z@n4~^_db*>&?)Y@wsqxu5%n+C!#Z+T6Eq(Un(XmN04|(c%1D8L|V@zQF z_e>%=oiC_yJuiIzC}^U)oqew-`jKX=63uw!x2Xty^e?O#(W|CuM)Y!-H6wads~P!N zG$S92X5?e5899lNW<<~C){J-$MHr;vXtLLgRZh*wkyy=0y=mI+P!wcAnh`1It{L5h zm7*Cb-;1CbQ6H=s=WLT<&6rh_fo61PJuA)Vx}m6=(G|yv(u}SGSYDdZmBUP$(G@n5 zW~{QB(O_4w?R6FFMe~{RJJ2nfZLjrU4OkN}mhU~oPXgH$d3Pw9-AABW<%P9lmDP?_ zN;{$-V9oL@M?&B{-(U^2B8Pril7!XYAlFuyPM2ic>pW~P5`)W!D}cKR?q;|`xFWb) z;8ww{hFb&oF1TCaZi8D3cRSo2aPNj&2lqX2?}5V-4zC2R6mC7-2Dmb~jc}NV?`?wf z;Woonz-@u6gxddA4*1EMzTSE(lS7r59Gb1SGC5R<$)VkPE0aT&m>jyr8zzW|CI|G0 z$e!n&;TWiMvx9t#xj9&B1$>7!j;TkpIoQzenR<+C>k7;z+|G83cU985QW#r`ZO<1Z zRLu>VQO@)KDR@$>0jMx`-A6fd*83)_#u)X;?+00RPE}-M6e@y8IWI}rs-!V0JXNvX zyzs-8Df%!US*9-Yl|^_^v#?CTbOg)PpHzMNkIj_DxVB8iy_naBIM?w=V_aFL;ttCc zE@#Ws^OA?^OqQuQcqM6>io-JXp!e%Yh;A#+mMQv0h!nS$skpLC!4k!msh2n@ynCIN zDa4h@GPMWu?Wa$TPWbnXVpTU*W}39aGZ*95G6hQ%i;#8Cn#ZYHTc+Y-nW|}eku6hL zE0DBIoyLCVvV5?m@p@UNQo9^q&$UhO-*cR5t87A9e*GY=WK%Mi=D(~AR%y9Qq@M}H zLb~tru~@-E#TF~?4^7Wgy+{_Tv@!sKG_)id8WUtgLYwbwX?%xTtm0y^>i#1tLi+3r zTddIArdh1e`(?IRp{KPLD?S#B6(5VmijS?uijxRgtkC1REmnB9N3d9NG}&9MU}Sg9 za^Og;#fo~_G>a7lS&+pFDd%pnau-&L#ftL12o@{U2fr-(Y?EP&RaQ*~7Atqwv$9yZ zZYZk7$`!|ovRJtaV0l@rTsh2Sv2ultWU-1Xi&Y%5!F;GKt}Iq@=YHn&*(|bH4e^se z1A5A0MSD*t_cNzW+{`k}xUyK$8Zuf~xtk-YMkMoDtY}^;g+44vVy5R3Tdckl7K`*3 z@KSAOPO}oIyx;gQ0b+zK79-wa=NyRi>|&u|DvyI9=H)CJZzOp|Mv5skvde!=IiNZeqpUp)pz% z{b}&9gp3wTu%-EetuAqN=QLsad6`#J?VMNBTyJjHm@@XiXl^#{G-Wi`8{Hi?Wza-t zo@B#U7U2mEnKJZ_eH-9OCX9dl<~P4-Oc>SLgi$RfjJ0gSs8%M7YKI8}m$M0DO48n* z$%Ii2Q^nn0um@kYS~OYBCX80x2AMFbtqG&rm@uw9Etw$`#w0>f5mc*5G1b=e08<0g zxQDL8&@1FO5L~$V0oz< zR}M3&8&}v!>ZaPN8`B4e=WtisIox_2o<66`yX;7xTCG(LeQ_zNYG|KxqiSd;=H%uw zw4Drb^D7)lHG1CpR1K|HqtMqR$?aiPb0cnt(zIklt~7m~iuTx5gDKm?izd5KW3EZu zDHB5>Mef|Hoy5Jmv1`6iz&BjHs3C6{`yW@Ou3!e zJh`0GET+UI%;U#6J<{9m#gy9>j&E0sDYr9@|2yQI?q@sWIQm;&Ou5}4`K2R_{yhhfZ7UQi%h+`RZBgtrk9cNbO)h*Q270mM-s++@z$Cc_|}Rg(dTyR)7Zh`VkmDu}z{SWzJE zDuCq$;;tNK0&!Q^NFcslf%tYHS#mMub_?QqF(npH^6t9BL^a=HN`NqrN?ld3s+6;V!VR8q@+mG zpB)U0qXLXO6fo`(V7zA2R=~JJfbmW1t$=Zd0HgN}dLC$)NC6{?ir@YP?2Yf}8el|; zrU4_$ATuzcj4d$ou>d0<3o!Dr1x8LH1dJ#GH!$vq1dJR__P~hl!2ygMi3LVfTskmP zkOcuFQqCP1-G!9`jFj(107ldYH<=>aWEdE;YBB&uch<84M%N8R1x8mKD+(B01+ct; z(UrqYz~~Aa2^e=+V5DzX?!fztHn^iL?ldIs5J+5O`%wjnJCwC{hlRu)3KH?mGn}mD zNazJQA0+M&NUXF;h9L2~->y7)ANDyPq4D|go~jS_?-|~+@2;vEf8VY{!y|X@Ik0PF zc+Wk%dg8N_BlIDaI8X9GfpZ0%`+Gx&HDNm3f+}{?Vait{cL)ML!?BPtNg*J98pg8T z3ITTr0zPNG6$0)M1bp6lD+Jtu)X1>(f_MW7BO)M>kF&S-wSWkCHdQ`O8(K2cC)SB~ zfu24Arenq{5$_#IW30K_AYd7LligP#Adrs-{(bB1TEo!H2#A;wHs7n4usbvY?ogYv z)i46WrpSSdkgi3*LVRS;y`csuPJv;K2E!TwLyy6*#tDYFgu!r_(~Se4-FC$q1%@>M z!{isOu7oPbPp3J{% ze>GVqYZPeK2xvZP??r)TjezE3*4wU5pqd9*G8SC4-U>8PA?$sLy?q2{%OvV84Kz`v znL!hEWuK}-C55HG+j3o6*OIOtSHcQ6~OWWO;-*x zfu<{LB+#s}plN#fU;=cFngCrROZGK<)(Ct)A$@CIFq6$#C~Fja)>!zgQSga=fZ69s zj)Y##^TB70z~`JKSsR`zaChGB8)v(>dESvrHhTbd!F4nIkA_QYP2HFU+aE?R=;G4U z#e1+-ro7{EX1==w)*vo(UV zN33^doUIX@oszJKI&9IbQ8-&GI6KRMi;%9UP1jz-V9pT6Qs7%C=3uYkT01;Wmd0Af z*x>WgwO;!7K5#iB?RiPNE{wF{ec@^m-QC_1WYt8x+M6N!y8NQgM}HK*sJE-NOj|2V zThnK*A*LO&*MwKi*4nA7wZf$jbB1XCw&K!S=2A>*dhA7>uuzwrx>^|fh1kypt7fsC zTf5)T;x{zptUIUqp?~ol&@CRuVLB9O#_6rLoFp{=om@1!K*Deg2PrfF& z;1a&gV4|TpVW#}x)8Eb;qdqjbv)OF$RdD*~^~|Z!shJa#vm-~xk55jI)3-$UgR@cM z88aCp5mhT9>gqq4uDDKH>uW_sy~5r;g0qN1Z;>XV@DyhjQRp$Oh~i@rQG6^SijS>` z;v_;Msy35|LjMZ6lI_<_IhyQ6RIO7)aU@nm)w)C!1zC`YLdv;|D0g9{h$zbUB8Vu| z2aBjzZIfXUl~t30h;nB=D-q?op{OFt6~~GaQLX}5ULwks!%QN|6*iKHs1Qq2^f!Z}}xtN>D~z5mVQwXlZINTOo~7s)L$vDkWkih#?=&=2+BE zt*D=8IYP4FD)ob(EH9q3-b(${iu!rpdMou)E9&P3>#fvJt*D=u#2acTqWVE&=HY;K z|6+;*gb=8o!q{c+7gJU$W+4*1l!f+lK3<09-Sl{5I8teWwdvu_4j%`9M1&^&hYu!OBm3fS;u??%%z zhv(-&kzulTzITzYEJ6j^!5PW~1Sa(Bny(&NZKikEY5iIk48veD^&JT8`c@7uVauA`dP7Rwtjxu3AVbfOf zv`&Uip0wU-ehvtqufA-()vyVQioKs=Zy!lB@uNi3h#zH;nfOu0miYNth@X#z`1#lp zKPM3){<=)WUl)n^IhyQ=AKklS*n}go#E*(gA2y*N3nG4`oICNm3oC{ADc_4g{HPCZ zGEdtk!^EFelL7I&vz`_4yKX2d@w?(!QN-^mfaOK}t{i3}eplE?#9wELpXTS#tKU68 z2SXxE`B!W|s^;g^Dax<2lwYSPAJ06q#T-XMa5>))Nu3OlykL_IQT})5=j1X!2L;X* zQ2&|PxNf4T! zb6&iG_z{twrg~8B=Ol)N9?+1#IE<(Br0l{ku0TUVl69EG9 zOq_%h0dWZ<;Hz@u^%)Q_p%5^kR`?|t0e=;FrBRE79koa(7)qHg+Wdt1cN97_Z*r;BpBpqvWG$R1`ZhHNGuGZ3e#bbf-DFIk#g=Z=q{`j z7^HkJ0t}))xXCozCc`k8Rg(b>y0e}Y47zS8Dh#^fSWz(ODuCq$gRUHAf8y*La=0 z&Za&*U#2Oq{>GUvb1E^qWY%7kIoH8dj7k;Tgqb=p*4|dH$!YCPU(L7Y(4K=Z{Zh`w z>YETme2F6_gONf+{A31u*?KEPOb8-gwcZL56M~4ZSZ{@h2|>hH#T&>N5fOoeoW06? z)7Tm`A|?b8_G!JCU@Y64xd8!NR<2_NFpdhzKNPGhnmzcA5+s5fL*_ z;U1E(h&qgj35AF>xtX?W+s%QCkjy-DUO;ytV5Gom&I|3U(}%dsw-9OcXWR?sywp49 zyx?+%$3v2KLl_>zb6)D19)s=L>J>fKGd=zhk|mR2J=5b>{GyL-*BgSo@Pj<>rJf1$ z0UI(r@1@?(d#M+eJi?ixUQDrMJ+oxYE3PwJwlyT@y-+pQ3rh~&60{M;lJ&xpyV;wx zGqWTrA&n(bIGI@z6=7MDkA)@qSXh#eElY9|A(lj8xLFd-Ho{Z_jwXAStaq{`M`BqL z6`IbH6l6gxiIj6^Nq1qTuq5Ss5m*xS!7RDgHW_BgteOm1(w+6JSkiSvQCZRz$BJS} zR{<<9mUQJX6HB_nMqJ?YkTdu5ET#4tO zndUK$gx;_7O(g(Fa_A=|$%Zgj-cUP5+}G05P~X(DWNZnRMHM!8GYTajkHkmlpoTajkHkmeKC zTajkHkmi%(4f2dgnrPw39$GxdK#kSTFEEf{jFC^@8bF3JMgkqVh_8rueUdbD90{kH zuPJ-*Nlxx0?a{1`Xp47RG4+ zzrks}#U%{j-tDF#HHHB^G=Sg0{5>k<+@RJ`HZXtx8vMw5+hDD?4c2;lGuk88O;VTZ z6>&=VlA?1RCF08T#i#HZi#_{>5AaIL24w{XsWT}J*}GBX-XK=s-PT)831|><-)p@U zxuZ%r^8M`XFqVWp5e<$Dpx9reLYX4p0vCikqG49MM`^{mL< zbwg3f-4(}*B6n8-EH83*j~{<0J|&a(mRvHfM{RI< z7p*g()EMUa96x@`?|HC&rqz^zKW{S9AjCh%86dlzB7Xd2;(x|^E8=eu;(yk9E8=eu z;(yM1E8=eu;(uPep#UNhKWxdIy*1wxkeFIe*&w#%wbok^e}mYT*NJySlK6?T8^pF; z!rs-e|60m6-iC44%JhRq_w<7f6V}+4Ya}W}9kwkuDBE%)V=Zjj9JmO67HcUk(53>| zMh&oy0VOg#yn;0na|`t-!M}Fd18K1)eB0rik6_?IXJko+#Ti@I+~322Yf>1y4Q} z@Z@6wPd>Kb$w`F3voRBRHbw$ZjwXBXL`UKPPmaWbC#oVuoiUfX0CJhN&t08e+;vjR`o4Mhb{R~#z}JY5B_yuj0y!%X1m3L6PL8!dR! z^n*rFhI{%!qd?|<+m9;9Y*dihXd$yvK_;Gg#+YG_gkF{NO+RQ9$UI?_3_<31=c48^ z7ZnB074S^4;mD>iM^>T^T`SG*YN5U2Xq_4TZ`i_2MlC7{cuLV=qtM_Q>#b<8QD|_j z^;R_4C^WdvdMg@i6dEiMZ_r^x8f+9A9F`cG^h|?Bp}|AeThSo!4n>&n9k$t1lTjOm z29L0JHKubY8U+2Z74w+&c3M1{1{;Bvv{~G&ghkY08f?Vlll*87rj4+X^9%LA95s?4^fTjd`LkS#D_>ZcRq9%Rtg_dz88THQ6Jo7F4-o-e3(^}0Ux@vo)sUu zZYU}ry5d+-eCR5G<;91t9A@G}SJ+5=*kt+8^wHrd1x*>I6f_AdJ}!M~OEBxrOjT`C ztk`5(u}QHao_|J_CpZ#%kV6V33fF_ypXw7_b-fFX#zE>MAXR@r6v|GYt8J@S=3=~Z6)z%EO zOzzdztjvzh*6i3UShQHDt5iLYHRLT=3BKj zcO+Vt%}#C2qJ_?GHnP4&@6^^TTId{m`*>bh3!$G#(?WQLGixFA7gh`Lv1lPa7A?fb zRts?wAuWXG)~$umyFztjyHguSlf4#dc4{Gx#A+e*JLy`8f-Fc2A?4h)kh`!_v=HTc z5wsBMgSF6k+hkY^Wz}S$h1^-sN(;GeD5@56#j&EakgEWemlks6Fq0N?g^i?znw1u6 z2Dl|Z#Mhib3xS+?a>fPeQ=9el>Sm>dnynUUR$2(pKQs8l90_3{k8x($sSVnPLtm04 zTf$oC2HdF)@Zpc1I_4kcIUys*j*gr>*0Xo8^5}Gze|m~Ol;S@yJ^QJV*=aVJ&-gQt zCGsQUw^ks2xMlqp@RP;G3G1!2PqS#B3G1!2 zPqS#BDeJAYPqS#BS@DJzil}|in2|ltyUa0AyR zAKvfJjGY)ic6wrbnz9DT8B(;Q_>`h;5k+f0&fVf1AHgNK%<~R$x^b^HtYSlxzgt+u zjv^%Gy+uv_ZebDoRrt}Qz!ocFTkPDKo6#OI*&A;d&pW~?dDx=-wzo>KxIuj=X9#g+ zGx>XO|KQy``MX7pu|V>gVGw&aN&>gY7|SK=t>)lBNAT5;TW>YSf+}I}C)nG^4Y963 z>80rklxk*Ofm*Y=f{#U4@UiF$KDN4olL+Yw6s22Nv_#Ss98LDR0xuEA7z;;Ybp=&l z+T?EvvLIc7lylb=?!rpZ6_oEq&=sf;ZZc2WCd0ZSt0n_o;m&$iy25osQFVnYjuoXV zTm`VabcHL2nRJCKY$RRLVs(Y-=Yz@LEo$<2i*xcf##UHgT(*6ynwQg}^hJx+7cEL( zpdVnYd5R;cMh`sSSPS$7hkn*38Jd@~A|`+HTXM-n2Wo@M`^XLhO08khk>liVa|f9x ze+T|N-KRxFN=Z!s#Y&{Kh)5~3-b$pjh)D6Rw-PBWB2p@?w-PBWB2wbw4bc)&q+mdX zHPkVQp;Zsiv&xWtR_EmJmL?O{ zO!ql2Q6cK^08NV;plJp0(NM|-4qSwEE!I+8piKp^tr}ok?T`$uUTk#&EG|Jm;CT#rKi&5PDs;Uhq2C@OBc;#g6*=_-Kbg`2J%X2MNZ*hsk9YH^dMe7Axvf+^p3 zdIR{=<86{&*r4ST(vP+WlK{*#o>qmHtrjg?6%z2HIf*IRs=0sd#=3EDsR3^}S_U;+%C)R9Jrp-1nZI;y=anr76 z_q56Ep89q(yQe)oyXRuwm-4*vu@jSi#dVwAqxVdAHFCB-(LI50jod1~zB z#L3awlar?sT%?Kc0%CKfe%VZEX=5#bhR|eszxL#mmcrP&yxW87<4QbSL6a4Ix}OpH zHsZ+e=*-6t1_J{l_nNW9c-5Zad+xyiUfO-*TtiEup)o<<&BAQ2&iba#`g$`n>a0KW zz{J$V=^1}?YwEVAhSk7cVjgYAB#rfW6?-_ zY&8-m5zn4C0o8-^&lMu%>yxT-2PMat;%ep-ib%oa}=eLB`^PwML zY(LMD5LM1M%MS=-fMM!Rz`1DCK)eVkK>qn~xJR&GZZpOmTX zYA~Z+4Q8}kaZ2~ot_CyOmB56cG;X(0l~soKV`kuU;YjFxJ>OskAe=+LBuRFJq5Qjp8MzE*puo9En|lq9bmTOc(JqL6hGU7N8Wm#W zCnNS*>#Y#GT@d@6^;U@8E{J{JdMm_k7sS3G-azh%h>gJu&fYT;LysQJXcr=VR=hj( zU*tfMl(YkC#Mmj`T>>dmnnGzNqA}sc@w~xn&g$16|G+}|~C$q4?vucF} zAB(WyV-Xg7Y=s3U5fT=7X57L8JzInk0FEYmVbS3f795Ec7I@~6Ei$iVZ@jC+V9Aq1Px@()qL zp(iBC&alY10T=rMK9MY_GoR~EtkGLLkFwo=lqQ%ko_k#6Q2r=3c=bvmRQ zE@$bsW)BrW5r$$zcKxt)>tyK`Y(v_~hW!tV4C`d+cG>=V7iKqB;}@-2=oIQEj^N)9;^%jKxhbS|eL3*vI5oI97h3oC`oDc_60<){yCk8ju}!(5(KlL42z zvz`@~yKX2dm%HLvQC#jSfaS&It{i6Ka#z?$T;8d;yc6%gX5k^!$I zyb96fN}t-Pxx7qhp_+Bt@5JRcU+4Pcn>o9-PB z07Fr4r%>;H@$L*$?*;F(DKmJo*gz)Z_f5IT7w~=4P9CiAyuxrT@6s4 z?~+lMCw|n7x^yS8y)gFWyq^hH60~2JQI|}cE-mDdS&9`QT()XOh&i)-R)j!Lp_)B! z&4*L6h*-#1<@DJw#-DC8ZvBBV=nXZ>L+HXqLp>rV7NX}S}AL1x{Fe#h!g zJ{H}{$D%v=*y>JBBBVR<{JV8$S0vrZ(PXbXq0$|?lOwUZllq*r6(JO4LAnzu=dL^5 zg_WW^Dc_5rJ5e9pp*Gtl!@4u8CIj8+&U#k5({)2pb*C$i6{R~}1+ctyrz?k2&C&tHS@tKD+@$k;8)pY5k#BzLk@_v87 z^{w8$dEP(v74P?|y09IqjR;ANoEp7tL+P8OSZm-3v|&bpHy*|4AHfZn%e5tvl+W&He? zX1HC-Qh<;3u%%#vuPj1&WML_Ql!v9DrKzdOSPHterJ!3Z1w}kU)~zfB-406uE@w-@ z!<>gW>~$F|1>JbLCfDM0D@#E)TMB+fECt=xQqZj|1+WaTrQlIc%0p5vO9A2%OToKg z4^Uf19K37q`^ZqxtqcX-Vkmgp-hna{bc> zquWwXFP~UG5*?D9CHl2vrh)f_CHlMb)&?cG&`lfYw$l}Q$2(M^cZ)(VyN^oEN26th zj%Pkiq2n3MtkChiTZPWYqR{zR6gnSUh0aNY6gr+ew?aqn9bv{MN0Yrmhe6Jv&^Z#T z(CJxEQ|J_AK?)ry=dRG*g_WYvDc_5r&`}?((0$uvSfOXtWT4R9S40MN&R}G60FtmJI`- zTGvo<+LjH131LMkr&v&Si=b@(7$rhYM+r*&WI@?&y_KNs7D3r(y_KNs7C|{=y_16S z2V$Q05Zn*Korn7@+~?r_4crB|&%^z1a9@CX819GQei-gY;2wedBHX`)`%$<@;eHJ6 ze~0@&;2wkf65Nl&{RG@axSxdkDY&18y9D>|;C=?~XW{UbL+{IQKL_{oa8JPf0^C>N z{yp52aK8xmAK-oo?lRmj!~F`}ufjbA_iJ!ph5L25r{Vrjxc>|8H{hpgnI_=_u&2$-0#CZ3-^D+eGTpp;GTo~L%9D8_eXHg!~GYyKZg4gxEJ95 zE8L&Ly$JUb+@HbyKX88z_cGjH!2LJ4uftu1`%AdLg8OT@SK$5z?r-7#JKU>q-+=o& zxW9*c4elS{z6tk_aIeGtzi|H_-2V^v2HZcv{WIJ(xNpDp)?5FAfBzNkTX1jEIk^7` z_ZA#vmIry9Ss{bMA9&BE4EMi-6$#1gZZRj6Oqgf2 zN1GF1A3&F!@0E#nw>Bqq%i>6%y-C?wbApN7X!s+d;d`7KzO~+jH5$HIqC(V;(f-zY zvM_fm4G%fV8h(hcEJ7x@!YXmPFqUbwA0ivQ-JL^2Lq@~*Xbs;Z8s2=+riV5BI6l*A z{uJ?Uu(*VE`!Ok--mq>DebA-{IZn#<9wpm*ShmyN9I%Y_8!sgkJvjWd%pLm^;R2kK!h?YKW4qvdO1`BdtYR4A2-M9 z3$>M|zEF~x)fZ~YsxLkk^~J}czWCUxFHRz)zEFH_^@YYBL49#F*{iP}&!xUN605$b z%F@&q1zC{#Ldvo#)$}18R#yUy&qx!|LmX9nmwp&n=bwLJe>kcTXDm)oW@b;)vec z?wHpj0&I?xp%Dco!0?j=*fZ8!39ud!V9#1_CBS+_fIVlulL8Dt*&_h{ym$l1BLXqT^Td%>EpUS1RSA!OVnvj%(nH3_Nqf>htj>%n>r zsg`_!N4t8NRA=oq;q_p>c0E|HaOZBDA;q1&!FsUwoAqEjlM_p++)6Y3>E*GNnBE1Ey*AY3|)A z++>1)E+{?$py?iX(%g2^`If)SW?##r!J0o!~N0UAGLM1q6 zyKp3ydr_I`+)F_g#Jxy4ckXo;Rtoo0z88UeQ6Jo*p0Z7bxi_mO1MYQaJuB{Y-B48S zb;YrwxYtzx%ZqzmIn2bpuCS4~ccQ2qQI~DitwA{N> zaW9^KhJrUal4|t4^KmaYmqV|8DCov{9|T&5QW(4OxVIUrJD1A53eM%CJ$v2|PhW1_ z``-Qc>#dMob5_Zryyn)O!PyHmLLP3x_=cc*Z# z_gT|uz`+r@7cJXxFULTQRB`W4v8rDCT+k{N_wE$#eN()5E++R^+@_1c`D-FOt?l_mZ^)~9 zIM17i{ps32U;Fu0-^%;5_x#@Ky{mqF?H{bYxcZ(|`K$hD)qlP zTlKYDU&Pt3;oNV$>jzeEU;E6vzP#$%s-oCh@UsU4@N@VZ|K;80(Ybyc2IqV^H{duo z7&;eRJLEXGD|9Z1k9LPnP2;Z6xgfsXp>x5tdqU@eaPM`TyE}9)xE3qtY`Vd<_c+e& zbDVphf&keXJ$vc1cV2+1WmQGTW!0wPYWU zp-=-iF@(oZ`mC1h6D_&lW=LttK3Q{f_$H$z@tjg`Vb5V{7@~Btn)CJi6`?zrIM84~`~# z%LnX44$B8eVl5x&deSW)6l6h`52T#C<-=WADV7h)_aaz6P#?yYW}6IKKC)^uuza|) zo|Wapbwg1tAFeo7l;y)!0L#nr;mTnq%ZDp$B+EyivV8PG{Uj|PeHkntfG3ELeDAXK zseRh=(WfjQeb(~Prz{_M{#j~0#gSB_=bg{;(I=LVXC=x08+OF+ctcxTdn@Q;sVpC` zbZ|v9f6<7;elv7nCYEKtGdprD#*RKQc09}x(%6YIcHk#lGaj+t%Gl8-#*Rm=w=#D0 ziLv7`>#d9(ePZmmDBduBL^O7wF(Z3ew8Ak^yR^oR!q{c+7gL7ma$UnQI6Zl4cJye1 zzXp`>6G63KZ+0@`#|%t1|7gHK%0Sa62AX#9?h6}ezTZ2Wa>q+d)8+<@S*H2XpouP? zS!MyE!(`PAjXok~nSQrfrrCrwW|{pzW^Sv`ZI)>^S}r^^N~RN%vq$*KB1pBhZ*u#^q0Tj^&dJBl1q z-uus0WL!P+}c$@A`Xu3JG|Z@X@#pGQ=KjVb#@`#x#!KxyB8 zS+{c8dRy&FH3s!yM!l@JTDO8~VDG2d+edI#6R54Uaa5FKW;KDDvTA~lMNROrs0lu{ zYJ!spsR;~O)90kq$$ihiXk&<`-oKEshz zBdPh;tw2R^=$CAgq4Cu3u3P!k$m}$KSat^63eNiSV}t;3yr=4e{dLGN_6y#=y=6?E78#}qT^NTtwcw^h>q998zLm4=)gJ^&R+aWhR_G}x|Mzz zVXd*=3gG)?-AcW9_a_0~K#TdXQ8Rm21KKP-8*f9bmxNdc+{D^q!kTp}yCtgrB(a*u zJPfG=0;zjBa1qiCL2Bx{6_BKY(*X^q0|KW-eFUciPB_IS45x>s7zQ)I=>U*4xm0C< zr|i+V6y3o9!zo0b{G!hnZN)G8e9?db)VVMAnUDmipMW22YBr!Cb3h>Tn9YfT%mIPS z6V_WTjvf%moUq;sGEt073{&jwBWZ?Aly(|qqC_%7CQ95wCLarA^07cBA6v-eBtnom zkO?veB0(lclRadj193nmM`9rp)tC;M6l6h=iIj7POm|_WKqlpT5g-%w!A)k?HW`M@ zteOlU)1CFKAk%e2Q6bY6$BKeXR{<<9$aLi}6J)x=MuN-%3z?=L4x6k8tjSt`v}i!! z@{IJUyMpn51D6BJWIbTvazMc)o_|J}vm6P%Nausg0fEa$B+0?B$@+%+Xwh9QEe#E= zO-p96M!9o6y!jIbDF;nG7>jkLH7a+tq<*w$*P;G>G+8gmzL>8Ege0df1}vsXazIFO z)_Nw{{*z7e>`uR9b_%|TSLY`&sYHv`JB*>AcnLTH{oy$U)BnNm(TE6$PghkXQr3N9d zFiFx3Ffw;u<-kQqSEM0r)00Y)z&=HigPJ4<)$E-?Cdsce#jQoW1$LvJz~qU`nJQoB zwBwi)mtpqKATThAm4j*}$RJ~73z8vSJZM*f3>u`o_T!9{gKYDB5TU4J8)T#mR)P%L z**k**m)C5D6kHAlD?!$p**imeCCH$_2fk`2u_U$OOYBDj*FmQ81a| z5|v=#l8*&0`B>nRk1bqs5+S%mVYn@rXtKb#zwCSpqaOt|CsBr0uV@1KGs{oc4T)J|Y2`*h>Bf%y5CNVRbJ~#}QgBC8eT-+sZXs`C2I zc$h){o^!>Xx4JY|h&Jh!7L9quHQw0htl!=3?|R>z{#jUMkNH(IiHbzxzN+NUKAgbs zUVrdbpakOio3w8KU0&VH0~5H!%;X&?*q;}?yomFVDTc@rn@MI|I(?HrFQCUf8BCyF^Jr+k~cJg)+A_YLHq z@rnz*?&0?h^?#`M?J`Io+2Jejy^4VY{rd)Y_YRieuIZdfYhZn9TQG}{%4}Ouf@V+z zjc>h`pcxcFQz_mMI1vR6I#aYobgmo&X%4m`)9EV({}n$U@@i_lzCWOb{?;5Glv{D| z7n)3e)+;Xe)RgeFX*;;+nldYv&}Y%NZ}&}$@wacMCz$_7&==;Y)^YIl;NWU-@Ylh? zUj+wm%oX3_naSk6$%hhoMN5Bh`r`xZsK8g5XFMM@k;htVP?TEP69K5R&7V$RDflbg z_ZPg{TCeXVy6-=soDaTlU^R}BtSN(+!({*ulu3a%+<)+H3WXoH@Q)pX!w2@R9*Av4 zTdZVP8vCS&=*Fh}!8K?Z2#1*OJUKBwLpRKKYw&6lN>lk9{@&{IDC$n}TDXQU8f-ogF2uS%~p_9?HpSyz9SbC?h-wpJxq|Ww% ziK&UxGyc^0^l^$V5ghalmeK=tbJ`6p!Y&VZuPk7-+n}s=tN(@IO~(U6boxp`1G@Q# zyhOt5tI8|QkvAtg3NzQ%giFtV&D@^<= zL9MbCW)O&arQoCd%+%L=eZwBt>RWI9Sg0_t(*rr|8}FFY@k6@>jlBd31UZ4+ZsdV7dNHOi}b!M}nbC zl0aGLRZ?1ej=}fab3$&2WfXwPG4ZKP5#Qt;rlMl1M=E$Lk02gcjc)boCMNIm8+*4k zgv#=^)Uq6SSK2EH*S}pIm&QI!n2%uLLN1Nn;uXj6{!i%wi|^2N%|pmh35!SBcDL4NnUJ^wdjxCuPSXcquFVqpG3yeB_G)hA~RCwk{_ zF9MG^zRl|&8z0{9&yeOhJuyBlaJZEU@SlU8B7nu<-_lqjhG*HxNd)|6VEr}6#`e0=Thk>;e8Ti5TVxd=icwuqdA}=f^b5f4ntW;!{GJ@B5__aQ-@n~yo%sFlI zYMMQHbZpY}MN`Kc660s4CMHkLCd_wxXA<{6U~7`vwDTHF&%@V=k0-bto3$s%*YaLi zj0`54TbIqkVho(|u*XxsWc2wiGmu87uM~V4{qvZ&Zk^}<1ocw?6m*+7er?X##ga}v zmIq;Ex=`s5`SnTt&d7dZqG5ct`C!m5kK8*&vn>61%8T)TvG*?UeH>YxZ|jj*aXg79 zW5zZUW}1v=B4r#~vYl8?oEcfx(|TGj%eHL2U$$PB{<54QGnknG1_Be7TnI~G&8~+H zLoQ??%Lc}Pfh-sZ;AOK+_TCJHOMn1@&F+TXTnOa;>eT7;@ALmx|I;l+LLcdVGBxhM zPIXoFsp{(Qud2HGA53O=T%tEBMSg#C?a<+ffhP=Mq$5>DN3y8^v5RFA%S-oCp% zzY1a^YsM3hA5^3jzJH!4&pe!vp7Eq(`^>X{x6eF#TxI%VJo9W8p&3try?e&9D$$H5 zB@>&kPzu*_I!YwqE5vckc$z4|Lt!zzWOBX;s1$a!e98~G_jrilWS6rtW;{)~KfXgf zdw~Kp=td*nYS7ILjb=Q`?2}o=x*1==LVeJ!e^r_c&3MLYGMMpn7d_UDr|W`}&Um`g zcp;b%;2DL}_ulLGoZOu`_TF>X#PCR}M~%JrWDLFon`!jD=dQgtwBzqR!2mo?-Hn+F z&ZXznj@<`)c{@pM&D)QqPqZlW1a^hco?&nnD)rQZOrikR`l z&9Fqx*K3Rnd>XX3$Q{J7eo=d+5W685q+7o=$ADse~fP z==7%T`NZ$RnKuWj(ex4@9rC2}!*kTpQ`pg&@JlOIGWA>KeVl!6B_6-DLf$OFBPiF@ zFQ$5Fe)47Zef651`W0SYsaN4K)l06e`dK@4S{;5@CHAZEhVXf|7aOS2MCwzNpqZwp zwS9G1Jsr6_yxYEv!ajk9j2}UiE|KPRW=n{v^-l;da7Q zu}mrwR{ELKy;VGi_q60gb9m;@R}1f?PT^`>UP{gosQO zTC<%(t7CIjdJ1hr{`>QGziIG`l+(6^_U-=T@HOccrTB zyHaLuB|JG%ZsXdSkG`L`msORX`A~7~b0R#EVKy=}6B#pfW)UV6a=bW&nFdT`jE{_r z*olm4JCR}je6{c)ocldqUY=LG*UsT!BBv<0zqaEGmssk6KjmG+zlX4P-aOdMQWFc| z1?H`%YMu!(?>XIpUj?BRvcVczy{EieZt*IOD#o9- z7Uq4@{|pL^ebBe(e=!eh779!^(v5+t64NbUFxUP9dDE0G4_h@)o08dKt6Fnfp*ju1 z_dQQ5GN;|7PNQ)=Yyi2a_qeYZJngF5Y>Vw~1sPAgKUVYR?}=0<~? zVIKv)dar*&C)%zww39R;!w;X}&7>0%^6ZYOc2PRh>Ua^HtR}U$q}8 zm>1=$X;pKu8$&gk)G^flC22S^OJ#1MYJO4fF)_>7w>8@#n8(FTFUpxA81pqJ+%}Z> z6J+*HYDU@P?#fd3XsN+nk*(};D+Qz3I2p&R?CF@5Jspd(rz}Fs9xiYz`|3o>o|1{L z>_IQ)qV&uOt^j2bWsfS%nmO5Fq6B@wqLe*yUc9n*J1axkn{t1A2ijD6RQ>%>_NWhP zGEYjAA!Q${$w1k=iylkayDliHvUjDiu9UsY0jo>dyGj_P>|JpaDSM3AhLnA^Qufsm z${sJqk+OeE`czs(VU)dn0E7i?wFug3C1`Q~la9Jfi9n**CA1&FpEqDSuE_KDl$PFK zwx^6h2?Ca4KPOqP)wRqWHTas-zS2D__NE*hPpT8Q1WKgi;}naN$U4WF)Mjn&9BNmC1#Pg_UV2Poqbu%qDrmV>dY%_u1f37m|768 z#!&{Zatbwe5X-DAwHa7l^_rNKuBzr&A3;((27H(l_4G0;b{gv#EMVeMcxJU7~*kRlf$-;j2Q`l3B}U1^A#w1zMephii6 z8m9!nDI@`QP`<@pZCV0s$Pe*k4Hz)}Mf)1?WD2iGSh}oHJXs^_pK5shlLyc4LTT*I zU^^)%4>{fb?l!ZIAibXZUcU-yVf9*T-iG`wSQDje)S3;8)+iROVHRzbD^M(2!z|h% zX4l6J<#(ikuhEqHbqpu&62bGO#G>gPKgA zG#O&iSWN~j>MnXL7Ij@vQWkZkv94Iu<$%@2qOKA~v8XFLMY$Hc54wT54RdYsMGi6IqGO2vDTQ>fFBTElM%-C%RA-Os_iC1k0@ z?&t856i-2F4e#ghGMP(&QVLQ5rL=bc6*0@31mO{Eg47z`&*2S@i==~f{`NKxL#p{e ziGkENDRL3=C6Q^yb2ea58ZQ@RtU)!`0-{uqTB{+omLau>1|4e&QiFXRYB5rrxs@$W zCt%(D%eGn6g@HBvW&2w6QfXqXRm56L#A+_Z^lG(2thJU{zxuNkhFC$U@TBK$qpa|P zf|FR078C1-z@>^<%~!wU&U@^EREa3y1N>K(KIlL;jED{YV}! zH7hHBzgAnmZ|fY@>bL6lj^5TohZ}m$!e*>?3x*Cbu36vF)P#S+Gl*v9mHwB}f_AqJ z4^B@Fj!%sDr^ctJb{m)O4l4%w!@m6o?prl03~NbJc;1Cywf$pVdWGSJ{14@A4k}Q2 z>%GbOF&y3*C(Y%gw9rq504F&d1YccyxI7LHs&1J>Z}3pT*nevwMomOG_TK@#lso@LrEU*?*zfzF^lo zG|)RfRANq@=2S*zrzibNdi~B{7#l|FgVRI9{zJYciwCj6h9rV)dZ+p)htmm|j46c_ zmgV#LhYoktcU2>WGFr1XG;H6>0C7BYch)m^rIxipSdoj%eKupajum3cSl~u1&8RvuE2STUW?jg0n?9zE3Z~FL6y-Elby@ek*A5(b5&yMl$yq zj$50Su1e+_9a}43$2D#+FJT+;ca_d8!tWT9EfAWxuHS$%E9u%$-P%~)X2ffq60dbEUN`-=ZGZKi60dbU+p<~AYPJPZh=^^AnAL0x z>VeGL$m}C)(g3KgEDZoxMr#06m1qDuW(`2ctO4j)Gyr80(g5(ETLa*JOP~QLnfMx@ z&Zz+?5zzpq&ayOsiLxXOfSebv0o=~Y&;X{~%b)>JAJk;-lqN$OAXbxs25=WWmIiQL zP*M%xN@HDV0G9(+mj-Z^FiHcs;wI7nbxH%&;ZgnoE#IkA8lcXp0WiBl8o=kiwL#Ce z)F};6CmNtmX#n&Cgq%Al5d#RhW?R7g7En3M`mhG5%=^sR)ByI;xMFL8PzB`V=U=o) zR3DyhsliS>u~YyTdZ$t|@<;mOOC2kLir)>;QYnEtRsvOGR!X3bl|Y@Cl@h39CD15l zr3C6&3AC~q${?WlXk-82CoXLcdiQBzsJV4tAd{4q>!{#EOrC!It8lr464skHMVD%ciaR8*99fj zD6TZtl}2$nV0CE}R|%suiYsm+jZ!Zf#XhXV`wrAcyqy4UvD$?D)OtNXQLnT~y=aqq zrA=`ETWvy#7zoQXKLIUbwFzf=B&hBc$Gf7ln_|i^9QI zHIL9-!%wp=J3{KM7{AQRB}bHkJ3o=e}+mWrGIuBMj!xli5df0&`SC7MR01(O`~>5HP1>26H-QFsEYybIKwF z=5U4^%#S1jb4n&Ym_zTHi$b4TmELf*iV_hpM}=lj9+)Ug0(0cNcrbT6D+A0;xt9UV zQ6JQzu1b?3Fpt$_0OszZ#{zTL1tkS@R~qXI%v}yxU107iVHB9V;wA#~BMQuq;0c}H z5bTJ6x&FQ;9!Yoaqf`@G`Fb9ZJ>^mv8c`}7w z8(vf2*Br(7HL<{C#kd?CPM*E=s;!5H@LR(Vp*6T>3bMbi*;(1{H+EFvK@wa5WBL)s zbnj2>1Nex>bo{g&E@p-4M;OzK#H=v=2xIytF)K_z!kE69&A|4An2x56;-RTi3MJqJ z!E{R(c45t?KMm+YA@31J-py=25=P!j-nVBgG>W;yaE9~!d;P%WOW2p`2!9^r&ewuw zAnf~oE%I3!oF8HOewC+78r;(*`)svX`rh$p_F`~x!E{NOzV{jWKBDGMK#xS<`{>Lf z^fRGFKACeTz+*+<4Vu0iguczv) z%%(&Hvr&!Nm~Emg3A2&&;xXIptPIRH5(Qwm>sLh0JGgikA>N;3rdRF zt~AyaX1g4)x-i>S!YIsk#Z83S4GOax6lOO>U^dp`(D-*B_o+wq+MEW3*$sl(4GOby z{}bK~Q6eSid1-Bq`SaDnF8qAV+p)v@bR&Hr>d@D{L$vdIsX28_k<9n>hCU z0kBg!F7U-Pu33PmFU%h}uwnp@8YR!Z_7@g*8p8wYQQQ7xFr*p(sq`DGnsE@6pZUFk z`Mvw~0CCkYdjs=(kC+v|H!#2ViCOV`1M~Zkm=(V_Fu#wn89bkm-?5;FC0&i{6_T) zoD`A{h}A%9gMw7-nrVlKDRL3=&9T4-M5!RPQA27YL+YEKG5IvAA>u~I5HU`-L&WTo zrZBLEhlm@g*nKFfO*p*3r;&*DG;C%$dZR4xY2@MIa-!8nqE#~!v2aAPn$ zECo{B+QbZU6nl}8DKV>`Mpi#}{&)MxZPc?D z_(}4@7qe17jjVolh*_zhMpi$?Vpi&>k=4&mHbV_1R6l6UD4yqyQ3|GA%Iw9me*j|{ z*vW{hMpkSu{EvWv)Qk%x7&U3IHzo7C~P*Uf5C(^I*GilvdIWDd;(68Ycm;0=e3$J%-Li?oc!RX8)uPK+9 zh1!Iez4!-rf6l&6-K52A6N_29Em)HhvrP^$i_=NWdVgmdQ*)Gplu>S`&o$@7PL(wXq#Bj7D=I$plu4)JAJDaw9RQj zYbp(zfQat3zYi`+O~f>@MtGgfKBALGKqX{p1UM&JBcLKgBhWEx1UhDoK*ypHD2tFr zfHT}0p(&9@pk(4}1jv8KL<}V&8UYoWtr1L=C20iYym*b^c2q;ZI9I(1Hf~$m48o?Dekw(CW=R==KXaX#x*E=@JND2z#7>A$Xe7dZ!4D08K!#8!2|N*BsUe zYi+&Lp3?j8UonXQNkE=`{vT~UG>0WZ{Pj+4ZMA;op+>vji7tQ@LlY~8(tolK;3lmY z@RJn7J~1oB(8P+NT+B)_G_hhhC}yP?npiPZuo(&>p<+POM)Ao5J+{{;qc-moEXsn;64i&9@iYoSwURpVm7qQ71I5H79-VH}u`4rjnYOzTc)Zi%_9CrjmfipzrVh)AH}L^xdrK zyID;oH7ojVcF;FYC;Bcbw2i4HioTl_eK#xmZYKKP$xPj>7C$vx`riBq(RVY^_qRyQ zFnu=*eK#|GZB{prti0I2`)*|cQe!X+hq3PZK7{fLKc0)Innfu ziV*syW2SF9X8NXMp>N6}MBi|Ro4#>JCm5lpWa85|w2FhiDG{M>RA@GRnVezMCWH8;>MQ-y3b8+N|ljSIn@;zfk1(^F#rCF&&%id9VChuk@@A3}> z4MnX~YG(32C}u_8%}m}EVpinc%;a4qW<}o3Ox|^D28kymZ!~L5-jsrAp^ChldEC3= z_JAxDc>`a`uT^YrUOw`s_Ob->Zf5ds-5fN5LJFktyM$7B&)-bwxhv^Ps_2;&^g4^Y z1(KE_Ys;we{fp1r`LTuJ3o{eb1f#cM^kvof@zDfcpHMbrmr#W$tNkXDSs~^h`~QXhpr63+x1DEAZapKD9+_#TKO%TSP0iD6NS5pIG{B zN~8omZ!WC}ZAh^E!oL(JlI60^@y-o@V0C^6egVm4UK)e12? z>z!m_+Dc*;yI#<%Nv#mGM`$His}-{kK2Kt{mBj2La!y#xwu+c-WifkI3Z%qrYcQ8o zY-jk6>Yb~g2Z-jL`nbI}j%t0-%KG3knSFSg^Z_a$OCP{7(fRjOF# zeLz`+^Z}gV)(5SL^Z_LkUmrmFJM;l1BKiQ8nXL~HC9lBq@(~IU3K4EXxEWysLJ`6( z2pbV@Mc9P!0fgHSZb#UR@Iiz-5I%&k1>qYIK8%2!w7hKy+Y!DI;UfrlB776VM-e`T z;3Ir9!d(a-N7#Yz34~7~+>KC-P=as|!lw{+BHW9x3t=}xDMA^-9)!IJ`w;F!xF2CZ zLOH?#ga;5FL^z1>5W=SsK7&w!a0sCi;V?oKLN!7SLM=iaLOsF}ga(90geHV$gcgKW zgrf*;2<-?R2%QLB2*(h*5so9AKsbregK!GrG(s;zA3{IE0Ky=`5W+CR2*N1B7{WNh z8HBS469|(CQwY-tGYIDpW)bEPQV8=1=MfeV9!B`bci(;Yv-tO05FSDJ9Kz=jz7^pj z!qW61THfOIq5EdZ(1)hoE`vVA{YX8^73nfaAI9o3pbyVy3$xz`q1To z)uj(zC5+OCuDFTxVXM-Itx6xZiayjU`G6yKE|H(9ty&+pias=C(+Yi9?me7mN32`D zkMqJo!+q!jNSeG!36*p3<_i(()D4h|q*o5i_5(sCv}S z2-wdZR^T-+=Y-RRAVcv#<#?*RAVcv#<#_+RAVcv#&_5Z6`4>qqKVsi#k;M8z>R@wv<=y= z=<`Z~rl}NID=V-g;*uF`JSL5gp}ClJ*@jm zI`e|rAN7&*B}}~70$Kr9$^z`DQ-GD1+PGGLZTnPEX)Xa)UTV9kumFRIAOTiPXBI&O zQFZUYpEu-ZZeRw51OfKbU-`;ctN=Tz1=vxUO*9*r9rX&l;n06Y^!_AHA<wN7V%4Q8j^hR3;FQTFrHNlr+~-(p-2onKmywN)w1*fYvhpI?76` zLQ0{O)=^Sg1zweyskb&?d9i0(rBx?pwQ3J8By4IVvyaS3X~EN3N( zrA5cAwCGrr7G)7qT5y3|X&p_Zv?!VQN()`8LupYWqO?$j*-FbqS<*}la$Y=XyPcIm z+NRvgK-#DeYBH_TWQeq5H5rh$yXdh<+jT)nN!yjix*~0t16CJlyGj^E+OD{XNc*TF z?W2mcj|yq)nHX$VMl&%T(x=iuU={vs9$H6*w9O7cM`b4FsG@A#{{(m4lt>BU$>wE_ z_v()_Wluv^ zA0?(P@E(=osa?g6@~&c+$Xo)V5|FitTa2t=jBImbWSNa?FtWgVijzXpmi_H#1COe8 zXl)=XGjxBMA{Qaw9OMYhQ{>pD$+3;e(W@}z*ybchoI>RIEW4pSf*jivIkqWsY*Xae zCgj*=$+2RX$gz#c(Y$DGw!Ljr9X(OvXd z%K@v499<=hB1c!;MC90}$gxe4V_O6{wlO)rD1E9T$2LWdZ9)0ChYa8l%mpM+-5h*^5CY~%fCw{Tn}9VW*%MUL%Ej@u}5k=LG!9D#X? z9NRTHwyQD6b|*RF6e7oB%CFe#h#<#yBFA8zM?1*zoELnhtewd5-=O41jCr@4 z5wD|&1fdek%g?M#nV(x)nVY*+NyF7(*0=n?lnK}#JaQi7g07d^H! zJ@!bJA$nX>d-a%41MJybwqnDM@H^GR^?ep-I>PYyfVba0xqsjN{$&5`+2NEwd|`MH zBaVj;)zsskp!5uq?F^FT_t_!Hb`6sFNu+jA%nBsi86+#jtU$7zL9$BB3MAVZBfn+;_SNBkf1&Vk{uc(I}}KEI6)Gp5J)~x`4xMe5g^&2K(a%D zWCwxd6$Z%;1(F>WBt4%%vV%bK^9+(53M4xiB(F(H6i9Y3NWLIu1(F>MlGnwoKoV{w zDtM91KHN$m32$eCBs>xglJK~IBpowI(lLW19ScZO79o&?3)~>tkq9IynfM@yZo>hR zl!$;NsxccRO_U{pBywInNV=Vs0g|TN%K(z74{9fu!q#l7gfw zjdcZ*E(feGkaU$W3M5@|6Mz1Z8=~uxKo2<2ZQ7`F)NS+ z8N#sz-kogjNUsky6VM$Dl0KPB09XnnI~XK)h&dW0kuuF?@8h^gIt-E>3M4xjB+Dss z5%SFelAt~XlARhPI~7QFIzbYr5J=Whe#Izgo+(^4{=6YSv|~IfB#`VRko;B#$xa25oeYw#QW6D{oeYv4Vpbs8$spM+W(AUPBT+#Q znSB(CKoZ{00!erz8YJOy0ZBS$kfdVz3C4@h=0M|K|!NKA2L zCv#+vm=#BMGDr4_S#e}1bL5bi6-Rb5M~<->T$zv~!HvX`S2%?(&5@nVkxz?RaU{Ty zIPw`Oo*IzsWR856%q8F}#gU!NkBHD+_9iLxY)M9z!n zNVl^xIMS4R88{O4K~3gOX)?r-v6>7x(p~ge9O=5Cq#Wr=V_k8i%K@v4BV8qo;z(EA zL>$?rII>G|WS4NHexs&~Ir1&(Qx!*cDUR$Cj_gt#iTj`Uj+khuhp6a|u943br1js{7jOcd9_aglTwB)b$y9%GQ~rpQIeHwQ?9 z`V>eW(;#_F4M-ky4oKn@0?9GTuh{F30LfztB#$YOJVqe-6AY5a6i6PkAo=1C(tzYK z0?BV#7TENJT)SDj6w1S znM(jz3M7v)NWLWIXplU{Ao&`{MbcrAJf=Xhn?dq*id=+zbATkMPl05&2FdPVM3Uap z?skGCP9czdoAN96jz@rGw*tv-1(MwalK+-LvRi>olRAV+snkY*GN#wkEkaRmM10+qk zmjNVEAJk+vOOqjxjMZcSlJ26%0!h~eB?U=W8tV!qT@F}XAn7V$6iB+_CIZQB1(Mx( z^rgSH&>aDi-3*djxKHh|n|%j+{B$dj>=uyhRv?M{p8#eXC1M_=xj?d;L2@T&d3x1{ZtKBrq#1uivaY@Ia4;f?((}}IH-ltRt$lWPYmmfG0?AEc zRv_8UAh}u03M9K3B)5oJfn+y>$jA!721;knCoV>}Kg})JCtt3*O*9 zuBh@jQRUN2mB$rT9#`|+$B8Px$W(b;Q6(snp5l*7Q501kC#uZ%w*H{~;M@r-uY#Q; zk26*FHQIK4LhsRkoT+k%%szZUR0-E-Q6*dwO_gxJP$eBRRnjq2B^?V@QWhbqgbUnM ziN*?k`zy0udmc)=HP3qxhXs7Nb(6;*&oi&m`Bjume5yR|q)JLes1ntfO_e6flBg0n zFPdNHj-4Yxkrev{&ho?>r^=Ok@dgx0o-J*$RCyvymGRe0);Fc0Qr^2c&QN)o(l$d= zYIG7miQ2A+SwZD-hRUbKtf2BZL*+AKR#17Iq4HTa12PjrC7Lyghh|PGm=;O{dBGl% z#~CUw9}UPtjZT6R;nxE13Y(AXY3}0$m7e!BnM(jz0+k!`zrzCxEn+kD<=D0TIOFZJ zZ9)5p##>w?Cfq&m8pp*&26($6{}$}L>FqewwWGYuf@647bhGKtK7<=|W)a+xgLMI; zVBKHnyY=VorsyX$>z-iNee*LWpA(98PdHc?rxWYGN_iLKLsJo~djiR&S@(ou-4n#R zKZ#4QnSKCYN)O%*I>D@ah^FFC5bHjQm}alb6N+_DFzdc9MNzDKB4FJgwXAzmvo6?{ z$mF>$+agbD);+46KX#pcZvinhddStR@52 zbr(Gr>$)x|DeJn@SXZp;a=_|hT~`UCSl1Od5$m2%ta}2F=ky5b31MA56^{pzWnJ!5 zPiWRXp;-5XuA0p5Ou0LNb@2 zK@01eSI|!|VYc#q=_j50r5~Wr?wnx4+{Q^EX$N5*pwI4{P@}2l^Pz??i|NcF6e0&< z0s%pozw*_ue$^7@Nlln16=9xKgn80Im^hsXvz-0Y6GfOO6=9xKgn5z(^D-{M5avl5 zP5l&pnYYhRTEeV2N`!fm2=m)vGlY3k5#~uI%nB)rBFvKkVSc|Q%pU#4QxGNbz?ME+ z(LI_lPcmU{BeRdJi7?^%EW(6Kq6ri37s8}tCQLeJ!lYv%Ov)lem~ercFi$2TOiCs` zVS>jUgh`1AVWJwd3DZPb5@90e#S^C6Ss8?B%DoJPiTa=xb*D5LBFtD#288J@dMv_p zT~JcObfvMb2-D?&)kT=D5=IfGD{dmfJgErtBp!-s!aNy4n0OFb!sI^nq$bRhiZD+K zVV+ckiTj_(W{eUskJwy<38JLfk8qYfYnd>?Xe&3G3Zf*>zCK_ckR@JEc(Lb0XbsMf zU1sfvS>4`R-B!;#8PNqWWu9cp>>CU~Oi|`ZrpzHRE6O~{lsP75MVTj=GAG2WDDxy! z<_w!boe3!uP1{l?rC?gAqRf*_nG?eST`0-~Ho~_B-VB>h>JinGOqnS%8`mq!1Xa@5 zWFJ#zkDD@SZ*`&;vQ6_kaDDz1=vj~OAvG@}h2+I7AAD;MCOPM{I zGJBXZ4aVJplw2Qo#3@9UPqR->g~>9stx*p^Fgb4{8Ifn}^F1F&=#Jr-EHE+{Ejy3$xzVCize>HFwyj{?gc0m~i*mbm{3Xs%Nt z=Bb)%@h3o%V!t9;uIZu6Ju3&6@H=_7Zp?z^sW4c^pQb<7SQ!jmqVNorJq(r4Q`*I- zV+ED?NrR79#jK#RhoSPCm=#p^FjT%EW(Ac!43*c}49H9fm00U($4193HJ;LIKYJJ| zi^Qy;5|jwP7I>T3+@qnghoN#anM=G=8Y%&i1d1~Zm8aZLxyKB1B4xxa@OE%gNIHN@ zGoaU_IPw&8WHCi9LcTdT640kO@|5PtQ!-jrxZt?3I-^pB#I+XF-KO3S#jhk=EyoRD~^O42?`p? z?86zvk??jFN5Uh~90`vLN76BKBpowH(y?$PWf9^?xWLVkrxI}_B@>?`(Q7z3k`fV) zL^Wn}q=~X5jzrFj=Sa7+GC0zddl@(q^+8RhRhkTOWUM9wj&v727Du`+C@Dv}(pXm< z>2kp8;z(Bsqd3wPHxWmkQXF{-kG?cVo{HeeQ_PVa(x)npJf%4DlyKxJ#gVxGiC?-Y z5%VC;#gV6&BPS%wwak(G%F0)43LJi?dU*M)<;c^EXgugpABTo}Y-pd?$T5;rQ z%aPYCN1i5*yu=)NT5;rQ=ExgT62+0HnIm5kv*O6p%#kmPS#c!XNKo(!nSHpGI1=8@ z;z)QTnj_(H;Yd1Wj-+GeNIDjdq%1-l2^Y9I@^m7Oq-5fABzg@8M^Ylfk*LOOjx@1V^4`j(kn}RK<~}6-S;Hjy$b668Asx%j=Ygd64Gf$kWV` z??{$wnIrGtyK+k@;diQsv1!YZy6$%k~f+)^{{D5ie$b__4i~G18Qs zG4eEH~&%!P9co!p!|xxz6gx$RT$Z;FtV30 zGWc3gufoV)9*&%&Y3*LZ$nRo|>{S@q%NW@sB~cjJ%NW@wW`&WxjFCfPRu~C45)+J( z*@s&RBjN2VjD$y`F%ljZjHF}6NIGVWq+`KI$|8i3aDf{mdlO+KB@-Vb(P=m^k`fV& zL^Wn(q=~X5j6}|h$4IxcGBDDVdl@hi^+8Q$LYfR=WUM9wjC2=07Dl=*C@Ds|(pXm* z>2kp8!bn#MqcGAHHxWkmDvaz^7}*x!yPjh51bL4YkRvZa1B#wMu zil>GndzmAzlDPzYr8u&eIr5sAqdBsdIr0X_Mbcr8>=lmunpfprxR~cnc+kSH6FMr_kw|;r!@80(LTfcbg@80%pw?44(fsOU}ua5q|e&ZV( z2R4r2SKY?ijYavJQC`p6>%EBo_dGxEcF+8+-|@Er$KM7We;acAZP@X*5y#&~9e*2h z{B7Lvw=<5voellX<7=A;{VllONyp!&9Dkd3{B6eZw{woa%{u-z=lEO7@wa)$-_AS! zw&3{N1;^hWcKq$Lj=z12<8O~R{`NV?-#+j7+qY)?&8+3+WIoKBb5Hlpg9+%QO0v9_q7t$e$-Y)JJ;gyK#Ny z{jol!hx%9#y&)x0dZ>@}(3@gbdZ>@}&|6|wdI)YLxP6<md_mNqPu5FJ2G1 zot2@7Ou3gq51~G&$-E;?hV)RZCIda>E_y6ISH~$O|o3W zdT4Li{=F-mLR8@KiKS^-BEoP;M`dAOW zBW9(C`dANn3$_*Zc}frUu^uX9GxSkHJp}zj#jD^H`n4WHek6FR#H{oX1P+<&q6i4=J zj_hZS^eW6U-+m`Y;uPY@6y;a!4McEczv9S##gYALc}BnD$bQR_7taw#_7g{b53bK} zWWVCbe&)zWq$G+X`VBl{C^BqbA{BhhO(IFb?(jzl$PbEJu~B#uPRi|0tUvobi+ zlzSOC67@k%<}qn9#F4R@3^>wV^jI9}x}c;S=}Kc=aiq%utBWIDC5+-oSKLG#*{?XV zACJEDGT;6Pjs!R2F<0O{E`6#RSMOIG*)JT~uQ(F-Kk>^Gl!$qd=HkeH=E$cd%QeiA zdk*YBuwonuzf(PI`K;y0fiOoVU!Fl_XN>G;jJ!xmo3SW`k@!iR_NbT@M)osCUJ|py z$bQDi$Hc5KvY#>XaW(@h6JjK=k&5>sr!b%~vY#>XhL{ybf(r>FUy|Y}jO=HOe3{H8 zz$=B3{fv>Xh&dV~`xztO;J8RSjFJ5cBh4_k!N@l$auM>)fstT7g^>dqBL@^l4mdFq zrw~SZ-(q2ZFaje76h;mxj2uwQGX@k!4p@xzK2I1qKp6QLW8{Fs$N|R4A}NW&$N|R4 zO=4CUIlvgXSDYlI}0P>k!XyB#|0zlm@$%$86)XfFp{zeVI*AO z#>jz07)i;*$4GP<4veHk1S3(6*%)b}ED0l#^Wrhm?W_!pH053fj6{757{OBL@^l4k(Nqh``7J#>hLRPgNK> zpfGYkFmga)B<_F07oQR_57Jy1IlvgXPqJLY7`b;(>7EtCNcf%V;qvD!Mh=ECauLfj zsPN2@1I&?|KW`yoKyxI15~ytvv*O4B=E!YgRvbCN9C@dh6-N#*NBV3AS0?00a3dA3 zhf^5T967)o*(YYjkpM&D$RR17;>ZE!$T2dPc!QcF2bd!##2n3$1I&?+a9kuE=EwoX zk%P>U7b$WP^3B1KfIh{MgPJ1;6-N#_ITEK3M?OyZ6?;Pw966{sa!_&PAaUewl-%s1 zFsL|k&~oIp5#q=};>ho1jvQ1RImjIOq?AN)lX+U23~^+vCIgOi7d;k7x-KXwN4nBjR~+eb z!0O^iR|%sy(iJxmM-D2E98?@R7{QT)%#qJXpQ<==P;um-aO9xkNZkL#FV9jU=0Tc^ zBL|ryUyv-Du-zs+*w(Be3LFUL!UkH?d;>bb8k!Crq8IRmdk&BQoaisb4 z)xsafPqUuYyX8w>qvvf4cxQY5ZQj-m-r?ElsZ{^K_M#bM-JZ67*xP!$cW7|9qt%}q z92*{*pBSFqUQ}sfePcS7?`_@gHTKU>nJE5b|I~c{#Kgn?z{CFhoQb~?U6E&);;w=` z^=~D9Z@^ai8@!+hW`Z6>svvhrL++4TyE){9T%1CX>ytBz@u^k!+RY&axkCzaht%55 zA%fgJaG}}ze~9PY>j-j(2y(vQA-7mcLXd0ze6{c=3Wo62u{-YY{HF@w z(*GT}6vuC0+gj*#9BOa4HTZG3qpgvD+(MR5(O)X_KjGQ1!`q%;Z_@duYw-7NIJlDz zjCFf{wW&(_Z0TM6@zS2VD6Wlnv*+LCfBMt@;ahPTTQ_^D;kndI|KQo)!Rdirb7K!y z-rSlOs!3CGI5D%7nFZUPzddj3y`1gb+?YSmpBfzNPt8=pV|%6|9kD@g(%@i3%rkdUS;8kx3$3A zF)(`=SL}T>&--Y;cj#kYWx)jx?nAjvYQZV_a>@p8hsmpc2-bhRMzQgyf!ThvU`mPp z6qWEzUXO9r;oFR-3cbTEmAyy@(0iM=YhrrT-}C8DmW6zId!{cdKM?849Cf@s|3n_L zfycv6-i}YaZO!){^fT&a>m9nT=|i>T3pnc5?fDOz+WW_ADDpk``0c6wsiFSaA^)Cx zU~2NVe$eZvZtv)AJ#@IC*A&Swz8lf+FwGNBfT}!5FMDVc2?Pax{e708*lF@f-~694 z83#2|C^b^(RltuhZK3K|iU2_(3F=}~R$WvUWc|tZN*^M1uv2bilA}XVsaFesGvD0E zANr8z|585k$Bm430mqq}kbamunSX?;kN;wCRtQs4jpiQ5aaO;3YjCH-{=ZCB;A_zM z+Ya3Q>99S2cmCF!x$Y71Zv*jakF9vM$5y=BV~E#Ho_~)Y?iud92HQu>|2a#uJ%5Ak z)>Ecg28F+Ed;YJ`=aLV95PyV$`n1C}9cWm$n!Cl^ciW3LnMON#POA9>UhnwSnc>0I z^sKpQ4{ypk`Gelpjb7FK?D*7Z2fC*1MYnrfZ}Qp~#z$~mfIB|VWNUhecdp^U*I92f zMS1($$G0F|bP?QjWZW~A8%@Q3(iWe(!R%X?+6HG=;03*a&Mb7DyG*`;Z{Pwv2@5>* zsLBJuQ<1J=W7-qktK5?ARVp`_658yMFdo!sI;IQQX?|o}4%}mVA?l~XJ-U6`S8g_m zZ8GQP(+z6!w=Lc73tlQMokmuMaMxcg{Bquq_a$%37SI0?Q}2HlG(;S~an0Fi&0}dO zZ|h!1hh%E9x79plI{N3%wg-gK+c`7TpBhH5qq~}aFqxqPLj9H^zrVS5=rC0!Am-3{ z+y-50sYPUGgBF5s&zD=O$(* z=I8wW!Qs@*ZuZF#0242#gX5o>++E7y>gZuwBK)l(>D^^j^y9A?UDCj8Y+Y>+ zeHbwVV_Fi?iETEOP=uT4kp<1PX?s2qQE=wXfx#feN8y?fQCTVy32z|5O!^F|vA`i2 z3mj5of#?Wn461^>X$C`bjRg+zSYU_vel3p$mX?*R*qk!_PW5o@Q9F_}Y{vr4pRX2v z0oC$--X}ll`B2Syo{@V0WLjsI)cZ63D10GhE69^aN?IArPiJvs&w@=J!L~@8nB+JFDMkI%L zMDn1R)rjN}k4RRq86%VlM1duDq$5!O>O z@v$C#S9b4&%STxR>rsta15rCn6nU~O2J4aY;<4WCtPHF-V9t-PT7nBt1U1_Wtn&tZ;Ieaq?v` zE1Vo=oP34Nz{`X<34EmDZTl_@!y_6ehZ!gD6tluf@FC%(&*ovhAL=mU5r`3mlOsHbe2j2%gmCh4#56cLqHuDAak4{7 zqHuDAak5*?3MWT+p=6Jk6;8s9#0Gt2_K`K=B)px4lkiA1PQv4YlXT2DNym(nbSyYY zS%h#BE^y=INFto1Wa8r_Iu8dlgN4TIO%p)22PrCF9S}ZKB&nI zNs}R*jMZd-lkTF&!b#T!CB;cs8tV!tT@F}XIO!^36i&M0Cc;T9AqkBVk0_iRiNMJb z#>p}1Qx#5*D4ZM-oE%X&iTj^0W`Yti57JyXIl?%3QLXi6^f~@zn6-2=n9% zWG(?`DV`i*p1dyRXr3Hlo_v|(BIz(sjwqfSWuAP6A{Qaw96Sm5Q#?7Ud2&?o@W zWuAOn%!(&RnJ3>7v*Jm(k>J4lUenTjxRrPk-p=AlcqE!9;c?+fI%b}vW9CUZ7M`Rm zLOclPw@p%%xhl3|65#dQxV>VBkC`;l=nIjVRP_djvWCQ8ISNOSSzDD$K*S$2?_#uQR5q=oqUn2Yn!cz!8 zitu9y{|ezU!jB{TYlMG;a0TJZ2tR@FZxNnG_(_DXAp8`_|AO#`2wy{Z8R5So{9g$FH^M6j zUq|>Ogg-`j72!`1{vU)tMR*P2&k+6`;V%$gNBB#Gze4zHgf|fW2H|fJ{u{!Z2>%`7 ze<1u%gtrj>4&i?x{BMM}5&jxKC~Y$+sdNN>5~zERTbVKHDII~IWG)o5(h;Mq zBZ|bVbi^p@h)ryUu1KgOpc^RvI!<9s>xfa-5shM2Is(FgbVREZPw9wJ))5_KExfa-5n~(|Nr!dBsL~PUy8~uidV(SsA>SN20?@B?#F*9*V@gMiIdue1 zAsz7uUE4X zL^EQUG3ha-A;wrkJSwG78e)t!#3eB+4KceJ%5OmBMf{s~3(6ML;$|9s8-~zXX7)zufD4F;g0zHO9Lr@~3A;!SsSRrUShLXx# z>{9+6Cd!gD1ae-yhHyJ8LqnKyFN20aeNdBmLYfR|h*(Vq8p2)lSQ^50K}j`)D~)xf zAzThvT^hnw!YB>liknD7j42HBS+<{_F(LyWP8cvi9uF=Tn(eR!lNz6%dg$(vviA(}g zN01UTIgT+orYJ!pF%>!DC!yH|F)MN$V{&{%%!(Yxm>e&PS&`!yljEao21zC)N01^F z?;58tuE}wX$?*j-D{=%15;{O^#zsj<0fDBpoKl zF-4B%>r{puU!%xH$TtT$0`n9(j%#up4;IK)m<6)qPIAO4M2>G!e#PFI2yz?;?WI>V zjH?moaTWOpo3Z zR>t6yUB-*%U0c&hjWazKidoSk+(;-;L}nk+i5}tYEP8}TqUjMH7kZ>)rbjwvdZc5a zN6I2Zk8pvT9>){WBPA1`9??}e=#df;dPFs5)1!&9Bzi>7i>F7ovoh$>lzSQI5%ob$ zW|K4-qQ_WG2K4AIdMtW$T~JbbbfvMb=+WhX)kTl45=POZD{dls99Q%>uIO<*f*!}2 z9yd#$s_1cC(c`$#740ag$m;diQs zCw|bv2{I&* z?3UswkQ`@_>>+ar084@7ID=%Ln4>{*oI!Gi<09!WNRBIzG@mpzAeo}bMaVY?NP_wl zNS@Ikc}5LEo^gUCP9czdl=3U~&PIUb8Gv6JB+n?2JVPM)3`%W4@(h7w34WRFmCo=| zh9LsUGX#=90Gk2HGYTZnFi1WoB~c)GhC%XiG4BY2Aa$Y=0x}B8)lBV3t0FtN=YBEnrlOd3d)novY?xM#6N!JA>1xZ&L>k1@Y4p?0v z=_+9qNV?)C0?9K9B+n?2JQD$uXBZ?ebDuh)mol7DAbCbW@{9sW-2VhHS11wlAk77m zXBZ@(=Pb{z?Wyd&EBB@q{7&_-<6l~kJZtO0>>IEl|3R-jCP*G`E5n{hOp+)*ljIpD z$tNjwGajXeB=M6_?I|%Ul03sCd0EVgB+oEOUJ-10d#Q>;`Jau5Jj+B`L^OAni1Lq#<~HNhLcCiS z{8vQ7dpMowvY5(H>`jE}@@AZFcD^&vcow0->qk=d*R9@p?+N*3X1IS1zswBxS()KJ z%QM^_vf72e-wscDUMXeep+0YacbkX3@XXF+zS)_~zt^ui3sx|@i*3mNX0uUB*j9UA zsXsbAH9XsI<_Y}bJtej%o4qf15U`y22l2}~>JFlV8M!h=t7nN;vAF7c{t!!NOK{;b z?71QTYk4o_@fK=(_xWYze%XC~*&aW%XWxUodmrufIG5^A&6y26ceOVkYAwEhr$631 zKR7)(IXso}ANsU^cYDX7whlj|{P+5~FV6037TVZsW_WhQWVJgusKDl)!}GHTN_UOS z?wT4-?ZTAJY`-d6*4~nPN=xrA+f!DKeu3t0cHWImDch>sI~zN&C8g;t=zke4Z?`Uc z#!pifyK`U6?$X`%da&)O-E1^9J}@|Kw`rRhDWlU(8`zCqJ?D0(f*n!KhM#j&{WEi8 z)2ZHp;gRXt;av-}XKAy&BySY2w(Rl+E>=8Bt0 zt(_IMW|7BicV}s2yKH=S2fD>?#IM8NA+HkuJ>-3i$;2)m8KXPFjOgvO17$uZ@y)zQ z#3p?g-iotHhZm2aA0V|bL5Ub>C4OnZpEu;+>J@oj(Cyo2-X|#bMb2^}tlFCM8rIJ6 z|9d=vX|+jsoy$YCPUb;>-fn|?ZZ`GV-qh^)C>G7kVOdMc=O4X>yoMjT``DrSj{4@> zyLbA{)!iMvHT7-Py&d&U)ejY?rhCm!y2W=}hg&hX?MeU{JQ!-k+-dJ*gqRBhE@(kh zm%%Lj@jb4P_1;<5dpD>6rjaSVho2;_s+83dqvDj@1146_bQvA z{}Spw+!81rHr4;Kbsu=cq;MF2-jM$n-fNz>9w^r~q)Y{kaHA;keU`;{v6!R9H?AE!oOoV2$32^##@T>< zyKlx`^@qB49N1$!(>Rjow9RV# z+03U*s5zYp=bR2sA=TYY`4xMUVby&T67ZU*O(`c38oWM~&i)E7E1#e_onTq{goy45 zE4m+lxWb-eM0X2PF!MPRYCdOz=X3g`6iOja@O;jYm_;F*ii2z-o*NUh$S9)_;6gG_ zkl9CcQV8&LmO_9xq7?$XEee5-Ss~CdD+D?gg+N(^6v9N5Lcpz*Kp{{v@fE^^Qz1|y zq7YDp*$Tl#S&~9P&Wl$FZf9jE1XJ#1Pzb0GYBDp@WJn>zYBEp=?xM$12(AlCst{ah ztSg1!a=_|R2(A)FDFj#CL<(U-6oT!C!y95x$b3$XQU;j6L2q5)rKC^g5n-zgCe(b+ zgv{qmsQDb+|AYh=C=oNVnQJ}=N`PWNCRv6S2Ccni<$Fq3Zdo}TPp*CYD;8}g!z+Vg zFDo}CW~QHDrf>bJfCUxPPcYMWh*>fH1T%fNm=)7cFw^&lSuy=T5ie4?v!_x(?Z%-e3UVUrP1-r$jGAOHHz%v_cy%zC9i7I%kkYeSYv$m4Y8K* zyKf*)1+kMFVkc!9$*gdnbV4jnA&9-fH8K?ev6Bj7C)K-=lL}%d1!5<8QPMC$>?F+` zwKBv`Du|tAh<#Z~p&)jWA@&t9GuhkK?UM|#uZmegEGmO2c#;f-jB zg|`J_>6jswju~RrLnFc*5!cJ1+lIYMnSAA zZX$@CR1k}Ynhb7lL1$=&x*x!M?iykz8DihyK6NHo)?guaQbFvbKBRt%=7+R#nx8u?)Ujk z$wvCt4fao7iDB)^o6M?=H7E&IaQj0vV`|njKW!z!lx@~_jaPh0klyQXk|n`)O3;iX zDoKE!#N026SxJIPmIOD%tR%rCOM;igtR%rCOM;i#42h6X5DlAONo zq3C;x>AOnIioU0qzU#!S=zEIkyOGR3vfg1nz5@4V(KoyiP2Z>ip>H~7`le&1Z#owG zrYu7AJrzaYXpsqqkSUq?^o{Fv&^IL_^gRWN&01t)qAZENk@Mo|+wH6j`ZncW2Kq*Q z5Pi2wlOg(!)nq{5?xM${Z`TDSrEgan>x#Zz4p?3E?J8jueY@f&qVFk1-&5$f)8AB_ z68bLn4&uLHamkcthmbqCPo2_>OQsZkPYHcbDf-6!PY;Q1O2j-mX&gFYamf_Z_XKD8 zXqvt^$rpZ&@3Fjh{!<98=T}ujExJ->;WVyZRP-CNCQ{PyPA2BbG$D^kh zK3}B#i_uIJeBvk3-3>7-_?%++d`Zj-KBpKyUly~1&nbq_SJ(^~O$eX3GpKmme$K)t zV8t@sPUbed@ZwH3Piy!DO%i!-5N?C+36wYuD0;6pvz)(si zK8E6Y9T-Z92!^6EvoX{}SrUdK=fz{F+gTYHYRbI~7>fEJ4DFC6Ll_#X$pAy$MURD{ zt_w|w*9=N(3$WuhZE=rT^pceQfOs;Z3ctB$JH@{P6y+klzB0lh(b{OwBw&* zRtP#BjDLz*A?S24{wZdKpwq$lC!2w!2@w=`g&qI=4;DcIDq#ej4#q#(Jfjg5Oi2iO zr<|=2bUGOSB(vF!S}lo~4#q#loC86pgYi#}jI?b*ErL!f1T_n{_j&ulY(}Jj4HbgU zXat>6D-C9xD-Cdp9qZ%^Jr{wSGlZM{Jk~h_+&qsLFf2OG5NYziobRY2Eq+J!Bc|nt7v#^4PtN4N%s#TF#R{m6EKY?(qd657CY(yg%&BzDoJz;Ssgy;C zQ{hE7r=kHT;8aQ`KBuDJad0XnBAjY!E^D~dL|GE2BIm_(s@qu^oNCIw44jJkAWnT$ znhbGjtR@3abr(Grr@AgEDW|&9SXZ3ta=_~1R96Y3IMo$55vR^5PMty5oE|QniQrT$ zPC$oW;9ZhFRjs(4QJgv>oI0a8756_8&|{Q{dD7-utT4lzdYQ8Xx28F@F0Xp+aB9?p zam5BmQ4v%zJAcul>A5hPc6seiH07taZyx0nwABO#M#Il_{EWOZ#?l$a(w8V>!=MUF z@e_Y4@Lm?P!qOSW(pSW+uyls8^i?q{ES+I2eT~h))Pz`yX?QB0|5b~n=k&Dv3}fjI zF{_oj;7mBZz$<3+jGmUCVJzKA<`N*5!qOSW(o!+!z)~bl)AAJ@8EJ>HbVgz6IfbQQ zNQI^6G?t!YEZtIJ7Qmi!Vku4`EUn@TosGcKbKt=A)+y%*OFzO`dXBL4(~PC(1WV5; zECq%VmNrsOo;UBrQl!OLx)r3Djiv1!RR&4VDI`6|NP0moLLuonM$$*btTy#K$4GjS z&2#C!G|Wq2=NL&JC9{vL2}w~CSx5?JMk6UIOOTX~8A<7wk(7=FNhymElEQ;-Bt4f1 zNhz85NQ(Z(fuxj(AgQUfEF?8imV~6pdGSc|JxIfbO> z1WC^+B*pzt9~lk;EALo$S=#Z)36U!u!<_se-z9{#+wFz=K8XOQVPAf8}-K0*t zDaL8P<>9oO)oC}!IPJU5X&cmO8)BT+U`{JirxnFGEz3uNuioq5(213B?uLBc{K0Vg zEJ6cr+goYr!z_ftsP}a=9cwddb;}_VY>P1R;1#i%4H3V9#SylV*=-O@sWlX%H7LHH zWxn4hW;NtI%Y0wX=C6BnpAX^BhVN&Y?+J=VCS)@V&d}vH0F~K}q@EmBzZ_dzS-N7vH-|7{&LlxQY0FR`I=A+?F14 zo{ix9S?2pH?o;RW`*E|1?`MVYXG45HfQN(S`#MVGoALV_-fi@@=V8y_uX~58%@eHD z995Z3bSv|3^A4TIKdpHm&Bs3}F&}oDD+|o4URk@y&9Y4B;gaL&kd_H2^SalNOsH<} z=xsf8xS_Y>P-SCvZ%s=}M{8SsbBAB--(6WoXoG+I!=NHqLA89YS1lP$!+q1#YHWi~7EsvDtVf@+h z1`lnE`EJX@#cZ};#ePN1q)MtFH|*K>5ca<+W>O_pkQ>(gDVXsQKQ=>Wn8d3fH#X#d z%)1j`Wy!H|uuXx7wtwB~ig~RoW`m(^Hsfh!OMfrt&qLc{Rx2)MgQ0CQmw>gDu9yvm zw#A%7SIh=O+Z-8b+mhH77qd!N%)ux7yx@&90Kd`|b6Qu-$n$GSJvsz3s$7I`0W+S3#(JvgGMYixuG})pqgly@U z$(D|pZ0T6Yma+(u?OYVuLi2(l<8E+F$;2mHT(4u~ni3JRMP+7_t%WPh<2mOB$8(-tRME$M>zrQvJEsVDP6&4{M7ZX0V+nVN5-|_cT#J9_ z7)>v5mKf1Ck4wAww>z(M?Vu^YqJ`zLd&?-(>S_VkE`gLB-qon-)m{E|&D{duVfvq@`?5X(R<>(opw4Ia?v=93yEt znM=HsM$$P((t~2ofuwVcq>UUIX@`+?P9bSZAt_iL2JfMz1W8j0NmH}}qn430MN24x_s~*;q$x(yZYhsK z(i9_UkC@eBiWDPhADhqX#S|$<(jhYYs7gXoI64bS;g@J6MO_Gz(lH|`9W#>Bu^=gB z5kgWp!@ZaSZ8HIqQZn(86xZuOQc6US6qT8cq$bLekQ6yD9!cHK%0N<6?qxty)CVEy zm^2we(pXIfNa`+nEF^VZP*NmyrLnG%)a8KHg`}<$Mj@#yZXzVbux04O7%3WTHAtGG zf!0nuaLii0loLr)jHDCXx280brWBH<1W8j0Nzo4w>C8|f=3$x(NmGoZk8+kk)HISF z%j;M#NV@WGq=7)Go=Sh)66yIck@k4UV-czIjWic>r>~E3G{rdj8f9OMW} z90gwzj+V>W3P)3nqX)@cf`zPVgfzuCS|R2fIGSP{ZRN;FJB*_#g`@L?qru7xaH7J| zd5xpzV-_TIEP{lx2niBYgIkcyClVx-OngBy?-V4IhzJri zo@_y4qAW>}Am_yk61TH51c@p4G6)jX2MLnv(qw4$N313TLEzUWMmbP#yMRY`!QsXg(4ad-=!k)X;k_{$NIt%Vcdc&)TNv_pLfWsVsEc)gSY$ zZTiHlR)5U1wiyz$TKzH4+Gb45YW2rFYnur+L+hBl6KET(_8@KZG^g;eUi~r8+U6O_ zU#&x^J>ue8ni3~lofT#eN>FY?7NL=3f`M^Bi3+3`HR>{y;> zS8|-Eq4qQQW#$ym%TW7y8EU^7Ega z^vdpJ|M=9sd+tr)W6zi%D?4C1>ho&!{=AId1C9w!if`Dqy`W+FJj3!%F)LWcXg!@> zDrU8yx*U71Bgm5-cO<#ly1OSsAcw%DoJ*jQXG!RW412M(<-a8Njl; z=&@kgbwNpC*_Fn+f@PNjRu?S0N*D#puDFR{`Mkig?fioUCFj-Xz1grS`-|D<8JZ7r z-+Eq;-k(>{d|sgWd@;&B}kJZnae-Fbz#v7FH5tZJmJkR|5CY8+$sHw4i z{3O79OU!C)|2*^W+hSH@`{$W|-x0GK+dt3z>%A1PcT)bveM7}N$SDA6ELPg3Cg+)d zE7-iC$MylV#J^Q?w&LIO%)fPHE&;bG{yoq9+bHH7{Cl4Hw}&Gm?J)nISNyx6_!nTR z_;*3`?}Fmr1>xTX#lH(#{EK90Y`>2${z3%*E&wpo{JWs|cY*l#Ec5Sz@b7}+U+^xC zDUVT39==_4`@7q`t(z3%Rw1qA{CnR4Geo?ghKNDAL>X7*!qgD)0#olbF)Qj_VCsEA z%!+y!n0l|1*+V<=&sTY+h)Jw-qy>!gfOUFXJltqYo;Z-;FqLC+{UP>lD z_2POR)Jus7^_rT@qFxhaNz{v+7f-!zXJt^YDfco^FY1HZ9}~v zpZ?0+0#om!F9#!Iih38AdM}AtQSSm%?_*+C)Vsjc`?#1D^)4{=KEY;CuxXMBMtyPL z5cS@W3>5V)F!jE~<_ns7fw4rrFU#4AdKZ{_Umdk!GhK76h+-nAZ4e(x2 zzQjK1 zjv09WKla`PFs|b~6D%AeDUjA-(}rlt@)JY}0ELsJC{iRSoFrl5GSHMLn|8a=Xb`Xf zG}PUY01_m@8@$CtNt{HP(Qcfqch@^(?|OGVYsTSZJR7ganf2~y5@$z_701cQj>gf< zD2bBT;eP*L^{QX>t8Tn*5)@5RRFVB&)vNpX{_p>*ihnD>%fB_?|S7Zqv;yy)L~ z0A7wJIN(KjEr6FJ(SVm4(Fb@b$W;Meq+B@QwO3XK;H7*o0^mh^FyIa8F2jH~P?rJV zwP!sL;I$PfU%+dN_f1yaPpjH<3{TPDXJ0BGKoZ zS|`g|dEFRZU|X*Bm9I;zJLAQ=aWR&Y;dK}IwY0o@7+&{17+&RLgSq}t%lSkX_wbkff2VC;Z7R}cZLzJ zYqJgLX&~Gg6XDJ%ge&h+p3w+*#z43;K7@;CB(JLqzfU4udVQ(%pBK%DW8%&`#gae= z=;1o{zYkzoooU96&;B96XPIW)`0S?vKFc)Y#%DhZ@LA>odid-g1ALZwfF3@(65un> zIe7Ar!G#XabNxLZ`VP>W0rXEFpf|&2+)pVnWJZf2Gg=HGVP%HJkdGl02@W%c-~d5^ zf!c`fDh5+NqXdUB?QJmSGfHrnRNe>8-JLT^a7eMYgQVG*8e_mGIG}H47aTB5wBW$M zmEgd?mEgd?wcx->cmxMjfn9LGw2_D4z|jO39A>P714p6-2Q;ByaG)SpB{(4E!UYF= zWn~Bsl!4||W&o5^BK4dZE`j}kGf=F}smG4+fgFwAIyVa5;`F#Z{g&T%A!Z+PC$ za@qBa5*S`qN!Apxz(B7rm41xz!XuA}CCx?UDZ$6AIYY7NSR@g1y4qF`CY;fURBUf7 zu^CUFjSo66L=w@FNMdc(#)j(6GJG;N7K^5w@yK-5U?PIs{K7+n;nAUL`ZTU$8BWB< zomTdBUL1)b_Go-4<}^8#T}9%rn#=n{&rYEp4IB zr#lc!qZ64JLdKKP#OP#dG(OQ(iG}>fm&;?~y2uEvchLERH`UeQX`AvsoY>OR-w__@ z?B3PY66);jajGiYJGO1BtloTGYM0KzgT%$1e#;wD0z2rHz;+AlV#s1mo|uY8_QudR zoUw>A7)i#+h(@0xn6qrkgnUMcT5odFRmh4VYT=P(nYXmJA!^MiQR{8(ZHQVkO4NEs zdmEzGj1slpRo)Q2NdCw}nE;b<&ffYzmBQK)(}a9RiCP<#_d!$Cg6zbi))wVGV;)RC zqeQJ{_O2HDOi^n_iCXR2JBO%+sQF;>kP3{ry`t8PA!_YoQOi9*5HgSv zhz{vJrhK20tvjdlt<4y(ty{95J9g8}|ABBlB3x}{s4!9qM zcTEmOQZbsfi;ysF*{!KW0uY<{C!M{EN62AWj@Lzi`gEY|NA%XqSokzwC;h>8`=PxE z@MJpBjx2#bDxPd;z)G{H!kKlF&yP)xO(mU3G?tpI=f9iVR-w625NGSww!7$Onb4&V zBSR3D?hSw}kritfnYO5#;5kbbWvUQWUz@p99x5Np;r z{T&0lxC zM!YlKh^_CV1}YK6pg=Jv+mze>o^+c=6Y+^uWDr$sqX#l1Uds0(NW5qdmUt(1mtl!F zP?v$kYtMQhiPu)3d?j969JiFjYpZ}8OX9WVFq_0{3!9h3yU&n#_W>BD50BrMMdID3 zB;J%-2=|#PvVDfcyH88J`wWQ}GY^CRX^wTR|>QD{E%d_hr|I0v(Q5q z2|{J|MRvKn^wKB>Fu{7iR05P0wCt})FR&hT=L_aphf4_rR<#VS9yjE#Z& z8FD&%c2nS*N^7mLm`sJLWI^*R7s|nN6$*s{eQ3_eZ&Z}mh-f6`Y}w*;^ll?mha@VK z^%eE?dn?nA&3J)lpfy_A5s!a`exIlVBE%;W3b&S~VZjpd*O&;TWd4%QQT3JY6UxrW z(YJ~oEE6qp0i2k`KHN$01j!k0?%Cmri?Jokt#gNdzUkty(SsMh#|gA1aH1du(tSH1iV zT&aHptCtD~ts%V_ib_<@pJhYk%f*&@D$CX_^^;q5HOX?zM^A&5=);1FLn|4KM44Uvp)% zr7J$FzK8UHo~Vn#y~#0q(*{H;uX^~LjzQr%0Sv_)8*?@+EPw zYVz3nu8INTWm;eU6C_ZJ^|3^}uCjIjB+hp!YY-t>Y*>!pK*2)Xg&$hRB+&%VWtY(f zLM;P3DHI;=5IqE%w!6t^ znb@p`r1ZF-Ai7f@nVd}44@OcTkRiRL5~F)TEYr8kFF#z0?;gBEca)_VQ1IXE&;;d^ z#i&XpFZG755W@supW>x{$lleE&J82ieTtWQQ+wy&rS>Ua>RlBWaeH~GeFiVJAH_&t zYyrZ^;HCDPywrY!m)fs+sr?2owcp1}AsXhTe#$v=#B5+*3TaR?(e-%{Zv$VLhYSVy zEK}d#j+_Vh%*RXZ7fS+s=HsRI7sgBNfA4sy{ld#j?KgO-{RS_!-{7V8v(A4|@lyK@ zoj-UemN-lQT++R>CNH&L@lwmQx4}#8SG?2;_IAWP4p0Lxg$_p(39eUMj^B&SOQCd> z7|;fKY6H>>z)NwUT)Y$q@bFUnybv$NfwHZDSIJB5zjnOTe#J}OqZ$oS6EB5^^6^rh zhV=7Ns<m*RfqBNQXGlqr7)cQ zyc7j-*Xe?IDQ?6lQXtkhkGkF^WbWxz|>vmS_-vK1&_Udk57 zEyYXOD&WTArEEFO#!K14=EY0xhakL3d>YV;PU_eXC@imj*>9L|@3)$8?^pcPeQH76 zZ}L<74Ss6B=BM@>{1oN^Br3!M90|eAT>R92#ZNWp!ME}zmsFF&>4 z;HPE{ehS2q!B5Sa{M4+$Pt9t6YS!SVW_|n=qG5jORnCzE^+r&;DWnmA`tjLKAwvN^ z^YK&2d4SJ+{M2k={M2k={M77w$4|`)FF!SF@Kdt}KQ(LcQ?txZ?N|KNtiex#k7CL5 z3*0xV&^HXbsaeHOeNlTG{M4-Cr@o|m7A6+rr_kXvKZPE?xOP)0otK}&7+TnFiUZ~1 zr#OIzpW^3*_$dywNc`07wd1E|6+iVA)o6&C_$f4$kDu~1q@SNs#btg<)ld4j;-~n% z=BGFb4?o3CXXB@4^WvvCn&A8t%4^}LI1B~FZGd|MZX?_#xF_K@!)<|Ug4+uB6kIc03tTH) z8(ceF2i!Ke?QlEbI^jMBw-c@lt{bigt{1Kk?&EO%a0755xLt5h!#xAH8}3=SPr!W= zZV%k2;64o(hWiX$1a1&63O587gByn13pWBc3inyK=itWR#^EO5;&792&%-6)l5i=w zDYzHlUWA*5n}OR8_p>WkuFT@!18@i74#CaAWp1xCEWtK4Y`Cuc3X{E{N$|SCtueM&-|pX;q&4r zXB9vBhK`i^NnfOXesWgvlRxAyX|Gkj{3K8l^OMe7u2qb|PtGcSay5I?&|`j*sRYGO zs`=n9FW12QBuJ7pKgkb;@RJ<9jh|$X-25bnnY{T)5RS}GR_O{c_{mwtPu8$^HCP&h zpPW_vWP|q3!B5UAezI8wM%-S0a@OD{4;cI;h(m*)JYe#Z2Mm7lfaWI;h*A*~-$ztm z2QPKN$4?>}<|o@ZM-Gl|49ZU;jR1_HkDo+_0(|DQ zL4jyD<7bKbiK`a8yMU2%^nl>}B+6^yCpi+$PhvRv`AG_*@o*vhBsXHA{G`3IGWbc# z_rt5P5_oPb2H1Qt@tid8F9S6r+%nKcgA7~q)-vC#CE{DfXb&FedvurKeVu{24ERZV z)&udAwgTnLPuk+RrT9r(1>9Ktq%DWp_(@yXy!goj20wW~^OFY*e)52opFE)W$g?HG zS>yC{><)#ub>dj0P-k~XQ&lP+rZYCGa5(FE^k2EZ^QS+N{L~?)a3gP$_i)!6fYOFzcWKb z!Lx^-;)g=`DURO8Pq9aCehPwl-ux5@C+4TVtt-Ufrw%B7>O1UR4JqB=rw%B7>NV}1 zgP%H}_^BVNz=+$+PaQD$se{Zu1;HM61e(IpXPaVwQrzl#< zPra!Me+c{(4t=8|o|hKifk;J9oX)2@2$#OZm?=!vHZxZt3Lt^D7>eX^PSZL?E{Uq_-n09n2yO> zuM@r(PqMBgu~PN6q+k!3#L7WMtkh_453xd3qAsge-Z(&us$>YS>1d{dN`zm}-o)s! z2#?nCiSVdgmy7X>@Mutd7%~4=Tj2P&65;u`7U4Mwj|h(%wI4=|gZ1(d;W?V%B0S1# z5#c!!Ey7bP`ff3yAR1W|BElo(!Ve?1S5}4yPx)R15gzTqBK$_(Wmtp{)MX&T+p``> zgtrwaUlHCG$1Nqo+bZD365(w*%qGIy!saEyAJiheoP)hbGabxwG}A#L4C~)8<(l~@D*Myolhz}DXf1c@9a_zCBF*^JScHyK#%BDCLf{Zx z&;2YuPrjq%ppqD0`LA-xKWHADi$?~%uWE1O;M{`>#q#}dr$$`ci6ic zz{>!z2Ni&QS9|9Gum=@@UG|P_XT&XY(x{N&TD3ctriMcXfCaKN0PG>&+c z4;cXVkPpBj8dk8b;2c$nxhw$o5Hgeou!k7H0$_5s53vHTN#V#t8o(Yh04xA21K5?E z65yT{z#=XMVDG2N%GYyya7n_9aHBgrU ze6?pi5PY>2C|~$$i{qApueJ)fvEZvMhuPq(Eo@%!^^k_Ibb`YnOw#fMheL)2>X20f zbx6V3J!)<}WWv}(28=zVVeBCT#$p~|82cHHgx2F+F!qpwu_=`#G*YzU(w!Phi+2=t z+{7?eEtS^|#6oq#4I}FKTZCydF~E^-J2@0I!D>c>Rj@Ho)s41zx|Zya8tO1g{tboV|B+0tR?Jq`>RD z%6rZPuRx=y^b+w?{j~vJ4=L~}-gVo=0I!D>crDf5Il${71zuOGz=+!mUJq&Z^^Zim z7{;mnW5qklwwLX|pI=znTh@nvpDgPv`&ilOyEm78V8wy5qh-GWw|m7emR%@&eT7*5 zH)TI4d+vRod;hEa=UcQ-kr9*J7alw*7HuN@}9H2J8yY+!Sl|otCu|QUM+f%>+hoHotwrlSl<1j z<=xAccfaI$=cfD1o_B5W^%e!CqymQli#q-Wh_ctu>{)y$?Kh1bY zLdG24trxBq0n(8ngw2^k*qjo=-hPVK#yKs7%^5=2oKFZtG%SSO$0Mr>9o()(m_vrr zLf9M&VVfX!$&8W~p#@JeZC8shX9!^sx>yKvI3c91m7VQ4O&9ERG>E{CB-wH(I3l^n*ul^n*uwH(Gtc;qltsa+1kOr3`u z#?b_q!%$v}9LAAoIgFaoCx=mxtCGWza^Z5Ay|OaoFv|BL$YE#?mcwRsmti?9P?v!m zX3u&cIm}j|eC04(9JiDlW~+c3OAfQ;Fq<4^3!9f5HfP9Tb6O6YGvu&2s~k2bq&i_v z&8>5$95!djVRKpzn=|Av%mWPfk8vc`n1OT2VRK3j`mq+f~$mbIM^^SIg@r zltBpNR%-qSDF7Vy3T2aG+$xmmYW#-CHejWuwu5c`_%_(v1fuB;Ah;lZ> zH9WFBh--67T&vRFhPXDT#I+jb4e>2caSdaIvp1p>FvPVvC9aJr z@583JHmAh3N&U4UuFWZNEydo|fM9B&iZz}I&rnSsr1#{nGZwJ8{=AyZLFc-C(9p<7%HO%GT3g+@}1#|hghPj-C z2j-$m?JyTTJP(-5(FBLND6a+PawHn&QZxEsE(N(Nn2VGPhq?C3%7D3)??r&QXb*W`o5w{oS9yVYuX$jVgxA8Y&FW^rD<{mL& z?h(c2!ZaH&_lSnMM+}&IBm?Gttq9RD%-zj7asWPqo>_o20-Pe?JF@^83hE)h>-aaH$F z>p^!jo}m>1>M~9XY@A^^_&>q6GK3Fr`s;dt!pkbYPZ~?v3E3Q0Pllx1?!3FeA2lF0W&?~yE zx+I9rEzxLfGUcGUNQMqni|QbQBT9z;4j0m)LeoV+SR?0*{6`DBsMcCP`aM3^Fang7RZaLzsn6@g=eO7+VNU)3G&M6*R?m( zIql$Sr1xW>Q-pX!d4r(IlaM*02$=`&kc7-hNoKa;^%C(DWJm6Ca@d!k^i{^AdQ$~TCFPNh%h*&BZ_0H zV()55+XlyUL~%?t+B*lwgs8>SL}#hMh}+9C9Wgj2vN}y$41)YIIHsc}$8=N_i)MUK z#~jm9%`qJ{IHsdMjtS8)$JER@a>TK~923$AK;QT{CS)kUXFiSzIS=rek7GJ23gVcK z7RE6heQ!7>0<%Zq(yH#G#lL*+dn2X)6rLg=s4el#90F03O_w z%F~d3+Da9dX)9Gf>EDXB;`f@i;v_t@6*rxYwmO;@ZN#(43vI=bXxfTKl+Wsb zf@pMH$Qd2nh=tNt_R7kjttj7%KwF_bc$RoccNwOw0(BYCR`#q1qOEKN%9pmX#c@l~ zR<;Vbv1lt>4ztl#wy=58R!22$C6``zljBjt>for=>forNuU=LQ;!)G;;HY7Ba8%P* zM-BQ4^8nLVpW{dfy=J#Mc)IAQqOZQF2j9&|U-2AqUFoZv`t2rwg(+1~*!#3%iUT!64#hoOBv!Zu8n3uEq1ePpO=@P*pr#eI3-S|h< zO!iHwwQGsV@)$kysVeCTRrJ+SMPI$e8qoPzIulno{SF+`s%2%CwfI1Un6d!9zVYC{&>Uv@n`OjAGkl> zxmnh!r8jjX}b%o4ZcKP(bMUW`jwXB=YN8NNnUOXmz$;l=H*!CRlJ;-5=H;4oOEWJ=uP>GUGgQFuiMl$`{CTRq zJLh0d@@y=*9KTV~#bTguxoqowqI|vC)^x6OaxxNqu5O^GrLSs3jWZgaipIysV-qQ- zX{%E?5NhcUIf#k7jZ;fM|MYVC!>ZAoStt4Y*yPw$(wU4UhAFyw_eXQvDl}*75=#@_ zj~v%?f!eu1)gVBaNu<}8N*mFIe^1oci{{FrRiJ7z3RTQqSr+LZ$g}A3M~W(nUly%J z%h2`FeOim|6b}}Oj}*0*{s;OSe$@L{75|PXUzc|c^!8DyGZJ~-nn;O|Rg@9<4Qt?n zE3u-aNMu~pKz#U7MZfOQb;|TBy}nfXX?XvlXlM}kh6LB?l`DVj&IGH9%SHK85gAIv zlF3*NuD}DYh12hsRf(=ES3o40Yd-=AUi)P}N<=I2v$VKOEEQsP%hRhH8=(KC>_~!l zx5^IMR?be1$WAS1r?FAo`>^OLLX)9}uUuZfs(2~2)T(7GWJ9_LL(+QQgS?KRZ><*_ z&^stCP_+gle9UBok10lYH8aA;L<#Okq9~6UjPS7xMwp_NjPM>c?2c#ITyqR@?G#~T zNyfTdB*c@*ntY-?I_F@0-DDy@JUSNJOvCm5%jF*s z^^wWRWWD=A{ov>XElhu>rr$JPC=sg%6K&{tG;83hl$MX8Pfye3oX9uD=6+Hv9;ACP zhiSO1rnEYT;QO=792&3W;rbjCzseTz9fDUpUht4gTW@O^@nkiTyF0TkTi@rKRq_2o zZM>@Z6GbwZw~|*C-zl(4Y<4oHl=AnRZ5^AAMP*&c`CvwH(SzT#gW&Hsa0E*iG7^^p z#M9sVD8L%3Vwwu%g!33B?6yd$Zjn;ajCzFEN^TB!>L@ROGDIYKw8aWvTeOz=UddVN z13ZvN^gw1>{}|Z*OQpYGOau7?9}p{krx@vDAfsPkyb@;P2O7!h!P9)|jl_0>mVQ(M zjdA?GTeL)Dp*|-W9f=K1jl~kc0W``Vp$hyPcc!3G?{%w+>x;{msJ2JIpSYXcPfRBXtpOxAz8w$|D6$@;$j-tNAT zvt`nWjE(M{XxdXT78_3Oso1(@7-P;EjznX4*9HM?Dly}1kEcdPqW}}h(S7uO9ezgR zWAOxjKfG?;h7FrG;nVs`XI7=M=Tocex9q8>xVGZoN%qr1Tx~b7)Q(Vhm($zh4D|K( z@{f+5PM-ib2 z#}O-7G6wasRJ6&-nm_@b?VtdDKc*>(mRSM=c>WPR6OSOpf>&wv+|t+4zin&d(;ZC+ z@Dl=R^^NWP@Rw?3Oye=~d%C~rLkQ`5rV%%P*e_%81h~URb1POA^MdPsxy1FL73#qu zp(jCbO_oavrAXzqX+EZvLdOiH5GF)c3e9qD5)qMIDMSLHv}t}x)jhVRl1wX4zU(gg z*v)g|O5=ug>(@8b?(XR63-1o~x3~57Y^!}@?c}d z&T#J&-BwLQcT2}^CmNZ=1R28;iz0;jJKOLpcbQnfKuK0Isrn60l1y`qEv9&6?{8{v zV~goAMG1dfdmCF!k10y{JKEdWVtPzb!mlZBP{dSRdVQ&MH?s1ocb zzUO_CZid_<2_3SQq>7WQ>`LW*+}yqjhL0J)`}EhE!jxZ2Lhu3hrk2)(p!9BlwV)7= z_SW2%pLsf_n5PC6_*j~Gk`sfMNTP!((?k*&9)n0aZW2ky6_F&ENII^Gq~pSS<@RwO zk%Va2v~ayD{0T`Ub>OverO|PNNIDMFwKS1*To922z{qRHaZMy0H;AO;Y`O+Yjfte= z29b1J5lLHgE;Nxub$nb|oi%H3EuKnmiRs(5w}I)8D@?zGy&c5Hm>$*Z!}O>Pv!8k~ zJz79xdj732J^xmio_}jh&q=V{D=|H)z<#Ov5cV0wGj17Uhwf%3)l zwm5DnOmC}z8w=Cha+nR%+rs9B>5pqnPm9cPEOt+dU07Vc4hjEwmTh^*g~alGYEC_# z#_}=}FN8g=A?$Gj!eab0gbi^dv~=czu*VgI9Z^Xxkr0+%Un>1r(Q$|mk31soe9vwa z#?tjy&EUUqIIe_&SG2bw3>;U&z^mHZ5C)DbVc_%18&ZHP30%ySfrvBOh?8lV`|1I{e7MS^^G*Hjdz;UIFep`Fz0PM#V zU>EngVxCqN%W2RH*y$AcG++mkHURqx6R@99fPE7K_7fVgpD+OX2_IlbGz{2FIY(9E zWEQ}F!T{_i48VSZ0XuHPV8DJt1NIXJU_Zfty&IvZs3#b(yVr-F(DyH$P|$sa&W{1z zPblbqkM`yR5lOQ|(EWtkFtSp4pE3_bJfWcbeeCTZI74?-v=6$YUa~`Xw1tN5{98eH z{;i-p|JKl*lkh-yRE8b8qi^N`-8q`z&>iKqKzEKrLw7W$AG%YJtAg%Gxp3%iudEE{ zPWfI0=#KVa=>CB2G7Q}Vbs0c+d)5O%cUyt-h3>XEZYk()tAHB|y4!M?4Z7RH<^|nP z7|{KM0o_kzf$k?1ba&L8dcuV6CyXr#Cp2_FVL*3`f5tScITBh#b3ykL3c7DpNdmLe zl1tEiX)$(}-aPE{+Qx<_9)F^?x4*rkf1v03^UlDQ+%DhvfCMC`yjZhSYzvMx0Wz}{ zMq$ho3S)*=N{o5J#F%(w5Vu=<8yNG1!kBxsw}CNFD2(|T?QLMp6AEJvDQ{rTJTWG^ zJ!kJ#oq&NcPbiG}dF6e|#F&_K7-N1xe{EpQ6AEK~k-e*d!VHXgLSf7=Y402u^Mt~f zmsMcIE%B5{^X^G<4vdD6g`Co?eS*NPAgW6W=G zjvO%$jQLx*q7|>pON$3Z@)Qm9^fCKcYeyE|H8~VX z#pr|{kNpZtr(iVtW&_d-uqB)W<=PU?0bqCvd#rS<3vCJKj}~c5_(_87*XAU{lS=OT zu4**2F>MJ)L;2(`PeV#|yjNwSic57QYhB4*{9egj{9DUioPXUiN zT^vntxeHZkk-In&Eq7r!`Q_~iy(KQJy`B~U3VGY5+10_ zK<=_Ot$*>ado?y`l=OYS;p$XzE5x$9&WxeF&30``@N zH`GFST8d1t+fhrbS7mZi%Uvfua@QahVkvk1kRy2r&mX+f#rtAfz9(9ExoMzZ*;gj^ zZey#Y;=4r43oxPXD}r5cYjH}D`M2*t#QTwmG#+|aTlty zWdZX%N-8ayChwz?J9y?D(^yL8j6y{VJMhmo3oNi>`lOO+Q#wbyW7?Oa{B}&+G6E}w z)cE9sWuhf6%7;a!acxBucC@jCVO*PGTdPcKD;{?ZYhAnAimh`0>wpsWV}QIC3O4xZOWFdkVd3jd?k`p7F9t<3uPB z2IcfpG#FP4pW4TPvIF7zb`Id7X!v;{iiQJaTf{ypo@{84$3mnJ7_ja-QM>1`H9-?p zVPxoo9?I7NfmQ1vr#m*uz685^9DsTZ%{PzSty!$At{=l zs)cagRE^IYs_}VE(ad`&n)|V+ONvIUk}6n4N^sG7*#w1_+{#K0P1+L=x3Z_`*_(%3 zp_A1bHa2doZERS-Y3=&j{*J!3w!X%-tR$};XdkF0>&9J^*KwcLc~rO5mw)qqNv@zd z+(YQHtst6Qp)P9h5IBU6-s#mtZmQsUF@sz&78x(O@|+m4k}IewSQV#I*dseJ3^s+H zQDx4+cm!k=$zY_f&!>hJ$1<-tmRBB-91ALhE>*x8~w$C9q6>&~&vD~{#!-0(CN8XU{K;#j_*y$z0KUU4j6RNmlR^5j@B z+cU@VrcS_P5%LpcM{W~*i@nL}fjJhyBLbRqc!`8S#Ia;RYCL;57Jev%W8s;^#<8$R zZjJ@QW!{Ikfiz)`cM%HUW|WpFI_qcoCZS;0A~!cqD~)SrAiA5RId z41day;ZLz4^=Fg}e@e^nrwkeX6wC0RRxHr<4qTpY}Ek zsbM(HUq7I{&zOePr9>#R)(}l z`CbHR5$(Y}YPIe%Y)Bob%RpMRXFZU#Xe&^@(xNSnTS{8ARltoUE!uLJOn)rofnbsH-lGjmKBuJn(@_kf-lrxZ(Q2Rr8y|j2l#PX8dT1WQ=m)p{1 zRkqisl-PFJp{x+2Zyff4M~1TB(B6ja^(lq4zp1?q+v`&bX@6UL8@AV{6w>~V@&@wG z6KP|laQ0R_hH9MrKb&8dO8D^ zeys@6ui=xK+kQl-_R1H6<| zEp5H(F%kns)ZN+D(u2=r{=D|zrn_8}#XwyK;-Wq4fy6~y zf$|j>ZE@UE;-akrZY*)pmcwk~qAhG*;^JvTTs&=vi>I@Qi?H{`I$k2apccZjrv3M6 zLtH$q#l_Pead8k}K#GfBn2Yt#-y1Wp0q)RZt}EZOxm@#p_@Fd7?T~!8w^UGj0x<$nK3!0VmNEsf1g&2 z$vk`0NMYS1OHN8RsfPGnfKpntB1Dd7k8YA53ein+^fuijd*s$lo-RN)308+mptHKh z4HD?IB7t6F?`jC81_^Xpkw7nN?;Ir1X+;8kUIj+nUJ~fEK?0qDq@KR;9qf!j0-Z5Q zpfidDk{7<8(In6rg9JL`BY_YNlR#hK9691_U=j#v1fXSnBoHzb;4>cygq#QX%tr#9 z5e1PzX9^>M&b&7y5b=j+;L;bqpMmc91?)AEw%lh}cf7So+JB$Xy5loicf15c;EW=N zzQjF2h}W$bz9X*7w9Rj6aXIJ~k>2uC%ePuO1EF@A9k2QL8LfH-qr>zqgxx|_l9 zoKXzV8`|4YJww&ZU;j{fUochAXB3z4CVLa1$*O0JBOjN5Zts#pel7t+O{<>yw^BXx zZ^b3>Z_Ooe5*{uAb!k^UgMZFL^~})(=Mqp}3zxu=XfA=;&u6GiK{SjjMD>i63s*hc zD=ULbpnNX^mw@)*9`%;)GOT(I)MdaW*s~spORyCvUoOEG$1TMr*ec-0;u35*%*G|y z!sf*#oH4kBGX|G%CJUEvMsW#mt2y$HaE4QP zl1Q%i_of$nyso5Ot!I>g{Xn&B(=(|ALx4D=1c(%SR|E4H z0>l|5Kul}z90J4{B|yxpz=+!`K%6lIh_fs}NG)XIbQk!H8iA ztG3UIrT9(0bkWaQv5bAbR)h?&=y8_I;)rvBMGvGGKp60e9>`dL&wQfC*}_DRv!Wo; z1GN<(lRE`ArY{pvajE0bP^|$zTR|5Fde295&q-V8U(bhhzui(aWQm}gkw}Sq7A~!T zKFbQ|zv0e6ey##qb`(-T|7Y#zRsKR0U?}!7cZVu;2SYSC%c6l0pHn^moV4Vi<9(MF zA1K;aq>k=d_k`29(P@0#Xcp~NW_P4a*42~VW-5pKxLezL75*>@xN2d}A z9Dh*1Sq1EC3GJ|lz{ROg?paO#xo-+5Yoo@sjTLy~TI-Coi zh~PFwS;W-nU^FhTD4QH^tf$$V4rizzi|>C2zHr z*J>>hU&d&bve`>DF2l;&cMNh@&}zqgw76S)&yv{1G&F19G2<<)edj>AwC^0iqkZS+ zg|zP+XpywRsE!YD~Xxk zYl)eY@JP(ubT;k#*}NoXjwZOojHDV-gg2~7PcOhFJ)ni4bkRr1U?(uhL4a(xIrYz1Hlm#YW zrYv6ONJuJUW5S(y?K`*bX`maqxB3fu(5<}ko?Q<_2hJ|W^+0lNxUSa&Z7te-^RPV` zK;Hr8cLoy?>@5fn4TeXDn!4In4<`aI$by z+J6chdLp`RHfo!I()ba)XRDFT*>n|YiU7v2+!K6BOAWa zMjbSMGmSdvoyIoOsDl@c45JPM0(p%(c8Pu~wFF@%xY(0Xm&%OetYVqI$weg&gUvXw zBwiCU4%=+DfEmYGMQnXr=ZMWXd^yU`jKh|Z+h!bbpBYEGp02wY$5};Leuo>LG?|7O z2T&O^imz#J!;IssqAb6wyg^~+Nm;^d0|^MRavhEOYAk}RDy3ummKOi9_(LHI;3?#3 zj+&*wh#mNNmy?J+KLv@uzCPgatv3g6eZAx`wr+Lu;TDLY$hd)*Zrh|Y3ePG&_8aS6 z2+TGr%r7V#6*Xhsg*8nR5Nx9Yvg$HUl?=5E>|72{JQQN1!qMAoRM;c8jmp^qY*fG* z1Fe*ZZ*qyLw;2@kS*DnU_%?e}XV4V$(&FC`zn0M%Xnjc%fm1io)6!S9p~e{vPetS7 z3=50_6~cKn=X z$B`Lk$5(SH9jx;~Z^l5{0jOXfJB~~S_{_(SpDT^Q7yc4b$N8TTj>j|;re^BzR5|+x?O`JiR8v)LF%Qa9A<{}JwsaQ_qBKZE<{a9@J^GTi?R_rJh> z1@3=^``_UHcet;@{R_DN1MX{Zm*9Q}?(1;B3wIgrU&8$!+`oeR2Hd}f`#<4+AMTrQ z{}JJtc8X3ESEFT5 zMY8_I(V^5xQ{|?HJ&(Y=VQh5oL{p_aR=l#l9{p60t36v%L-q8RGZB9=5t;N1hQ6*n z^@KJj6Y*$lXetqNl2g%WESVg}A^9^HNaK@Zu~clRj?NGVrgU65IXMy;i%dX>u7^w< zsn^OW8-N^1jgM`Pj*Q2LoF|@mLXCoaBPdi&wmC6g$hb4=oe}Vti_R%++c%qB1kBnt zfCjB?1J+qwZ5x&=ueJ?nYGG{~2g;>w;{YCQ8$U0kZR0?Tq-}#-b*;2*=ajb1Sxt*H z;Z4@Ip`m=*HcvzPwQZ`ntYK62lm4x=ZTwzq+c*i2wvC(4rfq{(9o$dQqmek8;Mz7+ zrA6Duk!Woj@R48JMnNACIzj17isYbl-oUk09A zxMiSA12SKg`Ci=yZrWNQ=bU~UxMkROig3=6w!At*w91{>xres`^B^nwA63e;&k+GOS6O( z^+Zu?(y+O{f}UNzFBo*Uv42uhlvjK&5r2*Ohju05JiI@3D};?Vd=-+P@rJD)ZX0j- zjW^QubX|=%mKNW;;;t2yaoC`MjgqzIk zG#ekUZ(LhX`#R{>%*G8*Hmvnrg{g8@RtDwPCow)q)&Km|X!JQp&mq`}(hd@RFp`Yb z)z!IEioCINbYicQ8sUv8pF-`8#iA*v`I#LpA?K;)8mBolGZ~|QvDYOvm84%igU!xx zB0la^xxp*jrjn`n(2Ua^e<4QJ21%$3lAc%^`7x9jZLTSE7Kf(yaT4()jEgAju@pK$+4e=e$ z)bHc~@VyS!9TU;WRTd9Jo-#p0Ct&f~#zrke@QHLhzOtA_jE<%1UVyd_YBzMI{5wOG z({~V!S#&EJGc$L+*FwRv>HsdCrRJmb}}ta@`<*%I+_$oSPP4Zgis+EhR~ys}w9PR|gJ zA5|B-Lym{ks_&O)vC@&+UU^c&(&D?sav{nPs!aMW5gU*US%wR-Y{X5b8nyubWR?pk z^($P`U}XqifbO z3@-5OF%##9Ld?WD`Xb9!_Uw_{O#Gb4|C%+}eY2VPceuo~GtMv*Kc`M2d5yiP*|nLt z>{ktJSpCwSM2C>K)e3ukqYNyqu-{a1A#R%$_WDN2ZF{Y-&!hLJt*~L(3@hv(eD8bT zlUCU0r4=?Auy|X=wZev-bq*`+^M)1ndBY0(yzp9KpBG*$?DN94!lvw=XDe(vv1Ez( zS`jkDme}vAZge5AB{tFzV0P@Y#70H~eCD&nK3|w6HYy@OYCcPB)L4MeeCL#)Y6E=c zF{r+Vme}Xfv}sH1^K6M7SC-i4h4-A2^M)n%dBYMLme*{FEj~-LN)?V(GAyyrD@*KB z?d`F|{>_qCwI%kZ8_p6Nlv21&(FA0_vQ66 zvo#V{_O<7geeI6tC3JYKi0x~!6lnWetYV96UyDh|YhR0Xa$);g4wTEjmIHX~Yx#L0 z`&tgPNcOdWp4ZC0_PnyM-FQLTR$(fp(`?XCKKoivL;CG&RdLy-R@G1Xx3aJ0_u9Ue zlknKra?{!DYq2jU5BpkkcwS~>YYPP&&wsidPd2JGV-Y|&;f@PD~%Nz-D zpV}nWcO2OL@Rf$Euc;&bPP zrAvSjlS^Zz&n(Ge6M0_QM3%0UCV)u#%CrDt$WZ!3MR`qLwu)_cfj&k&ez7H|O=LvPj~dUbagqyu^1H9dmWr}L?(_Q_of4F=r|OM#)o26PL(p)(?*4CTR`E% zbhvi7KbD+=JyS~Q|5J6z=tyiR%!e8zlPNM_98KczgOnpJCD@2?Y9d;ds!N1ZqvNsg z;OIW+*u!+$p|cfshwf2-Y1>XrW$o?t-QD%i;=fARH6jvxA8HIg9Uq%Q6w+9wsj{QL zzqh~Afn^f=wol2UoHG2YtF^7AYkt^J<{Wq=F`6FW^Wr9Gp*`+mj`;4yCp4_ObXNg33XeHYwIdN&{2l5WZqykf+jyy#eH*<$qaSAWCLR?qv4(v##u+#~S8Ro+sq?`D;ySMw1=X-Wnf2ZZ%cnWj^lDdJ35?gUA@l?xR}A6kkm?QfdVy^Ezwx0 z&tZ%(H5N-$))+I2A3W4l_PFbiB|bUn_0a)J$)st3c@>!$U<4D2B%h-wJvq>EW+IQ8 zN}3>2bs1lpWy|n%7pZDl2sgR(q^(oq+VUc*fYtcoNF?RSy<30uTBi97ex=iM{f9?! z>=X*mv)nd3q=Tp|O}sG1@NHr+0n^iDY7`qX8mem=q#eFdYPCiX*z<(uNrTr_nUMjC zBArY+w1Sa1&W$WCvC$|U$eNc)ph(Ogfpeq6XXdA`qbHpZ*0mBlyg%se}uT z%}6lOuC1vIS60u?Rz6udJ8OI-Q^p}*nW@)oK)bA!-!>3(MlEK`hR%Tt%z57-&Oh5b zI#E-(W5?R{Pj+`cIWVB2360{m9c-9_Z@MVHI25?g7D?;qJ^;>zzelrLvVcz^Ie2Q) zyX1FFPh!KC>N%m7{_Pzhr)RLAn@lyBCpgzkZ)>Qfv!|myGn^iY_Hpm+@H`QukwT3U zNsMXEedo>qm^d;cc83M;@j@keYKX$>1;SRybkFn_)BVIOs4uLysO~39e3FygwJB^y z)JAb>JxZ6?n;zFwn>@CcCN`cyxIpTq!nGFZR2fgZbKJt>DI`cGpL&LY6Hr1;TU@8= z`okfTa?yxN%7vtvjH(5-4MJH0+b~<>bXnGu4vFT*n(AP7A>l0Pyf~T~afU`Q%fJx36p5zHaS6s3o+kuRS!- z5el{S_G|;V#aqm0sT9r~oEXNl_oMEX{+%76aL4YBwp}4?;-lb?Z*U+8qW3 z?1!itk4zIOz;_K`3E=wzs&R-jrdzy*DZSjZg}qy`>gqLX*RR>ofd8H98fUG{LqFzt zYN~YKlUW$9!;vpMm4wGJ@n4(7u!PjhdiO6`2_GkEBVd$VcXw90^%8KcS-h;R z&&(RFI_XBsSkU2wHv>`8pZlj_puz431Xf$&z27=s1 z>rPI9D8^b9sB0o6bX3hZsji&k(+-R-?$x>ARFLm8FbyD$&IJz%7jIl`H&Sio?MT#G zUdqn#f(KchtsUDtdyMMLJ^(BO7~|UQ|H-LA?C&jf7~~!)=!T6nRC4vlz=P$+E(Yep zti#Hw-HM^4ajvRy7wg$3*sQHz)3~-~qwE4`eO_8I_}n=^dmo5Q=Q+0rZkD`b&RJ8A ztSdFChkCV)^wdk|qI&7_^nF#mk$a>Q!5O}71r>CX6 zqsAGoiw??_pYPw%1KtawDAKl;fe>P55+>Z+`Y{KoKi$$#d0ktz?(qgJsyuzf5{Y=i z6&vWc(+=$79w;D_a)z<#bC8!tI$1!a&%{4ge2u$Y56&2N{bgjej5vL~^DfiDv;q7j zVGB0}N?PwfOed3mtIRyPsaS@7X zb}kR@y!PeE6O9JVfV)KJ3sD=dF+{y?`OSqBaxEKKajT0#C2?aSR(VDMQ)dQ{$_@^_ z!y{i{D!(NzD<{#nP~sfHB12Q%eF}i4Tf_s707>?q<5N|LT=I~C_>=3%Mr-n^}dU~Njj^eP3B$=|bwT8O~wmUf6Z7k*@Y_A;j zbB(sOi3!Is8ynd-+hG_Q{GzGBBxyN7Hfmfr;zoCB*c*pKE%G`u(s;J=bIi zvn<%SfcWQ$v-)`}Th2u-H<1NqBv5G!WVhVD-VAn#Gon}`e*g2%|1j~9!TMwjf$PoZ z5T!(hr?KhLWGd;JsWr;e57qK84vmgF0yDW+Q%Lgm>NI!6&()qomh76gOj3&oq2L4& z-OxH9Gsjjkl}U$9M#xUawtyvv>c%32u`$?m_S8aoq!u*1Cd*x{5d9r(P?1%#8D~vp zTh~B0o`$EQBgxSSzh|Q@$!MgP5H~5^Td(a3qND9FrCAJ#TIWUFfi@DK8XLkrtgtC2 zOI1E!jBSoxJ7u<8os1-)=}O@uabJE5UwB+b`}xm~)IrynzyYk#2WB1Zy!QG9MP0%S zu|&U56W?y$Rny6Iwd&Z4aqis3tPoN2Tk^*X((!j`Z+} z(MeXPOa7eF`D}bJjEE#Ub1I>4-I&~&z6PN+{ z!duL-(dS|?fp)F^>GDGU$bX`o@}R7Qhj8{WENPk=Sd760!(2M0*;GlhRyg!*Ux$oJ z%|1=3I{uOZ@<*}--60ilB}kuJr$-qZPvEF!JzqIlEGeX|02v=(rr*}t)sb|~6x|o$ z_SSG`y9UsmLr_Ffz%ca%{kjLGga=zp3~)i&YrsA9nZFq5{6zYT0i3UmFWNgX|B|%? zhwq%I?VWIu0yQ0J<0CR+Q#{k_PC${ZeHB0^ER9#q{j7j3lz9q{Pb z-G{U~+F9c9f^r8U5d7P`YLyyi*Ce`>Ya?Op;jAEv=GG7`*tu23J5l#IOGIdp{lU6{ zYTz!6Nor2ALPl8tZ`yEv@#i=NiCyu0cj; zOaWM0E8F{bKI5UyGJBf$sCG&;sFEOL%ypi^I?xcSS&=BwR6y{h1t6eGDl(a~NWLUAuvpIm9;eZWVof z#2U}yZwzwX53l9I5Om^odU``nS7*;otZu0|=Aao``qcDl&Z|~TplZ|@3|BXO`r3$g z?m`Onq5z}*Xc^Bk?YYbFds4IBTD>7FRc(jPRk2u>KAA@k_9)(Cb)*KFh>nhpN}K0V z+C9!8Ak!deq%Nz{fkawKaddGi}ql;K!|9J>Hb*QK#%8VlN<8U;;Rl*LSjV zZgQD(oWxzb|Ss#iIElIhh{`aL0(d|dq$iJv zgjdE)#gLNLO~3Hv)~cstK}6A5kEl#wy>wTmN8O>ae#8JV{SiGb{83Lw$eR*9>W^$) zH+utT`k;>7SEwl`Vd?akxv-@gv?eqBX)|SO5-t5=H7+NM%xHK7{K4EFZlS`j@i1U59CsGt!Xx$8 zy#-6x0ZGFCu?>oDAvxIc(SlNN0W$C!H3w4-NL>$=&Oa7-kdT*=uV9cW-8gyGVHO_5 z-c~Tb?(S{x+}6o}@pijG%HaF5xZQ}>p{h6fM~$yFgKpqUUr2*EiNy{yB+TX<9iIey zNSvi+D~T;0phI`qu5TCf!+QTbh|;wExT2Dn_jM;5W$_tL5RqINil=bYhg9ZJBIDQ! zOV>NnvO(HdY-yrBfIRg!K|h!&BtbQ!ZtPO0Eg({NI^)zifpAYN-fQ(qy96xhEdZoI zjgG6iK$+m9AX#?;G&VKz!a!WG*Fp+SnVCUu*Q}QPo(NbS!R5rnN6V8@ky7XJ2<>%z zgf=@u>7jGr<;C+I=-xz7+zgh-G+y$CwY99gSZcs++1?PYGn^QtS=f=i2*=s*cbQG4 z`8|&?E!nz-TaRPsejQFmnVNtQ@8KqHp+@CSGp;lP^7bb1f3(F^c9ksr2I>n(R#4S( zFdO};JW$tqPYQjdpVJG6w~yr4d*tJI!WOzWA>>}OCKzU9RP0=JhE_i#dYy^wU%4X~78f%n`f zY?xGgdzlTD$a@amz7(>d5~qre5NX-l6^~+v+5l_Tv!Ke`Q01E7&jn^I|GXkqF*gWQ zk(V~RT`FUG%HSIyprB9Pp1H1(vCRZ{#-Adto#Jd$(=jR&%(Nl9r{nQ6P@8SXB-pOxEBCzGd$=t-0_NVUt|*HgWjVT`59V=3Ve=gwR| zX9YCb?i3Cam1oJ5^}61<0-aM*T5@7%CNzYpFl?)(J5EUl-D5T zHJtLAHKN6_q@4Xe_w(vL_t#XUxZj;3J%-myi|@mwmICLarl34|F6_N#LDq!4$Xy(j zH>F(gUgZ9-#qTY~Meez7S-BQBx_iq=*AOoeKS9OT^2O%!$EchRwF6z{jtk)E#>=+e z*5&w(>r&||_l&ze@$9+EogWIh%AKPxvRviP9=We_KVQIA?zo$sOMI3~T!j)FSGk{8 zSGm8$-qpB;+PKOcSGV(3?yst=+%IIg%6+ZuMDi;4&#Sl)H}$`xq7nVC3^${T)h$o2 zZd|`s-q7T|%KZW^xk+E;j+@bOmHV3;&;Oac%Kd`8%AM{?^|p$8l{+qL&vBLe1$~wK z*Kt$#1-{BXCSu|aLD{&VuWzSYoh~4gG4*~Ke#xub@5g(2b^BLTC0@kU?I>9XUN0@a z0||(p_}4i$@6F&B_-62<>Spi@#?9at^v&Qh7x#!GVm(62T-=K%s!`kt&Ub`g(&-v^ zgkRu0!b`+u<-J;t+GBVvzh22-e?xoo?NURylX!`!FTTLn+?I%MvbTf8_?lZZh3}eM zl;6Ft*niC}TI+Jl4#8L3^6%}Q-|CuMey^{&}U+@dlrm)owny^z;6w;WCIYi=>e zS+2R|Nc1(gXhQ!rw-n^6uDM0ZbLE9zb8D}xjB9Qw-`Dt>+a=;#=rVMFW{LQ=?lOFT zW}q&E`!nrX4|IQ~tw8zSpJ|KZmbyRFRslEG{h78LX1hPr7B=wxnR3?kUJ`i0xFqmG zmP-OJs7nIBqvq86gmFpW1>wCU@PfW1@PctkAjUsm68IWNLW^#$O9C&bO9J0iN&X9Y zi{0%@05VkAgeCD2x-63pN?e7SOI=efX(#D^1m6VqR z?l~!;??v3)hqe8Jcob0l2-@bC#G{XjCDXL1RYDN>NB^RMw|}nQ;^$uwd|bY&c&Wg@ ztCp=0HS|s|7$pK0)(G|^ORyiMgOyUS%GTw5MN5mfi}r=DD%^%WegLqJ-i3_s*Q`;3 z59A(-PL{V)OkxgylgnF$0EtI%7BQ^i&(^}twd*hx1Pj;Kcq-zgrh0uFw#SUf01Yw55kzej8tOl%#C;KXv= z{ze9F?Zv>xEsUz_BB6eFi1Jd1$te|#f!LGqZjeEDaKy!TiIx{cYjIx@Qfe(u ziSp%QOFflk>z4Y-t*YEhRJrA&r=G6sy@IkYkd$5`-qw9#4GmC|(xo?v(k0>@?OiLq z*C_AD;4Q?v${Rv5c}t=AL165(P>j(NPEO#8k&$>R%0O>JKow{y@~$il@Fy!|C7ABtb$Ze*b`lO#FDAUOpR3E+=G-=kHxc z8`AcF3WbLPgiIN|MaYyMIfYCF`IE~Jmr_5xL-)g_f{CHc4$ViamX*nwtwgkz6sby( zLgq$Q2^UNu^MVpGx3G7$c*ztpAyl%E`6VS}zLZ7CTqol{_-WUT)ZNVv9z`UVOMZi3UB^tL`w9ho!_s; zEwXFzv<~iJ6%VZ^pGKOL-Iw@Y*b))a-9yi|(p%1RyS2BT=cKpn`g^pu(e+8z7qxeTZ081(OyExO5^A41#U&LOal4&@1nQT#iKu&AM6;|H zU*pE<#FNQ0T$DTm39FD*w8-o73}6y+@C+9f&#gV>1SbOe9y<$AoR zD1>k7D7Y2q^`+9^F1aYaB;Nmi;k;6Uf&aJeRD|E}dZ!_NXbbgs(VT<_|D5y)R+80X zRdFZ9^AUG$dw_qm7C!D)v-xSp0=>ON3M5Y~AX#Ek}8=@M)?t z8Xv4nj%;pS;+uJ7Uec4LC1b0KR~41ls$`SN5oa)x!bviz$!6MpF*Xv%kpg=v>YRi1 zq-i9>?#&LOz5jCg2Sj~jaxz)(eo#L+I#Ca=zf+TAdKoMcs|OQpz2-anSWRhl4#D?lmpL?ENot#8;#b)szC-Mxs^XiWkqRwahzFFyU7~I* zzSmj1_0dL8UEZBpm#y#1T9rB4cvbNy2yJCl@~YxHMR~E<>}0G8#b#9Ytb<#wC` zYh^T+nylx)o7+}VS1l1&)fOv!ZP8lddqvafMJD@%Xnuxn7_WvNC^Zgd(S$FVxzzOh-(%zVp<9Ey{}jrG(jbcP*I)ETP>MriJDFl{F5Q7^g|gx5AS zY-n8DxKYojn^oWBnanpmxxq0fb%wg>M8Hhho6nrX98*vKRaVoqg5@qiwscu&qBrFe zQfuWM4Jm(7{c=u`8iJS4NZIBQ!5V^#m|riI{ubtzFNu{ah4bq)!v5MF^7#GMW$W}n z0AQ%7e4Sjx}0%a5{&%^wv{HsJQhJQj#Dp-Z20$u3VX**pn{xxz3rwU%4f zhI&l?A7ozsbKH&&trb^R6}JQJ`cyf9lx{;x#P%0OdcMX7X;lvYR;nESE$3?)rk&;y zj7gbi$>7 zBaeus%|+!Y!IvE4fYRt#1g6kkZIF|(gEtl18%u1)6YR^<=fiGnsNO8YE4wv1iNb3# zR!yJARV-|g)|$W-?b!V{LWb645KTsiT}9%rn#=n{{t7XAP1oez9h)p`GK{wN4k z(b^)_+FMI&Vo^}3#rmg^1eJ+OAzIt9VobhB+Cb7ISlhA9-|9BkpX)3H2oNAZfB*pk z1PBlyK9?{l8>+~<3r@AuqzZ^GB+)zIzW{eGYO zea^YhIrrxMdG5LA{#;^69DJVR_nySf4p4hn@XBx7yMoKocLhh}``(A6?#F>y&Hq~$ z_D0)ma#4gcLZyE3k&>(BVpgf&@6g=D0`E~VtJLpzIQ2VE%qsQ!9Zvl|#%82~O|l^V zT@PFg>9$ETIWVX52W&=lB2MSEUh{dH5SRl!WJ7On%AEOqt813&%=CA7PTWgk=5+B* zoHDhU>6gh|j2pmePTY6+cEu}fUe@333S_nE-o_ie^LNsjX*DPAR(qul-@I6czh6PF z`f3lUU(AX7&zT$EHgn>N@c9zcA?E9z!n^Qsy_c8gz3*0U*12UtS2^7eP83(!7F zU7zI`FL$M`ZFMGf-GhU*%@~a|w*7vL_k{QF^hew@>V1^jzLag3p%ea9Y-aXcknmnc z32&I5w`cAO+dU@Xjk$Vx`9X3atT*Dx`B0kDp5`T~C#n}OHt*`e-CVPdK8CZg^dkw8 zdQL5=zkTve3+iuLoNB~^1$ed~UV6gF|KM+^WF=y#f0MYD9D>cJ+YWj^X~vPu>^ZXB zp5Z2+Xw5b?FhhrxZ5LN@lAHL7bD2|dk`qy!%Up`n>=K-K15%u*dEkoE9jpw+ zY1*AB(9VP6M1RnLyHbV>Db83!28z?&^jM11bwEiKr_0B%Qk<>;3@yd!YGIV(bnTl+ zaV}Gea~af3T5&FmP@KzHab6|YRMJRBaoWFlVWG85gw`@8v~d2Dbh?I|6ywTEbHbfM z>k;sQ6b5ICdZo#Rb{UY@2RS~JMWHP995-n!M^;3j?a++bYc~N{w>&)oXGH!n@5uR7VXml}$FM@wdtUEb zS;(|H?TwWIgQ^)s%UGwqDQ2b9mhlXtx5#X+gfxD>iLb45JAi@c^NVYM7Tz2ECY>r9)MV|v?Hy^rLXoam+aGzN2pzDje2E@ON6 z5v1i_@Ced!=%&x3(c?a_n5G?E5llO{f?H!%#5K|y$`b@CVmb1!=7AAk%t}Q-bC7ug znSC^iR0JZLr6O?H(JBH#7ZpL3DdRVre+7giC=MMW%EDgx&} zvDajBQj9-ZbYXU?2=h0`s)#bKa#i|v&4n8b1AFXfIm2)3Y6~38EpS-)y#s%kUGQrd z*uT-Ai}gl*ezl#+KHh^lZ8jrm{$_(CIBl%y~~+;uM)GO-sMca*N9nB?{cPI zpUq7+yZ&u_ZR@sATufjyC^#AQf^vy^=aGYA5Dq;aXP&qik$=$Je;%o~pMaj{X<9Zi z7I*vB2E9Vk{r54C-kQyXdCz-M%%mp12?`#O|9jrIGLG9k=GI_VbGT{lgVSdh-G+rx z<}azNU9<>~BKc-*O1zNcE-;=a1sl_xDQnwad!OXBmS6}g z{swQ;t&f+OzndcX`_tB!|IakAtY2Lj0Y+b~j9q-Mq1P0ZS3#jIGniCOzfGW*7xnIneiWwAC6F`BgzU}0_AX4a-{W^LLQ z)}|^#tlbpF+PIJ;$k>yc_^jRJWNmUHtc`BTW^J>}pjaC<51h5#!OCE5)9xIwHu{4G z+*LAUh_z!48L+my>9JVbbwEj3+vQ_ev9>D!LyNUtEsSDq*S?8ZyGgNjlVa_r2-a?5 z*1krrsfx9m6l*sLYd0y@#`#Zw*L`wgc!r)Zk6`U4X6-3l<;n}JZI>w<*d!?XhtnpS zpWk3Xr76tXQ_WvlG&WB0<|OZpYwh07_lYmzc_nT*M zga5PHbnHen|2j3e$Xgkvd0yGeRJ{VlCey7qlS~g1=xKlluoE!7Dc4Pt%6uK|&lpAsrAK+Iw0iK))z^?!ZV=}e5Mi-Y{VxKRYV0IZ4z@z4Y1H3y}831qE zodbYJf6#b*M}`ame5@e@fOj`N7Qnj>C@H|Zd<-jqcLiW*0lce)Q2_7SHxaPljZSdchjsG=*YiD1~dMP^|RAQz%x-6pEEWTK69pQChb-JtN(= z#-?>ANNW@ou4F1K60@Shl}v>b$?W6Uhzb$gEGoodM^hofFH}g|Oog<~R7l%Gg;Yg| z3Rgx^;mSl*NN(a&;YueJk`tjqbX7JLnq3A(g{XPpROk*?1{Ioi=YR^)A4G+dWylZ} z#u_r9LU+?+QK9RAl2W0|$FQP8R{(|<6}noOroz07JP(Uzdj%+kC>Nnzj4}dcB+4Zy zqfkbpj6r!H%B3imp^Qbj9OVj>_oG~i@&S|&qCod~SD}nY`4Gz0DA%BT7zJzDc^^UX zQ9g=t9m>a0CZK#A$}E%zP##2i z2xT_P=TPRL%ta|jc^Kspl+U9)it+`NFQWW1$~=@`LHQEOe3ZvfDo`FrsYIzlNuex2 zc>-l2N;S%tQNDswgR%%^F-k2;9m-cx>QNd{8c~*@Jc;r(l&4U>j`9tZUq$&fl%FBD z^y~QVZ=gJlvZ%Jo|MaIn?U!DLKg_tAWMAVFse+YC6|7XMU}c0VfC>P<6nInQZ>mb` zuT-jFrKp0HN)_PxPf$9QoD}0PZ?r0SBoAqP+ItpXbhkhi{Nhc-r@syF=|ubsk2l*F zwwOe8+(nPSZN@5%#`bn22|kL?H=VO99OHy^t);ROub!|=^3WNZksY33&SHTnTDb?i z;ki7$5HfZPF;{qn<4-{txNgFf*3>qn{E{VKpENgx7cDBa<%DCGQ?>SX|v5H;t8JWlU-zei@Pf zJKi%HM;zn+ikal(Jh(wlZ(7N^xNoO95OaN(J3&^qSzY`hn^##?=hnq5`7!WU#Fyw| zEuyW?4BzHhrBpJcs#3|Tv`StjDtVPs$*Yt~UZqs>Dy5QF(No;!0O6Wc@*C9VB0TdS zdg)16C9m?rDtQ%6bh?UE@)dBBe$XI&pJY{_h;OnJomOi_yeha)A~h>Tyeha)B4(wC zR|WS;$n2vDq=*s6EJch%j8?=5wJ2iRW<^ZftcYn_6fsp1QpBswCD8R~GA<(t?vs$4 z_=2}u z>9G{C>wuCfVwaC$rHEYt7+Q+h)xxwQ){4lrZz4ssN-3gM_;Z_nGDiOCx%GCB&=L$1VBIC9Gmwcdvgq&Zw5l92>8^^_NeUSs8{v| zXQxvHeClQ+0#>P8Wms=3^o%h`T#0~YEdrWF1T-rV(5ys2vxormjBzuGfZ!QpIJD?b zEiJ-od=cp1jGv~TF>WUGzn;;**@^zm0s2q1=)Xpze{+ETQnNz;<^cW0tkAzXKz}m( zI4VMaL@x{dafs3Aj{pn$(>9|&Z8Q4QwxB;%5kmjwDD=mbBmw%9oA~J8>_mTZBIu89 z$wq&(%b?I7H4hy9-NDL0f79+9pg;P)>`Zp`|Zx-}#R_KrOpUAV2 zoEV_#5B-}1^p`3xp#LDz9|5NhXza3Z(VRyA5&6@-yPeR@&xSs(yP1*uZK}g$1Ql}QBSG_7F)QS5X5@ZH%nG@i8M(a!!7!vrOy9=W z2A-N3xeM701W$(CKx{(pJIO&Ym?nhWJ>KCArW{PF{awSF1K@6E;O;zV!w1eX@d=(S z#&E#!DDb+(tbn_jbKTu!Hm9!uw++6<+#1H*RS}p=uK{o7T=yCA<;Glk4S2J{+|>$m zL7fV7S8L2&EttDnVeV>$xvLfCu2z@}hlIJWa!}SpVeV>$xvL3tFJsJI?Zn*G0p{Ln zF?X%T+|`V^uS?Aeb5}Fwz9D9XxvLp--z2k-p-h;I=w)Fp4lx>Y5n#bw+Gfn9ZN^;M z7R;q8LYTWc3UgN{!d!9_A9GhbF_)YO=Av7&G1u%eD9lC81IJu2vjyy{iM*rJ76*Ou;Tb zTG$n{g5A{t?21{z?&<(`j|3w_!S3n+cG(R0O$NJwTMN77px9dzhTT)%iSr1%F@u`} z)C<%nEr|2h%&qY))l`yqJA zOz#k1Zses^{#PsHU89f}1gemCjYi%zg1l=K@~%zeXcd#;$*R(qa$cz54nOzw&guJna43O8|^jOI2I-sP;>+&(Ikk=J}p@qDz7Dgej zYu`l3yG9}J8vJETXLi>_AnzJRUa!agfn2LIyK5Bkt`X#2qmUQpKM_|UIWZ{FAMyfm zY459~O3Lh-ug#0S)_ASv#agMVnD zo3+CI)|-2wo3+IH&{pD2Ep)S%S-(%riuKnr>%S;w#rkWR_0N#m#~~5xBMe!rkE4oa zeMCxFpSGFxX`5M}wuSYniV*9sjbeSAeFtcPg z%b-{vH4mKi-NDLWebeq7us-^OSpOv%GQ|3^h74HW-Sk+j?>eBQtnczMtXSU_fT6|u zt`DdV>VW%BTMFA`iNj3bj{Dl#wM?PUkc%Spp`uWHBno|2 z%!)$SGKD@TW<{ZEnL?izGXYaDNn? ztYw^gSz1RxW)@Jlzqad@ze46>Z<9s;;C(^3MNc@_!Z-(FbK=~mtS`IJ&716NtzPJ6 ztpd0f1#loQ1#m5CfHTX~v`CJ(Mdf%~RF1br<#=0Eju#FI_1@wztP7)F_`$svVLbz# zEtKQ^K%ULuC)w%zbC2X2pFi%zf{OS#e(rbD!5|2EUI65%(c_ zS=@(1jOIQBSh$b2nfqv)xsSGm`>2W#_q9ZEUrQqHBRBE6uf@rIc^TJCEJXC*(4M}J(4W6*1W=A@pOld7w&$0LKzq+|=@;2Y$* z2wkgi5FZJ+-W0RK!4}5Bx5TV)u!V8(Z8opdNy!$*!Lw`z9wx&<;2$L=C;x#B%epiU zj>zBV?KzLr7$Sn1gPddwL+tY}nu9VuqH>bxdJKgEuSv`*C)vU|$!0Q}Q&r_8TLOq> z^EwM?S<@B>Vp}*T*&)8%Imu61JPfZ&u}&c^2vZ^LI*qjJ1ZmePq+O?wcAY}nbqZgisbw*+z}(NIZ!9-f*BLvx9S9}Wg-+jN4PGSF(GE9PSyo8Cdh0~ zVWm!>MkvMJ!6|kK5NC>=UJ1G`m@y%~-0Fm03A#=t+}A600uhhwU zrB2o>b+TTm6F9VUD>x{vX?3DecfCU0^@O@tGwQB)qVDpGyMsO$1EtWeh#fT4xDt`myKiJ)`bRa!pmJ zyI!I0dO_Xw3UzV*6KTCnPKt5m?GJU=GwQy*-HV( zg;4h{%(rnR+?mK`V7;-&YpNR-`ZMtOU}H_nObpIgDq}rEZV&k{LI*3z#YckNUNI}k zUC)r)CuRk?>lt!iWb+0Mx$7Bn&#)QLYlh1+_5-Je>#1z(xi1bDli z@wQRS3UAjl-abWUbJ{Ar#cT+|+aAVS5Ug>Ym3*gHWv*wueNKG2@ph_7zOPq!yCH

    !I@sD8J`1~upYw^MbB;$MW-{~dZ_>rT`Hvz~LnAs;A1co;# z7~Y^@c!PrB4GM-gFbubF2wQD()}-n+3~x{{yn$f&35MYfP8i-0!0^2mhBxZG?*@k9 zHmO;`@CJtAb}=g$209bjbdcFcBnXBP>ns??Ax6V6xkK*Y#27X1Y>C2K$eY0%>##Fcd#;G*t9zbFpU17A=4>C zhG00>kO2(4n;r{>T?dpDhFv~}6%4xqFtlLU)xszkcI}%8hBqh}-k@N3Lj(+OU>NR_ zYpR0b4GM-g2n=sfFpTq`Sgf0z6ywSp4a1M*ZD1HaBPU(nxu4tPgysQ_Y2#*l=lgLu zdu_PzBAx2RnAI|?bi$WwAGZ%AHdZuz#sAvERDH^yURpl$ks1D7{>^^H;wrx?)lgYq zU1yfByX*S*>~TVjRT{fRe;%N6NJqR|%G|uNhaM`dUEt5fD%bVZjbHceY#zN9$p%&v z9aKvZ&Jd+0@R8I+r@8u?C-cMk2peZ)6rl|RW)fB+gu%_6+nxan3N>glLP0>hZbM;f20&^QkQ=DN< z0omZx6!iMl4Xi1i6<=;mal6qJ8$?t5z$^2kNVh{lb8J2 zsP$uhJZfbASoAL5jOU%fzxZF?WuEzNBQ`U?+Z6iF=lwQ^z6*Za=J;-l*cf|4C(a?86y*;7tf_jfRzB?ZJF8J+<(0Asy zW>mN0yD4S?eMr=q_!PeNc{5)QTfXudCil+IRwM<5s6OZVj~Y{Z<=q(%QI{wQ;M|th8|}YvVRC zD{b7$+PIy}CXA$w5$h~%j6;mp#^?^w#Un#IQT9}*Af7ppbFD1r%3if{4rCRUa~J>^ z5Cz_SVpejlmF3(lGMf`t$vNB&AvyOd%Q+}Emz=w8vbhh}%5v^8@#U0rw@tR-8-6}x zBLFzS;Hx3P!WdkH&oqn3eBD!c7d{^H^76cKw|cYAo%4F}&&Yt`n2hmNUO!~KQOJ0s zBIAvUj5jJW-l)hJEg~|mioc9UHnB2rC%(cWbA5T6dAkrO+>~U z6&Y_-WV|tgj5m6gjGvWjsv_f!-bcOLy)WS}n3<8VQOJ0sB4eEY1ZK~XlVa@G9~p0C zGH#VBiHyzHW?jmS-qs82QhsAT&!rmZD@aQ&nw@uHLfXJ4q+$5daDL}UR%dJs>x?R| z;$3yd1LgjwZoAE2P+RXmytuM<@q+65MX4&>S85DqsFCg7`r0LR`2K;~CtdT_HnJk= z{jr7Ljarf5BPo(TF)Kx~krl~{VpfV|BP)_KVx~Jm-^SMlcQ>*kd5O(XD29#A*FA-g z!u-eHCqL;;deA(OPe$U)A8Ee2%Ix?znSa8~qrMaKJWuE&-ki9Ntae7eX8UK8 zRa55cp29yzf9+~Cid zG56tF<^Byf$els#`m%XwcM>*!9BjN6Z2a$F<8OnFw|mE3;$2^S$Gq$OyYKc(FU9p0 zzeHOLy_>#P|CN#}XXlw2VQ6~5Wh3%`?7f;J88^`3nghYNkp*Ah-vnb`2|k>OB=}ww zvl4t8S@4}9v-vxu1Rv(8k>Goi1s^n>Q}EFnVmGqjdrf?~1s}a3cB9ePfH6v z$S3v4%civ8Gs}8zBE6QqNGNtA74{Y%>gKQt3oR15Nko|S=3XRp6A7;Z@2q%Ji-c}s z;q{J~mGIic!pr+x+bf$rCA>DV@G2y;k3%Big)n3ZFC3LV55vL>krLrW+bq0jn}ru` zi}0ckOB7yKCH}QoRR)$m8346&PCnCHyxrCS5B{;zcG+hrh4_tV;gOwq? zOuKU+ywD#cyhh59A>kEk$Uu0xn;uJexeh3)@N)SWR>I2_fT1P4TrG?eUaox;39n5` zcx_U`Yg2^q+QhfFTNG`##F1o?&`rVPDdeIEeW-3c;3Hvvub36)Zweky5wpVlO^o?3idkX) zCdT|TYzE&4m>&V=o**(|JQFmp2{+{Z#c znHNEAb|&062MPBN+JyTSJr!j$bKhjCS#cjYkN!$e5wqgH&CGpM$?T&E#C?cf7Wd&0 zqqz?O7Ve{M=04hH?xSttKB^+beVe1W4+Aa%_mP|U+_%}uedI*A58aZTa5uXQiu+LW zz`4&ItPJim?al%Bp+9Iu-6=zcxG&a_0r$C^9*g^22b7fiTt0>s_qhTvw7AdJ!YJ-@ z?VE`EkVN9_xV;{S7l+>*!F`*V`=-e?RdL^D#eJKF`!*}?!}(9xQASRRapmog`!+N8 zJt|dR;J!glMM1!+1G;`kgMf@Pm9yO?(ORj>sPc0`(?Le`LbVx7}hd zUg0S#W~P4{fWe~*fZH?xw+R5ZDFAL$0NkbkxJ>~t91;M}=Adke0^l|Uz-#7~PT$z-E_00WfMFH~_nYl>xw} z-8leY^alZOl?)jI;8;Tj0PJphEC6;LP*MPP`50CJ>L)Hw3GZyb@WA3f`CyP^U zntSn)xObtL75BC=_tuD6ac>)QZ=IMG_qH+jHnJHUoQ!+hn0q_OL9w?b%)PxHo~=9I z)3W;yZ4Pj^jd8c=UxNNoxQk&yxI0nI3U}KWcPEqCoW=@wfwz?59dq>$uspw^VRwd? z-s;)LxLYQ^+_+0`^=wo5-Yp7uL7xhDw`knmBDlLn;qDfNyIU0QZc(@khlIQ39F(n5 zxVuH+?iRw`BF5bc5n#bx+GgCPZN^>N7Tl#OLb$sn3U_gaCBR*B6CZcCIB}Pp2=1a=vT@h! zGAP_d%>&0>cd#;W*R(qaxQqTE++8R`hHy95kOA(xn;r{yT?dpDcU?Y)74EtMFtl*j z)xs#;b?uu7ceg0q-J)=JO9bw2Vce~eYpTNCEedzH2<~oCxQp|jXseE#7?9`>cegO^ zKEqWmyMVifa0fb-+N56*aO!~9{?+2{mN4$#@7>oQ?oz_niMr-JQL{^C&3y2Fo$TGh z(A)TL7OJ*r=*35Z-lxQ@pmz&H?@}=<=-tB5`?Q!9^loA3eTL0|;AGIdg`u~H928?V zKfM^#ObHl~|6T9&`G?*(0nP#XZejE-dpqbQg}xXfgueHQS)uP1M&DUvHm9^gU)-oC z^u31B7j$d7AuH2MFOS;7==+%Xa-%Q3JZg(VU$a(AI@1dhRp`4_qwiKh->nLLw<`4A zs?c|PtQtqOg&68es3^xf)2->m`qrfjCSU8C<-M&GBTW`(|68GV|;<9`XYK+=!-*)MqdP2(3iFueQBG~m$n6csfrN#ZjC};oM#Epm)yih z->pvcB`1Qu=$35sHMba&H?(OKL~xFks(9q8*9h_ecerug}$x> zN{YTNAHxcLT>%(c=<8}>6#BaMO@zK%75Z*f=({xneYZ0DJ}cK$g}z%A`fe5U-Kx+R z=Rc9xbL7O}M1Sau%r5QS%2mGnO3BagXVW}ecwvg`z%soEIED0`|FG!0HH^Lwdvp3j zUr9$kSld`#newr?;*2NF3hn-+bQX9{YEkv#D)706;H?b7ZU4{W)m9C`_(%}kE@lP6 zTN#2o#H=8AD?@Onm=y$XWeDzKGoUyb1aD;sev=#&d)vYg{1P5e%U$L-R;Y7;!&@1L zpZ(9EzZ4E**kBkHc+ZJh;qX?*;pfS0PIHCBxNT23Jdtr2#OuW2+l*M-$~fF6zT7x` zo0<5qRpGE%rZA1epi_mz+cXYu6CB>AaCn=-;cW_sw<#QkL&D)M4oZ6z4sTO9yp3@9 zqm0AboH)EKz~Sluhp9V)r8c%P4);jS3Wv8b4)=;#;qW%b;XX3^7~X`#h+Y;B;}D~9 z7y%X>rftSy+GZT4ZNXuxB80=+qHq{zTml>>H}P?Jn-ho0iQq80B^!s$E`!2h)I4w; zb_Xj1hfTY4fWzny!r>QX$Pf<48Zy9Pchh6xu)Z3 z;qW$v!`tweEj{sJTLcboV;nvs*HneW+Y}CO6CB>Aa2V%5(b!Am#DGPAIJ}K<_;s!_ z&%Tq+d~KH6*yg=xmfG-tZfmyB%Jcpu7i+fTVfugQ9d}{P_94G!JBBX}=V|X)aj`8d zEdSXjJ9br#_iQV-nWBMFPw#jJ$IHWn6d zh*=4XZ7eL_6tfZ*+gMn<#byYNWWr(_3yY$k*?_f&g~b`~dpQ&q?;7SDh>C42Dti9g ziV9GziC6FdA%+Wyie51*QL&9hMIV{X#Zrk1OpYK?aVLuk=mw{#pjV)7V^Q&n_;QO1 zdIjn>B`VB1=V?&^##f@EJuNEC3J&cgDl*rDIGTsuNGiNR_50p-NQEtVWgfmBSD5z+ z|FdxVS?|*E`QOYd%ZD7nY9x=29-m+Am9={XX5A6SrTj{Oo@7vytj& zSXJ>|Ly{GvAXe}8-_Q?B5Zn>@q4hf2MakLTcCXjbPU@||dy5D5c6~FWoz>ghVpi&{ zoz>e}F)Q`f&g$(Q9!l_L-ZhJ1nx)<_>Y~*fMzW|k+Gh1e+pOMbThtp>5mImMQR)qs zwFK&o+{9OJcu3nE6w*y)cxQ|`CCnx{5%t#YQg3FLL8&*?JaF~q4pxSGGwsfSdP9GZ zdh^bi>#&cj6sfmZLk8;2-Sk-M&2>OY)tk%5uu^ZX01Pel=4xS-dUNfYNWHZy_13P` zTYH3hYiIRVNM}G1{{AZU)~?iByQsHzrQUG<6Yh>ACuT*1X!Z68{^Z-68DqRMI_dDb ztzW>`Ytgmgf>aywQVnC3#_qy=Ga8G%-4>>kEOmmv8YHdS$VCx`zfxZKXm9C=St+mf z;FgYO}3}CiCOAoyWH^Du5Ng2S2sMis~aBM!RtoNjHCmBLsBtg zscl8xj;I?R+Xa)&O`7d=!(%ksYL+_L?!4i#J-FdfYj1e$)X2P@k@+gASt0XwM&@h8 ztdMy-BePFtqrM245xp#A#vw){GXgBgOxujiw9Uv&+k(tgMF^R0)v#W(s$n4rT5i)OA$h=)4^Y#d21|s9{R)JR}*Hnef+Z8fz7i8Y9 zkQwJcVaG&rQj9BaG%{Zet3~E%T;=!d)OT~kWErSK3R2@fZVS>fS!#>2^CR(QCb@o5i0AuR&vy%M4$|@41IQf_^pHx&V`x~&6|+jmZx0}s%;r>9>3HNg33A_I^9~De zSySE#a<_9je$2>VR0`y(#Z9JKd<-vcVqPbjMqUu8Lf#!3d3Ol%?oi0PLm}@Dg}gfy z^1>k@?={rYB5!9D^6pT`yMvH-6eI5rC-UwHkhj7jZ-++S9gMsaq-KS@I~aM3#H^5a z2P5x9GW!_NguIAe7V_c{qmdT@7UZREMqb)x{gasCr= zO(iD=CHh0&9gMuQxJn?fA(sot+mIUQ;wA_T(@P(E5S+~aZ*qJ)n11gYZP{vvreAy{`kf_a zMZY_kerJnW(eDnX-*Pc4`rX0w`zV`1!^!A(2h;EKgm-EX-YFowQ-SbK1;RTO2=7!N42J~56#^{d`g?^0U0d#869qE%1UQLv8neiQ$9IVGES26+4tyBNwY zjmJ9~kLO8y6dvznJbp~f3XgX(9#@gsN7aPKh-nrcBM7lB6y6>%En`}%b@TWH4hw*-NDMhW7F;& z;4%7x@OYsN8N%aOLk4*4Zh9;{b{$YsJa+jQR(R|Rz|g{DR|})?*tKsWJl?7Bc&EbS zoe_AvlkvDluBi%-cPc#IDR{h7;W5sCqO&@3VpyX;Jl@H8{0vtKTu$S0N#1AkyvI{d zR4?|cQk69o^(lW=>4eAYecX*tVabp?@afC7kNZzn)K@O7sK2FX>g3`(?EVd@np9<@ zzo_D=qQ^1SxN_nAs>kP7R~4I|*0Prc^|g!q60-VVTbP3P%G#=wf0u95q<8osC#Yur z;)+G7v;$Kyd1$O?_zM4idTII0M`pmo%|w`0sfNn>>N=BAz3ci1W|mE#JHPbdx#bT% zFk{Y5<&TzMPdkO1cNZPr9sZI!vy`9z)%wOkziHC2E4qNXq;RYS=AB_+UgFjF2h4L) zm8t3{EipfAoAqGoYd1bnTUEWF8gEA|UDD84yC_xfPp_=3U1FXcrJ&H!T6}gKILO+z z%T73WliFo+Zz`jVkHpk(iCHoAPG;)2#jKcmCo}a~F)OCt$xQtYo59%0n0hBO^_0tP zP&>j*{g(Gn=bxzu(-o5@Wp~4*N%D@vNfmW<4U-zHAFr&PR8g5~tgBma^Q7`rL*wj< z%CAhSseJ-Qe5%8z`K1q)%x_p+QP;4rwsC&Ng2q(6c`2gpPxC&Rd~e)S7P~=sCZ@q8 z3k*A$3%s%K56lX?cQSTgNoI55P}q$L1BBf*jNKq>Cw9~80e3QX7l|)7cGK$tcPi}e zP}mI$R@mL4vAaXCyF+1jhr;d-h20$ryWx4P( zZ8Kogwg5I&5d!RvD8R-UnEbWCOO@Wl(^Png5fIUlw3;}kmAp^j6H$4_$yACKRV7q(_E5LRIU}yohtA$a3?b#696&jUatNgxy)Ym^_M{21jml)pjwTa^Ee@;b`jq5M6{Pf*@K`9CQC zfbx$hZ=(DY%0Hw03(8w4|BCW&DF2S~Hp>4+`45!;hjJF>KT-Y*<)ri7#-*o8Un+~%-Xo@)C3!kn@?0ZkC3!kn^7v#nr?Qefm@q<;XDLe_s2bA+nNw~)P45%x zV97H@e7PkLy-%n^NuFIw@<4$o$+JsKo?Rk&b}7lTOG%zxO7iSdk_Qe+@|1BB8k~}!a5=b6$6JPS|a!MX@B9aH) zk}Y}6E`yRhsCnR$#~rK;$z$4`1IdH_Aj$Kn3>lIA;D9Pj6H<9Gor6kWTC3$v5NS<9RdFIJARY{&*O7iRyTMr5klkV7>z-{PBgyN+?UwJX#BkRa-;FBW;XgRg~q!T8iQ078t+b{ zu~{x;H=%Ln;xJd^dkeg+e5iZEz#Ce8WVi6H_2yoD1WZdz(JtO5n?ny6cQ-R`hnN-P z?qGcIj2#g?+}%-(ixVgT zyNU}!O}tA$aF>)JOF0@QOpWdcQdFyC1wSxyBSoMvKio-3{-a$s1|r#;-7#l zSV3bq<6JkJ_gIb%CU;;-48pk{`85Gqu!6>J#<^ZH7km4yfCyI5z|;i7xfaGb5StU{ z=v9)t3FivDm)RG5+nwzS8oL$1?NI;+@=^e|Ck=3B1&uwD+uWman|oAlbC1ex?oqi- zIHcU>D;$Q-FzQ_lr)GUWgPD7T_3S6ZdROGxS=4(Zw`pfl@A1qm>Lp|~zYNc!-VJiBE%joHR&Iga*-B*%?o>%b;iwH4mHy-NDMBLDTLW z&>;GQXz)!LGDL&1h74%X-Sk*A=sKXJH0bg%tZ2{`fT2Z$t`gO8M@8Y`-6Zfbn0@jaVEjSip=dFEr54)=sJpixU<2Qzl3m(2C=sa}lR z{WBLoiFve0bJ|0&dCshZ;`z~g7$+x8u-&>x<0L*3P8Nw-;p861$%$fCIJt*$aDYW81Mwkh-nrqy*Lxx~E){p@#yPF;hmR$#w6qa2+h7~Nk0x+~-+10`*Sa$832$nk) zEO#nc?u>xtPKM=aa!pmR+^Jx>Q((DM!7|Q&VzV-GVo;+$Sngz4ew3>OJf~r~G;i83 z8Z6IAEx@yliz`#_DKDcBs83!kvb@|G=H<_O<<1!c{eYYtMHrdoOFA^B=1!*OXNxUr zb!uwHN22EE#H^^fld1W6F)M2BWNK~_v!dosrsifggQAmBb0<^tOXQ%~+Z(3lKlT3j zJkAz~6YKz-RiMv1J9h@`ye;T4#m*Qy#Ljh}49tq1JDHsu$!yMk#m-=5N-cMAY8iNJ zx+II8>D`o_%+Ak>FE=~WyD2*rJMUHO43t&uyjQdHUSa3GikC3arG?7Ua8^WK1+f8Db4e#_40>z=}`1$(`hyeqEo z{FZ`Qc)%f`TWp{09ard;PoI1L=-@+X`J7q&;S#cZlD;X)|F~z%1aEx)OylRnz2iLZ zQfyp98^$_5e}*^iGA~uRu-3nh{+)N-yz6LRyWhp0f1Q8#-G1q4bjY}|o;rUVx5^8k6FdyrL1$oHy1@tEsK5s99Ls z(CE**?k4}&C*4$6U%Q~XCUu7ow^#R$d%tHNt_^-L>GA5tlVJMK-j5Zch1V8%*Lq$_ z;Q|lS4)APyDca>-o9A7d?@j-RS5oj4-XG+l-Nsw+lYIHf2ycR^Yi1R!KkKEv@s)j~ zoIKH2QI0S2=9y5HUTPv$=$Qw5;Rh^zsdp2e`SowP`x7^ZVtH9+EKA-O8Onb8czpgB z^H2>U9uBfu5(V!(y2H=tn{ij@zD_-rsPQ%D>?T zm>%%PUGA07m|H%7_Vm*G=bI+^Mb~5ZE6niJQ#`DbK&Rl-e`V>Ei6+Em$k;bBebQ7M z^hlxfNTD|kafIng>W*NDjr)*y2ZFuSZ}@6WUCojPpPsU|&st9_9dA0Iz#CLwjLGVY zl7g(S%xtK=ta4lB%0VjEeBD#{2l?hie*gPD|5!c_0w*%Y1p;SILi%9NWd0E9KK{m@ ztkAn8M$I{n?aRFBm8tUCenaKLRMnE2RQ>4SOo#nHOjqER7`~f;vp-$N=TFKXcQN-p zcKqi+6WeX8iS4%4#C98+c#P-Y;D@ga*Yv`6wfV={n(_G~?8Ttb49lSLcvaU4^Gd2a zN-xKkFwixv^qz7ItkLFdG3On>sB6(zrJLX9&97ekWh^~WTW?O<(lJ>-zT6u($}3w^ zkI9eb0sHYIFZ0G-zyqinFMDroza1b7Q6{71@_=;X%ySTC9@shE|*%j7|zZ|Q9%ne5R zd|ol5C_I}C75vmxh6@n-cQQWyQ}6Ur>dO2}z3ETlG?<--zAedbG(9*ey;E8APSy+l zG-AZ0e{gT)4?dIL>Ar}aKH`05@?^V0M9j<9C{K>Q-#;Yd(tk+k(lDO_hV!Lloa2f$ z374b~P(QX)Klyab0gHl;G*^@H`G21$R}uUmomr!8&aBZkXVz%DjLwN0 zd|O2*vj#wNXV$>!7<&KUeX#)G_W?Tduvx&HxF+!hiT-@SE!@QZi-p}?lM=~E@D~gF zI5KNym*6xT$X_5+^T0D}?qFqP)=ax|kXb{2(2(hnAw!w9SVIPxHFwivW!78=lr*#E z@-eJ3Ypwtct<0LMg;AL`*S?7|YkL7Gw|ig0Utlv?XfM=odaZ%I5t+5Uo_)PTr~L7w z%$oVSr|=^B2 zd&Zo5?!Nhv8Fyiae>NmN>E<%}@Q;ixX<#JNu@m7S+6G_u>(J>Wn*Yvbn{*;oRa(@1CT&#d~Lm zlZt#WoK4)z*~BwcR}ng1P3go($|k-fW|d9c%h|-2#jLW4dpVo_CAf#A(LcN&p%=Id)qSOt0 zdeQY>?`CRFr?l3cp`;gG?^PMfeHaPpH)|kas4|rMbcS-DWGMHk4COwr&@)dsT||G1 z_NffzK9!+_L&{M0a@hArWhnQl4COw`P<|Z2Gz$vvLkTY^ypJ-J|Ar$uj$iFl8OnV@ zhVn+c-r0UT3`~a7sKI@l_jpm-BY6*Nwqo&&m_;mJ>`ltw#~S1%GW*7x(IALvmIlFr z2V)>xgCOidCIdglHfs>tW(`8yqCu#NkOn~r+!_RDHwI8#4MJ|>Ymj|T4MI*tgP^mr zvSt&^F7ju109i0ZX%HI39jpuuV%nVp4TAn44f3)K8PXuJh72@_yXmnsi0gooY7m!? zVWmM_0T@~u#MQzm4dU82kp|hPG{`=sLH0#xkbR!jAg{j|R=s7LB<4X`q_ z09K{>h>{F&k|p5 zqNaD%?eoI#s@t!K8i1>adViXz&GY>GiKw$z2f%K`$@BP7yTY6tS{-0Nu9)|GeT2To zn|pNtKrcZ@m3X7o0Rjl#&k(#&%nE|{^Ay(_F)Ik(&k$TkW*?0p2u2vPAQ(p#4Z(<% zKrn4H1k*M{Fl`G2Qxzcy-X8_QIFS-SFu92j!FVLp9F)FwTt-d=g7>>1*z7VW2u95V zPsF=}l>xz~-8q0@^aqW{Mj0{$!Lf!6AlTjXSP<+wprjD&@-eI+*cE`G1;MTsMnSM^ z-$W3+UqSGG1;P6xAb3AR@KbV4RS>*iLGXTo;Qb1MasCr>EhQ(07y5(X{S3j+bCrPN zGz3r1yYUwXg5R^8GXhQ>@a9y@yaz0CBv~C`KLcyg?UrfwYhcAk0@jIQR=~QSfpxN& z6|nASV4Wgn1+4oSSf{cX0GkY0_Y<%dcy;2RfGk)YU_aqpf!E09F3Yn)3Koz1BYIfu zNq$X07OW1ipK)#}nTx#xHlZJ^4uGkKgmbSl&VksRICs0rxvy2siu<~l``XCt zqY1=)h+Y==;Si&_4*?eLqiyCs+Gg&fZQ(wuBE)@NQQU_Cmw@}oO?>X_a&jLz5$;2` zWG6q(E`#De)I4zRa|bJf`%JrYzQvMM*(#V|XY%?E<#Xfj?O zOfcKUxyi@Gm%yw_WZrHuF`Sz`pwJeisnGU78f{H(@<2px61x$w*72bp3 zDs3~P(l#?HZ40AP6(L4F5XGoCK@u=3xrxuH5TuUWBsmdAJ>X(gv&*0u6*Ui>QQg7H zU{urY955>SgT~{tGGvHRV+|QFs=Mj27}a$^Ng37UV^}e&D*!`_QC%&JVpP|@i5T^O zV$=hQQ4d5g>H%id=j58I81;Z+)C0n(2Na{?{3k?uo}3sC=#NnkFr&6{m0;Ejj5;_* zMZl>8yy=!vk0#Ge9$*l?lUx*`4;6^wBZ25NF)I)~z#v*CW(A@L7)0+AvjWir45G8x z3@}Xwq6auP`Hc8ixyb{JbI-E*pw3Mq*+@9|ocvnlCJ!*qJx}Ih@2JjA0^cY%`6lNk zL2Rb+W_oCt(5BLBX%BF2vW`^Zgv?mOt@K5`=5hi=KvO`2T>#eJxG;N0g9RtEQ(cISZm&>zHoJu+m7 z`(h0laG$&BvAEB5KuNjJmaNj}ZzFxVe zD(*X|xbL8F-$BKFIR6Pd`p8K!uDtzm-$CZSSGY=W;05j*9QPsM)B#h@y_r3+J)U-7X{hX47B>PCOb;>PM4zoMqb|D^}!`iqdJtau`YOpurfSdhuYfFbnl7PHD^9%S_G zA+tHbRVMQwqi-*p4+U7~Lf?a&$$UwC3HoYIwon<)WFAr=3@%k5d`N@vApzk-3WN_S z5I&?p_>cl&I3y5$je~MH3WN^D&pr`uC_e2DS*O))DxKE!zZ7MXoiO?Zr$X5ldoJQ|M? zcEMxXW;~{C#$(zRJf%En`}%b@TWH4hw* z-NDMhW7F;&;4%7x@c3;RGK9ymh79o7-Sk*^>^h*Nc~!^8~mjX z;qi>Tl3$!Dn^`6zo5Q$k#7&rGPC84a zbe)(LNFQR5Ze%mSIvGeGVvz122gP1@7^MH!`|)`M>EywmG|3tG^ZpFeA);%n`Tuu8 z4=TDo#B^OVD=;g%KE!lgM`m+nEA#O6xWc?o_@9Lo_^gMu`o5W0mXA8H zs@bDhRH4`_Lyf)sX_SX&cCf}EuT}S8t-(6G%EGZikGaREJR`2%T&=1W5d?PRb(yu$~ zR$8f>w9-OSLswv!xF$4r2db#Us-h!-y0kY9x`PSLd~zMus;HY)QLC7hDuRY0#BJko z1#f0G2b>F8st7|cS{31R5miLntcqxxRS|8ADxxYvs;E0k72%4SKoyaj_^PPesfx&n zs3LSrwkk5a3`!ND=7Fmscd#;4k!g1hR1x}vhD^H*8B#^Dh744ZyXmo1k?Vkxsv?(< zVWo;(0T^1U$koCqRpiL$0Yx6?H3B)Gey0Td5+P|HR*& z7Y<^nHUM$4dS1hhv z=znb?-kg9ucvZ^3%cnJ5r;VHKU4Mrka)hepFRoaWN;@%?lb1%U1aOcQKYeET z%m?qiexm>2j7Q7o-!pU0jQQm=ADD4hQDg1=D(q53w>~gdX*Bu|S?$;zzTfgI-WU7T zjx$OhdSu3&FZk{yF#45|MogMpFWsydU!nSo@LAn@!ADYzuZmeI#%@-OuZdYH#%@-O zuZvkJ#%@-OZ?G8(GMQrRX2s~ww!u3bR*bKBf1U%yIG~W{;4Vxz--S8zIV%K#wkCGL zT^I}_466d~B{3_V*v&feWip#9rqYR+OhYg1qR zCr7n9In3(Bn`3+Yh*l?uS)CM$S*a6f8A8pGWH!Mib%GwqQYSd@Xmx^45_Lk`tWIc~ z)d_8jI-x2;>I5Nh-?PEln?RkAoA~PFuv49o6HzDVtZa2+b{Uj9LCphKC+=Wns1wuf z9H<7 z@z*iE-u2-Kb#j>1$ym9jDs^&LsguK^P7W(|g7cpU?@Dq~j4N-nIx&BBtU4*;Dsd0T z{9WIMuSevU!bFH#tD?MBxwCozvs&yx+Dt9Ne~f zC+I_kxpDeHNFPg!iWi#fN7FE@^V z%1kgitZ@8D2*42%l*Rk@>o(@GgA(k(Za}ef(Ct@-&v8#+?BB-X$hYF6{7jxdY&h*_~X$eqBdm&`tzKrD{%XR$aAF^FpRy3gneVR71K7N>1y zaoQFZrz%1$ek6*;aT+IJadH!%#g8~yoSX=Yqg%3B-0U(a7DvqkXK{D1GFaTSI|nR| z{-7b#CqsrD3^n~24aC>B4WSo}x? ziyvVYe^IWfip7s87C#~^enhc2&VRzbGvvh3N`EYVgjxJGuJTX9EPf%~J&<%a0!|%p z=NBz^9|@wAKr;jjC_la5Y^bzLi7saf2`Uvy%88(BjlkxNs=IO#;wgEaC=II^)+j(CA zB|5A*NLwG_wDnW-EC_?MOnid0HHHI*M}fCg%!-qbFeg7vW^?)~PR4W&;^c|U$%i92 znO@6$gwxhd;>*p+^jhX4ij$8jP6l;`($+sd6l-AS7}>#m8uBw>d`1(#c7g&SIJF$Ud6NT=AdwuDa%8oc$1t6uO4;r zs@Y{wyo#C!&a3WVW$>zLcMf9#y=G^Ph03kDQo=BKqUi zqs*(XaFyU!^T*ZZjxX@)KzJ1arw*7h-{RPDOB_j-Xg-Ye`2zRk|T zGAKtC!1XAA19>Tc>q!HgnQ`7DdCDG@r|eOA${v-c>`{42I3(12mBVl>jC$c2%{{_; zCOO+fc}nwwap25G%zdv*&5HYanET!kv*NxU=Ds({jCZ_R z?nCslxDSUI&3y>4a35_m_t7?UA8iZwQ57NX>xtq%47dc`M{eSCUyqaf$cbuodfPee-QV*B}0a|FV>I&_qm%Mi~C#$l$85iK86+dxdJe> zxX;zXDDHFZn~3{*6!-Ng?(2!*z8>bjx8<6uxUWZXUypEKkK#U@|AZZ9$w@J;y!~-s z4|Cs`$81ss9C(5I2Dc0f0!|&U@Nvt1J>fj%46mfWJSAR7S5Z^Bqy}?*{kf^iCH2*f zU-#>38<4%k>L)r^*~4)77S&UPj#hApj|7Kri&?>855wVEF)KLiVK{t8%nA;B7!JM4 zVAv#t!ye96P9+D$-m!45vKJrEd#dt*~5U_Rb^uY-ZH0F0JsyX7QkD^M#|CCxnwchM1{mo$Su749C> zxO+@+_n5-nV+wbVDcn7#a2E~=pxa$hQ(866;3!`w?wQnNaJ*IH?n8Mv-5x9GdardlT zQx)zWQ@DFfaQB$PU7Y_!Tknt)0}}n=?lH#Qv8mv1@&(+*gJ%tRg0RtVtRG0469K0V zsCmNT?y)fLe$IQaf84#XqO!62NrSr$OByf}whA}qD{HD#iyN`%9~K3ysH`-1=`+yx z7^Cl)g|-`yY4pWMLf^4sR_J?-(f3L*EA&0a=zEoz75W}y^u317Kw*P*8}aps{A=;> zkJp%LXsoNK{K|a1DrA1c;)=S4g|&_ID;6}S>dh?6V~oD#d$<9#m|=o>f8 zIl$m!jKObI2Ysb57{i4y_)Re@3_ivf{1%zb>8&sr*h_idS)Atu>6*^S%Jb6OOO7!H z7k)VyscsCWx0f7K7<^n|FsM{v@bNSTn;Y%NBW~McH-g(Mss1AGL>O*Ex9yJ$+gfk# z+x8~0`*~pYHR4U(wm;51>x)_OtnqAqJweQhXOA<_7LnPuO;X&${+a z#Iwg0&mLDidpv??k2B9smTRiw+2e|5j|VNfxHyJok#JRLqL|PB8b)BeRbN5%(c_S=@(1jOIQBSh$b2nfqv) zxsSGm`>2W#_nnC1J`A`7+(&NWbKeOk_mLCfK6Fbq_nBP=#eJxG;N0g9RtEQ(cISZm z&>zHokI9fB?u#{Kzvz;BQ&_ zQU4PW+;@VxuS%||iu+C|?mHpecS3O=&VRy=h2*3dSKj`(?*wz-QmzslX#VzHn65eS zJSGB89q>x6<-QZ)JZ8D~x&HE)57(Jhx%{k0`M*}(xX>@H!TtNt1OECh{t0HqrF9m! zPH0xdM`FdN#jIHI1he8ZVpgnpf?4rdF)LO)!L0Zko57A|6va8=#%O zsc-T31ZOjsiZ8+6@J;>OCtI)#-eB?rugv?$+B~l&f5hm2ec#DT@<#v5sGp9yZ1lrp zTE_hQs7pqFZS=p7x_b1Uy=P>lIPgt3+L|5_P>w)b%P+2Zto;p5v4IWR$4uMcdME;^`$(cR5;V zQue)0QP&%Yx^-66oeIu;E9!b#)HO-XO4RkTsB0Fp5_P>S>RQO`qX{JH5WOr>heM1O zbqKJCI@)GYN82pwXj?=bRS^<(y-}hLe>f6|I&u?V)b%<=9XSzEhi=Ihb!L}Ai8|Cg za8c(DR)(lE?aqOyLw}H{Yn35GqAu2ufv9sgJ(j3*9Z*tH=khVEM4c-DLrc`TS{Nnj zT>B;xb-hZ|^(s-<8zJg?S=6=3HC2haUM1>!Mbz~wQHS%NG(|f(F?`&gsOx1>*TYpp zA{mJ-fEPaY1cOb*=wMMa_~5GZ$NnxLy`< zEmTbr`dKCX@sUJatC*FD>tzwwCT1n#dRfG^i&=@dUKVj3Y=)>yCgOTo#Jx@qib3$9 z`6wqa@%X$?#qKwXp`6QW=yHU@Z`V zQo-&?1-o!)VV8q)DhhT_D%d?quzO9Oh24`**gYA*?oTZ2p4PB?GJsvFS;6kf0CvT! zVE1GIyJYqeHiBJ5FAH{Yh|#c%01NEWHp4D$Gwjl~z%Er0g58r*u!|Ec0ql~S_^^A@ z3A^M(U>Dtz4ZCKSLBTF+9ysi}gOvfhrrkM!UG#^AT^TY2yRn80VAtLBSg`9lpro+t z@-eJn*A;-F1-q^mM!~LY-$bx`Qo-&?1-mCBVE3fwdifj(%SmE zTH2akX+YO6$Gc}5%q;D!2M|v(^>$KyMd)xvz4%Df+a+d2y(gJ^yTz=i_aswqkC+wp zo@DCnWiu!^8TFoI>OD&iioH`|>V45e+WC%D<-%Hj-gT*`Qk8!BjJf6WXHPG^e|~BC zoLPR+^|wr(eA~^p+&mRRz`PL>|GD7?f6k1#56>$1Z@59^0j7XY;x|Ud3vmwc_ax)* zGfOT0g1^G}i(x|e`>dE1{+?v~eU8lLv{v|w=_iE0OBsKABk-5r3we_7S+t5TH~!Ll zAy29aJmwxk8h=5f3V%;&{5>W3drIN&DTTkM6#kx4_zQ=GznvVE(^2?)O5yJ*!ru?) zS^Pca#NSf^{{GnFZ=c5BQ;fgeQnSL}Q;feoVpjNjit)FX%sz%S;V+_>g}*q&X#7Qh z1%GLq@t3w4e`#Crm#PTi@2M#K#hI1>f5}aJ{5|EwUveV&i*CurU$e`g@E0`?9Dm)x z%D`XK?i}DR`h)PdPlgQPZ>%8${B<`y7XG>pC@KEBd<-l6bp>E(;jgQOQTXfHHxd4x zQuupH;qR#k{5{3^`=VS^75<)5_C_cqd zd>=U|_D+YP_(ypcdmd&-dj%+kC>Nnzj4}dcB+4Zyqfkbpj6r!H%B3imp^Qbj9OVj> z_oG~i@&S|&qKrei3S~UXhfuCYxd!FKDA%HV1jR@BD9UvxA48dd@^O?;px|YMUJ*($ z$_*%=M45f!Zs9^QH3VLe|DYh-v+QSgwU_ZgHsQ0_#z z3*~N<&!S92nT}F|Qi@WBG6UrvlzUO`Lz#*4ODOlF%tCnp*_C|^MNBFZnL%tQGVlrN#oM|ljT0_Aa(N|Y*;6v_gWCr}omRHJ+u{U_;mlTppg<@7x=@d()kz_W10+dw3qz;lw&#_d38ZxJ6 z)|~>3&8zWSd#B(U@#U6E^lHRYN-CMDRcWaN<)Wn0X)Tpbi&Q$Tq|#|6l}>vX2C z4vu*^^|X>oa7a>VA_t`}N-CXJQt32FrAt{Vopws4(}7g_%RnkocLc9eIn7dOiqx#6 z(rK1TQ^l;L(rK1Tcaqu1QIS+a^s=N94l!CPA;2P)Xq%-HZL?IOZIMb;MMx^0j*?2a z{w9!0{Vov80mgfRaijmycm3m0STBT2jf?!YHZa+BcC@I<2JAX(g3TM@Xg9ES1XSnyRGI zX(g3Ti&Q$Tq!P}5BK7;oiNVbNq|#}YO7pl%NT&-@X>d{r0jCb=e#T0r(_yLfX~2W$ z$Zuz+v8R{J^~)=sl2kV^{AzUN^`vhm{FVi%(^~%EBbkfDtmMyWmOm54tmMyWmOqol ztmMyWmOoS23^|lc{+wp{Q$r5S)2X4EF#Ehc=O2GXS8_0OfV8I>Y0vz2&?5?I(e;G1 zFNv9u)_mPlxEuYMpLf$u-n2Gv76jhY{FXj!|84KMd~fdT(e~AH-|)sw(b~Yg%D%y@ zf^*Z{2dB?2x^1FgJ%34M?IP0Hcirt@Kev4PoN^zY{@S3Gf1}y_o8ECB^R6$xW8QVX zztnH|YE50uk_NvnRlmTvn-pwJD;*CKExCAh-uRKDa1rwY8nGjA5*^UXbU^0fLJ)o$ zY~E9NbDlY%Nt3*3*XNA~dS)C{elMI|Y7gnB#+cXp;k@heo4k^|kr*4^x!#hzOFXPI z_~E>g!XKJ{VKYA&pN|EwZcQA4hi03j&Zy*7XC*<1GIoB=x$}U7cwIprg6W88 zTp&)I$_0wrTmr0ec|$tDtz76WlBbn&F%N*Gl?#M~QZ9XIWPM^pT>&?B)P9I5-0?+#$d-}Yf@7DCO1Su4=k|2F7K}L#MNsvC4AY;hv ztj0#>$W(2@-3_K!UiN9!r9_4k)Pvarqcl62ujNp(R0FEsT;N zu6+|pkUk|r`tXN4{kU~sgaqkh338=eQqROMjvU70&mQ>ELZgDWp?n9D0VEHU$9ann6i#*CYi64 zUlWiSYBvbh$BF2x$Xx7w*XldNz}9SWu7hz7#OA~~+#E5!49*pJ6WJGho1KGYcKQ^+ znWuHr00;6?0QW)~;LI{RFG%Y71(kY!L8YEwP^sq^yb(x5r@WDLAaF>iH<`om-7xBf zm)UtiSkFwQe}PiZSD>x`pS^bhtm?S${6`N124Z7}Mi4vB3C5OW3rRd;V)&e?%%uXY`v|wrKz$t@0S1p z;%NZ_1a(q(*G=8VDf|8X=6B|vxp$7ZS3(X6G9Ebh{N~L2%zWl|eltTWGPgQa&s%-f z^C7Kz-lmPFeAV+-;l70?W{dl_3inkQvBiB`h5MGW*h3PS`%rpm+=ncNa~}%Wa35a_ z_wluGA72~p<0t~$w>6CW(BQJ*J`N^x?%V3*J`TiiAF3r?^-Nwy#eIl*x=tbDGcL2m*1?oZ>z<9 zTQQa;xo>L-_iYvKTWs~_%Z=Cq!>s~_D?|)X%nl5lmn`w+h&P_^W>1 zSn6mr2L{`ZjM%872}ZXH*s5RiTaQuhYOw~}d=YQ+m31i_=rGuB6+Pv26P5v6YXcoV z#e1uTx!Wwv1$A1OyDf>iq*>e+qNjv6hS%8~f05cAgx7$ca+_gS9hzHD2|i^$C^4Z~ z+ktNrUM)9bi&wV^uP!iRi&wV^uP$VWBtK?-=yo#7d&a3XiO5s&X_ZaXh>Vw;3 zg=sR(s~I&J@TxoM8S$zsL)r4GD~ub8S6u~geetR*g<-tv@|zW}ZnJoGo5ic!LU?tX z@aj_2r&_$a&EnNzX)r zWUr^(COG;&2T_DNv~UzZSx@p!>BermKo8ah2Mr`5eHo;N#8$NDjiKE*@ zPq|P6*kaSpc^^32>yR+-~%g+buoic1usW-RLPv z#kigIlw>fgLzo1eC8ZKUGxV*K0@)FSzM#f(yP-ZE98ur&9Idh3?$lUr_cfM(t2LH8 zY>nl1A;2~hvqga0g#g=)*doB~LV%qt_K*)IK$K$|0V0dx1c;(G1jyGyfP5_k$k&Dd zIf?)QZVw|sG`%bckb}vb0Jl2{kOMIUh-yjKSdy1f5g=k7IRUy0D}?|l-D5z2s1GK< zZqsC#05fVbAV7E0Ga^7&hO#9ftdHgh1w=y``D!0keSFG-Xj!f^r|9RZ@ixdMh> z)&#gcsIhzio9nuaWgm$|+ag|7bJtVevS=*Q+8j?{4{+O7cDrz4{cmYD+ir6qeliy} z8nMNN+l33)8nMNN+l33)8L`EM+l33C6froF+DYbHe{UBx<+nKiLbrgL@;mCkUPD`1 zcUg{sZgRV?oBVCRLM+`RDxP8XBO|tSliPjW(m>!KvDC=X+1rb%qqF}-nbH)~VoAmL2 zPsb8pYf8jAHXxUAq#@zSk0x5Z99dlW#mc(Ix>b)9mUydb*ETjSt6Njs)L6H&c5zW6 z+C(P^78O?ARG%|3w>)P~&QGKac`Ms%Tz(%*xe;Zd`Eql9?-h;1yRygOor1$fzo(IO zr;Wq-$v9kM#1;v&&4ufwQhc}z2Egaq{IQ%?|i`6b0hj$7NzhJ~-erQ=<3J&iS9R8MgM%Y0d z-f7`59nP1;VQ{R4!@F!8-W7tw@Wwd&vSe;|2oCSEaClb;4(}2ie#L}l;qWfO;a82= z!r@(l!><{!g~Pi9hhJy0hk|AtMlqz}Fme@+!zd|(!+b3`%-4d$d~I-;qX^*et}q-% z%gF+VIhf3G7;miuhdB^~!@FEKOkPHX!-#q0IP5O06da~>j{y#&J{X7JFinPWIHM*5 z9Cjx?BOG>RC|ewMg>ggSu&V&BFC2EIFbs!XezU^iT^0`SvT%4;2oCQO9DdXEsTL0J zvT%5p!QovN4&(i2et3%mp&@QK9Nr~3yhEbQ(Zea>@HoI_557bwC~&TT*{^DV+nqhY z?Gk`{l7lEhkd{6ZKN;ZKjMxIWT>^0JMr;AxE&;esBeno;mjGP1hyirj0o*PDxYtei z7QpQiedZe?-faUMh>QX5P4lz`aJvNH-ePgF+HC{eE&;f=jd&P<+a&1>pKjXcoZj7J%zFVhiAQ z3&5Q;VhiAQ3&0Jq*h4`xz@Zq@01mkd2RM|J0XV)Efa7ZcIKDOj$58|TZg&{Kq2*)& za2!nL0Ef5M0dO3M0l3{RfFm!X0yxAxa)5IeRtmsTy2k+EP#+9%gQm$az-82A0C4W4 zX9RGr3}p*&t}t#WfO8eV^#yRQ6ovtu%WqZyx7z}^-4?*@4gt8`0&qj7PqhGUw*_#! z4Z!WT01odz^TT@_2n}(=0o-l@IQ9El*8`xVL2Ml0My9zWfJ1?E1+4o64RCw12e{n= zaNp)2iV&m)aQMjp_lgl)0JmEJ?o}hU0B*Mc+-pW`0o-l@xYtDtpvw;6b_>7_nD8xt z+bsY$DB?Xfz=6mZ;D*f87QpQmfP0U{#cGcYaJvQI-Z$c50B*McoO;bCZ42ObTL8Dm z0yvPD1#o+8fZG!SaPYi{?o!~onL7r>F1Q2`uc9y!3d3o8ZSDBWWKaHtOkxI0agVSvl1$pGNoNzVx2 zTp7w1;9OzcPypvDfa?q3Tqz6#IG5k70B(;3aCqHvD|aC5!0odDZeIw%?Gu1|-h^fW+&%%g7mU~fxP1a}-!x(i;Pwf?y~tt@ z1mK0Ov|!7{IywW(9EjEP&f*0o=Y2fZHbk_bt<>S^&4t0=Rt!;PzPnhxecP;bjhl zhPdGXZl3_$>k=h^ZXDo72XH8Gu7Ldiq5*Dy_5im}0B$J zRI4}B0e7Ez0ms)(nVCBg4NlFR)T#tElj5S1+SOwIXd^VZ3ZsS=old3!U=PvX+)wJBWp||86)ZTmi$XO zl*pnYwffzh^hEB;xofhjjH-fL6n(1hZr%`ycYH14mCNl3D&8H9cAB&erll=kl_oZJ zi}&@ae$DEY^^IOdx7Xa+v7u}6tkwwDD#d0ksaPNFN_gvWl-S}~)ws7Q_MG=fG|}GC zI?JOd7ti|qEUZ83jK&tvx_kco2OfCnp;=4T)HXb}qOrk?uJ^pgNIc=y;}k^iVXp=U zD5|@QfO2=`s=IK0Vg7nmFilmo#Flh6Z^CLPlytPqtH}l4RWh8E>1)7Aj*{zII>F3C z1!)oU%)=0u>)*>c;M`kO}3kRplmB!4y?dMtNCMQP#c06qC-k{)uAt%PG&K zE=SEm*h{POHmib(s-kgqP303yu9iSr!o*KZQWaHeDpyr6Us62-xu$zMuBuO`wuNGD z3(HMgu;vW=WX`a{h^;xpKAAJrix_i=?B)z;YaIQHCVZYV(CsbxhxvUeDN(C;)BAFz zhmL#11)o~^L?kW;VE%zBxXV8Nv9Y$Hv8leY`q8H9#x*OvB3eiGp+$8w=-|8i?(=km z@$S3NY!3ymeLYm^xOmsU81OI7`4?yXiw}AVZkBU1mn7dwq!kVQ+1OK6)14<}?vu&T zOOo&XdNM?}x8$GYe9xJqR`*lB4^hf-a^4hNBU)VsCxhe-0m>v_HC8q}O1|*pX8v(M z&Fd09tiBu*LTTzS>El4O!vB>jgL+@WTn(=5%;$&z z1Ikp&*_j-OnIrDUT&v(F@>5t`bu+d9scJTP@te_z&dx;4BcCI>3oB)gNa-GfIU?$V z=ZNo^Cc|^YjG7GQi0-6kG)Hu0DBC%rD~uazj_4|Y>uZkaN@3U>(d9R*IpTgG`$Ot0 z=!0o6*pFF5QpvwRWRAFB=7>8?pK8q!_gizs{br81-q@I6g-l-5e1G&J|Gcrk*4AW zn1OvibpKoOYw>hRPI0mN$|A=M^In+)VCcdG(@aHpF!oX>iTj28ziHxO@~7Kd^6%q# z?z>NY#dE|nMS-7Z`Qw~U^!><_QZGtim^WlMPe8V~PH21K$SoPYVxnDrD*NBG!&HVzJ1L7HB`=F`2ir{{sy%skD_$+ShwYjl3 zgd5?Fxp7c3cOZltdo6D44dKRK;l}q&Xcjm23OBxQ#1=R93O9aW#1=R93O9bpVh;t) z+=yaG<3{8voEuS6h8y`>xRI}g8~NIBBS#V7#@;Y)M9ay78#$QFxe=X(gBv*z!;QTz zZX_@M`!phMM9d@SMt5PQa3iIA47d^X!QA+fX)?@>88sPjqdVytaic3k*>a;Rj2ns@ zT?KG`aic4RVch8Qn-w?qTHM%cabs@?H}(oQs_$rqIBx6}Zk!=ef+NSdadg~>0_O@y{ITZ71KD$9uW;j=97GZ7(Bek?WJG$)h%IjH z72}Y%jo5G_AyTj4-WDS^xTnP$;Ce*7Ujtk(^uJs3*W&3Ps{8L(_pBlsy!C~GsVb;j zC6(l9do-Ux9?zr>7^EX9$x+ITbrW;%LfTXUs{C$f@|&QmY>Ia^cgNeKiKgcD_)wq| zr{VBJlXeRZdqvm!k%$l2a0uE%&EzTdmVUo_^=_j6dG5UehxsfnRtIc2>=ihiWW>Y3 zA%f=f+-HbqgdK##UQ4NXz=A_iodt&nY&bj+0*CO%aCoO=?qCQU9KnNTj5ICG| zLSs0j+gtMgDDQwet!}?v-SSEvD);aG3dc2c?@8q}|6skemZWQ{wYGX@ZXJd58DHal zCtr{*duA>^#oQ`NM4r8@o3(Bh`^8`IH$i#ORYMy;1!aiuJf{7$Mq5hb?Te}=r0Jt| zTC7y2CTwQz%$$Nb5^X%*?)h5qrJd2%=FavgzBjF#RqB1cth758T@Ri5A`ijd(NpkA zm7+Fp>F6Sr`9FxtJo(ipPhq>hYUudYT{-lvs`9h^?S?)kAi}^S$=eNpr(J0I+GvwAj#-; z8WPw=usPO-Z#odIR0X#w*XN+y(?MJZ;)6JT{bQN}w}j%MWX-~-)R~j+r-=PZ%s1aX z^3_t5BSh1=I!rb`trnrM@m=@n&hE}laSz`%@d<_hURphqnktmsqp6FjX?0PRmv)PK z%mXrwD>5%KPvhwJmi+Cx^df)qlj@eg$VDdbBBNd4I}&|*;~(^yNqz*XPwwc?Q@)m- zx_(^Wsw!I}jrCrfzO-)YjKt)d)IC&yKlFPF{~MM6@66n?T=TI29)I9Z`t-G)^yzCo z>C@Mk^i8FY1;L)-&K}6_pue1{F(2U*)GYnP-!e1zFG-cLsQNbCgn;|B>Sc{+SkQ6g zD|+u}%tE8x__V3!PpGDjuCHP@&1j5XTK>*vKYW`in5=3x#c(VQeWji`=~jhL1r5)3 ztjD$fPA^{|Kcdf!p8YhBogenxJspWke$GyLXR0Ps#ow!w&)s19tIKUeqD!_sJF-AN zOQ{I_vOy8x9mR*lXp2<>`o)kyCnrlndX<}#y-L+YN}=|NfM;^|PF+9={Yc3UibwZC zw;%~tj~>IP_2!nUX%rZLsLSOS)VFmwAR37h)6!WZLAST$|6vZb^y$;pCw`ae{qOvS zi0k)yoQ-xi2A{T^g87aPiE6Tm>s(F71rb+QvKNo5&VcE!`C6y zZ#jN`zXx^)WSNj|K!9)2Nl!K5o^&V}8qs2s4?Gh30NXC;hr(WHsvsH*6bBS#TX9UTZ$9f2#+^e(F}<$=|Hj^8|7=E)`cB2k{ACq8#A!mFnmKh&cJl@qnc|IuN2d zf~pA9(>%4%41TOSqT5^YZ{oqv^VBUrqJbSIP7_tN9!-hb@Y_vokYP`5bco;}>R<8u zlHK3FN_bOIU%O`6lDUu9E{2C65J{KKt>GVkE$EU2W|BR=X7Q)s(-$VEMEu|y9ZJB1 zF*BMvGna|Te{zD);e-%(wJFp2VI0*|WKAyUtIPpQhjzf|&<(CB}4sD2oC_)`tIyC%b9ol8&$ZAzZG8kiAbPF}78k37ww~*N=(&~}@i2O>1ES}u7taVgsOLIh>A4P~ zNRq~LP*7QVu7kFo>tKkU3*K1I)hL-e6r$%kXz95QhUmEtik@qo3C-xaX!d+iX3tL= zv6($<@pR^nHX}AujtQzP_n?q$JBvLEjYt;7kVdk|mEE%jjptBOhGh9#NS3dKWck{V zEJqO_*@Iyuit2vi7s+xUhGY-ANS3^q&U^&A6pDG|BQ!47snj>44}&n z;0_AFwVUuQfIBDv*D2ydHo$?%7~s0i(-y!T6o5;xxL6&s0q&px+-4&l2H*|~z`ZD* z5q1#Z4q5qIDk7O0M}!p90#~j0vrmQE8xz*&;Zw$J-{6j zfLqH!6rm0+4IF+lz^yZ43*Zh3z&&Zi7Qh`6fNL{i3*Zh3z_p7QK$jiB9TI?h)r4;W z+#vzD*F@ZB100Bq0q%A4v;}a71mNCaak1*N0q&3h+?z%`48R={fa?*@2s;RHhb(~W zvj7g{WdU5D4RC!S00(ajaPLUw4u=3-p9OGzApqAW0Jq14W&vEE09>yTTL9N50M}>4 z7Qpoh!1c4(LqRjZp%~Ht4!H^kIFytDIKCEu<7)vpzBT~IQ3L?4FAU(&aF#tH!2Ls$m(_|RnGHNmaICs)B0ytNO zvIRI-7&jEaxeDO=0ytL+!vN0ZH!FbavjDEo0=T{qfa?>08!&yU1#o>9!1Wn`>$3n3 z??3ayAO}K2+;9NbCjj@MiE?$afa?>08#3Zy0Ip8}?nCj6u!8{CX93({3*bOr7Qh|00q$@Jz`+{> z+((kRBOw5H*aEo2Apmz+051P~T2FgKSpauf0B({ITL5=h0B))gTL5=h0B#zKJrpzp z9Eu?g;E=0ufI~?cfa7ZcIKCEu<7)$O97O=&4u=68T22-K$H8O{aCmDS0LOtCfII90 zIPx+ofJ4k92RL_Or2rhIdkg>$^}zr)-82~nxQv<%0M4ECi~!D+p=<%p6~+w(aIONl zz5vdZ!Z3hy`OOO84qE_s*aEo2Apmz+0B(lqQ!RiyYysS118|2efW!OG{BS1+LPOke z0C!jbuG~a94sfFcI21Tnz)OFn0q#il0C!jbZU+ZZggUeU4nG;-_874RaEArpdX3lu zxWfW)eMW2n++hK@eh~xcvIDro0&vsb(Ohv@pAthG2GSR1{A5C#F5)9Lz=6nEJi|O~ z0o-8$xI0-~td7_KcUS<IPx+o zfJ4k92RL_Or2rhIdkg>$^}+3Ng=sPja2Yij0GvDN83CLtL)ikHD~uZo;9Lc8eF2;+ zg<$~a@|zXF9kBrJ2nMC(269J20PctYT)pX2Er2^>0o)M-a7QeF!~4(t(8z(%5H}pa z9T9+QH&KoQ+$aGK1>$7$u>kI<1#loQ3*e600CzM5;NXn`u2VAC9|CYkEr2^3 z0&qtK;1VV@3*e3lz-=~S3*e3lz&&ro7Qh`9fO~<(9txTP4#kiLaL83Sz@elJ!11*J z9A68-@wEXsjv@eXN5cRPEhh_r<6treIJ~tEfa5?6z#Vk~9C;ZPz#-<51Dw0CQUH$9 zJq7@W`e101odz^TSIV2n}(=0o+jmxK~Y-;{Z2GfJ1?E z1$?wq16;obIJ!+oyd1@jBKO{_CgRwR97P9D{8RcsfxGABE-o+h6a>$K;Y~~~BnJt$ zw1&4!4sVx|-tu{?c{*ufVy>q?qg3I%^704f&YQashT3(FD_7D^^yYukl^qp~T)0bP zh@Y$ntT18=BaaG3E;V8cBaaG3))=vckw*n1mx~x!nH@$R6^wkrgl}QwQNhS> zin!m#NN^!zTJSu!9(R)WXPq3nRgQ z7Do2l7}+0!k?_VC`I=6X1kuJYkVPwCBk^L4%_J?3(zhGpK=~FF??6)wo z-(Y0Fg^_swnPT4IKxl{?4kP;oBl{)F-x}Y{WWy*i5(Ul`uwbvo$YZ(!2qQBExPAe+ zZVsXdb!h1U@sj~AVZ;`|^$WmlHew6l`UT*gH)0Fm`UT)#5HWx*JAmsKfP347ZvkAt z0NfT4AF}}tM8*KuW1hAEu3rG|9Tpd><2Jzc3&8CV@iEOb-@)yP*w%0&HbAX>d^Y%5 z6OP`rw_iLX>>$APTL5>=0yvPD1#rib0GE?HK^tm%|kwj@n zS0dJoy;k+UyorvM)~McywR`>CGTOq`10 z^UDYO^{nf-ZrHT-sut_bV?H!u3z&}yFn`2i4^_^Jn@fSIoanE6_O znXe5na})t!J{AVdcvG_gW)3EEU_RyqW)8#v^D!4Nlb2BeGh!Y&FuMyY1(+$_V*t#k z4{mU(ml_;383yKznhb#1o%D==*_EMef!P(t4F$}u0=T|_*_FaDV0QV<3Yd>sznJXxCyo zL^rVIdLerVCT%fiZIQQ0Z-e}FEb+A_IW;zplq5X)(G*WKCnAdrzgStZN7Gxh2$Sx5vpgTLrKE{x(R2v6C zjn+W+#N6)zHm`DSvfrdZSE52jA*G+03`8m`3oF?&yIjl4G^gQshT-{%;mZINQJ8)5 z2c530D@dDs4)*y#RjB!VjsTUODGZ4itV&}4c#mT;Q+SWXR6?`0xJ;fd$B7+Ey)WY9 z!_5?qv8oro59>CGuyso2rc5g|YX?t)JC3IosQ2+VWeMPJ%^Qv<=M7)S{Ny;#8<40k zP(a76xx;Z4oI4yxaLKvDam;M=FT(!g=(8dcot`&L<8&9P6Rvp!O-zo%J&L))6rK?r zS2SDrMVT!eSHaoBaYeI*>Bx_ME;w7j?0|t}hKbJ17Ifwbkd=CQHBBZcHJ_qVBtV{+ zyFKq6%#`?4`vvp8xeL9ypZDg@^RU_f=I&@L;jLa%S-qmRY58h&7`k~yW6iCdk+RlJ zu^3K~FIyxY>nj_VyM2J$A6_?`BW&MC>Yh!V$3P?R{*zA#?)l{s^~ zbzd&i$IW{c-ClEN$A+%O>t=OE)+g4@T2etr(|hZ22nFs{ql7lap7S1wCfYk%aaKjV z<7;$(J}z6MozWPs@18&Zfd?LX2#=N(de2KN>waN&S;aaz=6)T{xhI)9=VH!EoQtx& zapekc^(wESe)Vd;s9n{#va;S=y=)mmpVQ#+IT&&phO=xu8o4-AbIZFEWeedp6pprj z5*xdvu-46rmp$9jmS|sG_)z(}doYr5NfoxDP$IFyvNC;khfcw|ibPu({pEE;l7Yd{b*{BpzSCsk8Grl;g(k&PXECR$9>#TY}!u^E<-s z_U6v!E{y+W80MOjb4N$l*Phtexu~^$W3@+lu8R&be6EY$)Xa7HTIRZZEpuJI zHgjE$A~4rQZ`PA~rWKu3F&mTjEati#Oy+Z4AdUGr^e-nU^$oaRg8L@iFT?#SxPJ}z zBHX`$`?qla4(=tmUxE8oxLqn{xjVF5BCP#e}Vh2aQ_YNO}OvC z{dc%OhIASx{t~VS?t5_m3+}Jr-htZ+w+(JP z+zz;%aJ%4k!|j3F3%3t$KU^=|0l0&3hv53)4#ORRI||nicMR@0+zGgoaHrr-!@UbP z0CxuNEZjM`LAdj97vL_!4Z&T4yA1c&aPPr=AMOWme*^bE+~30eZ@B*h_W|7B!Tk{K z@8Ld#`vWPM{qxe`zJVz*y_huu3W*JB3rI;BQm-UjKOJ#6roj)QrCf&H*#Hv z`(;Vdbx^vmv94nr4t$N}aL_ys2Px{^;R0M(u*p-W+m8St~-&&hP zYD>_-mA7(hG8+A%wsiMG8L2H@eN(n-OIH{-l-kl&0N0n=(v`w6wWZ5%#%jxnxu4IQ zhgs|R3{}o-Egc_(#s{GcX1H3r6+HInxTWtu9-{Auejm!GJoV~je_mSamg z+N?6tKp9=z(z03f+t=r022Kv`j_w|{mQyE=zA-4MTPs;3dR&=r3=?ywP5s1FHJLu7 zbT@B^kiyO@pB(RwMmtBVr2+j;PSqRE(%LXfZulbHQ;VTui*`Y?TQ+xI8GV89Q1o*jc({CCg=iR|V3d?i zo(%owmr;h^;w9eGn>rAjsdL0q14UX(b39U7TI#h#)<>a?(^25$Ro`;t7f^WoJ#6V0 zmsd7=Uszh=Ep2?RJ3{~B%T{7joUT^2EY+XIihS>d)tlmpXxnq%%IGtZjZhNCp)!nn z$x!gI3_lxV9ZO3ld-}hP&m>A)pKHQDO$kJyJ#bt>AM_=Rjt9omegb@PYjjgrqUgS2 z79vfP`BR+^(nGK%9(zC|6R}OL^d&O2^yeo-^$V|~G^EfwN;h`%_s6VCy`yWh*CB=6 zF>KN4h)cXcJfkeL1^T{y$5~8s5U8_-=+nF`TSZnhrvxisS ze|0jqi>X9|HyBRnW?C&6NqUXLN`i7;nC$l`9!bfy=$PQ z9hWYPxXMCmXOvAHAAPg!B9?XF%T;|e-r*W9<~qg;Q(&Vi$9SZ*sXH2PT2Il(yVpzi zfU8np^iZbbD4NZ^MK7k;8GadH>!5}+Y=Y<8y zquIO?uWr@aCV7iGy4FWg^YbLd^e}uGis%UbB!a+=;H#zq!ZQHjjJ&vbv<)Hqp|Cm@ zY3oRMD>}L&snh^-0@JMg_olV8w3VM|>ckV*sBa5|h^|e#G{lr%fXSZ7k&wyJSX(4U zc*dYPxp>j!$$H9A%u|M<8IQ=6!Pp&5#0m3Ll$wm0%w(Qpc>00+_<^P70b_|YF*hIf zC~B7Wrq3{~5pS?iBIAtA&oDhM7D>-@05q*06N@DJ03VAyy$O?yvNAIxFtb3iNiwt8 zYi^N*JYlw)r#_mg3;zTxZc#}4a9fw5wn$Q+_Up!4yKr1AlJZ$x4Eq;0H2f>v)=z7T zq?31QTl*7ki=?>=wP#wpfKTWW7Q%K}B+Xr@RV_h_q!V~7X^{kzAXp?_d2RJSuKnb> zrDT+IGX?Z#xJ?#GCoGGk6P88N3Ckks1TvAdNIGFzB%Lr8NeG@-G89P>oeZ-`I-!CV zNhjDMX^vPVov4aD$m7C}+i=-30#ude3#B3v`Es{3oebrbbEw~;n zlE_XjV2pEBGnT&lM=Z_Os)!%>7|n=$i%-}Iu>s-K&*={I zq-{5JLhObXK1DsGht7%D$e=?@vl~J`6K*$zKF`<<@wM0u@wM0u@wKrV;wS=kL+Eqd zc0;gf%))MngUQ@(2+C1oHl*dE|B@?!rp38=-VxbGwo8 zE}S~4@sD!De3TpS!m$$4jAb;sr0i@Dd0b;mgE|D;zK{7erOq$fCGEx|lt znPi*@G08X~CK+$f@sZs!$vB}tryf#Yfy#kaCY>-Q87C~04B#bO0c_zwNHY>{lJR&B zmRz#$UiR&&UxP`;(wu_CPh{m~O^%wrw4h!UUgOo5dL)b}d=-EKHmE!tgLRixH__&D zZESRdh3^JwKU9{MKqSMYaoLMV?cq$nL%|X?Sw(PKWH6A z1+1+`P6SO_o>J{&YSJRJiKGn+Viy~h4_P67B51>Mr}uEtwXtEL&iALpXvJd_2(HRR z$42@9t8W;46s&iq<=;hXni@McMw+TRzJ~7=O_8p)60fkPrflWPvM2DLw|x1$1rM*R zd$^&Ykj+BA*dFQfJ!6lQ24j4JwdPm{UKGdrzoM>ZI*VY~(bZN|lqgM$z?iBHp-NPH8%j3@k0Nq8tuc0NtC$efKbK8LS|Rx9QXjgo2n z@`Ac}oV=q1TB9wpJvVpb&|;dQzOTB(XO`USQ{#$(8DKi6Z85Gtk|RF z@Q5vJnRECPRkYH-iz+y%rZdXS)lJzF~V>Ycw zAG9Wm{R7M&Gaj?VYuJ!g*&1oA_c*vsomgB>g8}vSJla>%|kkrC2HIx3dW}(%jP70gEQuMuyB_ z{S9U2%`Gcmz^2B4=OkJYPoYxc4x28WeJGDIt-)M_G)6ojFfox-Z0~ZVbK(b*D?Ee-6V4daas-~3fx(wLu!5Xid8;=(^r4X#h#W0fBy+Nd# zJ1pH3=+29;1C^Ia>PDWKc%*}@`!>a3;fR^yv(3+4HG^dJhsPv?-qmu5@bMOnHiw8U zEv0tf(12Mk7H@Q5zm&$RH6D%JrelDSFQ&19oawF*T`R^Q&+qfe6u3Da=grN$&W@)d zUg15FmRMJ&M0u(Hwn`~weoWKNBB zEzvGA0mb4LEY`u6JGjZM95*)lD@aTx3s<$!Y!NFg;@Anzw9?>ekHlomDq;Kg)hH}H zWz`3^hQrF4RwO96x&vc?btCv7zuxpvpuwVVLJ+2=rBUFHUYCNwp`o@BT^x0S2)VgQ zvZlwK_6{tI!Ar-j#OsKAWJb&Hf1(s?U@-z>-cLoqWzDoOy0JLnUx~?cI~sUZ2h2)0ctmBU`eUhW zoD(liJSNG9r?e(sTeW8OCTw0C!%j&JDC5T1<~96c=*-3JhQ2rh0!n61C(6#yBM~$~ zqNxV74IaU%*|tYJ+mNTY$xq?%{(?=M%x{wmo4C5XR=;CvHDttfHvjWdX8=cHC%W12 z#kyr67iycWN#Y_25e>K5RtxB;10QM4XHyu!O|QNRM#oQ?VhJ{vly^M)jO(yJuAC>E zMKTj1rLiiSpt?c3sC@>bYP`%ehFAoXI@m9}8cGIFIhu{0!?g}ydJio4xJoIcM68#E zy24Hj0@#qcE8fiW1Jgi4-W$gwj*Ra)vH&T(&$c(AG#|9)pz@|K@2K^o3Y4O^*|%{bXf@OHeqW?uUlsI{yo|S zm3oPvuWYQZYiw%hYO7xHSRBiFDTyFEfTSL=XnN~qG_SI2fAuqwSXak}_JmihmooWF zQDCUfdlwc-)U~T?AX?L1{1eHzAN#e-I0m3d$1}RFAJeaXqUXj@E2Ta`cbVBsQvaxIT^Y@~ujOK7E~xdKx_O~za~!jd zz>-gzg2Y=HPIPDQ`zqG0lULxB$VXhS1=!cz2@Y$>og)pb1s)f}cnZTQI6(doa_n5XfVzC`KzjySzy{L;i6 zb6VYBtncc?ME@Bq2=@}nMQ355*llQ-M6HRe#}?XMt;v_a(2;cG%P|h8CJ*D31etLn z9;r8Dfh+b$>NANJsMYaIM;rPzcf2&v`TcWn#i^^0=4l_sL?|XpFbCX-b<=TFP-iE4 z$r$PiO_lD`+_2SAV}6GhSYet-Hl38fE7Yt>YWNtgo}naO$e5GD7XF}4kS$t5wmY@g#42PP*#M6|%I7FQ6&)TW6qxR-=ET?yZWpjK$`%t~xTEtTh9U;>o5K z{g__gOG>V2OHe6bE&Xk6W}QMaota`51e?(z+Tyq$3`?&irNSi51eQ_;76oHipcTY{ zJHaP0SLjGQ=V3hV@*k0?E0E_AlMKE9h8iL$r)pFq7;vyQ=?B#Sh?&g{Yv}^HLFgVH(_>x4Now>U^kgywFe}m z8uFSqQuQ})EDZ{L(xJ$bAqfxZW)PMRjc3&>>hNIz-(4D(J=#=RT`fq4heoGw3dy|P zz6>E%M`HkFDqQd_zC(G9$vJ1TM4|f&D!9QK0cD_19w|CTvG_4+$Y2SRiV<<)pQKKa z-uytQLGS*AOi$AApqb)nWo~kghJ005Lc=v0x)NO)Wykt())GlP8;MZlDKkGk9Yn+A zc21MQo zZK5<(Ke6(eYf*kJwq_36)X`6z#UPFj`ogYTjmv92`n2ZNS2jE&2S;7JL z@e^dK99ZW5r|PY1bnu3?%ss?B^ct;oPcFXHi`$pZ_bs{kcm{uQJ65a1wlz=Hi1>uE z7Pp^}#qG;kOs22a;&v=%=k@CE$>R2tA&c7|(q*g{x38115Vmu1`$O7jJ-E32q_wym ztIM&t{U+Rdf)}@+v=_IZv=+CYv=+CYv=+CYv=+CYv=+CYl*R3To`c|daeF7H+f%2o zxcv`vY7}l4IsTDUnYFGtOs^awqcZ#|Zu!DEx?v74;NZpz@XoeGalupXO`!DIiH9-C-AHZg<8 z9;L@7S&vQ1;IXta^2_RK{{|kcLg7xt>I8j^A{}dT5-xch%1PdQ;51s1mifn_Oi*8j zPdW|--Go&6{W-T@sZ|BD6?JG$^_A6+HZ@jO;oy>Gt5-MHuc=$rh;3kCO2DcdZW(tM z;qkk2)m=(e<*(<>;JxCiJTk~H!Vcbwl zmR$vKeJxpbr7&#CvdeGAOO}a;Pg;vOPlDMWR*x~eOowbHem#tBmCIEH{w!9X<*lbq z$|BD9_zfURuoiKiRKZ1@C(R?&xFN&oYdNlpt5HS*4t_#)N4iGUPLXoSe*{;eBP>_3|lMO2vc`_7BKS(?CJ`g zRWUS>S!Gk!l47ibIwMa#U!l45WO6O3PNY5r^#vm~8HaILXfAx~3#n(a;bsc;&LEFzU`3PW*{9Y0h6yL;+FBe` zvrd`T;=ImLleQwD#W||_#zKn|QgLP3RNDx5G(@g_Ee~?aYMjO;y24M}TNpxZ!{W6f zK51)tPKuUi9gB-GP*_?XXmwc2^Zw0x3&YcHEzi923D^_>L9^#>4vWT%vMYD18a&g3 zsx9w4Gy7%fzoBlm*2ce z>wr$#I-paQ4(JqGtKP(rrqZV@9ndLD2XqQaNFKR*%IJU)JnMj7;9PlltuxgDA?^$m z9%(utBr=1?(sV$l)QEIID1;1ROVa_Nv@&=sO$UTx&ET+8}O~8z97`_gOTHh(w0r^Mbp0YNeguaF67B9;CblTRxoD%)ZOGX?x68C@P z{dcngJ|NpOa8u*v18~2Sb4t{GAJpn;$yxBl@8;BCaPW0^xK=#{x2lu{qf@GKXRDdH zZ8-(=d*C)p(50(z9ajR!yJV!>nB}=p- zZn84DZ$g5gzq=)=ztajkY=f-|3X%#tF6AaJu+n&YRRQVv@S%m^B2Q7@KS7n{o)RVO zw|`M@U5C#3%FJBEkgkLcRHUx33poYY{+N$1*JZR^A?u#L7A36IK=Qs(!g3S=B`jCn zR2AGd12lwViJ_kd23=NP$^+H>97VARmw9ptY7Vv*M2;4axe^vdDGesA85t!k#=&$Y zEXCs&WWlFZxJEv$D)SXSt4bw~R0-=YtP~|IrTdyIVaEsP;NFp`UE%luJw8Bd(}~oU zL8JRmbb#K4zFu!rIxXh+^}J1KMtwbW{_Z{}Bb~piC(2gm?+W9F()qgz;QG?}yHXgY z^LP2pSm!@6_ujm_uaiS)Q(yG4KA<2qzVRVve8>qOa+9I5kgsF-8V0>) zo_f8(SD9L0$4*&a$4;5AW2daIV}NT!rqml8$mgImDjEB)W2fZnSPw@^25Hl;{Os+N z%7gL8`gLr4r_|Byl=`b^iTdl;g2(BdqSxV`E1PLPOL`0UG<1qTIi=weQ+Mn80NpcF zP*!?qMoaS+n5pKIZlthk3Ypqf;TwUX)u(J$g8OxiD_4@Z1Pd-39$V4q@mS*-eJ2FL z={b3wpeSE@Z`R)1eXhJ0`9fMg^@5e;R#i}v)yc!G`an48)7VcaYfsjy{Gujysmy6O=yo zIJ^w<73~iz-q)*-=Wt`E`Q|j0dfYMWT5}XMZ)n_Q`Wkv4a}8ZuzM^xGwTM+kT5HCS zg=x*EsKAlQrkHfT_0K?C$z#+8MCIGE>4hf(Qhi_x`gp~rhX9B3ve%vY0i=&&?)6vnv zYy|F`fEx5k-^(6bv0~W3T6oW}$Y$)&_bfIbbOdYrNQt28xjHOd+q{MzmLt0Lf#+H) zZ$<~~R%P~0W4cJds@ zHiWBXwpv|?bvB(`dL+6RM)x&KT3Z@i*N9hrD@i7)MV|SR0>K?* zge{+@TbdKtIUN@MiC70AsIK3;^YPqWHK`W)1xdk-DHn+vF`CJ6{ zD`h=Zx&H#+n~KPAsXPr}eFGQYfOX!20d z)5d0o5^$PrX5K}_6V#vQAPTmd>6cbGkg?qi;-}Y`R#M@UUdC&ukkAYsOS79ftwv-w zgM!E)wlupLlvoCjrP$VE*E_y3GC!JgA##aP8D-RBh63<}};Ql#AWWY3tzD z)0W-LY0GW~b~0=?Ga#?%Ol^mD0JrHCJuP-KgChQQZ9JKNaO;EDo!yMs;*IIStrW+& zE;LLRN~QBtU=u^h%*qbNf8gW#v_|o!g$$Nuy4@1FPEjNw${z+jI2+ro3*5Z&TR44!*Xizx>?oOLT3~9!+s>1 zXzysn3fVaJpuzq5xWr~o(HO4poe@Lgy>+veH?CaatzPvLJ&kX?3ommnHO|(2(RAUv&_`>F2=%Z1KAJ5eGU}sY z5#jDDGO~zp^&r_=M7YAZp)4X?1#o>?M7UBIW)b1?n}tQh^>c8mykO(BznaGkY?ZaL zvL2iMEW9v!R6Bh%dS?nK!_IPBb;%{qmj z^`SzmQi4_ur=h({uK7J3V%2b3tQy+m8rko)*ZiKgtQtaD1r{ncoT-ouj5S=3wVRaQ6FJzk5g z;^y*RVu8b<7TfxK7Jm$janWw+i-!7O6TJ+@sw8JN&0qDwtzW=O`QdE?u+bZxF6PmZ zn2t{p`c2V>0UyoKhqj(hF0`GPJEn)WQU|D&LH?I{ny>qZw*Chx zRkoVtJrS{ix$NP`=T*@WD%j?mj#1%;o`~Tv864Z1cG6mLX4}$pAb7rUZqws9A_<4J z(azbM;yAl%&6?F~^g*U1t=WXVBC$Rw6wI;``j1sc2~`5>D&~#YVgB^%@zPp zZ|cByonNe7v4X?g5W}XF*gVuuWAInnahl#-YzJ?rdIOr%To2Rv=k2`d`lqxz59ajd zIYXKk7E%Kz*&Wn;XHfG;64Wq7NEwYsaPR`Q8RyIel4O^m{(}EVXB1l_(=NO?t~hBS zpkF=MVl-^pxDf}6$v6F)$0}D$er#3U>Q(-p<;G)3K>pFD*K4m3_Kw&MF16Wk^T(!Y zu?Sv(U^8V4l^e0l^ovwHOtD$5Px{WErdA<2glSB9$y__1C53?ofle`{SD{{~5NDoj zz)9P*g}EMs;@DB;MtQ+P$5pFQSZ|pn`Dth_VR^g;4W>R4!{K>2=MnqfhqW5nY#GPO zEU#K!xyEcDyllnlFPf8P{6dxTbg)-RAukCIoYY$q9BrIWtnvqbhg6R;^|2_D9&g0) z7RfPY6p7#k%T2V}nSv}SG$}A)rlMX+A$8P=(v&Cdyrl?zDv%SI{phYq4&r>U^0Rbi zb29aQ`O$4%aCE41GCp5!&NHSCglvV9UZeo@vC6Tgu9jG&6=w!_kf~s?Z`Nn!I@$!w zp%~M3z<04>BAt*13L+T|vAFgv+zwq7B?ez%lAfGtkz;ByPL23aO;3I8s$@iz8ti4> zsgG8qbgaa__T4xQ35SEi8@>?f|6({|ppCN{>1^(f<0xY6W?uFHb?BV@TE6S09lYJy z-HgZlk}|UqI}pqg=9LsS6&64LeBr}|&p&THq+{L~O^dzc0n`hf8jokO+<(|)m=yRk zp+rYZYqY5)vZ14^q;UE2c?%w1S@&>5g9Ot^Qjev9vhs7`hau-yhXqpA@ih?s)t|>+ zTaF~)Q95Ka@OWSnRx4*?a-JJ2*E~|&=&fqO*&j~t>}z#ZV`bf{+L}~cNsiem%P=dg#_( zfWI(W4PO@X(iI|pyyeB-94}oyH#NlID;*k{-|)vNOK9sbLuZPQ@m6!A z_fLLjgpSDQi!@%W!nr;jU7He-05Ix-kmg=Al9=|UZ`1TB<(3&T{dT8)3Vz@wpN^G2 zcun>PuaN4Iu#@c{t2f7RiBj;Z=e1a$B(^g8YpGt7G_cvXCoZIN@XsQ` ziX2{{GbrNI_Aa%jWtZ9^78k2`?FBs8VU`!ssL6T(4_427Obd9Zg7pHPk0fbGs?OM4 zRB&*$kG8c4F43WtGNtMV`1`x+)5sH+u;EWz;Ln%vdoo*TysM_DSJW@_vWo}ccPjfO z|Ms7`NDlp};rsJct(u2l^WpB6aOk`ER}d%F%Db{z^wj5ct>kHIkA1kU#d@>oX(EPq zowp(p>&>F48?jmOsGruGMb9u|v%XP_^_y|0i1DT*-;8_|hVryGT6c)e0!=8qBlSMK zC0eZ8)odf?*U)cQXeivSij3Gg8te>?8|AIH599QXdtaqowYdw=h^_o3t7KRE9FqvPI>9QQtQ-21WP-ak3+T}in| zo!J2HEl_`szbB|V{Gt_x1-IRH8?7+(@cZT~^J(+%oF4pTmVnI6y`5Hd;#O`C{;jOS z0?NsB$6pkY_jUA|1F|0RiKXAgBC-LzRT1-NBKKnhfwhKrP-MK;utr|er z$^UQo_lN4{n^i$ZN4Kp|>K`*$YnQrhHy-;@29KpKKg44nW$;+)(QSC_#~D19y8IB2 z{Zj^yr7l0jV^=bGEU=0&vt@^&+jifC`o}?e--QMH09qQYK73F;pcbOz{RaNr#=Y}^ ztSDR|m3~Zj-gJ9Q{vYKHs4MFB+m-i99+Lm}{t_fye`pps`#*SXv;L93+F7r7o|#)m z;e3WyP2=KDzM%EcGjp-y$E~tetSon5H;eshe-o4!*uyq>=oHQ)j<+wWnvk}p84sqW zGBsf{b7$rh%#mp0@pjK&Nxif)3N=uB6xM6&W|ewhFDnJ+6I3tq5bPa21)o&f+SY%d ztfix?45EMN(aWxrn~UVB*)6eZtP@vv<2`!ozGWGp>l<2I#-9^&yHmA83M_o zE~ch6YdZ2Lr8J4026*jno~oA@`8ROR5cl4n#EZN=mtN#geo}dVk&F28BBNbkFM?bA zAGB40{0LN^+`$$H@P|c-dfx+m?b@T8-tv2>0DtKB6#hO3{=YMG%W}<@(D3*Jf8nCO z)(aQ)wO+WWud#4(s)F`2*fZSO1KAz)7gCm<8gooWf|{kDc$_l&mkP_`7ggVen-FlH zR=und%jBmhlnT9f)GW|wH$H8u`4g(Cql@;SiN@%q<-Hp0hi_8_lNG+2Ku1s7g_)CX zRcL7q&vvZGwcbpdcGti|JW_e~(=#Y3ANJf$rzIp0y-ca)s>xLG_v+;HR^I8aF1HPd zF1a_j9a$isr4+AUHvUcl=mo42@P{E<)Q(J=l4!!SDa$A)QVMnS5YFW8ow|S$`jL_y z6p!xFLyi%wnnr=~3!2L>D8;W^x?WY=C@uY6J+~jgs@g62e+W+bY|ixQYU%G%z5kux z5OMw9m~JeO2!JkTV|o1i{#7@Y*Pe#iSYCU;(3qn zWxKKb055;eQ){^%33g}G^5+3+kW*CPsOKrTXV{l|l9{=|<17XXb2eMlJ%)w+lVj&f-<NkVLwY3w2nqW%?rFZlzf?r&eEk-wt8cFnRSb04o=3=cmb zk}jKD!$1C7&?O1XBzt_#;!nY+FHBB}_`x+glz<1bRn^p)xlBa52PK!y8|QQe{=M5!y)#-&NRN#4WwS8#hGcyN+Z{@$k=JoKrW zn@!pCb{+#*zqcj-=TY|O)jjv92|ux|gjeLKzgb#PuL@~(XeaHMNJbo3X~tV47GuH2 z$kv{riqJeh*0p=(Idgt?4%+08$&%C9<9fdvhnXpxZY|upe z1=D0!pT9ZndHqQR8KaE&pHv2TonD@rZp79nl>z`lK=- z9~(UpV~aTK{+9TkuMq_RN7XNLQvg3mGhNu@?SBW#_}xuOFOeoZ@r&d^s!-+>Py zL3MNye&0-w((Ntzi}CaODkn#MV!m2&<%;UTU)WzwZ&D;0YTU{R(NKRE8pboMp-$CG zpRu&kh?BL_%cZ2wCbiNNb4A5T9sU_sac)8S=|j;OeCd0d^LGYc`8Fu})IdiRp0T!C zJHuP8(dP;+n-)-vo)N`py@~gB$~!4WsfC^qbxWfW8+D5o>pALL5u-Wir}fTHXJqQL zj>R5@MpGY@e%jOr`S%Moed>dnFjF7CmZ=Y4%hZRj&D4jZ2uyuY1n!-m&SW+9;b1bK z`kZl2eK-&^^+Cm@DeGpF7t^ndf=s&MpGYGhO(XdxWc%hrarC$xW1-7t`vq%eO!LCn);jpP-qO-eRpu`b0%c!b4KZ@ zPn+p-8P>t<($NQr|BNC2GZyjV{b%BD=Rk_l^K!QyLi}fBYmVn7$}>1Aga?6pFh5w5 zv*>4sQDL8L*^-gf*~hTM#2F#h55BI66$P#f_+Aw7FsDyAP1JbT>tHVU^a&cPHBBad zQPU(MrAU05JR>x@*@!KgJR>yuyb)V8c}8gR1tYd-@{G{rH$@D(q_|UQ@{G{rizXDo zMNN}ugeG4yV#`41jL_t_jF|W7@M#io$p$(vvzXd^VCQBk9!-(rs?fa}C-diSQ3-Qhh;=OIe7UG>nn!gC6iY+2W9qFd4 z5$~)ZUJr{sB!LkRMUsYi$YD6*q0|iG@wFfxUkl>#wLv_NB7k^j!w~OmR*1*JWR7@e zoruSQ7{o)hq$3`A85QCo=8+?wyRcFakJ3E`h==;%7WIy4GK_c`H5nkDJLwrAo-0Gy zBAzRZ8w&AU1#o>Ko-2i6i0AT~72=(>5bvy|-98(FcxMIic9<^LLcFsoh^M%j(wDHZ|6*tX)j2qub!6h_!bpaIS!gZ)m7H=Z}m8bqfFxu5H5_Xys*PEAJac z3muoi5JNPAf^laB<6h-pi6591eT+LR826eHTNrm%Fz$6DwlMCjVB8xA4!MHa? z46Jiu+*!f6w@fG&#^Jns2C=t|m^sZ?3PQ`r;w?sO*;$_zjO$@>u{vjC9I%b;_ummQ zNR5){wzEDf7}qDB5jJ_=hufN-f*5zs!Z`4kg>mO>j5`;Caqy;3vXIOThG5(|3**i) z#_bY}JLkl>bAoXLCS(ia&I!g18nK0O=LF-1M2srb@4v>lbAoa2vDibQGsdAv(l8D= z497T>n!z}}7L4O-!8pD)7{^frFz#F!#+}Ow<2abiG47lb<2Vq5aj2Gbj3Y0j!Z^e{ za*T5qRtm;Zy2k+HP#=tO@0%vW7?)9#0miwLo)N~mGL$XGxx%=iFwRu~*B8dQQW%DD zF27k}+&K&5&S8K`8Y!F$!MJmRaUV#ZI;cOZ`0kM@ZK2#bOCv|i(~=rFFqnmMgEqi(4U=|8lpJWFO z%8`C=kWnsO3pXhEHeEtP=JlJaKeP@CzRfU^S@cD-%wHp-}qYajjsjY_}btbM-jlc!7zLq%nIK)n9T8Q(1~vxh{3l(7rv2~QQ;e6 z9yz`Z=1f#77cLJjAMPf&32+nPCc)hdHyLgU+*G(vz}*6OE8H}=+u&}8`y||SxSxaj z6dVlV)C{|1MW_^&%oUU_gOd(?sIUn;O>T-4R;URy>NwaMR3J%_rcu{R{}Q& zt`x2et{iSI+&sAXa0}o*5BC7vgK!Js9)f!qZV_As++w&Ta9@C13RekN1y>DM16K>T z4DJ!Q<#2UyKM(gP+zPmraI4@}!_~w6Gq^Qy4RDQckHI|-_eHq1a8JN}3GT~q>)?I? z?kjLja8JTD!?nP*!nMIg;MT)!fNO{Afcq-kQ*fPd8{xX(qHx`CPs7FF;&2JLO>ob^ zJqx!P?m4)x!Toc%=i&YZ+}GiL5$<2YIbW6(e5ZCh2KbKmk@0=D=`tAKGwL#c@9y_J zBYbydC|i7Yg>ggSyQ=`MFMM~UFbv;aezU^&K?~mp0VPR%9}K~F;5q;#PZgOV*V4ic zTKGO_@O{w2cl7^Ek0l%kAjFpkVrd5nGr(D40HI#1^Ix3Z@T<7})N@ z^g+S&_e>}jrVk3Hzi-6WhjVZ@WBLb1Y+?GKVETtFE>;(8Odk|X|478=hx>3oD40I= z-}u#GVfvtj>9k`+64Sxg7N(!KG5vf9ro$U!`ZSKQ2&s2t`gw!tr20M2n2yC}{Nen( zQ{#GGkbQ;;+0wY47i7QFh%ID4FUanR77P6hUknMa3vYi)XD=}TJg>2_7WIJz=?YxC-c>kFg$~ll?S}j5ybBJvu7CW); z8i^9!y6(ouHLfE?HWWA)>8t-vGXln0U8IC;p9dkhG_KX1(RjqG+VosmLj)%#t&X*U z8*O##dEvN8FHyLpu(Q;y=Y`{@8nMN3=Y`{@8L`E2=Y`{@8?nW4=Y`{Dh!|W)c}i8c zo)?b0(}ZGi+v`e0*+$Gr;Tu4n7mh1pF*R(<0218BU(QQJd|^0_J1-np zVZyRF?!3iu7c7ngfLR=O!RELNAsh#9%yCO4a~DH6?t;Z}7ntK_2*+J;a@+;sxaB5f zi{mZ`$E`48i{mZ`$JL7%Rj6C5=C}*Oag8kYfS=59D3UaeLk`0^4y9%|j<1E|_*yuQ zuMNj>6akLA5XNyAvf?-nCUcIv;N&c;5gI= zbKF|fWSHYJYBJzBchWQBI9G}S2lN<=CEx2P2;kXOJaS4eM-8yySbemSSU%(YGIj7^ftV-n;7oDVjQAqt|3HhRJBymwl{o5vDi_|X)slOs()De{g?U*(} zmE~R(Qh$}j9txdF9YvBx>d0X@siV{ksq?jvI$sN^^R*#$jv_$n7sE*XVpgQi!DLSA z7oDWeff!OpwWO0ec^MU{Bj%Bly1TGaNS)F>2BePqU{Zh0G#MuKjG7Ec-JSG|NZpm8 zY)Rb}#tlX4t^&BeNZpmfFj9B<&5G17TBLr_BK3MZw8CzZyw!HHKg6xu)WsGj<)6$rn@Li_X@{Rgi5xU?xHZ=t43@w-9=%# z*NoU=x{JbeuN$$&bQgu`-ViYukMftwbZB?XbZ?qaET+3CO!t-%TTBN?W2SrCh%KhO zC``A7#l`B9&2&H+X1X2`4-Kb%y(moAE1nTH<;P#QbkSluIy)ix6&)~UG2M{ObVDIb z2XD-DeUiCLAxt-9G2IX|-L1lOLr$g}5~e$8LbkN8L&9_eMr<+NkTBh#h*3vW5B!5dm<}ehF4kQ|fUbP-<~j_ihn>}H#=EV3K2$c|3HN|GIr%p$u>HrZVYAv<_u zvMZ9zT@E3;OBUH(VzS$T1klDpmz-pGNyx6;glv)BB_X>7Mr@JYB_X?oB1RQbmHA|M zNyx5(#U7HtWQQV2BRk|Uoa|6)hV1xS$d0dt?D*P{9Y+x$yGvnYcPT5f<6tr;yGu^8 z<3J4Ap<2?(j=YSD>=5(F$gfXovQ$@FS2u`FpTV6ezPLGOBUH(vdHdI2-#f{va2y&u0?j2EV8>~$nKIwc6k38 zES7U1q{tXfTX#vwZk@Eq}z5Q)Xb|_+9q(pXME7I$_;)&QM!Z@#{ zInnGjI+b*n1m$M`j>aiOr8!A2b-5%cS7gK%%3TtaD=}gVC|6;`7Ro{EhQ^DNRgKtE(p?git6_1mx@@By(2Y@Uxrjk) zltlN3*GqzOYsE9d)@7+byk4?Ujt(wOq8u2^Lb=N}%3TgYIe24~TPKkyQ?Y*3C? zq+e!~OJ9+GS@5mRgl6H}Wx=<0BewAEvfx{%h*2+;dmrB}3%+%;*h3;1-%t!`_=a4C z;~PrK;2U2HzVWr-8($lI<0u07b~y~+E@y>r98Bi;cG-z<9EicU%PxE)FQdXY#5{6* za~D<$zEQfz0N+p_jBg3kWEkHvYBIn#chWP$H&=$T#Wz@a?jNZ&-d4zB}KY@8a9_ZJdmE*O&Nqy}Pp)lISkJjVEy?&c%Ci5>MhJPS!C31PBly(EZ-0 zo_18ecyWD>Z)(ORb9<|dx5LOZr$$2S1z{B{~O8Za2kM# zU-bEgF7~_B@-5mol0RXlwY=;z4P)xl!e`ni%(ONME2e$IOxr49#k5bDY1<^MnDz-X zZ99j-Hd}W((>`IQ?UYg!(>`IQ?U68@M5LYp33n0GIwh=__6aj>KZRS(InA_Bm}y-S z&hp@(Pnco6sv~$8V`;Fvt z#I)5hf5z>cbH?o)lkK>atjKnb$u=lqMYeNHwqXuqjBHP&$aap&Hb!9&4I;9kOESoY zH4G;kdQHei%S<*}X0p+;kd3McknLO;+0NxeHYz4M+0Hr1MuiC3Ff5rfZZ^w;$cCEd zPd0aFrIF3HdlATn@gTCDmQ9Ap7HN|K+1yQ!L^jt7uMs~T1Z08i&&I#GhDYD`7PhvPjh1kPgwi&l`Otu%fO6=C{ zZhVDo^C#OmCfnpc@yUiR_Pf-Q?S~-(*Ef>sQQilVPaQ}O4~<~1&pF|CjwN^apZbzR zO};*S$(>`#Jt<)&xpOSJehDkdony%zm#~uDIhNcYhao##ce>=Twb6vzu#}=Cca9}D zCSf(<2AYxNPD@xx?i@?*849RD3zb}F@4(wB+pbUQOAZr?bLSQ3;4sCx^O|$#LpXp-VD2hcyi69C}SSN6XAPT4v7CvT%;72ypIv80XIC#5pP^I_J(iIY)&E z=P)dpoU>UL#5vSFf6lo(D~)ru-HX6Ej0bVWjdOT{4CPMzl0Vmj-TDgW=KnAm`wJ@QaO%=0f7$2U#USTCXC8ENZXbTf@95yb z=y7i!zSJ-_n6!7rrF~oVJVWknD!2s|Daf5?$h{+B1-bJKxpyV3Aa|Z2_nw3m+ui>}EtA4*t34l<+gM-o<$JI|2&n8K~*f`;6AhTMdNvq0`V zLvDsMqwFB$&MU}W2te);R2zhxrA^!Hg9g(Hv2pw(mT8Drn`Zn(1m@|+@!!4erlF|B zzLGk+=h++GE`+cT7$f$XU-3Ve7gEogOq<2KpxAeT*!NV-XWs=U`%n@cW{bGwi>Z?R zA9cCF>?@P7V&4U3U!}B*XBYihybH{}S_*quJz^g^FoS(q!*KSYkA;1-%2Wl`!0mB??O)Oqhg}7?}C$kREV$-!;;B9nvwtErShw-58v0gSAVqc_9 z2JCY;Jres|E0inyTxBdP_PIJ>X|d1M!Z7x^^5(?83yOUga5$S|--QtNU10V#$u3v1 z?}B3A1!3O>#XfxgNgW;)Vh@ht*JGcEU10WYlMh|(?0>e$2zJIy?Vh@Bvv~)8Q)4jM zH|Cw_J>Bw?Lr0IC>^+fe^#)GjI%QYKCcNSu8yPy`jrERx&HKjj#Wr;)v{ zkBt4)5q?U^e1F$t|YMhl$TyC9L>-f%&|R!mZ|_=JN&S^L7bm;qwLN^M1~ZvV(lS zp!j@I@fj1Cfq765%_z2fwv%}HM@*RFGv-CJ@cCj0pHV3Bxr@7EGGx~DqT=&K;`4Ph z*Up+=bn+QoCa&~I$?78bMdtG%2`fHdWIi9}Fh2zB;4{`R zoX_ZE;WI5WpJ|!-Ov}P&sv^MWi(!1em=m9=nCN`I=;SjMB7DZMWb)Z&SrDI5^Zfbj z?yNLE+jcJkpD`Y^J@(5cLwt_3$$-!9rbptlYlU*SKgfX zd{OcFqT=(#5I$dIJ|CA|uHy4W#pjE{=ZlKZ`1})}2dNNyaLhJqdXf2jhO5MG-R{Qi z%l5(C7tOVm2Xn88I`fR=Q#li{bI{m)X>bFS4M!B&-B|kpKlyeNhhi&8P#W`WQFQUM)k82R;Zq2R6oaIYy-AGQmCF}R6kE) z5B)=^MxSP&8f%#9s`mIM(-8mLSY3fh_8lMcHg=+a1=Y07sHSB`H7yIOsfqxqC&N%Z znG>q1nCPgUbfTIH5maMXGEr@_EC|)8dH$$&cUBszZMzo%)ff*#^$W7e5UL|>GC;Mv z>5)+FTA^G~?J8qgq1x2}OAFPm7KWkPl{Y6;PbyST;s`f4Cp{U0>PbfRi?YjAsGd}) zo)lD1Dpce1PYQX73bDt_Y^a`ORKLzuVz+L0;}+E`&(NOVGqlm+Gyp}v<}>h8kbysL zek`1UkM?*!^tsP@$A(6{ubk`~I(ckhX*Z{IFitWU-;+`l7y)Mz z;rkL+V1xiE{DFiO7$+HwA5ys0T+(2iWH5dt;VfXBWH3%~W|VE$Cw1%Tqypn51x7$E zFy-2UW(XMVJqVXVyoYS$y=h*#%OT#oq`Y^Dymynmcgg9!OYA-KhJPY)S>J_h?zXM^yy8cPY$! zmvZtR6%*Zimz>_CLd1I*mQ3&2EDQ1;YM#IM+?|!?J=^X@@E*p4yjLlk40$ioCIj!e zn;yw~t`*AFd#*B;mG@j7u(Z7AYGIi7TzPZy-X-O|OE^HydGAt)_b##bYGs$Jymv`? z?~-`$lJXut|HO@YD#RY{vU%?kd#{bF#BP1Xdkeeu6dg_j@Z7)hy>~h2y**}^(|ZS! zbmjhd((A&kUvhBZsez+|N!)eOKhW1ZHZ-EIqF-XtCH}R4=*B4e4DsgxFEQzgB&`7RW?h=!3 z6NOvNWlg$EOu7~cXCd7sCf#<Cy~y30hmTTHskPSSyJbO`N~lGPO6WhUKz2`kcFX3}+W7(-}#A~l6~nMv18VGo^7 zq(hfvkPd4YPCE3OkdBs_bhON*qh%o-RS_WF;BAu%PmKNz; zEes=_D{oGuyR1le83(92(p?TA-DM`-A=%|B(p^@hyDX%;tVoB?KZ)Wn6=Dx}*+_Sp zNjJ<@Vz+L0<115m^S?I|9Zm!A&cE?VcO^)=u%E%B$NczT4!;L;b0^1+<7?vW1Nf3S zeiJYAy6$B*UDv-&O~)wHU1rmDOIVriGMlbP!pd})*>r~_tW0;AO?Q~XFrLeFm)Uer zN-4^8fG(k}U&6|CKpKUQOIVriGMjFY!mZ|tHr-`5-LQnoboS-5iJ!nnqAj*{tJ%?G z8e+y?bN!PPKpNt8rmoQR_Kze-N0V){v$Nyv@xN~xidy_jvvtOlHpC0@*~V*SAP+9r z+N1Txyck}{Gwt|qVZ6i?8nbEd6Pq4*;6ZzB|1zub3^xa@532F9QsWh+MsQE5@rqXC zl@K)|8>#VG?!KuIHC|C_yh3XHZC2wIry8%Y8lRVvl^UA>YS1z-{G!)HjkL^aq-9nkEsGkdihvrggsJgLPHLoLqO0+W zQ;k%Js1d`GsYaV6wf)WO%Sfns{%Ul0R+<`ZyB9%?7!Ok8%d*Lk8Y68oP@}u)k<{o~ zpOOx7p#G2z)qsGC5+u z52e0Svwvu?A8btfF8UQFWP|}J{F;On8Lu!IU#D=ZnbKsu!eo3y!a~MO&|P8B zjdNy{9R%GK1-dB(I!H``Zc2l0Dg<=MMxc9(SMF*E=%y6trU-O147w>N=%yHS??}lC zbW;qvcO|SqH^rcPkHZ+kAn2wTbnjExL#Gqy&?On5!y1Nz4!tIzqh$siEi>q7SwKfs z1VA?x2D+)7Ku5(y2i=qtbX16d4#ScOI-6xdphL~`2c5gK(m-e1y$GPgco675kWGd_ z7ip6L=-f?@1UlCW#Ms{%)0lfnih<+V%-$8?gI%c)=e?%K9sOx-4wI#BMB?k zO)={}<}jG&V%-$8ZbC{?tb=sPZIcpKtb@}iJSAbpx+!MeG=*EuRn597X5Ea0v#@T8 zSy%QODT6E4O)1u0Rjh-@6zi^P)?E!@9kLPYDyha6d<)I}=s)0lE7rL>U}>?=)xt2=x$@@3x~qzHS8;%vW8Kvd z)?H=RwaG45vF@s3-Bn@TRmD1d{z(;EsSta(%f`B^%(_ml61(*k)-8;6=x`c(R~dMFB&>jUm4VkOVFkRa47~ju2KZdSyUM`pl2R1#AYT$(w}ch&AT|p3 zNLT^yDg*Bjg*1i@Gu?(yys+-A>c*YWB@#O(<1@TwL-Z9&sD~<0-mb_ zmKN|_Eer#mD{oG~yQYA54F{+>;9Uy=-Zci^^RmlTz`Le^cTIqIO#u&|fAYl(RERy? zWdk0bT0^;Cgjx6#7L|-Vp!USZ5r4 zR2MUcaQk4Z>AY_8#`&)jgJ(m3H92bUC#;K`$A&B){QC(Xwr@+Qw^h0Uwyy-2Hxo3q#5{O z#p{A^`{nBEgzq0VUpL#a`TY$3UxjXI#Owa|W!|OHZoz0Pa9?L|zb9b@?&}Qh_c@G@ zRS?|Q8QdT6ri9XF8{*hbGQo|lE*#w0k_Ftf%;2VF1~)AWxT%T&xUYwS`+82`redOl z`??d{REU84x(nPk%Ywj-n&%I0cW0%6+qQcVz>V=BaDOP941qh+CIfK0n;r?=t`*7^ z+^#Z~6}Vj;u(ZJKYGD|-U3qf?_jLvC>p;UCxUYwR`#OXBBiZFDa9>y8zAoUtuE34Y zKY8zCD#Q{b8@R7CxM#RZ?AGmW+`ep|BYE8v#y;~IQ}v(i$?RP*b8#`A%-&_pC*yT1 zPiCL*lkGpX=SX7nrOo-!fACLVuw~i})cwHr3A{EhsPXv?R|HAln zJ}G%g!s?{tI-iuhEMaw0a-B~~UXidmDY?!kC9iTACn^5t>mGc*4xuR8MJ^m8D*?N)@hrJn=gZ8H(xmVOR|x808Lw)Ar#yzNeex22y0;cc@K z-WE8O@y`>#-?>jJ9(ZHMIncD61Kq~bG@S#@Vw zFJW~)G|lHjA8;5SE4%Tgo*yvH=R+S-*q&O``4G0^j0+Ih`t)Z$_y|yJ=yErMK~YAc+mFvk!&(_J``z_!TFH8>5VTznKICd)*!hqv zZ%*e!)9QR^TAdF~hnx>h^ZC%nvddNHL(}SfXj;yPrq%fnKK}&B2`a=2CENMXG@lQd z-|_EGz;505+R7t9$GrJH0u&ui1912|zTj^JFF=Gn66*1%lOrbwo;p6}bqo&R&JwSC zXmr3{aB%*x(sb&kVXDGTWva^#)2W+=C9H%$ow{jQ!bZV}|x0)MT;nS?}83|`m_;l)~ z;onVNFH#DhRtmQdRiC@;06r^)-_Q!b5u$Kp^KTla8e7cGIfWO-1Jl|!6zOgd>FzM; zZa7JIgGpB}B`eb1VA3^7Sds1qlg{HXhA>FF8>yRyDeR%siFD|a4ANl@!%2r;6VlN# zla7{|bhIp_qbdTVyAejZ8#$4Viiu9T8&1+uAwoI~OD5@TmIaXxHP4@P?#@ahoo)9b zkPhQPq-&8)hDaA_lL6`6O^-x6*9zrII#(IXigd0HSX!iWwJ?lyuDm&s?uH`W4IH56 zrnql}knRSPu1$8iigY&=>23(=ZYa{>^G~AKN`=_NT{hC)VA6GRmDsJXkZxi3l%T_D z0A6{=H^QwT>Ar0CJ11p3Mw0fc{q{#v>1$#5yMJKJ>l!$j^u99M`&80?C9Hkl-j2r~ z)AP4CSa;ig-#0l1)DGZx@v@zvyurHLE@7p+8?3vX5>~pq!MfWcVWqnpth-JQLwhdW z-C*7Amr|7OKwjcomxPt>z%>eYOIYdd2J5be!maR;nq$4ex;rG{EV{eFx;xI9QMTWg z{sTX6DBamdsL$yREK|C>sdaZVM0dzWx*Oz`yA`6ln@V>#Nq7GsW+&{*u*PM^zk#9L z*y+5RrUENHLQ(ryW#G1kn{2)@sZW{jCY$fHgq8VjviY9jFb3B4Pih+PCY$dJg*{YF z=0itim=Eh6Za(y-n2(m(e6-Bwqh&E4RS_^Bx?nv0azR79*lfC)lliEa=;piWG#?cr z=EGoRn$Kogkoi#a{LSa?tTgl4b}xeYFdk&SXJwNi^F`WZU_N)#Bbm>&Lb;mHRmQS1 zpQ{6wmib&Q3^SiAZ%*dBsmym1hpjpD-3&3`O*Y?ivddNGyQ$1~Q_Oc$nGc_TBFFPo zh&>2qGv7@%-z!`tcI*CO+fL)P$G#XdN0UztoW!rS_YL;qN8IVx*zM1}C!b1=?BHK| zf4X<1?|ARX11;OPw(jur2Ywws_-pQSzYu?P#Q%Z#cKWS%{)za$q5dR(Abzv`!SMgT ze`5a8M>_W&Jks%%gFTNwy6?b!J%@TewM+9D0vZzUU0;EBf(krozUEZmfn;BD;Ax+M zUm5PVB77|Qje8#*>K`~ZfZy@yI5j#pbRs$8?d|IuI%U67c5Gzmgh#9Cv(T}|ZJRe+ z3EpHVPE&*IM3REyO@`u(gcTHTG8D}p`piUjyUqLoUiJ&Wn|>KRAz=l@n+(Mw4g-$< z7IzP}xVdS-n+(M=DMdl?CPT4O!U~FzA3?EJ!U~Ev8H)83ZZ)?w6mK#VnaG zZJZfp+x1CZjK8U%Xdlcz2So@^LGhM`;;j%UA{#+*E3e#42o!HADBdC{#)*Q}SmP8F zgLk^#ViInbk`)PWF$s4{Sds7+lW-4*F@&}!QY5^^BaA|Yy?KMCEPl}19_ z?nNLW#)C+>Up5&cVWdq4By=}D5(!-^lq(5cWh^Tax;kKKkOLn=6gtrt4ZwU!+DH7uIPyXnpLhRu#8wqbQ3H!N9?AHAQ^vadp`Ci#Y zhtmLz|B(;CnIHheuIzRk?>&jRK0GpDZ{OId-od~xI(nVppq~4?#iZN$o{ut&qR$Y2 z?(Y_pZjXc&>25LUIwh<~cZ=u#_Dfii?iQ1-i^CwEzr|?M-D1*pODT$Um>VUt^+;He z4o0K!Aqgwe-D1)mrf{p7(WJY@qG0%vx>;|=NxB&(-7`|MBHav=?u>*L>1LR8&vF<; zXnP_>x)~OgdT?(oq!w(#?dCZYC$vQ8Cd; zH{&E76(Xd=uw;_XW?2yFQ1kpr=kBaD(%E(|0_iXwM7rl?lOfVY+GIdFche)0&b30h zlFn7evLcfiwqhQ9rkHnIGw*f?^N@|0_aU#`oe<{POSfM(Z=p*2 zz4Y6}yv*;V-)7o^-EAlBs1TvuZ5QoqmIcucHP4@Rs5iy@d2XA^p!tzliiQ(*J_=Pmum8(kn>+E7Cth`X!`Sk$xHJSCGDi^cvDX zNBS2?{}SnSr2h@+SCM`V=?$d+9qC^o{cEH*k^T+RzeW0YNZ&^K_elQ-(yt?(Mfwe- z-$eQ?q;aJG6Y2j#`fa4Qkp6F^|A6#6NN*#32kCc_eh=v#q~AySF47+$y^HjRNdFJg zA0fSm^dFJ_U!*@qdLQXekp2|u&yYSq`X17sBmD)^he&^k^jAoKjr0-H-yr=h(tkqw z80qhjK0!K%G=X#;=>pP4q)DX9NOlab;J;HySCOtET}PTmx`A{P=@!xq(ru(WNV7fRMXm7XMMW8)Ck3{=v*<}#zBkeLkd$s9G(<9N|wL-bl-c`o3qP?pFmKN<@ zEexZ*D{oG;zpZG08z`Bh{p}Fi-)7p+$RStJ{dpUmJkjAa0K1kg#I< zZD#tL5>`yV%}oEcgcZ|oGt`yV z%}jrX!mZ|xX8LVr`nwX&!t~qB^ba{R$__I9wqm;dn#$Ws*o$fFC~cVgbj z3G!4-bjaUvLY@i{$YZcF=V)z~1wkG)&mZ#c&Ps!vZTBKT4&yGk@k^O`SCga(5Ku z?g-@WD9GXSPmV}XA@(4cZI1R1L$02y#BSX`Y}+~7J+WOsICo+`^vGk6JoZFqa;$e? z@V>FrW1rf6m>2*WkQcw_!!8z_v;7hCm~+lHbsy&5_JjC6_LH~{|H#RwleqVC#Pe6d zpP9_+$mut!8@t%}!DBLY!CBZu^!5#{?nprKuJ1oIN63!yQJ1oKD zoEc^Ned%A9zoR5*pJ6j6K@d(!a8^rjHbjERMiLz4l`}E=nI`+(BlV5zStY?)l3*1} za5hbXvn0W%S%R}lg0n2aF{w{UaF!)_TEa?#vn;`9IE;a{{gb*{Kg$w4Ltzg?K@vnq zWk?X~9WFuirAUyLS%S385~O93AXO2NAiBUU!P%T7NX0~#;H*=ERES6rgOw>kn`J=~ zM9uS;pu4luBxu{c2ol72kOZHVO@<^GX_J8j-A#`qLDvf9DnVBn%SwW-4p>?ebhR){ zg08$dNpMz4a2AKHxhcKb5D7wlI7H={=VX_wBsi-iI4csIRT9MKpWyL46=Dy9v}67S zyj&PBwNv#EY~A{~`yaS}yZr*iEKBeet`fU-|FCT(*b&?FgC@ZP$z#cp ze!KWzl)hK|r?mXL#eY!zo#HQ+wwK;t@<+v=EBV9XKQ8{u;_nq-D*L(8KQC^@YyS!F zC@Cq5SE9kjJZRnlFpcqI6~?|6bG&B1Y?GeP-mRJbTEg*KzT>q5$7_X-*NPmk6+2!l zalBUQc&*Iw+A7Cu<&M`X9IsV6Ub9+G?-x6ln*Lgi`?~U=+vf&J~=HY#eHgHVySyk{Hjaw`v`UreiNrPCYJgZnLo*G z@L||$j#1P$GdRg@V*XP@E2Tal zXLDGn3d|vH`kp8frWd0*CeEf?4Va0R=%@x?sIF>8S-o9i{w>R2%JlTJ0Fga41 z`lKU%%?<^ALO;ii{(T>+0hGG0hcS@_HTl!d?SPg(fOn6fA{-rZhs&(JiE zSfl;N*_wuUp}#X2vzukA@%Ztd-!eG3?C7Y%iwMv@t>d8{Y;&dd(_%k&{L?=tzAnSO z${ZOu`IE^$OfT9GZAV$go2yJ+iRnBwf;&cguxn~4sxa8n=vGlFC1&g%f}VTr>8k0m z=+onO;kaOT5xnb2`^>bL*n$77-+bB)W`1;O+sHHaangY;PgfRL&--i_r1}P3fc53$YiUcb=Pe!VwMW*}e42@^rf?I5Jsj_7J`Km+jQKPiY=awW zLp=DXY8-k~8)qji^L!dD^L!dDcT!j1?IBmHE3uh9haaAbh0Ld!*czaM11AJK@&8?BJ?~Tf`Ls=<2bxbaF%NpcNiX!^ zdB(eCj~5?~*A;4hSpIB_6-n3IG*(MfE%>U8Qo!s{( z7MNJv8TtQi_^GG%^3O@*xSUIYdkf(j4Mp39C6o6Wc=JCn?+t9;rD* z6WeN@Kok2VoMjHt#O_DtJTu0bQMTWg{$*todmylvv-5m&b1#@QQFAXbJ@*m|nR`Jt zntM6TD;E!$dx@#Jmsrfsy*x*=D`i+?J@*o$xtGgW>EFZ@QB2Lf#CY!IjMOJ{FLo~y z!>QYkq640lu$JSk0?FV5!MBw=N~ zc+59n3x_dmLG#7gd~Fo=&F%sF^VxPUg848WWWKGk$&mRXZ89*QyXle4 z=USm$&F3m(S((q(0ZYq#t`>%w&y_bP^Tn0<;>vvS5c9>^eA{G~tIQWy=8KE@;>vvZ z{F5-YQz5O`^JX(&oXyw8Rbsd9ACy-f{4?JN|DeNZ0A4$nGDcvQFWT>H$C+s#Q4uW| zLq?AOosc*)?PCcmrp1|Q6B1TTi!;+EC9IehXQoYY7;JMfEzV4vmQobc;>@%e2@?-e z-wuYmh-qfRpPh`y6w~6&v;>7)0Ub4Y7iXpwNjMABP&7^6)pKT)9b{TuG0on5H^(&i zN--@@Gc7NKX~;%QYvPqlgfJ~nm}bxD^1!seXTF28HT%QLc`|tyeEfDElWmiftjLzf zWNVSIB3mAlt&PJNqafMxm~2}q?4b!nHgrh_*|3J;WJ9kB*=U)`M$1e#S{AZV6#=s4 zg^?{UC$dp7(aDzQBpVeXWW%szPSe>e3nCk8oRJ;w*26%+%|lJz-&%^ z{{~lF>BnckD`CaBJZ4-?=mUxUqK#%+>P6yxyFN^)9@gw<>tTt?wG2@~V&%V!h6itV^9 zcHe#G?pN*o7R6_9|AoB~6U%=!jyrJ=cGImG4e_5cb=%C2;EiUZW4&Xe_MYnd4nDTG zyXA9j-oTMleM2Ws*x#?-wcFc#uxIaq9uFmb&pO1r*Dn6$c->uQbE~}zHgFs4aB}3B zEpAI{!M_>Sag(;al9|Ww+)69dY7#y??aOBq_s8rCZP{Y(-W;=c`=_l`oNpnwH<#1h zDY5Z&v5oN;O?#}!-gY=U-VPYz&g*rt_Qapre-X2{pEtyR!_+;Pa}PY;ZPz-jk`J7f zq`D|A^M}sN^X^3d?o4%~ir=UHrS@&or&+X~$6D{?%;RD z&|Mv{w1nChqldAKbR7Ho=0K9+67dpDwc4;n;TuiXWYcKm6$C&!G@HL)bjn_+9 zX*|IiZ<4Umc!D+VNmyw-!5ZJhVd&i7BDBU6tnn5pMQJ?28gG-Znp6c=N#k23EE=~C zOR#OXQMlFQ&)L=w`%K#|;Veu`Fw^#PW|ZysrO&j4Vw(M?@*LCPE5)>Y&9wXwrXd?K zt&3N#AcSf8!ZbUnnomsoEE-@ZRr8&bs`*T|9w}LoEuYDDNWzM2`AoLM9L5;go=A}` zpUL(lg*`NZ$c8S-ARE>&oNVYdAsa0-*=U)`M$1ArsvFG$SWY^*~vir$dLj;p8v>^f|z~e$QVUS5Dh+Zq=4ynmg_6@ zn`s|8VmGD&rr)@P75xgBes6IY18e&yMZW^3-`f=SY-#puFX*TY`eD7p>4&})`q47e zkCvH!v@G*VD{#_}3K9BYurldqvn+^ysCoYMb9Yu6{cO7z zfqobdqTf5R$q@Y_Z8D&ryXleW=USm$>E|kAS<%nc0ZWU1t`>&T&y_bP`V}bp6)5@@ zgwU^m>G!Veauxjw6#WW>eg%qt`23SR-lIb7K`^x%``$DJNbJzP8Z)t8ZEKWNxx zuey83Mutv!{(AWkbgv`puz+>gcEi^phTa#Aufqb?;Z_MN9Tu<-w@Fy(uz+>AUBXI- z1+2rJ9EKMC%}ndCfOWV>N>Mt*_l1amof1|$1otSsU&2a<1+2p^3b&dF^O$8`PndQQPc;1~V72ar`3`YKT|c$0FdR_&EN% zx82aw5#}DNmS?ZT7CJ5Y>oHi4EZI-(^N_E4_LuP_9D~PzVK&+OB7piud-45eW1Vr6 zXCHlY2+tjAHJydAym9^u7qjW61%3+AV?)*@{&nt$?b{OSZHWkPE3$9PS8vOY@V4(5 zysbdJtsuhNe%`*VP`#}%!rQ)V-&UmFRutiFW%dDU!9Gg$)%W{v;EndtO6tk!h06Mc zWPLlMY$tRJ#rna!WHHjDs6iU}7E^?ghs#r{FJ#pZOIWGCkX1j%VQj4S-6_=hbv}KR!!^SiEFYeIcv< zC9V>?b)Q=+6T0)A&_##S08HKT0bd*h{1fJ&8}R!&9)Durfv4*LLT39b5>{+4WVXL5Va4`BX8UUrR%|b1w!h9{Fy7yeG}{ZA?QcjaitU*D zCYQe{Va0YhoWkFhuwr{5v;8cETLBvSI+VRD)lO3uGTX-`oQ3U$%=ULVGs^b+(r0_2 zV!M4#_#E3Y8ylF^_0WuB%XT~Wh=0U7DYj#hHw)W~oNRBjg%aD}c{y{m;`zIWx#$@fLd z_eIM0MIpW~V&6~7E?4=!Ncp}F1H&lYPg%Zyd*u6ydgn z{-n3d+uRj17x&b4o6S4$L*r5qsycGA_e6585L-EwGS)l#H7;XsN6#Zq>_aK{)146g z$E#yewse{imW_>ca2yn7#hV)Wtmy_GcMzLi>M{te zntv6t1&Zh9eqKCE~masaTg3l@Zq=ePkR1u#| z^>Y|!SFW?EB0ifsE~TimDO@?C)1^TPtFtMb9#ME$!s=|Qh|i|RDBNm__1RPrpG}>X zaF(;FB0igXjx(d|;Mr7>I-9b;u#`HRYDBfcv#A#RU2NZKUp|}Ig+I6AS*E7tLDMxm zYsT>pX5jrVQ1S^DUW#Qo!72_p!9qQBg7rN2PRZN}mYR1jR$4D6t=r#6vh(i6qV?ds zdojEGMJZXiyqI17l7yAZi`nHba~Ruz?T?hpi`nI`P}oBg$mQtM43}dKQ(a}B^{szP z0sSj3r)73IEwjsMSzJz41YBMm=JMj4Tu#MAcX_eX z(p+xay$CMHc#z9ql}(0R9%++-%iT?nETwcsBALlBuTerJ$>+-_* z*4Vv2IFkHS1a9Yd(cv@zO_zN&mIl@M1@psBH9m53U~HgwaNwtsn0Fsdjy#?0_x7F` z!VT5F5L0vO#jL^Ssc_2>rNLs>;0qE~8Z2fFz9?a(!D80nOA=NZEM^V9%wg!zZY$}( z6Hv?=d__u88pLG?;@+zgRvHBFDEyj)l?IDhgRfJ#)s$!rf?@PK0dGh+iw28XgX5eT zW!v@nE*>Cazl>I_G-!WYb54U$SYU3w1^S0b46OS8Wd zkoiQ|5(eBmQknu>2?Oq32`j*rFyP+fForD%xDp23`xN%DN(4A`Lk8fmR^fm{PYK{? znE^-33^-aAz)=+ez?Fmnt|TYGQ8Cd0SK*1i z;4mKkM89k@1h`0>3;^eDdL+QPRw!4%xyo2pfOB=g(gK{Tg<*hm<;@9jB?@pQ3UDPM zfGc6ZeJHzJ1-KFgxDo+ei2@ux|Kx{{s1SRI%Lcd-2HZ4PiQW1N;1>3HF?2W$K+jbl zaOh&&rMW!3poE$B0u^C>z{v4$fhb|7y(nSDv=V08OA=O0D`BR+EMdj85@y;f90uEL z^V6AD!c2QrN>NNJVWzz%Vd6pRiLh`NG3|8;E2fn&)83$Pt0~n?D`BR+Dd8+kD`BR+ z#hFpIU7r-wN)*%V&z;XP4Zc!LE7eRZ4PhFx5!2r0l`9KjTB$J2da;z|-0ZE>cFwKT zIpvb`r^MYd8V+xr~G7}=gk&AF8_**>7Khb9o&&?OmU!y1N@4ZS90 zqh%%=Ei>6@S;$6J1jtqzMz+$N$VSCPCtInLY*dJl4a1T-=Vr4kh-|2N{$z7^RvOuC zyBC3M7!M-bhqB2K*&=N+Ae+1Ck;vv+pEE6|lP=-!vG0$nMC?gI%c(3LXiKIAZf=K@_RgYF|KMS%{} zkR-N`C9LM%AT$b3NLYccltDL1;Z{?oL08J4o04!A(3LXi5;sy4qzZJU3Up-(bdZ<= zU6}@5SqSKmjX+mKHMW>lA)qT$perNL*_&!D=*pa+D`U`AO34azWemDn2`kW*G3e?! zj3Eqyu8cv~L}3q2Akd*pGC+ql33_4n7(9yDhj;aWNt}G06WjTS4iir-o zGAHP$5CI*AB@=Wu%Ys0Mn&%HXcW0%6&bE6IK!@=l(0Q`S5a=RpG60>s>5)L^TA^G) z=PF}afzH(dOABc+9 zRERy?WdmIqgKj5RiQW1N=oU5yhYqI!cyw(TD^s{zrEmw8Dcr5nxLXy1J7go=J;^Iq9)i17f;)Rrbrs<* z^P=i12HkNfO@VF|gKkj53UsR&bi*9RumwT4ia|F#o2OWA!Ku60A zI$CDX(XxP!stAB?RT$`2XFiXJnVFK(|VPZk2#;l>!|;|Ky1?RERyqWdq$R2HlHXC3fp8pj#N|(BU)ylXra3 zp^I&o=5kSW6*H}E)@K^V)Tf1iQFRqFZL5S8(^fIlwnBc&*&tzxEiN?2V~g}aDp`z5THwu+h7Md4Ocu9>!qnbs}gEKFO)OnZ_u zqinw~{d?b5DW;VxromT=Y2}(}l>Jw$l{$&;%kIx+H^aSi^9#q1S|Lw9I6q zWhNUf3)!fO0NKjJ$X1>c*{GQ4WGi=)jS3O6VOTQf;B1x!kqtG^pKR{VN+X+X_acxD z<3VJ5Mm8BDTck|}WOFw?64_iUlq=a>Wh^VQxjJBJk-xwG>?sW{}>T2MNu=*NnIs4A!rG`*V!0#|i|@+WciT8K$`1OjT=}j-`3^8szN^r_s|fKOvXSq$^U76*_^v|v zu7Z4LziMlJSK;(s1^aG~l&pML!M^L1u<~66`))snF@!*32?=T+ZyKdQJ$aj%88TiiK^hmyQtx&GMbCt2IeCO(brR6(U3&VWp%A1q# zDwOXklycfq@?C}UU4{6rLirA#f8xagj`x$dEnv13Dn14G^uy@RKE?M-vqa~15lJq5n!FoeEA z{Q0^H_FSigmFFthbNeN%JXgV<>yohYTm^fso5S#(tvh|bu7W++Bc&+MLA(UELlRb= z1JEdZSi;J473{euDcou*wdX3>bNv#|;<*a;+!$v@*>-*G%V!h!;S%4})hZMKD-{4CHwC~-4Zz9}03sU!@HF>ERR{np z6#y#^1LWB@+LVf2;ly3_<;B?Itz3VRqO0wB61 z1Ath=Z~&s$1c0>60HkFGAT0|3sfqvqE5iU-nG*o1nCJkkbOMkH5ddOXG686_q&BI# zwPwfRjovff=+_5_2T$QVTyMKvxUH0O-n_696j} z04o&$D?V-b-Np1 znc$oM1Rpw_2B4_e2VhkYfDf4tCjcK#o=lF|JM21!MuvxIX>Xs!pVxy2D~{S5@G`zV zQOOc~fhuajNGl0evIJk0u##XUOYkKLD+yMz1Yef0l3*oE@D&b2hAs(KvIJk1Qj`Q? zW1`+`5>^rf?I`@Zgp~v7!>%d>cF0Dsdz)9TIs|rA3U*ZlJKT6qGkaA|*i|v?-j$LS?5Y@c?@3s}u8Lvz zK8G=cLD*F>>^`8dhfXKhp-VDghcyg`9ePb*N6QR5T4vbMvcQh22*9o?40csH!H$ZF z4!bHR?5Gfd9fl5&f?5C;qCKdzBJa+^b^l z)k;`#uZp=>FJZ;KD&}4jhrvHvclyL%6?4y%QWWxl}aIcEFw}&&MY`Z>o;?HugN^!4RaSu*Y+^g2ys}A8FvJv+>dF5(C zxL2*XS54gehs?cdC-3d)3Un9u8v&ZBL};@v517hbZi!(}{cN zk__%)4a2#IUK8%oGINiXnR~P>+@mT2+^Y`bUUg2~qhb{IVnxQpk@AodNcl(wNQFp6 zNX1AcNTo<+NUM;_kt&cXk*biYk!p}?kyazEL8?QlM`}P?i`0nJgtQK+8EHL|hqM7{ zBhp<+n~*+(^jW0MNG(XMNOvRMgVcs}FVcNTTadOQ-H-GD(t}9bkbVg1b4Wjov>oa5 zNMAtOfwU887t(H|FCy(h+KbeV)PdBAv=8Yaq=%9ABRzujC8RGSbs;^9^cd3PNZm+3 zf^-1sAW{#~SCF1S`cb4qNMA+zF{J+j=`hldBmD%@5u_)PdXbJI^&#~mC6SIHJ%w}} zX#nXbk-mmBh;#z!B+?MlFw)nNMv-pM&d!eEzo(F%M*0TQX{2u={S?yQLwW}3?<4&* z(tn9`2FbhoZcOSwYU-*?&%T2_N4ocReECR6&w(zlWpih>ll!z03HR}_%;dh!vLNoG z=J|8q{b5PtzHRp+a37yX;{IXTWf1ox?J~f9che(r-?c)ya^F?Pvf{q01C|!|T`dgb zzAJA|+^<&LuU6cz4&i<^bN@*>yjS6K{~sCp3WNXMnyuzuC-;T(d)p6sJ-w&(wfkx&{MJgJ@EA2a zN-4ru$6DxjL$*m+5x$xUzg@zL@YPKCof1}ruV%vU;V?*V>rN+pH50y5N>PNzkF}7| z_e)q29ww)7mxLAJtC{fK6mB&&n()<3_#O#oA$&CxzMnIrY`Z=w!dEN8*C@in-iq)w zn(#Ftghw_a{Bd5n+7QCm2;uElqHBoonO}*nVYUxTX^QPN%=R$}E4J4#+fQ>C!)Dh$ z#r7Iz`!f{w&z@SgUZhqo;)Jw9IU$WoA1q3)`uR0NZQA*j|$p+o>4E_N;8H zak7mH5w_L1*k-dVh;68O{%mu1RvO!EyBC3N7!P9G8QElrZILz^u+81{NNjVhP_Arq zm9ebY=IVf@#Wq(9!`SA^n-kk=6x(VP+iF7CR>N$2R(83HZ8eH*HNv(U#WsBYNe$0Y zA@&fLjcql|wwJj|?AGmWe1&cEXB#@424K3{XB)cMc4;nOiLPO$ZL9H_hB388q?lI2 zOxrGD#k3k`+D-{8rqwXh_DEPUt%jM_$zia~)}79@8fMylDMc}@hMCqSVd6pRIn!_# zF|Av|ifJ{>v>pn#np(}Y8fMxd31?wi4KwXHXGYm}eNs%TQB12*g6WwM=?up(P6lkFJ}V~lK1 zq{vpwWIID)4^1Glp-VEzhBXW)8+uL1M$1e#T4u7*vXG6c2#~EdjBK?zk&TLpPPSSn z*{Bd98-^uwrp;zq5ZO@k{K@9-tTeLOb}s_iFdjsZ%$;ZRb;DGWUCD!TP>6AIoahZvehcG)e6~a71{9lCow!v zh1kPgHnP<+*BJm|Go& zxz#ygj*5wnxz$e0Q6Yjk3`-{FY?cLK4mHmobMDSc!<=pRB47^VL6|!$n+#zt(k27U zxtksdbFLN26?3jKmKEk)9k8@8=W1aX=3IGm!rW?wxz!4Dt3xoinlU#nyIh62)e3W~ z1#_zv=J5F^OT0ye*uz~m%&lh3z0Xx*w{CaiE0~)<=Fs6Z0NWaT%(cb{GyeSB!=^L) zWz+uT;K0+#k#Bk<$-W_47&tjPHgc-Z@%@+8EW2^4sRcu=WVf1S_m+f}>{hev-j=YE z-D;NII}%p1Tg|e2m&1^rOLnVScJE0kN_K!Q(d~T+E7^f+6#hWMN_MMRb{|r>)vVF7 zTg|fjNWxiUx0+=)#hFodP|8AjlbtJXPO@90 zWVc4iZcT{n*0AhqWtXdDw?@fsjmU0|k{v$(1dDnq#2)Tw$NURslPQds8r;eIz}Bsw zyZ?dvw-=a3L_b5h+qg>X)>mY=uM`lk=(XC;~O-WcmZVf|jTEYr)YZ!7f5>}8~!;mxU zd@KNVcBRs%=&-TTt$7K~hJCut_FdCv{H@K0T#NMom zFyv|_oCR`g7;>99Gs?CNO-<3QQIM-skb}S!OvrgYy`O$Ub*@Z$khqt>}_#% zA-BZ=Yjm*ODy1pB)iK_-Nm${nj`6mg!)x?4);h-9P6~Ty1mO+ckbyU>RXE zH;e~uk9%a3A-qM}WPmq!(<9-{wL-b#%~i&-!keoDmKNSzEeyk(D{oGCt5bNZQ+TTj z!CM{Uty6Zn3U74^Z*_vVI)yiU{)uDzsStaJ%Qh`n$9Ox;Rbsbp4`M6Ra`T^-Lx(p+wft7E23Q4uW|Lv>qR9W!lO!is5i%(NK^E2h;k(~Oszv{6i}W2PlI z47S)opQb7cs3;!is5i%(Pkxx0-s*v^r*5y@azct&W-2 z!kJNakZE;_Y4wU}@Red(y=Gc{2-A>_nAXNC*AT+Add0N*5T?~L)3!-zifQ%CwCxgB zOsi+6?c^}V#jbto>S;YQZ4ZS#bTlyy-H^dFtW`ME&{M)RT4tuvGBb^qg=thpfNAw% zOsmg{X;e&frqw%{MuiB|>Rn8;Sr)`J)I5KtxjQS3X|~;qz%+~pF|AWJ8Dd(bO$JPJ zH$4*5Tq~3-(_CdNE2g))8H;*TCIc?)9RUN^%QP34Vr27%(Ny6XJJ}BGp&s?qinlAsoAu8#k2;+ zH26v}twA%bA%tnjMoinvE4Ma;X$^{L4IxZxV5V)C(iGDgm}xsDteDooOxwd@jEi0S z6w?}*X`K}I(9y&+bVCNyuvXzrLr)3QXqlNt%gi)d7N$`Z0j4#CF|8pdrcp7`nbzQB z8Wkc;Yj82mW?2x^Q1kqm=I*RCrrCBc0@E-a#I*gg$q>^bZ8Bh*yXldb=31d#ndT~E zSuxGk0ZWT%t`>$d&6PJNrZp(0H7KSvgfOjvnbsw{T*b5o#k2-tT7zO5KL4bIZYsnc z;<7QVftl9NRbsbpcjGHen?KXg;WPl_pYfT7F1B5o3)32yX){zr3&v0}t$~?lKI=OS z*=-HqH7(?@24-49!is4P%(Nm2E2cFt)5zEVtEtC_YoglWh| zOxwmQ*BHXIwTfwLLzuRfnYL3(Q%qaSOxq)2#k94|v`!9VT^bZ8Bh*yXldb=31d#ndT~ESuxGk0ZWT%t`>$d z&6PJNrma;>TdSD1HiT(wnQ7g!%T-KUtC+S{n6_3i4WEBfLJt*U4{_O;ww9T8oU6oc z-R{O$m^Oc=p~Gna-fHoghAy^UnhVp`GSf_}?=Xz1Eh2Sq+FE8>Lc)q^Ynf?95>`xG z%SlVaLh#k5AnH26v}tx+?rF@$NzMoinzE7uglv_{3W#t^18 zGSl`*X^Lr$%(PAkE2cFv)An;1<6_r7#k59dS{H>qbTlyy-H^dFtW`ME&{M)RT4tuv zGBb^qg=thpfN70kOl!=EX;e&frZqa5MuiB|8eL4YSr)`J)I5KtxjQS3X|~;qz%+~p zF|AuR8Dd(bO$JPJH$4*5Tq~3-(_CdNE2gAI1Rwt_xMah z7uzn)g=vkoY&BE_^uW?GSi71J7-X=M^tOlxGORZ3Vft&y2l%VDt1)}79@ zMrK;Ql%kl{$V_XJuwokAMNIP~teDowOxr}^R@0=J*2qk2k#H8KH8Rt-b7qun*C)la zM#Z!y#WeUzF|A26tto_Q$VN=t$t$-mglSERX-y$aYhtE#N@`xWVy1O* z7~^8sKE<>qW?DCeJ#;iN4c(BzG^|xP)6i4GG+Jh+(K0iQmW63lMSy8dVN7eviD^_! zbfz^qnMQ>O)0$jNvso6zG}JtQrnx&SjcK;si@-FD2QjTjHW^}Cq)i4)b2mK_(_AZ* zE7M$MEGwqDI$&ur&DFv%rn&Ow#Iz>Gv?j&0rVyqzG1CsoE>|(FNinTSnAW72hR;7K z;V>0q4{_O;*2GL3<|?sUx4ZEbrp=#e=x`c-(WOlwk1Tc?-?Un!=o(@a|z!Zc(f zrtRUCYYt)BI>oegAxvAxOxrJ|DWM_)t((Ib7rXW;rmbV9^-$PDM-$V~ z4H-s(B;Sr)`J z)I5KtxjQS3X|~;qz%+~pG3}6SGQ_kmKiZ{On&dCz#G$$oG1=$4IJwmh|Y?$14V0e|oI zI?4@xSJIfj$=Ii_GWU&seGqR+_8lMcHnu0aW2qyPedfkG#$u&3lCWrBKAZSEH1?iY zON*)ai&$nOe>c`#V)hQ1x^iRtdARqfm3|;>g2ACefYuOZ;8(hO4%#0K_Ii?|V_tV}-`Bh^ zczAYRvAL@S{nZ>d&G^;M#4%G>X?7kR**(~M>SW(>^z_h4uQP69W-sAni@yw<#0)R* zGj$2$VSxM)dFBfUZ}tD)PX))z&EBU?d%Qb_n%d)IrmocN++x>d_s%WDyQQ1__4fZn zH>dh3Pg)l<8&US2_Po=kuF&l4dAxJ)S9gEE2DayS$LJkJW@r0>y^nS5-`!Dz-7-tH0b5B1rSjT4uo|Hmo2KME% ziT_BSincaW@q2b_o*l=hp&Sd})3*F2Q`c;E&<1^YWAb#e&&&ADQM_r|z6sCB>5SPY zrPSNSyYKe=%>uuBB~Q;m*7wHk&|={)QVSoZ7XCW5@K>pYsqwmEv$=K0;f>zzxlbP2 zip}{OBVTK;wY^&6e~|Og-7({T(ENwnY?Ae+Q=WA=6FQstD_ZY+?==A4&YmrV+CwA-j#IB9Pt)^L@*sbFeyR8z=a$>iR zPwe(^W|VC=$JB}4I(1^#tWNB3My5{en)QiYbI6GuveAiMC$HT4kQ2LRbz;{Xa$?ua zCw5&@nmVy-<`cVa39A#kW~(K4Ud(K4Ud(Q>EV1iiaGyaQDPPVAb)PVAa}|A9ms}nm{2P~}< zJ68+CPV8KHb2_nWRws7N>cp-&&fGx2-!}+0Cr%O;U;|+i!!9 z(H02{M*XnQv^EJVrZqFuwolVV!4V%mDeH26v} zZM|mN`Vgie8!>G^ubdacwDpQ<>qD5fo|)Dyr75PZXQuT?STSuqGwl$En>EwcGt&-J z*h5DX)6fkWOv74*GYvf@OrvFH8Z9%^Xjzy>RRox}K8$JWb7C456P;=6olK)bglX$t zOtV=Q#5B}A|M_=!XQeUCwtEqnhVdY#Jt>Pt(_9^} zw3y~lM@R`6neDr$X!@E*sO< zGt-{oDzRI)2eB2V&7W!La2kO3f7oXly4ZGUE=*g`Osn1QGYw;Ei%2nTJu|Id!is6@ z`8J6r2`i?pXQp`)R!m#ZOxwg^u+7$;&b0N+v=%8vF>O8HCebEg#Wc7JeUxXmN?0*% zJu__^g*!^Re|T82+S9D|LRgJ##Of~I7&nBl z+Ec9dLRjrFt9zt0VzqtwY~ok)yjWYTy4tLIIS)J%I5E!a8qhBz+tRPbykUvD_Pk@DgnXjO$EC z`i73)H+prTI1J@RCzG|<8?Ojh-hU`TQ zR2X>6+(oiNv&q)=NI#;t$N6d$O6kQ#Gb)K*3M)9@&;^s=Y$(bBv&+qWgF{bw5A6Qz z{eix$Nbk$`RiRy(WsDo*KV~moVp9lqaznh>)WvbRBke*>U9}!-y0%1pfsVrE*>Bpb zGq=alWL!x)IM#czzjve`*OCx=)YMfO*JY?`yLrlGC|dLjNu9#rubUaa^wVbRv8ON_ zas8;F=pI{fY7i50y(MAxU{)ESS{japobsTM9LAz7V=UV9GG6lcCN=*3K=MJR6JQVL z#b*=06Sp7ani{j}H{z%tA7spua)P}IhUE&gw=db# z?Ty;&xTgk_BYZ9FGqwY-rS=r5Yh$VZHpI8Y<*EiUUPzrT`^*06vcK$~F8j+kT`sd% zHG+GFrg6j??LW@e$R++UyIH0hU)~V^ErUytJ36ZHA_BBe>v*UK8&;`7uh`FBLs6OC zXit1yhIy4aGH~)IlYL`DBlbf}*Z1_Bt4v*q={z-pUkkCF;MSoSYY z@|DjSdwJ8-@2VL)=+d^q)y-WK(Uk?(^FCW| zs&CK*xR{Cym_tWZ5BMJpF0^E>CywB~X(#W6wuOF91RH4gZg&A~_K&pHLHEpE*HwG; z5nQ9kGzd@!NDZOX_1buWO^IdH$1b?#@b^bhGVVgh@Ay2W>L_vdPe-Tck|} zlWy*&N1AkVtx&F$Zmu$x)ufxN1D4jLo2!LklWwlOIZe8GYSPV9lWtzfq?;G>uZQx9ou(w^kLJ4*zIs)rP;_YD4T3yDPE|vin#3{danQ`-5X6Z>`{!v!npE%$fQALp1Zb6~cyCl2gdgPf`0+$j;g@qk}SAcNfARMrqD z5vAT)kaD;sL~}owJ|`+)Md~gv|5ST}`MmiFV@xcLb4Qtd^wjJlc7!zfHAuZ_XKu31 zK6*U+c!v8P;;`^onSGr9>?1my2H=A)__L4bV%w#;%szTN`&hrjpMAub+9Fc3j~>rH zHc42`K6*U+=t)@3K6*U+xJkll_7T>kTQOTWjM+$AclzujK9zL8XPcCwW*pS8cl&!K)Y#+M^|KRaf4e zyt+Yob%XNih7hlAi1}U}lwGcP)jx&=nYKZgwm~rspMO%qFco4CaoL!*ftmI!SGi$@ zY4(c*qxfpmn8)8LI5Ikh8LVBKe{}C7J&!#0@a8t}v3-Ynjy&|pfqh4M9(i=%u9mT( zBX*LjWwU=|^qKbIE}v=WVtZuFg=rg@X-&I*reREN5hCLL%?TQYWl4xufjU?t6POCxC#k`#&}q<~sR5fBjvsv@GI zwxWQFw16Twp!iVHr&0vpLm%&1pT3_wACmv~?X}Oo_uT9oa@(T(g_G=i)>(U6d+l}h z`Sx)3S*pFuRe>L-%`%h3wbpwCm^RD6v}O|+X|p^YOq=C{X`Hl;!8G72A51Io!?c1V zFb%;pOxt7%SC|B*75HFUK@yl&U|`x-o0<=%6&RSd&3gM_S^@Cb*_e&*Fy5#amfnMD z1qP<=(B5GvTEjG`VHiw9sglDqXv)GgO&ge|X#>+VZDE?uA`Ye%B!g)MDZwFw$!M51Dw6?BbBjJInC2=_ zsxZx!#+wSJxfJlmf@v-Zlfg7s*py&efe)q?_+VN=5|~zCU|O$ja(ytZAP^7J3M@=3 z@WC|P{~D$Z=tTI48wsWr7?`%#WQk^-&G=iRX-5y!pm1FQFVqT5gNmurRA5?xfob77 zfoZ5yCgH)f0t3^EthW!Q6&RRSX1#qdt-!#vD(mfoX$1zRMT|FK8}lan!O#|%Q&pg{ zQjJ~5@#*n{i4%5U{@VXE*JH@fB|b3poH8(xeb!|JLkibn0$t>xN9yKV34IW-z(Bx7 z*4qaGf$1~^Txz|25U{{Nz*_BHt_uASu)sjTM(aHS1S~KRaFYp)w5cl(0v7lnAlK-{ zARw@t4+0kYAz)z=2#8=B0&X#dD@pnqj%0fU*8wjXr0|7N{A)wA84gwY? zgMfu8K|r0%=pkUC69Vc)ECeicK|lsMCJ2a}j~)WLm6ZSiDfjCD0Z|_s0`^*y(GYM{ zCIblQ7JXC@&{d#RA)qUbHx&eQDd3F-0bLR%gMhBEDM7$O9|SD)LBPT!5U|idzyaIj z`XFGT4+0ii2w3QYfVlrP0@&pP2n2+R zsnS#+V4;D4MU4UhQKwA8gMftw0+v~C9|SBk5U|R6`ygPUfq)U~?Sp`Y1_I7E-oSp$ zn-DM_rWG2Pw#cU9gK32ZrY*JJK9~mFrD0mF_4dKELIcwpwRgEH^24-31JhPn?-5{H zp@C^zOkkwV@^~<<&iQwKA2WyVA>Ar?SpAW2BvixZ`2D*@4>Vp1Jio7cNmJ+Fb!%L2GdZg_|G)x&qx5SRuPQ>CfEv?2r3%2o5*x)_VJ38gQ3}X^qy~2h)lSOk1VB z%T=)-rWF~Ow#Iso0Mm*LOxtP#BW;$)gK0%Rn8r6*V=xW)$_LYm{V=UK2~0yU4b!%n z!j&X}X~jO6R-6Q;6&skg!=~ngX~hPnby;s8Oe;1pt=D*?URZh$rWG5QHlV%3P_%|= zP{S~ohEgSmY0#8~X__`LP16RZY1+axokbi>D^3Q}ic^AVI+@YKv|=Yr(}`G^R_ual z4022`4LKh@OmizM0j5#z*8!%XJ~T|*ZB0hQv{9K1V47R>QNc7z`8dOY`rUKK74NR*#U0@pOlu39nt=Pb{ zi1qftv|La+Q2kT8kKZ|h{Vo

    A6P6gU~#GS_JKucNx#clYrFv-nRg;sEHPlQ(Wc@9izNmuuCm@fun6?0 z!QvY0?E{M?1}rvf?{Zb@2a6>JEN-&iBY?#c0~R|>V5H6Rcwn)_2Nt>OTnsD%<@vy3 zsUIwsCIO2GrorM4Q@FAuV6oH(7E6@_ zni5#l$&4N>mO8O#&864OqO&Hn~2q zSn30dr4}rf`oJRYe~nf4>O}a68wo6y8nF0LlO>vUHsf!B#iIv{P`Ivum)8qego>$B zg2mCov{D1p<~IvWL!B}S52lqGn6}7z`(RqBfoV&vw-2V38kkmVy?rpP)WEbx;|J$TCknJTKDRZ62MMA49~ z%M`Rc31lnNknKUl;&wu18nW^I^|C;YI$w1|tcUbfu3D%Tsc|N!@hYPJh&bYxr>?-? z1e5PXS;u7a^^F9U8F07Tdi%g#nE`i~8gJAlb>@M)G6U`gwRadoYH$bT4Fh*5e{ygK z{aSFRX#?&wZNQzTEx6NJ#DTlAWZ%fji`U z^x)2|tORgJxnBoxhx*X=c$GC74emx|G5~jO(MJXDTm?!M+_}4_%Z|T_L(fvtg{&xaJM{gYCyF`&+qIGcSPH}TKl5mH4WGUJlu&- z^8JId1n}yg!kWEW>>&|E_0cNaI7{I=`CVpMRrq!F9 zkV17B+jT?e{`S7k-hs}Z?q&QOY}_W^r8+>oXv=ibP7Uvpjdd^V8+d1n*{S4Mwk;_$ zP;c5sfqGCl6)aG1g=$DPBDZNrw5P8V8^DK~);03G#sfQ|VeJ2n!McQ!VDwIEvQ)n| zx=&|RhMLu&-UEbX1`yt9y?ubN%mBi>t+x*lmKi{JkM;He!ZHI0_Zx2jL>4j;5SAH0 z_!XOq4-l3aK=^?5_5s2&0|+0q-Wu_yfi2~qtMTF??M=J)?Lh|ssP~}zmhmnh2@sYU zK=`yx%LfR{e1MQ&ftat30Ao=Mpf?{NERO-g%dod~xdw#T!@c$)H4#^70D`flDD;$83aIRbf!VA?{4fV=347}XH!16#m3@i^226AU_i5Cw8%gq?yVVj!|29_Hb z_=5HJ!N76@179@WsKa;|SZ-k8OWHdOku?m2%7(!}C@MJ&gjOvK)U<(tnl>;{(-sEm zEaG4wRN&rUxjZEpsFN8z3@mrTK%Iz%fvC9QFpxox2?iqPqlbZRWhKBs%KbXPK-7nZ zfk%wVR0O6BeI?j9Dw6>Wbc;SJ80accsxZ)%#+wQTx)kunf`Kjxlfgh&*py&kxeo@G z`(R*s5*S!+VBnu^lk0r3|5Pw=L(|5y)@;I;T>fq#u-t&a!Oa2!q3#$6T&_+{1_C#BxAyk$=otvNZXbyD z#o%A81P1(-o6*3Rbp~aqZ6Ek6H{kCT>+J)7e=!C)tXEx1X(Qk!SJ&3NW)<1M3slZZ%dL+6?TC2A2E4A3ygM1Ajnj zKJZuJ2Y(el@K@mke~6+-10$xOl}W%~g%A8yXz<7HhY{da_`qL<5ByaG;=x~q0e_2Z zZa(l=VZh%~>+J)76$bp(8t-yH_^UABuTgu4A(jSzP}wl>hf*g8f6%H0f0{PnPtykc zY1)E6okbk@g9_Z>58whY>-Xy1G!;;j^=EBBrWq33`SRU_{wkc{PbXr* zA1ZD*_+yY`0)NQ)=)s>`Sqb2ea=#AX5A~tJ-zsA=m6+84_#2hU0Q|W{9~Jm>6)08k z=St&E1^!$Lcw>P-mxRf{pDS!i;IG05{wjRnuObQft1#eijcsy$;IG05{wgf^tMGw8 z-2WQ4C zGq`8qeh&9M+`q#867E-UzlM7j?l9bQaKC~37q}PTehbGm{~hNS;eH4AA8`K*_Y&NH z!u=QAAK;F_{SofJ;r;~oXSn}?`+smR!!ez|;yeWRe{iqB{SEF_I6zbF|982E2*oQ* zzv-ECq~C;=icnkz&l^;2vVN24A7RuSBj#a#LNClu=*igmu+CG3={#*cSGqsQReC0+ zy6aJ4I#1iIx3BY5VLDG8*4x*4sxY0W9oE~|d8#m-r!M1-&J^=b963h=t~*b?HWgpz zsltq$4_I$s=Lx+bJv6@Ccvt#6PZg%~bgA|(SC#(G6S`Wu^E7C@%SY-wRhW_U8%7zE76TI?-YVqLBpk=`M5h3`0}sdJ+J<^z=LdI-hk1C%QnE#!+9 z8b!2BMjPXcHf9vjo=}LE?u(W_ifGp`T81xL#wenl!DyMjXqlskraw~}uOm-auXT=# z$ggT<1jneLQtNuyfvxm)ZYy=?_SZ@}x0SYYo37r5keu1TW5U*WdT!MUnRjVhtFtJl=6 zLo_bOsni|p`7muR)2R$hP*>TO;d<(p@zG+phG_6{Ss?rP%(8`jmvJ(9eujeF2`wKZ+J+L|_9ZB5&*w$381tBneA zceN{1>T2s`M&H#&Kaqt(15f4023eZRC9PU2V6r61v)y`*rAQ zqdv4nWm=Qb%WXzwGU#f%MITjH+f|@cyV|Za-c(&}mjd2cU2T_y$-3IEuqk!5D}7z< zN?%vIGD%mvG9b%sa!i|A74UVnD}7zeOG$5&~3e0N%JUyrZS^!V=ZijCYm4$5&~3d=F~xa$r&4S}F7o zb&v0m@kXbPBD$x`Dou~?MJ8~M4bd~P$ z5n)#aLT35=Ln;SXW6TOFSzKQgh%K)F20qsyJ;JB8bYV4n)ICDvH;V4hupS|V8%4BX zJwlXX6w!wD2&)1|)g!D59954HsvU)paUDD9HNRF*(DRRrIIKrlm)aW2)M4f8gH@S6*kS7(H{E#vwj_P97mO`^KusF@ zNT3lW=5?q*EB6Pki`4XBM_}qanNTc&EsS(T-hR(Y}_mWFcyq zuS-+K?v?J{V6-BF{Lo)Zf*lZGZY)r8{4rNj(NHBEi?C9E@H#k7)m^0OgUtbSk?Vs4 z3IUeH01VX23oSM_sbAGsHc}aBvf`uE#GTc-(0DbjRU3KlzP0cM@VRQO-)K6^=@Y~$_ zZF%`NcRIe9TV;C2FPch29rGUVN>cESNVFzRlc5aRg#`DdcrD#@$n<( zL3oq$^^B{0J>x3dGp>s38PCLHS$f8Q)`<{gYLM+*fw&nDSLxDbwh)qs)h|`?Kj9>_ zZX5otUD|)zN$9^*m-PnPt?sg3+Dgluh1+7%kZj|Frr!N<9qT=EdG{u4<5NVQeGbY% zwKfa?Za)YX_xz3D#%EOXo-5AS^qTXYRi+oL+N2j;70~_ICzZ^5;!@8!hOD>l$3Cgb z^o&H6=>=z6Z#^aXLsf3PD`dH+_0}EKAF2xDEj#_>8E^E8UA^Ec(+i$tQ_<5NPhw(* zvm#Zd7d*{)&s4gT{G^gaqv+P^UU0sR?R$m1%JhQ6+PfSTYrN;0#HANpWW3SQP2LNx z(!F3zXPUrB+v^4USC~o{rA94Q=K;>L5a^QndckvK#b*}S3_M$p7cemUIbA3?})EBkdA2s5O8nIDXm}+#{)~W||$yehl zpw_9W6DCYJ=Y;2L!z!qPL-SN4(m#YB+pC%$oXBnlSiwU$*VQZHd{Ew9l=cwje5x^8 zknj7;)cUIqWT|u2Sz3Qn5Gvaj<|=iSnqb0BR9))N2q%J`;JcdSyPE8~nqsaVQemV& z6}xQ7-%Onoe`kU-8?Ml#P1~0m%|VQa`WXIBR5j{nxVN%CggM8+lM_Fam6rXPEdI^L zc|!KzvX+hg@7zh_PsMU^{yh@d4TUMVtc+~Lhw?}VgUC(6mIEp)D}dBPs+jyh6_glM z*OSgFhZ2M8X40V&KypK;&CXFpL3J1Tsu+{9W7OwK2j&2b2T^UHGXqfjOX^8AUImYo zGP$NiRl@b80(g@$^Gf}D5Ob~*)S*BvI0w@* z;SVW~OvJBJ1zc>8)}uguIgM#6HQ@;PZwGHO-pI>PUr>Qs<}t1K+Q8u7)~1EjIB*}& z+Y(p|kr|f9OFGqD9rr$rDnM=Kn4}*TN-afts$s+Wbr^jOZ5 zwMdOc!sAsP&XX{ZwM+FQ*~_%z;uY~lhay5y#4DZ0qKJU{2^3HT6<&|?mmqwiBEASk zFpo(k*9Jan711$HD?+q6q9Sr&8a$S&T%}g*>go#jcD4`f>WePb9^=(2Xf|hrf`2JV z!FP21pE`OA2&y0Jf@i6Jg>bHde+dO=9(kqL1|F~lUpiSAyi}J7Kglg1%N88wVizAt zsVA%DD0S8dr9P0P)E#?|rPTRq8*Z6mw3@d<_N(C%tNQ>-%{+3-t_?hGOMNHw0K4Z6 zs*mKQ&a-wu0d|jNS1y~M4qHz%HlH_w67F>K&_ zsryu57DI(9uGPVF^n1bN@IY&gU*5PUsQ)^d3#ZWN>O3atXDID{xSaQ=EN8roZaMEa zat=D=oB^r$Hgg`%BIle@$@xIaa#A+R3KeKQ$4ti4=L1I0R~&M7ATA#nF*%u<=reN! zef~6MIVm6IWJI?AMVQoa8qWjPsva9s4Z|IMyF>XXC$W}WU(sM-7ChCe*+;9d;c|AQEGOlooNVRXa&{OwzjYkt{94NP zNBJlxTMxIKUo-VyJ7>5)8J9H@YsWLdVY`!!c9VS}cRT*|l;xy+l#_EaZaKehdU0yWYQPyvRAGiIOTMkVJ%Da*-RDChX3az13_ zyvHHu(c0(1l;xy+l#?29>+_(Iv#ff!KFbl;Z=cIXrO)$IZa*m>nqPvhp&O<6N3!dtu4mlau-Oi8P zEP&KXJN z{I-!(EgY`Tqm}cql;xy+l#^rLZhbyxrL`JY_j4 zALYcCLXzn7aU#Q+mPF3)8acZb z9Y1}3FJ(C?ALR@umGgT>&KHlPoZnAbPRd6)XC;;M`$o==#m7&dKS)_l%11d1lFIo5 zBj@4cDCd(Y%SrhtXJJw~pEPoAU2?Sg96qJ>l#w%jZjV!1w|(eXhWCM{@Cc|uc`9*s z&Fnmd;eF=u49b%8syDZ{2pkOW6XNP4`5eatjkq|a1>C+e+8ym{9f<067F@sU&G76( z-*y5<8XmkbGwmhJFLNgJDx~~LGqbtFps;%}s$UO2rt%!+&Q@DkF__tG)-#*@J&4uJ z7)wU!lsYZQjf(u^|7j>hdLUhW75Mj0!5sB32O z&Y1b7U;fXI^>=+{&n+)LLewpDtHWoxChEMI|Ho9AC+OnTK%idrVg9mP^?>u}BW4(Ghfc$baWSsCjSpoIX~IZ(6XsVp;T%RDbr{e*19V9k8`2xU4e-T>D&ZJ* zJwnl!@<}d~ryIHN)|_6X+yfb+kg*>tUBW2cY@D<4SEg3u`U0(mi*+hXaNUV`r3f3w z9{tpYq&y4Pr|OtXK`G>a4u*WjV~S}k&UuKj2zxbuOwB>4xd06_FkqgC2gnYr$5!=y zySlN5a&&vN?V`S@T8`xr57DGlEq}~W2Z=askp^xMk8@1Ri%-A=Aj?#y$NDYe2%Qb{ z{R6saW7H`KzCWO+SCB$g;AF@fQXf#i#v?5ZPJuobsrT#iVH4s&V7AT``$!C(8V;)e z!w6v)o`QqG=~(of4uPg;W~meHg5dpu<;XgqvzQ4qhYuX!kJJVD3hV{#z7nS&MR5e(+&43QNwv};E8W05a29D_gBUW_^rcmxU6B9)<`(?V2{ z7six4}`{qVd=n!Lf@k#Lpg_8d96;Hl86GLjlSx zyJ6FYHJ0s_%X{5|Z%@S685f3xv;s*{fjm=co>_N19|$~*-%}wG>P)X^pvvi!EJkYO zrakf)x!ex~wWVNnzFs1$}??(=L3PqP~b*gV7V7Y z8#8vNja1+qq|9Svn?M0$_kwq!?*O^T(sxOv=Cq|1`XC%n`Zyudo^A~B&<5i2mc;uI>a~qGQ_cxj|9yKumSL4CI z5iR@#0I@=SzF9q^`ILtK&*G2%C#Vbcbw8df`LVc=)i!p22gHD@j85&A~#pXAnLY2xOPOeoj57!#@ihGaO4y|4Z=4 zbbbyiXFPrjhvzZSDZ};QkJr>KuP;)2^!ZBYnAh*aAN{FoUSEShUQ_41z7BT{uMY&4 z#hQt*ZuWVT+BOaJSlyl_H=FH9Kvcmh<0_Gfy7JN>EICvK&r}W1EHck58qX{W&r}J| z6rE>^%riyhdAOMzTTZXPnH&gw2fAs}CMHeNu}jP+zz$#>+ z4g}^vXpV7s&(y&wFz(7hz78ih`7oTfLf_=wxMf(t4BTY9HT6#1Y~*y~X5^VSA;~8y`Lpd3_+T1~IrE)hn?^ z5qK64Z{(nfqeT=)ot}69d0_K(Lln1afEC07;{ZC46L7B9Z8OhYKFsqtG%!3*L;(!`q8q^yx7+aEXy)y|PjF65W9N8$BI90vl|VIC?Qlm|Pge)<56NDDhX(^JH2 zWryna)bF*1s{uu5Q9Ie5$E?S8G?-CE>P9!n^vTeFV(3J;E{Gcp#-J7D|W|w1RT|W>!6qat>fxxxUG3QBNA9-ly zJVqf;5F6X=50s$gQfR-P1;`i&^|1{k#Ws&;wrxBg;0q2JywN=4NEXsl{pb|wJrq2} zj(iiH^rMXZfz1$EaOgN)+aCblq=>|yJQHv7d>HtX=Vm?fQGn-q2ErF;9?!HD`cq(@ z4+P$aB1+u|iaWNHy&|PnM7$C|&Wx0Zp`U>MRY(g-iiXZJh3A>(%<}>K20~IlOV~h% z)D$%I`vdEA1@n%Xh?NqVI>IDSj7XHq1bIy@@R|wpnrB{<&ufO`_3(@aB_oc6DhZKdLOe4e zo|zEO@d=rS+*qBEU`^^U4H^{NBXuCK5ABg)O|cj+OtLJPWpeF$76U!%V|1-c7izl} z=$6}tx&|3y(wE|CFVd4r91vA%a60he6m|oX0OeRx0=ijTQjVky=uVnctee4mPr4bT z*fDnBjqHfThe&|&x;kH5w?}a|9;e<4@djZi-(T>k1A)DG9?0`aEXeb*<7gvy%Q2D_ ze}5)g5MY%)Mt&a1v+2ud4=~MQ4yME#`XS7LO$v1Bn>$0Pv+FjjTfJ^2eby<}+!bx@ z$2S01H8q@}zXpiU8TJi?8#x7Kz7NQkjW`n(UJ`EK(bI#_t>F&(uUo$fUtZL)dRzMk z=FFLc<1Z741&ZhFgCabK5`s} zeD64Ef+|@uLH)IEf(ovfpt4V&peC-Hpk{2Cpb9omP!;D+P&MaGP)ph-sQT>_)amb- zpf+?*Q0MkdP;D1+T#Vf?qWKPBc+yA*$>Zfh^~z`e_~W&0&8M|!eud_9s2_WfYtA6T zct>%NO8q{%l0o%wh>O9v(CSJZ`YQdqR$YaLdxf5TisE6_rzy_%)L?L!f1^19q3X~t z)m_1~u5`%i^$8er3tqtFFP{#_dTa?!JBlP$G;?@l3+B3-Fc)`p$H5sa!%OO~>Q4#_ zxRFRTX3warR*uFW)j{KW>v&58qJdA~;hcrLomRodXG?HP@R}2szVf%ro;}SwE4-?} zcW&Qpp#Oz=@56OaUu$d1J`YWmT$7(aw#8m^0_bxY@3rAMwDY;Vm_O(A@+Y%Rk@#GY z`g~^WngBL`d@MX)xw{b8UU)uQZa{t^6Q8pspUaNi8sWhHv@Cd&*#O$bBZ-SJi4v{FFnOsX&i_34bDz&W)RN|9Qo=tx#=-jO&%}u z^|w-$sx>^emx(;Ko{2oR?1?;fAQE|ez$fzfv`ggisgcNIOPBF# zBS-U&_;`FxA~7y?m5*nXK8y~y{6CRL4JPt9+>prQ;6@^kYgrO`d>SV5_;gI~;#6T{JN5_w$am&jumAd$yu|9Bp^aNw~OudB+24g@)G zSI^t4Ag*4pS82HVt-T82iaARvV{paKyvbEMt~ih-R~fi^%7)Cu6_?zIUly*`*^t@T zdZF1~jm6bwdzFK$jrJ-RSDWnBI9#2DD{g_w*I3RnspkQ^u=XUc3F=JT-`>?kbql&` z-qi_+bDq7LjNx`#{zGVQxLo=yq;n>IXX=!Yk@}?iiS{po#sat+{&yXwkN9^MAL?Nz)q{N&mO^*!Xq(gn0M+~g#Hwr8i7DIHxWwh!09 zHR`QZF!cBFwSSwW8p2@7-u(gg3hP7L@eP4=wE7C0+Dg2Dx&eXKn0WXo!jLbX?oCR( zOgs%3uWp^h4CeuseRH~_19R|I^}bd~X^d9ZZ8jz4Pboc?lHOK&pmU(V zzot4Ok<)eLdu-$}{>T~5$dMX}oS`EhvXRsMkuzP9=T*;_$eB9w(>8K~=CWLo=SNIr zJc?1#IBvY8HVlKw^yjQMi(y4eR@plAi#jVVW=aS>HkOsHBy^yRYRBq`e>M@vBu31M zMbxVGdSjAnj*gt!F58;{e)wg~jYZZ*+}7DG@p5&%JQEMg7X0zX#o}pcv1MkzLg&9R`Zi?BaS-g-q%-AsLC(V`&v=TG*pR;8UQy|T z_9|ZK*pdvZouMJfY52IJ%Sf|wO)+|WeTKv>j3tbkfDd6r<@+?}U)3(nS8 zZW+jJJrtU*7J{Ftb9>t678(kxsd*;d-W{!7t=;EG`{p(ff5h_E&9Rg>7KTlR$t}y~ zmW|xb)w!{3V|8w-Lz)8^qb(b;Q7rvJ6@IO<&6&%Gc?ca0u`SPcHWm}ox9~0Y zYNFbwZn9UNHHnJ6n>OUL7(60TglF)Zj{U#*#u+W9Q5S(@;DMp?5iBN4&81rUqT5Za zg^978mg0q@h48CDF$)=kY_3(m&?1z#>R~Z+_ ziGhs4J#?+w03D^PT4a@p!EAis&1RN6R53z%VVwY{~3WXN+dwWGa z{fE7xo@gu*k9zWSk*W3MX)P0yx2U;BB92MK^ppv^fu7Wn(N7uA5?oW`5@)x5dAjw zqP>c@Cr&cQ?1_`mF?-6wJrJ`e4qC_TDNF0g(_xlRPaL_4*;5v3DrQevXqRL5#BI7_ zddl+YDa)s)EUTw1-`$jDOP^&+&z|XC^$k;A_I9?Z-`T79(i11eO3$Zdtn_RdW2NW4 zA1giY(U=9%5@S}9?JGS;tzxCm_LZLR0K`h4?JIq@uk_ir^x3eI&FXq%3E6n$d|2IJ zuV^Kg+N*dg$+mjR)_USS$}tv9*l5bTTgU43x$!@3e5_9Y3VX%$KWMMw(;sWoA8YG@ z<28GsMM*11->t-@Oqnwgu~sd|R}Wk}9IFSe9*xyQj;|iLye(D_Ilg+x@zq0)uO4!I z^}vzCSUu$U>LJHh4>`6TxcA;>b*0foj@Hv2dqq7B+N*dyxjsGR`t+3R(^IZbPq{ul<@)rL>(f)NPfxi%J#l;X^GE~a*=*n?$u>Swu*9EY<4>{ir}*Me zvGJ$a_#9J|_)~3suFIGFr~2YgwehFg_#7ja_|t6sX*T{eUwqC;NcpGP_#97`_|t9t z={Ej!U;ODd{&X9keN~A+!^WRs;O^Ue&^qI;G6kMl-h$PqujPu?sCufV}8bnuECJd9fm%cI1>D|PV79K3P|ufoBr zbnvPiyx9)k90zZ%gBNk|svW!<2XCH(H{Zcq;NUHE@J?~?7CCra!<|^?OB}pY9lWIu z-ZBSoxr29F0*}vuFnDqwgzbG0w)a8UcOQi9eGseDTX{e7?XelCUk1_~kZ!xs6}$i(hWzm)rPk zHzaNHL9nSNacpXte;*D)WCF1Y{r{H{fc zCnT(csB`e@9lQnyuhGG4a`09-cq<*eRSw>22k&$T?+gcTjf1z=!CU9xt#|O69lSFg zybTWCMh9<`gLjsLx7oov+riu7;GN^(o$KJe&B5F1;Jw|!JI}#uN#OBLqWy`z)9Qqx ztqDa76N+{v6s<`p+K^DR9HD40LeWZuqHPF8ix7%-AQWp~DAu`9tZAWGze2HAg<@R_ z#Tpcf^(GW+ODNWnP^=lDSRX>M7KEbig`&oVqMn7Kc7>u&g`y^J#k66gI)uTpE{x9~ z%OBf;ZAdY(9cXp%+8n%g2d~4yi#mAQ9lY}$yd4f+r-Szn2k!z0ugk&P>ELxccs&kY zuY-4?gV*Qa^*eY24&E*Y?;;29Vh3-xgLjF8_f7}zT@K!*4&J*RyvrQC%M*BP2WWp{ z+q62NXlp{z!i1t-2}NrXiZ&z^Ek`KYi%_%@p=cXI(ISMR9SFtR7m9T*6l+>2)~`^k zRiRjyLa_#gV!a8)+7gO&Bou2#DAtEitOcQ{d!eXtp{Qq}s9m9`Q=zEI9lRSIybm~d zH#vAWJ9xJ^cpr4|ZgucJ2)~`^kRiRjy zLa_#gV!a8)+7gO&Bou2#DAtEitOcQ{d!eXtp{Qq}s9m9`Q=zEIM7KEbig`&oVqMn7Kc7>u&g`y^JJFfkLLr5{P9eCKm zd&I$e)WQ3fgZFI*?=c7OI}YCC4&DTtickq7T;63T!{m{Ytk%RY?gZE%g0+`;>WgZHlv-Y*@zUpaWccJQ7};ISQ`{fTYU>V%@L z2}KJNigqOwtw|`_kWjQ7p=d8c(Mp7(Z3sn+5Q=sn6l-57*11ruX`xuZLa|nbVqFTw z8Wf84CKPK+DAtistQnzLA40Jfgre?+qQ-@yo`s@zg`!S{q9%`TJ8&2&Cbk35Ie5Qu z@Sb<@UU2Y!>)`#HgZJ+a-ir?2?;O0}J9z)$;JxJF{ilQXUk=_M9K0hA-X9&j|90^H zE_Jv}d3&oliiuEfLYgH)LrBJLv zp;&K1v9^R_9SOyn5sLL86l*~!>Ru>nTqx>UC~8+I>QpFd^7ys`3R@;5wgUkNFX-T< zId~xlZ;XSN?%-uOc$p4fmV=k=;Ei?gavZ!|2XCB%H{QX^bMPiOcoQAG6CAur4&G!3 zZ;FFA)xn$Q;7xb%W;l2=9lU%8??eahBnR*01RmP~+Mn1qtxhP~nozVbp=eh^(VB#! z4GBfd5sLOA6s<%k+J;cH2%%^PLb3LRVx0@cnih)nD->&0DAuJ=tU;kzZ$h!Qgkl{D z#hMX{^&u2%K`828C~90N>RBjiS19UKC~ETfwgX|LnAi@?a_|Zqyg~=B$iXXi@JbxK zQU|Zh!7F$0Djd8@2aj7vC6;%#gEz;)o9p0396avPn3zY6gE!B?oA2N)aPSs7c&9jc ziyXYg4&D+6?^FkGse`x7!CUU&otD63J3#vr+oshCMOzb!7A6$!N+?>BP_!YTXgNaB zUWB5R2u0fviWVUh?La8jzEG@lp;*&Gv3`YOtqR4u6pA${6zfeW)|ODLBcWI`La{!C zVl4-n$*V z%N)GR6L@R~Xn$hcv^t?^YeLb&grZ#uMQaj@HY5}+M=08hP_z=EXd6P&B7~wH2*uhL zighj&Yg#DQuTZR2p;(tfu?B@=y$QwI5{h*s6l+E()`w861)->Wp{Q}8sAr+5U7@H` zp{U8@+YSsO#l&`CkAruGgLkEaca?+p9tZEe4&M75yuA+I)ehb@4&Jp6-gOS%^$y+* z4&M76yc-?74>))?Ie0fac(*usA9V0;b?`pq;N9lneb~Xf-NE~agZEJf?_&<$#~r*o z5_oI}Xn$hcv^t?^YeLb&grZ#uMQaj@HY5}+M=08hP_z=EXd6P&B7~wH2*uhLighj& zYg#DQuTZR2p;(tfu?B@=y$QwI5{h*s6l+E()`w861)->Wp{Q}8sAr+5U7@H`p{U8@ z+YanQiiz#OCmg&_I(VOQ@a}Z*KJDP$<=}nB!MoeR`>ccaIS23a4&FTu-WMFaFFJT% za`5&$cn2K3FFSbmI(T1k@V@Hc-RI!l@8CV);C;=(`?`bo4F~T*2k)B>-a`)F!2}-L z0otF~Hmy!5+L}RVdb_P^>|rSZ_kHwuE9G3B{TbiuEBBYe6XLUMOl@DC$`#YF8-gR48il__hOw zkYZvx@UVmTh=cd2gZC{5@7oUEV-DVT9K6RJyeAyI?>czjbMU_J;QheCd(y%Cp@a7$ z2k$8d@5c__zc_eLJ9s~F@P6vx{mj98#=-l!gZB#u?_V9fUpjcda`1lb;60nbV>>|m z6WgZM2}N5IiWVjm?Mf(GlTfrFp=dcm(O!h2l?X-K5Q-Kd6zxDL*1k}zbD>z%La}~@ zVyz0rx)h2vC=}~WDAtxxtRtaVGeWUGgkmiSMcoTUjSEFR3q|b;MV$&oO&-5?;1Ru< zI`$VMiox28S@^V|p8ATrYGPcd3!jNahCck)yfA*qZ@i zCI{xKdVWunX=Y+e?9XGD2GFwu*Z}P%^*G+|3LZIxxM7ufggXKS;WDrh0CsvfayMvx z4w&x~BF+)+kC1p^7b_hPTR|aZ3EzwJmqWs5T6pOK@{c{j_iGPg?}tnkstbVL6R5@J zyH^J4@Ou!9JXj&=@1X$rnh1U}@!?>RDenk(N1$}rq)Od|-6iH>?>4@v=Y2A`1bg{S zM2rmVt-#~ZQu$mI+NQ}lUYcQ#X z^Y9PN2Cy0NMEr%IETJ-x9XZ^Zg=c9SmOi*uo=keaAJ~NPfn|f}Kjmko`@h=@;1yEzXZLz&`W|n_@?EEmd&WBFTcFdHV zW`=a|nvKwzQe$!3F$a)~c*+*dG>AkV-t-y9;}$US;kX?Pk9VpIkshy@>?P_4_~jMT zy+l1}u9)H_sCn^YT9?2nEFc`GK8JHN&hj^caq+7n6oPwUr=`WrD87yth*V7bt>ZXp zU@g9Z-GL8FcHw*0e6uyx17EVnM<%3oOZ zoO^H{?J)!TXVc3awkX4B;&Df#pYwLZK{2QbUh>vuL&Nl_Pd@QpMVh?rn0^i%burwN}u++BwaEqA$@0>|BExMK`=ec{e6+RsBjk)?qtIFVVq~d6~Gn3(IkrD zO5jT2_+;hV_7!k^>z!||^O?ps$QeI^Gi{c3!@8Rf$DJ$qB<0Q&+=+raPjIIR?kvHb zB)D?~cZy*ATAb_P>fsvT8sVDYR=}-tm{PuM1+SwgmwmgjQSBHDL z!`L4dK1$sK-zi98IZ|B`tgl@fq^(K3=_-t)K}YQ`D_Fl|eL?x0jnS@X`+!b&qV^X? zXHWN>hMwL_?t?uxtZzQ2rM;)ENYx^>`r1`UQe*~lNPmb67 z#xvK1&39|V+k5)L+=(1{rl9{bmzv( zTDNPUXGLe%K(sHsqBGjnv1HkN9j@Rt!&O(0RL^15@U5Z2Vf8!{^(-Hgbk{Yjit>+C z-;q()w^z^JJ*9;~+TMLNoIgp|`*6P4!*D+Du7&oVjio;|3BP05{rGZ*0@_c0zdQr~ zTSJH55PE#Ac51kOUT=MlUeBoZ5%t`QNA9iMKpV$l{@^$aH%*0CM!TbZ`0iJWx3RF- zFwsAmomMXxeY?bTPEg?r9^uBOHBFnE4Zos~LUxdDW36b@N6Q{xGtw zz*p@DIxmW{#hSCRH`?CW+NE2svfW*4@R2pr-UEu^^F4hv*KLHlR<2*)7;dcFR2Q$f z`+$qKcj6(@)zjJ$?&pWayW69F9U>{{Ef3GNgolsX5Uj7=1Z^kRKko?O7{%GP}7C^0EHoZRGDOH@+O=dI(s_Da}ZFhy1X|f1LbNwch)p{kysb ze9tk|$^5gzE-tr%Y&T72-!n7kDyLRrpB;3%nX3fTM|E~5O;nse9&#Uv`-w^FpU9IiW z@Yy?BYX_DrD=6y-?kV3}P!$eM-x=)=Osi9QYkGPvs8eHitFE(m^mIk5!s#t(YXTQ+ zjJEc*s~zk6I--3`mZ{xc^_Ohuxwt=ArM^DUzN4YFe=xda*^1V#{=wZ0h`o!uQh7w?#}apz#gMs&ui8V7qW?q0HN zcFm!z$4cu?O24pqNpt3fkEFM*ypWxoJ=fIcY{=u+DGptF`urvNb!!j3Z_Q;_WuW78 z_?#9X@2k$t$;zEFGf?pD$<>c%Ul&D7*4sVM+V*5e#zSXj&I!~$+8FKU(>mkfXz<%- zKFA(QB;%|H2e-CNZ|>`9Z_LDp8|v~`cVE;qctNyfMPLesB#*$%Uc$5BX`J^5#N=j- zQR;Ii${+w(D(5d9=(7$Dp$Dap`#=Zip$$~dA<)`0<)1vnV9Ll8FhbI#!3P2ygdoMv zti=$Zorh$eU9sQ=i5qZ{adXHyDN!KIl-w&2nnONp;1y^Pn87YOW! zHpWhz60Bup8BDNc5|(Iz!}5$F2h~djU#0auc48zrh%40NHk@oY(mWW)AD`a`%R>rY z{6;--08zFv{2{oPNtk1J{GcA{pK9WB*#Dji`hbL1a-@D$e^OTe@U#4Z_mFJ&$&P9I&V`guE zW(DT@iU9YwV$g28`K!Q(f*UY+xDeN^=u&ORAYz+(Hc`%0u3!Cb0Jyqf55M@qQBxd) z`cuqOe$X6~WTU6{Wa@7lH*0!Yh-Z%bg%Fp8e1Lp}=fP5WX&xeDFbjq&e5L~{!ki_J zxbWnk1lEtp2hB0qBcu@~j8h(J#gidI+VDBDMtT}fI}BY!mI)sQeYc@GKK!_$CxU(k zv?u=&^5f+3_&mL6=mOA3 z49&7n<3kncleL93WYabiNAHfKZ;Yewj-wC7(HwnaI@H6FIDRHH>B$_XR*^3cZ8LGS zXOm?n3}uTLn({9)H09qG7iJ%66RhORYymSsy^ zm|oCcS@x3ekpD)*r~J1WnzHRPH03`O7Y2aGmk!gM0ahmYkcYNWW@w&j4NY5Wj^pnz zG~@1$x<+YHU}?oAAD%5t{}L){+I zbY6&aWX~A>IMA7V48_Y}(w{~?=rB&Tjxf~KHWP;F@7A=Wf1}|u{X>qpl>bL24C$90 zVVHh67eA1J=`Yf>q~C1#On;Dcy!`RBDa(x}d(nIH^L zwK~JNXKVa(7Wpnhm}V26Hn~^AgNogQEbomb4Cx2r!XGv?@2M9P;~F`!TE^;RnxWZF zMhvZO)zCDr9i$yP*$uvTf9(U!HUfPIP#AC4$6+}so|BCy>%jqUY`_~D@J0rd`olw| zk==ScGI88wrwZSt_~kKvF)R~fH<`*C{dr2Agt z>EAi<;ml-yFatB6GINW0Jj70AUQNd9UE?>@%3-91dCAy(rVJsVOD}VpuKBdMc;UGD zO!Vnrdp?c%ov7!zHn6{s5fya!>(*j2F&3BU-v{mKc~A8ITSTTL<4X+9@QL#|!q@Yk z$n)0FAbxQt=wCViJ?F)|aXD{(Ecv{S%-^``%ah+%UuIBur22}BmvVjG2P7}^&oX$N zIDR^OoG-B+MB%K5L6Errh=G0e@b{mG-qqb+mw!0CwYz%$!#nHFJhObL;kmkuo1ULh zTAO?D&Xx@s=lr@R=bUvLit<}F^t5cavgz_!g@+m!t*l=+xV5fvXl?j8I80x3uPwMM zH*M&SQ!e>zZFXSWe_q`hY*h`X{vqS!p=*Y&`Q!%{zjDpK{F4{`amFG{_Lo)nT{A1c zvHHVli+bAbIOUF0+QO|51P1Rn^9V!xe)Guv&z`dWxz?U7&pms}w)}s8_LOHIx%P>g z>R+Cs^7gfcF5H#(4n5UF&Sp%Bq4d&6$5$?PmqCH$7Waus-~?J(n+k^~%Mk1(yXct%;l#TpkQf9Lg*^ujbUtLzji-%?l0{ z{a;aa{fAm8o9~?iu=lGDjDzV#Gfo?O_enkZC!hAI$ftVpGne0UJ0|>|!HnO&$DYb> zK62o({Lg$ma7X^_`PB>F|9JR)kB_}Ee^wnnVb7Vm2&d{EQ7=^Ph`tgX2!B_VAHHM! z>W9AGp0?*b6*3dollIkJYr3{Q(NO!@$oKm{l6FWY-VUbK|2X%#hZ_#2ZO-7#+PIp7 zX$R9T&)~G#D|PdDac|n86P`bH&lcs)hXv}-F|%PS52)|_>i#L1``R~UrSj&!X04xE zRyz%n<=gvQM zYR%>acg(nDM)Qq1(Wi66D<4sS%i?AjVFte26$Tmr=@Z_(r)Qg7|U+PykAtA z$-wZe;It*nc6SByHe>X7SG2zhvPC#Ci*JKfZ>+3vEb;bk@9U`=jzs37#@_D+t(>-j?EO&IRUIb;<0K_&WY z=nD*%x3=k-ALT7qSy7N%dHYS6mKwS#oF4w@P2beR;C*2|N%X+!^QxCe4xWD6Ew`T@ zxHIjH-0aNKurVS-hw_$wD6IXcuEIEbuu}yw(2lu-{H4nWx7U?^I`Q;#=zl<^K7Wjs`oJw_@Yx&i2j@He1; z`96fgTNV7}SKQS^eyLkcR9q=3n8G_J-iSB zw_(}1095^}J@`|kKC5XxzpyQ7pr=eA6xIZ4)f~>%@`zJjk@{cF3aT_4*vnaa@TW-4 z(owV)wk6GWwF!g~spNsUc%G$1A2E5L51T+3-$@pTspwUoae5aX%7^(oJ)rw7Xy9pb zab~H$hx5rOC=X_l^OreTgE}-+2zoD^YyOV$;B^!SE1a2egbpRq5->IY{9SxgfI!0! z$$m8Rcbp;n#~x)6Kd3gYp%hf{#ym^iA{6|W3gyk;1+aEFg0;92{a1tEMOeYS7^|9v z6Y)_Eh8y$sLh;NA3$Et%`t%%?2o7>xGFN5~4QcrTu?p25_+gCrd6`vYAbkA2;)Uf| zeB(JnkHnAni>HUDLJmWyW1n#G6hSLvvb)V01>3(r*`kR}JFxox?4G_0+Io8OF2K@> z?Ca`V`vbx2BJYYsA~libMb(REtGq~BWOkhEzFoQXO}l%05O7ld zrs&SzE`^nSjnTf&i_(GrzbKhU$YGyR>R#1OT8rA|0}TKd>2-k zcOBK+AAA=e7~s=|3g7@#Qq$RzkaF^363`Zxz7Cg=0NHP%dZP= zenykRX$a(%zXfj#)T=tY573M$$@O^Gpb3+an?{q24l@JgPc{Gbh`E_#pK^F=lVm(@ zYUj7w|D$gI`4ot?@bT1J?fpD*ox@ZDa!KP&Jpuiek=^4k48EX0y_KiuK9`xDgXy>>sd z$7}boNKV@Q^oxQ;rrpo!Or_oTG?PO6|NJi;?Z43)lY8s_7Y&T^_juvIx9)$jeU=#i$oqf6|8MXA@3-R3 z-+&s*!QdQMEW8lX<4Ibj9M21?zv|_VD}AF5^U=##aSW)l5Tg%sfLjYOc2S7_$`UN7 zl>W;~^kVAphH*7G4d~CT#ov02dI)DN-luNR{hW=4BfX!krWdpjvB+t{*v1^ZkG%$e zh2ZcF`CV9?*`>npZN*h5-k1)f418-oj2wIM*QL3wcn=yAICx8%??lIrya1Pd`t`uk zmwCsehib?n=(M)t0wkY+1%LAmMQ54RnXhM^rUL?u6p5b;;l zNOdc8u>~nNK@)Q{-GrQ6=``VeZ>B*VF(&JWskh<%@hE(l*Ba#0rX}k$n{;^kdC+Mk z^N>b-kHi~)nhlABj`@0iv9YN_ybmN+64TDvuz+=_+4Xosej`f9mm>NhTNJvQhwxkV zRR^>~oiY9Zs5X>&J*00!8R}pO1MuGo{dzU+m4fFoThBGfX9Y&s8X@a^NIV-0d+Wie z14Rv0<7zfsBhp=9%2@|rDZzZhufZsrl%xjdSV@|7J-X|;LCd!jzul1dwJcyGR{XXi zwJ3G~a9O}wXlXq(;oT3e+K;!Jqp5%Hd&H&a{KKd}29MK&*b)ZkY@BoSYHx2W&|69E zZq50M2$wc+Tw>&wKM-GShR*rR7>p_TcO{twtq)(IJv1~im>64GnQf zj)z|9JUpoyY^f2!R#*PD>6CD%FR2=E*t_Gg$}QCbom8zOsUBZa3y>6nB9Cpcq*&E~ zz#tgOD*cVjr%n>(qskL`$*!r0WPZnskNf4g=RpfSUh;YAJh$hsU-h5aA? z-@lZsC7(C)M<3br=(ZF8Sa;Kj>-TqEm-bhW|H0>1U$kj|UE_5NH)PJdb9uVQzv(Z< zZQIAzt=@aZA1|Kr(vRQm@ozuvsYy?l-nrr{Pb^;iu2*{-JwDI0zd>52IyJCV4XIbE zFyj-e{i3CL&+=a$;M-AVXOrH=3~jf&IQNV6!#k3EMRNN%2%_+wPk{O}(2rZc;>t@6HP^nFi4 zI1`%hOSTUD7866cUQWWgE}W;PhWN^)_r|36!X)08ED9mPkbYB=>p325g2q&A&yF#_ zf_|0WxZ{<1%o=Y=Vm${|Z~Wvh%v#>5mscPkMg2hZomfMH%>;V7x(0T#{Ec`U^3?Y- z8NCMQ7dd2doyTLSjY%Q1q|f(~bMd`+11*&J#{9ybJWN*)e;+;LRMwDQ>Sb1Xt@&1- znh+Yct-|AFRQg7}P$+vQ_0-UXS5g~#x(84t{qOoE<(HK>tpj-1_0tuwD1`-0Ek9ye z^=curSm>cMSRl>$*chg?yGvhSRTEYY{j7khTHnjXLrCYyCCqns*SenW=!^eH1#=mZ ztRnjH0R}Z|hx(&GJ4EeZ>CnJgd8D}9>B|3Q`7n#+O=4Ye>GMc1gmFy_Yi{|1rEAWK z(F?X(dJk@u7IL76w;``wqFxOwl`5SN#!hI9&A-IEZhu|KDdj#%LxNpII z8;)sw$DBd_Qy*RP&b7ACHUDj(Gec%N^nwef@%HCcKW~eNU&Ur;gaO{fs;3x1hvR}o ze0jk%{GNb@dW`SU(+LzgMqPj~nQAA(WT~ED2*&QEk$A?m8vGDEA;eg{%UD3~sf8-~ zhaZ7;Umn!!W`KAj6~Q3hRq36SzA8;!5mX&7gjmFUjIQliraY%w87E z&ItAeCS{IEpO_V#s9#UK1z7v^rNQheD$qA552NM5>9$ie$X-z{`U}Ou^Hf^J)|Hs0 z9>g^D{CSwH$UHF=Y5-mz7nq1iYPIm)g*9^`h3K&~EZKVY>UHRJoxO4E#!LDK!qJ`c zYPP0DYv!QG(TSeN(I0$EF~06blhS(-Xaj1NNBsVO5n-kD%l!wLKVPHZc{GvVk3gRq zBO&ASuO3b0gfK_5|KD9mgKZ-Z|E%xD=+&lnOgakvb79q>$!4Idt#JLCCUmQ@6&D~v zXFgV@Zc~9Pn}B{AJKL{nLeFwgbv~`yuW0)C;DlQS1ACfOP2-A1jgk52QZJ}qQ8&9f zGFV+dyS}k$!C=$Vb#;Rc^9RS&>}?vnO`YG@x)WP_!D{=rHuUV=iFLf8^tGKp02lz- zJ`moxqqQ$H+OajQwmPzP?cm1sa~jvIDSTgEAT2js9hnmeuMf8Ec{seLv#qbSs_znP z!xtET#nWTd6(?Mgmh+eCDq}EP8ECfhIyDYkA$|dyUzWemdnw4uN)eOG9__3KaKbTpgo}c;rFV1>;=7Jy0T=0bc zEq`I=LoL6{&1ofI!!CknG0GqUdM<>OpkVnN zQo5|itN@&hu(HYzBL$#&JRv9b$M-xRIdu9T8t#5+;TQjWL--Z!kc{LwO8EjD54P_^ zLl}41+iFq?sxvdhk3PLZ>QI^LIdi{eVKE(#I&;3noIh*MKR4%qNokf%QK{caRF#Is zBFw=%$PO5Fx%|pU@T(ia?;PWY{dT+xFcNsDGt)fEf9^Co@^gX4j2064$Vlgak`js2%F00aUEQ!@{YDUYI?^q~Pt!u)|11p^111WS z{RyK+Ru}a`lY7GOswG2=lEfdBH*wkrlyhMs3MH18lrC*NwCU~-l#YeRF zgw_vedHmPRK^sj8SVzL52%k0CPy~~+zQvg9nN$;wW;vN(im>KKFVFt#+h*o{^S9WV zx$)N<&~OA#gFkD?rxo2;ceCmCsfg`0nro|~wbEjH;t8MPJ#0h}@kGGi8Qz7)ink?- zr%f}yH;p0(ry^96{wcjDQF_OAUdSVe(&3dY|JG{cPc%vTw=RQpT7dY@B5x?#o9zQL z`UEhB^&b&3HwPU-uOY-*Y2QL=#Bm+&_0!OxX%mOHR1^m_>1)BLWi05*tbtGJ`>CLI zGFdg;QKfw}LQ?>9n06&$#Ma-yBprYC+8p2LsbSW{F_=$_)PJEj`-&zlyL&Ofq9ItI~tnG0G4{-UBJhv*;-B z_t%hj6_th~fSC=>W%Zhwy8o}es|Rr+h{791kU$_HSSZNeH7PC$o6SE*(90h=aL?cm z$ccoI%g;j0Y7&1I5iGPj3sJBUv=;;wtgY^_u=5HF!Ah|en*$NQ@9l09lAK(xOI|Yj zW_ISiH#2YFyv@9Iu>1e!OBl$vckJiNEfngx1-bWv8tx!~evkjhza@cE5=t_mm&*k` zT`m%e8K{PU|5C+*qo8yP-cLm2Q&)Q}>vF(9(v7j)?RX}x7gGr>QYdG&NGw(;M>3^E zJfdkUS|JOaq$OAGEW@Z<9$lqL&EiqQpXQsW(AC8`T@R~zHms&IT3Agbl3{f{;Ga~> zIp9a1Lcs4R6iP@e(av<1YbNntSp7z zeA0k>2cU_-{0e~g-70{%E`WLryYJv@cKoR{)}I4#cSi(DC(b_onrx9PDaHk%36x)} zs?|EeLe>ZBg+a3qloOu^zj`X2NTP9;4Fbj%uNbt-Dd3cEOP?3iZJ(syU)=oqc1zNC zjgucAEN+XAXR+zyZ~PzF`LOdedOY~(3HT51z9j#@KsYTJ@=v~b-@vL|-WNdr$@dUI zIw^-EfO~+WfK349@EAb3yh2@*av*L(4zQ8nUq0rSI+5J-_XHYSKt9`=jo7Qe%7il? zjtn6jrl@N6%pn|mj&aE=29o7Prxzk8Lj{a;5yL@Pn-1u}C0fz!=gpo_iDVIR8vD(b zcUnQvc?%8@juYgbw%P+}2I*?2jy=b1^tqdP*0LP(km*Ejme(hQW_b%OtX{c_2S2nl zY8%Z#ZD*j1a^2PH8;hff%bfZz9P)AFmDu()2k(^b literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/Tables.xlsx b/src/testcases/org/apache/poi/hssf/data/Tables.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..705e0ae37322bfdf1fea7c8275587ee4e5d9bc13 GIT binary patch literal 54387 zcmeFYWpErymL)7^W@cuxn30}F&*EJ zjhNl7P^e0Ztjf%j=iHn3WR{`~C>Rf^R+Oh}!W#{y8D7#LNJa&!HT z2$o)7K*?T#LUnb5sS~zsm7gy=5=`=_bp=SkuLlFk&nN5~dG_}mwK~p#QC7EQl=e;H z1D5(U1sDfw)-DTR>p;*_=UVJ2S}LH@9GZreRYk9(l1gby(GQ6Ok0=`e zR$?z4lV+-(d51*PLwinTL6lc)`4A$qlmQCbsqs7LsgW?=8n zj&2dtuhJx)A2?0HVk=68y;t|W_8=Hj3N`nL*+J7!5C|70gPzIV&EJ1ICODi*kQkqa z#Q45LShhD8aooy@j4$>s?!AgX{mL}BBEwTp4nX1LWq>3gWjq>VZ>p_F=HP1$F>;$Z zi;Wr@>p;Q)#hnv3)Tce=Xh)2mL;6?(bkys!ov#J^XHauA zY!no&hZO?|i|lbS*i+L9U?f|Gzpo^?K>fMjVy+i*m)+dc(6Ka&&E0iDf@LrYacJYz=rfp#jPI#y$^B`f!;9CgH8W0KF7Xu~+Mct#o{i{hD-#*8e!Ct{bHttTDuh4v6A((^9#SwTU1 zL6-AB@jlkKu*uoEGamXFr^-hQW~1_qyB>&`!c){ zD*SwJ=5!#DiI|bxzUAGDbP_y04PeNzD0}Fd;@vF?-jOqXFzOpbR5kcmwtwdO0ZmDz z{zneega!h_0fGW{|HAku-QDaQt&Q#Mtbb>*|DZnDZ|Z-v{lELsnKEhhK^p(dpe~Us zAD8v_*kZmfaGo3OkW8@|!4$5wojKjFvMuDajoOGqss5%UK96Taj7vFkUps>a$Bv^T zgvL;2#`cpLSbnwpv}ZPeeVuQsj0ug#2U_uT@oMl6)#iRjNl}Z6sL5wGDRMgJJ1Uj7 zAVZLaU9CBbwkf>Lqj#rW(8uTvv*bSbWe4BPU6%gkCVEBg;@J+d>hi_UreRGDh9Jh% zTCjta{voW+iw-!8k;Vp?!9)+{(ZP)W>RWV97;*uCZAvFFdmrm&Pel<)2)ljylB<0_ zE*=@26_&d2)EnDeyf56y6oGa!>e8QYc0j zn3a4|R70daU39Y)`UeFSe9Elw+iqo!!*b46BAe9SXVdw3GG&<0c#__EflUylhYl#s6MSoPJg2VoCCKYP@; zPdtyGW>G5|b3Z8|muw-+o-uyG7Gg_I$%s-$Wb~nOEmjwE2t(riB?gaHSGVNj36NkZ zmQ5qWQFh5JJZ&k?XaaPa)@XSyPW!^DirJt=F?;k6lKb$>xUN9Q0IUAaC(KaYD)+H! zvv&HlnNNkrTnmN(Lw%94SuXS92#F|prG&4<{09xd6i3M|-Jtv$XDe&IG!dUgrkIGybNW^YCD z-K`eeLc<9m=7eEDd@G84O5&yr7ty*IgoOy|DbPUz2@Z;Ar3%-g<;tE21H;awL;TF+ zXI9*^I0b$yUrM&&ET*7Ki!BAHt?V6#$JvlPr19skn(K1ye2v+tXZKb9olSwS!2Cme z&;gO$(xI^!iPe&4tY5>+pC#tDYGvci86%bn8mV;{H+=c*&SQDEd01IS`}sNO7Kt5enNYo8El&N zcv+XN#jCg$eLL%V?R}4i%0cIHHh7GBEIextia`SqFqTl$q2izB^^YKUx0`jG6^j%V zsCg$2O>($U#9Ms{GyPOCazx3=~gd zAVAl0(G6=e!qFS@8R>Mo%Yjh7IVNC8o0h;+tjZq866lfYoJFsjnc@DB-P#=yEXC|^qam! zOr2}f>``aL|An}IKM*$H>4s+wpLom1J=W5)Q7kz=nJVJYX+?fy+|zCRl6rpOj4dG0 zeKAuEhx0Y6rR18D-DAh`nD0($+hLHzASUMfG;1WGz-Bi)%d{C zq$gs9NUIq3iYeK&gjeD~7q)n$8)dAmylFoNUde5!^R z+jnn#bZkor+kzV@ot17?3jACJw!tibe1D204w>DAaJ>^?n3nv>eNp-)4gpMEgZrw| z#oL=G?{`D8huTl^A1?~_^`(&vlF{84FQwy#fnkMxIcg&QXmFMGQy@3cDDo7#_^>^j z_hlff);uGW#CBB96QUqcbo!b`b@tBX^~If`Ck6nSd*G;DQQ1!+T?7M1;B^(2y)IWv z1i^6}m}c1z5yUJYLJyf{!f!Bpf259aVWBuF`-r-<`UYf8jNIVXJSlx`d%^nrYnAbQU1V z(xt(dR;y&+4~Fk0&i#yjUW}f8JfEp&hjv= z;HSMHOnm(8B23&MOh}t(x;dEAi!DZjnfoJ!xZ`M8UoL(A^6ACZRzpZ&0VqYa1ChEm zo{Y=hoOtB)$23ku&Zk55g7Aplwgp)nOm&lJQ%T6K`EbEZa6v3e-3KMj*H~>gb$Lx} zwk7$iT~4VNDyU$_RwM_W0Qw_R4tP!jVw$6tz7#-p369ANA@o^6**he1SqMOCH(s6v zRxm4FCx)(gDt+xdp_#GL)qP4NdHqGybVEnm0>h(oJc@AnbW*w?C%+Uw-CjFCa-LqU}B0Nu+c`6RwBZyGVC+iYv;VK{lP$F;B;U73rRIy z*S5+%+Vygxmg@M!1aD18lLg!segMz&m7*NTEzrc543s^}t+2Mk`%J(J6Aws|1;8nG zL!Qsq{!l3zoaW#y@3xxD5L94Oul zf4V#nEG`mcq0fpW}fvof4Wt z;5TPvvlMb!>61R{x$q36@3?*gY4eMybH4Qfzt(LLMN+A)k%UBnVRb}=C2G%_w@hhn zG6rQNGWq;8#H9vQ@tlxNe!yr3bMBqPs8_i$y5!`STb~`Pm~8@iwWCz7oJR4-l&-*f zuHX(8PV{qjk3+0F%`x1u6SEnJ z({`51@&T?k0?sG9Ry3G63i@TRSBo&GoEv{z1+(^3j!$1HGJFonFYiUToOm&>A+}C) za^wD$gkmtzlQZumcwk46ZB4~5=uUx#b-0;}l8KU@O7qL;jx2f#P45K35LEW-KZd9TJ#X9w!ZE1>Hq(!7fic^NIuiN&&{R`vZr zN5bDOu=@-zj7iN;rJx~r+;IWFyMyvhRrIRt&+`^?eo$*%1=Vt8=FpPuWI8t2Wf}fh zmvNG~e$H7;H|( zb{U_`e|@nx#96CR)jpPyom~W02Xc?<=J=`Z%-FVWB!u$S)d|NHK}eSFB#(`57dGiz z$snho{ynPOT)|EkT{);fFvcBrfRPftIztT3>XNVnU)y;acy>?bLkqvI zhe{G^pM9UQ0c(CntE)wZyYt5cOs>~QwMmijhYi*937?|*QD8Oo!N+$KLJLG(CG+=R z24B5>tOY3wO=x%}(Q393d?d;SFaLAAw2Bu2Hxk4W{VQv8!B zWabr9o>%N{5k-8fgJna)xb z(wRdPLXN$Svq3T_dYQ7+>ygTs$!+=T=#zTi`%zZd;WegO<(^1VyT3Y8OCMYyFr*nbMn{*L&fcZ(9%RUP$eTg2`stxD5bsJo1G}_vwI*yGmj3@%93; zGk;Ov=aex3!X5ZfV+l5A$ZI`Fbgj&vJP{wyQNLTg<@G1gO?k_A&mJ#cTEeefd*$14 zrY~5>d9slNMb8V^nYZCMr88HBl^BH+Opp3aN!|HBwt!2I_RMD{bGiQR*~iMV?uE{4E~sBn<9svUtEKdnNn zr2_8JUcDOd%z6(F?57XdGoN|OaLp0o>E_!(LiSBCEo!g4R_S|$K6J2-2K}J}qdA7| z3{ZJ_>4;%~Ci)*bc*Pp<{kBpU3ta}_KU|TD@L(E!jKZC%EVr_`F@S7jlyADE+xO83 z;^tG_3!==spWbg&c`z>q&*l50fl{N}d~+h6e&V=lqv7>mSQssI%s{$ByE&RsIT@yqQYjUNY`VgCeCTX;#8MdZ=YRXQE~* zMQh0`)$NPR5x5~I<9g1UmJt*rUf^I)?tVW&ShMzB$BWnISI2YR)ysA12H!;vdq>Uv zo`GN4TYQW}$*t#oclGqu*4|R)+|F`!j%xAJx!m^i=;Wzq1Fkh}%W&NCvVedc!J6^= z!+F!j*QR)r4!xYd_qp*ydmMrFGL&vS!V84cn)B)N$EAVPy<-ojH?wzepwfef!<~y_ z6F!^Xq{{c>W&W)=KeQHskoZEXp&pL&dzH)kV|f4PIySz5lb5%HWoc7h?n^|uXYcIh zHF_+m;ewuD&r3OkOFC4{0kvcPub+F~^>B1~H{yJLSa#SD7M&J+;@#B#+6IjR_2ie# zapQJWHDSe<+EZna48x*&Q|6=Zx0e0h^v-X`VPG(&xYR3SV!7kc1J3<|-(_nm6DLt~ zDlmWheE8!9q(_+%W|s|Bh%WO*;YSP9aKW%$$?e-6hX_k?V|*`GK*=W*50ab2?ug@j zXez-+U1Do++j>7QIyyVG-NKD8CdqB{`g6Q5koQN*f2ag8_iQE<%+$%QrK>J)R#w7|4@oh_dDgM)Npg~%NeZ&&YI&p>g&>p^-+-7XSVH`t{eKlR1zVr-sQ7XC+AcuAcO83M4H}n z&bGwzQJ65-R?ts|j^L>eJImmReJf1m~*f5xAeJ zrCh4c>^PBT4YeQ!=x&(F>bykBqk{(z{jA{`Xsv^Yo@^|C3p{02T3Oi;l!20Q?5HB$ z|H^qOK@ZKXQ!Ygj3VJK3!Lj?x*?*UJ7M@3tSbYo_rcN1NF+6z%C`2}PEZT^2jnDDSW*)X&A1wV6Zb@Bs*WCtYQu7!Ahb>2@sRI2jD*E+lF6wFmDcx_ z?;N+$KuMM^VFTTnAE7Ltkd?2Il^>Cn?~rHDNDCh&Bw=L&rHW6n+2mzp0gK_`VV(vhMl zq%KAR9UPp$F}8AHc5!8PiB%C3f6)dw6X%*6UA*n+x3M|zjHAZ2ge~6|aNe^DjK1*7 zsIYJ@EqfBZ00yi2vPSOnIipaJ2Nq%8#6?AEcZE&{9UvGANn{M&@b4Zp!Gm}xD?y}` zXza(vr8+4b->Idvp)8>!KxLscs6*;Vyz}mo1}M-Z+P{G#bCgdB=E4E?R|Y4Xvbb}h zRe_0>4>#&*4Ni$}UU(<_!7^y2#Q?Kr8Zl9Dg%iQ3TJp|whTIk;Qi;4!KCc|4x6hI8 ziS8b0rc!60g%T*GPI&kiziqo>Sqm$-#}ohDA+#-t;8n2?9D$Swtw;jVk+PsZNd5^^ zBGH&RZO>gcfLDS51)?Sh)&5|B1L~>?)rF<4i2!GmQPP%!>af(>3ltmYpo%LS4l>=` z^&Pmlrv2tX{^^|fI)QU~mkFkTZCvblKV;3ocJ7BhOYeD&+l{$7l#ww}w*3BRjI|$e zA^SWYba_nBe!+_)=CaK!tla(&(6M$M=IG%2q)0~wc;OR>#&2ih zP?tCstm?YWYx}@BQ9|T5;o-}4#A%%>s@<#L40|+qQ$l(DT1nu2M2!lO;o;#!^NwJU z5n|z&xIzT8qNBDQJwt9GK}iH5zWKv21ylf)AeIWER>FWVP6u(0VGT%AndZr zLJcH2A8=8?$)b*c0;4k8E)+2vssTj_wVBJj^dcH{#=`t@H#%)vK6o15HRlgsu zb+lUu5SJ-&W<&~>+}ORkrSd1&yhaF)KM{n>{pWp1;08v3Qkt_b56M4i%2887<|U+| z1rNZ`)F9KyN|G>u?bB5LkkmU|?)OIm0LS;f&`Tm3;NZ%`GSlrixo_6_CT8}SUeh7Sy})Df6F3CQI5(9;q_ zYpY3&=%B)?3dgL2BavQ$Pk|rfhjkIdnQ|esvJp;%oU#an)6lm=EED>I@e7%M(0+38 z8Zi&zV)6F1!yj!yUIefB-G?WjL{Z~sE@JrvU7lz}*iZx$TtV2pLTB2K0Q>s&C`k_L z@UH=1!Pxtu(CYxtx`@l78ID4R5C)9f&hE5R5CcWm1JM1`J~Kiz%E(2)>o&c}m1SF? zAJYLA2f~DFhbE;w>iRvOa5p`{K&Y9Oy>0J2s*P@xlMx9hnYu`*(OFk%sPvJ?F9BRk z+EHdAj*uBZ^T!d^n}(z1XX(3v>-lD6fcrGDcVH9+0J+#p|8Jy zD4okv6N~zi66)#93j+cB>=+#8QrMt@wFK673Eqa$L}<(PiH?VbSpiBQYfuS*%FEQR z5#QKgWU=fKpdh~?z`+81-(!qN4iklI$cx+5} z7eJAL+Y*-JB9|k|aHQ3OD*V*mzq=6v2=H4 zLihqV+^^YtYNf5bHgYg;Pk|>fQa@7nV@2){9NWz zHZHHqj}#4i7i9jWt(}o>e8FclZ&jF~pu5Fe;DW2Jp3V#wQqK0F223sodOKHa|EC*@ zrn-S8&Z&nomNw!ay8`n(-@+iFiAI$n8AE`(p^iZaZes*^)bzukN2VnD$exx!Bb~I zp@~_Q3LuN_&zQ~Dc?z+9bO|0Nji82?p;d~>2K#%a`zPJ|iZ;Zlb#;L8R$(NB4BZ_A zb!`iFU@D8B=&OY$cmEASCMLwG4k1K%Y;EEtLUXWMt`!^AUql+J6%51A7m1uXSbx-= zc{*6t>U+Z=B;%EHvNb3QM6TA&gPRy>F<|{(9%XC??-^l2ZK*D4|CR(>eAt%01&fOg zv#r8`^}xD%O}{o74mDPh!1Of;8{53bAS*Bm#gVWsAx~cNJf=0#k470j8%Rd=Lw*cSy4~VUMkA$#)EX z{-Bz%PPEO1P?9m!2RPWxv@vT0iC6k%LmcmB3a7pbHqNEsL?_ORlrYm7_4k#Woq-xR z6oYM7F>1V!H{w#~m(CM3QeDScmJifQiN7#IlBd*sv zT`&P+7)75uwXIio*c?LP)x405bz35$;lacc$JGewWOnV3YQU|>W{Q!5NU_r@^p=g}-zw}s{e4yY5BAQ?|8Q?ZR-4B2--3YspCS0u+bDrli9FDiCi?Ad zsQu|}a1g&eAOEMrHF?dfa1xs?LIw+|7a)972g|1U(4PIvE>{!J#Wpe+1H+WFxg+%u zm6EdPn~7v)WXN(qRl??<4%cw7swCmZR{wEdSj+?h^wHJckd$VS={Za0jZHXi?W zhBCVM%ioo~uc%*U{C*sCq9akCw@|zzAZqmhcrb8Lr+KpJ?T^a-#N!$4uUKF$fcQM{ z?|2&={|v!@n0#T)VB>AUg4H%pz~!AOVrR)SwlcT(3w7)v1YyISMyqr8yk(4Zc&J*- zrx0if3OQ!>S?EF>#C9$Y*24M(oc^;3zL}Buk}KNJE`=VItJ(kaW^SXE(8ap)$m}$V!I5 zF*C|bPZUT^8Ek}`>!|T0=HSnCb1sy%02F-SPrMb(9{t?#LbtDxUTuUD1Sn+30>ExD zBa?!3=NaOtFdBV7U$$+YTnZYl4t46<5&k6zCUphA{~ic`?{fXVzl0Qg8PNS<_mX#n zAqATKHu_$8{b_1!kiEzoGZQ*}oMnY`hj&c6jWRCUCr%Jq!z3}R{tyEqn>HuDA3w*3 z818IigE4GJW|{~q%;Opom3OJh)CWI|J`^b(lVycg&P8Tobe3 zwlDSs^ftzLv~OHC4uyR zD@5~6o`MrUw7~qQ z7SN=;OqSy~d46kQc9@rkni=s!3r?UJHflZ@-k1J|ePydt!nPgorMC%VH(qXM&)e5n zuhY?FjDH3Mjz0qe;_rZ9KJ8Ib6VS`nK1=dDOB&LdF~l?Jc4a_&)6Ua6FYN9Gx4z zb7I8u5G*_&4UD_K-#NUDPY?DaTpxR{oEflp40QYAy=&zR3-G?)5+ZIPmTXPix%glQ zguFgFytuaEU0z;HP21f)AD-dG-VsRaBbMAxg1>n^dAjjupG?ZA{P1x*YO{5|?_RkW zt_pdc`^1h=Q?qu&&BN>GRdb)ZI8wH0!?6ASXye5jmqU<&(Vdk|5Sv+Zr*LvA8uoR{X;M1s$u5ckH7x9R7(d6qi}WttrL>dN`T5JRU=FkJn!adTmM z_U=0bKmSSd&Frn<&-YK8BbQ%W>dSxW`Y!pR$BbM781GIG*Dh{y2JSt&UY}e8KHp_= zCShbF^5hO|eScQ}_0#=l_hZ51OSey3XJ5GHm7qS6%Kyh@u4j*tTuEMqoF7#K;)-pr|zk@l^F$ixf+`h>K z!5)s--V%1l22!Sd9Neq2FYeii!A3~rO9FD`(Y+peU<@w?*;`$2`KhGVk$2fNs)!zwQaCa&mY{E`M0(S#_41G3imvlFg%E<`d^3nPd} zjTlblxRM;Gjy`JDk0KLK+umX{5B;MSszP>#ly-3xn)aherAu+_>;17GNlKDR?BeJ^ zwWm0h7x-VsE$v4EqfH7m3Xc4iu3L|_A4z<{-Nq}l&r&GQfMA9<#-(ciH*45p@S`NQ z1|x10grrEtWLhe)9iaDDI`y5ia1UKmtnM%!! zVox@dy%(z-%iSSNf|Jux36aWpKKTyhP;n|fxtRF~Ku2o=ibTo-{PTumur5&aG_-4} zm6ZPKm&~Wcuyv@JHVl^(z}1@ZRm&wSo5b{uiasl? zwAq#m#Fg}ErvjrM3c6!`IwT1UseVf?kn>YpAZu4(qF&!<%{H2by}5?{p@uz%hJ8vT zD4|{{EDL>Ab*+kipH>SVvElKHjmgI_fPQ_A{q zg!WOr%-kBc$7>SrW!tyu7u8c4BDv{h%s#3n?iOotQau@Mw<&!beMEv6Y0z(=0NX2K zhXaislk|oG5qZiX0pB3=f)vUY7X{ z8IMA2-;>}+&BD>5v?`tVa7@8`kf7E3EcSbIb47~n5ASp`tmD^ET^xzRUvR03vs?@Z4uWH#?XOxife7GR5nUsQM30FOQYhcz<32|(0Qyi+ zJC}b93n!s?o#L+5plx9w-VjZ@u3PW{h7nou!BTzzvFL+Y~6?Cw39>xC7qpUh(O55UZGHii$b;0-C;_s zJPjSv4z`GeOlZJ~h7>wCh#F>+BZ;`z*&hR2(ZodzNn2^*vdThRTK&-lSLHNWwRsv5 zokKuYqbz3OItw9#8Ywp$2qX)@VYeRyWRCI-`gm6;OPY>dX5xBO%g)CnF?n~bU+B;T zqF+e4-5&5=&@_9*Dc2~x7Y8A2?};h#aIAMUblDx8`0!IL=H~i;n3`WUXz<-m;yj8wVSl$I^ z?j#BzRH!BD%VLtvO5#{lTgSph56xKd9<>2jmMUge1jttf zlmw*VAQg7IGq1l?4H42DG^2@Nq7`TRxSIQ*!6^i7V}D)2v2Fu|u$?Aq=~$M>IpyeX zCC8bWNjkx%+Njwe9d@sMMr$Wgp2210NSwLhW{IiO#}*@ft6)FaW-MAf4q+@xxow*L zvR4*?JnMlPzy(0Mp{LXrjs&axPUe@5EW>gX_&GC+1&r?nEg1RnOMRLW3|XQSkCSj6 z7_0|@00l+L*ND>OseoVym`zatqtga}L8&5kOZuEOirh#v0CgO#b1Z#ObkaqlXDUGY znm%B6rM`p-vsa<}=UQSYNDqZXG8~PXka+CJGJg%#K(x&ufhu*1oOrsau@hQK-K0na5CZhqXacPuib+Hb!r?CU61*|aB&X8t z8Cjt&{S51o(z+Q%gQ3M|{lPy!!*jFd_W&pgCY(R6L?;kS4go6pQESZZ@X{UsGk3z@ z`N9_x-*yCtgib8$I$9JFtJKW{%32Q^9Mnkp{6${gFnC zKZZKi`7vZI@fh+jbsQFS8Tj-_YXmiz`cbO5TTqr}N?+bm&;*8THh}|*p!TX|752T# zED`W9bDWd$(h1y87#U{sn*VEmH=Da07I33FixErpo*93`IX(1=r5qy$2X>Oh zitbO8twvOJol2Dfa^j~BIE>8aTG$dMlJa&RGbF~wPI6HHV{-t1XQq1iFW%-cj~y=V z;wk(ciwRo?BOzWWeK_}TWBh{sFUDxd{4qwa4@`tCK$^{N5JpFGqZ=GQj)XHTOBoAT z?B+EsQj|B?61^L80A`1L;p;G+;)P`$L_Wo+n>4dXrhPrLKNesI+zEFK%Lb)F>Ea zo*Er}zuj3QXx_f*UCG;6_|(b^dpHpNo~;_U0b_@xp2I$6!Dbmz6XPxT|r)bTE8 z8L)iDoL@dGwjZwHUtr7~*W6SFv&KqN+o9O>bb4yv$dTY_^@rp*#dCiKuBqGSX&8}F zQRr6YZMxs7G_!Y6Sd>O>?Vv!-$vYhwWX5E7>cMBQe>}H?+1h3|ffwjp9!<`=VAA&4<^A;6O)*%&VW#a525bJ;53}T-4Wp)Qjjy~PU*RyL z{Fk-SA0|nXwvAH(C(4_z+C8DJw?Lpipf}mn`b%_-TeYqA=gVIW!^9ERU-lZ(O+Wj- zHUq#)#R3z{q0_@8s?-G%jv+SQZkCJ$JgBEr^;|k(C9%L0Z(6GeT!%|KwtM{c-=zab zi#G8H*+1^nZGsDo$y|-U3cNc!Yk%$0%O0=K_7B-RU~sQKo%?xsSntDtm?@+Ab&Pb~ zqjD-t4*s1_U_)2_$nkcDjr+{b0xcqQz}yY4G33W14(`I((T-faTAJ#l>6!~qtFHg5Bmekt3JgfUm zaK<#Xmesv-2QEjAN*duP!X^zS?_BN`1qKYrlE|d7XN2Ym$LugC~_MR)BO=}7`Io`C3n-J_N_RG=40SnwQ;{gZulc}P;6Vt`AcYk3#Ap?H_3@f zx|5Zn4%HkKO}ROQXsvC6yjirBqfb8CU* zWSXVP?{5DjW{nqZRYJBSK@}ApDy`Lqhzdq@*b;Q-AK#SM1j-fQU-eoLpeUzGw7m)u zm?!9*#g4?E^f=QW=18dhG&2?kL#WLIK!tLrc?_^`Rvv7HB}zIk-9v-dQ3>}ySWEz0 zwLiii9inJJl3lLG*EWNdnZ=INHfsxcdUaSTF&nPisAAiX{$`^Z&9cZZ(#W3GTTZvC zVb%#_KkQ3Wp6fjH%mbKiD(&=jrj%8%Fxw-cR zu)L}26FW*q=&rn6U{;o1U%ElxX!SN-_4fWp!J}cXu3;ZZ%V|9T9Kl@#op7xoBCU-r zfJ>$pPMbM~x3#6H>Iko*Jw~xZ&Jx=`nAadNuw7_mj}ZpF%5lU1jy>`PQ-u0%w=1)) zNhU0VVavL`UT*7GI}=)X_Sjt_fSfE8MC5pjIr4c`+Z6t5sNz@QPvU80Y%vjMhwZch zV}TN6GZFQ{G37q_MWy%YG+Kg`Q<b4Yg$_SlkR>z;X$#i?Fn zN~Z@MRT|Ar*r1feog0>ZWYWkd~%D6?H1l9#1Y^DXlzo!!G34-KC0~k z`Ek`yf`p$eit$_tQ(5z|#j~94BchdAOa{YA?HQxupWE()qd=Wd+uEGrB_l6tDuJsM zCT3pyZ4~kWg-K${%Uiapi;Gzp!NJt2%n^H>5rt%A9;A>Yv9+MWsB>p8F4+s=FE0RDyRE6j8Suv_eSYi0gp}8vpdy)3Me@ z!GW0q|I8+ph9*j}aXX$Yn(S9a23Upf^q5D_j~As5#QTaoS(_jjiy~gCnPDO?Es`Z} z8frpDtS=G8ENtub9agL#v^VB)wuuM|;b}~pDIW?4#eF%QaL6I#Xq8k7OQI`GKJeJu zdL#0ivLxti@EBX*0qLgaNhytkD4CulPCQQBM*MWRc_Yc7VtWCcWh`ex9n*!k70bnh zeWfITtPP)j2&(OTun;8pna0wOpkwoQ?Hf(JJtTY=`28@q%~4Y z2T>=TD(ELr=XSKytjdC(Ot~O_ywp;yc(JG)Er;g^Gt?=tBakScohGDa0R`tota!Nn z0l{)^KPiY?y0Fq`zom|TinlkQaARXj*_={r%~mEru^h)+K7d-4TwJ8DfG3X!+R9y) z3O}w=kia?VB*9ug#DSU5;Eq?%j4O%BYh10p;98Px;36Tb{p^*QwUgFbfiv(G_)oO@ zXTEJ60H8;b6e($~MeLk{5ut-B$&5t39vj2;dX^Ro(L?P=;7uULWmtfFblNMTZ!rut zv2QVYspgW*s+eDK{H>%b;NZe`CgB}W2t3rR%sJKZMxZxhF~YaI03$Yx+ISSfEmpdy z(Ujes7Z$lx4qa5bsA%TcmqifJ`88Dv+SsKoqIAklmqHQWe&}Gcx#%On(VFNZ6t?dY z=&}}HwA9!uLvM5pq;v2I37K+Ap?GCY*l+WNl{=}`U*KpF_4~67q4LF;vekaUGXS5D zElotfK?^+gRB8o-Fi7<3cjwA9Vr6aEnPZLfK%tZ^6dv0wSkhye(g`p!au!nPb$n(| z)2{SD|IAKDI1b?+1x!cSn*zFQ1w;!`+cfx-$I$ItIoKJW*13k36^+zPl@FH~x0Eh! zxhZyio(whw*B9%cyiS`Hyf6NwESoa2oJp)-7E}>W6y>a&TOc!RDonJ}4`amcw5q+( zv)j@LQux0VC?MmF-Ksb-9I>pZZ^g~zX-m^vO(7{UtEJ>pdQ)cirw#(I6PyXXq-XUH zGv?%sQhTr8TQlp{P6nARpw`fV1AX_y(w}JX=B%h2s|L7KZ^8cX6m$cUuCq9?hTg##l9-gci^~PUO9ud{^-q6Zx_t z0te*t_7(e3vSCIj=aS0ZL_hloTV4@l6)RWG28;ZPj|6k{<4i~ED}2#juqXNv^Knfs zurj#DR|#t%lS0^#5+zAoxBPs&uDthdCv)hO(d_k=jmt*<;BowdQdEpw>j_Q+qyZ}* zXuwWBaRc0o^B2UuJbAQfyH_jh)F7x*{G9y0oL%Ci@4fSjlZHU1zuWd+KE8W*KVMf};@=W&fH|au(!P`PK3y(t`L*yKGCDk1VurRs zlFaUnZ5=$mrLLSk)WRliKd3Y#syvLd^N?7bmDWEOBzMSPCR%v{q#5iRS{ zFIE`UOCanDJENY|c*}nrp?$x3hUnes{?(YPo zmKI9kZrmDC#BS;d*hc@9{FaVpkhBJ%aMxN69apsgdiIlN%yCsE_P|EXKB=b{RsZ_; zJLRe&@9KyXf;{cx{Dk0`gR()3K<5SPXkYQ{O;x~|bH$H7oCRSGK(JM%zuqxSf9YX+ zXpPOMrKV)GiS~XRRXesaqC6aiFY0JAR0c|TGU(dgwfYx9yoiWD@H?-|mvRh#DQ2r! zUo*wwPE(-=J-$UFkDOQb7FOGArAKFKX{A@+-x&4AD zaM{2+jpAMx5jac-Z|u%h5m)LLMVi+TKw*Ax)R7PEF|vEME%t-L8zFDY-&F*U3Pb&~ zVHIO7nxf`7uwzVGQ@85HiF4*Au75AOF`J_J9j7FH>oAIE5gj-_v7shTes5p_LlKC~ zkO`3yby$M3CCbC7`MsdtbC$3Q^y1FCtY!slkAn}BBSOlI%GoChGyGw-G;&!Zq*E$1 z)yg|PKt%!^`Wtcdo0GaKM90b`cADk$)063`}lh)sTb6 zQImo^aQ#|O_M}o|U?PN{L|q(U)g@rrR8Hi!AgLrZE|l30pKLTI6w*tlK%LnRoNS~* zrSlqf%Es;jTHePUcdAfVV=c#@zpXkd@zCO<`F*^MUHbBo3xGX{k4{I=y;_8Dtr||_ zTs{~_T``Omx}sV49HaderT>^X3Qtl<*=qYIAnC1-fUI?`jBt|2T~bSznkRH2adkYt zUMUWcmq=zziJS6;c99`(`lnnydU6sPBsZ6&&|*;a17+4Fr~_Ya83zI+Z*AZh5BJNOq1L%4)-2^h9qyW zP4|sRpC!1*5{`xvi=2{4I}{nYG80kbZV><=GzFz<%oR#xy*#sG+cV?1#EUtZj6#hJ zAdeArMQ&}W-!?)ccO&5&%{M(}a=(qGESwV_z#Y7Arns45^MoPkqC-VK)fT?vnf?p~ z=Thi2)x+Wm;N)N^@E<^tv6|cSgpeiIaBYw!g|+BYg~5P4gi2iH*C4@KR9}rgRW+&q zkqCRi`Tz0t7C@0SQPwE#?(XhRGq}6EySuyV;O+x74udneJA=Esy9{o_)Wo9)@y<3q|GjGP}y; zR;DF9>6&%FLNSBZ?4wZ@-6Ds7zqX5u*7ykMx#M zc#_z+mStvlZz-IHc%_y&y7?{pDgv<9-9RLjx~7sTgNzD?mDCY6$vU>ZZPd^G5B?t- zKX&Ni>1^bTra!CVX#6ateWjZs8`)neuRG$>_CJL2_h-2Q1jP;)jt99iFWZP!1V2Nd z(rqdY?$-w@h(DIY7L)9mw+g=3%dIm&Esd&`a9Qc}`%I*_XNIsSVfRS;`v~noVm3+R z2F5#eYo^arh7Y9C=13i9Z~+~PJ@WJkVI7E8Zhr#~lG(~E+F3V}s_Dwt(>XSKqpRQy z)6Upbepkku9%^AOjf%UT2~$|BLVG?@XmD52IlC(~$s>6b73~y4maXoSPHxZ6XE#>yF^GeScqVnd!GjCl7C8?bI$??j@yq1ercH z#|D-N)%gOfq&Y0{eZ0Ql<{znOcMs2}?=@+6xKXq!o1ik2jzJ6vY+F6<^yrL8#}Z0K zCM2q;6}_sru7s5&Hc6Ufo1<09vxFnj$$cSs+H~)Uji4{~_?_1RVgZNbI}qz9npbjb z(N7=BIxthNoM;k@!SH#4+Ru7iE_7|`s$ux9bo%g{{i}=mqtfAP8f%T#*cyXXLqayz zRG29+uaP#6_-zP><#WFr7ECNl2? z3x?SPw|F2|nQ|Q|q5?2SMpMUuAY-Xeq9nUYNhF^u^?@t&D*fmEYr=_h#J zO4%Cn#X6*l{|~q0zrLHBmASn+^S|eR1BDmbijM1C7(K`$Rn~YyF`dIto^^ZS-L+I%4TKE>%|a9 z1(q^y@E0xoeJA_y6Nk9dZyu&RTGriepv-P3Dg8cWerkK(LSeAsDQ3*90Y3s{_#@>2 z>x|)!Abv&J{n#{75q#|&F|Y}Xm0B@3{!FhRGeQxVaY@u)T5iKy^CwRwS`XD_PvXD=!Hk<;uaiv;rm?*80jA9`sIe!dP+_q@M*^PsR;&`#iJ3IT$Iq#WXqQ*YXDjXruOYGm$|pqPgmSX-Y{lf%iC8fn)(`<% z8K(#}9(IkM*zN%Od7nsvb}1>C37Ifrw4==1Z+Wx?X-NcoQJ9DU=s)Y^M*H-h#q|{F zZrp^v0u!uB4R(|Eps!fD0pOxtbnb6NIg(5&G~XDDywP0^#IA0vxd)Y1A_!*y3?_n! zsxZp2k8O0J*UsFc_q@-bBlMg88E7M$W!NFS98O|75K(zqu$Qtl3kn}`R_~renabtE zTu@t>`^_z1QABN-i#(dXpH82B{T-o}w*tXhhFe}+i<_SA%f9F5SCx7KwoUpNTIF5s z-gW-I9#6!lf_$#+dtGc(koj1m`a&ZEt*y?Qb&?KXo?`W3lzA?$VOfX$;g*C%-TWJ1QiWR>MfT6ZTRx2WmO- z8D^)n(rWwCjlEnd{adi{oeO}4bkw}dPgRa_Gk9+A+;O8VxV>P9k_P<4soH4i7kHHt zoZ(M)_4@#@Wyo{WOHg757f6Y3hU-MwbO%b|$%(K2pmCuUgeZ(ogz)nyYEJoff8kxq zKi6{`IplN(DijH4Kw#nClHedo-;~nj?th3>rC;f%Q^>+*MbSmkqtib|5ukA`aMo2k zc_4?QoRwx5oA>T04ClY)Sca zyvzRPEaF%$8UWIS+1COkkI)ZQ_?m3bm&lap@kOv*Yp>{S=Y+6z zFQ1iCo~6%{G8p(kkjWQx&_XadSKaeJCIhnr@H@o6!VNTE>Cm|Uv1I*2miON|%Kjr4 zI#$Ql^$dXa(XIYQOcQ8m`f{mebhZZ_v8wB9o0s1<2wMX>5t1@7QJY^BX|F@Z+EQv# z`c__YRg}KaOceNhSC`+Zek{95V2Ra8XsbflGO6nCm!;kFSLL0$nJUA>)o<-0$CR`2 zZzag=m zcO&yhC9iEZf&Biwih1Xc8AtdKH*?uj#AWOW~l?HJ!EF5VrvZ~tBB%uxSmu-y%{mF(|tUN!Z4=H*$)6}EL*d8f_0eo*Zg zV4k+hmIj3C2q1#;VEkb)-MPbhZBypZxvIAu>wBYQWbq+~>bZ zRY{qrFZ=!;CLVF0cE2yVO!3Q~J8BR4Idcq_;>f4jn)`0V^-e&TslQ^}dVoELpQVo8 zLVv=NuoMy6Zx_bO`vL_b&)e~CG%&Z@n8^{-iZ$rjZU0h5H8rbn0|T?v$~sy`^%tAC zEm?N|@s@LOZ`3|PA0c#6=ziYOGsqbsw|Exqn7p!abb4tyhd90JFDkM?3Ikk5#`vPHCus#<1Y2`!!c>=;J1{H$h_kDy-JQ>Yl^`Mi`Gz{Dbac{rq) zo9gIY#6&B^a@!PePlIj>;+`}PHLK1m5qAt;ZmTJ!93{D}U(BgX7rPJNIc`a2ZPIL*aKjhrce4vV4uHYvs6+nb#cCsNnS!|Dnbjd?B z88>+&5km&;(IY*g_<~ZC!1m6_9em$5vuW@qvlkH!RF0S(tnVRy1eJZfV+y&{d~pv+ z&Ig*R13YCrnD(ld;kq}~(@4Y9XbBD7)aJ2m3@RRmR7+3-W;ZH}a*D#yHCHUx*kwFT z7)*-{i8}b_rTXddS!_Ay{EOvS2#q#@bzFuT@k@4hv5%r^ZR)q3$oiHxTibwYUVobV zc*019lMV)x0GwB(;dy3%iXAO#39u1Rv^n#;BZC~L~gIh z=)$0C_k_GRCKFQI$Y{AH{@b5BTK(g%^*7^iBGvpv=|tr3mBWcK$gW_BiO~j5d4FL@ zwwOpZ+tucLM=OG*ma)}{zxlkUW1u|0qR1km*fLdp^XLA^nnW=Xy!f1>ZPV}?f=(WC zEd-c3`tSSytI(A(=<^6`TlLy-e=k8s715T**qm#nzo#MuH1V27E6^S5d_+%$B zz`4J3F0^Uq8Y7}@GEvCQ?i7cl2*lKTT=E`rk$q%wpshHHVrE23MaZf&(xqV^d^`|? z>O|^;@X@&5q&BT94|!&{bs*oktkCZ!#Fm2JOulq3bRHP)+o!fzIyV52DKQO_1IN)n zFbxs`Z_WD+LrBTaRg%0GKJE%$I=Xd&rEdX#NZ6R%JNx<#y*i z9#BlfG8zqFqEdLqE&jcJr`Qf6(Hg{5dVB;V90~@Uzd#l-*t2JCfsU4JiScV1C8dq1 z2cSaCZ8IOE(M}(Qq<1KgWC`l_D7O~jX|pLi|KJ0~up*<;26a8n`_x`&X#0Z2?>Gs; z%`l72X)kU7W@MXUID%J=EfvFnFFuj% zd^{e5h-EShQkAk?4r5xYY@Ss}0@R}N5U+Qo9uDp%s~(qu6Jk#2uBaI1$Xmy|MFqsL z8YY;~uX|v;^*(p7d*7Ie$&?2_ynDg#)p?W8U&@=sc;bpe0rn2nbZ{{7i8}c-7SG!U>GS(sCAYSyeR;GFKgA zs#u?bGaZ812u-g6lS02_63tEv%tE!yh~rQicJVe^I=R_7j5IMZZPG*Xd_;)Tul-R#ZZ@B5dkK4UBg1^$y1^RLyPiNIcJ>gS5z&aPnj>W-tE(0=Znq)$XQ z%1D2#9bq(a6?pYHtj`&H8fOV~1At)bT5rp++}!c%$9S{ zduB}<6`eVYziC>1mxcjUDU&)z|0FTwKF)ac%DQmQ2Vds0>%{Hvf+T)m-g>2EVjiCQ z(>^3m=n!(FAsu^t&H%d)0?EGR92|Bn9}|N`Oyk)Kp}K2}Zy>>n#ctpkQFH!`di>F5 z&2qmk!)dc&<;^dzkfZAUx9u;!@-96l!9fp;i5Tcr3_L5lZ9)$3%nv%RKT6~z$BQWi zQb>g;UGiLSuZPdRn^$T=GhGEGJ^SpR|0Cy=9sjPn!B=t-Ce#1!d;Mp2(SIk~(WL6_ z81t|hjB#M^w)5bgj+S4q94*u+v}AjE<$yskD>4>UsAQNt4TbVT0s%u|3VgY9=YBOH zR9yE7v8PAC$CMuAAGg zmZ~+ z$y(jr-(L6aFO47X_5OASJNP*ee6i@mqQ+CxgwOr&wQZd{V-mRmSW8AEk?BvUVPTK2&=Ig@+q7CPL!t#)%feXA5 z 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 Qm_UExLHFk2zPq3P15H0EF8}}l literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls b/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls new file mode 100644 index 0000000000000000000000000000000000000000..6b71a77f2d0e03b699cecc29f6bc31f5c413e84e GIT binary patch literal 21504 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 literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/TwoSheetsOneHidden.xls b/src/testcases/org/apache/poi/hssf/data/TwoSheetsOneHidden.xls new file mode 100644 index 0000000000000000000000000000000000000000..940ffc058296fe3ad0839855c1b9e9ed6f50c889 GIT binary patch literal 13824 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

    QP43(wznmzxB=z3KHKLF7l22$LdNk=r z%=+=2 zJvjV9mkR$b@D0L~6?eoa;@P|5W?!BgMTe8qyGAw-`@vbCjaZW?5rGYN8y6wzme9?m z75kRkSPV~D4qu6nWLQgj)z0xMu>|X=^*dU{^o2!Bma6oC0c)(i)tqN|zeCW`-85b; zB%ADzC?Y{ti)>u2bv#_%Ji*qk9=6};gsiOoTO>kKD?UZt30d5T*pK{*RR9A?XsMAj zp#`l?$mVf@+Ho9GV@!xxixMw`Y$e!|foX>oqstYX#7wq}xZyVIbHPh-jnk=w0Sq2=KMJv=(q z&iC9b@FZ!x)+Z-E-`n!z4t>)&X~I|WWa-P6Zl*~y0OM;F?u2w-C?+F@sSURKQrr3o zQ5Hpc>)lnsB)fO)uLiBOC})-JR#rOd#qie#heBdz+0Bx9*bW2bCDF>4PS&SOJCIQO zHH@Wj?}%g|TeQ#s0OFrPXzAwmF9wm|`|HR~?bcfTrp&kx2p{fGI2h;YuT$ss#P%{@ zZ|s^CO@;T=f<}lNB`?GWql#g}k+*LMTy9No(wN@frORq0M)(@meCDyE5#3c^^~MNT z_$qnXeS>vf&9?o1I0IldP4bL=3V{`41E{xoTVo-lYvhsG8m07>XONdGEh!-%3THUc zw-sFQy_gDR=@>XvCk#L}l=owl#-Ck&4tZBmTr|x9ly)Y%hNAAy5H4h*D_+zlBJTf* z!nQepz~Dm}C+Q;QCsRSM>$aHkgI%-2I z!MVGRDsuEKd8IyrQyHhii7rLD359FO4rpGB$wV$Gg#SW1`&i5R(Cp490xnVK9em7W z)@)`M0^_b|$13KF=u<1T1p)jvwAaO}S=yhaRRSCiS_G4|v?qzKA6zIleALw0W4b)Y z0OGA=xL2Q2H+@wiiHC`TVl}Inp$!8|drhA4Z9RQ;+2!lBwt^E{ZCcJE>G;R_yZ z^AJmT=5l{DQwS2Szk*rZfd@4cIbk)(lNfm-HHx(*#9G1L(!u2$m?abCaC^ROD2DrB z*Ef%QUt?Cq#m$i=A}+o~XP=USQ?#`7-2F_t?ebGiw4!tNixT@>Cleidt_0~0g0`Hb zaSSLqm2z|80H!n#-^{99s_B-r1W;e-w(UK=X`yg90o-=suA1tE3S?{~@n!rmQy(aK8KbxqN-q z_-gI+hw(ey@5WavsaG9bEkXQnu!>Z3$hY|R@4plz{`X!WB)|3YeKmd6%hko-k7qd| z{jHbpOTnvNuIld}UY=8Y_wtJxzv|(tV*TM^fbvfdf9uz)rvH>GKMVl?Tp9r27vXZ% x{GUnYXY(YwpUnSCIajT(vigVpZN~4<{SS`osAC{;`c0D)0Mw9BX9a%y^GPe literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/data/sample.xlsx b/src/testcases/org/apache/poi/hssf/data/sample.xlsx index 2eb36ee2a0a1c3d1ce59617161d522cf86f0564b..a275cf417e01a78f9562b1b13725a404f234d5d1 100644 GIT binary patch literal 12050 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 I{_*Mm0DX*4GXMYp literal 8836 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

    QP43(wznmzxB=z3KHKLF7l22$LdNk=r z%=+=2 zJvjV9mkR$b@D0L~6?eoa;@P|5W?!BgMTe8qyGAw-`@vbCjaZW?5rGYN8y6wzme9?m z75kRkSPV~D4qu6nWLQgj)z0xMu>|X=^*dU{^o2!Bma6oC0c)(i)tqN|zeCW`-85b; zB%ADzC?Y{ti)>u2bv#_%Ji*qk9=6};gsiOoTO>kKD?UZt30d5T*pK{*RR9A?XsMAj zp#`l?$mVf@+Ho9GV@!xxixMw`Y$e!|foX>oqstYX#7wq}xZyVIbHPh-jnk=w0Sq2=KMJv=(q z&iC9b@FZ!x)+Z-E-`n!z4t>)&X~I|WWa-P6Zl*~y0OM;F?u2w-C?+F@sSURKQrr3o zQ5Hpc>)lnsB)fO)uLiBOC})-JR#rOd#qie#heBdz+0Bx9*bW2bCDF>4PS&SOJCIQO zHH@Wj?}%g|TeQ#s0OFrPXzAwmF9wm|`|HR~?bcfTrp&kx2p{fGI2h;YuT$ss#P%{@ zZ|s^CO@;T=f<}lNB`?GWql#g}k+*LMTy9No(wN@frORq0M)(@meCDyE5#3c^^~MNT z_$qnXeS>vf&9?o1I0IldP4bL=3V{`41E{xoTVo-lYvhsG8m07>XONdGEh!-%3THUc zw-sFQy_gDR=@>XvCk#L}l=owl#-Ck&4tZBmTr|x9ly)Y%hNAAy5H4h*D_+zlBJTf* z!nQepz~Dm}C+Q;QCsRSM>$aHkgI%-2I z!MVGRDsuEKd8IyrQyHhii7rLD359FO4rpGB$wV$Gg#SW1`&i5R(Cp490xnVK9em7W z)@)`M0^_b|$13KF=u<1T1p)jvwAaO}S=yhaRRSCiS_G4|v?qzKA6zIleALw0W4b)Y z0OGA=xL2Q2H+@wiiHC`TVl}Inp$!8|drhA4Z9RQ;+2!lBwt^E{ZCcJE>G;R_yZ z^AJmT=5l{DQwS2Szk*rZfd@4cIbk)(lNfm-HHx(*#9G1L(!u2$m?abCaC^ROD2DrB z*Ef%QUt?Cq#m$i=A}+o~XP=USQ?#`7-2F_t?ebGiw4!tNixT@>Cleidt_0~0g0`Hb zaSSLqm2z|80H!n#-^{99s_B-r1W;e-w(UK=X`yg90o-=suA1tE3S?{~@n!rmQy(aK8KbxqN-q z_-gI+hw(ey@5WavsaG9bEkXQnu!>Z3$hY|R@4plz{`X!WB)|3YeKmd6%hko-k7qd| z{jHbpOTnvNuIld}UY=8Y_wtJxzv|(tV*TM^fbvfdf9uz)rvH>GKMVl?Tp9r27vXZ% x{GUnYXY(YwpUnSCIajT(vigVpZN~4<{SS`osAC{;`c0D)0Mw9BX9a%y^GPe diff --git a/src/testcases/org/apache/poi/hssf/data/templateExcelWithAutofilter.xls b/src/testcases/org/apache/poi/hssf/data/templateExcelWithAutofilter.xls new file mode 100644 index 0000000000000000000000000000000000000000..5813fde385ca4cb431c9f09c2f5e071ce2a7fb18 GIT binary patch literal 13824 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 40960); + } public void testStringConcat() throws Exception { String path = System.getProperty("HSSF.testdata.path"); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java b/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java new file mode 100644 index 000000000..f970ff26f --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java @@ -0,0 +1,910 @@ +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + 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. +==================================================================== */ + +package org.apache.poi.hssf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.hssf.util.*; + +import java.io.*; +import java.util.*; +import java.text.SimpleDateFormat; + +/** + *

    Title: TestDataValidation

    + *

    Description: Class for testing Excel's data validation mechanism + * Second test : + * - + *

    + * @author Dragos Buleandra ( dragos.buleandra@trade2b.ro ) + */ +public class TestDataValidation extends TestCase +{ + public TestDataValidation(String name) + { + super(name); + } + + protected void setUp() + { + String filename = System.getProperty("HSSF.testdata.path"); + if (filename == null) + { + System.setProperty("HSSF.testdata.path", "src/testcases/org/apache/poi/hssf/data"); + } + } + + public void testDataValidation() throws Exception + { + System.out.println("\nTest no. 2 - Test Excel's Data validation mechanism"); + String resultFile = System.getProperty("HSSF.testdata.path")+"/TestDataValidation.xls"; + HSSFWorkbook wb = new HSSFWorkbook(); + + HSSFCellStyle style_1 = this.createStyle( wb, HSSFCellStyle.ALIGN_LEFT ); + HSSFCellStyle style_2 = this.createStyle( wb, HSSFCellStyle.ALIGN_CENTER ); + HSSFCellStyle style_3 = this.createStyle( wb, HSSFCellStyle.ALIGN_CENTER, HSSFColor.GREY_25_PERCENT.index, true ); + HSSFCellStyle style_4 = this.createHeaderStyle(wb); + HSSFDataValidation data_validation = null; + + //data validation's number types + System.out.print(" Create sheet for Data Validation's number types ... "); + HSSFSheet fSheet = wb.createSheet("Number types"); + + //"Whole number" validation type + this.createDVTypeRow( wb, 0, style_3, "Whole number"); + this.createHeaderRow( wb, 0, style_4 ); + + short start_row = (short)fSheet.getPhysicalNumberOfRows(); + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_INTEGER); + data_validation.setOperator(HSSFDataValidation.OPERATOR_BETWEEN); + data_validation.setFirstFormula("2"); + data_validation.setSecondFormula("6"); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Between 2 and 6 ", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+1)); + data_validation.setLastRow((short)(start_row+1)); + data_validation.setEmptyCellAllowed(false); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_BETWEEN); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_INFO); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not between 2 and 6 ", false, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = INFO" ); + + data_validation.setFirstRow((short)(start_row+2)); + data_validation.setLastRow((short)(start_row+2)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_EQUAL); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Equal to 3", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + data_validation.setFirstRow((short)(start_row+3)); + data_validation.setLastRow((short)(start_row+3)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not equal to 3", false, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+4)); + data_validation.setLastRow((short)(start_row+4)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than 3", true, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+5)); + data_validation.setLastRow((short)(start_row+5)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than 3", true, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+6)); + data_validation.setLastRow((short)(start_row+6)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP); + data_validation.setShowErrorBox(true); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than or equal to 4", true, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+7)); + data_validation.setLastRow((short)(start_row+7)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than or equal to 4", false, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + //"Decimal" validation type + this.createDVTypeRow( wb, 0, style_3, "Decimal"); + this.createHeaderRow( wb, 0, style_4 ); + + start_row += (short)(8+4); + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_DECIMAL); + data_validation.setOperator(HSSFDataValidation.OPERATOR_BETWEEN); + data_validation.setFirstFormula("2"); + data_validation.setSecondFormula("6"); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Between 2 and 6 ", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+1)); + data_validation.setLastRow((short)(start_row+1)); + data_validation.setEmptyCellAllowed(false); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_BETWEEN); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_INFO); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not between 2 and 6 ", false, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = INFO" ); + + data_validation.setFirstRow((short)(start_row+2)); + data_validation.setLastRow((short)(start_row+2)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_EQUAL); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Equal to 3", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + data_validation.setFirstRow((short)(start_row+3)); + data_validation.setLastRow((short)(start_row+3)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not equal to 3", false, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+4)); + data_validation.setLastRow((short)(start_row+4)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than 3", true, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+5)); + data_validation.setLastRow((short)(start_row+5)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than 3", true, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+6)); + data_validation.setLastRow((short)(start_row+6)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP); + data_validation.setShowErrorBox(true); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than or equal to 4", true, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+7)); + data_validation.setLastRow((short)(start_row+7)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than or equal to 4", false, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + System.out.println("done !"); + + //"List" Data Validation type + /** @todo List*/ + System.out.print(" Create sheet for 'List' Data Validation type ... "); + fSheet = wb.createSheet("Lists"); + + this.createDVTypeRow( wb, 1, style_3, "Explicit lists - list items are explicitly provided"); + this.createDVDeescriptionRow( wb, 1, style_3, "Disadvantage - sum of item's length should be less than 255 characters"); + this.createHeaderRow( wb, 1, style_4 ); + + start_row = (short)fSheet.getPhysicalNumberOfRows(); + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula("1+2+3"); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(false); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "POIFS,HSSF,HWPF,HPSF", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=yes" ); + + data_validation = new HSSFDataValidation((short)(start_row+1),(short)0,(short)(start_row+1),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula("4+5+6+7"); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(false); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "POIFS,HSSF,HWPF,HPSF", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=yes" ); + + data_validation = new HSSFDataValidation((short)(start_row+2),(short)0,(short)(start_row+2),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula("7+21"); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(true); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "POIFS,HSSF,HWPF,HPSF", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=no" ); + + data_validation = new HSSFDataValidation((short)(start_row+3),(short)0,(short)(start_row+3),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula("8/2"); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(true); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "POIFS,HSSF,HWPF,HPSF", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=no" ); + + this.createDVTypeRow( wb, 1, style_3, "Reference lists - list items are taken from others cells"); + this.createDVDeescriptionRow( wb, 1, style_3, "Advantage - no restriction regarding the sum of item's length"); + this.createHeaderRow( wb, 1, style_4 ); + + start_row += (short)(4+5); + String cellStrValue = "a b c d e f g h i j k l m n o p r s t u v x y z w 0 1 2 3 4 "+ + "a b c d e f g h i j k l m n o p r s t u v x y z w 0 1 2 3 4 "+ + "a b c d e f g h i j k l m n o p r s t u v x y z w 0 1 2 3 4 "+ + "a b c d e f g h i j k l m n o p r s t u v x y z w 0 1 2 3 4 "; + + String strFormula = "$A$100:$A$120"; + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula(strFormula); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(false); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, strFormula, true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=yes" ); + + data_validation = new HSSFDataValidation((short)(start_row+1),(short)0,(short)(start_row+1),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula(strFormula); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(false); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, strFormula, false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=yes" ); + + data_validation = new HSSFDataValidation((short)(start_row+2),(short)0,(short)(start_row+2),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula(strFormula); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(true); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, strFormula, true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=no" ); + + data_validation = new HSSFDataValidation((short)(start_row+3),(short)0,(short)(start_row+3),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST); + data_validation.setFirstFormula(strFormula); + data_validation.setSecondFormula(null); + data_validation.setSurppressDropDownArrow(true); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, strFormula, false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type=STOP ; In-cell dropdown=no" ); + + for (int i=100; i<=120; i++) + { + HSSFRow currRow = fSheet.createRow(i); + currRow.createCell((short)0).setCellValue(cellStrValue); +// currRow.hide( true ); + } + + System.out.println("done !"); + + //Date/Time Validation type + System.out.print(" Create sheet for 'Date' and 'Time' Data Validation types ... "); + fSheet = wb.createSheet("Date_Time"); + SimpleDateFormat df = new SimpleDateFormat("m/d/yyyy"); + HSSFDataFormat dataFormat = wb.createDataFormat(); + short fmtDate = dataFormat.getFormat("m/d/yyyy"); + short fmtTime = dataFormat.getFormat("h:mm"); + HSSFCellStyle cellStyle_data = wb.createCellStyle(); + cellStyle_data.setDataFormat(fmtDate); + HSSFCellStyle cellStyle_time = wb.createCellStyle(); + cellStyle_time.setDataFormat(fmtTime); + + this.createDVTypeRow( wb, 2, style_3, "Date ( cells are already formated as date - m/d/yyyy)"); + this.createHeaderRow( wb, 2, style_4 ); + + start_row = (short)fSheet.getPhysicalNumberOfRows(); + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_DATE); + data_validation.setOperator(HSSFDataValidation.OPERATOR_BETWEEN); + + data_validation.setFirstFormula( String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("1/2/2004"))) ); + data_validation.setSecondFormula( String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("1/6/2004"))) ); + + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Between 1/2/2004 and 1/6/2004 ", true, true, true ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+1)); + data_validation.setLastRow((short)(start_row+1)); + data_validation.setEmptyCellAllowed(false); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_BETWEEN); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_INFO); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not between 1/2/2004 and 1/6/2004 ", false, true, true ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "Error box type = INFO" ); + + data_validation.setFirstRow((short)(start_row+2)); + data_validation.setLastRow((short)(start_row+2)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/2/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_EQUAL); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Equal to 3/2/2004", false, false, true ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + data_validation.setFirstRow((short)(start_row+3)); + data_validation.setLastRow((short)(start_row+3)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/2/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not equal to 3/2/2004", false, false, false ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+4)); + data_validation.setLastRow((short)(start_row+4)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/2/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than 3/2/2004", true, false, false ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+5)); + data_validation.setLastRow((short)(start_row+5)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/2/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than 3/2/2004", true, true, false ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+6)); + data_validation.setLastRow((short)(start_row+6)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP); + data_validation.setShowErrorBox(true); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/2/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than or equal to 3/2/2004", true, false, true ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+7)); + data_validation.setLastRow((short)(start_row+7)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("3/4/2004")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than or equal to 3/4/2004", false, true, false ); + this.setCellFormat( fSheet, cellStyle_data ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + //"Time" validation type + this.createDVTypeRow( wb, 2, style_3, "Time ( cells are already formated as time - h:mm)"); + this.createHeaderRow( wb, 2, style_4 ); + + df = new SimpleDateFormat("hh:mm"); + + start_row += (short)(8+4); + data_validation = new HSSFDataValidation((short)(start_row),(short)0,(short)(start_row),(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_TIME); + data_validation.setOperator(HSSFDataValidation.OPERATOR_BETWEEN); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("12:00")))); + data_validation.setSecondFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("16:00")))); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Between 12:00 and 16:00 ", true, true, true ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+1)); + data_validation.setLastRow((short)(start_row+1)); + data_validation.setEmptyCellAllowed(false); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_BETWEEN); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_INFO); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not between 12:00 and 16:00 ", false, true, true ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "Error box type = INFO" ); + + data_validation.setFirstRow((short)(start_row+2)); + data_validation.setLastRow((short)(start_row+2)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setFirstFormula(String.valueOf((int)HSSFDateUtil.getExcelDate(df.parse("13:35")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_EQUAL); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Equal to 13:35", false, false, true ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + data_validation.setFirstRow((short)(start_row+3)); + data_validation.setLastRow((short)(start_row+3)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("13:35")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not equal to 13:35", false, false, false ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+4)); + data_validation.setLastRow((short)(start_row+4)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("12:00")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than 12:00", true, false, false ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+5)); + data_validation.setLastRow((short)(start_row+5)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("12:00")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than 12:00", true, true, false ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)(start_row+6)); + data_validation.setLastRow((short)(start_row+6)); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP); + data_validation.setShowErrorBox(true); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("14:00")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than or equal to 14:00", true, false, true ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)(start_row+7)); + data_validation.setLastRow((short)(start_row+7)); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula(String.valueOf(HSSFDateUtil.getExcelDate(df.parse("14:00")))); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than or equal to 14:00", false, true, false ); + this.setCellFormat( fSheet, cellStyle_time ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + System.out.println("done !"); + + //"Text length" validation type + System.out.print(" Create sheet for 'Text length' Data Validation type... "); + fSheet = wb.createSheet("Text length"); + this.createHeaderRow( wb, 3, style_4 ); + + data_validation = new HSSFDataValidation((short)1,(short)0,(short)1,(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_TEXT_LENGTH); + data_validation.setOperator(HSSFDataValidation.OPERATOR_BETWEEN); + data_validation.setFirstFormula("2"); + data_validation.setSecondFormula("6"); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Between 2 and 6 ", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)2); + data_validation.setLastRow((short)2); + data_validation.setEmptyCellAllowed(false); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_BETWEEN); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_INFO); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not between 2 and 6 ", false, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = INFO" ); + + data_validation.setFirstRow((short)3); + data_validation.setLastRow((short)3); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_EQUAL); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Equal to 3", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + data_validation.setFirstRow((short)4); + data_validation.setLastRow((short)4); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_NOT_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Not equal to 3", false, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)5); + data_validation.setLastRow((short)5); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than 3", true, false, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)6); + data_validation.setLastRow((short)6); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("3"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_THAN); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than 3", true, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + + data_validation.setFirstRow((short)7); + data_validation.setLastRow((short)7); + data_validation.setEmptyCellAllowed(true); + data_validation.setShowPromptBox(false); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP); + data_validation.setShowErrorBox(true); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_GREATER_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Greater than or equal to 4", true, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation.setFirstRow((short)8); + data_validation.setLastRow((short)8); + data_validation.setEmptyCellAllowed(false); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(false); + data_validation.setFirstFormula("4"); + data_validation.setSecondFormula(null); + data_validation.setOperator(HSSFDataValidation.OPERATOR_LESS_OR_EQUAL); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "Less than or equal to 4", false, true, false ); + this.writeOtherSettings( fSheet, style_1, "-" ); + System.out.println("done !"); + + //Custom Validation type + System.out.print(" Create sheet for 'Custom' Data Validation type ... "); + fSheet = wb.createSheet("Custom"); + this.createHeaderRow( wb, 4, style_4 ); + + data_validation = new HSSFDataValidation((short)1,(short)0,(short)1,(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_FORMULA); + data_validation.setFirstFormula("ISNUMBER($A2)"); + data_validation.setSecondFormula(null); + data_validation.setShowPromptBox(true); + data_validation.setShowErrorBox(true); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.createPromptBox("Hi , dear user !", "So , you just selected me ! Thanks !"); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "ISNUMBER(A2)", true, true, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = STOP" ); + + data_validation = new HSSFDataValidation((short)2,(short)0,(short)2,(short)0); + data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_FORMULA); + data_validation.setFirstFormula("IF(SUM(A2:A3)=5,TRUE,FALSE)"); + data_validation.setSecondFormula(null); + data_validation.setShowPromptBox(false); + data_validation.setShowErrorBox(true); + data_validation.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING); + data_validation.createErrorBox("Invalid input !", "Something is wrong ; check condition !"); + data_validation.setEmptyCellAllowed(false); + fSheet.addValidationData(data_validation); + this.writeDataValidationSettings( fSheet, style_1, style_2, "IF(SUM(A2:A3)=5,TRUE,FALSE)", false, false, true ); + this.writeOtherSettings( fSheet, style_1, "Error box type = WARNING" ); + + System.out.println("done !"); + + //so , everything it's ok for now ; it remains for you to open the file + System.out.println("\n Everything it's ok since we've got so far -:) !\n"+ + " In order to complete the test , it remains for you to open the file \n"+ + " and see if there are four sheets , as described !"); + System.out.println(" File was saved in \""+resultFile+"\""); + + FileOutputStream fileOut = new FileOutputStream(resultFile); + wb.write(fileOut); + fileOut.close(); + } + + private void createDVTypeRow( HSSFWorkbook wb, int sheetNo , HSSFCellStyle cellStyle, String strTypeDescription) + { + HSSFSheet sheet = wb.getSheetAt(sheetNo); + HSSFRow row = sheet.createRow(sheet.getPhysicalNumberOfRows()); + row = sheet.createRow(sheet.getPhysicalNumberOfRows()); + sheet.addMergedRegion(new Region((short)(sheet.getPhysicalNumberOfRows()-1),(short)0,(short)(sheet.getPhysicalNumberOfRows()-1),(short)5)); + HSSFCell cell = row.createCell((short)0); + cell.setCellValue(strTypeDescription); + cell.setCellStyle(cellStyle); + row = sheet.createRow(sheet.getPhysicalNumberOfRows()); + } + + private void createDVDeescriptionRow( HSSFWorkbook wb, int sheetNo , HSSFCellStyle cellStyle, String strTypeDescription ) + { + HSSFSheet sheet = wb.getSheetAt(sheetNo); + HSSFRow row = sheet.getRow(sheet.getPhysicalNumberOfRows()-1); + sheet.addMergedRegion(new Region((short)(sheet.getPhysicalNumberOfRows()-1),(short)0,(short)(sheet.getPhysicalNumberOfRows()-1),(short)5)); + HSSFCell cell = row.createCell((short)0); + cell.setCellValue(strTypeDescription); + cell.setCellStyle(cellStyle); + row = sheet.createRow(sheet.getPhysicalNumberOfRows()); + } + + private void createHeaderRow( HSSFWorkbook wb, int sheetNo , HSSFCellStyle cellStyle ) + { + HSSFSheet sheet = wb.getSheetAt(sheetNo); + HSSFRow row = sheet.createRow(sheet.getPhysicalNumberOfRows()); + row.setHeight((short)400); + for ( int i=0; i<6; i++ ) + { + row.createCell((short)i).setCellStyle( cellStyle ); + if ( i==2 || i==3 || i==4 ) + { + sheet.setColumnWidth( (short) i, (short) 3500); + } + else if ( i== 5) + { + sheet.setColumnWidth( (short) i, (short) 10000); + } + else + { + sheet.setColumnWidth( (short) i, (short) 8000); + } + } + HSSFCell cell = row.getCell((short)0); + cell.setCellValue("Data validation cells"); + cell = row.getCell((short)1); + cell.setCellValue("Condition"); + cell = row.getCell((short)2); + cell.setCellValue("Allow blank"); + cell = row.getCell((short)3); + cell.setCellValue("Prompt box"); + cell = row.getCell((short)4); + cell.setCellValue("Error box"); + cell = row.getCell((short)5); + cell.setCellValue("Other settings"); + } + + private HSSFCellStyle createHeaderStyle(HSSFWorkbook wb) + { + HSSFFont font = wb.createFont(); + font.setColor( HSSFColor.WHITE.index ); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + + HSSFCellStyle cellStyle = wb.createCellStyle(); + cellStyle.setFillForegroundColor(HSSFColor.BLUE_GREY.index); + cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); + cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); + cellStyle.setLeftBorderColor(HSSFColor.WHITE.index); + cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); + cellStyle.setTopBorderColor(HSSFColor.WHITE.index); + cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); + cellStyle.setRightBorderColor(HSSFColor.WHITE.index); + cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); + cellStyle.setBottomBorderColor(HSSFColor.WHITE.index); + cellStyle.setFont(font); + return cellStyle; + } + + private HSSFCellStyle createStyle( HSSFWorkbook wb, short h_align, short color, boolean bold ) + { + HSSFFont font = wb.createFont(); + if ( bold ) + { + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + } + + HSSFCellStyle cellStyle = wb.createCellStyle(); + cellStyle.setFont(font); + cellStyle.setFillForegroundColor(color); + cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + cellStyle.setAlignment(h_align); + cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); + cellStyle.setLeftBorderColor(HSSFColor.BLACK.index); + cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); + cellStyle.setTopBorderColor(HSSFColor.BLACK.index); + cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); + cellStyle.setRightBorderColor(HSSFColor.BLACK.index); + cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); + cellStyle.setBottomBorderColor(HSSFColor.BLACK.index); + + return cellStyle; + } + + private HSSFCellStyle createStyle( HSSFWorkbook wb, short h_align ) + { + return this.createStyle(wb, h_align, HSSFColor.WHITE.index, false); + } + + private void writeDataValidationSettings( HSSFSheet sheet, HSSFCellStyle style_1, HSSFCellStyle style_2, String strCondition, boolean allowEmpty, boolean inputBox, boolean errorBox ) + { + HSSFRow row = sheet.createRow( sheet.getPhysicalNumberOfRows() ); + //condition's string + HSSFCell cell = row.createCell((short)1); + cell.setCellStyle(style_1); + cell.setCellValue(strCondition); + //allow empty cells + cell = row.createCell((short)2); + cell.setCellStyle(style_2); + cell.setCellValue( ((allowEmpty) ? "yes" : "no") ); + //show input box + cell = row.createCell((short)3); + cell.setCellStyle(style_2); + cell.setCellValue( ((inputBox) ? "yes" : "no") ); + //show error box + cell = row.createCell((short)4); + cell.setCellStyle(style_2); + cell.setCellValue( ((errorBox) ? "yes" : "no") ); + } + + private void setCellFormat( HSSFSheet sheet, HSSFCellStyle cell_style ) + { + HSSFRow row = sheet.getRow( sheet.getPhysicalNumberOfRows() -1 ); + HSSFCell cell = row.createCell((short)0); + cell.setCellStyle(cell_style); + } + + private void writeOtherSettings( HSSFSheet sheet, HSSFCellStyle style, String strStettings ) + { + HSSFRow row = sheet.getRow( sheet.getPhysicalNumberOfRows() -1 ); + HSSFCell cell = row.createCell((short)5); + cell.setCellStyle(style); + cell.setCellValue(strStettings); + } + + public static void main(String[] args) + { + junit.textui.TestRunner.run(TestDataValidation.class); + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java index 574266026..ee3cace26 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java @@ -44,6 +44,7 @@ import java.util.GregorianCalendar; * paticular datatypes, etc. * @author Andrew C. Oliver (andy at superlinksoftware dot com) * @author Dan Sherman (dsherman at isisph.com) + * @author Alex Jacoby (ajacoby at gmail.com) */ public class TestHSSFCell @@ -107,42 +108,106 @@ extends TestCase { } /** - * Checks that the recognition of files using 1904 date windowing - * is working properly. Conversion of the date is also an issue, - * but there's a separate unit test for that. - */ - public void testDateWindowing() throws Exception { - GregorianCalendar cal = new GregorianCalendar(2000,0,1); // Jan. 1, 2000 - Date date = cal.getTime(); - String path = System.getProperty("HSSF.testdata.path"); + * Checks that the recognition of files using 1904 date windowing + * is working properly. Conversion of the date is also an issue, + * but there's a separate unit test for that. + */ + public void testDateWindowingRead() throws Exception { + GregorianCalendar cal = new GregorianCalendar(2000,0,1); // Jan. 1, 2000 + Date date = cal.getTime(); + String path = System.getProperty("HSSF.testdata.path"); - // first check a file with 1900 Date Windowing - String filename = path + "/1900DateWindowing.xls"; - FileInputStream stream = new FileInputStream(filename); - POIFSFileSystem fs = new POIFSFileSystem(stream); - HSSFWorkbook workbook = new HSSFWorkbook(fs); - HSSFSheet sheet = workbook.getSheetAt(0); + // first check a file with 1900 Date Windowing + String filename = path + "/1900DateWindowing.xls"; + FileInputStream stream = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); - assertEquals("Date from file using 1900 Date Windowing", - date.getTime(), - sheet.getRow(0).getCell((short)0) - .getDateCellValue().getTime()); - stream.close(); - - // now check a file with 1904 Date Windowing - filename = path + "/1904DateWindowing.xls"; - stream = new FileInputStream(filename); - fs = new POIFSFileSystem(stream); - workbook = new HSSFWorkbook(fs); - sheet = workbook.getSheetAt(0); + assertEquals("Date from file using 1900 Date Windowing", + date.getTime(), + sheet.getRow(0).getCell((short)0) + .getDateCellValue().getTime()); + stream.close(); + + // now check a file with 1904 Date Windowing + filename = path + "/1904DateWindowing.xls"; + stream = new FileInputStream(filename); + fs = new POIFSFileSystem(stream); + workbook = new HSSFWorkbook(fs); + sheet = workbook.getSheetAt(0); - assertEquals("Date from file using 1904 Date Windowing", - date.getTime(), - sheet.getRow(0).getCell((short)0) - .getDateCellValue().getTime()); - stream.close(); - } - + assertEquals("Date from file using 1904 Date Windowing", + date.getTime(), + sheet.getRow(0).getCell((short)0) + .getDateCellValue().getTime()); + stream.close(); + } + + /** + * Checks that dates are properly written to both types of files: + * those with 1900 and 1904 date windowing. Note that if the + * previous test ({@link #testDateWindowingRead}) fails, the + * results of this test are meaningless. + */ + public void testDateWindowingWrite() throws Exception { + GregorianCalendar cal = new GregorianCalendar(2000,0,1); // Jan. 1, 2000 + Date date = cal.getTime(); + String path = System.getProperty("HSSF.testdata.path"); + + // first check a file with 1900 Date Windowing + String filename = path + "/1900DateWindowing.xls"; + writeCell(filename, 0, (short) 1, date); + assertEquals("Date from file using 1900 Date Windowing", + date.getTime(), + readCell(filename, 0, (short) 1).getTime()); + + // now check a file with 1904 Date Windowing + filename = path + "/1904DateWindowing.xls"; + writeCell(filename, 0, (short) 1, date); + assertEquals("Date from file using 1900 Date Windowing", + date.getTime(), + readCell(filename, 0, (short) 1).getTime()); + } + + /** + * Sets cell value and writes file. + */ + private void writeCell(String filename, + int rowIdx, short colIdx, Date date) throws Exception { + FileInputStream stream = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFRow row = sheet.getRow(rowIdx); + HSSFCell cell = row.getCell(colIdx); + + if (cell == null) { + cell = row.createCell(colIdx); + } + cell.setCellValue(date); + + // Write the file + stream.close(); + FileOutputStream oStream = new FileOutputStream(filename); + workbook.write(oStream); + oStream.close(); + } + + /** + * Reads cell value from file. + */ + private Date readCell(String filename, + int rowIdx, short colIdx) throws Exception { + FileInputStream stream = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFRow row = sheet.getRow(rowIdx); + HSSFCell cell = row.getCell(colIdx); + return cell.getDateCellValue(); + } + /** * Tests that the active cell can be correctly read and set */ diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java index 10c4e390c..655f78edd 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java @@ -85,4 +85,23 @@ public class TestHSSFClientAnchor extends TestCase assertEquals(anchor[i].getRow2(), record.getRow2()); } } + + public void testAnchorHeightInPoints(){ + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(); + + HSSFClientAnchor[] anchor = { + new HSSFClientAnchor( 0 , 0, 0 , 0 ,(short)0, 1,(short)1, 3), + new HSSFClientAnchor( 0 , 254 , 0 , 126 ,(short)0, 1,(short)1, 3), + new HSSFClientAnchor( 0 , 128 , 0 , 128 ,(short)0, 1,(short)1, 3), + new HSSFClientAnchor( 0 , 0 , 0 , 128 ,(short)0, 1,(short)1, 3), + }; + float[] ref = {24.0f, 18.0f, 24.0f, 30.0f}; + for (int i = 0; i < anchor.length; i++) { + float height = anchor[i].getAnchorHeightInPoints(sheet); + assertEquals(ref[i], height, 0); + } + + } + } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java index f8aeb8517..6b37f749e 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -36,6 +36,8 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; * * @author Dan Sherman (dsherman at isisph.com) * @author Hack Kampbjorn (hak at 2mba.dk) + * @author Pavel Krupets (pkrupets at palmtreebusiness dot com) + * @author Alex Jacoby (ajacoby at gmail.com) * @version %I%, %G% */ @@ -47,7 +49,9 @@ public class TestHSSFDateUtil public static final int CALENDAR_FEBRUARY = 1; public static final int CALENDAR_MARCH = 2; public static final int CALENDAR_APRIL = 3; - + public static final int CALENDAR_JULY = 6; + public static final int CALENDAR_OCTOBER = 9; + public TestHSSFDateUtil(String s) { super(s); @@ -67,10 +71,10 @@ public class TestHSSFDateUtil GregorianCalendar date = new GregorianCalendar(2002, 0, 1, hour, 1, 1); double excelDate = - HSSFDateUtil.getExcelDate(date.getTime()); + HSSFDateUtil.getExcelDate(date.getTime(), false); assertEquals("Checking hour = " + hour, date.getTime().getTime(), - HSSFDateUtil.getJavaDate(excelDate).getTime()); + HSSFDateUtil.getJavaDate(excelDate, false).getTime()); } // check 1900 and 1904 date windowing conversions @@ -99,7 +103,7 @@ public class TestHSSFDateUtil public void testExcelConversionOnDSTStart() { TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); TimeZone.setDefault(cet); - Calendar cal = new GregorianCalendar(2004, Calendar.MARCH, 28); + Calendar cal = new GregorianCalendar(2004, CALENDAR_MARCH, 28); for (int hour = 0; hour < 24; hour++) { // Skip 02:00 CET as that is the Daylight change time @@ -110,7 +114,7 @@ public class TestHSSFDateUtil cal.set(Calendar.HOUR_OF_DAY, hour); Date javaDate = cal.getTime(); - double excelDate = HSSFDateUtil.getExcelDate(javaDate); + double excelDate = HSSFDateUtil.getExcelDate(javaDate, false); double difference = excelDate - Math.floor(excelDate); int differenceInHours = (int) (difference * 24 * 60 + 0.5) / 60; assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", @@ -118,7 +122,7 @@ public class TestHSSFDateUtil differenceInHours); assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", javaDate.getTime(), - HSSFDateUtil.getJavaDate(excelDate).getTime()); + HSSFDateUtil.getJavaDate(excelDate, false).getTime()); } } @@ -129,8 +133,8 @@ public class TestHSSFDateUtil public void testJavaConversionOnDSTStart() { TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); TimeZone.setDefault(cet); - Calendar cal = new GregorianCalendar(2004, Calendar.MARCH, 28); - double excelDate = HSSFDateUtil.getExcelDate(cal.getTime()); + Calendar cal = new GregorianCalendar(2004, CALENDAR_MARCH, 28); + double excelDate = HSSFDateUtil.getExcelDate(cal.getTime(), false); double oneHour = 1.0 / 24; double oneMinute = oneHour / 60; for (int hour = 0; hour < 24; hour++, excelDate += oneHour) { @@ -142,10 +146,10 @@ public class TestHSSFDateUtil } cal.set(Calendar.HOUR_OF_DAY, hour); - Date javaDate = HSSFDateUtil.getJavaDate(excelDate); + Date javaDate = HSSFDateUtil.getJavaDate(excelDate, false); assertEquals("Checking " + hour + " hours on Daylight Saving Time start date", excelDate, - HSSFDateUtil.getExcelDate(javaDate), oneMinute); + HSSFDateUtil.getExcelDate(javaDate, false), oneMinute); } } @@ -156,11 +160,11 @@ public class TestHSSFDateUtil public void testExcelConversionOnDSTEnd() { TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); TimeZone.setDefault(cet); - Calendar cal = new GregorianCalendar(2004, Calendar.OCTOBER, 31); + Calendar cal = new GregorianCalendar(2004, CALENDAR_OCTOBER, 31); for (int hour = 0; hour < 24; hour++) { cal.set(Calendar.HOUR_OF_DAY, hour); Date javaDate = cal.getTime(); - double excelDate = HSSFDateUtil.getExcelDate(javaDate); + double excelDate = HSSFDateUtil.getExcelDate(javaDate, false); double difference = excelDate - Math.floor(excelDate); int differenceInHours = (int) (difference * 24 * 60 + 0.5) / 60; assertEquals("Checking " + hour + " hour on Daylight Saving Time end date", @@ -168,7 +172,7 @@ public class TestHSSFDateUtil differenceInHours); assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", javaDate.getTime(), - HSSFDateUtil.getJavaDate(excelDate).getTime()); + HSSFDateUtil.getJavaDate(excelDate, false).getTime()); } } @@ -179,16 +183,16 @@ public class TestHSSFDateUtil public void testJavaConversionOnDSTEnd() { TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); TimeZone.setDefault(cet); - Calendar cal = new GregorianCalendar(2004, Calendar.OCTOBER, 31); - double excelDate = HSSFDateUtil.getExcelDate(cal.getTime()); + Calendar cal = new GregorianCalendar(2004, CALENDAR_OCTOBER, 31); + double excelDate = HSSFDateUtil.getExcelDate(cal.getTime(), false); double oneHour = 1.0 / 24; double oneMinute = oneHour / 60; for (int hour = 0; hour < 24; hour++, excelDate += oneHour) { cal.set(Calendar.HOUR_OF_DAY, hour); - Date javaDate = HSSFDateUtil.getJavaDate(excelDate); + Date javaDate = HSSFDateUtil.getJavaDate(excelDate, false); assertEquals("Checking " + hour + " hours on Daylight Saving Time start date", excelDate, - HSSFDateUtil.getExcelDate(javaDate), oneMinute); + HSSFDateUtil.getExcelDate(javaDate, false), oneMinute); } } @@ -315,25 +319,38 @@ public class TestHSSFDateUtil } public void testDateBug_2Excel() { - assertEquals(59.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_FEBRUARY, 28)), 0.00001); - assertEquals(61.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_MARCH, 1)), 0.00001); + assertEquals(59.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_FEBRUARY, 28), false), 0.00001); + assertEquals(61.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_MARCH, 1), false), 0.00001); - assertEquals(37315.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_FEBRUARY, 28)), 0.00001); - assertEquals(37316.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_MARCH, 1)), 0.00001); - assertEquals(37257.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_JANUARY, 1)), 0.00001); - assertEquals(38074.00, HSSFDateUtil.getExcelDate(createDate(2004, CALENDAR_MARCH, 28)), 0.00001); + assertEquals(37315.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_FEBRUARY, 28), false), 0.00001); + assertEquals(37316.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_MARCH, 1), false), 0.00001); + assertEquals(37257.00, HSSFDateUtil.getExcelDate(createDate(2002, CALENDAR_JANUARY, 1), false), 0.00001); + assertEquals(38074.00, HSSFDateUtil.getExcelDate(createDate(2004, CALENDAR_MARCH, 28), false), 0.00001); } public void testDateBug_2Java() { - assertEquals(createDate(1900, Calendar.FEBRUARY, 28), HSSFDateUtil.getJavaDate(59.0)); - assertEquals(createDate(1900, Calendar.MARCH, 1), HSSFDateUtil.getJavaDate(61.0)); + assertEquals(createDate(1900, CALENDAR_FEBRUARY, 28), HSSFDateUtil.getJavaDate(59.0, false)); + assertEquals(createDate(1900, CALENDAR_MARCH, 1), HSSFDateUtil.getJavaDate(61.0, false)); - assertEquals(createDate(2002, Calendar.FEBRUARY, 28), HSSFDateUtil.getJavaDate(37315.00)); - assertEquals(createDate(2002, Calendar.MARCH, 1), HSSFDateUtil.getJavaDate(37316.00)); - assertEquals(createDate(2002, Calendar.JANUARY, 1), HSSFDateUtil.getJavaDate(37257.00)); - assertEquals(createDate(2004, Calendar.MARCH, 28), HSSFDateUtil.getJavaDate(38074.00)); + assertEquals(createDate(2002, CALENDAR_FEBRUARY, 28), HSSFDateUtil.getJavaDate(37315.00, false)); + assertEquals(createDate(2002, CALENDAR_MARCH, 1), HSSFDateUtil.getJavaDate(37316.00, false)); + assertEquals(createDate(2002, CALENDAR_JANUARY, 1), HSSFDateUtil.getJavaDate(37257.00, false)); + assertEquals(createDate(2004, CALENDAR_MARCH, 28), HSSFDateUtil.getJavaDate(38074.00, false)); } - + + public void testDate1904() { + assertEquals(createDate(1904, CALENDAR_JANUARY, 2), HSSFDateUtil.getJavaDate(1.0, true)); + assertEquals(createDate(1904, CALENDAR_JANUARY, 1), HSSFDateUtil.getJavaDate(0.0, true)); + assertEquals(0.0, HSSFDateUtil.getExcelDate(createDate(1904, CALENDAR_JANUARY, 1), true), 0.00001); + assertEquals(1.0, HSSFDateUtil.getExcelDate(createDate(1904, CALENDAR_JANUARY, 2), true), 0.00001); + + assertEquals(createDate(1998, CALENDAR_JULY, 5), HSSFDateUtil.getJavaDate(35981, false)); + assertEquals(createDate(1998, CALENDAR_JULY, 5), HSSFDateUtil.getJavaDate(34519, true)); + + assertEquals(35981.0, HSSFDateUtil.getExcelDate(createDate(1998, CALENDAR_JULY, 5), false), 0.00001); + assertEquals(34519.0, HSSFDateUtil.getExcelDate(createDate(1998, CALENDAR_JULY, 5), true), 0.00001); + } + private Date createDate(int year, int month, int day) { Calendar c = new GregorianCalendar(); c.set(year, month, day, 0, 0, 0); @@ -341,10 +358,21 @@ public class TestHSSFDateUtil return c.getTime(); } + /** + * Check if HSSFDateUtil.getAbsoluteDay works as advertised. + */ + public void testAbsoluteDay() { + // 1 Jan 1900 is 1 day after 31 Dec 1899 + GregorianCalendar calendar = new GregorianCalendar(1900, 0, 1); + assertEquals("Checking absolute day (1 Jan 1900)", 1, HSSFDateUtil.absoluteDay(calendar, false)); + // 1 Jan 1901 is 366 days after 31 Dec 1899 + calendar = new GregorianCalendar(1901, 0, 1); + assertEquals("Checking absolute day (1 Jan 1901)", 366, HSSFDateUtil.absoluteDay(calendar, false)); + } + public static void main(String [] args) { System.out .println("Testing org.apache.poi.hssf.usermodel.TestHSSFDateUtil"); junit.textui.TestRunner.run(TestHSSFDateUtil.class); } } - diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPalette.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPalette.java index 8504b8dd7..c5674b9e7 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPalette.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPalette.java @@ -95,6 +95,71 @@ public class TestHSSFPalette extends TestCase assertEquals(msg, (short) 100, actualRGB[2]); } + /** + * Uses the palette from cell stylings + */ + public void testPaletteFromCellColours() throws Exception { + String dir = System.getProperty("HSSF.testdata.path"); + File sample = new File(dir + "/SimpleWithColours.xls"); + assertTrue("SimpleWithColours.xls exists and is readable", sample.canRead()); + FileInputStream fis = new FileInputStream(sample); + HSSFWorkbook book = new HSSFWorkbook(fis); + fis.close(); + + HSSFPalette p = book.getCustomPalette(); + + HSSFCell cellA = book.getSheetAt(0).getRow(0).getCell((short)0); + HSSFCell cellB = book.getSheetAt(0).getRow(1).getCell((short)0); + HSSFCell cellC = book.getSheetAt(0).getRow(2).getCell((short)0); + HSSFCell cellD = book.getSheetAt(0).getRow(3).getCell((short)0); + HSSFCell cellE = book.getSheetAt(0).getRow(4).getCell((short)0); + + // Plain + assertEquals("I'm plain", cellA.getStringCellValue()); + assertEquals(64, cellA.getCellStyle().getFillForegroundColor()); + assertEquals(64, cellA.getCellStyle().getFillBackgroundColor()); + assertEquals(HSSFFont.COLOR_NORMAL, cellA.getCellStyle().getFont(book).getColor()); + assertEquals(0, cellA.getCellStyle().getFillPattern()); + assertEquals("0:0:0", p.getColor((short)64).getHexString()); + assertEquals(null, p.getColor((short)32767)); + + // Red + assertEquals("I'm red", cellB.getStringCellValue()); + assertEquals(64, cellB.getCellStyle().getFillForegroundColor()); + assertEquals(64, cellB.getCellStyle().getFillBackgroundColor()); + assertEquals(10, cellB.getCellStyle().getFont(book).getColor()); + assertEquals(0, cellB.getCellStyle().getFillPattern()); + assertEquals("0:0:0", p.getColor((short)64).getHexString()); + assertEquals("FFFF:0:0", p.getColor((short)10).getHexString()); + + // Red + green bg + assertEquals("I'm red with a green bg", cellC.getStringCellValue()); + assertEquals(11, cellC.getCellStyle().getFillForegroundColor()); + assertEquals(64, cellC.getCellStyle().getFillBackgroundColor()); + assertEquals(10, cellC.getCellStyle().getFont(book).getColor()); + assertEquals(1, cellC.getCellStyle().getFillPattern()); + assertEquals("0:FFFF:0", p.getColor((short)11).getHexString()); + assertEquals("FFFF:0:0", p.getColor((short)10).getHexString()); + + // Pink with yellow + assertEquals("I'm pink with a yellow pattern (none)", cellD.getStringCellValue()); + assertEquals(13, cellD.getCellStyle().getFillForegroundColor()); + assertEquals(64, cellD.getCellStyle().getFillBackgroundColor()); + assertEquals(14, cellD.getCellStyle().getFont(book).getColor()); + assertEquals(0, cellD.getCellStyle().getFillPattern()); + assertEquals("FFFF:FFFF:0", p.getColor((short)13).getHexString()); + assertEquals("FFFF:0:FFFF", p.getColor((short)14).getHexString()); + + // Pink with yellow - full + assertEquals("I'm pink with a yellow pattern (full)", cellE.getStringCellValue()); + assertEquals(13, cellE.getCellStyle().getFillForegroundColor()); + assertEquals(64, cellE.getCellStyle().getFillBackgroundColor()); + assertEquals(14, cellE.getCellStyle().getFont(book).getColor()); + assertEquals(0, cellE.getCellStyle().getFillPattern()); + assertEquals("FFFF:FFFF:0", p.getColor((short)13).getHexString()); + assertEquals("FFFF:0:FFFF", p.getColor((short)14).getHexString()); + } + /** * Verifies that the generated gnumeric-format string values match the * hardcoded values in the HSSFColor default color palette diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java index f53b2f88d..7f2819433 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java @@ -63,7 +63,7 @@ public class TestReadWriteChart //System.out.println("first assertion for date"); assertEquals(new GregorianCalendar(2000, 0, 1, 10, 51, 2).getTime(), HSSFDateUtil - .getJavaDate(firstCell.getNumericCellValue())); + .getJavaDate(firstCell.getNumericCellValue(), false)); HSSFRow row = sheet.createRow(( short ) 15); HSSFCell cell = row.createCell(( short ) 1); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestSheetHiding.java b/src/testcases/org/apache/poi/hssf/usermodel/TestSheetHiding.java new file mode 100644 index 000000000..9628ab23e --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestSheetHiding.java @@ -0,0 +1,105 @@ +/* +* 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.poi.hssf.usermodel; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +import org.apache.poi.poifs.filesystem.POIFSFileSystem; + +import junit.framework.TestCase; + +/** + * Tests for how HSSFWorkbook behaves with XLS files + * with a WORKBOOK directory entry (instead of the more + * usual, Workbook) + */ +public class TestSheetHiding extends TestCase { + private String dirPath; + private String xlsHidden = "TwoSheetsOneHidden.xls"; + private String xlsShown = "TwoSheetsNoneHidden.xls"; + + protected void setUp() throws Exception { + super.setUp(); + + dirPath = System.getProperty("HSSF.testdata.path"); + } + + /** + * Test that we get the right number of sheets, + * with the right text on them, no matter what + * the hidden flags are + */ + public void testTextSheets() throws Exception { + FileInputStream isH = new FileInputStream(dirPath + "/" + xlsHidden); + POIFSFileSystem fsH = new POIFSFileSystem(isH); + + FileInputStream isU = new FileInputStream(dirPath + "/" + xlsShown); + POIFSFileSystem fsU = new POIFSFileSystem(isU); + + HSSFWorkbook wbH = new HSSFWorkbook(fsH); + HSSFWorkbook wbU = new HSSFWorkbook(fsU); + + // Both should have two sheets + assertEquals(2, wbH.sheets.size()); + assertEquals(2, wbU.sheets.size()); + + // All sheets should have one row + assertEquals(0, wbH.getSheetAt(0).getLastRowNum()); + assertEquals(0, wbH.getSheetAt(1).getLastRowNum()); + assertEquals(0, wbU.getSheetAt(0).getLastRowNum()); + assertEquals(0, wbU.getSheetAt(1).getLastRowNum()); + + // All rows should have one column + assertEquals(1, wbH.getSheetAt(0).getRow(0).getLastCellNum()); + assertEquals(1, wbH.getSheetAt(1).getRow(0).getLastCellNum()); + assertEquals(1, wbU.getSheetAt(0).getRow(0).getLastCellNum()); + assertEquals(1, wbU.getSheetAt(1).getRow(0).getLastCellNum()); + + // Text should be sheet based + assertEquals("Sheet1A1", wbH.getSheetAt(0).getRow(0).getCell((short)0).getStringCellValue()); + assertEquals("Sheet2A1", wbH.getSheetAt(1).getRow(0).getCell((short)0).getStringCellValue()); + assertEquals("Sheet1A1", wbU.getSheetAt(0).getRow(0).getCell((short)0).getStringCellValue()); + assertEquals("Sheet2A1", wbU.getSheetAt(1).getRow(0).getCell((short)0).getStringCellValue()); + } + + /** + * Check that we can get and set the hidden flags + * as expected + */ + public void testHideUnHideFlags() throws Exception { + // TODO + } + + /** + * Turn the sheet with none hidden into the one with + * one hidden + */ + public void testHide() throws Exception { + // TODO + } + + /** + * Turn the sheet with one hidden into the one with + * none hidden + */ + public void testUnHide() throws Exception { + // TODO + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestEmptyDocument.java b/src/testcases/org/apache/poi/poifs/filesystem/TestEmptyDocument.java index a56a1d2a3..4f67f9876 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestEmptyDocument.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestEmptyDocument.java @@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream; import junit.framework.TestCase; +import org.apache.poi.util.IOUtils; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSWriterEvent; import org.apache.poi.poifs.filesystem.POIFSWriterListener; @@ -140,4 +141,28 @@ public class TestEmptyDocument extends TestCase { fs.writeFilesystem(out); new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())); } + + public void testEmptyDocumentBug11744() throws Exception { + byte[] testData = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + + POIFSFileSystem fs = new POIFSFileSystem(); + fs.createDocument(new ByteArrayInputStream(new byte[0]), "Empty"); + fs.createDocument(new ByteArrayInputStream(testData), "NotEmpty"); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + fs.writeFilesystem(out); + out.toByteArray(); + + // This line caused the error. + fs = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())); + + DocumentEntry entry = (DocumentEntry) fs.getRoot().getEntry("Empty"); + assertEquals("Expected zero size", 0, entry.getSize()); + assertEquals("Expected zero read from stream", 0, + IOUtils.toByteArray(new DocumentInputStream(entry)).length); + + entry = (DocumentEntry) fs.getRoot().getEntry("NotEmpty"); + assertEquals("Expected size was wrong", testData.length, entry.getSize()); + assertEquals("Expected different data read from stream", testData, + IOUtils.toByteArray(new DocumentInputStream(entry))); + } }