From f60c47e3b22e2a0cb001da3d55cafb0794be9a1f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 16 Mar 2008 15:38:09 +0000 Subject: [PATCH] Patch from Josh from bug #44608 - Support for PercentPtg in the formula evaluator git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@637598 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../hssf/usermodel/HSSFFormulaEvaluator.java | 76 +---- .../usermodel/OperationEvaluatorFactory.java | 165 +++++++++++ .../formula/eval/AllFormulaEvalTests.java | 1 + .../eval/TestFormulasFromSpreadsheet.java | 261 +++++++++--------- .../record/formula/eval/TestPercentEval.java | 82 ++++++ .../poi/hssf/data/FormulaEvalTestData.xls | Bin 136704 -> 136704 bytes 8 files changed, 381 insertions(+), 206 deletions(-) create mode 100755 src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java create mode 100755 src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 3b245dc836..2b12bdf792 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,6 +36,7 @@ + 44608 - Support for PercentPtg in the formula evaluator 44606 - Support calculated string values for evaluated formulas Add accessors to horizontal and vertical alignment in HSSFTextbox 44593 - Improved handling of short DVRecords diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index e174c790dd..57bc3fa34d 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ + 44608 - Support for PercentPtg in the formula evaluator 44606 - Support calculated string values for evaluated formulas Add accessors to horizontal and vertical alignment in HSSFTextbox 44593 - Improved handling of short DVRecords diff --git a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index 3fce306557..58ab5b47ae 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -24,71 +24,40 @@ import java.util.Stack; import org.apache.poi.hssf.model.FormulaParser; import org.apache.poi.hssf.model.Workbook; -import org.apache.poi.hssf.record.formula.AddPtg; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.hssf.record.formula.AreaPtg; import org.apache.poi.hssf.record.formula.AttrPtg; import org.apache.poi.hssf.record.formula.BoolPtg; -import org.apache.poi.hssf.record.formula.ConcatPtg; import org.apache.poi.hssf.record.formula.ControlPtg; -import org.apache.poi.hssf.record.formula.DividePtg; -import org.apache.poi.hssf.record.formula.EqualPtg; -import org.apache.poi.hssf.record.formula.FuncPtg; -import org.apache.poi.hssf.record.formula.FuncVarPtg; -import org.apache.poi.hssf.record.formula.GreaterEqualPtg; -import org.apache.poi.hssf.record.formula.GreaterThanPtg; import org.apache.poi.hssf.record.formula.IntPtg; -import org.apache.poi.hssf.record.formula.LessEqualPtg; -import org.apache.poi.hssf.record.formula.LessThanPtg; import org.apache.poi.hssf.record.formula.MemErrPtg; import org.apache.poi.hssf.record.formula.MissingArgPtg; -import org.apache.poi.hssf.record.formula.MultiplyPtg; import org.apache.poi.hssf.record.formula.NamePtg; import org.apache.poi.hssf.record.formula.NameXPtg; -import org.apache.poi.hssf.record.formula.NotEqualPtg; import org.apache.poi.hssf.record.formula.NumberPtg; import org.apache.poi.hssf.record.formula.OperationPtg; import org.apache.poi.hssf.record.formula.ParenthesisPtg; -import org.apache.poi.hssf.record.formula.PowerPtg; import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.hssf.record.formula.Ref3DPtg; import org.apache.poi.hssf.record.formula.ReferencePtg; import org.apache.poi.hssf.record.formula.StringPtg; -import org.apache.poi.hssf.record.formula.SubtractPtg; -import org.apache.poi.hssf.record.formula.UnaryMinusPtg; -import org.apache.poi.hssf.record.formula.UnaryPlusPtg; import org.apache.poi.hssf.record.formula.UnionPtg; import org.apache.poi.hssf.record.formula.UnknownPtg; -import org.apache.poi.hssf.record.formula.eval.AddEval; import org.apache.poi.hssf.record.formula.eval.Area2DEval; import org.apache.poi.hssf.record.formula.eval.Area3DEval; import org.apache.poi.hssf.record.formula.eval.AreaEval; import org.apache.poi.hssf.record.formula.eval.BlankEval; import org.apache.poi.hssf.record.formula.eval.BoolEval; -import org.apache.poi.hssf.record.formula.eval.ConcatEval; -import org.apache.poi.hssf.record.formula.eval.DivideEval; -import org.apache.poi.hssf.record.formula.eval.EqualEval; 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.FuncVarEval; import org.apache.poi.hssf.record.formula.eval.FunctionEval; -import org.apache.poi.hssf.record.formula.eval.GreaterEqualEval; -import org.apache.poi.hssf.record.formula.eval.GreaterThanEval; -import org.apache.poi.hssf.record.formula.eval.LessEqualEval; -import org.apache.poi.hssf.record.formula.eval.LessThanEval; -import org.apache.poi.hssf.record.formula.eval.MultiplyEval; import org.apache.poi.hssf.record.formula.eval.NameEval; -import org.apache.poi.hssf.record.formula.eval.NotEqualEval; import org.apache.poi.hssf.record.formula.eval.NumberEval; import org.apache.poi.hssf.record.formula.eval.OperationEval; -import org.apache.poi.hssf.record.formula.eval.PowerEval; import org.apache.poi.hssf.record.formula.eval.Ref2DEval; import org.apache.poi.hssf.record.formula.eval.Ref3DEval; import org.apache.poi.hssf.record.formula.eval.RefEval; import org.apache.poi.hssf.record.formula.eval.StringEval; -import org.apache.poi.hssf.record.formula.eval.SubtractEval; -import org.apache.poi.hssf.record.formula.eval.UnaryMinusEval; -import org.apache.poi.hssf.record.formula.eval.UnaryPlusEval; import org.apache.poi.hssf.record.formula.eval.ValueEval; /** @@ -98,8 +67,6 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval; public class HSSFFormulaEvaluator { // params to lookup the right constructor using reflection - private static final Class[] OPERATION_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; - private static final Class[] VALUE_CONTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; private static final Class[] AREA3D_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class, ValueEval[].class }; @@ -111,8 +78,6 @@ public class HSSFFormulaEvaluator { // Maps for mapping *Eval to *Ptg private static final Map VALUE_EVALS_MAP = new HashMap(); - private static final Map OPERATION_EVALS_MAP = new HashMap(); - /* * Following is the mapping between the Ptg tokens returned * by the FormulaParser and the *Eval classes that are used @@ -124,26 +89,6 @@ public class HSSFFormulaEvaluator { VALUE_EVALS_MAP.put(NumberPtg.class, NumberEval.class); VALUE_EVALS_MAP.put(StringPtg.class, StringEval.class); - OPERATION_EVALS_MAP.put(AddPtg.class, AddEval.class); - OPERATION_EVALS_MAP.put(ConcatPtg.class, ConcatEval.class); - OPERATION_EVALS_MAP.put(DividePtg.class, DivideEval.class); - OPERATION_EVALS_MAP.put(EqualPtg.class, EqualEval.class); - //OPERATION_EVALS_MAP.put(ExpPtg.class, ExpEval.class); // TODO: check - // this - OPERATION_EVALS_MAP.put(FuncPtg.class, FuncVarEval.class); // TODO: - // check this - OPERATION_EVALS_MAP.put(FuncVarPtg.class, FuncVarEval.class); - OPERATION_EVALS_MAP.put(GreaterEqualPtg.class, GreaterEqualEval.class); - OPERATION_EVALS_MAP.put(GreaterThanPtg.class, GreaterThanEval.class); - OPERATION_EVALS_MAP.put(LessEqualPtg.class, LessEqualEval.class); - OPERATION_EVALS_MAP.put(LessThanPtg.class, LessThanEval.class); - OPERATION_EVALS_MAP.put(MultiplyPtg.class, MultiplyEval.class); - OPERATION_EVALS_MAP.put(NotEqualPtg.class, NotEqualEval.class); - OPERATION_EVALS_MAP.put(PowerPtg.class, PowerEval.class); - OPERATION_EVALS_MAP.put(SubtractPtg.class, SubtractEval.class); - OPERATION_EVALS_MAP.put(UnaryMinusPtg.class, UnaryMinusEval.class); - OPERATION_EVALS_MAP.put(UnaryPlusPtg.class, UnaryPlusEval.class); - } @@ -402,7 +347,7 @@ public class HSSFFormulaEvaluator { if (optg instanceof AttrPtg) { continue; } if (optg instanceof UnionPtg) { continue; } - OperationEval operation = (OperationEval) getOperationEvalForPtg(optg); + OperationEval operation = OperationEvaluatorFactory.create(optg); int numops = operation.getNumberOfOperands(); Eval[] ops = new Eval[numops]; @@ -557,25 +502,6 @@ public class HSSFFormulaEvaluator { return values; } - /** - * returns the OperationEval concrete impl instance corresponding - * to the suplied operationPtg - * @param ptg - */ - protected static Eval getOperationEvalForPtg(OperationPtg ptg) { - Eval retval = null; - - Class clazz = (Class) OPERATION_EVALS_MAP.get(ptg.getClass()); - try { - Constructor constructor = clazz.getConstructor(OPERATION_CONSTRUCTOR_CLASS_ARRAY); - retval = (OperationEval) constructor.newInstance(new Ptg[] { ptg }); - } - catch (Exception e) { - throw new RuntimeException("Fatal Error: ", e); - } - return retval; - } - /** * returns an appropriate Eval impl instance for the Ptg. The Ptg must be * one of: Area3DPtg, AreaPtg, ReferencePtg, Ref3DPtg, IntPtg, NumberPtg, diff --git a/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java b/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java new file mode 100755 index 0000000000..1292009699 --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java @@ -0,0 +1,165 @@ +/* ==================================================================== + 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.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.Map; + +import org.apache.poi.hssf.record.formula.AddPtg; +import org.apache.poi.hssf.record.formula.ConcatPtg; +import org.apache.poi.hssf.record.formula.DividePtg; +import org.apache.poi.hssf.record.formula.EqualPtg; +import org.apache.poi.hssf.record.formula.ExpPtg; +import org.apache.poi.hssf.record.formula.FuncPtg; +import org.apache.poi.hssf.record.formula.FuncVarPtg; +import org.apache.poi.hssf.record.formula.GreaterEqualPtg; +import org.apache.poi.hssf.record.formula.GreaterThanPtg; +import org.apache.poi.hssf.record.formula.LessEqualPtg; +import org.apache.poi.hssf.record.formula.LessThanPtg; +import org.apache.poi.hssf.record.formula.MultiplyPtg; +import org.apache.poi.hssf.record.formula.NotEqualPtg; +import org.apache.poi.hssf.record.formula.OperationPtg; +import org.apache.poi.hssf.record.formula.PercentPtg; +import org.apache.poi.hssf.record.formula.PowerPtg; +import org.apache.poi.hssf.record.formula.Ptg; +import org.apache.poi.hssf.record.formula.SubtractPtg; +import org.apache.poi.hssf.record.formula.UnaryMinusPtg; +import org.apache.poi.hssf.record.formula.UnaryPlusPtg; +import org.apache.poi.hssf.record.formula.eval.AddEval; +import org.apache.poi.hssf.record.formula.eval.ConcatEval; +import org.apache.poi.hssf.record.formula.eval.DivideEval; +import org.apache.poi.hssf.record.formula.eval.EqualEval; +import org.apache.poi.hssf.record.formula.eval.FuncVarEval; +import org.apache.poi.hssf.record.formula.eval.GreaterEqualEval; +import org.apache.poi.hssf.record.formula.eval.GreaterThanEval; +import org.apache.poi.hssf.record.formula.eval.LessEqualEval; +import org.apache.poi.hssf.record.formula.eval.LessThanEval; +import org.apache.poi.hssf.record.formula.eval.MultiplyEval; +import org.apache.poi.hssf.record.formula.eval.NotEqualEval; +import org.apache.poi.hssf.record.formula.eval.OperationEval; +import org.apache.poi.hssf.record.formula.eval.PercentEval; +import org.apache.poi.hssf.record.formula.eval.PowerEval; +import org.apache.poi.hssf.record.formula.eval.SubtractEval; +import org.apache.poi.hssf.record.formula.eval.UnaryMinusEval; +import org.apache.poi.hssf.record.formula.eval.UnaryPlusEval; + +/** + * This class creates OperationEval instances to help evaluate OperationPtg + * formula tokens. + * + * @author Josh Micich + */ +final class OperationEvaluatorFactory { + private static final Class[] OPERATION_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; + + private static final Map _constructorsByPtgClass = initialiseConstructorsMap(); + + private OperationEvaluatorFactory() { + // no instances of this class + } + + private static Map initialiseConstructorsMap() { + Map m = new HashMap(32); + add(m, AddPtg.class, AddEval.class); + add(m, ConcatPtg.class, ConcatEval.class); + add(m, DividePtg.class, DivideEval.class); + add(m, EqualPtg.class, EqualEval.class); + add(m, FuncPtg.class, FuncVarEval.class); + add(m, FuncVarPtg.class, FuncVarEval.class); + add(m, GreaterEqualPtg.class, GreaterEqualEval.class); + add(m, GreaterThanPtg.class, GreaterThanEval.class); + add(m, LessEqualPtg.class, LessEqualEval.class); + add(m, LessThanPtg.class, LessThanEval.class); + add(m, MultiplyPtg.class, MultiplyEval.class); + add(m, NotEqualPtg.class, NotEqualEval.class); + add(m, PercentPtg.class, PercentEval.class); + add(m, PowerPtg.class, PowerEval.class); + add(m, SubtractPtg.class, SubtractEval.class); + add(m, UnaryMinusPtg.class, UnaryMinusEval.class); + add(m, UnaryPlusPtg.class, UnaryPlusEval.class); + return m; + } + + private static void add(Map m, Class ptgClass, Class evalClass) { + + // perform some validation now, to keep later exception handlers simple + if(!Ptg.class.isAssignableFrom(ptgClass)) { + throw new IllegalArgumentException("Expected Ptg subclass"); + } + if(!OperationEval.class.isAssignableFrom(evalClass)) { + throw new IllegalArgumentException("Expected OperationEval subclass"); + } + if (!Modifier.isPublic(evalClass.getModifiers())) { + throw new RuntimeException("Eval class must be public"); + } + if (Modifier.isAbstract(evalClass.getModifiers())) { + throw new RuntimeException("Eval class must not be abstract"); + } + + Constructor constructor; + try { + constructor = evalClass.getDeclaredConstructor(OPERATION_CONSTRUCTOR_CLASS_ARRAY); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Missing constructor"); + } + if (!Modifier.isPublic(constructor.getModifiers())) { + throw new RuntimeException("Eval constructor must be public"); + } + m.put(ptgClass, constructor); + } + + /** + * returns the OperationEval concrete impl instance corresponding + * to the supplied operationPtg + */ + public static OperationEval create(OperationPtg ptg) { + if(ptg == null) { + throw new IllegalArgumentException("ptg must not be null"); + } + + Class ptgClass = ptg.getClass(); + + Constructor constructor = (Constructor) _constructorsByPtgClass.get(ptgClass); + if(constructor == null) { + if(ptgClass == ExpPtg.class) { + // ExpPtg is used for array formulas and shared formulas. + // it is currently unsupported, and may not even get implemented here + throw new RuntimeException("ExpPtg currently not supported"); + } + throw new RuntimeException("Unexpected operation ptg class (" + ptgClass.getName() + ")"); + } + + Object result; + Object[] initargs = { ptg }; + try { + result = constructor.newInstance(initargs); + } catch (IllegalArgumentException e) { + throw new RuntimeException(e); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + return (OperationEval) result; + } +} diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java index 353fe57e74..5098c789a7 100755 --- a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java @@ -33,6 +33,7 @@ public class AllFormulaEvalTests { result.addTestSuite(TestExternalFunction.class); result.addTestSuite(TestFormulaBugs.class); result.addTestSuite(TestFormulasFromSpreadsheet.class); + result.addTestSuite(TestPercentEval.class); result.addTestSuite(TestUnaryPlusEval.class); return result; } diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java index f57221c9b0..2d5408c76a 100644 --- a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java @@ -15,7 +15,6 @@ * limitations under the License. */ - package org.apache.poi.hssf.record.formula.eval; import java.io.FileInputStream; @@ -59,36 +58,36 @@ public final class TestFormulasFromSpreadsheet extends TestCase { * Name of the test spreadsheet (found in the standard test data folder) */ public final static String FILENAME = "FormulaEvalTestData.xls"; - /** - * Row (zero-based) in the test spreadsheet where the operator examples start. - */ + /** + * Row (zero-based) in the test spreadsheet where the operator examples start. + */ public static final int START_OPERATORS_ROW_INDEX = 22; // Row '23' - /** - * Row (zero-based) in the test spreadsheet where the function examples start. - */ - public static final int START_FUNCTIONS_ROW_INDEX = 83; // Row '84' + /** + * Row (zero-based) in the test spreadsheet where the function examples start. + */ + public static final int START_FUNCTIONS_ROW_INDEX = 87; // Row '88' /** * Index of the column that contains the function names */ - public static final short COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' + public static final short COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' - /** - * Used to indicate when there are no more functions left - */ + /** + * Used to indicate when there are no more functions left + */ public static final String FUNCTION_NAMES_END_SENTINEL = ""; /** * Index of the column where the test values start (for each function) */ - public static final short COLUMN_INDEX_FIRST_TEST_VALUE = 3; // Column 'D' - - /** - * Each function takes 4 rows in the test spreadsheet - */ + public static final short COLUMN_INDEX_FIRST_TEST_VALUE = 3; // Column 'D' + + /** + * Each function takes 4 rows in the test spreadsheet + */ public static final int NUMBER_OF_ROWS_PER_FUNCTION = 4; } - private HSSFWorkbook workbook; + private HSSFWorkbook workbook; private HSSFSheet sheet; // Note - multiple failures are aggregated before ending. // If one or more functions fail, a single AssertionFailedError is thrown at the end @@ -97,138 +96,138 @@ public final class TestFormulasFromSpreadsheet extends TestCase { private int _evaluationFailureCount; private int _evaluationSuccessCount; - private static final HSSFCell getExpectedValueCell(HSSFRow row, short columnIndex) { - if (row == null) { - return null; - } - return row.getCell(columnIndex); - } + private static final HSSFCell getExpectedValueCell(HSSFRow row, short columnIndex) { + if (row == null) { + return null; + } + return row.getCell(columnIndex); + } - private static void confirmExpectedResult(String msg, HSSFCell expected, HSSFFormulaEvaluator.CellValue actual) { - if (expected == null) { + private static void confirmExpectedResult(String msg, HSSFCell expected, HSSFFormulaEvaluator.CellValue actual) { + if (expected == null) { throw new AssertionFailedError(msg + " - Bad setup data expected value is null"); } if(actual == null) { throw new AssertionFailedError(msg + " - actual value was null"); } - + if (expected.getCellType() == HSSFCell.CELL_TYPE_STRING) { - String value = expected.getRichStringCellValue().getString(); - if (value.startsWith("#")) { - // TODO - this code never called - expected.setCellType(HSSFCell.CELL_TYPE_ERROR); - // expected.setCellErrorValue(...?); - } + String value = expected.getRichStringCellValue().getString(); + if (value.startsWith("#")) { + // TODO - this code never called + expected.setCellType(HSSFCell.CELL_TYPE_ERROR); + // expected.setCellErrorValue(...?); + } } switch (expected.getCellType()) { case HSSFCell.CELL_TYPE_BLANK: - assertEquals(msg, HSSFCell.CELL_TYPE_BLANK, actual.getCellType()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_BLANK, actual.getCellType()); + break; case HSSFCell.CELL_TYPE_BOOLEAN: - assertEquals(msg, HSSFCell.CELL_TYPE_BOOLEAN, actual.getCellType()); - assertEquals(msg, expected.getBooleanCellValue(), actual.getBooleanValue()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_BOOLEAN, actual.getCellType()); + assertEquals(msg, expected.getBooleanCellValue(), actual.getBooleanValue()); + break; case HSSFCell.CELL_TYPE_ERROR: - assertEquals(msg, HSSFCell.CELL_TYPE_ERROR, actual.getCellType()); - if(false) { // TODO: fix ~45 functions which are currently returning incorrect error values - assertEquals(msg, expected.getErrorCellValue(), actual.getErrorValue()); - } - break; + assertEquals(msg, HSSFCell.CELL_TYPE_ERROR, actual.getCellType()); + if(false) { // TODO: fix ~45 functions which are currently returning incorrect error values + assertEquals(msg, expected.getErrorCellValue(), actual.getErrorValue()); + } + break; case HSSFCell.CELL_TYPE_FORMULA: // will never be used, since we will call method after formula evaluation - throw new AssertionFailedError("Cannot expect formula as result of formula evaluation: " + msg); + throw new AssertionFailedError("Cannot expect formula as result of formula evaluation: " + msg); case HSSFCell.CELL_TYPE_NUMERIC: - assertEquals(msg, HSSFCell.CELL_TYPE_NUMERIC, actual.getCellType()); - TestMathX.assertEquals(msg, expected.getNumericCellValue(), actual.getNumberValue(), TestMathX.POS_ZERO, TestMathX.DIFF_TOLERANCE_FACTOR); -// double delta = Math.abs(expected.getNumericCellValue()-actual.getNumberValue()); -// double pctExpected = Math.abs(0.00001*expected.getNumericCellValue()); -// assertTrue(msg, delta <= pctExpected); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_NUMERIC, actual.getCellType()); + TestMathX.assertEquals(msg, expected.getNumericCellValue(), actual.getNumberValue(), TestMathX.POS_ZERO, TestMathX.DIFF_TOLERANCE_FACTOR); +// double delta = Math.abs(expected.getNumericCellValue()-actual.getNumberValue()); +// double pctExpected = Math.abs(0.00001*expected.getNumericCellValue()); +// assertTrue(msg, delta <= pctExpected); + break; case HSSFCell.CELL_TYPE_STRING: - assertEquals(msg, HSSFCell.CELL_TYPE_STRING, actual.getCellType()); - assertEquals(msg, expected.getRichStringCellValue().getString(), actual.getRichTextStringValue().getString()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_STRING, actual.getCellType()); + assertEquals(msg, expected.getRichStringCellValue().getString(), actual.getRichTextStringValue().getString()); + break; } - } + } protected void setUp() throws Exception { - if (workbook == null) { - String filePath = System.getProperty("HSSF.testdata.path")+ "/" + SS.FILENAME; - FileInputStream fin = new FileInputStream( filePath ); - workbook = new HSSFWorkbook( fin ); - sheet = workbook.getSheetAt( 0 ); - } - _functionFailureCount = 0; - _functionSuccessCount = 0; - _evaluationFailureCount = 0; - _evaluationSuccessCount = 0; - } - - public void testFunctionsFromTestSpreadsheet() { - - processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, null); - processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, null); - // example for debugging individual functions/operators: -// processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, "ConcatEval"); -// processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, "AVERAGE"); - - // confirm results - String successMsg = "There were " - + _evaluationSuccessCount + " successful evaluation(s) and " + if (workbook == null) { + String filePath = System.getProperty("HSSF.testdata.path")+ "/" + SS.FILENAME; + FileInputStream fin = new FileInputStream( filePath ); + workbook = new HSSFWorkbook( fin ); + sheet = workbook.getSheetAt( 0 ); + } + _functionFailureCount = 0; + _functionSuccessCount = 0; + _evaluationFailureCount = 0; + _evaluationSuccessCount = 0; + } + + public void testFunctionsFromTestSpreadsheet() { + + processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, null); + processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, null); + // example for debugging individual functions/operators: +// processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, "ConcatEval"); +// processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, "AVERAGE"); + + // confirm results + String successMsg = "There were " + + _evaluationSuccessCount + " successful evaluation(s) and " + _functionSuccessCount + " function(s) without error"; if(_functionFailureCount > 0) { String msg = _functionFailureCount + " function(s) failed in " + _evaluationFailureCount + " evaluation(s). " + successMsg; - throw new AssertionFailedError(msg); - } + throw new AssertionFailedError(msg); + } if(false) { // normally no output for successful tests System.out.println(getClass().getName() + ": " + successMsg); } } - /** - * @param startRowIndex row index in the spreadsheet where the first function/operator is found - * @param testFocusFunctionName name of a single function/operator to test alone. - * Typically pass null to test all functions - */ + /** + * @param startRowIndex row index in the spreadsheet where the first function/operator is found + * @param testFocusFunctionName name of a single function/operator to test alone. + * Typically pass null to test all functions + */ private void processFunctionGroup(int startRowIndex, String testFocusFunctionName) { HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, workbook); - int rowIndex = startRowIndex; - while (true) { - HSSFRow r = sheet.getRow(rowIndex); - String targetFunctionName = getTargetFunctionName(r); - if(targetFunctionName == null) { - throw new AssertionFailedError("Test spreadsheet cell empty on row (" - + (rowIndex+1) + "). Expected function name or '" - + SS.FUNCTION_NAMES_END_SENTINEL + "'"); - } - if(targetFunctionName.equals(SS.FUNCTION_NAMES_END_SENTINEL)) { - // found end of functions list - break; - } - if(testFocusFunctionName == null || targetFunctionName.equalsIgnoreCase(testFocusFunctionName)) { - - // expected results are on the row below - HSSFRow expectedValuesRow = sheet.getRow(rowIndex + 1); - if(expectedValuesRow == null) { - int missingRowNum = rowIndex + 2; //+1 for 1-based, +1 for next row - throw new AssertionFailedError("Missing expected values row for function '" - + targetFunctionName + " (row " + missingRowNum + ")"); - } - switch(processFunctionRow(evaluator, targetFunctionName, r, expectedValuesRow)) { - case Result.ALL_EVALUATIONS_SUCCEEDED: _functionSuccessCount++; break; - case Result.SOME_EVALUATIONS_FAILED: _functionFailureCount++; break; - default: - throw new RuntimeException("unexpected result"); - case Result.NO_EVALUATIONS_FOUND: // do nothing - } - } - rowIndex += SS.NUMBER_OF_ROWS_PER_FUNCTION; - } + int rowIndex = startRowIndex; + while (true) { + HSSFRow r = sheet.getRow(rowIndex); + String targetFunctionName = getTargetFunctionName(r); + if(targetFunctionName == null) { + throw new AssertionFailedError("Test spreadsheet cell empty on row (" + + (rowIndex+1) + "). Expected function name or '" + + SS.FUNCTION_NAMES_END_SENTINEL + "'"); + } + if(targetFunctionName.equals(SS.FUNCTION_NAMES_END_SENTINEL)) { + // found end of functions list + break; + } + if(testFocusFunctionName == null || targetFunctionName.equalsIgnoreCase(testFocusFunctionName)) { + + // expected results are on the row below + HSSFRow expectedValuesRow = sheet.getRow(rowIndex + 1); + if(expectedValuesRow == null) { + int missingRowNum = rowIndex + 2; //+1 for 1-based, +1 for next row + throw new AssertionFailedError("Missing expected values row for function '" + + targetFunctionName + " (row " + missingRowNum + ")"); + } + switch(processFunctionRow(evaluator, targetFunctionName, r, expectedValuesRow)) { + case Result.ALL_EVALUATIONS_SUCCEEDED: _functionSuccessCount++; break; + case Result.SOME_EVALUATIONS_FAILED: _functionFailureCount++; break; + default: + throw new RuntimeException("unexpected result"); + case Result.NO_EVALUATIONS_FOUND: // do nothing + } + } + rowIndex += SS.NUMBER_OF_ROWS_PER_FUNCTION; + } } /** @@ -236,16 +235,16 @@ public final class TestFormulasFromSpreadsheet extends TestCase { * @return a constant from the local Result class denoting whether there were any evaluation * cases, and whether they all succeeded. */ - private int processFunctionRow(HSSFFormulaEvaluator evaluator, String targetFunctionName, - HSSFRow formulasRow, HSSFRow expectedValuesRow) { - - int result = Result.NO_EVALUATIONS_FOUND; // so far - short endcolnum = formulasRow.getLastCellNum(); - evaluator.setCurrentRow(formulasRow); + private int processFunctionRow(HSSFFormulaEvaluator evaluator, String targetFunctionName, + HSSFRow formulasRow, HSSFRow expectedValuesRow) { + + int result = Result.NO_EVALUATIONS_FOUND; // so far + short endcolnum = formulasRow.getLastCellNum(); + evaluator.setCurrentRow(formulasRow); - // iterate across the row for all the evaluation cases - for (short colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { - HSSFCell c = formulasRow.getCell(colnum); + // iterate across the row for all the evaluation cases + for (short colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { + HSSFCell c = formulasRow.getCell(colnum); if (c == null || c.getCellType() != HSSFCell.CELL_TYPE_FORMULA) { continue; } @@ -265,13 +264,13 @@ public final class TestFormulasFromSpreadsheet extends TestCase { printShortStackTrace(System.err, e); result = Result.SOME_EVALUATIONS_FAILED; } - } + } return result; } - /** - * Useful to keep output concise when expecting many failures to be reported by this test case - */ + /** + * Useful to keep output concise when expecting many failures to be reported by this test case + */ private static void printShortStackTrace(PrintStream ps, AssertionFailedError e) { StackTraceElement[] stes = e.getStackTrace(); @@ -304,8 +303,8 @@ public final class TestFormulasFromSpreadsheet extends TestCase { } /** - * @return null if cell is missing, empty or blank - */ + * @return null if cell is missing, empty or blank + */ private static String getTargetFunctionName(HSSFRow r) { if(r == null) { System.err.println("Warning - given null row, can't figure out function name"); diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java new file mode 100755 index 0000000000..be8cef13fa --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java @@ -0,0 +1,82 @@ +/* ==================================================================== + 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.record.formula.eval; + +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + +import org.apache.poi.hssf.record.formula.PercentPtg; +import org.apache.poi.hssf.record.formula.functions.NumericFunctionInvoker; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.CellValue; + +/** + * Test for percent operator evaluator. + * + * @author Josh Micich + */ +public final class TestPercentEval extends TestCase { + + private static void confirm(ValueEval arg, double expectedResult) { + Eval[] args = { + arg, + }; + + PercentEval opEval = new PercentEval(new PercentPtg()); + double result = NumericFunctionInvoker.invoke(opEval, args, -1, (short)-1); + + assertEquals(expectedResult, result, 0); + } + + public void testBasic() { + confirm(new NumberEval(5), 0.05); + confirm(new NumberEval(3000), 30.0); + confirm(new NumberEval(-150), -1.5); + confirm(new StringEval("0.2"), 0.002); + confirm(BoolEval.TRUE, 0.01); + } + + public void testInSpreadSheet() { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet("Sheet1"); + HSSFRow row = sheet.createRow(0); + HSSFCell cell = row.createCell((short)0); + cell.setCellFormula("B1%"); + row.createCell((short)1).setCellValue(50.0); + + HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); + fe.setCurrentRow(row); + CellValue cv; + try { + cv = fe.evaluate(cell); + } catch (RuntimeException e) { + if(e.getCause() instanceof NullPointerException) { + throw new AssertionFailedError("Identified bug 44608"); + } + // else some other unexpected error + throw e; + } + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); + assertEquals(0.5, cv.getNumberValue(), 0.0); + } + +} diff --git a/src/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls b/src/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls index 6260d878bc89ada3ebe92c7fa615baa1c387cde3..aaaf958a9d2747503a773502b73b03707081e6b3 100644 GIT binary patch literal 136704 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
    jH=K!m7meX>_8NOX2Q-xL6yPUw6W{r*kP;= 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%0DR8A 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 literal 136704 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ð%D8% z@VqIek)U7E*|jyt3RFAo|$|yOp_hd~H^?#`Q&Xla-q`A*6_50&`lq4KtuzBNS%eE4R_Vcei6^ z(H%edAnIG0W6H3qxi_|BqROibxk< zxZyBXb#9NH5R%EZ*t(#{uIfs6cQcZSX+0Trb#5Hsc7b2g+0z+wC2F~(t1~vRgAzfq zy(cd8K|xEKV`F2~VQF($j`=>>q}$_WrDT(HMVo9od*gZxTM3enaQ8(%;y z%eq&@ITK;j(b>W2drW!I!m@5GDPtIlp_10c`vW0~w;)*AvhE!9LBr1Njh*hIpaw2h z$5a<>Z)iqIIb@Bp8nC_*!-!>pBF;czJ`L#{K`sd5SU@h==@4(gtO-0q+=L1PQA1os zSku_KDa+{GJaa~jKv-4GM`KqmHBEeohH)BvI&w#k!Ys#aLaBHBcm|T?yeSsbG>B(; zbKEol<^qD|0Yg~~Pt<;KOMA|h>BTw1Uetau;+{C=qjI=W9p{vVNk{C2O*4s$S=per z?k%y-0=-YuL`)z?N>t9)`1LC)r!%f~R1WS`re)-k~9sLt-3cSRTHUbS7EOW)hO+G6KQ7(x~cO?X-3 zEVXIufI7o6mNX-H$YJhaC}a`)8NdwU7picnPNH;Yj@S-Hy(HZezk0;d(z4qkM(xlU ziEwirYX#}J>AxO>m~zJ{(g$&5(g*TgRrj(3=WK z_iSZXh+(Hil4AkS5XH~7X%|=$-S|E%EXEY5#k-A@sT?yY#HwH@l$+Yp?QxDH#59M_ zLQH#_H^y%L(5=ofHPUL!y%MaYvt9O_#7IYL7x!H*+K7EMF@(CsB$Ryx0VOhOdoiKg z+LhjxZjRFgs;()q^d4tO@XB>L?=g|0HP=cQiE^%!KvJa3wOkDIuEQF9S95F-i6N&h z*Onp>bkCj}3YY?64sb=#4<>e-;f->*KX~?K9j)oOPy{UiNn2NZe}VLuRYzNIV{*&eFvR;?nMsxKuwy%&7)pN zG3ghQp7;$PP)a?0TYPVYq_CSc&Q4gP9nG;rEt%{{$1Qt8SEPu)H3PSRM_Xdl3X=r^ z?l~gFjUmIxRKEk>qocWfQ+spV{Z&+aaeUKIOigPmLaN@F0yPoWH)Duk0pOH-0EZN6 zVy9+MY|S>TxySD(h1zPm(#>%-BBQR&x#C6Er#nu!5MmAPvBWeTby>_Ui#bTJ9-3oW zX)*3}#ubDXE$)Q-#BxqdSr{)s#qbyRuQ9U6(b7V&SuBPd8wWwhHI7%4BzE!v;|39y zCOcZ>{TscnznCP<~lFH5kX&i3A|ah-ro z7n(S$6-HaJU=Sm1#GtjE9W59@a_lE%fZy4%sjU^Z8#f1(Lh&F%oDsm?)W-HV5mI;D z!VG$3Ew=f@b!({!Na7~I(kjr%w)Pk?iM&AQ=5<)KCut zThvgq;#?pan^rGdu>?(AUB4LKsAhG2P32VF!|guFhgv$@Ll7xW0#oi5ZN`l%)Iz#% z_p*+bc4)1BJ~BHxWhtW@r*@krioniHATSjaTBtnoltCpaI=AB+1wy3AY({4dp1km% zK0wWIBW)TA=VLl(Z+Pb_u164v>j&Fhs9h<1E@St2y1KTD;c;`&L9zAk?`>|+L56lL z5#Q5wG}PGiVW^uRmFU6?oIpo9&r!IsQRxF@YU2Q8!|w5!^4l0y3RI}npqZo*>&vh{{mwK0dc0YUsS z2R(mF?8r;c4~jUq4)d)+oi0xENy8ZPrTcGfjdwQW)!I71)8N^|v+7sWO(h-$(EQD9%cdiBcHjqu)cARY90G>_fBUwuEXM7@E>;9(f52k!&j$g*{ zF&szYEqAA)P9MYZ3pf_y&2tk_sSo0~2gf&XEQ5I3&%%SHIKGJEe{gKV%i#D($>TUa zkK-b|>+M3=<-IsQf#dvYJQV=Bd;!Pr;W*jDOX=ZoK9A#faXh95KhTJVeFn#`;#jx{ z<-)W+g5xbX7S&?&JIt~V#~X2c4aXGhX;U3u_<`eZaC`&DRrT1551;TDj=#lm!D7@6 zTkapk@s~KxUxIo-5nsXa2RI(L6mlMkSHIwRAC6;}VOuo|@)2l6;ZsgL7$ zD~|j{$74rBzBul}@h>>$VZVP{gHj*D@f95N$HI3n$B!rC_&Xfm#BuEkJiB(RQqSOc z7{{e6;aIOaU;*T)-s_u}|<9LrbZhb{5)-98*|#PJOr z%kYfkmPVzn!0`}{i3xZTvkBfF$ER?78OK#?;PFuH12{g6W5fA~z+fjo#qj`+4Qm0z zPM*W@=QwV-0Cmk%>Lnb1hhxjT@JIyg;#nMjhU59~hW~j5R8b1aId-ws458_z23ARDI!0|pDXK%*SpsN4UW9R!|gRqN!9RG#mr!GRjfL$EdjvpC>JzS6DCvY6HRog{NYP8~L zZ9gEDPg320XQgil785<`51FQ`Z1@O$f)!AvmRfl5tq%CmBnV2bryS-P6$4 zt=l1`Ps3r~fuC3XE`Dw)gJ+w60?GUWJ?PhXSHmBm!IxoqucEiThMye$7p(7X^wR&J zN8%L$rwvJ{F(VRc;xRbKZ$UnOTtdB8kx-AGkWdS!B-FOk66%x%33Vw6d?u2^avkCRPFDBG+Ur(q7 zk0#U=FweFpk@t&)+WD)5TKt;?p3mmbE|%fD6;FTjd^o=Oly^$K^QG5+wtVBN>h*#@ zS@5UG_lE@22O9gCjMp;2emCoTWohJUW&t9<_|Ub<#?Unh5psU@Ppgy z@N&NqCU+!!Nds#A5HJOJi*`EncdVfqhaZ){8ypfz_F?{X{DYt_gfwcUf9Y??PxAAC zEyQo97Q!FY!bc2y{C2+QNKGjig4aMo|ApxIg($2Rtn6pBD#8n=>cBJeAo@MaAs5U# zBxl?NYCi1ya1_dU?Fdu;yUYRaP!GOAVUP+JWR0rVap8VcyWfF6Xt z3lSR*R)&^NA$~q~G5##CQ8-`XL&pGG>O-ReE%TubW}b!z>e0DS}q& z)azURboDonys(g3DS{sAL?T7dN}XB{8Bh&HP(vNA;^#2Nk0LdkY5=>8W>ko5D_)H$ z0_KU&*MIAce;0WVqB|C0_#lfikKZHkO_!$CQv~(YsmD(`^SUSci#%P?GGM4oU9BO2 zG=3<~J_4_)ODP9*>%{N8)Bn*&J&hR#%tMciIk9ogJg*S12t`%#3dl9`c@b4l;eBu; z72N?po;gW*h5GUlxct4}T~?O#u0^%^`qztX&HFs#Q1L$j|H5 z6if>Gsug{uq!(>4`a&at$FFNmSie7ss-)B~>Z?R)ebKyX)#$gM_}dR3O^V!7s5D*# zc-Mxe)pwK{4By*%MgD(XJM-J44Tf+396IgZ&%QS0I0$D1*zz@|y30|srKT$ETFt16 zreW9G1dms%#=#P`yGco>+UQqz7;??WV|B&6V2>GEA3#65OtMF4>r0vJ5y;L{k7cw2 zDTao{N91Ry!4xzY^qWc2Gv38-Xi(#|22;}G%0+`I)8l3c#Z390CEv54bv^d(oh7g+YOvVvamCW(T8v202w0-+o9rmkD0JBj z9ab?kSSRj_y`mV})4fIKv8Pe~8Y%|VYP3;|YwN^4)}e|cjK+%L4C@r%qC_(*#-JD! zt@*RpC2@u3$X-Wh`H<9vJ+2Na(s}Ga{KYhizSwjgCFZTo{=Gck_PAhd=P8!XGe$&T zY&y?;p*Tan&y?>4@_m+kpDo`D<-1zGJtKO0l`YZ^Si6{w?gVUEiFBaHKl`&s-h!W@ z_~Cy*!%4 zbw*f>Ahobc#ZHaK_&#f2Dz@5t&wu(aziN67Ta8~8g>ttT5tW)T!MpGKNsilPDxV^P zBgz!vjhV1`ds9hYOM}&8>R521!P1S_iBr(VRSbh-UI|9e?7tDB(o!)f>&z+fQp6%K zC^b)9R4Gs7+f7G`s7>H%ej23 z#d0p+YKff7w_0js$cS6_brwfr98cn%2xgOzd<=?sCy^3|Ax zno*SGTMX3L0l=pkY_Z{ZF9Y&4hDFp}#YmeG_9 zDGC)|El=~o0{S<#!K_!Mcp2@Ol>dSb4EWfaB`V`NWXf365)s5Y_@B8+l0KXO-* z5*dQBvW+Kzbypi={gR?l=%HN(^&_9Bg7Fz69h)PYZY8IYwdy~nl|x0f#*IJBR`Ok$ z3=+rTOe=Z*kM(GDE8bWxN}g$yJo6z;U>Snf#%hlKbEtI*qAeZx$Ea;WTqv4X59}qkKryX?a#6Ps?+g=?;9KZ;2XHWP3pooItow zRN;!Fk?pXEY~AjbHQ{7;3p9H?JEGX{;fKx?nJp+N#9MdAi$7m_(D z=85GGH`2b-SpEofX|a6!UMFMu7Np#V=af4oH(ccY*C7whxbdze99{)5+93|3B_Ha+ z_vZGsV&~SXIXPmBD&QWq4%Eb#rFWePTTQ7k1xnuHRD@{=!ZtZ)n?{J17-`X=qYFZ3 zZD=!V%SmBi&mDM8Z`cnlMm}phLS!DU?Fi$EWD0}Y)<|uwZ9fEEauH#R$ddBRN4<{& zj=@pz8Ljvhd&~;+GIRkWL1fL8Z&$bH`iMqDtz3s_lZK3j5IprhG=$9>jYfLvB0!ux zfH9!pGaBwEm^}Ei2$iRa^FiD>;!4$r0TVZQf|5WI2WBOW+UVJ3(RPkXE6X9rWL&uEqEAI_mRk-=9olUIjuF$20Z&*;Hw9ArO2RV3AzQWbi?8!nQOEBwy4Lj0lu$mR0!{^f=J$I`#>ZE)aH zk*A7}NuhVjTj9V(euOOYsyJG}IMkXQD6{^Mbn0<17FYoKat88GWKyE4R2|1qFc}9C z4fcMyLUjt*@z+=a`{>Rq=s!k5iI_@cO35-$SQcbbG*y%qA+LbqF##ued1gcgt>G5Z z6or1Ah`G}U{WuZxA5n3gM^XOChbWmBe25Kv5fBy3#fciIQJ=GLtx_)Kd1{;C&Sg7K zz2B%5l>!ueDncqPq>TgN6C6hGtbitA;j ziCEb{d=(gIL4?Vk7MEm^MSu%lM!e#d-Kg5gw*;(`yfM^5bR z5x3A`5|x3-PN-NXhICR=U5IE1h{n99=cn~!{#s3< zViGZ5ycdd_4CK&AaTTf@4#W2qveaY<%d-fFX+qj#3FRf~A;)16!YXk=;8-Mu;*-Kxy0m^u=pB`#$~D!ZK#pI0`&}jF5z`- z8A&CpFiuyYO@CC^B<@LkKXGYdTB0uTPxWW~*!o@SUiCBeRlH=sM13&v5!IV`uR1w- zKyFc-0KVa6a^CXb&82MIL+dLs;o9unGBu{Z$nugdHd&EzlfIRwX-jdNSuL^z|o`YRnzDgNM0VzZj zIsIZ)5Oy&RoAA{oe|U>47>1ZWTUSjJOW3t_{NwK*|M=_G6FhSQVir%|jpAQDJ6{uv zGew}!;`1|xh6Z9FP)!CE-9@-^C2(yM z?1FC{CUj&s5rp(40pW>oZA0Kk3;ky^pl z3b2<)8zHQK!?+62jyLaYZv5bKjN3Vw=+dWSKGDIs&1Vx&ryPBFsM=Ycu!r{HLF8XuU$6l1g+ zAB=EQu=K`}iKa0%%M6G+DGSFM(rbI_5@Q^q@E~4J`3x5V<5Rk?H$>oy0U462pFcB5fL0 z>nH0NNr)IGn&OOUOw|seJWoP0EPrJXP!?Ds)9uaD5`N+`6iDThXfi|)HHqmq?9r1h z)JwRLkYPsE@ynk~(^!l+<&NCmT{wpygKL*00`h(@bmHdMgCiPMYOP=P0ZdX%5z5Fvw9 zPkqRUaITbnrHJr&{DhWvA(Re3b5UKas3b6DQw0;$jX6--|odhC^@9hn< z?tk}-_f(UMgmRx+aQl`2?C-Ch&@k^~H5*>sUu`&2jMv_E;?-{z-RO~6+&S*fYO^;) z+Eq!Vq+T*n_1(E4Vpk06hN(4Wja@99h9@&1nhf^riuyAw!{Qjp)pO-bVdV=WNWv1* zY6EU_(PxFw%w}0Z!;xJw%u%`|Sr?NdO$&q-fTLYf3A8{B%jg`v z=BKaG616$nO>nEqJWN^HJblAO-$~`qooNnw!cEsP-(mNhV0r4p#_rFQHhx6x{sc_K zwd7J7xDjP3d3hBD`QMn?i?!oG&sy9^>dLuLjbpR6cEMoELL0^E%I zFhyeJ9J)SUVf9ZaCWFHG4!=?=2u7l=Y@q}MM4wDm=O0&3{)WG9A``+ z?)5geq`N^l9fT&9@d?ZN$0`}j#*}COMiH)m)7;ZUpp%lcpTb3Dat1%qJfty%}4rSu} z@=Q62i`58RHIyA|ff(IKVRSUu1*T)^^I)u9Al=H+aO$QV{Q}rSaL$fo@$5+UoZZNt zYsF~(l)vSvJCVi*t5*xqk?iW#0`U`;o=w!T9=E)C{$Gi#3~=?qQ&*dgwNTplG3i*x z;|D5(0mbw12$3F8Fm1#(NOme9aIyZ-<>41C(OY0(6No$9cEkhO1fsLZ_>0E~z!Mpa zIv_a#BTP2j(QrkXzgW(-uL5$Br2oxkr5F0@GVhv z@K~rj5Oy2s!Oc{hnhhJHSw1!+Ac!V|eYE2&4AygtI9{=thA7ev%)QO!196`vAQY}XGaTpQ3ezh?oj}`Tm2$M<=QlgXDgZ5jfXlji%scHI7Nu=z*TED2-t!v0BlXunII^J?iLlid8S`R*UrX zU8`#8FszZL(&GU(&GYzA)eT$t!kqwsf0;sbKL zA@PyO@fYgdfUA<<$M==;-I)A|EdDM+w+k=kaq+j-fva=i7CUfD9Jr+p+&K>1xei=| z1Gn6PTj9X1bl_G2m%V^{p5XBC89!!Gx6wh@44e!n_Er7i9l%A}U6P3eVIVq*NDu{{ za1q?48J5d3WqMd1k{LpdlR?b>eHLdY*Y;+}aVY&)F&sx}W+>f~5Rz-ubuQ8|2MLG3 zf7KU3y+d(@sb@6iSgb>BYz-#IvP?dWfgA5V^+|DbdatafY6|}1dD1?8hpRTCPP!NF zXVMgOUbTvD&nk(os1_Qrx7KUL{aGi)Ez3cU7UbcF^)=ezX^vrm=-ePqs5Nl{U0Yq2 zYh#<}Ts-wDW8jOWh1ZIKk4Ih*4=9LwF$^5r54m4rBEk(>&sXMV^Q9}H#AW@UJN@H8f*;Cl-Y8q zE&bt?b}`IX$|JF*c~rIRxuT;}VqU`BKrjl!G2#mq@?0{B*nYG;oO-cxiP@9ahI-sa$>9 zSlv0&rt8G&j#X%}sTrz=DxL$Y%j2AwCIhq4nkHvxD4H;hnA}ocoGG+4?6mUPuoEZeXp<{d*pdsAGkhq>z+}#W z$r+PL1vC_J@Hq$m5i~UKVwja_6GfhKiVL5<=y)NS!`P#g2|DA%mwO8;K8N16`@>8fFX_Mvoe%JYi3|WuKKS) zYRAB4tGXV%ck{3`=CxJPf19K3Hd`)pYY8p(i7z{MR)UjU^ z>s)>zRGZzOPXb{<*XdJGnL$P0)J@?X8KJ1+HIZsGq92sey_PEWIiD)(U>o6Jg$hp~ zWQGJ(zKh+}>#;sVNyR=Mp`xRekD)3j)wv*Ntl`%@8W%KTEdt`9JN79!lh7Y6p5dh6 zAm>vA6DiVNi2ex*#z3H;X*7vx?15>}^qYLsV5eykk7oy2jR~t=Ut!hE4$-8jQr(T3 zjPedw>np>W(wMMj^wrdacJNKc!E?UWBz{9dR%k80vGrQY(#sH`#_L_moK>;u`6N=qaE` zDfA^$R1uR^59uXEFdpe8mWsV3TwCcS@4`c^yffwViuRHV(MzOX7O9~KwS{T|N~C?H zyQj@x{Rn%?dh`Q~Jb8F<;dGGDSk{R_d=^TlajuIfo#wVq)I3S{d##g5+g6R;U>zE! z#iFkcD@$X-%F&pxGIR+PzV19|qv5A>C{kN?Sa_OKSWuc?cMY8zZaQ1a38<$&XN;Y% zNAc7xV(b+Z44^srd*8ok#6Lw)GB$`YzbxjyKFi$KhsFj=L30l}#Ckn8a1E};Qdnte zLs}m)cS}JD28Os^j~?RuECnSRE=9~;jM-99!eI(y?&uJfLYuoa)%Dt#WfZd%)I-1n zYtS@iJP4zCR6%0Y&6KAvX`Vah9g&y}48Adw52>iNn)_}!a{E{RE>vRj?@=2R<8!GG zsiG11r7%+&J~(e2N-FAa1M1_c{l-!^L^MY2Z!ngs+^64z|-ZB*w_!rIwx5LZ1( zcHnN1NXVX3KK7iF&^CxlX3>O2bPc#I-tbn;p0<4%|f!T)P9;>A-CR zE_(^B+kxwG;I=z(I~=%69k`ti+~p2jUlxv5Liu^>^RN;P(PqA2pjNSJF24kx<_0Lt)Bx$@^5E=Gh+MLg{lVu02I>*$dIM2Ah?9MYZNI^X!sYFd>-Lzu9g*^= zI|Ldg?^2<>5l|tv5ugtvFCmVO!{Ma}AI7W6eDXVyNn|E*d2ABB7QXT`i}JY%ZxX5G zDqg3rD(D}oG%;^IFG`Yb0_e1_&v-EL4|F`kf^M29$uxAGXAFUn)dCxBKv;DDAlEX-|c-2%2$ z`{016kS*oj@=16$(zNt+(9!<{^~3GN{t0R_A3e*@2?qy8xy}=>b=j0@~*%oA40kk=_;fTBYgzvqexdHeGKX2NS{Eu2I-SX zpF+A8X%`aSL8q=m+KqHQ(r1uvK-z<}7wJZ%n~-is+K2R6q|YJUg0vs$^GIJnx)td* zq}!3ch;#?iok(9ox(n&cNOvQB1?j6uUqiYF>FY@MB7FntKBR9VeGBQ^NcSUs2MO=T zQ{O{+0O>&_EY-;?6f-zJg7kf)N0A;w`Y)s(AU%$B0O^NFKSFu}=^)aNk$!^oB+^qz zKSlZ(($A5eM#B5|)Gv{qLHZRE-o>YWgY+!Yb4b5M`W@2mk)B8T1JWOn{)F@b(u+u3 zvv>*V5Yo#?e?fW$=~bk^BK-~NHKfBxuOq#I^lv;L`wtxdiS#d|H<9T5{~PHoq_>gY zLHak+e~{qNu=Icw3=(}}8=uY7?!C`;d;G2kxT|+|>@;CmgtI9Jp&8xLpq1ZU^pq2X2o8x7UHY*@4^Vz}@1&?FSBT7NHWL zigFpKDL;hxMh91lMs6|CRRZld5G9B(!G|PFFwoUPd8>gaLxc%FBw>Pqt`W*F8i-Ov zDBwe+yb}-?pWrV61)pm}i%%O31wEhl@(c1#8@dPyxw$d3#!~1(ZxYyWsJd29FgTw1 z6ddz{u>D#+!H_A4#Wz457kLCCh`7|l2P_FjWww!DA$`jXVQ<*Z&hg9_8!G!5rz4ByNg{3r7Y40BJ zk~#G!;e%xw!V-@M75#otr`;Ii%(B}?F|S>s?(zA0(P)>iQqBZ+sj&Jur0kLyMb9F3 zp#aVzIA`9atP1pXVR7qxD_+e-4`iA)EHq7Pg`{aI3_X+HvRp!9;zZp0gQX~$ATgRyHZ1x%3?<56zZ zSa-vm@kRkGbTR*UcGg3oSkskCR_MfIs@ zsc)@4Z}GX?UKYWMrG6UGfvo;mUePdXkDV~{{%SdSQK{F9xlSYG}qd`N_vk}}h#dcE{v^3Y|3C7@}8 zc#I>9rz(xv?vWOrV9XX$h?wo3klFHWZWRctXtw)b{oZ{m$Ne{?yGNU?cu-40DQF)+ z`R~zYD<)?tD3#!|N1LrIz*q`ODX@n<+JkbQQ)4NDPR~*hVLwbDHHMpURVVU^J+_o8)L zMKqti;%~Jf?iF*jV%1lN1+D1=kGoe4*UC`mYQyF7JDO(7(WU7H`n@uY=x4bZ;CO1H zG1r@=U6aIICnBb&xh7FNJ)GYRbH)3sxI8XjHO*)S$!N2|sB|-I){+&0)+eJBK9csZ zTwm;Q#!yJIQgY*5+b5%Fes;p_%Xj`dDP)`#!}84T5T7h+!Z#yK02wEHb-#3>`_)EQzmhfr(n=q|OfmH6l zrZOb~dDOgbhIz}w`&=t8$;hpxVoN?5+-d7Um%ACZjx8#j6LYTsZe>fuCV-IYvj)J4 zl&pwj_I`W~BSjV3 zqRnLz3Sww{3(Q4shwwIKS*FHPQJTT$7FY?WI0Q$iDCgjFi}s42Q~UK0YL_?43XETz2=WHN4++D|+W~T%4r$$HFKdXbYC= z@`fZh5`YL7?K)}J@>iDqUM?~#n(VT9nMDapmfdS*MUyM9*tQrVi*{W+ZUq;Q^+dg} z7;vKn{_cm#D^7avU!+jOja3YDqiKf8ipdS#4`j(uq3p@~X1%hYvEg|b=&gEvun5M? z%|Jn+H0Ya3*Hv7!_;nO|hYV)2cFVm!nyd;}TU%G^d62!CWUoIyajd5j*aw;%BCp7~ zO(cH`Bu{^PTSW326Ba9b%Wa|Fc$?{snlda4jR`kfW5O-em~dn02W~U_o=(OmC9I51pRv{A5L&|if232_Dg z4)Iv}jZxIettc4l+I-e?Qjy}iwk?^GJK>^DmFxHa43_XX{3i@1umqA-fgQ!EKV&yM zFREg_9q3LG+H|AhJ0n7)Lhlr56v>UgJ4LyAK)*B6E-LHJNcA-)Tv4j;PE#kXKDsqe zoo3YcWvR&wK-`%0WeDd283^tc{7ged7w4&2KEy#{wt?;u$~gw2lk?Q+K19m72D(ou zA2aJsbaS5iFCQZ14-9m_P(E%TIyz4s@F7zE(1&PnT>7L7dqA%Hk;!{NVy;V)oxBGBuSlPyr3H&71fs z5i*&wa467o5lcqr6MP=mQx*#Z$jE zdCv$Xe~ycJzY^&824aWt)bl>X^8R3;=Y;Z)24a`N8`^w`lrI?Qd7*p}5S z9k?S7+}jS^I}TjG1E&%R1Q*fUHk6;I{%mycC(*%626{oDLk6M*J@v8=QFnha&>^9G z#Xyvyr(X3TQvTIIuL|Yg3`8k<>NOuCqh8(&nK zpFxo2lhGmQ&v>sAw>8aO`%$Ve!*E;w#KvKf$LnbGgSZiS*t9w2dAQO%Ea(Xv`PM(z zFy2c^FQjdG>hDH+ZwRM14D=6y{$U_mm#6;eLzMHs08xmj7$Eb($(wp$VQ7gxmKaz@ zVPKg+G{_)W)pye&A>(7N6(dyz#6gnDAPMA5bzGUpS18q&p;J&YTnVy-dj3-mZd@{W z6EUq%SRgK&gsdB79jtNe(Q9E`td-G4_>qjV4#?irHPzikI zWh$`tVB5+eMLwAeJl2m-4OF!7;a{JZKmXa^36i&=-f~qjM%DidAspj;5Ykm1L4lrn z6T;^6qR7(1_B@dzuH-YCvQTgY>aa@;N2K9;f#Qg?&YrUgdb!~UxTBV+A-+)w{X+_L z5Qrj;s^6B<|65c&iItSnhnZ(5-iE62l73nC)LVR3CCu{^Gp6C~q`X4+u#9;L@!NRaJj@9m~NZPrQBK5JZefdR0t&%z-<*ekFw+j3k^{;+-jjAwwIeO7^b`OvJ5n

    PYzI6OKN83bAGFyOLh6(b$EQ4ZV~2X3qbcbo$^-hrFoz*T19s5i>b zQ~xnK$P*pl$uZGszCdV_K$IXnw+~TUNkCkPhP46GAG++Kgn2Lr{%e?_pk0OSQ*JlQ z9W_fqTf3(4o8?o_`GfF~rE0mOMvCLXmG&2=D6)6dEDM@sm>{^@Y$<}_R9DnIYLEyj z8trsN3ArCF`?txX3f1u4I-G7LU|Ffw8x~46A5zh?+q#fSR;mjUsRVC-_+klGs&#$j zkpr%^2nG2>SE-8<{v!u+v&Ghl_wEAmmZJM(U7Tw%rZg%$B?`@h(m1n78Kvom`%}=Y zeS$HCwWUB6TtZ1jM6WSnS!;e;ww52|sBaIW$vEc_rLPQ2MqjC=V6W6G-E<_W1ly&Z z2fL=H@{IwON?Qty0iwOg3kL2O;AS{*vmLlO4%|EkZoUJzz=1otMF)5@ofy_c(Vbn| zog{f^u4z%@B=YaO@?9JmV|xOEQPdIxR;aM`O$lph?M(Lt@~V1$9{1R7}| zO3+iIe2BU`#z0GjauTdz^_MtGBCdpf9@|q%Cr~yw^o4mC`=^5w(focpy9e8Sy53$y@23jYS zbq1mqJXP;Qq+D#E4MMpDP+;%Y)_K&obprd>ld%?X4C|16pw)rf?7(et;4X6D+8ww~ z2W}g1jByn|=EX_f4qT4|x7~r;;lN$$!0mM4E_dMifD8Ku`gh9DQ%j8wT0{rS0C9?i zs0(?)rzI5Ou0?cC3P!j`9%&i(-0ck@ZLtw9VqiBtQ zM-bs!3PxqYrzIf~u56yP6pYn^7`R18xDvmT;&_zH_$^$DzctdbU{Dt(2m)M7!5}aA zv>?F6{!5uSk)jHPFzEZhPk%Hry)*5xvC+p{EfoX7;M1a~SIvpmgzVO}RMF|xr9lWR zkGHOsV5(IVb`BKAV5-$u7(>w3h;lS0tPG6_3t#iF!e-FgDnYOgds`zS)K`aPrmwa# z()nR|=zQCD%{`cEv4eW*Tw{ovrCkj^6n0u$ByYLN+Y)hF?7lEJlXsC&uJoZWmv+fp zW%Al1T-doib)L!V6w1{;6y~x`^5z(4zAeIqT_1PhOa;ZzT4~31UPx3sI*C+L4 zyv@;bw9Jkk#?CxDYT6@5(j|!x0?(21N|Y8J5s16Wf%~WfceMle2?y>P2ku%2ZWnOb zI|p|=aMwF!~`E_fes&H_+7rEjAG4>!~F^#4f(nK-UQ6G6PYE$^vT%+vBKt)%Uf)DqsL9IyJwmC5y(AoK~fpn z3+bqg9uE7=?{V&d7XmqN&}r`SbDUEru{I~^+DAi?J@7}uKVL4;B<%G{mH9O;(L6PY zm4|NNM2L^0EIvMYDIB5MRZ<#hU#q)86Dgz zI(WB%ZWHK215tvWTIWO5-Fpmlr%=AvK$M}U*831CHyG${p=>q~rRb@RK19kE1KlH( ztp=hTJ(cz$Qf@NPeL}g}K$N7Xw)hY!+k7bOVDFdf-e>aek2qM$8NbwO^1dgO?LHLd z@_^)RHF*z2xKIn8>M(ium1ID?KS9Z71lk73Jps3q@gS6-Z9fW*VI30pm;?8?19!lI zd%}S`=)gVcz&!NVOH=D_CD(X*6lVXx&xsiucv8x}RBWJ1p>D{->sz*eUViECN!UP{s<>2s zqHoshnqF8+C8%fzpgQ=ZY=wCec2I%`CG=YrNiz{Nw1k9GJ|}sAP`1m+{v}IBa|n~k z1BBdNg$*^(g(ag+pu`=vUYznF^25FxZt(TVXc%EK*|h6#uo1FTP`9XcJPGT-Ze0D6 zp2CcOBIHv*PLYD^=k*U|JPA|5V~O0n%U8Uj0wuZvB&E%O^b4BwS?C(1KS?~5;PzfC zAUf5jMDRNyc&hLzBY1tT#jDSChtlV|>*#YW5Phy&taFp*Vl0`C&r_Ef z1NgbrVFhm^?FScug5Nd?-^VG+T4*n!M__z-6p9IABVZcI#2iVA7mzU6s(Yvwh^nQ~c?ZYpj53~2{{0dwj^k6c2$%Yi@ zpX5La?H5^srWm1@-w{&SGHAz2_4RHq>Rv=1e5rT^ULIgM(5m%^Ug9MkP;jNdr-=67 zmvsM?y)>3bxc`!e1QaqlSqk=tVBPX1eVaf+A4{R9+LKTfZX$jO0foFLGgOagF!54C zUWLQQQv8}m--+;2LSA^xN9cWu=nIcuO2`Y3<>j-s9>EKbwLC_$9(>?VcvPWgBYcTz znHO=7*NcfmiNZ{XYNWK-ZW?_>dn*P=eC!3hXjzBEUb>TdS>TYd7welmg^wrN@$|C5 zAz2o%+N9q(B+CM{FM6ayA&+#(_eeU28qnL04@vN*-=T9zmIzpmrlJHHPK^bx@GFtc z@`N`+#_U50woWfB&~Lm;-DPeCydo{?L5m92u?nq*h!SjvXmw;V54##`CQ9R971Cai zvglV$<0%%p82mmkax}zPeY+2lr5%b73y&Qp@38Q&d2~SdDOr>EhERUMK>rZvQUlQi z;Ri!~h~-`8L*ep{$aNnyc}F7U(Ls6Ya+CMAQ1Uu^wd{; zh?HLi#D_W1@c;#%k;#1A5t{Ie9WS3aGj+I{4|5z3d&2%X>?JmY@?he~q&#sLJeX+7 zI5e4G{>fl>TTj0ZA}gafjf@WSO1Q$QFIR=t8)WlulDu zpELH6$s&>tPmW6Rp@BNIIv~~Km-Y8g!qb72@8c=t^ru+i5y#_YzB@{^_BCjR0qH1T zGpGwho-ctb3JA%UA>}AM1#Rnc_+fpem712Fo)M1{2^7f-(ngu4raa9d+#34aQAt)> zyK(j|Pu*jzXN=VG>pm3rUSlQiUXwRg>Ti86`<|!1Ve*a>%KHp7UZ8Iph`rBK-}0d( zpl=(fQYh~SL_e3o&=P$Hfj;ie#0|c`(*f~Ba18fd`ngFC+!P0Hssne519z$ecbWq? z!-1Raz|C>s<~eZl9k>M!+*uA>wFBn?7haL4pQHRd^&O*wiK2t=8fcP0-!l*;=&1*M zh`M{whr+fpRjzx;}=@2T&bywim8Q3K5o z=+2~$BPf4QeaVNCfbR04aCvj&x-Xl&Ig#?H9Z%hD^5zNUR}3^?psyN;`tj7)e2C@U zW1zEy^6LhohCFqz50Ua42J(dRK0xdXFW?w`|EV4C?Mk%n3$@@F)-U@)oddVTfm`ap zo$J6gIB+W+xK+Sq_sd2HuE~L0>%d*$z+LFTt#jbkJ8&DaaO?||pQpZQbWkfg_?Cg{ z1p2mtC_zu%??cqxcMP;tD8FkU%Ft8a^C40`V4wz}e9%CYA|8S8AyPhUpjASdF%aeG zsYiT>l;1Z{lTbctAWG6xkNFTO|I3HM)_;Lq_XCr6LB#qgXHPwD@-7rgZo{R_E{ssF zle{0AymgU0YQa-KGI{HT@(CXb*JXp`9W;3xd@j+x5ZJzc>xEq`(HlBiP+GSAwK{N{ z9k?wH+(iyty93whz-@Ejx*fP42X4Cqx5I(E)PdXSz+LXZ^=09xSIQ5sSTZ_j5sm!B zhr-%wmAofSUaPMya-noR^_0omER;X>p)i*%lJ_%{wdjNXHhJAb`5PY!bLo-1XH8yDgbTIm zspm}IcA@;O4~4nxki6fSyd4oP)VZgAZ}Kh`%IAG3%w?zK{lVnzjBuevc@*+5qb^pb%nK~Ej> zp(LP}4Rp0o{>4C)p{HK)AyU3-plgKkuLhzNJ@q#qBIRoa+9i~S4MaKOhZuc`lz;c3 zuvJ|z*S%r#uJ^5qt)-Ol47ADHBb5L2p)i-dlJ_r@w>QFtI>7V$ChumU{D0be7dS1e za(#HchdB?-03)EBUST){2*aV&)aIE11Qme<52;%~7y%g$F{6^&W)#{|T2NR}Qj%Jl zvXh;rR3xv5((**9XdEdtK{Z zYu)#~&g)svJDy5P*(zawwP9Neq|ic&=p5}mp%0tnZH>Z+%6V*&r?Zj-63JWMr?ZA9o|}`s9jukW5ezg z{b3c{+Tc;K!Cx))m{9LpiWE!MR_xkHrGpy+4h%b^gK(tvg>5t%VMt!${Ztw!~Rz~UvkWUwTx#W9WJ`YzOWz5 zqwlwO)v$~ul0qpS96~x+t3^R@I}~>zk1ek@^*prTY)<#zBaYSzN8>W)9&t1-r}o8f zb)woRLb1vt7Op%h6(`>#Cj1CE+&SB0)vgbH?-4~XOeN|XG1FpGfHyi=hks5|9%QNK zh00lqjX`9N_f#6xU`xFu$RUfFtI*t=TNaZa@n(UK4$ceThNHYbDiDVYyBAt28p zIz$x^@n=7FWsp-ja!3UB-DR^v5o{*+r~QM3a^%pV;!^^Ol6zWylYTudFQ{>-!UqZ8 zMsp4nZG=jBmSq*i&jHiWrQt(1(Gz zMvqy(4IhR_bi;17yd8mZh_c<7MRlp)R0GAmLrIM&S{AY{eo8u3T)j+Lr4S)k$z3Pj z^^WLy0CY)<44ccBHt zy>1*4peant(1&^lUp4A+a^?na2mlD}5Ty~Neh^D5r`~JO-SLKXK{4N|tvKJ}3#fRp z9Mz%msfjP>*`3N5Wqsk}F7I;x6y}+k@_c!mn(Ey=pq`h>$P3hwRU)W=?Ds;CL!edK z$z-Ti_dE6jgX_qtZN@(8I#(#t!9twkOYx1kQ99uub$ zj{_XSwxM2zw4r?4Xp=+Odb88zRO(F+)Ga~uM_Fte3jgASFO#XnS;MBmM#B4%)>^z& zYfJ`L(3jxwyaW$Mu&pY#LRF!vNcGjns)3^VvQk}!L49=XY@)hkaif~6BH2WB$!1Ey zclffz@AAa&ibUMX#P2G>FlD+ohT>^8W0~Y*gr&-bdY`4};20u$iUuDAiibi`Dp2Sg ztQxB_?ojAM2=9k*Yi_HgDqLVCN@DN;1eb^ojgMaHF5e>{2LMY8hw@r1!xIX)o~V7* z6)jD~3&?m2wp$uGW=FIJLA`PT_g{@CX zt)8-SYP5lri!2@zi&u+oM?-(Kc(v7^{*EnPEf#l}*y7bFtMiKLOl7tDI~vo}f$#wc*SwkUss?LdM|lV0d;#&@TB#ilLk+s$)Rp_)O?*scviy$ElDgk4k9sIO zLQEBqYkF@lDZ@BR)d@A;QtS#bRqzyBsEMHH+0Y26l-G10crHECG%Z2+V1!%GMyg$1 z$8&D_w`yF926Aw!OHqS>vhHo|)d%if!H22lk2_HW^#fshrOVY|eKKWQ1DMW01gn3i zyaf7pz0?4g6ZP+uwRj)+M73U>QJOE!`}|rT_b3kMG{ z);#L(xM$*k1#dG!%Cvhw$;XMHm}}$`VK9!*wd-%zAiN*Ktu?I?`nmpw!2=Mi{Y}b8 z_x%k4IRMn}Q)|?S{b0nnzaeHIFxHX}sc!q>7G_NDdvkE%5VocA2x+N~Pa>=pJwjTl zeysnLF&L@XmdfWu`kUhsl*%VkvR1TmhG>7&n~&115&iWS{hb8;QP2GocI+>@a(wk~ z#l&^Lf12I8z*p3`f;;J*GOgj#ee0IFwAFR)1h+jco|37=XMLn2w31We?Q0L4a6l8zNWkjOKUzm({v~L>ReQ8my;$c%untc<*B4la3wZU`4EFIFS(xi=)CX(o3)ICrT`#K92WIMJ zV#9m-Da93##gs)pWUE?gENc<22Sg5-pW%|9$WkMOYO)mTQG}f@MUIlNNuYQk6f}Xb zjM@0~*JK(s3Vzko^eH#~iD&-d>1mrgNnp-7nt(c~JA*$8 z^G{s9&!L?^gRhDk1-WX*2CL)=a6fF`#Y&b}-=#D^S@xgvY17eSsmUmlQnb`>Q6{Bm zi;F!){a)lLR@e(YMNRyRr&tN+f}-Dz7GKjd`J*M1mslLzR9qC9*3`yIPENN}gHTf~ z#a0!UAbE4yvC6X0F4(2gE5XAyTM|0|z;rQ-CkD}4_!**l>oDr)A z<1-U8rTK&`nmgWrm;`eJr5Cef;nwAeZBpFIU8Uu!GRF}?8&4EHpPA;CKm#b%WqA}C zwgvpgFd2Wjh~M?{T`u39jk*OeQEXZxZ_t}4Bg%StDug{8uA_ovrgNgCGu=`r33axm z*vH{IDo@e6Gc9$hAZJ;My&UfB^AwTiSPGAXfSL`8pUb)U|F60%&4#ipbMe~1f)vw<@f-+6jHl!&tInzDgohj17 zlf|az!KQ4@CyPz>QQOIW7^oq%lnZe-(GcoiM;?=<4b;0vCri)Z^r1-V(1j+orJ>Z0 zlS4h!%T@izE`Gbxa;!92R!&^WSPIr(-1>!5D8;to0#NLdQEpJNPN%|8zij=N9}!fgzN`q3BXVU-r4gqt zjH8?~P@9UeE|gh|j#6Hf7~=}Nm8tsnBECKdoAo6Lc{JFZ@oPWXYtUe%dlnoF^8B-x zlt*(+6Bqjk%t13xvo5B;sds&$)HGRuLDnFXnk%(vbuOBHnmCu!hH{c6SBWg6I?*)S zT`4k|SLTXMd1Nj`u9Tw7Tm*_u8%hEycA2vhOc)3dZ`lRZm^ppN39#97+3N#o}b zg-zR8vXlhx&&D~WN5r4AGVy|_lR^ES{I%ED9{M` zKRX*yAJVk3(W>J6Kpcvd{gP#Oy#38z{~U7WYNK^#W_qTZqG+w@;!zjFTD1A}M58s` zH(Ip%bnz)?1I1G3+Kf$?Nfb+^A=IRL&U8DdRlYV_JcBh|Jc=c?aiEXwTemg z2!QD$#>}#>g`2Cj4ZD1K$+x@^E_Z3mq9x1Qu3FN*xNYV91vV8{LSyFG_qxs1O30Ts zO2ith4nR{Y7f)P%#j*)_r5kGuK!_CA+_|Wim;`WNpKmloL`7+9?FKh<(OL_NCj>AB zawz($F?GFkl0FwT7^qT+sLWSuCgeqW%*1?TLPgV^@p(CKttD0VlFYn}98RKs0+HzP zajqA|Qx`d_v{L+jp7`2Q_!DcvJn<(cr4*f{*;BOq0Z-AklRQP^#T2bG*@sc(Q$Vp6 z&r3{W=1DEqDJx0>)WvWJO_>EIrEyr2niMA-XTUzAQ@>9A(0myWa_>s*N=!8LA-+q} zoLnqGttlSlFAVS&1$c`CyrltNYk;>Rz*`Ak@nULQfY%=2T@~Q14)CrC@U9K;)&zJR zMLb%7`io3!TJ5nwykr@uQZo!;+Umfhh7;_2;90e1UX*KzJVa-A&p6vSaZ7fQ~SBWJwYV4=;KPONLAtoYAD zkvmeR%d|JH=>(p!7fI}upm>J`Y6!yOh1o@D6y;)fo@U@66?ZZSjD@;l$9r9C){Q}3 zc^q%1wlFSLD(nPEV`<_$EEb`q>|=)V^^ZJzRL?dC2b2*3-Jie>iNFFeB@>qGr4eh=#tew|of3RWPgS{h4t0ass zp5!K%!cHL@F!{)0>QWeTsHx}s8t|3POR>20iv)1u0Ws^#Fq~*EDHA;}7CnCydS+j| zxIoX!Nvc#iN$t_Li~ZU)Gt#*mE65@%Sxn_5OT^K_V$D1 zObtqDA0k_H>nybtb{}DeR$9A5wY(lBoga$ZqwyodAKU_m=VU421W2Gu^gjILAAj^{ z8YwPC-w9W9*ZbEqemxD^oN*CUYs_1nupSGi z1}DA6oY_~U8n-3dJl4-PwYq=HL(0KeY`qERO~A&Mh!645VG1^G_Aok!b+r#snr&>j zB$9+tN%0h>O&bL|t~iR9M!UzbwJ@VJ3N>gHoV4SSNW$6?6Rqs3;(H+E9S~_2U=W#* zr60acu??dlzryay$RSbemup;d%oV&5xuUJw#X1+k0<>Y`t? zi>ElvaGcOC)j($s?cyUkqiuJ^iJ0Ga8hJGn<0mu6e6X*@LOk-J6#e2~K=H)sRW?^A z*>P__+{-2>PO&$ITY|6^H^_~Cm#=8k7~1zeWpC<-1Ro>KM{y*EjDc5Re5z5jDy+Ag z3s<4}K_a}26?ksHF%jKW;3G^}XNG<=ro-Y7XRGiC6IR@HX9N-0&tgpk@mQqQqUcL( z0ar_rzG;VCtHo{a^%Qe*3Dl+WO3eblU%{aUZUDDZt`V8@EOo6=^DV`}Mr1Da6cxGv z6x&ev0w~+rK4L)IrdI1$Ga5F9sTP5RFAyfxgzs6`Hq^nGU)v`?Oqf)YYH4cOB0Crr zX8UCL?18Mj2ZfbdyKcfxWNg6V&lo{Z^V%G?r!gdS1^|&&Ig9gi*&KDr?x| zU;gRC?{<~tnURXFel#79(4R0~TViQ2}RdohpN&RMW2o85Q8s-QCX)t3XICuy~DPKox3$WX(r_)Eut};@-;lEPhQvD zVU_ifyqGBB_eA}T$s6YgN92&hUD#;3GIbN&?@E~?Y)q{;zcQ!G?^oq~@>;lO@wj|l zfOkWHw?4qTF~GYiz}pbuZ3M6Q>i10n-pv8t<^XR?fOkuPw>7}KHNe{jUh-jbHVf1r zuI-2Im16b23>4i5Jq!I)4>>%-aivsm3<_=cwiH#8u(*2D(bl@^&4Dp$Rf@3pkuA~) z;YeyNsyBuo>?+~J_!8gG5PTv6=~D4$6Iw;oUaZMOCcK_EX(ECQQBiyG(iGHQMjc7H zKI(~irc=%xYF3O1^^A^s(-Wg8m-%=U#pE`-?v2}(F7qQGB(B|r&6fAT53PdlabZAe zVRL$^Oi$KHby@@^()rgFD3Q0Euk-qfAjw{?DOo?M|3 zFVy9hqU%Oxsi$blR!iL^$YqwI^Wv=so+9$oX-#3HAU|U%x^HAQc#6o4mbzJxpS2Vn zI5MB}6p@=i(LADb> zjnmXYm%CeVvy9CE!%gfQcX?@rZn9ZsVh(1d4M!sJuuDrI*AVJMCb(K1Lq3%_l({Y{ zMHv?PrhFl@B~zL&l@l;5E`e<8glR#cN%K?M~+Jz{j%+2>(;PEwP;I8x( zzvnevd~J)^_h#6Te!Qi?hCB_krNEDMtHDHire=#&LZ?;^?6yd!S|;acw)ooA#NulK zBXnYdV>$Gd(_3Vjo7trAv+0Y>=aCA;y_#8wjI^ zC1D(iw3PXIw}TaW*e&8=kVaSJNQAHxAdMattNa$UXno8=j_McEci?8@7M3AObCwa_ zhX{1GWQ1}wfdU~GHo_oO!NUNKTPC)bx4`AFLW6-S{!buTs@Urk$@#xzSBL0KeI#J? zx;XW{FgzMYCY%&na;CImTgCdDpRfZ%F4$b zdm^?L#Xc5kPeW{#{OHmlyQ|1-L29(^t&;W^EwxRkFM;B~;7wG)(W%*~8AmM|{xr1_ zZQ641xp;UxBqlpM^6m)m?hNqm3h?d;@U{nd_Xc=7z&q;ZlmPGk0Pn#7Z)bq_y#Q}l zfVVrq%NOxz1L`j_w^$q8E;iWesSLv0y`OhT*q3eC9pWi2jM|ONS8Ujwg1psIcL}x4 zQq*r`zUnE~?%P1|DrqcEf{Lr{kdg{sC0!}bvR%a74k%r4yLD6+fu@LXm5Vyny@LCi zrFIDQbxYkR$U8m7#Mj&I@qR&m(o!@>WIp97B5$QBq?1>y@Y?72`F>qFw^yt{VzI+L7T`S|;5`xGJsIFV72rJ^ z;OzmgcvSpcfcJcW_hNweQh@hzfcHv(w>QAsSHz>|JPIC$FV+T+iVbeI)MG+@-cr;c zx*<=|cAG8rgdn$AiaLzU7d=Jfmn`*^AaAi0wHTSLo+9$gmf9o8uULwDjLfZ`B66Fh zo)_d-Ek#YDLV1eF+b#8yAn&jgbs3qjd5XxdTj~`--f1anGs0!OTEF&6*f&6ND-fLv z!t}#FX)iitIVOl<+(>jsM8u;#t_tkMXb%W^;gLi5Zg^)$o{0EBlS9N~JWWM*C)wxv zRM_Pv^C1VCWKZA8DC}qVqMvm;oJ0&px`qAgUX1GO-k}^ubf|bxr+JYb#$ROiW%!Ok z$q!}4&7kB7yphHK#IOLNj(sj3FpV;MY z*ya1?RI|_8#T|r37NA>d$aT))-*t9)woitc+Qsja;hFB~t-_+y(HAu*Tc@wfeEn7U zOmS=QT7b7dzMr{qL5d25||zr-;1QQ>>k?lYU*|?XY35i-)){>Nhg~VZ#mx z@>`xtN;xQD_t~(61yZQ}$lPzk-Vo%sL2(TlUW+gg`0&Z$H_%ex{vRHFY)%aY$!|y&&mxRX8K&!(>;)KN*WJIY*La{rnIX+C2_nCY!60| zwLMB|&N9{*#3~%rRhCx}jvnZs%vN5c15oHh-rlq7-Y!b#n_$b%Mt!+RE=vVzgP+S%3woDTE~`aN zE@Yd0H)%YNDRHAh*I>GT*?98z3oe;0p3Xg-YEgzsR3SNfEN|+O=_xiDdp(tG zGDb+eeKu@FL6brKM&?&GY?L4$gRd|zqlNl`rKn*v)}E5a8dRwnPWMHae0FTZkFjW6 zddLw4Z1lK8Xb)Ow)EHlj+LhB)s4NbfsJQfWN9x|1&CXeMb`;^(z*z*l&EXPVqgAB4^;9io; zAS+V*87nP~oJuLl^F)P%=|IW>$4W~xl(ReCnR2kWr6IIY2Yx&?qQ^lV6st6dRh|HV z^}Inf53NUxWA&x?*)>QTP$rLyG!&Ga+W-yOWEoYKD~=XQzpErw)*E!PNP(U)LGtip zOHCB&NlUTjpp*3!{p4v&og~O-EXBHmj?_~`?y=OVg8Yf4SbNZsdWy*BKymc}Y62C1 z8sU3xed0V>p8yAllfQh>!o4U3dRRAGPBi2e#I4yR?KYin7x5`QCQl&cGacUCT9!#-GjVLFn0gdfStFc)sUG3OW zTHLR#wsD zfOk=VcX5C>H^7@$#AAy={b7I$A5n@m_-CGC4gRa8CW|+{=&58FwTl6+4Vx;+pId60 zQ2%Ku>KFZ}r>OSKBJr=_UH2rpJtUs)kxb(UHw z)G?N#9`Vu*TieyWS#8`j~|V_kSH?fM$mw{$^cR z3(-mYlD96vyCJ|^AK={>;N2A9Z3yr-26&qSyqg2O%>mw)0PmInZ)<>eYk;>6ykxsU zOHzN4DYZ6OD;6mO#oI+Nf}thNO+VHrzSd&2Sa@NIG0o|AU~$gPu7&Kd*Rrg|xG``o zOFJ4#xt2xmbEva%;DBVyWMv zOd6JjTF&zn^?Q-0IDVYxDQaTAr&z>GL2=}_&W;;ZA~U(b;#ij=Q(@D-L2^=Qsr5ot zS&FqOGS!}9tJuv_Hwm)4rC6W1_^u_`AYrwjIJbpL5N1F4u|b#PNm$~Ne7oE-9# zO=6+nvjB?)cnfZsq#?@v+DFvmsl< zgey!pUMFB-l*sEPB8Qpvm3K~QXA0jlt>5MC=SsB4#8V!HadrhBE)vfdlaRY z&zDCkR=@QYnvHhxj;_5?rhQz<8;IXpdWnN<_?Y-zBWbe$y5=UyNiR@5e~2s> z_}nJACf+hFWy13sSXgO#!2;==e;IM{hDZL)XHGW3IRV@|^V6G`_x!88j+(&X3~&-R zcH{{xg_>cFRNjh383{d}LD1g>`IJS3mf>L+Ibb>vPh2>8v4b*Oo8X|3N0&NUUZIn2 zf|EiXPY=6-Fj2bb!4K~o_=y9WD4(#AHj}3d@6;Ks9>5W_Te)P^@diKj{)diXatS|(7R`T6{Kx~dty{#YjMc&a2kAkLltcui8Z?=xg+4;={Dx&M&Ec(y`hBs@Gk$=d-H?G$Z1hc9K z3^}TZ%rVFf^R`*?)*BQ%G!(%(8ghU$z;IpvZt>>6_JgIVzxEGEp2n7Rw|ZqM8mtcN4!vRd7IUUnozdbyv?R zLqph2JjVgO16v?({hRWI?3OIA>1DlfK)P<6^exU8*}itSI;6d~h`n*t6}~tUl(RR= z1ar!Fo&`2N^K@N0bhck5S#;!8%#s&Ez+M4 zO+iDZqpKr^#a=f|VDg+*rO`)JV_58WnxH&q#q$Zen$3JM(b(rki!}QvGyD8x_I-ao z?{fmHWcJ~PiR{PT#sr^(HSu60pa05ONz~j{(cE#+-1p4~K&j@&MTlWW%C`|443qDX z@;#d0NEhG0=($nO3-ERm$f49*MQVRbZ4+t$D9*qx?8X_GyBLi#u0iQ*aW(j7uyV7` zOiN9}x&&uiw?krbRzcn!0p6Vf-dzFSJptbK0Po%aZ%2T4Ux0UifcId4w==-|UVyhN zz}p?*<%@W<0riJ>lUN(vE;blssXK(qS&ACOyGcC7(ez+X(Iect*GZTCS>CH?OS ziFb+(d!oSqs9#)mY{Q-uhCL_9NuaoIhfV=u@#i`8l(N^A$~PTn5!oVy?Aysv4~Ot0H1zoFXk_0`-c02X zaTm!c?{gTKAr(IN=u?S%N0kxp+c_C=$H@FXr~7tt^4KAKpD52oKd1Y4@M;^1nIqcazpmJl)UH)ANb()$_I# zE~bvJo|n0cj;~l#aYZgtW&L?k@^CsRdJXbf;1e$`yodol zEG~;G4neOu{r;c){x5z1APDgq*$;LIdd>D_%f7U)@3#aYUL$wVIRw2XnM&+64nePp zhqN!M*YK=ClS9yJrXTnHSLgoW_wdaZ6JFyG^qQoM__u>Sv-RPZrMzcYABH{( zeE8*r5C2Ad7#twB{px`Q&t|%zn!T((EFS6*)QLspiHJ`uI0SWc{dZzM?+tP=!8x zKwCcV!@rSM=M}Nonbt#J@fM@CUn#JTa+20iPEz~ymshgXw$46Z@l!1gp$^p-Uy*sK z(}hY(YDYOqZ73&Ma+RsxNnhkh1(#A=U)(Dtn{KInLY)nYW5R>DnNXkoNRA2fI1%yd z)UR>K`YAgmd=(Ot;~b6?UkmW|2Y9ascn1Q!g8|+f0bVC~#bd&^0=z>3-rE7*I|1I| z0PjeE*A?IyYz8Ku;G;#TKV1H8ZSbntV5X&B6Ka;Fs6kx*?J154&#~0&f}CwB>M%0H z(DyQh0}?hI6jyfO;|PmC2hifw@L>r(Nr%hgnoh^DAOf=h#s}XH$dWFAx}q=;PVIp7 z_~hL!r7BS`#p0rp1F|Bd;avK}#{o1$k~B}XVf85;16e}Xs#8u*ZDatKO5n0|O$;9Kw+jKJ`o zsygYTK>Ki_-qJpbC&fL2<<}3#t8Zx^B_lB>gU<1n^Dh6WatL}w>^^U4 zA0;QRi5Lv2I?jrX$Ja*<(qwDnyf{sA%*woUXJ041p-YL{jX!T;0}2T46!`M6C64>c zw-O_CCxb1s`{a;{y~?~&WiYpFsUO@p;k6&`Un2RC5fq;ql;;6mnb>;kM{_IBDgG&Y zNXPIF#ZgC`pTpXd@pUfU^EFJ7K6^;4ItIdc#`BQ1YHbvWcz*N!$MnBL;+@VK^teOf zqk4zeA#Lv zdSL1NFZOKw+y=?*VKkaJ&@5L;ar~q>W{?JZx90dBf4Qp@p4F>FR%H3+3_Yprl4czk zFk$1AJ3sbo6duDkBt0O-BLoBF`mzBjEi<#p+Mpl$=wY<3J>x4a>Ur;3GrWLSJR-K4 z2r&KZNP%sXlZF1AV(1Y^M5B6k`AC7sCl9+Gs?Bn79Y(h3)QR17ffT zN&ygfEQ8{^nPv0a7c6d_ z58UGUtJpRo!|va6G>KY_mQ__0?C~Ul(3@ zp~@4@TU04(La&l)k+k!cXRT9o>l$MERGU>Ti&|EX9Lb!u*{qGU|ISfSa;v()=FAb8 z=B%5@%iH@gdzEx&&a!6Qm~rE5eE08o(%wFDXXbdIO0h(UXb_Vz>+SKnUL`eMIXxut z4}_>$YcvCgoR`fpCCycxG*JD~K(WEAlLqQo+ZfhKi*uZ(*jDrd#jdvwRsK9XRI4i~!|(nc zR}N}`r&xJV&#Zhp{vc1$d2^oXX3jUqdx{?PTTjs|278K@9O5ZjhQod>0d*S3>xK8U z4Ygr?q&aW5O>-Yj|q=7|POWTT-Z)s#%jEEd0J%<}EDIsyAcP~G&kjH1#iw5Chz#gb4lngBl5%0Uy}zK! zl){A=sUDybL~@tw@>G$G@_4F9hI-97M9Cd|2=hZS6dkmj2XMpCV{5knb|Tq;HGllc zr|w-h=3&Bkp{l)Ck;7W-)N?M4(J{|{$OXt474y~wKoRx$Cz>km+x>B5e>mI_w=OXI zJR(xhs|@P-$Sd-N^8ga-1Bk@|*_q#-`S^m%cvZ?(xF813i*c{inhYBm`BjD&Tb|4h zOHQly7wdcs7T_?he}M&*lT@d2lDgthufNxdh9?WJoMf4llguykF-ZL4YU>w+Bv;pX zDmmTGN!YbEEGIeUben_6V=9w_M-CYIcTe_R`IlFsj+BAe5TuqI5OKg(AK(oQ@P-F? zBLcip0p92UZ)||q0ABIy93}*K69c>x1H6+0yi)?aQv&+0c5{!fo&od1{g^HNIB9Xd0H%7V>o3LQYtlGZZ}$ zPE{i!;OmSD*k% zbR`Qgv}9;WX}&ZsKg#oXFM%&Gr&(#!$LKV8Xo<)3=1RfyXrbckAzv3%93FPS>~$fc z3TSc~kkY^rCz?f2hbo;iD#el}CIk0F66_kx8wf)ObPq zgPu{XTl35nhj) z*(UR^e;ukBkH|SK>L$L;9wIVpkvlr(D9P(OP&}Cor6TM%A2RQ|N?dUiT=5uQR7zJ& zvnkYlfTjkx1mSeacztXXToQ1ixCwAHoF#p1&7sjZefyj|-YSh&N~EhpAenL__q93c zR6{I%q^VHpdh;`+>)p;iGt|*(-TG$FvUx98xK<;;%MAU_!>PdPXBLjwwQsa!#!BZ) zZqW#`5WKU)!|A2*4VR79&-X4_4O#|Ys3yHy3 zLMpvgKeqvPrs4G>5LRXS=Z8>gl^Kw)k2689jT_=oB~|YM&i4Jd{Bik~O2GL8d8Tbg zi)}vv+tOo37uc5V<7hFTF1L-Av8c0+hEn}5G^tyamQitJ^-^af_J1wi4Ik{svndWve~cY$tooySJ4lOr>4=9H`r}x%tkAxDClI7_mXM95 zQ)l0t%FaB6%p5k}+d2Axbj~6YnV~{ox_f!!?{{7#c^7|Vo#2C5wsOFIUEZnf{jc2k z&?BoZ6u9_f0?vEIDq^^HR&Mcm0{l@NO3SOlq|8%n5!)V8J4t2anb>I$inlI2iI%xanBgQHK}n2vlfR}&;xt)STW zpa=+Sc(Y^tf%DjHPAKvX7Kv7G8Y{kmV8EZ>yM50Wj{A5s;nG%B%4uo%hI`eFzy~oH zaQ$$bYyw;fj~t}sogz-6_``-+r`Eu1{W5Gp_`-`s2B?X+1(~4ku(lJub!SL239wiC>@d-lG6iRXpi)m`iYYI3QL_N)JjWnf`C<7PjRZg3KaJ) zQ7BLuv(mnbk&Q>;mkGGTYNarh+#aF%6mkKAol!7A7MNNRUQc0FLW|! zRbzJ86*F8oNQ9i8xgKk!vMx5~96mkC1X*-s$|uO9HuYt20G}Yum@)l5f|rBHILjkw zIb%BPBJwHdS%BaoG7xs{c=?LuC*VDWx^~QTbuhHpE*qVKAqnEhu|vj@l`hP_HILfI z)P7JGRv$N#M~>7)zAQo7`8jv9AWL#Q;u)tR9xNNmiwdQ4rkaT2peSSd`f~A5&QLz= zBpaR%#qGe1dC97~5nc(@2TM-HGysj$_2Levme9y;*5s#(k==^VsbbQYDgiR4XsUxg z9&HhaQSUKD9WTasp6++5Xs^@9qki7>6iXk+V<}^brEwHzsF7*6@vz?s>IzWQIm!tt z{xrf-vFR+E=shfgt~%rRfBWg3E4naDZ$xthglv&J1k3u)tco#zxtje)BU&IJO&XTAK-&}jpEFc#hD#~I*C7xXmcbV@K1-(W(NBSa&u=Rni)aB`y7J0OQs^1 z*T}IyB5>)9=rf6si*@M><@qX=LlpJA^?T#b{p~&HNO|M}o5qqzeZk4nA&$$>B=Hzj zHha%n53wNHAn4{wP2vATT??n-k!jAK+aO;9V5pT^!)e4e;iH zS9}0#5_plh3Vy+QK1sY}H7M3ecoM?m&!j}1+%J9%4iNFW$RyNBdo2=YKTSkY4!!Br z;|ITT?Tc^h#{1}9y|jqI*s$& z?VW_W2^4Eh2?l(U8fCG5_M7$n_kOf@zo2*wMr6tC#N~-TT2lYZK|8+8m!wRRJ_IcR zYOzDmXK#M1?%VHP!h^t*uv&q7E^UQF(1(+ym*bk!@wprq*G)Nc%(^MpSvwTl%vesF z)?iM*cponEL)%Oi+k6b>VC|diZNs`VS?r*-4=PJ&n{{n+fp(RX)TDBfT2oF^L&`~N zMAM}Pbd6}T^n&g;OQgqGSo0!tHS*0;OqEhxW2tFEU27@UJuDM?iY?Z^dWyct^m?Rdyab z7@fL1wNu(m9%Nq zz-tfit_tv02YA;6c-IDaYXZCuV)MdTMO)hfu%mZBE%o*7RO`9({u6y%pcakZ9uJV)wJ8{(W}Zn3B~ zpw2N%G1g;ijn)TL#%!^BvTd%_N6UDnMPz|6W`w=erAPPEeq{R5hG8Go+wKh@-HHq!y=aT97UW7hsc9>bQ{IxdwC`oEu9v3MVzRS$DxN_Svo>p0~-z*_JIzd}%prB*GkfKA^3n zmJxXKyhMoKVUHs{`VM=hQj17ve7qWaFcOca0L_Ea?}H~DIZ9cTN=S39gU z+br?O8Z*x<@p-8=^Cj2ps@p}6+9kI`TXW2bz)>gdL7lK+yGojttycO~(wKbNQmcjf zilwdr@*~*5)$aKk3A+_xeAN+bfhH-1|8&B%0k*-Z_`%W=T`SOS2x2C$wNNI$MiT!j zLX={=cAKR-B-ZVq*w5ulL%YcXGIc5Tar#Oj_GxP&G1+#Lw=TfDA;4Q7;N2MD-4x($ z2=F!rc$)&en*+Sf0p6AX@0I{>Yk+rafVU02IhsFlsn5|8B!J2=betxC;k& zLl{1f9G~Tp!wu-quo>0Ev@c%Lmc#$^TU&FjE3Rr;)$~!cnRRdxGiTZvvvc^rY5Mfs z^qJ>R!I?GOR3(FKV;XD=x&hr@H=bD=H-18H;`=`!(WM!+3^rc?N$Qc0REp-S52ib_ zC!aobn#7Si)0F0#-3A%18?)NB>KoAcp)I?{2w2&!i7As`+j%5+- z`zK6PEC=|&+Euy@+R4duhS-8tIs^)Mr3cFjhRkdNU|m`p;T0?$oOHVc_rfZ_$u&=z zdd7^|=btfW+U!|PlQ3yx_BngN+j@R@wj5yGAZv2kV=$uh7){e>O`AC5+_NW~bH*f9 zD5q2?hwYa(pwF|DKwh~bI+DBO7_kWvH4^6|#yme#SM)ZZ^FyRhmuxJNhdTd3YFxmI zd!G$B#wV#^D=lBc)Kq-o^9LKy^#R564b_?_EiN7zL0`98`t_W78`~S`>#Bf(99FQ6 z;<)!Bqe{_n_j`&{?bkg;xB8u@IDP)Tr|1<2JVm>^CBKbg*qEZ_{@{@`#~(dKJ-^{8 zDv)7prZ=M3anrtyCGisr8_}D`%YAIlBD2Fv*d%594@=!F)VD0f1}!r8d5Vp|{g&Dy z$ZuPUO#T4cWCDI&jXscnM%9w>GnsEmpCJaKyTc={QcD(Mu- z-T!bqBqp0gb{}^Hcy|VPcLjL&1bEv6yn6$@9Rc2b0p9%q-h%<&&H(Rw0p6|vZ+C!~ zFXGXkslUkVvNpI~Z18x8+4=ONkXY=~j|F&- z2Y62ecuxj+PX&0-26%hGD_(|pu82oJVxDmuuPyhZQf~CwqV-1$to4|L^|WD+6@;-w zxT)8MJub*PPbK}~2?;yKhCNXrh2@PfhSt=d6eM=nBri`1)z?xiG0x0+iniNlsXc=H zm8Dqb3(Pm*WG_PUZE)FbMT<7w%_FILj8l$-zA7*V_y(RTTZ9)(Rg`AYr=-xarcFin zTI>lPG|zAwv-26q#O2)cJIq}e34B88+KrOhZg_sBxqy|=T$h@K6JcxRdv~f9xoS*j zP>$W1v|wvHX|D`^U!VFyY6%i;O@Ar%3-Ee$GXB5d(BCmQVs@X#HU2 zyq~N)|TADC6`^+vZ`fy zdv0;d@&zrq_Qfr^meng;7PPl4%n{#$0p=D;8j5a(Vmw_9ZKp zQ~u@iubiK|Y)Na&m{TP$6()yzU4k4pVew%Nwn9L5?~k%N$50qk; z4Bn)lR{V2gc`g1dL;krO{c@#gZ8SB#OOAzZ2hjQ)Y|`vH?w5bq6ejXYDfsJxF^l*n`1q`L6QOg83;@*emDu1rfQD7KdsD5oi{HQyNYblJ~4 zP!Oo4Dy`N;uo;ZMj$fwCZ3k0k%pX$l5J=_m1bsP$T!~n>DiagYMd+l zk-{G(-`5MLL;QzQjTwsN9XN67I)pr&WeM3jtQGV+`KFoD_{-oAkJK4dY4aY6!#_TM z=6Mdy=%DTH}Oru7kBT@MVtrtJ6held9j+ym$;Zv9_Y~RGPI&rL-#XOG6ig_$` zF^~OJF^?@xF^}W3VjdM-%;Q+Cn8y~Vn8$HjF^@JV=5Y*H%%iS~c^uCb^Qgh%J4ZPF zDdw>sE#`5&Q_N%gRm@|1R?Oolr4v`Qg$0fkc8b<|7fmm+%|63-kBKqBNgY0I? zaMWf1g}s}{*I|Ag;n&~z^`0*|VnWiT)pNe|*5-3iat_u}@(fGPA+Res_u9b(cG#zX z^1-|B9wDXA_|o(G3ZM;yqxAU32j97y^1bA6Vg`e*>1Jr@b)Vlf|Dim~%H1fz33`Nl zU&8N|kIQd0X+P#j%lgyF``$)bvvFBzI*1J>D;br{Y7r#5!jluW4SI@(D=Y1EFGqdNzeZ(uFa>hZC z`F(T|oVk!EEy9Jp2fTwKU~KHnRf=IRhsx8g*;=qi&_su@#Cx4{+rlFo_Z zHe5lSZXU&xAsgzr(uFl4(y0WtGo@q{*x$VuN=QCBL>r$oF@tBDS74NWqE*1Hm zuSUttGrP8F$={aes%3!~EGPd%F)lZVRv-pT;mO>vLDN+EeY63c4{`ut+558!YV6B3&*a0wOCf|HY{1_EIE{vN@5=6Ndy4 zU>n}TmMSAnJ*SCGf}T8q(QTpgmtU0URK1){GSBei3r#W~Pr{es7n|ghP`3sG_J5U3 zjZLPrk;y=;O(q(DIg-K30+Zoh0=|$8ANj=>l0ihD3YvCuzGrbj_(AQs8Y zzvIu*x4QNqnVv8!lHq0tzK~20CIhMba>?`sjOISN9P}=1dM9$uW~FCA$&iF7aQ%Vm z`E_VWdufsonaB1AlI+POxpj^&CV4XK)EBV7pCq=-6Qy91y$VW+BqYggHpx0X8-!9q zWFB8g5`721kR&4dBsn-d+5^+bPEYhQY?SC}>VY~efM7`o5i!W%)L0U#V?uRI2+{Zj zb=FBjr%2g2;{1CF9U}?R*O-vjoe30NkWg<^$r2sIgpOfCh{i7@bc|1^r!3Yb6G}<) zy$zdO9TpXr2!ee=^(avuJv$QW&4dt-Uq}eUV}4O}9~AX)Ya4uzm$${R_ed6od^d2pi)I4W7oM+B+P#urfoC*xNg zBtMesYd8YM3T7FbKLdktWs~D}S?v;DB;O1Rt#PD}h|I|;E4(7bN~9mo$-2LhGJD?rKe-z9|FYGH3eLTBHGwmi zyL-)m_b83og1Ng}Ow%%V_lRkp^*y&Hra1yi;yDI7w|g9pc{^4kG(EQ(K^wqQ_;aff zIA>enyCjNvT#YE^aW$ft$JK~p9#IJi1mfk9jZVapj?yR~_JS<)IkI zdRENin4p-)4!ojBSL|(*JPtgmbn3jbG5*GFPL`9Zej;LfF%)#EaPdQK3&+~jd;SGW zox9N_r1B*?X;pzHazYq|zfGhse&>?)46}D%)uwOU9YvhCaiL2PMCCb-EalLO>|I%| zP~+GImZTHup)oqF>9GM~-14Y6z0Srg1Pnm)#Ps43eHC6^nLa1ulTgO3v6a==WxA`FHA_(f6xr#}p?KT3eh0nhI^ z0re1oDT))oWee8K88U#N!Z?3%;A|w%Boa*au52F!;}>+&&7AOO>=t0Gk#A0Q1BWrw zJ|?@IDqM$XV`^}wC^%afob|!`8oA0VnPj>eoBn*={ZBL=d4Dsq1@|qC9T$s+GQd^Q1NImi9%cW?Z1;ST`AE}X(p{qq=}`n-9QN)hrH)!HJI=5gf` zU@Uic!*ZX4Z>ktcg3?b8I>e-sN+O$$DhGx%ZH+nMPhE$_w7dX$iufhMQdg@Wft)#DtCAc%=d_XfP zMPy7C5tDKs%w`HF%$;Bjj*Iw?6j3r6$1W@))(;9}$3^UoBG&2>jK&^9(x+V)>B5Bg zw7b8EB_OQa!}{jAupkvlh6H)K{;P%x}C=XW-8V_H9*jog?6-uQ#&qiLa<;tq zq}k1I>5U({jhmX47EL#3rD7hZX2m>C!-{!yi(($9T*W+2uZnpb#1->6>M7=Nm{81P z8H;&rTT+R#vAy9(@BS>sau359bDez*2>V6vWqFCxxH5gZXdIVRxa~$17R7Kdm(`Bl z6q^<9FIny4H>DXg446}uG_rrA6qJr);P&lhHqdyE8*fEpN0 zHAZ#t>3|ZA21VwXqpSl*>^Bf7QD@mS;5-;vA&qRFc40}F%UjA*5CX+}2B4Q_locQ>aw5gLG5 zfoiS6Y7I{MckEh^21oP9q*-`4FRq=lKEQiz(@W5S4JO}bkG%v(Pu09|!>|lQxj|G7 zE-^1O?N{_jf6BQAN2KJjLBXc6hwBP5S645YJ5(D(E=RjALe zm}TZRJfMrqbg*MS8vl(j!|;FyR}A?8I8 zAdj_>|NhVCzmEp6a)UFU^nk(-{bJuIZvE3=XD+V2=dty^cTj28ZxRAER)# z=fL>hW~TERg!Aka)8ME0H{;G<*wVIm*%eC{2g3heJo0l1{5brM@aH}eesru~yWo@O z{UF8PrtbQEW9{#bLFunIUi(Cf<^QjI{*nIEFFgIi)-nBRH*JRgNB{Mk)IW7a9YQ7O zTa4k}-7Nf3e;44d7Ju{bN4-%8+;>`uKkAeAqK+QLpVO!2yISId{dfPxTZBaKlt1Ol zmQ^3aLy5~5&B0CYZIb5cOP0^avGVClE>#|VWHt_tw|NddV%d_m1*RG@n7kf?Gv@pi ztCqGcZfSue=EhkGKmUnO3N2CwPQ)6SE2miLqWRD1!|-+Xk_D?)w5_Ev{G`kzvjXFlm00(^ q)Lj0*T}T`P5Z${L@t+YuUtRUj0RKshOPl}xlTrR}h5dgy{r?5sED|sP