diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
commit | cca66b9ec4e494c1d919bff0f71a820d8afab1fa (patch) | |
tree | 146f39ded1c938019e1ed42d30923c2ac9e86789 /testfiles/cli_tests | |
parent | Initial commit. (diff) | |
download | inkscape-cca66b9ec4e494c1d919bff0f71a820d8afab1fa.tar.xz inkscape-cca66b9ec4e494c1d919bff0f71a820d8afab1fa.zip |
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testfiles/cli_tests')
216 files changed, 11608 insertions, 0 deletions
diff --git a/testfiles/cli_tests/CMakeLists.txt b/testfiles/cli_tests/CMakeLists.txt new file mode 100644 index 0000000..e40a982 --- /dev/null +++ b/testfiles/cli_tests/CMakeLists.txt @@ -0,0 +1,844 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + + +# Helper function to add a CLI test +# +# Run an Inkscape command line and check for pass/fail condition (by default only exit status is checked) +# +# Command line options: +# INPUT_FILENAME - name of input file (optional) +# OUTPUT_FILENAME - name of output file (optional) +# PARAMETERS - additional command line parameters to pass to Inkscape +# +# Pass/fail criteria: +# PASS_FOR_OUTPUT - pass if output matches the given value, otherwise fail +# see https://cmake.org/cmake/help/latest/prop_test/PASS_REGULAR_EXPRESSION.html for details +# FAIL_FOR_OUTPUT - fail if output matches the given value +# see https://cmake.org/cmake/help/latest/prop_test/FAIL_REGULAR_EXPRESSION.html for details +# REFERENCE_FILENAME - compare OUTPUT_FILENAME with this pre-rendered reference file +# both files are converted to PNG and compared with ImageMagick's 'compare' +# EXPECTED_FILES - verify the command produced the expected files (i.e. they exist on disk) +# TEST_SCRIPT - additional script to run after performing all checks and before cleaning up +# +# Other options: +# ENVIRONMENT - Additional environment variables to set while running the test +function(add_cli_test name) + # parse arguments + set(oneValueArgs INPUT_FILENAME OUTPUT_FILENAME PASS_FOR_OUTPUT FAIL_FOR_OUTPUT REFERENCE_FILENAME) + set(multiValueArgs PARAMETERS EXPECTED_FILES TEST_SCRIPT ENVIRONMENT) + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + set(testname cli_${name}) + + #disable dithering + set(ARG_PARAMETERS ${ARG_PARAMETERS} "--export-png-use-dithering=false") + + if(DEFINED ARG_OUTPUT_FILENAME) + # for actions: if an export-do is present do not append export-filename option to prevent + if(NOT ARG_PARAMETERS MATCHES "export-do") + set(ARG_PARAMETERS ${ARG_PARAMETERS} "--export-filename=${ARG_OUTPUT_FILENAME}") + endif() + endif() + if(DEFINED ARG_INPUT_FILENAME) + set(ARG_INPUT_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/testcases/${ARG_INPUT_FILENAME}") + set(ARG_PARAMETERS ${ARG_PARAMETERS} ${ARG_INPUT_FILENAME}) + endif() + + set(CMAKE_CTEST_ENV "${INKSCAPE_TEST_PROFILE_DIR_ENV}/${testname};${CMAKE_CTEST_ENV}") + if(DEFINED ARG_ENVIRONMENT) + if(ARG_ENVIRONMENT STREQUAL "unset") + unset(CMAKE_CTEST_ENV) + else() + # variables might already be set, however the last value wins + list(APPEND CMAKE_CTEST_ENV ${ARG_ENVIRONMENT}) + endif() + endif() + + # add test for main command line + add_test(NAME ${testname} COMMAND inkscape ${ARG_PARAMETERS}) + set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${CMAKE_CTEST_ENV}") + if(DEFINED ARG_PASS_FOR_OUTPUT) + set_tests_properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION ${ARG_PASS_FOR_OUTPUT}) + endif() + if(DEFINED ARG_FAIL_FOR_OUTPUT) + set_tests_properties(${testname} PROPERTIES FAIL_REGULAR_EXPRESSION ${ARG_FAIL_FOR_OUTPUT}) + endif() + + # add test to check output files + if(DEFINED ARG_REFERENCE_FILENAME OR DEFINED ARG_EXPECTED_FILES OR DEFINED ARG_TEST_SCRIPT) + if(DEFINED ARG_REFERENCE_FILENAME) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/testcases/${ARG_REFERENCE_FILENAME}" ARG_REFERENCE_FILENAME) + endif() + if(DEFINED ARG_EXPECTED_FILES) + string(REPLACE ";" " " ARG_EXPECTED_FILES "${ARG_EXPECTED_FILES}") + endif() + if(DEFINED ARG_TEST_SCRIPT) + set(ARG_TEST_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/${ARG_TEST_SCRIPT}") + endif() + + add_test(NAME ${testname}_check_output + COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/check_output.sh + "${ARG_OUTPUT_FILENAME}" "${ARG_REFERENCE_FILENAME}" "${ARG_EXPECTED_FILES}" "${ARG_TEST_SCRIPT}") + set_tests_properties(${testname}_check_output PROPERTIES + ENVIRONMENT "${CMAKE_CTEST_ENV}" DEPENDS ${testname} SKIP_RETURN_CODE 42) + endif() +endfunction(add_cli_test) + + + +##### Tests follow below ##### + + + +############################################################################################# +### Command line options (basic tests for all program options as listed in --help output) ### +############################################################################################# + +# --help + +# --version (check if we can run inkscape and the revision is known) +add_cli_test(version PARAMETERS --version) +add_cli_test(version_known PARAMETERS --version FAIL_FOR_OUTPUT unknown) + +# --system-data-directory / --user-data-directory (unset environment variables to override our override) +# TODO: Can we make these tests more specific without making too many assumptions? +add_cli_test(system-data-directory PARAMETERS --system-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") +add_cli_test(user-data-directory PARAMETERS --user-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# --pipe + +# --pdf-page=PAGE + +# --pdf-poppler +add_cli_test(pdf-poppler-mesh-import + PARAMETERS --pdf-poppler + INPUT_FILENAME pdf-mesh.pdf + OUTPUT_FILENAME pdf-mesh_poppler.svg + TEST_SCRIPT match_regex.sh pdf-mesh_poppler.svg "<image") +add_cli_test(pdf-internal-mesh-import + INPUT_FILENAME pdf-mesh.pdf + OUTPUT_FILENAME pdf-mesh_internal.svg + TEST_SCRIPT match_regex_fail.sh pdf-mesh_internal.svg "<image") + +# --convert-dpi-method=METHOD + +# --no-convert-text-baseline-spacing + +# --export-filename=FILENAME +## check for https://gitlab.com/inkscape/inkscape/-/issues/1712 +install(DIRECTORY DESTINATION ${test.dir}) +add_cli_test(export-type-dot-separated PARAMETERS --export-type=svg,png + INPUT_FILENAME empty.svg OUTPUT_FILENAME test.dir/empty + EXPECTED_FILES test.dir/empty.svg test.dir/empty.png) + +# --export-overwrite + +# --export-type=TYPE[,TYPE]* + +## test whether we can export all default types in principle (and in one command) +add_cli_test(export-type PARAMETERS --export-type=svg,png,ps,eps,pdf,emf,wmf,xaml + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty + EXPECTED_FILES empty.svg empty.png empty.ps empty.eps empty.pdf empty.emf empty.wmf empty.xaml) +## test whether this also works if the export types are not lowercase +add_cli_test(export-type-caseinsensitive PARAMETERS --export-type=sVg,Png,PS,eps,Pdf,emf,wmf,xaml + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty + EXPECTED_FILES empty.svg empty.png empty.ps empty.eps empty.pdf empty.emf empty.wmf empty.xaml) + +## test whether we produce sane output for the default types +add_cli_test(export-type_svg PARAMETERS --export-type=svg INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg) +add_cli_test(export-type_png PARAMETERS --export-type=png INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.png REFERENCE_FILENAME shapes_expected.png) +add_cli_test(export-type_ps PARAMETERS --export-type=ps INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.ps REFERENCE_FILENAME shapes_expected.ps) +add_cli_test(export-type_eps PARAMETERS --export-type=eps INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.eps REFERENCE_FILENAME shapes_expected.eps) +add_cli_test(export-type_pdf PARAMETERS --export-type=pdf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf REFERENCE_FILENAME shapes_expected.pdf) +add_cli_test(export-type_emf PARAMETERS --export-type=emf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.emf REFERENCE_FILENAME shapes_expected.emf) +add_cli_test(export-type_wmf PARAMETERS --export-type=wmf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.wmf REFERENCE_FILENAME shapes_expected.wmf) +# XAML is not supported by ImageMagick's convert, so simply compare binary +add_cli_test(export-type_xaml PARAMETERS --export-type=xaml INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.xaml + TEST_SCRIPT compare.sh shapes.xaml "${CMAKE_CURRENT_SOURCE_DIR}/testcases/shapes_expected.xaml") + +# --export-area-page +add_cli_test(export-area-page_png PARAMETERS --export-area-page --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.png REFERENCE_FILENAME export-area-page_expected.png) +add_cli_test(export-area-page_svg PARAMETERS --export-area-page --export-type=svg INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.svg REFERENCE_FILENAME export-area-page_expected.svg) +add_cli_test(export-area-page_pdf PARAMETERS --export-area-page --export-type=pdf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.pdf REFERENCE_FILENAME export-area-page_expected.pdf) +add_cli_test(export-area-page_ps PARAMETERS --export-area-page --export-type=ps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.ps REFERENCE_FILENAME export-area-page_expected.ps) +# EPS: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-area-page_eps PARAMETERS --export-area-page --export-type=eps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.eps REFERENCE_FILENAME export-area-page_expected.eps) +add_cli_test(export-area-page_emf PARAMETERS --export-area-page --export-type=emf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.emf REFERENCE_FILENAME export-area-page_expected.emf) +add_cli_test(export-area-page_wmf PARAMETERS --export-area-page --export-type=wmf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.wmf REFERENCE_FILENAME export-area-page_expected.wmf) + +# --export-area-page + --export-id (+ --export-id-only) +# TODO: PDF/PS/EPS always behave as if --export-id-only was given, see https://gitlab.com/inkscape/inkscape/-/issues/1173 +add_cli_test(export-area-page_export-id_png PARAMETERS --export-area-page --export-id=MyStar --export-id-only INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.png REFERENCE_FILENAME export-area-page_export-id.png) +add_cli_test(export-area-page_export-id_svg PARAMETERS --export-area-page --export-id=MyStar --export-id-only INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.svg REFERENCE_FILENAME export-area-page_export-id.svg) +add_cli_test(export-area-page_export-id_pdf PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.pdf REFERENCE_FILENAME export-area-page_export-id.pdf) +add_cli_test(export-area-page_export-id_ps PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.ps REFERENCE_FILENAME export-area-page_export-id.ps) +# EPS: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1074 +#add_cli_test(export-area-page_export-id_eps PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.eps REFERENCE_FILENAME export-area-page_export-id.eps) +# EMF, WMF: Nont supported. + +# --export-area-drawing +add_cli_test(export-area-drawing_png PARAMETERS --export-area-drawing --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.png REFERENCE_FILENAME export-area-drawing_expected.png) +add_cli_test(export-area-drawing_svg PARAMETERS --export-area-drawing --export-type=svg INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.svg REFERENCE_FILENAME export-area-drawing_expected.svg) +add_cli_test(export-area-drawing_pdf PARAMETERS --export-area-drawing --export-type=pdf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.pdf REFERENCE_FILENAME export-area-drawing_expected.pdf) +add_cli_test(export-area-drawing_ps PARAMETERS --export-area-drawing --export-type=ps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.ps REFERENCE_FILENAME export-area-drawing_expected.ps) +add_cli_test(export-area-drawing_eps PARAMETERS --export-area-drawing --export-type=eps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.eps REFERENCE_FILENAME export-area-drawing_expected.eps) +# EMF, WMF: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1056 +# add_cli_test(export-area-drawing_emf PARAMETERS --export-area-drawing --export-type=emf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.emf REFERENCE_FILENAME export-area-drawing_expected.emf) +# add_cli_test(export-area-drawing_wmf PARAMETERS --export-area-drawing --export-type=wmf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.wmf REFERENCE_FILENAME export-area-drawing_expected.wmf) + +# --export-area=x0:y0:x1:y1 +add_cli_test(export-area_png PARAMETERS --export-area=150:150:350:300 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area.png REFERENCE_FILENAME export-area_expected.png) +# SVG, PDF, PS, EPS, EMF, WMF: Not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/678 + +# --export-area-snap +add_cli_test(export-area-snap_export-id PARAMETERS --export-id=rect_misaligned --export-area-snap --export-type=png INPUT_FILENAME pyramids.svg OUTPUT_FILENAME export-area-snap-id.png REFERENCE_FILENAME export-area-snap_expected.png) +add_cli_test(export-area-snap_export-area-drawing PARAMETERS --export-area-drawing --export-area-snap --export-type=png INPUT_FILENAME pyramids.svg OUTPUT_FILENAME export-area-snap-drawing.png REFERENCE_FILENAME export-area-snap_expected.png) +# SVG, PDF, PS, EPS, EMF, WMF: doesn't make sense + +# --export-dpi=DPI +add_cli_test(export-dpi_png PARAMETERS --export-dpi=12 --export-type=png INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.png REFERENCE_FILENAME export-dpi_expected.png) +# SVG: doesn't make sense +add_cli_test(export-dpi_pdf PARAMETERS --export-dpi=12 --export-type=pdf INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.pdf REFERENCE_FILENAME export-dpi_expected.pdf) +add_cli_test(export-dpi_ps PARAMETERS --export-dpi=12 --export-type=ps INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.ps REFERENCE_FILENAME export-dpi_expected.ps) +add_cli_test(export-dpi_eps PARAMETERS --export-dpi=12 --export-type=eps INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.eps REFERENCE_FILENAME export-dpi_expected.eps) +# EMF, WMF: doesn't make sense + +# --export-width=WIDTH / --export-height=HEIGHT +add_cli_test(export-width PARAMETERS --export-width=380 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-width.png REFERENCE_FILENAME export-width_expected.png) +add_cli_test(export-width_export-dpi PARAMETERS --export-width=380 --export-dpi=300 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-width2.png REFERENCE_FILENAME export-width_expected.png) +add_cli_test(export-width_export-use-hints PARAMETERS --export-width=380 --export-use-hints --export-id=rect1 --export-type=png INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh export_hints_rectangle.png "PNG 385x285" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +add_cli_test(export-height PARAMETERS --export-height=40 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-height.png REFERENCE_FILENAME export-height_expected.png) +add_cli_test(export-height_export-dpi PARAMETERS --export-height=40 --export-dpi=300 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-height2.png REFERENCE_FILENAME export-height_expected.png) +add_cli_test(export-height_export-use-hints PARAMETERS --export-height=40 --export-use-hints --export-id=rect1 --export-type=png INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png "PNG 53x40" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +# SVG, PDF, PS, EPS, EMF, WMF: doesn't make sense + +# --export-margin=MARGIN +# There are many problems: +# - PNG, EPS, EMF, WMF: --export-margin is't supported. This affects all PNG, EPS, EMF, WMF tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - PDF: Defaults to margin in millimeters. This affects all mm based PDF tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - PS: Defaults to margin in pixels. This affects all px based OS tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - --export-id for PDF/PS/EPS is buggy: works as --export-id + --export-id-only should work. See: https://gitlab.com/inkscape/inkscape/-/issues/1173 +# - --export-margin + --export-area=x0:y0:x1:y1 is PNG only feature. +# - --export-margin + --export-use-hints is PNG only feature. +# There is no test for --export-margin + --export-area-page combination because it's equivalent to --export-margin + +## simple --export-margin (millimeter based) +# add_cli_test(export-margin_mm_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.png REFERENCE_FILENAME export-margin_mm_expected.png ) +add_cli_test(export-margin_mm_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.svg REFERENCE_FILENAME export-margin_mm_expected.svg ) +add_cli_test(export-margin_mm_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.pdf REFERENCE_FILENAME export-margin_mm_expected.pdf ) +# add_cli_test(export-margin_mm_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.ps REFERENCE_FILENAME export-margin_mm_expected.ps ) +# add_cli_test(export-margin_mm_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.eps REFERENCE_FILENAME export-margin_mm_expected.eps ) +# add_cli_test(export-margin_mm_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.emf REFERENCE_FILENAME export-margin_mm_expected.emf ) +# add_cli_test(export-margin_mm_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.wmf REFERENCE_FILENAME export-margin_mm_expected.wmf ) + +## simple --export-margin (pixel based) +# add_cli_test(export-margin_px_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.png REFERENCE_FILENAME export-margin_px_expected.png ) +add_cli_test(export-margin_px_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.svg REFERENCE_FILENAME export-margin_px_expected.svg ) +# add_cli_test(export-margin_px_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.pdf REFERENCE_FILENAME export-margin_px_expected.pdf ) +add_cli_test(export-margin_px_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.ps REFERENCE_FILENAME export-margin_px_expected.ps ) +# add_cli_test(export-margin_px_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.eps REFERENCE_FILENAME export-margin_px_expected.eps ) +# add_cli_test(export-margin_px_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.emf REFERENCE_FILENAME export-margin_px_expected.emf ) +# add_cli_test(export-margin_px_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.wmf REFERENCE_FILENAME export-margin_px_expected.wmf ) + +## --export-margin + --export-id (pixel based) +# add_cli_test(export-margin_export-id_png PARAMETERS --export-margin=50 --export-id=square-red --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.png REFERENCE_FILENAME export-margin_export-id_expected.png ) +add_cli_test(export-margin_export-id_svg PARAMETERS --export-margin=50 --export-id=square-red --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.svg REFERENCE_FILENAME export-margin_export-id_expected.svg ) +# add_cli_test(export-margin_export-id_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.pdf REFERENCE_FILENAME export-margin_export-id_expected.pdf ) +# add_cli_test(export-margin_export-id_ps PARAMETERS --export-margin=50 --export-id=square-red --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.ps REFERENCE_FILENAME export-margin_export-id_expected.ps ) +# add_cli_test(export-margin_export-id_eps PARAMETERS --export-margin=50 --export-id=square-red --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.eps REFERENCE_FILENAME export-margin_export-id_expected.eps ) +# add_cli_test(export-margin_export-id_emf PARAMETERS --export-margin=50 --export-id=square-red --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.emf REFERENCE_FILENAME export-margin_export-id_expected.emf ) +# add_cli_test(export-margin_export-id_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.wmf REFERENCE_FILENAME export-margin_export-id_expected.wmf ) + +## --export-margin + --export-id + export-id-only (pixel based) +# add_cli_test(export-margin_export-id_export-id-only_png PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.png REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.png ) +add_cli_test(export-margin_export-id_export-id-only_svg PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.svg REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.svg ) +# add_cli_test(export-margin_export-id_export-id-only_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.pdf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.pdf ) +add_cli_test(export-margin_export-id_export-id-only_ps PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.ps REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.ps ) +# add_cli_test(export-margin_export-id_export-id-only_eps PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.eps REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.eps ) +# add_cli_test(export-margin_export-id_export-id-only_emf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.emf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.emf ) +# add_cli_test(export-margin_export-id_export-id-only_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.wmf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.wmf ) + +## --export-margin + --export-area-drawing (pixel based) +# add_cli_test(export-margin_export-area-drawing_png PARAMETERS --export-margin=50 --export-area-drawing --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.png REFERENCE_FILENAME export-margin_drawing_expected.png ) +add_cli_test(export-margin_export-area-drawing_svg PARAMETERS --export-margin=50 --export-area-drawing --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.svg REFERENCE_FILENAME export-margin_drawing_expected.svg ) +# add_cli_test(export-margin_export-area-drawing_pdf PARAMETERS --export-margin=50 --export-area-drawing --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.pdf REFERENCE_FILENAME export-margin_drawing_expected.pdf ) +add_cli_test(export-margin_export-area-drawing_ps PARAMETERS --export-margin=50 --export-area-drawing --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.ps REFERENCE_FILENAME export-margin_drawing_expected.ps ) +# add_cli_test(export-margin_export-area-drawing_eps PARAMETERS --export-margin=50 --export-area-drawing --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.eps REFERENCE_FILENAME export-margin_drawing_expected.eps ) +# add_cli_test(export-margin_export-area-drawing_emf PARAMETERS --export-margin=50 --export-area-drawing --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.emf REFERENCE_FILENAME export-margin_drawing_expected.emf ) +# add_cli_test(export-margin_export-area-drawing_wmf PARAMETERS --export-margin=50 --export-area-drawing --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.wmf REFERENCE_FILENAME export-margin_drawing_expected.wmf ) + +## --export-margin + --export-area=x0:y0:x1:y1 (pixel based) +# add_cli_test(export-margin_export-area_png PARAMETERS --export-margin=50 --export-area=50:50:100:100 --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-area.png REFERENCE_FILENAME export-margin_export-area_expected.png ) + +## --export-margin + --export-use-hints (pixel based) +# add_cli_test(export-margin_export-use-hints_export-id PARAMETERS --export-margin=50 --export-use-hints --export-id=rect1 INPUT_FILENAME export_hints.svg PASS_FOR_OUTPUT "Area 10:10:90:70 exported to 203 x 177 pixels \\(123 dpi\\)" EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") + +## --export-margin (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.png REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.png ) +add_cli_test(export-margin_viewbox_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.svg REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.svg ) +# add_cli_test(export-margin_viewbox_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.pdf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.pdf ) +# add_cli_test(export-margin_viewbox_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.ps REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.ps ) +# add_cli_test(export-margin_viewbox_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.eps REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.eps ) +# add_cli_test(export-margin_viewbox_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.emf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.emf ) +# add_cli_test(export-margin_viewbox_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.wmf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.wmf ) + +## --export-margin + --export-area-drawing (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_drawing_png PARAMETERS --export-margin=50 --export-area-drawing --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.png REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.png ) +add_cli_test(export-margin_viewbox_drawing_svg PARAMETERS --export-margin=50 --export-area-drawing --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.svg REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.svg ) +# add_cli_test(export-margin_viewbox_drawing_pdf PARAMETERS --export-margin=50 --export-area-drawing --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.pdf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.pdf ) +# add_cli_test(export-margin_viewbox_drawing_ps PARAMETERS --export-margin=50 --export-area-drawing --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.ps REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.ps ) +# add_cli_test(export-margin_viewbox_drawing_eps PARAMETERS --export-margin=50 --export-area-drawing --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.eps REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.eps ) +# add_cli_test(export-margin_viewbox_drawing_emf PARAMETERS --export-margin=50 --export-area-drawing --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.emf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.emf ) +# add_cli_test(export-margin_viewbox_drawing_wmf PARAMETERS --export-margin=50 --export-area-drawing --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.wmf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.wmf ) + +## --export-margin + --export-id (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_id_png PARAMETERS --export-margin=50 --export-id=square-red --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.png REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.png ) +add_cli_test(export-margin_viewbox_id_svg PARAMETERS --export-margin=50 --export-id=square-red --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.svg REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.svg ) +# add_cli_test(export-margin_viewbox_id_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.pdf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.pdf ) +# add_cli_test(export-margin_viewbox_id_ps PARAMETERS --export-margin=50 --export-id=square-red --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.ps REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.ps ) +# add_cli_test(export-margin_viewbox_id_eps PARAMETERS --export-margin=50 --export-id=square-red --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.eps REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.eps ) +# add_cli_test(export-margin_viewbox_id_emf PARAMETERS --export-margin=50 --export-id=square-red --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.emf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.emf ) +# add_cli_test(export-margin_viewbox_id_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.wmf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.wmf ) + +# --export-id=OBJECT-ID[;OBJECT-ID]* +add_cli_test(export-id_png PARAMETERS --export-id=red --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.png REFERENCE_FILENAME export-id_expected.png ) +add_cli_test(export-id_svg PARAMETERS --export-id=red --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.svg REFERENCE_FILENAME export-id_expected.svg ) +# PDF, PS, EPS doesn't respect --export-id-only, bug report: https://gitlab.com/inkscape/inkscape/-/issues/1173 +# add_cli_test(export-id_pdf PARAMETERS --export-id=red --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.pdf REFERENCE_FILENAME export-id_expected.pdf ) +# add_cli_test(export-id_ps PARAMETERS --export-id=red --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.ps REFERENCE_FILENAME export-id_expected.ps ) +# add_cli_test(export-id_eps PARAMETERS --export-id=red --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.eps REFERENCE_FILENAME export-id_expected.eps ) +# EMF, WMF There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_emf PARAMETERS --export-id=red --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.emf REFERENCE_FILENAME export-id_expected.emf ) +# add_cli_test(export-id_wmf PARAMETERS --export-id=red --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.wmf REFERENCE_FILENAME export-id_expected.wmf ) + +## --export-id + --export-area-page = --export-area-page +## --export-id + --export-area-drawing = --export-area-drawing +## --export-id + --export-area-snap → export-area-snap_export-id +## --export-id + --export-margin → export-margin_export-id_png|svg|pdf|ps|eps|emf|wmf +## --export-id + --export-use-hints → export-use-hints_export-id +## --export-id + --export-use-hints + --export-width | --export-height → export-width_export-use-hints + +# --export-id-only +## --export-id + --export-id-only +add_cli_test(export-id_export-id-only_png PARAMETERS --export-id=blue --export-id-only --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.png REFERENCE_FILENAME export-id_export-id-only_expected.png ) +add_cli_test(export-id_export-id-only_svg PARAMETERS --export-id=blue --export-id-only --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.svg REFERENCE_FILENAME export-id_export-id-only_expected.svg ) +add_cli_test(export-id_export-id-only_pdf PARAMETERS --export-id=blue --export-id-only --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.pdf REFERENCE_FILENAME export-id_export-id-only_expected.pdf ) +add_cli_test(export-id_export-id-only_ps PARAMETERS --export-id=blue --export-id-only --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.ps REFERENCE_FILENAME export-id_export-id-only_expected.ps ) +add_cli_test(export-id_export-id-only_eps PARAMETERS --export-id=blue --export-id-only --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.eps REFERENCE_FILENAME export-id_export-id-only_expected.eps ) +# EMF, WMF There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_export-id-only_emf PARAMETERS --export-id=blue --export-id-only --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.emf REFERENCE_FILENAME export-id_export-id-only_expected.emf ) +# add_cli_test(export-id_export-id-only_wmf PARAMETERS --export-id=blue --export-id-only --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.wmf REFERENCE_FILENAME export-id_export-id-only_expected.wmf ) + +## --export-id + --export-id-only + --export-area-page +add_cli_test(export-id_export-id-only_export-area-page_png PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.png REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.png ) +add_cli_test(export-id_export-id-only_export-area-page_svg PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.svg REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.svg ) +add_cli_test(export-id_export-id-only_export-area-page_pdf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.pdf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.pdf ) +add_cli_test(export-id_export-id-only_export-area-page_ps PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.ps REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.ps ) +# EPS: Depents on https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-id_export-id-only_export-area-page_eps PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.eps REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.eps ) +# EMF, WMF: There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_export-id-only_export-area-page_emf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.emf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.emf ) +# add_cli_test(export-id_export-id-only_export-area-page_wmf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.wmf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.wmf ) + +## --export-id + --export-id-only + --export-area-drawing +# PNG, PDF, PS, EPS, EMF, WMF: Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1215 +# add_cli_test(export-id_export-id-only_export-area-drawing_png PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.png REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.png ) +add_cli_test(export-id_export-id-only_export-area-drawing_svg PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.svg REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.svg ) +# add_cli_test(export-id_export-id-only_export-area-drawing_pdf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.pdf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.pdf ) +# add_cli_test(export-id_export-id-only_export-area-drawing_ps PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.ps REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.ps ) +# add_cli_test(export-id_export-id-only_export-area-drawing_eps PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.eps REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.eps ) +# add_cli_test(export-id_export-id-only_export-area-drawing_emf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.emf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.emf ) +# add_cli_test(export-id_export-id-only_export-area-drawing_wmf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.wmf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.wmf ) + +## --export-id + --export-id-only + --export-margin → export-margin_export-id_export-id-only_png|svg|pdf|ps|eps|emw|wmf + +# --export-plain-svg +add_cli_test(export-plain-svg PARAMETERS --export-type=svg --export-plain-svg + INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg + TEST_SCRIPT match_regex_fail.sh "shapes.svg" "inkscape:|sodipodi:") + +# --export-ps-level=LEVEL +add_cli_test(export-ps-level_2 PARAMETERS --export-ps-level=2 --export-type=ps INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps REFERENCE_FILENAME export-ps-level-2_expected.ps ) +add_cli_test(export-ps-level_2_content PARAMETERS --export-ps-level=2 --export-type=ps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps + TEST_SCRIPT match_regex.sh "export-ps-level-2.ps" "%%LanguageLevel: 2") +add_cli_test(export-ps-level_3 PARAMETERS --export-ps-level=3 --export-type=ps INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps REFERENCE_FILENAME export-ps-level-3_expected.ps ) +add_cli_test(export-ps-level_3_content PARAMETERS --export-ps-level=3 --export-type=ps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps + TEST_SCRIPT match_regex.sh "export-ps-level-3.ps" "%%LanguageLevel: 3") +add_cli_test(export-eps-level_2_content PARAMETERS --export-ps-level=2 --export-type=eps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps + TEST_SCRIPT match_regex.sh "export-ps-level-2.eps" "%%LanguageLevel: 2") +add_cli_test(export-eps-level_3_content PARAMETERS --export-ps-level=3 --export-type=eps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps + TEST_SCRIPT match_regex.sh "export-ps-level-3.eps" "%%LanguageLevel: 3") + +# --export-pdf-version=VERSION +add_cli_test(export-pdf-version-14 PARAMETERS --export-pdf-version=1.4 --export-type=pdf + INPUT_FILENAME rects.svg OUTPUT_FILENAME export-pdf-version-14.pdf + TEST_SCRIPT match_regex.sh "export-pdf-version-14.pdf" "^%PDF-1.4$") +add_cli_test(export-pdf-version-15 PARAMETERS --export-pdf-version=1.5 --export-type=pdf + INPUT_FILENAME rects.svg OUTPUT_FILENAME export-pdf-version-15.pdf + TEST_SCRIPT match_regex.sh "export-pdf-version-15.pdf" "^%PDF-1.5$") + +# --export-text-to-path +# PNG: Doesn't make sense. +# EMF/WMF: No way to check. +add_cli_test(preserve-text_pdf PARAMETERS --export-type=pdf + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.pdf + TEST_SCRIPT match_regex.sh "preserve-text.pdf" "/FontDescriptor") +add_cli_test(preserve-text_ps PARAMETERS --export-type=ps + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.ps + TEST_SCRIPT match_regex.sh "preserve-text.ps" "^%%BeginResource: font") +add_cli_test(preserve-text_eps PARAMETERS --export-type=eps + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.eps + TEST_SCRIPT match_regex.sh "preserve-text.eps" "^%%BeginResource: font") +add_cli_test(export-text-to-path_svg PARAMETERS --export-text-to-path --export-type=svg + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.svg + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.svg" "<text") +add_cli_test(export-text-to-path_pdf PARAMETERS --export-text-to-path --export-type=pdf + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.pdf + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.pdf" "/FontDescriptor") +add_cli_test(export-text-to-path_ps PARAMETERS --export-text-to-path --export-type=ps + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.ps + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.ps" "^%%BeginResource: font") +add_cli_test(export-text-to-path_eps PARAMETERS --export-text-to-path --export-type=eps + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.eps + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.eps" "^%%BeginResource: font") + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/1364 +add_cli_test(regression-1364 PARAMETERS --select=large,small --actions=path-intersection + INPUT_FILENAME regression-1364.svg + OUTPUT_FILENAME regression-1364_output.svg + TEST_SCRIPT testcases/regression-1364_script.py) + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/2602 +add_cli_test(regression-2602 PARAMETERS --export-text-to-path + INPUT_FILENAME regression-2602.svg + OUTPUT_FILENAME regression-2602_output.svg + TEST_SCRIPT testcases/regression-2602_script.py) + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/2797 +add_cli_test(regression-2797 INPUT_FILENAME regression-2797.svg + OUTPUT_FILENAME regression-2797_output.svg + TEST_SCRIPT testcases/regression-2797_script.py) + +# --export-latex +# PDF, PS, EPS only function by design. +add_cli_test(export-latex PARAMETERS --export-type=pdf,ps,eps --export-latex + INPUT_FILENAME text.svg OUTPUT_FILENAME export-latex + EXPECTED_FILES export-latex.pdf export-latex.pdf_tex export-latex.ps export-latex.ps_tex export-latex.eps export-latex.eps_tex + TEST_SCRIPT match_regex.sh "export-latex.pdf_tex" "some text") + +# --export-ignore-filters +## testing exporting with filters +add_cli_test(export-with-filters_svg PARAMETERS --export-type=svg INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.svg REFERENCE_FILENAME export-with-filters_expected.svg) +add_cli_test(export-with-filters_png PARAMETERS --export-type=png INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.png REFERENCE_FILENAME export-with-filters_expected.png) +add_cli_test(export-with-filters_ps PARAMETERS --export-type=ps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.ps REFERENCE_FILENAME export-with-filters_expected.ps ) +add_cli_test(export-with-filters_eps PARAMETERS --export-type=eps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.eps REFERENCE_FILENAME export-with-filters_expected.eps) +add_cli_test(export-with-filters_pdf PARAMETERS --export-type=pdf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.pdf REFERENCE_FILENAME export-with-filters_expected.pdf) +# EMF, WMF: No support for exporting filters. Feature request: https://gitlab.com/inkscape/inbox/-/issues/2275 +# add_cli_test(export-with-filters_emf PARAMETERS --export-type=emf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.emf REFERENCE_FILENAME export-with-filters_expected.emf) +# add_cli_test(export-with-filters_wmf PARAMETERS --export-type=wmf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.wmf REFERENCE_FILENAME export-with-filters_expected.wmf) +## --export-ignore-filters +# SVG, PNG: No support for --export-ignore-filters. Feature request: https://gitlab.com/inkscape/inbox/-/issues/2275 +# add_cli_test(export-ignore-filters_svg PARAMETERS --export-ignore-filters --export-type=svg INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.svg REFERENCE_FILENAME export-ignore-filters_expected.svg) +# add_cli_test(export-ignore-filters_png PARAMETERS --export-ignore-filters --export-type=png INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.png REFERENCE_FILENAME export-ignore-filters_expected.png) +add_cli_test(export-ignore-filters_ps PARAMETERS --export-ignore-filters --export-type=ps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.ps REFERENCE_FILENAME export-ignore-filters_expected.ps ) +# EPS: Works, but depends on https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-ignore-filters_eps PARAMETERS --export-ignore-filters --export-type=eps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.eps REFERENCE_FILENAME export-ignore-filters_expected.eps) +add_cli_test(export-ignore-filters_pdf PARAMETERS --export-ignore-filters --export-type=pdf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.pdf REFERENCE_FILENAME export-ignore-filters_expected.pdf) +add_cli_test(export-ignore-filters_emf PARAMETERS --export-ignore-filters --export-type=emf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.emf REFERENCE_FILENAME export-ignore-filters_expected.emf) +add_cli_test(export-ignore-filters_wmf PARAMETERS --export-ignore-filters --export-type=wmf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.wmf REFERENCE_FILENAME export-ignore-filters_expected.wmf) + +# --export-use-hints +add_cli_test(export-use-hints_export-id PARAMETERS --export-use-hints --export-id=rect1 INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png "PNG 103x77" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +add_cli_test(export-use-hints_export-area-drawing PARAMETERS --export-use-hints --export-area-drawing INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_drawing.png "PNG 197x69" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_drawing.png") + +# --export-background=COLOR +## check for default background color and opacity +# SVG, PDF, PS, EPS: Format not supoorted. Feature request: https://gitlab.com/inkscape/inbox/issues/2293 +# EMF, WMF: Format does not support opacity. + add_cli_test(export-default-background_png PARAMETERS --export-type=png INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.png REFERENCE_FILENAME export-default-background_expected.png) + add_cli_test(export-default-background_svg PARAMETERS --export-type=svg INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.svg REFERENCE_FILENAME export-default-background_expected.svg) +# add_cli_test(export-default-background_pdf PARAMETERS --export-type=pdf INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.pdf REFERENCE_FILENAME export-default-background_expected.pdf) +# add_cli_test(export-default-background_ps PARAMETERS --export-type=ps INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.ps REFERENCE_FILENAME export-default-background_expected.ps ) +# add_cli_test(export-default-background_eps PARAMETERS --export-type=eps INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.eps REFERENCE_FILENAME export-default-background_expected.eps) +## test --export-background=COLOR + add_cli_test(export-background_png PARAMETERS --export-background=yellow --export-type=png INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.png REFERENCE_FILENAME export-background_expected.png) + add_cli_test(export-background_svg PARAMETERS --export-background=yellow --export-type=svg INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.svg REFERENCE_FILENAME export-background_expected.svg) +# add_cli_test(export-background_pdf PARAMETERS --export-background=yellow --export-type=pdf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.pdf REFERENCE_FILENAME export-background_expected.pdf) +# add_cli_test(export-background_ps PARAMETERS --export-background=yellow --export-type=ps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.ps REFERENCE_FILENAME export-background_expected.ps ) +# add_cli_test(export-background_eps PARAMETERS --export-background=yellow --export-type=eps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.eps REFERENCE_FILENAME export-background_expected.eps) +# add_cli_test(export-background_emf PARAMETERS --export-background=yellow --export-type=emf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.emf REFERENCE_FILENAME export-background_expected.emf) +# add_cli_test(export-background_wmf PARAMETERS --export-background=yellow --export-type=wmf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.wmf REFERENCE_FILENAME export-background_expected.wmf) + +# --export-background-opacity=VALUE +# SVG, PDF, PS, EPS: Format not supoorted. Feature request: https://gitlab.com/inkscape/inbox/issues/2293 +# EMF, WMF: Format does not support opacity. +add_cli_test(export-background-opacity_png PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=png INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.png REFERENCE_FILENAME export-background-opacity_expected.png) + add_cli_test(export-background-opacity_svg PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=svg INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.svg REFERENCE_FILENAME export-background-opacity_expected.svg) +# add_cli_test(export-background-opacity_pdf PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=pdf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.pdf REFERENCE_FILENAME export-background-opacity_expected.pdf) +# add_cli_test(export-background-opacity_ps PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=ps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.ps REFERENCE_FILENAME export-background-opacity_expected.ps ) +# add_cli_test(export-background-opacity_eps PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=eps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.eps REFERENCE_FILENAME export-background-opacity_expected.eps) + +# --export-png-color-mode=COLOR-MODE +# SVG, PDF, PS, EPS, EMF, WMF: Vector formats - bitmap bit-depth and color-type not relevant there. + add_cli_test(export-png-color-mode-gray-8_png PARAMETERS --export-png-color-mode=Gray_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-gray-8.png REFERENCE_FILENAME export-png-color-mode-gray-8_expected.png) + add_cli_test(export-png-color-mode-rgb-8_png PARAMETERS --export-png-color-mode=RGB_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-rgb-8.png REFERENCE_FILENAME export-png-color-mode-rgb-8_expected.png) + add_cli_test(export-png-color-mode-rgba-8_png PARAMETERS --export-png-color-mode=RGBA_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-rgba-8.png REFERENCE_FILENAME export-png-color-mode-rgba-8_expected.png) + +## test whether we produce correct output for default export extensions +add_cli_test(export-extension_svg PARAMETERS --export-type=svg --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg) +add_cli_test(export-extension_ps PARAMETERS --export-type=ps --export-extension=org.inkscape.print.ps.cairo INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.ps REFERENCE_FILENAME shapes_expected.ps) +add_cli_test(export-extension_eps PARAMETERS --export-type=eps --export-extension=org.inkscape.print.eps.cairo INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.eps REFERENCE_FILENAME shapes_expected.eps) +add_cli_test(export-extension_pdf PARAMETERS --export-type=pdf --export-extension=org.inkscape.output.pdf.cairorenderer INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf REFERENCE_FILENAME shapes_expected.pdf) +add_cli_test(export-extension_emf PARAMETERS --export-type=emf --export-extension=org.inkscape.output.emf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.emf REFERENCE_FILENAME shapes_expected.emf) +add_cli_test(export-extension_wmf PARAMETERS --export-type=wmf --export-extension=org.inkscape.output.wmf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.wmf REFERENCE_FILENAME shapes_expected.wmf) +add_cli_test(export-plain-extension-svg PARAMETERS --export-type=svg --export-extension=org.inkscape.output.svg.plain + INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg + TEST_SCRIPT match_regex_fail.sh "shapes.svg" "inkscape:|sodipodi:") +## guess file type from --export-extension +add_cli_test(export-type-extension_svg_guess_file_type PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes) + +## check error messages for --export-extension +add_cli_test(export-type-extension_png_error PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.png + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The parameter --export-extension is invalid for PNG export") +add_cli_test(export-type-extension_type_error PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The supplied extension ID \\(org\\.inkscape\\.output\\.svg\\.inkscape\\) does not match any of the extensions available for this file type.*") +add_cli_test(export-type-extension_id_error PARAMETERS --export-extension=whatever INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The supplied --export-extension was not found. Specify a file extension to get a list of available extensions for this file type.") +add_cli_test(export-type_filetype_error INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.xxx + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: Unknown export type: xxx. Allowed values: \\[.*]") + +# --query-id=OBJECT-ID[,OBJECT-ID]* + +# --query-all / --query-x / --query-y / --query-width / --query-height +string(CONCAT query_all_expected "rect1,10,10,80,80\n" + "rect2,110,20,80,70\n" + "rect3,210,30,80,60") +add_cli_test(query-all PARAMETERS --query-id=rect2 --query-all INPUT_FILENAME rects.svg PASS_FOR_OUTPUT ${query_all_expected}) +add_cli_test(query-x PARAMETERS --query-id=rect2 --query-x INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 110) +add_cli_test(query-y PARAMETERS --query-id=rect2 --query-y INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 20) +add_cli_test(query-width PARAMETERS --query-id=rect2 --query-width INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 80) +add_cli_test(query-height PARAMETERS --query-id=rect2 --query-height INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 70) + +# --vacuum-defs + +# --select=OBJECT-ID[,OBJECT-ID]* + +# --actions / --verbs +# (see below) + +# --action-list / --verb-list +add_cli_test(action-list PARAMETERS --action-list PASS_FOR_OUTPUT "file-new") + +# --with-gui + +# --batch-process + +# --shell + + +############### +### actions ### +############### + +# action-list: test = action-list +add_cli_test(actions-action-list PARAMETERS --actions=action-list PASS_FOR_OUTPUT "file-new") + +# convert-dpi-method +# debug-info +add_cli_test(actions-debug-info PARAMETERS --actions=debug-info PASS_FOR_OUTPUT "OS version:") + +# export-area +# export-area-drawing +# export-area-page +# export-area-snap +# export-background +# export-background-opacity +# export-do +# export-dpi +# export-filename +# export-height +# export-id +# export-id-only +# export-ignore-filters +# export-latex +# export-margin +# export-overwrite +# export-pdf-version +# export-plain-svg +# export-png-color-mode +# export-ps-level +# export-text-to-path +# export-type +# export-use-hints +# export-width + +# file-close +add_cli_test(actions-file-close PARAMETERS --actions=file-new$<SEMICOLON>file-close$<SEMICOLON>file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-close.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-close.svg "id=\"purple-cover\"") + +# file-new +add_cli_test(actions-file-new1 PARAMETERS --actions=file-new$<SEMICOLON>export-filename:actions-file-new1.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-new1.svg "viewBox=\"0 0 210 297\"") +add_cli_test(actions-file-new2 PARAMETERS --actions=file-new:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-new2.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-new2.svg "id=\"purple-cover\"") + +# file-open +add_cli_test(actions-file-open PARAMETERS --actions=file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-open.png$<SEMICOLON>export-do + OUTPUT_FILENAME actions-file-open.png + REFERENCE_FILENAME actions-file-open_expected.png) + +# inkscape-version +add_cli_test(actions-inkscape-version PARAMETERS --actions=inkscape-version + PASS_FOR_OUTPUT "Inkscape [0-9]+\\.[0-9]+") + +# no-convert-baseline +# object-align +add_cli_test(actions-object-align INPUT_FILENAME lambda.svg + PARAMETERS --actions=select-by-id:green$<SEMICOLON>object-align:left\ page + OUTPUT_FILENAME actions-object-align.png + REFERENCE_FILENAME actions-object-align_expected.png) + +# object-distribute +add_cli_test(actions-object-distribute INPUT_FILENAME rects.svg + PARAMETERS --actions=select-by-element:rect$<SEMICOLON>object-distribute:vgap + OUTPUT_FILENAME actions-object-distribute.png + REFERENCE_FILENAME actions-object-distribute_expected.png) + +# object-set-attribute +add_cli_test(actions-object-set-attribute INPUT_FILENAME rects.svg + PARAMETERS --actions=select-by-id:rect1$<SEMICOLON>object-set-attribute:rx,15 + OUTPUT_FILENAME actions-object-set-attribute.png + REFERENCE_FILENAME actions-object-set-attribute_expected.png) + +# object-set-property +add_cli_test(actions-object-set-property INPUT_FILENAME areas.svg + PARAMETERS --actions=select-by-id:MyRect$<SEMICOLON>object-set-property:fill,gold + OUTPUT_FILENAME actions-object-set-property.svg + TEST_SCRIPT match_regex.sh actions-object-set-property.svg "style=\"fill:gold\"") + +# path-simplify +add_cli_test(actions-path-simplify INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:gates$<SEMICOLON>path-simplify$<SEMICOLON>export-id:gates$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-simplify-path.png + REFERENCE_FILENAME actions-object-simplify-path_expected.png) + +# object-stroke-to-path +add_cli_test(actions-object-stroke-to-path INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:cross$<SEMICOLON>object-stroke-to-path$<SEMICOLON>select-by-selector:path\:nth-of-type\(2\)$<SEMICOLON>object-set-attribute:stroke,red$<SEMICOLON>export-id:cross$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-stroke-to-path.png + REFERENCE_FILENAME actions-object-stroke-to-path_expected.png) + +add_cli_test(action_stroke-to-path_varied + INPUT_FILENAME stroke-to-path-variations.svg + PARAMETERS --actions=select-all:all$<SEMICOLON>object-stroke-to-path$<SEMICOLON>export-filename:stroke-to-path-variations_out.svg$<SEMICOLON>export-do + EXPECTED_FILES stroke-to-path-variations_out.svg + TEST_SCRIPT match_regex_fail.sh stroke-to-path-variations_out.svg "(#mixed)|(#fillet)|(<text)|(<flow)|(<use)") + +# object-to-path +add_cli_test(actions-object-to-path INPUT_FILENAME areas.svg + PARAMETERS --actions=select-by-id:MyRect$<SEMICOLON>object-to-path$<SEMICOLON>export-id:MyRect$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-to-path.svg + TEST_SCRIPT match_regex.sh actions-object-to-path.svg "<path") + +# object-unlink-clones +add_cli_test(actions-object-unlink-clones INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:clone$<SEMICOLON>object-unlink-clones$<SEMICOLON>object-set-attribute:fill,red$<SEMICOLON>export-id:clone$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-unlink-clones.png + REFERENCE_FILENAME actions-object-unlink-clones_expected.png) +# open-page +add_cli_test(actions-open-page PARAMETERS --actions=open-page:3$<SEMICOLON>file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/pdf-pages.pdf$<SEMICOLON>export-filename:actions-open-page.png$<SEMICOLON>export-do + OUTPUT_FILENAME actions-open-page.png + REFERENCE_FILENAME actions-open-page_expected.png) + +# query-all: test = query-all +add_cli_test(actions-query-all INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-all PASS_FOR_OUTPUT ${query_all_expected}) + +# query-height: test = query-height +add_cli_test(actions-query-height INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-height PASS_FOR_OUTPUT 70) + +# query-width: test = query-width +add_cli_test(actions-query-width INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-width PASS_FOR_OUTPUT 80) + +# query-x: test = query-x +add_cli_test(actions-query-x INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-x PASS_FOR_OUTPUT 110) + +# query-y: test = query-y +add_cli_test(actions-query-y INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-y PASS_FOR_OUTPUT 20) + +# quit-inkscape +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-quit-inkscape PARAMETERS --actions=quit-inkscape FAIL_FOR_OUTPUT ".+") + +# select: it is deprecated +# select-all +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-all INPUT_FILENAME path.svg PARAMETERS --actions=select-all$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^heart .+\nbottom-left-corner .+\nsquare .+\ntop-right-corner .+\narc-big .+\narc-small .+\ngates .+\ncross .+\nclone .+$") + +# select-by-class +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-class INPUT_FILENAME path.svg PARAMETERS --actions=select-by-class:corner$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^bottom-left-corner .+\ntop-right-corner .+$") + +# select-by-element +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-element INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:use$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^clone .+$") + +# select-by-id +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-id INPUT_FILENAME path.svg PARAMETERS --actions=select-by-id:top-right-corner$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^top-right-corner .+$") + +# select-by-selector = svg > path:nth-child(2n) ~ *[fill=red]:nth-of-type(even) +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-selector INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:svg\ >\ path:nth-child\(2n\)\ ~\ *\[fill\=red\]:nth-of-type\(even\)$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^arc-big .+\nclone .+$") + +# select-clear +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-clear INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:path$<SEMICOLON>select-clear$<SEMICOLON>select-by-id:cross$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^cross .+$") + +# select-invert +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-invert INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:path:nth-of-type\(2n\)$<SEMICOLON>select-invert:all$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^heart .+\nsquare .+\narc-big .+\ngates .+\nclone .+$") + +# select-list +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-list INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:*[stroke-width]:nth-child\(3n+3\)$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^gates cloned: false ref: 1 href: 0 total href: 0\n$") + +# system-data-directory: test = system-data-directory +add_cli_test(actions-system-data-directory PARAMETERS --actions=system-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# transform-remove +add_cli_test(actions-transform-remove INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_4$<SEMICOLON>transform-rotate:2$<SEMICOLON>transform-remove + OUTPUT_FILENAME actions-transform-remove.png + REFERENCE_FILENAME actions-transform-remove_expected.png) + +# transform-rotate +add_cli_test(actions-transform-rotate INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:rect_snapped_4$<SEMICOLON>transform-rotate:45 + OUTPUT_FILENAME actions-transform-rotate.png + REFERENCE_FILENAME actions-transform-rotate_expected.png) + +# transform-scale +add_cli_test(actions-transform-grow INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_1$<SEMICOLON>transform-grow:10 + OUTPUT_FILENAME actions-transform-grow.png + REFERENCE_FILENAME actions-transform-grow_expected.png) + +# transform-translate +add_cli_test(actions-transform-translate INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_1$<SEMICOLON>transform-translate:-5,-5 + OUTPUT_FILENAME actions-transform-translate.png + REFERENCE_FILENAME actions-transform-translate_expected.png) + +# unselect: it is deprecated +# unselect-by-id +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-unselect-by-id INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:path$<SEMICOLON>unselect-by-id:heart,bottom-left-corner,square,top-right-corner,arc-big,arc-small,gates$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^cross .+$") + +# user-data-directory: test = user-data-directory +add_cli_test(actions-user-data-directory PARAMETERS --actions=user-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# vacuum-defs +# window-close +# window-open + +# tests x/y values are not swapped in tspans. +add_cli_test(action_test_multiline_anchoring + INPUT_FILENAME multiline-anchoring.svg + PARAMETERS --actions=select-by-id:grouped_text$<SEMICOLON>transform-translate:10,0$<SEMICOLON>transform-translate:-10,0$<SEMICOLON>export-filename:multiline-anchoring_out.svg$<SEMICOLON>export-plain-svg$<SEMICOLON>export-do + EXPECTED_FILES multiline-anchoring_out.svg + TEST_SCRIPT match_regex_fail.sh multiline-anchoring_out.svg "(x=\"[3-9][0-9]{2}\")|(x=\"[12][0-9]{3}\")|(y=\"[0-9]{2}\")|(y=\"1[0-9]{2}\")") + +########################### +### file format support ### +########################### + +# librevenge formats +if(WITH_LIBCDR) + # add_cli_test(import_cdr PARAMETERS --export-type=png # fails to open (regression in libcdr 1.6.0) + # INPUT_FILENAME librevenge_formats/corel_draw.cdr OUTPUT_FILENAME format_corel_draw.png + # REFERENCE_FILENAME librevenge_formats/corel_draw_expected.png) # check png size is correct + add_cli_test(import_cdr2 PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/corel_draw2.cdr OUTPUT_FILENAME format_corel_draw2.png + REFERENCE_FILENAME librevenge_formats/corel_draw2_expected.png) +endif() +if(WITH_LIBVISIO) + add_cli_test(import_vsd PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/visio.vsd OUTPUT_FILENAME format_visio.vsd.png + REFERENCE_FILENAME librevenge_formats/visio.vsd_expected.png) + add_cli_test(import_vsdx PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/visio.vsdx OUTPUT_FILENAME format_visio.vsdx.png + REFERENCE_FILENAME librevenge_formats/visio.vsdx_expected.png) +endif() +if(WITH_LIBWPG) + add_cli_test(import_wpg PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/word_perfect.wpg OUTPUT_FILENAME format_word_perfect.png + REFERENCE_FILENAME librevenge_formats/word_perfect_expected.png) +endif() + + + +############################## +### advanced functionality ### +############################## + +# check whether INKSCAPE_DATADIR / INKSCAPE_PROFILE_DIR environment variables work +# TODO: INKSCAPE_PROFILE_DIR does not seem to be sanitized at all (i.e. is used verbatim by Inkscape) +set(fancy_dir "i_certainly_do_not_exist") +file(TO_NATIVE_PATH "${fancy_dir}/inkscape" expected_dir) +string(REPLACE "\\" "\\\\" expected_dir "${expected_dir}") +add_cli_test(inkscape_datadir PARAMETERS --system-data-directory + ENVIRONMENT INKSCAPE_DATADIR=${fancy_dir} + PASS_FOR_OUTPUT "${expected_dir}\n$") +add_cli_test(inkscape_profile_dir PARAMETERS --user-data-directory + ENVIRONMENT INKSCAPE_PROFILE_DIR=${fancy_dir}/inkscape + PASS_FOR_OUTPUT "${fancy_dir}/inkscape\n$") +add_cli_test(inkscape_profile_dir_handle_illegal + ENVIRONMENT INKSCAPE_PROFILE_DIR=invalid:dir + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty.svg) + +# check if "systemLanguage" attribute is properly handled +add_cli_test(systemLanguage_en ENVIRONMENT LANGUAGE=en INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_en.png + REFERENCE_FILENAME systemLanguage_en.png) +add_cli_test(systemLanguage_fr ENVIRONMENT LANGUAGE=fr_FR INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_fr.png + REFERENCE_FILENAME systemLanguage_fr.png) +add_cli_test(systemLanguage_fr2 ENVIRONMENT LANGUAGE=fr_FR.UTF-8 INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_fr2.png + REFERENCE_FILENAME systemLanguage_fr.png) +add_cli_test(systemLanguage_de ENVIRONMENT LANGUAGE=de INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_de.png + REFERENCE_FILENAME systemLanguage_de.png) +add_cli_test(systemLanguage_de-CH ENVIRONMENT LANGUAGE=de_CH INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_de-CH.png + REFERENCE_FILENAME systemLanguage_de.png) +add_cli_test(systemLanguage_pt ENVIRONMENT LANGUAGE=pt INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_pt.png + REFERENCE_FILENAME systemLanguage_pt.png) +add_cli_test(systemLanguage_xy ENVIRONMENT LANGUAGE=xy INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_xy.png + REFERENCE_FILENAME systemLanguage_default.png) +add_cli_test(systemLanguage_fr_RDF ENVIRONMENT LANGUAGE=xy INPUT_FILENAME systemLanguage_RDF.svg + OUTPUT_FILENAME systemLanguage_fr_RDF.png + REFERENCE_FILENAME systemLanguage_fr.png) diff --git a/testfiles/cli_tests/check_output.sh b/testfiles/cli_tests/check_output.sh new file mode 100644 index 0000000..06da1fa --- /dev/null +++ b/testfiles/cli_tests/check_output.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +command -v convert >/dev/null 2>&1 || { echo >&2 "I require ImageMagick's 'convert' but it's not installed. Aborting."; exit 1; } +command -v compare >/dev/null 2>&1 || { echo >&2 "I require ImageMagick's 'compare' but it's not installed. Aborting."; exit 1; } + +OUTPUT_FILENAME=$1 +REFERENCE_FILENAME=$2 +EXPECTED_FILES=$3 +TEST_SCRIPT=$4 + +# check if expected files exist +for file in ${EXPECTED_FILES}; do + test -f "${file}" || { echo "Error: Expected file '${file}' not found."; exit 1; } +done + +# if reference file is given check if input files exist and continue with comparison +if [ -n "${REFERENCE_FILENAME}" ]; then + if [ ! -f "${OUTPUT_FILENAME}" ]; then + echo "Error: Test file '${OUTPUT_FILENAME}' not found." + exit 1 + fi + if [ ! -f "${REFERENCE_FILENAME}" ]; then + echo "Error: Reference file '${REFERENCE_FILENAME}' not found." + exit 1 + fi + + # convert testfile and reference file to PNG format + # - use internal MSVG delegate in SVG conversions for reproducibility reasons (avoid inkscape or rsvg delegates) + [ "${OUTPUT_FILENAME##*.}" = "svg" ] && delegate1=MSVG: + [ "${REFERENCE_FILENAME##*.}" = "svg" ] && delegate2=MSVG: + if ! convert ${delegate1}${OUTPUT_FILENAME} ${OUTPUT_FILENAME}.png; then + echo "Warning: Failed to convert test file '${OUTPUT_FILENAME}' to PNG format. Skipping comparison test." + exit 42 + fi + if ! convert ${delegate2}${REFERENCE_FILENAME} ${OUTPUT_FILENAME}_reference.png; then + echo "Warning: Failed to convert reference file '${REFERENCE_FILENAME}' to PNG format. Skipping comparison test." + exit 42 + fi + + # compare files + if ! compare -metric AE ${OUTPUT_FILENAME}.png ${OUTPUT_FILENAME}_reference.png ${OUTPUT_FILENAME}_compare.png; then + echo && echo "Error: Comparison failed." + exit 1 + fi +fi + +# if additional test file is specified, check existence and execute the command +if [ -n "${TEST_SCRIPT}" ]; then + script=${TEST_SCRIPT%%;*} + arguments=${TEST_SCRIPT#*;} + IFS_OLD=$IFS IFS=';' arguments_array=($arguments) IFS=$IFS_OLD + + if [ ! -f "${script}" ]; then + echo "Error: Additional test script file '${script}' not found." + exit 1 + fi + + case ${script} in + *.py) + interpreter=python3 + ;; + *) + interpreter=sh + ;; + esac + + if ! $interpreter ${script} "${arguments_array[@]}"; then + echo "Error: Additional test script failed." + echo "Full call: $interpreter ${script} $(printf "\"%s\" " "${arguments_array[@]}")" + exit 1 + fi +fi + +# cleanup +for file in ${OUTPUT_FILENAME}{,.png,_reference.png,_compare.png} ${EXPECTED_FILES}; do + rm -f ${file} +done diff --git a/testfiles/cli_tests/compare.sh b/testfiles/cli_tests/compare.sh new file mode 100644 index 0000000..e928da3 --- /dev/null +++ b/testfiles/cli_tests/compare.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +file1=$1 +file2=$2 + +test -f "${file1}" || { echo "compare.sh: First file '${file1}' not found."; exit 1; } +test -f "${file2}" || { echo "compare.sh: Second file '${file2}' not found."; exit 1; } + +if ! cmp "${file1}" "${file2}"; then + echo "compare.sh: Files '${file1}' and '${file2}' are not identical'." + exit 1 +fi diff --git a/testfiles/cli_tests/identify.sh b/testfiles/cli_tests/identify.sh new file mode 100644 index 0000000..57bacb7 --- /dev/null +++ b/testfiles/cli_tests/identify.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +file1=$1 +PATTERN='$2' + +test -f "${file1}" || { echo "identify.sh: File '${file1}' not found."; exit 1; } +if ! $(identify "${file1}" | grep -q -e ${PATTERN} - ); then + echo "expected $2 but got" `identify "${file1}"` + exit 1 +fi diff --git a/testfiles/cli_tests/match_regex.sh b/testfiles/cli_tests/match_regex.sh new file mode 100644 index 0000000..24a6347 --- /dev/null +++ b/testfiles/cli_tests/match_regex.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +testfile=$1 +regex=$2 + +test -f "${testfile}" || { echo "match_regex.sh: testfile '${testfile}' not found."; exit 1; } +test -n "${regex}" || { echo "match_regex.sh: no regex to match spoecified."; exit 1; } + +if ! grep -E "${regex}" "${testfile}"; then + echo "match_regex.sh: regex '${regex}' does not match in testfile '${testfile}'." + exit 1 +fi diff --git a/testfiles/cli_tests/match_regex_fail.sh b/testfiles/cli_tests/match_regex_fail.sh new file mode 100644 index 0000000..b6abca8 --- /dev/null +++ b/testfiles/cli_tests/match_regex_fail.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +testfile=$1 +regex=$2 + +test -f "${testfile}" || { echo "match_regex.sh: testfile '${testfile}' not found."; exit 1; } +test -n "${regex}" || { echo "match_regex.sh: no regex to match spoecified."; exit 1; } + +if grep -E "${regex}" "${testfile}"; then + echo "match_regex.sh: regex '${regex}' matches in testfile '${testfile}'." + exit 1 +fi diff --git a/testfiles/cli_tests/testcases/actions-file-open_expected.png b/testfiles/cli_tests/testcases/actions-file-open_expected.png Binary files differnew file mode 100644 index 0000000..c030bb6 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-file-open_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-align_expected.png b/testfiles/cli_tests/testcases/actions-object-align_expected.png Binary files differnew file mode 100644 index 0000000..e836df8 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-align_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-distribute_expected.png b/testfiles/cli_tests/testcases/actions-object-distribute_expected.png Binary files differnew file mode 100644 index 0000000..c20de15 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-distribute_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png b/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png Binary files differnew file mode 100644 index 0000000..c4ce8d3 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png b/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png Binary files differnew file mode 100644 index 0000000..4b0f4e2 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png b/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png Binary files differnew file mode 100644 index 0000000..23ebe57 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png b/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png Binary files differnew file mode 100644 index 0000000..9ad52b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png diff --git a/testfiles/cli_tests/testcases/actions-open-page_expected.png b/testfiles/cli_tests/testcases/actions-open-page_expected.png Binary files differnew file mode 100644 index 0000000..301804f --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-open-page_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-grow_expected.png b/testfiles/cli_tests/testcases/actions-transform-grow_expected.png Binary files differnew file mode 100644 index 0000000..4bcf5aa --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-grow_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-remove_expected.png b/testfiles/cli_tests/testcases/actions-transform-remove_expected.png Binary files differnew file mode 100644 index 0000000..f0cbc56 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-remove_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png b/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png Binary files differnew file mode 100644 index 0000000..ce66cc6 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-translate_expected.png b/testfiles/cli_tests/testcases/actions-transform-translate_expected.png Binary files differnew file mode 100644 index 0000000..ef3c5ad --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-translate_expected.png diff --git a/testfiles/cli_tests/testcases/areas.svg b/testfiles/cli_tests/testcases/areas.svg new file mode 100644 index 0000000..b07a5b5 --- /dev/null +++ b/testfiles/cli_tests/testcases/areas.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="120mm" height="105mm" version="1.1" viewBox="0 0 120 105" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg"> + <rect x="15" y="15" width="50" height="30" rx="5" fill="royalblue" /> + <path id="MyStar" d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" fill="red" stroke-width="1.5" stroke="purple" /> + <rect x="29" y="21" width="53" height="53" fill="yellow" fill-opacity="0.7" /> + <path d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z" fill="green" stroke-width="1" stroke="black" /> + <rect id="MyRect" x="24.5" y="18.5" width="70" height="60" fill="none" inkscape:export-ydpi="600" inkscape:export-xdpi="600" inkscape:export-filename="export-use-hints.png" + /> +</svg> diff --git a/testfiles/cli_tests/testcases/empty.svg b/testfiles/cli_tests/testcases/empty.svg new file mode 100644 index 0000000..b1010c3 --- /dev/null +++ b/testfiles/cli_tests/testcases/empty.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px"> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.emf b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf Binary files differnew file mode 100644 index 0000000..5f64188 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.eps b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps new file mode 100644 index 0000000..f225577 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps @@ -0,0 +1,443 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:52:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 248 206 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 248 206 +%%EndPageSetup +q 0 0 248 206 rectclip +1 0 0 -1 0 206 cm q +0.254902 0.411765 0.882353 rg +14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867 + l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039 + 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h +14.172 0 m f +1 0 0 rg +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m S Q +0 0.501961 0 rg +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m S Q +Q q +39 17 151 151 re W n +q +39 17 151 151 re W n +% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 39 168.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(", + UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k' + OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI + JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k! + SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+ + UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_ + D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX? + $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr + 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$ + l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6 + ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^ + m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk + Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU + &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp + @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@ + j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@ + Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N + Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!': + \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5 + (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf + fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe + `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\ + qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h + ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[ + /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m + 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K + nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;- + 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo + Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s + %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY + Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl + _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/- + $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE + +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW + +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t" + n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR. + k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6 + i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k + d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>. + jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT + DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_ + 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q: + VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr + _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK' + q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm + !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g] + l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f + m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"' + f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG + k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V + mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*! + 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4 + FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N + ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T + A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ= + d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG + iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8 + 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU + tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY + #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F) + =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg + c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1 + <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO) + g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd + %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*! + `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX + '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W"; + 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K + >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM + n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs + 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY + Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn + 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ + I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_" + :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X + $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I= + &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9) + \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP + cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[ + IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88 + =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm + ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^ + OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0 + j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk + \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t; + ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ + 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK` + r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh + E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF + Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l + \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@ + 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc + 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$ + DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc + C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK + 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp> + :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/ + <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE> + s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls + q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D + :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn + 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB + jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@: + <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD + i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7 + 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/ + HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o + `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e + L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG + n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R: + 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5 + PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0 + $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om + GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_ + q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg + !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85' + XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6 + l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$ + om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I + :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y + &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\ + :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\ + i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G + Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru + O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83 + !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT + \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp + FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m + 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg + (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7 + 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H + R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U + ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3 + Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0 + dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7 + Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88 + FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^# + l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY + .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB + /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2# + l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=] + XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ + >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC: + -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ + eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ + UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4 + _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR + Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M + /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ + 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f + =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2 + i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/ + J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM + :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga + B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f + _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4 + epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^ + RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%! + bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a + sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ) + :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY + ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V + _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7- + %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM + F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1 + _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe + Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns + #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR- + U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO + 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q* + WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH + @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]? + %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$ + XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C + /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k" + R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_ + Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8 + Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU + 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no + jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL + Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje + QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l + sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N& + fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY + \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t + heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*< + V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@ + X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\ + GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\ + C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ + 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB]. + b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo + _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r= + %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6 + ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+; + BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh + C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,: + `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX + 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j + =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3 + IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z- + nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($ + BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[ + @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY( + fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4 + ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP + Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1 + uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E + A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM + f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck + KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^ + ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g) + L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7 + n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p + S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts- + k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob + :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM + ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0 + 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+ + (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3 + X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/ + !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo + bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7: + hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6 + \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R, + ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R' + G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R + 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB + LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H + OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o + aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T + VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_? + ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G + Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f. + .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e' + $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI + 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/ + 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?. + RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o + .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c + JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I' + G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr' + U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]* + =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82 + d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$ + aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?* + nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=* + ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0 + 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q' + !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI + >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6# + *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o + u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@ + X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi- + "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr& + TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+ + 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]? + 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c + /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH + *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R + q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ + Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#) + LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/ + "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N + a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U + ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o + 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B + 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\ + *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9 + )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE + 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN + B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\ + r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da + 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t + ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5 + YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch + ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk + )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY + DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_ + 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n + .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW + ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4 + DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I + %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc + 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO> + e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[? + kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00: + 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z + hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9 + DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n + `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4 + KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9 + CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+ + h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l + LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur + dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9 + m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P + N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq + e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or + =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr* + YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@ + &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX- + ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16 + ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr* + i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch + ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_ + W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq + :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o* + *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$ + O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL + GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29 + E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0 + 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..17e19ec --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.png b/testfiles/cli_tests/testcases/export-area-drawing_expected.png Binary files differnew file mode 100644 index 0000000..8c8ef62 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.ps b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps new file mode 100644 index 0000000..130815e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps @@ -0,0 +1,480 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:52:48 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 87x72mm 248 206 0 () () +%%BoundingBox: 0 0 248 206 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 87x72mm +%%PageBoundingBox: 0 0 248 206 +248 206 cairo_set_page_size +%%EndPageSetup +q 0 0 248 206 rectclip +1 0 0 -1 0 206 cm q +0.254902 0.411765 0.882353 rg +14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867 + l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039 + 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h +14.172 0 m f +1 0 0 rg +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m S Q +0 0.501961 0 rg +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m S Q +Q q +39 17 151 151 re W n +q +39 17 151 151 re W n +% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 39 168.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(", + UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k' + OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI + JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k! + SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+ + UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_ + D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX? + $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr + 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$ + l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6 + ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^ + m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk + Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU + &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp + @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@ + j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@ + Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N + Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!': + \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5 + (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf + fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe + `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\ + qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h + ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[ + /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m + 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K + nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;- + 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo + Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s + %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY + Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl + _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/- + $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE + +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW + +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t" + n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR. + k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6 + i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k + d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>. + jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT + DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_ + 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q: + VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr + _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK' + q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm + !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g] + l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f + m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"' + f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG + k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V + mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*! + 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4 + FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N + ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T + A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ= + d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG + iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8 + 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU + tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY + #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F) + =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg + c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1 + <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO) + g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd + %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*! + `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX + '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W"; + 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K + >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM + n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs + 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY + Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn + 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ + I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_" + :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X + $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I= + &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9) + \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP + cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[ + IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88 + =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm + ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^ + OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0 + j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk + \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t; + ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ + 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK` + r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh + E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF + Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l + \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@ + 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc + 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$ + DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc + C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK + 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp> + :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/ + <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE> + s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls + q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D + :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn + 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB + jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@: + <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD + i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7 + 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/ + HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o + `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e + L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG + n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R: + 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5 + PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0 + $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om + GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_ + q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg + !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85' + XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6 + l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$ + om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I + :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y + &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\ + :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\ + i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G + Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru + O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83 + !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT + \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp + FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m + 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg + (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7 + 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H + R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U + ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3 + Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0 + dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7 + Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88 + FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^# + l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY + .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB + /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2# + l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=] + XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ + >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC: + -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ + eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ + UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4 + _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR + Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M + /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ + 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f + =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2 + i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/ + J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM + :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga + B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f + _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4 + epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^ + RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%! + bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a + sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ) + :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY + ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V + _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7- + %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM + F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1 + _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe + Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns + #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR- + U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO + 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q* + WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH + @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]? + %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$ + XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C + /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k" + R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_ + Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8 + Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU + 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no + jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL + Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje + QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l + sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N& + fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY + \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t + heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*< + V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@ + X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\ + GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\ + C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ + 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB]. + b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo + _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r= + %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6 + ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+; + BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh + C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,: + `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX + 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j + =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3 + IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z- + nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($ + BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[ + @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY( + fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4 + ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP + Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1 + uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E + A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM + f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck + KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^ + ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g) + L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7 + n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p + S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts- + k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob + :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM + ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0 + 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+ + (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3 + X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/ + !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo + bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7: + hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6 + \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R, + ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R' + G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R + 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB + LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H + OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o + aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T + VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_? + ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G + Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f. + .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e' + $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI + 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/ + 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?. + RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o + .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c + JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I' + G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr' + U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]* + =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82 + d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$ + aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?* + nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=* + ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0 + 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q' + !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI + >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6# + *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o + u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@ + X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi- + "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr& + TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+ + 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]? + 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c + /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH + *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R + q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ + Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#) + LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/ + "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N + a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U + ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o + 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B + 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\ + *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9 + )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE + 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN + B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\ + r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da + 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t + ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5 + YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch + ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk + )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY + DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_ + 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n + .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW + ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4 + DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I + %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc + 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO> + e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[? + kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00: + 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z + hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9 + DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n + `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4 + KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9 + CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+ + h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l + LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur + dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9 + m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P + N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq + e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or + =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr* + YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@ + &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX- + ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16 + ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr* + i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch + ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_ + W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq + :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o* + *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$ + O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL + GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29 + E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0 + 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.svg b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg new file mode 100644 index 0000000..4c5abe8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="87.435127mm" + height="72.5mm" + version="1.1" + viewBox="0 0 87.435127 72.5" + id="svg10" + sodipodi:docname="areas.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs14" /> + <sodipodi:namedview + id="namedview12" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:document-units="mm" /> + <rect + x="0" + y="0" + width="50" + height="30" + rx="5" + fill="#4169e1" + id="rect2" /> + <path + id="MyStar" + d="m 85.96,53.703 -20.799,-1.1756 -12.76,16.461 -5.3089,-20.138 -19.604,-7.0445 17.518,-11.27 0.64404,-20.815 16.136,13.172 20.002,-5.8198 -7.5458,19.411 z" + fill="#ff0000" + stroke-width="1.5" + stroke="#800080" /> + <rect + x="14" + y="6" + width="53" + height="53" + fill="#ffff00" + fill-opacity="0.7" + id="rect5" /> + <path + d="M 41,54 A 18,18 0 0 1 23,72 18,18 0 0 1 5,54 18,18 0 0 1 23,36 18,18 0 0 1 41,54 Z" + fill="#008000" + stroke-width="1" + stroke="#000000" + id="path7" /> + <rect + id="MyRect" + x="9.5" + y="3.5" + width="70" + height="60" + fill="none" + inkscape:export-ydpi="600" + inkscape:export-xdpi="600" + inkscape:export-filename="export-use-hints.png" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..07f7e13 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.emf b/testfiles/cli_tests/testcases/export-area-page_expected.emf Binary files differnew file mode 100644 index 0000000..1a8b98c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.eps b/testfiles/cli_tests/testcases/export-area-page_expected.eps new file mode 100644 index 0000000..acb7604 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.eps @@ -0,0 +1,443 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Mon Mar 2 08:39:48 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 340 298 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 340 298 +%%EndPageSetup +q 42 49 249 207 rectclip +1 0 0 -1 0 298 cm q +0.254902 0.411765 0.882353 rg +56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691 + c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691 + 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52 + 48.84 48.84 42.52 56.691 42.52 c h +56.691 42.52 m f +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +0 0.501961 0 rg +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c S Q +Q q +82 59 151 151 re W n +q +82 59 151 151 re W n +% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 82 210.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng + IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0 + Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ + QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i + pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc + @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C + FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY + YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK + A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5 + ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh + B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\ + ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[ + umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4 + PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY + G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD + )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj + i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g + 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb + BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB + Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p + )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/ + 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS + s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s( + r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+ + &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25 + BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N + ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4 + n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB + 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6 + r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm + ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL + P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N + eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S + E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'> + BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o + =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g + OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I + kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2 + U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK + KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O + M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`' + "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ + '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2 + K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR + $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J + TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[ + IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,! + f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F + YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D + V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G + $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne + BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV + =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS + c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA + 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo + @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS + 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9 + _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0 + FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn + 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH, + HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D + jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G + dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j" + 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_ + <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq + 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z + FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb + ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n + )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$ + +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq + Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X + mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT- + WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U + aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t + 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd& + (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B + N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW + )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7 + p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D + JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!! + Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,& + h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C + Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5 + n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl + &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54 + 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g] + "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r + C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z + tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1? + "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj + V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp + _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8 + osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP( + 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il + ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S + Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U + /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l + R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF + H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg + iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU' + Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T + s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc + sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL + :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i< + "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro< + !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\? + r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]? + ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM + @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^' + ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT + 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc + >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC + 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\ + l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY + e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R + 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D + bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW + :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7 + I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W + PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^, + /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15 + P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l + ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW + s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i + :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0* + =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1 + COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z + FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k] + ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h + ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH + K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5 + !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7( + `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n + c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o + =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.; + &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp + .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F + A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl + 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$ + .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J< + (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g + ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!" + "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[ + qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n + 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN + ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l + 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[ + \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn + G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8 + FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n + eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M + (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+ + \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs + ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<& + ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_ + jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh + aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB + XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX + YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B! + OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<) + rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab + 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s + _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&: + cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk + lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i + e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<< + pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C + l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs + mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH + 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7 + 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f + LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV + I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI + :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r + uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+? + IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV* + XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V + nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C + &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP + ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p + [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U + [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F + igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm + Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V + 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn! + ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a + i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V + k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT + =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um + ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5` + C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+ + sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<= + 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL + P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8 + f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp + Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$ + To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ + %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ + Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X + k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq + >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW + uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9 + \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka! + E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K + go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD: + CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl + o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/ + ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU + >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i + E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d + ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=: + ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n + O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS + -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG + jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.Z]tpO:3Ngi4W,?QLiX& + oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y + \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V + 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7 + miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7 + &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e + GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB + N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF + L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7 + S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X + F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX + <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F + RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R + 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B + Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW% + T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm + <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r + `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF + f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\ + 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D + JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB + K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY + N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2 + +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\ + 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d + ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn + cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY + -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb + A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82 + PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ + T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q + !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ + :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB + dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra + V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn + NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J + HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i + @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM + 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U + 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S + ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O + "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL + _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6 + [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d + ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK + "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9 + U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0 + :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<: + L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K + J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm + &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3 + ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W` + MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s + c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S + ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^ + .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O + HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp + f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7 + C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X + =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A + bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E + 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9 + [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS + SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5 + kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc + #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8 + ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7 + qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K + qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN) + 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0 + 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf + <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI + c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4 + c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8 + Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN= + %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]* + 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X + g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V + 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H] + ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K + c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8 + 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM + L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh + g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN' + Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8< + k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z + #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q + umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1 + j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc + NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt' + bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts + s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\ + K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB + ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI + +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U' + Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"& + H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If + `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og + ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig + 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.pdf b/testfiles/cli_tests/testcases/export-area-page_expected.pdf Binary files differnew file mode 100644 index 0000000..4a510aa --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.png b/testfiles/cli_tests/testcases/export-area-page_expected.png Binary files differnew file mode 100644 index 0000000..8bdc9e9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.png diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.ps b/testfiles/cli_tests/testcases/export-area-page_expected.ps new file mode 100644 index 0000000..ce348be --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.ps @@ -0,0 +1,482 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:59:28 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 120x105mm 340 298 0 () () +%%BoundingBox: 42 49 291 256 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 120x105mm +%%PageBoundingBox: 42 49 291 256 +341 298 cairo_set_page_size +%%EndPageSetup +q 42 49 249 207 rectclip +1 0 0 -1 0 298 cm q +0.254902 0.411765 0.882353 rg +56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691 + c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691 + 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52 + 48.84 48.84 42.52 56.691 42.52 c h +56.691 42.52 m f +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +0 0.501961 0 rg +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h +158.738 195.59 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h +158.738 195.59 m S Q +Q q +82 59 151 151 re W n +q +82 59 151 151 re W n +% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 82 210.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng + IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0 + Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ + QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i + pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc + @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C + FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY + YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK + A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5 + ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh + B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\ + ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[ + umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4 + PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY + G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD + )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj + i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g + 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb + BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB + Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p + )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/ + 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS + s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s( + r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+ + &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25 + BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N + ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4 + n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB + 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6 + r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm + ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL + P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N + eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S + E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'> + BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o + =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g + OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I + kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2 + U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK + KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O + M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`' + "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ + '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2 + K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR + $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J + TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[ + IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,! + f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F + YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D + V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G + $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne + BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV + =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS + c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA + 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo + @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS + 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9 + _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0 + FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn + 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH, + HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D + jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G + dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j" + 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_ + <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq + 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z + FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb + ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n + )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$ + +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq + Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X + mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT- + WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U + aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t + 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd& + (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B + N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW + )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7 + p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D + JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!! + Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,& + h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C + Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5 + n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl + &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54 + 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g] + "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r + C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z + tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1? + "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj + V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp + _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8 + osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP( + 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il + ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S + Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U + /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l + R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF + H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg + iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU' + Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T + s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc + sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL + :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i< + "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro< + !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\? + r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]? + ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM + @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^' + ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT + 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc + >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC + 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\ + l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY + e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R + 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D + bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW + :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7 + I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W + PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^, + /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15 + P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l + ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW + s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i + :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0* + =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1 + COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z + FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k] + ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h + ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH + K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5 + !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7( + `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n + c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o + =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.; + &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp + .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F + A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl + 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$ + .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J< + (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g + ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!" + "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[ + qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n + 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN + ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l + 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[ + \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn + G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8 + FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n + eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M + (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+ + \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs + ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<& + ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_ + jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh + aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB + XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX + YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B! + OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<) + rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab + 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s + _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&: + cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk + lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i + e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<< + pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C + l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs + mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH + 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7 + 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f + LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV + I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI + :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r + uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+? + IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV* + XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V + nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C + &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP + ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p + [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U + [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F + igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm + Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V + 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn! + ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a + i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V + k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT + =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um + ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5` + C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+ + sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<= + 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL + P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8 + f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp + Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$ + To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ + %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ + Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X + k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq + >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW + uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9 + \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka! + E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K + go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD: + CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl + o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/ + ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU + >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i + E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d + ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=: + ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n + O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS + -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG + jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.Z]tpO:3Ngi4W,?QLiX& + oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y + \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V + 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7 + miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7 + &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e + GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB + N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF + L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7 + S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X + F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX + <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F + RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R + 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B + Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW% + T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm + <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r + `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF + f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\ + 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D + JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB + K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY + N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2 + +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\ + 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d + ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn + cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY + -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb + A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82 + PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ + T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q + !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ + :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB + dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra + V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn + NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J + HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i + @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM + 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U + 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S + ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O + "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL + _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6 + [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d + ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK + "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9 + U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0 + :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<: + L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K + J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm + &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3 + ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W` + MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s + c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S + ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^ + .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O + HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp + f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7 + C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X + =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A + bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E + 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9 + [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS + SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5 + kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc + #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8 + ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7 + qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K + qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN) + 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0 + 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf + <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI + c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4 + c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8 + Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN= + %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]* + 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X + g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V + 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H] + ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K + c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8 + 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM + L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh + g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN' + Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8< + k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z + #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q + umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1 + j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc + NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt' + bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts + s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\ + K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB + ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI + +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U' + Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"& + H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If + `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og + ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig + 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.svg b/testfiles/cli_tests/testcases/export-area-page_expected.svg new file mode 100644 index 0000000..ecdc717 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + width="120mm" + height="105mm" + version="1.1" + viewBox="0 0 120 105" + id="svg10"> + <metadata + id="metadata16"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs14" /> + <rect + x="15" + y="15" + width="50" + height="30" + rx="5" + fill="royalblue" + id="rect2" /> + <path + id="MyStar" + d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" + fill="red" + stroke-width="1.5" + stroke="purple" /> + <rect + x="29" + y="21" + width="53" + height="53" + fill="yellow" + fill-opacity="0.7" + id="rect5" /> + <path + d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z" + fill="green" + stroke-width="1" + stroke="black" + id="path7" /> + <rect + id="MyRect" + x="24.5" + y="18.5" + width="70" + height="60" + fill="none" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.wmf b/testfiles/cli_tests/testcases/export-area-page_expected.wmf Binary files differnew file mode 100644 index 0000000..92421b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.pdf b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf new file mode 100644 index 0000000..c567930 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf @@ -0,0 +1,69 @@ +%PDF-1.5 +% +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xe=NA{] xDBXZD%B4hd<VHfp}8>n7 7ʗ#*[K!S'eDX9mt1Qn0sH\u:xgԄkIԳlʵoL9̰&0#;T<WMKBNvQ6??b?a +endstream +endobj +5 0 obj + 197 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 340.157471 297.637787 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /Creator <FEFF0049006E006B0073006300610070006500200031002E0031002D0064006500760020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029> + /CreationDate (D:20200404202009+02'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000615 00000 n +0000000383 00000 n +0000000311 00000 n +0000000015 00000 n +0000000289 00000 n +0000000680 00000 n +0000000971 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +1023 +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.png b/testfiles/cli_tests/testcases/export-area-page_export-id.png Binary files differnew file mode 100644 index 0000000..6bf9b04 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.png diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.ps b/testfiles/cli_tests/testcases/export-area-page_export-id.ps new file mode 100644 index 0000000..6de42c9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.ps @@ -0,0 +1,130 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 04 20:20:10 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 120x105mm 340 298 0 () () +%%BoundingBox: 115 55 291 233 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 120x105mm +%%PageBoundingBox: 115 55 291 233 +341 298 cairo_set_page_size +%%EndPageSetup +q 115 55 176 178 rectclip +1 0 0 -1 0 298 cm q +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.svg b/testfiles/cli_tests/testcases/export-area-page_export-id.svg new file mode 100644 index 0000000..9fb1575 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="areas.svg" + id="svg12" + viewBox="0 0 120 105" + version="1.1" + height="105mm" + width="120mm"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <g + id="g10" + transform="scale(2)"> + <path + stroke="purple" + stroke-width="1.5" + fill="red" + d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" + id="MyStar" + transform="scale(0.5)" /> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-snap_expected.png b/testfiles/cli_tests/testcases/export-area-snap_expected.png Binary files differnew file mode 100644 index 0000000..f35894b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-snap_expected.png diff --git a/testfiles/cli_tests/testcases/export-area_expected.png b/testfiles/cli_tests/testcases/export-area_expected.png Binary files differnew file mode 100644 index 0000000..c9ded26 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area_expected.png diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.eps b/testfiles/cli_tests/testcases/export-background-opacity_expected.eps new file mode 100644 index 0000000..4f5eb82 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 20:06:29 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0.5 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf b/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf Binary files differnew file mode 100644 index 0000000..26bdf75 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.png b/testfiles/cli_tests/testcases/export-background-opacity_expected.png Binary files differnew file mode 100644 index 0000000..9c19536 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.png diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.ps b/testfiles/cli_tests/testcases/export-background-opacity_expected.ps new file mode 100644 index 0000000..0afec8e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 20:07:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0.5 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.svg b/testfiles/cli_tests/testcases/export-background-opacity_expected.svg new file mode 100644 index 0000000..e478c6f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda.svg" + id="svg5" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview7" + pagecolor="yellow" + inkscape:pageopacity="0.5" + inkscape:pagecheckerboard="true" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-background_expected.emf b/testfiles/cli_tests/testcases/export-background_expected.emf Binary files differnew file mode 100644 index 0000000..6263304 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.emf diff --git a/testfiles/cli_tests/testcases/export-background_expected.eps b/testfiles/cli_tests/testcases/export-background_expected.eps new file mode 100644 index 0000000..f58830e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:29:54 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background_expected.pdf b/testfiles/cli_tests/testcases/export-background_expected.pdf Binary files differnew file mode 100644 index 0000000..a5887b7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-background_expected.png b/testfiles/cli_tests/testcases/export-background_expected.png Binary files differnew file mode 100644 index 0000000..1a3a34f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.png diff --git a/testfiles/cli_tests/testcases/export-background_expected.ps b/testfiles/cli_tests/testcases/export-background_expected.ps new file mode 100644 index 0000000..5055f6b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:30:09 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background_expected.svg b/testfiles/cli_tests/testcases/export-background_expected.svg new file mode 100644 index 0000000..7e49fab --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda-background.svg" + id="svg7" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview2" + pagecolor="yellow" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-background_expected.wmf b/testfiles/cli_tests/testcases/export-background_expected.wmf Binary files differnew file mode 100644 index 0000000..3a6d0f4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.eps b/testfiles/cli_tests/testcases/export-default-background_expected.eps new file mode 100644 index 0000000..6aca4538 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:05:42 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 0.814948 0.847259 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.pdf b/testfiles/cli_tests/testcases/export-default-background_expected.pdf new file mode 100644 index 0000000..720134d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.pdf @@ -0,0 +1,70 @@ +%PDF-1.5 +% +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xm 0{֤Ǝ"ړ`ȇO?Ba©~@0n ƉRdӼu1_RdQ@6~Y$ +endstream +endobj +5 0 obj + 102 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 0.74902 /ca 0.74902 >> + /a1 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 112.5 75 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.15.10 (http://cairographics.org)) + /Creator <FEFF0049006E006B0073006300610070006500200031002E00300072006300310020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029> + /CreationDate (D:20200411190529+02'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000547 00000 n +0000000328 00000 n +0000000216 00000 n +0000000015 00000 n +0000000194 00000 n +0000000612 00000 n +0000000899 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +951 +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.png b/testfiles/cli_tests/testcases/export-default-background_expected.png Binary files differnew file mode 100644 index 0000000..bd530a8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.png diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.ps b/testfiles/cli_tests/testcases/export-default-background_expected.ps new file mode 100644 index 0000000..2ea710b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:05:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 0.814948 0.847259 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.svg b/testfiles/cli_tests/testcases/export-default-background_expected.svg new file mode 100644 index 0000000..9f328c2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda-background.svg" + id="svg7" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview2" + pagecolor="pink" + inkscape:pageopacity="0.75" + inkscape:pagecheckerboard="true" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.eps b/testfiles/cli_tests/testcases/export-dpi_expected.eps new file mode 100644 index 0000000..c86b4ed --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.eps @@ -0,0 +1,272 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Thu Mar 5 09:46:17 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 1 173 92 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 1 173 92 +%%EndPageSetup +q 0 1 173 91 rectclip +1 0 0 -1 0 93 cm q +0.9 0.950196 0.9 rg +90 46.5 m 90 71.352 69.852 91.5 45 91.5 c 20.148 91.5 0 71.352 0 46.5 c + 0 21.648 20.148 1.5 45 1.5 c 69.852 1.5 90 21.648 90 46.5 c h +90 46.5 m f +0 0.501961 0 rg +82.5 46.5 m 82.5 67.211 65.711 84 45 84 c 24.289 84 7.5 67.211 7.5 46.5 + c 7.5 25.789 24.289 9 45 9 c 65.711 9 82.5 25.789 82.5 46.5 c h +82.5 46.5 m f +Q q +81 1 92 91 re W n +q +81 1 92 91 re W n +% Fallback Image: x=81 y=1 w=92 h=91 res=300ppi size=437760 +[ 92.16 0 0 -91.2 81 92.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 384 + /Height 380 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 384 0 0 -380 0 380 ] +>> +cairo_image + Gb"0WH$n-7S]>_85[9ZQO@)YU%>]^W[&XK"U[)Z!CXq7KgMM)8?pR2Z=ug-('?D1,EY-)"m + Mg0g&-<.`+TV^4mZ9^%0Y*C8*&Ee2mO+"[]"='Jr'%k;hjNB7hiHC,5C]EO4QefMK\p/:MI + @?V@2O`-hl``\UV4")?ZTGXcCe[EeSD3hW[aJgR;&*HA_OG1>regc.qm,pl0_Pb/!s<q=4a + k2nS;iW0m4CnS_WEf]i0rJIdgfI5Ip\83Z;0@)YK)[)Y=Kr54P%_kfO7u$]>p\3-AN#^8Rj + $KNW;CEJ:Qi\ttiu<HD0(Yt<iUk6HJj$^k9!d-67@cZfBX,JfcBFB@6obkHme6^1jT(ci)p + #?/n*&,^uCR&IhCp]H"";1h+&#QA,*#(PPAr4tc1rkKWNK8CNEJNrW/'/fOeJ)ChaC@DK-^ + `Q8"i",a:5FACc+8>qf0N!Hen-Ar#U'?,*&,a73%K=-bpk+DAr..*%#88ui"+T5>->N#Trk + KULeDLl8JNoO#_&rFSIkX`P5O\pW@%mjTi",b%7*TcMd2KCacO*rH72%U(W49*7L)PqB)bZ + T]5FNon9kt1o,,i&S=WW&Ri"'E3laYj"f$VKukbrF%VZR>T\jDgfXAiEHXJE,^DZ*jih7)> + $=0=-Ajh>=fUQ4t[D/3^;o8bKl5'qA`@lp7#S!o>]S6Ck'o^'Z%b0I!/iKRQ;)j1kT1umf) + b[])E3-I:[nA^-@lf6U#^EC3!nJg&L?aDS8l*?[fSEL<Pa*bT`G553P^Z+mPZ[^YUBsZ\S5 + G+u?S@l%M8**5eQR!rE,Vl,n=f&9!UXO1^C9"#[*BO$P?b+lPg-n4ND/6HP@q[gboK"1P;m + W1n:@4To9mVO@K2ZAn-K,V[,A:H<53^nY\,6$i'sT9VcZ^"Sh"YC#+$U,2LtTi-++Fpn$+# + ?E$Wis-m<71--/"!9;j('u:2kShr;!tfV,u:a^$%0=lWW.IISY<O?3L'OB+do11X`^D;?#@ + Q]:2[N"UHnF]oXE7e+QH&^o[])2hP/NXsATYXZX)`b;3MN&"UHXC]Q>dj3u(FR1V`#0!+S6 + nK<EC&O@SN+ULRD(CDfL.rHa^4d\0nVBZZMZ,XU%p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p + ]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p] + H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H + $(O/Tl:p]H$(O/Tl:p]H$(O/U1^%hg%b`RrW#O!Z*P.Z7;<f($uEqekgH6_p&l+Qu;AWcP5 + P%?Xt5QTokF])>bE[=mejilK*prj\l9F!?*#o0P)G?]6Xqk9QfeI!jXes.)YD^-=IF8#t8, + $p%-O:dJs7/^:D>9faX_6$;"5k@W)tRsQGOa/@`PjLG68frk5@HkcG)r36!e]'d<Hp+bgJC + f0sO\aI4R3p/?a&U-0o=^c_%!E.KN`egj+m-$M1cmabac9EY9Ns8mCI`iXhNK"-C9l3Um<L + GT;0sLneSERf%+aufQ$U(CV&W>f<R56(,`lu5dP+/k#(1#l:Y@jH`qD>Mb>:5C"(rPekO/L + !DN901^G,"`L(OTS7hWK/ZPC+_%$_$h5K>2fo^`1Lf&tOEQpir]_9?o'<C\tO,[qfp2lW6B + Co^Zeh9,gOg#fJqtF`_e_(.-]riX_Sal4*CqL'CDa2I2au/M&h3noc:V1BhFT[.)f`^]",1 + h_Y/Wp)cHdq`I$b37/I1\r@]g3eA#N@CXMM_9R[g\.%?Y4CjiF0P3[XL5pF!4au_lELu2MO + ^n(cp2bE%H"GSXS6k(Jo%FIe?'8G`+j"Rmgu<V41V5+uY9kp33`g>^eN$(k7JrXR_B77Q5P + 9=?r4,gQ.m,aQl?3l>ZNXuC`if6qaksd]qL)u)"/aiKfhM10b_`Jf:Xr<[UR2WZoW74GH45 + !<c>8lkYVGQUT(_G1Q#S"aB'u$HGPBloGJD::h1]uha_jM.jIDF(km0\'ck2'>P$Dm!DK/# + uc9J07rkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN + "+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN" + +N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N^5/q98`FS + TGEet;1(BMRX7WcP69rd5:TJc-(*q"(_]np!bZJ*--da7j4pr-GM1M9]EVJ+KRmk>*u50m0 + esds_6:3Wa<L)RX:J[*Y=>k5BL5nmb_=Y5#I>s7V4HJ)Jh)rcu?S"f=M+"[5,9k"kaILPZO + !c?%d"J/NG&bal(U%]eE,em;JERd<XZ(s-X*Zt4$qf'M\gY1r0i8?_@Y3t3t#J&g2ZZrhf] + g047fl+Gp,g>9u2%R28!-#n.hR((F:.S4YQFF*-647=2>Nt\(3VJ`"u7ujjGA!me[4D99*J + ,p.m*!c,je5)D,DX8lHZM[>YT8tup`p\a9:HZ2LaX<W]rS<dSHcc:63_IZL0gfu'gjNc..s + ),=9lf>`&*#f3p/L6*9!tLck\4&K>":79Sa:Kk'4dW18]/<`/,;Pm0f*ng8Ghg65+IEO3^U + Tis0Z2SqA#p;NkG&O[V#h,&*Db\n$,TJamsiJZa#Q@las,L1V-,,L]2\[WTU]Q2q`D\SZeU + FkbLfuhK9XcD2dA^0gU,$c`d#Vl<gD=.rHp#<7k#Ldo'\DrnPuYli+;3/g@&T?2%(-'?_hu + -t,L@L=ZsKrp.J:k4G,f^S-E,^!YcQbFkbf/E[f-:fo&.h%:Y0*=)/)Zu+6Lr\%%:Rj'k=Z + YU^k:CfdIM[l3h2G&p87^laZcM+68Z,i+,Tl^JZk9BC#rkKWN,@TF-:kj.GjGUeqp]H$(O+ + _rE:K;HN0`lj_&,^uCO5:tY^9o$]^`W=RIt[Sa[7L-R*r`qsp]H$@rb-Bl$"$\a5O\pW^`U + 9T<*`-;r..*%#Q>#!LXNZti=Gj;5O_1!5F"s.ApkF!J)Ck8JNn2N6T+-Ji=Gj;5O_1!5A#< + g&cTQfp]H$,or#C3g;JI]r..*%#QDg1O6JkF#(PPAr..)<qd\XCc2iFQ&,^uCZMS.k%qWNu + p]H$(NtVGZnd!S3#QDL\pnNp8e]lY6#QDL\p`m_L?@ORBrkKWN"+QR,Vrqtd_]SXUJ)HB.r + _QdN(B2)kp]H#!pnMQOFPMB8?d0aT5ODbUS1-F-+o]-&oPOA5U]1%.rL'p#7[H=G4F\ub&% + EBOVM.7lp95VG,Cc/Ac*EjhjLY@$q=EaB2`Z#QItfonJNpU*%gO3!cI\*%5GSN%dWGp=WNE + e:Nm9kcg/<6'E3eR%n!#bsS!C87q#>h8qDNb1I3Gq;D0bd@kYEEfrB04`:1'Rjl6#d#j(S2 + 7j#k>$)Xf]cM(MNqF5We_R)<E^2lZN%>o&\VN]k,PnNiWLEM=u]^!klRZMTngpUiP"pDh<R + AEQa;HfDM3q,(RG@@VpjK!1GHUF.K2&i_`dRbBgV`;3Ea;YU4iBf3=7e.pc<]>LVDTd20Jm + %_pg(.Be6Zm9AmrSGs!VNJ#+3K8%u7B_Go2T^#a4Cg&:GO/,g<E>.Y8KiBf2D];!V]TdU&K + S_UE^NT6S`FlLj(M&!$9^re&5G:"::NNQU!<',IqlOnPW"h^kCq4mSc;:"-_*AYqM\a)L:I + _&hC"jh;"R**8#En>,&=1D5,sVF37/K)j@k*J$Co(LHGK0^O1lX')gX"2'W5H/a&:)Y<T?k + lF"R<@5ACZ,=L^Tqk6M3?i/a=Y5F1capQ%T/#QCYNpga.!I/aHTJ)HBVJj3;pcZ^Ia_&rHI + VVmM8pd;Hs\%s0]UU&g=[J84tg&QW\O33&=f&BIo@mt`748aXoC'srBMa*HOTS#Ju7npfA/ + +Q3*e'M;Qp]H"F'E#*ZJ#F,m$iGQ?WX8Z,QTs$FeaNhCW$_:L?2df:/$sUSr..)t#l[qs5F + &fPp]H#q&cAmpIu<NKnn[jU&,]9jnAjhl.BG&Dct'p6pnNH!O#?cTXo'+8JNkUir`Gp[.4$ + Eg20nZrr`FO:a%H;%]9`_Oi/b8NJ#q.le<3eVVdT!!=[MVu9)YHh.^N7VjG#;n>JTlDC%Ti + a6$(uqP*Tq`m'%1RNb9@[J+RT(ebW3OQr;Z"c]*f$P5XXZrskTL(54F$K_#`6A3&hFC"oPJ + 59W&BqsRYXq5=,`XIMni-!=5Na"rdKa?2bZ]5oUm:7QtMM\Fp1h9#R:#QC+>bI_)Pi&TaNL + W9TY%,`thEM-KR3Js&]*]`lh29('g(_>kjF;t&(p6SgN>IFCqE__+Erq!jnql6*bb-g?$kT + ,Q+THc;]ZhL"Th7%%Y7"SuLAfOQ1HmJXr7IQqqjI_Q2Hss\:-)W2@;l4K*c=ob`N3OF6qek + cD]o/CJJ%CI*7l%Bik`I[<D$0kp_KCOmL:Rf$o<nH>k)3fub;an_rlM>/]/2PX!Q(hGTieA + I>-'qY1QGA2Z;+!'DgOfJJod[XMgd>5#M=*lpYFm@]`>kj,V"-8&O+En\IP+q2u1WQ?d\t0 + e)H2&]=urufi6)cVkgT9P0ZAKr_R57cG1N4bJ>9Ore0Hg_]NF4_&n7-8:(^KIunDs56CeGp + (e)9+OpUE`;1.0(BK#Ibm&[9qK"^p2#KWt)uL<6c`rF=n-@W_n40QE<7L:`pk*B=p`nRdd% + !r-K5<@=,M\oTR4$r(ZH_<gE.?+1'H[5reHC@Q_&p!IKnhl`28LA-nAhV+iSb;F:%619r&L + ?o*<%'"%/s@\5?(=*%/`E"(Aoo7T=gUT7K"t>O+?.!;GHZ$7"5\X*)b:YOIQmWK5<.7A"l0 + q,8McoccI_:^BFaiOD9A3-Mm>Hn+2G5A,<Zbi"&^[nAdqHqJ>G\<19V]5EU5Rn-@WGnAfX# + [Noa!qNG'IGpMFk_u)7Z#Jo=/;GEJ>cgL,2/_6P<O1hUXq8^FgN]"O)T)>#93sGU+CQBNc, + @!a[im/Dq?c[3c\Lteq7u@-3O?XDk-KNb=9($lImF9Q`QUDY!,e"$@T'RNn9jk0l]t&>ibd + -bFj+$:a6Vbu(4A3G/o\YB"Q6K2RK4iQn6%^-^Fo>6R"!%V1jo3b68)AR`n=,qS47J]V7>I + UlU:cpW:-$ibFffelqa8bX+1ethkSKO_R^2&'(8jf#&'O^)YQ%W&Sg0tr6n]FiFmKXIrIE? + bT8>p?L;4lV0RE4NmeAcJ!=f3$\W6O*_-aj(i,qdZh>>[ona#GA$KmdBAQNLpjH!B"(XjJ( + 6mm<ToWW_Gph[^R^#sRrfY&P&#(PhB1t6Xrr':CJbFd1"UORRQQZ!jkK@A0?rG4j<L;J8[p + #j5S%i+cXqhd?16+.I)1!?2U[_JW:5Fs<qn-@WAnAd)0qE+Dc??'72J)$4Ci"*,ai/_%?:l + !I0.HcabP)K??J,"Y4,ktlP5O7=\.H_6'GL[6'+<(XdR-W)e:B"!cJ$u1kK0RFHJj8DoA&# + of;1H$OCkY*p7Y3keqX^N3PM&shb5'NP7ptfkW@%CMY!5m%6*,,+\0no++(QV4*sqrA?h7@ + E+4hc>pk*B.p`mVIcXT.?c6'(LO5St-;GHXNJj8]FHWO'oHN"0krZK_oIjFeFHfo36rTX-U + :uMp_:%1Z)5@Zjr.dE(=C/7'J$@e.PJj0nGl0$F^<okppr9=#-5k##X-MSh%+6m[Y=loSGq + ("`"#H9'F,L)iD2tn``:X<AKJj2d`_&mCj3*^Q%cC^^.((U+l<"o1lk0KcX7EYGTo2cL^%o + Q-k8")[2STmpjIp<Uli"*,Ii/]^Eror?*.HaLQ?\'PR5)]CKrZDpYJ#)lrCZd6;rTW8kcuP + \,->o:YIur=@O#2?Xo6Dsp.atK_(RA0d\2Jg'\dRhMbpCKNrNc;&gNI_oK(&r=4[tM,)UIY + ^n#$E&%#-u;D#E&Vp=n)8R*2_E6$)5UT#58Ci2fpuX7"Kpaf<YGPYm]Cdo%Es57[_:T+Prc + bk6aO5aR?]rTF"V>Sk/Xf:8%qh(H<&0X"HZq;Lp8HZK(Qi&(Q7+Q:H%cVWeu"NW+*?f<hOa + ,Cb</$-U[rgWdt<+[QAO&M3?:]?$`+/G(\3rck(k>f5\/'k?)$@f"tV3dJ=B1pYgpk*B+p` + n%UR"?1M"+Lk<p`n%Ud+hIZr7RUM)?(a_#l[Bdk@F9Xp]H!W1\`3>T>ToKi=GiPbi"O=J+h + ^PVjou3QQ4rpZA%4t1k0[Th[+ej%q5`mV"s&#eR(=d*%j7e+(Pbq+)1_9"7QQp+D1+5RQp3 + hmdLJ\+D1+5RQmAmT(!!a+D1+5RQl7&rSS4a6-S8J1k,S1#:er`7JMLO,5<D-T:iP6I/XV* + &2X)+c(@AfLQqB8hg\*R')[mScge*sn-Aq8B(/<Z5J]@rn-Aq8B(/<Z5>h5Rb5$\)rs.4Jn + 4/p3M'\#J#Q>iXn4/'pI3&0]C!m^f-P?>#RgB!an7RR#&@:j\f,sqho>jCQ58*niJbK\Nq6 + T5#)H6QR:?qBK47EKS-2:u55QCTkJ*[:)V;;/no;0],M,(bHHe$aJRf<KEH%"k=BK>L1l8+ + PtEUX2>XKNW<5OH4bs!Y?RD]F/bon0GhRMRf!IJirY"rZiY>2)rUW'<N(s)YOFWA`r=n(2O + YGGP4Kn](k&^\lEur`Qf/^Ukc%4:E;Ln,ElIORV1h1k4YCbu`14f-FGmK5;_+,L)i<(Y1"t + O'An/r'@b&r/p,;^c);:q;\(5%Y'Ql"Fm6C':'H3S3J']4l?jVL#A"KJ%hoW7QGt,VJLrNa + ;0@l')WX82V_Pbbjre9eJnK1>6t4!n7Pq?1e%ArQF[P)+Bo-N8FYeDLOZ/!5CQ]4i"*,Ii/ + \"j(.KiSe=Rerr!\(:RY!a:r,GMU=3dG0^O-<:OICbc')[m]iOe@Ro_df<pk.'1r%Zfq!KI + 91/(9dTVro`5^`TALi/bGJf_O5m^rLPHHN*IGr'>')rg<#tgIL.%e=W>Iqu_G1RY!cdqQp+ + dE^frs^$5uTOGsBmbk3@QHD%#3o_dZ0r'>')rg<"I@WA,_rq-'G(]6R6$N?FScU@5YddT!= + T3ab[Jj2e#_&p#]q3McpU8U;iIeX(rOICbcB)1J3d8<bjHN)#bpk)N]r%ZBeaP2i7qU>%3T + $$BF`,-1H%h]iZ1#3pt[UrNN.HaLQ\%VRN5Ig_';Fg5s<.?h"H#<RsGO+]iY,J$B]e]OOg4 + =lj#9VUGoV59mUO"N[DVXB4S#?$VRD+)1V\oLk`d3U2]<O$h#*a3AiK%M[NR8t`\EiVrXs6 + EG8T1QN:cgnR5KE\IC%P:uM]rr(]Y:_X\[#1=b,MnE=DQ:+IfB0>r7?W3Kp!s(/C(?>4Hb0 + S=QZjn(7H0\HRH8R&df:W&m_C29dN%abmp7,c=:+o:&Wu\&f!S-7_4Ri2U$<r'`TW*A!_[j + p.J/Q7=>qn1T7=aW_?X:M$VNIFL(cWR30QC-_iHWE;JOg)+PcN6sdgbK!W.V:m=4`f(f6gg + +a!7+L0&PcW@AYI<"BW:.q=Im('CA1Ar*X5+:=q.I,6IJhum$fi7I]7"=&TrZ2<:?MumUES + M7Ui"&^anAdqHr3#lFlHe_]e*mUq>4BR#Ir=,TWMi&?H/\5tfimmc7":(4MA5_2qK=^n6+. + R,YloQ:AK3K<+8CK<'`>3=InjRGJj7<\K0P[[:KVKOr'<4Xr36BS9`N!Ppk.'1r"8ACM9HX + 1iradmRY!c@r<^RPJNq46K0R6OM9Lm25KGa85@XROQ?hgj^.CQ_"b2X1Jj3`C1$b$Ipk)N] + r"87U=eE@E+/H4#O'$nUqW&[r+I*+["T!0pl_M)d^`TALi/^-Q6?>KP&$k<TO$J2(nmgSgZ + K:#*.">!(8pU"3Iup+N5GJ(<nB';VrHZfb7JMM:4aQm_E#ldhB<pE*H2P3e/,i(doC]4MQZ + 2piC'`uE'E'@q/7V`;=FRaIDIQIP;K:-MZ7C2XH."1D00GeRqLd]:(5+9tZm]D2bI_+&i]O + %&mVe'J!AMl?@%WFgO/d%cY<)h+#I%OF*;^9#4D<IBC%aXT3DK1=qW?`q:M-5HfUZSIm,5! + u8L6q[`YP[_bKSUIr2ZnD4d]5_.uNVM;G'hb92dVs1F:pK[C!1q+tqqOiIC\\nl&<,U6j+4 + RQ&H%fI44+S4:,MIXLbIIGg0Gea3kp]##+bSsU6PCNeY&ffQ#h4^e+J8)K05*>+GJ_Wb%nW + N5,^okjOP6PHf7N]%:;Vm*=cr1W[soC(2bOV[a+Sek-,R)P2G3A$4s3]C`T%0!cS+'VDkIq + Ao1,_A"<5AqWhS":>13Ph4\A=]AP-EY9g-9aK(cBA.:;/nrY54Ae[8FXYlrQ2%aJNrYEg4M + W@kg,OB.i`rp&$h;TO#?cTleX5g"+O8]r38_@nuD<>&,]9jnAjhlTaGNBi",`_61Dq[r2FV + 6LHk8u*Pii`njfJ(d!lu3JNrE*r`GLO3eIqA^`V)0J#p^5HLo\7f`?T\O(s82<od%DCW$,J + pYcY\;,-Q#MYs/T&,^uCC'srBMa+Vo[@NkZn-Ark.JRC)roi,/n-Ark/GN]ir_tgVGQ)IK# + QCYNpgY'<Zl!$*&,]:3nAk+uWROpkrqG=]r)$D^a7B3)mdL=.i/c$458NZ_<Duo\pBH-*O. + (Yb(@D_3LVP#,UXn@a-2[:`%R1`pcVWeun-;P+Er;?6I2`%Jq=#W@59GZ1N:RPmR-")ffD4 + T?p.:28kFV+5l.*5l54Ba:SK0bd:1mtbdajRgRie.@*0qP`.4.:AlaX-J[eFF<+*a@*0+Rt + jUA)UBc@^n`$t\"</(K*<qCrZ_gf,]9n5P_n%KlM)d//SOpqH71ch!<hj>6%sm4YT!>I?M0 + p$2.s>7nKa/&eQn^5u[V3SgjK?.ma#JMfSdR=5+dV2sK*LY_p5o6r(OdG!I"aj=oRDCCMsL + cp7^4K$-W`(^Q-hDk#E>DM+qoZkj.k^c-J%!N`;N1Lr8I+7GB/GN%`n/1@KO<4KYeUQkBr\ + $l]ZL?il4(cilE:]pNS2M^1%/_HV6<d=@:s,c5TqnifY3UAUSj7ej>O*ASO`#Z9)*/0p%7O + q#c^_UgNmktAM]:Y7ciN:\LO[S52b/>ggpZD(O0/46C"jmgA;]7Yak?LDO[#Xsj!@3NM[kp + )OK]nd>!TX,S,hM90C/8UL$5aIIl'lgp<IjV"+T5>r-@r6BFWZ:/cpO\&,^uC$Mi0DLKF43 + i=Gj;5Odj`qa3@8HkH,UJ)Ck8;8SroQC;,5!e9,=r..()q"(`9gu/eAJNrWo;1EoebT6\u+ + 8>qfPk.D?dr]\T^`W=RJ)JYJpSZV-G(r6N#QDL\-2a`Vmer3;i=Gj;5O_0dIsV+&1]2egn- + Aq@k>.;HafLE9+8>qfi/]Gg<&[mJqeq$Mn-As.+'JLrjU4<B#QDL\p`mC84o_$$r..*%#Q? + .4O+_^`n-As.+8EbJ8(48rr0P%4+8>qfi"*l#An/1.MngG0"+T6iKQZ<Rf365*#lK6<n-Aq + `QmmNu=Kd?An-As.*sj0Ao^-te79&X"&Eb5+a!q@hs2gSeO*uOAq8:%(=s(Lcp&6f5)u1;$ + 5O\pW^`NlHl[hM9Z`a2([^B-o=&q1[EMEK`WF`&!dZ9p>4Mg9(f'-aCbMGDYm_9h?=&/3)I + rD@ee7Z6R43;+J-b@/cpQ6]U7aO@[Ob\R[#P01.q0-GH7_+Ksk:pkE-`aKnA#BK(qhJJWn< + 7-BiUl0$5@,DCI,i2*o\>egg'_]*,]:/4mm``mN>#S@Y9qTBDU>lW=gdR,^Mg*Jm65l=&S$ + U$6/Opt1/:Q`VMrZVW4XN>8o]a#'=U#?ocHs-iPXRaREZ#-6*H,Dr23*SDm-0N4N<?R(sQc + RkEo-7UL\@SR*.2_acLhkj/H\"54a^LWsP@2B()8ge%Iu:(Gnp6Hb6"nMe@pFqdjun\QsCM + \a"7Jp3&`-!N5k,r6iU5p5\k?:0*%/M1:YSohI,hl<ES2+AOtmm[!!96uGEbm:]8""gP+;= + 8i$<J,eI!#Ftc<pcn+hf\?5T:%k(#M69*i0`@\Uo>ai8IgE;3J%V@uHL'%M->]5,.rZ7A1, + il!1HN=5+g/qiP&j3<n\4"R>E_^1O@#,RX3IEK:?2od_@6FZ+8>qfi/^3W5O\pW^`QF+5O\ + pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\p + W^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW + ^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF[3.LM[nE6;Mr_V&GVSD'd!n/7&!["$eIlo:-+ + !s2Oj3M&75HjL#Q1'cTOu*#]`08.^6bC0Tr&L6r[bIGK:VAEln,$VXCF?[]r1VRIe";cj,N + ZLZQONl'b2^fmcg`dnB9GI^#W#W]nOiHuIlR5=T1;+DM#Kn!lb)-.A8%uWY$kA_;O=OX:G, + 5Q>]Q628nlGNlaqOBI=/6n9$Zm_T6H1edcdN#U6]cp/Gc\K,!R5MIt-bXbhbS_r^S+RrA") + .S3@A\n;EYe2T0Olh!_HDQ@Je[p4_X`#3Q+FbGr^r;g4">hlb]2]CgAPgKO:;H=lf0i3+oL + \7;C0QN,LTG%7k`\_4cU*^B;^P?jGJ04_/aF&-A<3gb*[E;F#-h)`4Kk5NnNX1s\lRa^QnX + -^jZs&7RB(5=L'6s!J1\Thi<;J&QGQ`Rs+hCHRgo<K_kpLO$f]^Wl!`/DSNR?_L0Wg]q;Rj + pEu2cmJ4[WgNqi.c<rUR`t8d/,en?:Un9:.3Ib]"=A1RIl*Pm!-P?rFu->U`GQP_-70=hV: + cm#?RL$a_=c1WkY)&bC\(E+,>9gCf0sOdY$64LrF/UYO)OIPA?=s85;]B;8S%($d@g'8#+P + ge(s%P"OXiQG2@X?]*/lHN3o_'+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qf + i/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi + /ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ + ahQ+8>qfi/ah9eXq7KpG)UQ\e.@0XGC/u,Y/]#kR%^8(TQ&Y-MV)GZS[.e.PiWl+0*MV3#V + Yio$!F._A3\*be!cK1u_G/jNj:dCHRbCi",`_bt+PRqjksp,32jAHY[C92gR;9+4!o?Xs1> + 52lA!X=a!M_RO4$O/^:C+9a:F;.:&./=-H_8:fLP(aGF4PC0G?joo4q8DT6j0HO&.3\jH-a + +ofLqZe:I-1>G4aIKuF@F9WaAX[0"%f%b&P8,qX<=")Ubngi1TQ#"R2Pr4j>c?673[4Sf1> + 2!/=*Cb@s@"r;WAg-L(m,/tZ.FP!WV3tD;^7ee5cB$bRo*.F*T2O*6_N0_#e]lXgWg]rVN( + o$:"94\-h+(iO6pGoNWuq7j5O\mk2>@9'i"%/Ln-As.+&(2B&,^uCR&IhCp]H"";1h+&#QA + ,*#(PPAr4tc1rkKWNK8CNEJNrW/'/fOeJ)ChaC@DK-^`Q8"i",a:5FACc+8>qf0N!Hen-Ar + #U'?,*&,a73%K=-bpk+DAr..*%#88ui"+T5>->N#TrkKULeDLl8JNoO#_&oNP.BY=Y58a+0 + WRDq0r..'LB(fb\?Dr"@Ird:P__;M:0Wb$I(CafkR/~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.pdf b/testfiles/cli_tests/testcases/export-dpi_expected.pdf Binary files differnew file mode 100644 index 0000000..82c6045 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.png b/testfiles/cli_tests/testcases/export-dpi_expected.png Binary files differnew file mode 100644 index 0000000..cf1781e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.png diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.ps b/testfiles/cli_tests/testcases/export-dpi_expected.ps new file mode 100644 index 0000000..a92caa7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.ps @@ -0,0 +1,319 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Thu Mar 5 09:46:34 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 61x32mm 173 90 0 () () +%%BoundingBox: 0 0 173 90 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 61x32mm +%%PageBoundingBox: 0 0 173 90 +173 90 cairo_set_page_size +%%EndPageSetup +q 0 0 173 90 rectclip +1 0 0 -1 0 90 cm q +0.9 0.950196 0.9 rg +90 45 m 90 69.852 69.852 90 45 90 c 20.148 90 0 69.852 0 45 c 0 20.148 +20.148 0 45 0 c 69.852 0 90 20.148 90 45 c h +90 45 m f +0 0.501961 0 rg +82.5 45 m 82.5 65.711 65.711 82.5 45 82.5 c 24.289 82.5 7.5 65.711 7.5 +45 c 7.5 24.289 24.289 7.5 45 7.5 c 65.711 7.5 82.5 24.289 82.5 45 c h +82.5 45 m f +Q q +81 0 92 90 re W n +q +81 0 92 90 re W n +% Fallback Image: x=81 y=0 w=92 h=90 res=300ppi size=432000 +[ 92.16 0 0 -90 81 90 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 384 + /Height 375 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 384 0 0 -375 0 375 ] +>> +cairo_image + Gb"0WGB=Pn\c6Z%%44*ud^u(.KMYC`,R3VR5&gnFp9BgFm_na4)sko\Vu^)(,`76nLgk[36 + P9Z$5sk2j#t_(uHIo<C='AUOT=',4?f,*"dQFl8m`p9Qo03*25K7:uo:#,]GP1ps)pAtn\Y + Zj9V2:hY?EZ0L37ZO1d%<c'U*9]K6@GOsVr<u?bKJN!1X"80Po*+Cl7/0df9R?pNV1QhVBu + s4qOcUga+up)0fD8Iit%tDBo*=K"o<gUD(\&4<^V0edo:+?ou3^3ZSH$YTu"Ob#QA,4B9_X + VN>;7Valj8d58Y[Ur..*%#:"!A&,^uC(f:Bbi",b%L`6$jJ)Ci,eA*1$"+N#!#6)C[pk'/9 + n-As.+,m.L5O\pW?pkJ%JNrW/,AQ-Ir..'L;$2=+&,a8")YaDai"&<,^`W=RIk[T$rkKWNK + +U!1#QDL\N2V:ln-Ar#6k0'F5O\n&C>]X#JNjuK"+T5>r5"1-p]H$(%n>'U4DH$&RNFCCUJ + %AZ^8AogM?k[i'UuSi@73U.K$8?#o!iE*$?QHqo!S9>L6B]jb)4m[<co/>rHF^qM'-E9hue + JqHlgBaNQmIF;jpcTF$ir5(&.P[<g4QHZ`CF=[CiNGZ`:@[.an*g=/8'^GfYr3;R.k=BRND + S&bX?dRi9Q;hW?.[F9Kum!(P-#d@c-=<H"fp0WT&hc)Ju[/ko(i:#Y`;m(nOC'49YqqV_=) + d^s^Bhjo120<SS$[<g)O24R^;?SO3EhYbarbSHaToP+)uba+c)Z6=P3en\JQ&j84R'@jq`_ + /YpRR+rNjRVGQR^4`'b-!+&E6q<o>(I))PMnUD&CZP%VDpgH?1"I;M.^SQ0ga@]@*DJT+pW + d(H6ur1nmLQrN89Fe,r4i8[:3q#8AWb/"$2S15cn&56Zf["d>o:/7g&-s-KIZ5[8l0N]'#3 + OMl=n],;U-T1?-L#Rj]:QQ)Bu^Y>p9$md*r&FCi6>sTBrTEUs^Mkr7Q;GCl%/d^A%;l4*t# + "?V,ce=rF_gH/ruIA9RHYB!d@t'XihNK$X\e0!01jFEb@V`lU*Soh='WVE_1s[$otmQ9VM; + +8B?("+T5>r..),#6)C[p]H"6%K(cAn-ArK)YaDai",_t2=LkM^`W=rC>]X#JNrWoeA*1$" + +T6iW.@2&#QDL\;$2=+&,^uCU'CV4+8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN,AQ-Ir. + .*%8(><rp]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNrW/reMKf"+T5>r"1flpd> + )Ic%%Vf3LTX!WA<qWo:YFNZfB0JacHW!%WL-KBCG*nWsK>8891c*<deuUM`Dr%jok8_R57' + Lro10$bSGpcr9D^3*`kMS=4Ea>#qB*OhhfX8cI:pDpYVr!QCbh#e54l!#M5S[q")B4l-](# + Kc(o,Y-G.@[TZn5j]#`i8M*TK;/kPrd4JCQ[g4(j)h%gs!i1#r^ur9>/R:Q$pmfg=aCS#i0 + )>:d`ugr9Flq^[Jj,SA4EkZKX4]eF=%'1CFEs'kS22P5=N;Z.7j9`6__]/tAQ38TW\q?;\X + Wp[;klp=bq#8%6sl1e1%MDMRN&X,>$Zc@PG-BC^[utWH<<R)"K/3"W3mGnrr(@(s)mI2SEN + #)*&)ZFcfg^D?C'@`h_B5+JaNUFW!@:9,P5(3n*S\q?QZa@IGO`TUOs!K*'@cd&8"/_p<tG + k;r61(`c(SM7WQ9#o4uK'`mNh(LH7^Q3O].#*S5J1Q)>4*S=O*;/(4$2H*d_65K>4%5?:qb + +n2PuX,.roqF:G>P.SPE_*ej4aGe1Tk?%TGpn.P/l>P*4Bl:$@fO8+(L3jGtT%@pBK)(!uo + jQEUe[t^EmehC@p?:bpPFJRbJ+rpqGePla@kafH*ePg7:7/J:g=4qW3PE#ieb,9[X5[,`/o + Qm-k0'5W'0T:;;[F"1F9Gc>_4UF[>jJ"sP77HG/%la^(39--=\e-8c`K=Eo$8]_9M6L?j*\ + n0+X=WiE2"TL;tlJea[(%<,<C.MH8-XrBKc(Keea/c::,hGkVmMXmcd+N1\-;:0WsrKP1pV + aAa@mKUrUBqLE(fl.ag.W%K'qd^`W=RJ)HBdJNrW/rkKUQ"+T5>r..),#6)C[p]H"6%K(cA + n-ArK)YaDai",_t2=LkM^`W=rC>]X#JNrWoeA*1$"+T6iW.@2&#QDL\;$2=+&,^uCU'CV4+ + 8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN,AQ-Ir..*%8(><rp]H$(O/RUon-As.+&N,ii" + ,a:5GAA]^`W=RImf9$rb,lsIj['92#LcAVt6>>=%07fbK7Nsj7GR3GKS]c^[]4T=T4973Kf + Dq4Fa:1mK7"iB9N:jf)f<K*]RGGXo<-qfr.YBX5[-B,D*@0h1klPI`Q53%hW>e10)h(<159 + sO^L,+DOsBZE@1>e-X&efO'M[>@t1-t&@4)T@tsCg3m;@V-TZj)"!'=<k5BL/X_%MQ3XDEO + H49?]`+bnA^i;Qu?JY;>YBKl%dk:fP\ba0XQT,eZ==;3N`]B8LF;$M"^0N)!q^(tm.l0a-r + ]Z';]8s;'dE"OCbG1BW``d!H.VWuCHKr&&I=Y=e-B?B&h];XN#=gu9o\n1.l)LX#FC0/tAm + Lt>53qk-Z]<g%3He;2SXhh5UDLJ19/h=,cD:?Vb<''sgut<(-O3>BPAjIU-C7gNaZ7@#qVU + oue/.8tjDi>mk#U&6df!I;709*>mn^4&\?VlmGn>9!Bs+?M.O$\.I+ER<d5fSnU,W!ns)2N + iSAAq%Tp\."r\I_-nF,qo3Bc!9Ti5UEcHMl"GXdh;Jf)2B6kH7K:0f8OB9)U*3PoQbj@CtN + ineWg!s.Bmm3&t4Qe)&hn0u^#d!_<\N]*f0[_ceX.6!PWqM',p3W7(Xq@f&3ZS?dd>@5/<q + a8-]o\SR$I_PdDoROaW&I2S[I!h1DO'IUA0$[airj4S*qp82%7hJ%M)rWqh]^L)+$-ge*0o + hElgSc\&jQ^cffcNh!dW#`uJ)Ck8JNjdEeK;r`A<M<Op]H$(&,_PDht^2c.$a]W*W1IQn-A + r3r1U.UWo+EcJNrWoLd.-/6-@sPn-As.+8EbJVo2CUiM0$7#QDL\pqui]WiW=U5O\pW^`Oa + !:o"-iJNrW/rWr%l6snB9pVPi!r..*%7kT9>X[rnMi",a:5=5;4cmKIb&,^uCn4-f7b)Bm7 + $iGQ?n-AsjnGZ6Aoel4DrkKWN,K(\(4Wao\5O\pW^`Q5Ee"/4(^`W=RJ)HA6r1QXcp]H$(& + ,[%!:RRoXm=-eeJNrW/r`I76Vg^96rkKWN"+Mlb:Plf]NVDGk&,^uCnAfSK'Y!m">2^"iJN + rYEUAhOi?G)6ommLbW7V,)0MUfX+`&PDXi9cqfB6&=unG>Rs%#$q>k0G](r*kmLf:N@u'Bg + ]`NcjLN,IZRZ#2^B6o'F+iBE"_C[dHq6?1jEZ0f0`+NCH[?-<!rF<_,8qhrL`;W-&p.]t*U + VG7VF2Bu[t,1@DmZIk9stJ,c(Bhep7tMdH!mf3Z?@2p?'i=J)j60<AH/Bg&@O(Y7r_[Y&J? + g""cG1931RN97U2Rb8pt5D?\c%TVCgs*mTs24Ec;^.JPd"^qqZk(V#`*4D6`BAoJr^A%<WW + o!^)rAb=++4/9/>:2FS`tNo]U\6(Q3m+;bO#R%4Q%2r5"AG5h96q9M-[p=46b4M7:-HkdGf + oPl"kVr^2:NS42)]OM$=s!3Brq6IrmWgTOg.:cVgMd!E*Db4TNUkRk&X^HG0.,,Bg&osi,= + lUkL)/H1>JOV?W3p%d5m-jiq/c4F*-T>8$GSaP:$-#PT29LhE1YlRFF#?+.VD62#6@cJua! + U1@`b]oYUP]07fSW+6-.n%/ph2jNiG)"e8cpTr/qY55j"0Sp,JZ)*&`LKO7ZVrQ3uYdrRb- + oHRPQO?]8Tq2Th%aSS8;61F(7<>[7E&,]:>nAi]MU$,VlrkKUE#(N`3TC4Fai",`_;Xha'r + V?F*#l_U],mAd7_Op;R#_PA27nLN=S+)2JBPN&^n4-p'+'\95]!`OV^`S76Ir*)rU7.gRjs + Kj*J!:ZFYn_be)H.+CJNla6rn*;s`APX,#R5e:O(*]*2WPB[CbW^JpnO57O)=\kAgi9rn4, + 4L+5?@aW2<*eVh75'7iB,bS+EOG?NP`8O"u;O2WmkRFmd/)L[YQJ-m8:pF8k6"jWp*:_&rH + IJDcJ?qK'@.3rFOn$4-X`U-FK[M<U;in-AsFHLSsErOH-[(]M2l>7^_cW'=ATY&\t!4o@Us + &H&e1J#JU;'UCst+gZf50+;(+Bkd@jl$K;Ni/\iTZ,^DHa)BtuJB;&G%\*DWQ$S>:Z/fDPf + mi2Tr`&&+BG.K/?+F*[1SZ]m=rOMt?L!$3ro`(p\XXFi/t<h>[>/OY5,pf:qR5h,"+TYg=o + @OHdVZYcGZk/Cn=(Q20g9)Z*hGq2Qt%Sc3$#S[kXti>]#Hd7^i6;.eMK*?aQnmVVod?KE2" + R&QR*_F3c[(A.!706h"f1c&rOqn<Q2"FhYAp>b9ZA<J6)r%%.<K7R<]QFSK'm"OqO=7IFYF + \2q:ROCXgX,?UfLT4E<H[-"iPIh@;(oPSVa_E6?Yll0J"q`Zt2)k>/6=Qg[^JBbD:V"Ap?, + +[hEFU3!%fa))m^20,553)2lg5kfhO!mke?)>leKU=6<TWcoPo5+H9q5JhccZA<(aT)Fle4 + V@%l[>Xt)fB%(J-PT_c=h-aE;bfsV-RLcabN1=N]LUAdPnX']_P>S@M%A-8eW]p)"jCW<T5 + cX`F&N9mnoQdorh1Ml,N00=kMVCdJ##5Z_&oJ?i/^-Q:*cH^5KKFK56CeGp':kPOCEf+@f; + GY#R5d?@Y-gRrAjQ/'`:7?)uL<6:[85ti=E6?i/^uiW3[#\_B3<\_&qY8"Jl==+(V"[+6!3 + h8End=nF-Z3-MSh@T8pVn%tB[MJj7iE:M>&&r'>KCr36HU3qP$er'?2Hr`Fe;a-)M"+(U/C + +)CA$MTCU(5KM]55OJ(j[63!6rj;\q5k#"--MZ%bJ+haTCJfRV5<'+%OM(gIg?HquK)T=YI + uYluLHil:Jj8Ypk9jJ`@SqX/s!])cK+o!sBr=2A3'J"H)f8H%_U??[&$i7o:](*1N-/\-P? + aE$39fprr+Y=1_.%HC%oPr=q@g^<B2R<Uh7%Q3XZnV&biGsW%c0E@9;'=K/Ep8)7`86;P]L + P;gnp4j,KKV?j#"Sr!rP>nqelESqGVDt>^HnR)ZG$#k=a,RjYT24I_a3Y&q*?C2NO%Jp>;R + qWh6k0C3ci?d`^)Qo+O('D-"WV*h-AcS)6rTV\XM=E,!8=6(W^`lkmV(V&_5^;"Yr4Z#;'( + 'qIJ54$VWIV&Q<b:0m^sqp.5Yj5#@VEdD6q)\+S4\_>iGMDS)-'rb2U<O/fXW/EYPV>F2"p + 4nqdo^qdO]WZ\Zh!f$i?+4u/5.c'4kJ3^-s!aihgP9lpm1+W-^fp\F7fN%$lhA\UGMYOQ2Q + ,1$^:kb:"$NY<rHV6=^dA%!'@]^*2IG=rL-Ic&m<GWq]5R/(`?212ORQfQLDDR;It#*"f,J + 3Xk#>Qg5CYcf2iIO=p$,TQKBsu\dij31G`T)-59>Y&n-@WBn>AYQFEZqs^$rVpr,GAKK0RG + +Jj1:HLY?rrTB6!EG$a&4Iup3(Ilcl@g.Q35lAsOS0DL1d,l#hcJ,X]jNu%D$qpk*'#MD]< + Vka6Mo,hUBIlnB-i=E5Xi(llAl/pDGV(BT+r]Kj*0_g87'E%*n5?)0*UuhMO-`Gu7ZBO4-" + Fmjeh/56&<:MI5KBslY,Jg"KiCbcccVr_QLHe<a_&j!_]Qa-6Mu(or[nu#o;G?RMJj0qI-X + ,#l[_IM'Iun,k58*mVp5=ITn'AGCgY`UJLZ"3rJ*9>5>B8>9rj;V9+S^R''E"!N%i(ZJDE3 + 4#rWj)56&H!J8FpKGm9Q%LVsTNF_&oJ?i/]^E2F_VlS3Llj((U+l'GLD,k0MhE\X)ibm>iC + ,+/G:^O#2@cE;U64o>``F(&f>&#l[BdkKWsD>0`bK56=RY/.#YbIuj_`5LTIln.EV-p>=OC + \,!"K?1T7l*h.HTST&lJhgn!_CbkkYc@L2rqYDd=<k\Nne,T"%V<oo^QR-i(,3X((j`Qp@X + cHfge6EYleVWS3[dDeWfcd^!H1W&gFYK^0[_D6<Y5\ZTOP'?_mrim@gs`[o[(pBS"/g167E + *EJQ!)X?.HN"KP0/q;C+Ck#:G91`')[U8`3$__[QXV+No02H`U0pI]t/>ea=R+=P`]5M9\h + l)e_RELRc$-@<r@6oq:YYApFYRSVTYI_ng>:R+GD*$qT"'_Tb?o//Efklr'>K<r/p,;6tQT + "JNnr.r/p-fRFF$Yo>fsu$iE<a&H%[Qc\VlSi",`Obi"O=Ih!bFJj8`00nV^=r7Q:4TB5uj + NcTq>a<#ptdejE]'``aA%q5`mV"q@g`_O_QitUYZIulerJ#)m-%_s1]K:'IsC&Y%EeaNhC+ + D1+5RQmC#T(!!a+D1+5RQpTC&,\`ki/]^Er,;C8d%=G8KBsfW,L)joGPC+qGPHfX_&mCj*5 + $dJErP"gccAk55LTHirnod6JNnr.r/p+P^Ae[m&3oq7c(FLLE6J'0huA>q,krV/TD6'Dp]H + !W1\`32T?b`Qn!2b9TKi5MccA;%58*nYWTr.[HogO'p:ik9P$J"=ec$@P[L\MY&,-#ikWb5 + MrM/HP^]*s<IjXqd_#C8$#;POtrD+a8o>\L'Yl?f_6-Nm3a0,,cs6/**QLi-ShXsJ8[/.-( + X:4D:pk+5)J#)lr-Y/8!r)(G6i"*,Ki/]^EejlpQS3LltDX[na6h!U75CPQi/E`'T5n/=*4 + Tp81q%K2<C,pe!YIMIlA.QKuC&Zm;\n*mO4;0m:&$guKNs't/Wr$rRT+:\'mHQV)KBscV,J + g!lIcE!Ec]2d&i"*,Ki/\"jAfR7J;1H6^Hc$q9&&B=or[\I^BMj8&hK\%8TA^;Y;Xd2.5Ft + q=/a#pa+$P?B84gW>$3#T@%'uHgDXhRlp^mEI,mAcZl;(LEY">H]QLi-Ad0'@j3skn.e=Y, + PUF"jIIXg)Nn.5F_8dbQ>e=Ve^GPIZr*V-,q&-'EeUnlpE8,ZR*[E>6CG[9om5KHTO599DE + n4oWFrFt:NO22p6Yi&<4r1TH-YoqG7rj;Wn2rG3E=R`4UrX@U;<#RsfoV_(p^;D%gYi&<4r + ;"fu5?ZL.X]N!K+(RUPT+:\'-%:b@rRlXB48_D<'E%*V5NafJ1&]c>[n6-L:KoXD^E\Lu6a + dNimb/]\+G%YucT;Bg@JXKaqsQL8r3\chj%oK[l^t]3Wd*'(F%^KD]BT(>!cJ;rNEA6_EtA + Ah$0rZY]N0Nn\THk"rq':dT5eNK/V,mpZ2Y8g(l)@5DL,kTVppT'9<<X,^Q<8rS49DJ.SVs + Ks59UJLE>3TUgjuS&Pqdlc6YenPkV-H^>h4JoURtgI:-^.cMS,"4#qg6,UGMMHE2AdEU,uA + 9!3qbNtL4nQChC\=i=sC(5=ErI=$1;Tep,CcRDYVVm"^qma"t^?SVLN/k\BuFSJDTOiJ6%) + FVnq:G!nP`q?Y'B^a=^Hm`m%j>Ue7q]PZd"@f:2iPVapWoqHo,JQA8jg)s=S<eg]TneO]@p + ))l!N5jaHqX6U0'aL,rBon@-i"FE*njA=[TqYjIuj_pe"?5:IhnY^Cpj8hUC%6up@o;h)$t + eS>m5`3l-E^4rmdbB*)AcT*dllV;H!"^Sc8EAoXCb`V]VF`5KM]55OJ(jW?fT[re.)&^`R* + *_4PoIPH2s9W'B5O_r2-3\)<<)piA:VBKPa85=eA^+)CB/e:U]h#MEPT`u=kirssV;%oQ<p + `u=l4aG>@2a:<he_Yn3K-\(%b;HWEY\3FV(cbLW5T>;W.re.,'_&m3[_&or]*)/I4RF/1@I + DI#$]\niQIld5I48_AO$iYtTVaKpc_]P\Yi/^ui3qU]Zr':YtrWr/Z7.Q1piWF[lP(Gn"r< + Z4,L-NbNK0KG9OmqiDIuohF5GJ(<p@&68OHP2[UAU/In3oe/7$Bj1]LInT):+0;)5tRS4%N + o>mD$Q<FoS!cc@,5.`93Z7rnNXP+%tt86[J8#8M3YRrQJ^9`t$F.SsN8iDQG<o2.l"g!ef$ + eJ16+6#1En*`OQ@4pk,A2VdEeRhnF!0HDu4Mg,Woeq%^7>iq-s'VgIn#-%?9pKq.^VnumNM + FbS%sC5R&3EtU;9=7WNL.(k[>R3=/A<YL]5oL[CWo0VSZ=qnDYC>`(&GP"c*iC#%Y=6Ha43 + +*h.qhit<bhEmRTpn\6o2_7X'.<QLOPC\F0f'?b4Ipfp`.J_nBPiiuT30]IV`3jCea"0C)S + V>VjRK,t-S[9:8hNi`WlgJ?ko-!33[]0tU9fb;OnR8u9^h6"PBloekLT*IQfjul5B`>Drqp + HYO!a]tS/a5.P5cfLNUn1b_3#6pdR2<US`+Z7ji$i/l_[.8U#*SdZ+87srOJAHQ'O-EJ*<` + #*B\[WfKr>+_jAO+NuJ#MA$Ypj5EURoX$?%pI\/5"=or\)SoXa4_6pk/3[R%t"L;WhmM+Q@ + N">hP<YG>8;1I"DdbkZ6Z1[%9/c'N?ru)+apk,Xnpg]6]gb62KJ)H@hJj6^-:O7:Ir..'># + l`JH5K,M!R?a30#Q?+opg\CEBPY$F#Q?+rpg[P-PT!0YY6KL7O"u;O[cJ%uLVY)-UR9u#%J + `qu.r'@Z!e9-h@Y-g&jH$H=pZU!Lp]H!['E#*YIi=dpi=Gi`;Xh_-r2H]uC2%C55O_07_&l + nOVnTDWrkKV0"b1@*T*f'sbI7S'i/a%Q5;qI2rH7$/r)$eia85``1R,<Fs+*E(7nLN=lhBS + S`=Mlt57.et=LgZXL@UZ!%K(cA8dbQ"\Ncr\'E!DG8e(c%ZTm?\mId+N<6=:KK$X[kaId0t + ds>ip_=XXDli&u+nAi8+_&m=]r]:ek-BKAar?b-SXRFg9O1ZR)((>\a[.nA.L]/FtP$OX'W + M$+2ls\QEd.p>[0&a/gEnTc*?LP#]h-]!1dfB+CF;Bu[SXhet'7NZLp=Iik/)>DO\TIf?VB + <PcnB-uG.8tC]O&f(!*rV0QMP.=!:8^uch'fpESbqjil\jM)<F+-b&(:$I`R&!H2B"TDRS9 + MRBR4@e_f/?eZ7^NIl)Qc;^%q*4G<*o-39+Z+J(EG`4$C_@UK_JGa3OU9?^m@;^V"BB?=^2 + Xc<\%AFntk,T9&I_1#-QSjG%ph)s];'h8OLUU,R$pHZ?1>26T,Z?;>VQVsLGMEaq,3':RVG + rN/_BG^l<\+8Jji=Nde[WEu@MSBF$=+o;>=3),o1[):W'hO]";-7=-3*kGip&(_l9<5"[8T + -(ijHLTnj6iCK701L5J)X0C_El8bWHo]2-]#;-=a#Qe1A+W7*Rsmd`7JXNB:7>olV6Q3IBO + QreJ$^QiP7Adt5L&l3g>'c.aJc0g:9h@7oKVcGYM]3TU#0p;n*k[G.tg.\k0MEA6V$NSq*R + dto#DonJIHOUFctP"R#Sg=Hja]sBaM_7DX3Rq[d?kITqo5q)?.Dnp]H"pG^oAYqDJfbJ)Ck + 8JNjq@Vp&9:kaT$[^$l:+^`W>]+b/bqle4N.r..*%#Q@iB+8RX?l9X>=r..*%`tJA.[QOL% + 8+6c_^`W=r]0G#\-beaRJ)Ck8JNoIlVpnO8YeV@U"+T7T&+@hCJ*[Sni",a:5F1f:4[4+E5 + O\pW^`V8.0n7pQd1\b3%"I1Gr..(uo>fKkm*J&V&,^uCn4+7D.V^IpH4]iRJ)Ck8Oi8CK^L + @KJ^`W=RJ,'#MrB4*S"+T5>r3;>J&tZbo&,^uCn;$I.M8#dbV$[.:+8>qfIX$?5!6GIs5O\ + pW^`Nm3MGJA#2<Q+O#QDL\p`j3NJ%\rG^ZY9cJNrW/rkKT^6iJo!2_YadVa$SSIq!G-aIhA + Xs6Ybt1H<WA1fMEmG<.a+Jj1"sLqisb(T/n8clGKqO:beD,Y.impDZmU+W98Vj!_GId2QWd + -au.gCAj:gLAQIZN;N(6cTH\3q]_r]R`j!]cG)I9]+9pL_!.V(*t@f[7]VlilFs@6h+.-@V + e;WEj<iJV_:k&\ETko??K>uVh>!!!*\l5ilkl?LOrM)UoOS!DF:rK*]QmH2-HQj,!Oi.*qs + P(^<kJBl>U.F!c.$:(W3*#"X5p'6Bl=dD4IL4F-oHfZBNjU9O^J%VfH:-6i\/O>S><bHBuZ + !i@+NPmQb%)WFeA)+](;[E;uXq$%an_?rrp^b#($d@1rt(V/NK[4:45"h<DL<_rMqdlf5/% + 2M6h,e;k0%UJm2,U;G((a9"FSW8s?Q\Z5T2Ol.4'PnlskW16:'T#GEM2dR.*>j()gWgb62[ + Q6$h30S35&B%6+EeUKaXf8i^W/A5!EkgH+]3Sdd`2fe*&iSMKLHh?dihN&Nd6ruOdSuSC[T + 8ZVLg^!aflVCjZI$)kc*\U1sR/Hg;f3d;0RcL@7R8,c\3k/O:-U8rT8l0B>[QV;J4gQUoUG + >2W%kAaal11:3Rtr2!D/>f?N02;UlFL^SLm,P=J$7oSX^7Cl37F)LWq39)p%"/Bs569PRJl + Yfq.&7n=Gd%(&kF'n4C=K:5O#R=s3D6O)ko9iYGfPSagib.DS*>/XWf?lb%umpdOWd(=q1C + DcbLXt"+T6iW.@2&#QDL\;$2=+&,^uCU'CV4+8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN + ,AQ-Ir..*%8(><rp]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNrW/reMKf"+T5>r + "1gU#QDL\p`jP3&,^uCn42!D+8>qfi/agf5O\pW^`QDUJ)Ck8JNok5rkKWN"+N^u/H4-Xe] + [&M86X*foWt(5AXltMIc[2_s7u+2s3?H,)Ws%sR+F"n7!`1Wkm4D;0XIeXG6kJQlM`Gc]7C + -`_&e4VqG/A"VX9ekBklSU%5AgW'&6aP>pZs+I`p<C>KIrs54GI;,M2c^bMI_=?a!6T9d2h + H1EnhbaL\VDi]>NJP;AhMRM@YpEkpb`5,2KYH!,/tI)jSG#'g[skV8/4*FXK=JDP1Wq=San + e(:]T1HGfhn^=k4Qjq_,jHmK-q<%Z8hq7s`jF4H(2j@7BP@pVfq\==sdIPEF\ek(tZ+2$3> + 1f<$dR!.:la1e<Ai6HS[.:SnKf<odhe#l1qs1k$qqpo#F_d?9DXR)/meau60:#$Zj0\a>nt + k;<l&kJ-BE$#3>b)ZdO4g&]3OHl_*4OTIeqK;dN7628UQLt,i>LUuke_8o1S%IY/tWpNF?a + >+FGRXZm;(cc7l<.@l4(`;,H'7Mg0AK48m+c$Gq--6.49qEKD,jrg372eRYtr^?!+Ka8p[N + kXT%eGQZGOVc4/nN13Z%JJgFhuQn8YN[/SL"cRYUT$1=>=in]48K&\\-0tB$/U3!&cN`&5Y + M7uB(L6=<%=]7slo:opoP7uM!5OcbR&)DR(-9VsZa]NK*Y0'Kl9/c75bNi9YZ2Jn@'1%dCE + ::U!4*q9qPu0%l&RVo$RN45S(*:]^LWj*F[[>abd"Ph4r6"&WLH7`G8JSEiPBqr`\Wh/l)6 + I5dOCEVm-PDB(/kgXr"VZ;Qg=O+^p]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNr + W/reMKf"+T5>r"1gU#QDL\p`jP3&,^uCn42!D+8>qfi/agf5O\pW^`QDUJ)Ck8JNok5rkKW + N"+N]Jr..*%#QBMtp]H$(&,["sn-As.+8@'qi",a:5O_1m^`W=RJ)HBdJNrW/rkKUQ"+T5> + r..),#6)C[p]H"6NOASG<15(b5KUt>h:]:;c@3kI6$mM<+[&joX]TRLH:6-NaQ9a[Ae@>1J + nNC;RC=Sd&[MWa$eATgkC1C_JH[FQbH>L+\GfaW^.=[j0sLR)W[WNa2EGmS_o.>1D5b^Yc6 + 5=lPWdrh>+U$qjlD!)#<84A*4g?M'O#]ph3n^e33Bm(Q3a4]bC\(EbSHgVr)rf-ba+i+\hS + Nk[]A.FYBY).:N2Y3ruERbRqLT-a&!tjf(BOq+8B?X_fq&oDIKj;,$.cG<Dcst@:WAU/C1K + EcIVQdcH`H88ukMCQX5gRYi6h@h!3\3RR1Ti\cT!*CMYgG)@XiYR[[J%[5>?LF.sn8^&fuH + 5BI[KhLh3C=^=s5;e':51[0c+`C9VI:3;.UI3Ca_jQZ6FC%LPgB9oaG0@?+celFPG-Jj^k7 + _2aP2ficj6C0p2:L9")&)G<;=[hZBoqVgK]"\n!r!I0GEj`IUb_U!)psIOt/a\pj)9N51d_ + jRF@R`9spk,i+JNrW/ra8,'r..*%#:"!A&,^uC(f:Bbi",b%L`6$jJ)Ci,eA*1$"+N#!#6) + C[pk'/9n-As.+,m.L5O\pW?pkJ%JNrW/,AQ-Ir..'L;$2=+&,a8")YaDai"&<,^`W=RIk[T + $rkKWNK+U!1#QDL\N2V:ln-Ar#6k0'F5O\n&C>]X#JNjuK"+T5>r5"1-Abr12,(DH")B&M4 + iracbehbn;:JJNJruL\P3X0IiO@H/,Q`&$MfB"e5JkGY]k0;:u&OFE+,M#(;2ua=Q<)sJ~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-height_expected.png b/testfiles/cli_tests/testcases/export-height_expected.png Binary files differnew file mode 100644 index 0000000..e6ab7ed --- /dev/null +++ b/testfiles/cli_tests/testcases/export-height_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_expected.emf b/testfiles/cli_tests/testcases/export-id_expected.emf Binary files differnew file mode 100644 index 0000000..3c8ff73 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_expected.eps b/testfiles/cli_tests/testcases/export-id_expected.eps new file mode 100644 index 0000000..0dd5840 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Tue Mar 31 01:06:36 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 75 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 rectfill +1 g +18.75 18.75 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_expected.pdf b/testfiles/cli_tests/testcases/export-id_expected.pdf Binary files differnew file mode 100644 index 0000000..ba9a322 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_expected.png b/testfiles/cli_tests/testcases/export-id_expected.png Binary files differnew file mode 100644 index 0000000..5ebc531 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_expected.ps b/testfiles/cli_tests/testcases/export-id_expected.ps new file mode 100644 index 0000000..c7cb7a2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Tue Mar 31 01:07:13 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 26x26mm 75 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 26x26mm +%%PageBoundingBox: 0 0 75 75 +75 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 rectfill +1 g +18.75 18.75 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_expected.svg b/testfiles/cli_tests/testcases/export-id_expected.svg new file mode 100644 index 0000000..6dfe9e7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="100" + width="100"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="red" + fill="#ff0000" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="green" + fill="#008000" + height="100" + width="100" + y="0" + x="200" /> + <rect + id="blue" + fill="#0000ff" + height="100" + width="100" + y="100" + x="100" /> + <rect + id="yellow" + fill="#ffff00" + height="100" + width="100" + y="200" + x="0" /> + <rect + id="purple" + fill="#800080" + height="100" + width="100" + y="200" + x="200" /> + <rect + id="red-cover" + fill="#ffffff" + height="50" + width="50" + y="25" + x="25" /> + <rect + id="green-cover" + fill="#ffffff" + height="50" + width="50" + y="25" + x="225" /> + <rect + id="blue-cover" + fill="#ffffff" + height="50" + width="50" + y="125" + x="125" /> + <rect + id="yellow-cover" + fill="#ffffff" + height="50" + width="50" + y="225" + x="25" /> + <rect + id="purple-cover" + fill="#ffffff" + height="50" + width="50" + y="225" + x="225" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_expected.wmf b/testfiles/cli_tests/testcases/export-id_expected.wmf Binary files differnew file mode 100644 index 0000000..fba7d63 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf Binary files differnew file mode 100644 index 0000000..d34b0d4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps new file mode 100644 index 0000000..1f84f07 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Wed Apr 1 00:39:29 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 75 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +0 0 1 rg +0 0 75 75 rectfill +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf Binary files differnew file mode 100644 index 0000000..2febd2a --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png Binary files differnew file mode 100644 index 0000000..3e0ef96 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps new file mode 100644 index 0000000..0947232 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Wed Apr 1 00:39:28 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 26x26mm 75 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 26x26mm +%%PageBoundingBox: 0 0 75 75 +75 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +0 0 1 rg +0 0 75 75 rectfill +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg new file mode 100644 index 0000000..138e29c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="100" + width="100"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="blue" + fill="#0000ff" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf Binary files differnew file mode 100644 index 0000000..25ff1b5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf Binary files differnew file mode 100644 index 0000000..e571242 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps new file mode 100644 index 0000000..ba306eb --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 4 19:16:30 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 225 225 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 225 225 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 225 cm q +1 1 0 rg +0 150 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..36dd312 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png Binary files differnew file mode 100644 index 0000000..d27c855 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps new file mode 100644 index 0000000..fc92a46 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 4 19:16:22 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 79x79mm 225 225 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 79x79mm +%%PageBoundingBox: 0 0 75 75 +225 225 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 225 cm q +1 1 0 rg +0 150 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg new file mode 100644 index 0000000..d0cd190 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="300" + width="300"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="yellow" + fill="#ffff00" + height="100" + width="100" + y="200" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..9d55069 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf Binary files differnew file mode 100644 index 0000000..c27c0c6 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps new file mode 100644 index 0000000..8a8bf40 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 4 18:19:47 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 300 300 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 300 300 +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 300 cm q +1 1 0 rg +37.5 187.5 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf Binary files differnew file mode 100644 index 0000000..b3220d8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png Binary files differnew file mode 100644 index 0000000..906dc81 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps new file mode 100644 index 0000000..b2ab92e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 4 18:19:46 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 106x106mm 300 300 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 106x106mm +%%PageBoundingBox: 37 37 113 113 +300 300 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 300 cm q +1 1 0 rg +37.5 187.5 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg new file mode 100644 index 0000000..ed5eb1c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="400" + width="400"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="yellow" + fill="yellow" + height="100" + width="100" + y="250" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf Binary files differnew file mode 100644 index 0000000..7b55707 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf Binary files differnew file mode 100644 index 0000000..44df006 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps b/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps new file mode 100644 index 0000000..c73abd7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:45 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +0 0 1 rg +0 0 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf Binary files differnew file mode 100644 index 0000000..5638e26 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.png b/testfiles/cli_tests/testcases/export-ignore-filters_expected.png Binary files differnew file mode 100644 index 0000000..944611f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.png diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps b/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps new file mode 100644 index 0000000..22eb9dc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:45 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x26mm 150 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x26mm +%%PageBoundingBox: 0 0 75 75 +150 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +0 0 1 rg +0 0 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg b/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg new file mode 100644 index 0000000..a409973 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="offset2.svg" + id="svg6" + version="1.1" + height="100" + width="200"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + id="namedview8" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="rect2" + fill="red" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="rect4" + fill="blue" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf Binary files differnew file mode 100644 index 0000000..3d64bdf --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf Binary files differnew file mode 100644 index 0000000..9e23657 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps new file mode 100644 index 0000000..3029a52 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:06 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 150 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 150 +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +37.5 37.5 37.5 75 re f +1 0 0 rg +75 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..0535214 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png Binary files differnew file mode 100644 index 0000000..de4aeba --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps new file mode 100644 index 0000000..025c45c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:05 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +37.5 37.5 37.5 75 re f +1 0 0 rg +75 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg new file mode 100644 index 0000000..e22c4ef --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="200"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="50" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..d37195f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_export-area_expected.png b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png Binary files differnew file mode 100644 index 0000000..2e53613 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf Binary files differnew file mode 100644 index 0000000..3802d6d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps new file mode 100644 index 0000000..6f5f368 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Fri Mar 20 20:03:34 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 150 +%%EndPageSetup +q 0 37 75 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +0 37.5 37.5 75 re f +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf Binary files differnew file mode 100644 index 0000000..3f2adf7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png Binary files differnew file mode 100644 index 0000000..d044884 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps new file mode 100644 index 0000000..47be99f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Fri Mar 20 20:03:12 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x53mm 113 150 0 () () +%%BoundingBox: 0 37 75 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x53mm +%%PageBoundingBox: 0 37 75 113 +113 150 cairo_set_page_size +%%EndPageSetup +q 0 37 75 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +0 37.5 37.5 75 re f +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg new file mode 100644 index 0000000..76e4eb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="150"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="0" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf Binary files differnew file mode 100644 index 0000000..407efb7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf Binary files differnew file mode 100644 index 0000000..5dbda47 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps new file mode 100644 index 0000000..b9ac1df --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:02 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 150 +%%EndPageSetup +q 37 37 38 76 rectclip +1 0 0 -1 0 150 cm q +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf Binary files differnew file mode 100644 index 0000000..736e623 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png Binary files differnew file mode 100644 index 0000000..a63f9c4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps new file mode 100644 index 0000000..1512864 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:01 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x53mm 113 150 0 () () +%%BoundingBox: 37 37 75 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x53mm +%%PageBoundingBox: 37 37 75 113 +113 150 cairo_set_page_size +%%EndPageSetup +q 37 37 38 76 rectclip +1 0 0 -1 0 150 cm q +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg new file mode 100644 index 0000000..0d1c2ac --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="150"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf Binary files differnew file mode 100644 index 0000000..169b86d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf Binary files differnew file mode 100644 index 0000000..78c3182 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps new file mode 100644 index 0000000..fba673e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:54 2020 +%%Pages: 1 +%%BoundingBox: 0 0 851 851 +%%HiResBoundingBox: 0 0 851 851 +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 851 851 +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf Binary files differnew file mode 100644 index 0000000..f4c472c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_expected.png Binary files differnew file mode 100644 index 0000000..9c22341 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps new file mode 100644 index 0000000..abb8818 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 300x300mm 850 850 0 () () +%%BoundingBox: 283 284 567 568 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 300x300mm +%%PageBoundingBox: 283 284 567 568 +851 851 cairo_set_page_size +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg new file mode 100644 index 0000000..424e8f8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm.svg" + id="svg4" + version="1.1" + height="300mm" + width="300mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100mm" + width="50mm" + y="377.95276" + x="377.95276" /> + <rect + id="square-red" + fill="#ff0000" + height="100mm" + width="50mm" + y="377.95276" + x="566.92914" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf Binary files differnew file mode 100644 index 0000000..0131399 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf Binary files differnew file mode 100644 index 0000000..e0130bf --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps new file mode 100644 index 0000000..7975c1d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:14:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 567 567 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 567 567 +%%EndPageSetup +q 141 141 285 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +141.73 141.73 141.734 283.465 re f +1 0 0 rg +283.465 141.73 141.73 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..a463c55 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png Binary files differnew file mode 100644 index 0000000..84fd7bc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps new file mode 100644 index 0000000..d43e2b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:14:19 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 200x200mm 567 567 0 () () +%%BoundingBox: 141 141 426 426 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 200x200mm +%%PageBoundingBox: 141 141 426 426 +567 567 cairo_set_page_size +%%EndPageSetup +q 141 141 285 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +141.73 141.73 141.734 283.465 re f +1 0 0 rg +283.465 141.73 141.73 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg new file mode 100644 index 0000000..e7773cd --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm_viewbox.svg" + id="svg4" + version="1.1" + viewBox="0 0 200 200" + height="200mm" + width="200mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="50" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..f8c842d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf Binary files differnew file mode 100644 index 0000000..6315da5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps new file mode 100644 index 0000000..3d0d510 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:11:11 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 426 567 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 426 567 +%%EndPageSetup +q 0 141 284 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +0 141.73 141.73 283.465 re f +1 0 0 rg +141.73 141.73 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf Binary files differnew file mode 100644 index 0000000..f9914b4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png Binary files differnew file mode 100644 index 0000000..51a98e1 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps new file mode 100644 index 0000000..08192c1 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:11:23 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 150x200mm 425 567 0 () () +%%BoundingBox: 0 141 284 426 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 150x200mm +%%PageBoundingBox: 0 141 284 426 +426 567 cairo_set_page_size +%%EndPageSetup +q 0 141 284 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +0 141.73 141.73 283.465 re f +1 0 0 rg +141.73 141.73 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg new file mode 100644 index 0000000..6e39aa8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="150mm" + height="200mm" + viewBox="0 0 150 200" + version="1.1" + id="svg4" + sodipodi:docname="square_mm_viewbox.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:document-units="mm" + fit-margin-top="50" + fit-margin-left="50" + fit-margin-right="50" + fit-margin-bottom="50" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + x="0" + y="50" + width="50" + height="100" + fill="#0000ff" + id="square-blue" /> + <rect + x="50" + y="50" + width="50" + height="100" + fill="#ff0000" + id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf Binary files differnew file mode 100644 index 0000000..18179f4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf Binary files differnew file mode 100644 index 0000000..78c3182 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps new file mode 100644 index 0000000..fba673e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:54 2020 +%%Pages: 1 +%%BoundingBox: 0 0 851 851 +%%HiResBoundingBox: 0 0 851 851 +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 851 851 +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf Binary files differnew file mode 100644 index 0000000..f4c472c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png Binary files differnew file mode 100644 index 0000000..9c22341 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps new file mode 100644 index 0000000..abb8818 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 300x300mm 850 850 0 () () +%%BoundingBox: 283 284 567 568 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 300x300mm +%%PageBoundingBox: 283 284 567 568 +851 851 cairo_set_page_size +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg new file mode 100644 index 0000000..8274392 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm_viewbox.svg" + id="svg4" + version="1.1" + viewBox="0 0 300 300" + height="300mm" + width="300mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="100" + x="100" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="100" + x="150" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf Binary files differnew file mode 100644 index 0000000..0131399 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.emf b/testfiles/cli_tests/testcases/export-margin_px_expected.emf Binary files differnew file mode 100644 index 0000000..0d52e4d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.eps b/testfiles/cli_tests/testcases/export-margin_px_expected.eps new file mode 100644 index 0000000..dcc1bc0 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:50 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 225 225 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 225 225 +%%EndPageSetup +q 75 75 75 75 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +75 75 37.5 75 re f +1 0 0 rg +112.5 75 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.pdf b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf Binary files differnew file mode 100644 index 0000000..a467503 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.png b/testfiles/cli_tests/testcases/export-margin_px_expected.png Binary files differnew file mode 100644 index 0000000..a9ce6f9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.ps b/testfiles/cli_tests/testcases/export-margin_px_expected.ps new file mode 100644 index 0000000..c2fa5e8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:49 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 79x79mm 225 225 0 () () +%%BoundingBox: 75 75 150 150 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 79x79mm +%%PageBoundingBox: 75 75 150 150 +225 225 cairo_set_page_size +%%EndPageSetup +q 75 75 75 75 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +75 75 37.5 75 re f +1 0 0 rg +112.5 75 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.svg b/testfiles/cli_tests/testcases/export-margin_px_expected.svg new file mode 100644 index 0000000..b4ec04f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="300" + width="300"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="100" + x="100" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="100" + x="150" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.wmf b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf Binary files differnew file mode 100644 index 0000000..57bd577 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png Binary files differnew file mode 100644 index 0000000..3ee1468 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png Binary files differnew file mode 100644 index 0000000..0677fba --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png Binary files differnew file mode 100644 index 0000000..4798382 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps b/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps new file mode 100644 index 0000000..2d73ecc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps @@ -0,0 +1,2366 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Tue Apr 7 23:58:52 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +Q q +37 37 76 76 re W n +q +37 37 76 76 re W n +% Fallback Image: x=37 y=37 w=76 h=76 res=300ppi size=301467 +[ 76.08 0 0 -76.08 37 113.08 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 317 + /Height 317 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /LZWDecode filter + /ImageMatrix [ 317 0 0 -317 0 317 ] +>> +cairo_image + J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=A + lC^cenm@9:1mM9jRso`J%pXIp[&Fc7\i9+F>q_Zo0[n)-uXDNg4o:$d,(%f)pX3/TtG&W$Q + T]66[)]^DV?&8gI$,1h,H=-%FK?m\aM@62%@_rEaU;53ZEs2iM!b934Jd6L>JW5BPkta%C\ + ]A:tn"3j8H5MCXCeb2Qi3te=j85D(T$&UTU;t-uA`!3eko6d+OXA?LiinTsAo"2FS(96Xrs + F]W)naRmUW2fMja>;MMu\YNTce)Y^l$J$189\f0nX6X8!i'K*Q5D=70`f!I<2%;/%2IOJtM + )T%51^Zl\B!@VMoL/o^6>)$$CC)KpCPn8P%;lF7a.\W*,)+^HcC)KGN-tNfRTp,m%58,GUn + qKo<AE&><W+=Cf)5$!4L.j"+]Q0^/ar)\&P):,)+\7Ca,b^AN)'GW8nm[>D-tI(I7S7D5(F + pnE;MIT<A3u#<bN]rRTocT)L-d;!*7COB8f7](O9uj)3@JD0lCj9=)#6<CA(lZ#-tCDS4=F + ^Q$U^QHZA(E=A#1*;NbTElToLT>iCd)Spth^(ar&j+NKjR"25k"_L,@EF(su>3@lf?#-t=` + ]10/-,`hA>k_M0brC)Fa[Ms;.lTo5of\RR$sh3+Ii8f4mI-t:&J/#Zp_L+9-2V6b$2igPTN + -t81QTo'0oStV"`(n5YRL\R71M/!llTnt_&L*S0V3eekdGNo)NW+$s*+fJi_L*5F>(kA<8p + gSt"@Hn\UTneLBG+j[`(itZb@E(@%L?]UmOXOY<L)MIKRYD\.@?+QYTAbBV(T:bcC8$?](g + *JcC)BsCBF"<1TnNgj:8*?p6A?,O@3UF<l2$89&L_&sLb>CD)>jI_Rc4(F++"4%I;=V`\9r + (I^=05+g>VA#*h)'NXr^fE\9R=pL:DHnLN`Qt*P14_XrViIeZKoT7_!PULH`4hCPOPfXrNn + ha0$CciPVf<*9ObLl\>,CDX3&?9<K4[iO,g-3oR?H)Z>E#CMS[-\8#f6T6%.R>2c6Z)B.S, + iG40k\7Y&]B"2F<L0'kI)*6`=Xr.#oNU(A70">A+L*!j5CPEA;Xr&)9J$'UAiHt65L$#mNl + \3p">jI*al`M$"iGG_5]&@?&Rc(MfK#t/'(:Yn<4'WNfE*"p5>1Wpf>SV3LXpV&9.U(c/CP + &,e[D>Pg"Y3glNGqb&_*n[!i1Xq<JZ]=Q\0mts>SF5Y:,TjGf*'Q-'/8[R$&5r9g>J94JlX + &&_'mn<Rp6S#E(Ipe\0N!NO)'>-XpEUg,9ja)&T)JU28KpW"@QX5JfV!"B"0!fi.Plt%Q1Z + 1"P3ba>S%?`5K?7'+.D,9COu#Y#I_,`U\e:,/T<g0_!]eV["rLKeZK-H\/a5\Ebg6G8[Z@l + f)pA)%F&iMai:h0)W5CHJZ5dVR7c'56X1&eE&0Aeb1?_@Y\SfLXp-5_(g>j*QS!/0[D9H,! + pa)!NGpJn7^s5&i)siH@BKcZRb%VI>RITP.Q,#=f)h2hCOnpW"U;IMg>G_r/T<&E^mN^T>? + hJ5WNHAi\.T_<7r*YnXoqnmf)d1%#]4N(28Fi/Rc$GHJGlVQk-tq*i&m\bE#l@%FOpQ:>R( + s7XoijW%@Z34COjg8"$/Kp!L$am/T;Oa^gB[%i%Aeq[B9SN\-hJI>Qmi@'Xb_Qf)[s<"Ou\ + =!`lf;)W2iUJ;U&.^d?WR"'brqE"=hA4&_U+*,C(AXoYE0#&:bT!tB2W[D4?F!39?+Q&2XE + 2RimYi"9aT6FF5:*nLC5>QLsG"uX14?(0[YCOd_6!/@ualhaoec#<`l^^/Nl*JeK]$*F7Gl + 4I4A6#2,GY;RShf\7ohD.EOP&,+^AgN`a9,Q506p?QF^]6S=3r-u37rnp<DK-0LqJ%0Ltib + c;cENVIHO7snago16nj8I2_pGP7kmDsA:L!dJOroo48W?:Q0J%F)km"bJC+7@L*]4(^,#Q) + *F0(Ig]#DbV$)#niurT"L`PX"#4s*<5<kWL;lp':KH+7Elm]ts^BL\p!Omu%4\8'LfO@/kX + fL%i=uk5E?tp)ibaJ%r>O!!iE$+7KPc^d7u$L\qFr0Id8lkTL*7r"C1A=F\/<rs"8V*6'[Y + &4.d:$4$JV+7Q4Y_SQ6[L\rjI0Zk;$BQ4OpX?D@/"sT-'Ld0lYs+r0C-P-!@5N74nMF7@m& + ,<4jil5Aa;0"<Z+o`BLr+$o>R"*,,ru-[jCsFcH3(GC`5NA^BNs#AE&,>oaj7*)1)@Ac$8I + Zl.9T,%=5"Ndms!7pJQW$ds:Cm7^5NMnFPXGFJ&,AqtV*q>KP.Fd,q-lSMT`:=qr`g!0FfV + A"^6fQ@@h8Bm5NY62R7$sc&,Dd"VM*BdP?Mf6q6E6Ii;]:arbrDD`NuHfk+*0iJ'P>!4,<b + '+7mR'cUIjsa8G`ToB^tQdJlH*4TV3t(5'u=s$DM>%3P4)J'el.7/+A0U@`&WdII6,L]&A< + oSo6dJcA<^r@/o]Y^b*[s%GD#18^;iS5[9(:<3;s+8#V`e0_(j8,Yq"od#%:Z2[`mrD2N47 + ]FpAZ9RWis/TZ/Y)iFn5O/UTXF0<=ep>eL8,[6Got5e+&cZ+VrH04ThkeqnpKq_Bs0)V)_2 + nI#5O:B0Yruj@f\7KY>2*=)m=*7P<ldM[0`Pu*Em<;76YPj=VmPjLJ%)-Nh^r]H[MI$>>AJ + 4r*+8ed_u7Y\l[*Sg*Q>P_-KM`=rof.7Uq-4\l!6r`lgE$M]9dj5?7Wt_8,L%CmfrDjHe3U + _IIY$qc015_VE`q>q7da:s'Q6=JM8>1+7G_L^75pi?Z?$o"9&$+pZ[?ML(qMNpC-#>3JXjD + ,/d;/J&'J3"3:<O`AjV.@dIN^Z'6=Pn:Z;.1&hQ"c8`k3q]KE#Kac$"2';>CJ&@e?rSd8GL + ]dW"AF,c-/>e8?XNIWMbA=c5m)$sp[NF_E+6^G_m**^JfZhXuc:m;YiVni\rf1gacKt8NXT + $Qu#1.&g+6a+Skml)p<0;b2Ohq$[!WJ6V*mr4XP9KphD(O,;1=L)$e*T>a+o[a8rfs2VQ0h + 8pX]!\d>1N"HQ_FDFiVo2frg7P=eu`uED0jh$I[VGZRUQ2aV7P<]NnH"Mfr^k!l,m;VVV8/ + NgC:OENP(k-^>(10T8EX)+o\-#rh+iATY^W$%GopcjPGm_h[T(L_>^21rhDdYUQ,91c33'_ + 9&T+GiD(6Kc62*RAnXpf+6mn+mO[Bn39//;j6f75$C%NIT]KV]W^6WaJc;[p@--fgk,rUb/ + p?DmbTH,s+6qA>/qE/GN9Lh:l&M.762n'=riaVCl7T+%m]u.r[]tD_Z,Q^J!ZGiI-F0esCa + &fEmaCK<3jZ!ED?f0>b>9;KkjHac[EDhDB*`Is'Xo7bn1P"8X+%PH&9A(5F3Be&X-iH.S@T + 4\Fba56$afM<DKfm9+7DJe:Ir/Lde)^cH"W__Jc>>G?M5oA^JANiVnROp$6S_YpQ'^<C_le + !LA7s4_Fu6N8,0t12#6>BJLj84n#6*/Ykq*n`D='t-p#@VrqoR5r6Na19Q^5H>)"S_+7J.e + :[%f!G5hu:s,<Dgn,S;=Wljf<MJ0#J/ArY"(BL`]bm_u$8C!2Cg<O.,!t[<lN:P:K5*'CRO + =^_[n4NoR;NWY6d;WF>Y\,XDC=82b0X,_bBhm.Yrs00i#`t"pm8"$;DO53J+7Pg.&>]_nDV + "<[R;&8F!WNOh]aP4MfZf<_M8#KsTHE[OSDjI<0\J?<gn#tWg^rQ%9uu,7d+o9+&!6`$%H- + (T#,2GQh]`"3&JYn?*8h;-&h6H1c4L]3>,Enr+7V7dU&LqZ4Q=X@'M<u<&PD+Z8EA&mj\Ae + jd:!ec@cfC[X3/5ZNd)Z9G8IN5kY?gK9'!.4nEHYH)%i,ONi))]T!6BPl[f'SOfShnYT].9 + lqYYAdCgM-2!pMV*32LJn^?i@<:9'T*TmSI.r-2E!4QkP\$>RGdJ16!r:.&onk5Z!LK,J?Y + 4FJa+\TQnO$:4[7_J:=Gk*>u&h`j8m.LhW,KI8=$j.bNEkq-i_(np)YDC$`O\0Y%_XEsdnn + >r3D#.s?qWpuSFMT?k?RRSE`imP)n'audPfN?^rToF@Cl\McVZ/=Cs/_hC#a$W6#>]BObEB + Uk0GM`m*6cjVN3^mVo%*s0lN:tl/kGRdN<(ZY8C5^[d1Z6YOBi&%AC:o10Q:pXXY2Bq3AE4 + :e51nLOH3Bt,h8)-$*@bG/SPR"AM^H61[qj*:qkSG9ilC4fooDF%AbrLW7o^4gN.-?F)MPj + b7=,gh/N5HYle/cL>K7p&FK3(D>Oq<[5lM?&s^-k:)c6V1u`S^iitdSo=X+i^o5XWjKV]"P + Kr9p@cd46X-;?%'B'a&I2C1[53h)k/sAM>Np6)"l8/XJPR0V&VX)X4lk-\mCFqk'1@7^n*/ + <8hb=N]g2"%DFml!<M$YLMXksTFm[uUu/nb0JTq]GH4n`uY7G$uMoX!%%K+X_%KEZ7M%6G1 + W;B<ir!dOc[XK_<OVp/[.tli/4c7nIWB_%2$0nl3HON5?36Io9cKnn*DmCF8\`qQ*Bf/5[e + 90.7He9WuIUcd'QDP(dqC.C@n0/<'S0O\Tqt:=&r9/?)Ec\;E&SbL44'0Gr$<+`MJKc*GkO + PnaBPm/sg8/o:J=ZL:\19[N9/;Y'cb9c[030eeS?<%10h',=KNK%+ase?^?bZR7N9>m]n2$ + >jQ7M3BaE6!!KdfPn`0E5nBR;`/]K%98*?22IgpB\Tk0T,!VM;"$?FfamK+3(b2NPDrbn'& + Sfihp\$i;kI:CU8;q/3jm!AQ-273cTA.V47Q$-2;:6U='dUfjj@^ho@i?Uh``pj(QNt^(\' + ^"O$?S=?u_@p&Y";-#3us2@<&=5nZoH"*F^NQm1^ofB%^Yc04Qgo[5L$4Q9@UY@mgh**c^R + XdIM=B;.W^,AW)mddKO4s@(LGjo*_s<bI_Bt4M6u(7s95LX4^#3<?gukBX0[G1ll?-PA+hB + Bsa@DoUbhYV'W=/C=K?&<jKWO[e`ZhCXg%6'Z"TZ>ATA9`g4qEp<u_of#P5QrQL+9']Eq/j + N13iacHC[o!<6cYA\6bDm0g)'$"rhb`$ZRE7GP?%-_b3)0(o]c]oXV;XH+r.5.#>"g&XH2_ + pQJ2cK;UF3QRa&:Dtd7o]4U<B!\'=&TEb@s+&FFk(&H%<Zhj[+I<Q=#Y$LpN"qgG7<l6GLK + sRf7Ma9LCPoP2\>?e'q5_XQT,Q\H1e._/bOF4Z$NgcHL;#b/eNGJ(ONDBi`ErX;*O"VaQ%K + h'XuHMEDkllf&`7Q??b:5Y%_54EBY'!Ie2p.ec1,B"+RJEJ+a8#2@f$'',jWXJG'q50#Fo[ + +WIp1*&]=!.m[YTiuJ``A$Og.'L-+b6Y'tTA@,!?oM2nq;Xnc)n]r@IcRD=AB1@,PG'7dnp + 2btO+\.<G8(N5^(50E1M+Eql8B^m%%rW^k952gNIC,[oQDf9MSGAPFJ2Xf.<k4*nF\D:OK! + r]nG0>flMbOhGKf7UYQJIMjTh[A@DOB0.f\]I5V,(4UM>$a@f)8DRa)Em@E-2N4FUnPZf.G + Sj/h$0cpE*9l,1*eH;R\.'=WK0k+YYi3dWm9_WBYIs7s$aK0ssk6$"nAq=`mk;1DOCUBodE + pCNau+1j*r,$+G+YI<V)p2;)mW[tRr9M-1XRgj+B.D:P"RT6Z]sH-PMu&Ik-aP?Ti1U_g:? + \Y>oZ\Qh),Ra\O2'=asLb?\2q?(&N7fu788aZVNFX&\P9<UkNuH[aN@IhhnF[K.5OpHR:25 + V!"H(^XVRqa!%S+`nZr<$&?p-"<)f@bMKIH5@S_)hT%M[JD*9Zpg^ommPesUKC*_OoM3-?U + a-TUe`We)GPrI;20*37oCQ'g0F;-K;MO*8@X5Jpk>V$8#LTmVlUbm<242MVeW:`CANh*HB. + hWD'q6V-]bg;n%U8+M/<lcrE?B&ZC*08j!m`b:70j4k`'Kl"g"f1XRHa=qU[9`$'1P6O4r\ + IRd#o[m*Al*">qL/P4_`-!E1cT;jer9cuH<"0sOQ%0f'\hP91)M,meWA1A>!/:p%'#ZSV2A + G10*k%?\"obr&F(%=)o`]2K1UM[l4^=a>S,1OWF?Jt\Tl&@79T(TBE7+h-th\1SH)EA9M<Y + 7nIQ'K_WqN^5d1_`Y2*4Vup;H``i#Z(5srS\)M)mY@AgM-sKP5P>Q!q=VE]q*=Wk5uo"WH3 + kPa-QGn9Jkk97==kPX4/*QNU0'JuQp7>?6F[k%nPiSCqEH*M)hj_NL!MWPmlM\U+(p`_V7: + TCpidr"H`!0Z^NbA(e<Piq9hF&e`>X<HHA0>JT)%/O96ulC[_o)s\#L:W.!3]^f%$eQaf?9 + '.Fd6)2Wp'alRMgrXE`h,S=NIF'?W<-!]^&YPnT67hbguROP9;g'(:rdrK3VjOnCX;R4$65 + Fj61CZ+T%;gEVq%-^7O]<V&"hq_OL!2jJGO<te.6>=4]\8!]?A=?B;:>n^?0j]O_cGnBLk> + A'=gV:)cP[p:e9gO5LeJJ,X^>[*3;S!)ep:L.s9\bFXc;-R@*eJ=XX(A7:2F6R&BiOg&i]M + nX=RI@f6WP&n=5dV,S'H)I+iIRPbJ_TF@$U*1m0^`5AU!E>Gp-eBI"b[BsgU:/QS\`-g6en + 1RB"T>ZP]<O*fu"if_cgOp1l!<:BAW?HpDrq)O+F5$V'Xt"q/U&FfVPPaW@&Cl-[l]IHuVi + KV8o/Oa*`A2]!]V.1*?FRX;m>E*0i%#c&TB_Nq1)K3no^3e)^66!o?q[YW^1=+U!2/O_k\/ + *c7&l,NgpMYrOEZ&+`Turb6sMTB:qQSd8q[).81iN"F#40gQ4%6Nh-0?\0)eL"IPh#[<J.$ + W'16&?u?gbFjQ&+]\kJJe[-s.Ei?u"=QPBn3V7)#Yfma+G@6J.[L8`_$LZ>4:mJT,1W?>80 + JHK6@oban3R6hIfpiZ#I$MUWX(\<%\SHA+QDPe)o2a*6*(W3"<$*iK.%k^#V^i<nF/_c&6f + 8Q5m;N>+K>\rJdNWPGT`J7";8NRO?jit7APM@@"JY,IL%!H#BfN$j:F6Q%7((XL`g.4(P2g + `JQO$nLBIq"!`2.@&0]8L"5n^n+>sK6Jcbf<5ZA:."9_!jrWjVb#R,e\+Fl[M&-W1:eVLF/ + Qd=pg&3o(!8*gi`"F\&++nU@.-mA)3*q22rHQ\*D#^RVKRL"1*80QuE*XEqGJfW4l#^2kr@ + L.+LLJeD"`5j+KJfNttb^ph>H3eO6LDgG<+GU:0E(<GB^4I<F+hE7EOr=UCTSCl#CnQO"#] + %Q'+fp86W$/*k)KNCpBcr.f#\Y?8I)(=Oa<@"()2KH%Jf.Kj#\9T_63q(oL,A+G(oSU6Jf& + /EKRt$sq?UIOL&)'^+GK1oJes4dG(LN$+``/N'Uf;3TS9ZW>+gSG3._oZ+_60?-m<"sTS7[ + t=!333#Z`(%?!r7!80Ll_'aPsY>bHd+#Z@=L+p_&=Kb]Dq'IY+iJeR>k4_C@?l3L--K\?]+ + +GA"DJeJD5/qO_W+Y.N)KVA`DTS/I68DQf[+G(3h+WQ(GW$*%)TS-JS73I7U#Xi%@+V')8a + <:nB&;VJ7KV3u2#XG&9!XM$M80Ih^&#^WGJe)N;oo>\tap:*PK=V=MAB5nYJe!SZk(4(6+Q + Ji^K7X@fTS%7j2WmURfRaQG+pNXlkTU^jTniIaJ"d2E-)RDmZ7q:\kh5rr+6`h*OWWg2rf_ + ->6<'6t#PqbVVFUJrJ#:9_E.=ciH?c&1$6fDBTB\01U`\l!rhaVVEhKB]MS]:mTBai'Xrls + !rigCc'$.C2$Xs%BTBgLr\0(%!rjm0oZLGO\MuipmTBm0h_B8,!rkrs';]*P18,FK[ZA8<. + J$TCW1k2j&q`N4^9elXqTC"rDeK=0ermr7ZLS3<YNO*_V[jV&tJ%*JqJ:G(!qhagPc9miZ+ + 7<kBkTB5TrotTnZ2X*=:=H`A4@f:cJ%UR6b^Z48rd(4DloiD)qS717IF$"75@aWjO7WAS&. + /M)W$HkcJc:8Aq@+P14Fa%:re05;'gh+q%Zg6A5LB3*6mMXBO7Z%/d6'0Q.'48[&cR^oqD0 + 5We:465rf0MF4,@SC+/BU.5LL\S8E9XoO7\`&dV/YPnPL^21ocj3qH+j(Ck&;/rg1\%@>no + [18]0ARn*<k+6gFfV\/oua80q=C#(nL[/-FcqLB[Q%"G3Qrh7C/M3)I(7]>u(V+:BH+6m*\ + WKI1Wa82?iC4/pY2,6Bd0`P,trDepO>!LP^s&Ln;=fYP?Y/gCM+6rKJX7?1n8,C+FlP<[*F + cs&]GlLparFh8bVE`Y1s'"I]Cs6J![oW@c+7"`4Y#52/a85$Bl`P!*e_[r?ReIoifRL)erk + ?GLr?(A)Ej-;`_,rc,+7(D*YgNHfa86GjlqVl3<\DBogE.O(G^m"2rlE.W,p2KFK!L\Cb?9 + 0J+7.'uZVg_Ha87k=m-]b;epbtL,=<V"/;B8W-I^$2'd)LAJ!$%qeCqN;CMe3t[IR3[a]SQ + hXd-1ML=FrsF)Z""oRE(pr_Qh*F`/l!^:3h8;oe]2+6?1GPueCQ>YBupY!'gk1&b<Gq.Cf2 + V9:l#1?RBXT6',LJ!Z;s?H;kiFO$0$]!kl/h0Fo#jtqRTpM0(9_n(&Pq;=@;5!R9ts"nX3i + k1VDo3QdkH7$jcRo00%hRh?c:N>he#K6Ct3<(u`r8kYJcMHF6msZq7q44eiG=VJdIkTd[5N + i+JTFpQ5kInbT(_Hf,;>NM5!XTD0"@(6Us$4q;$UL^O#GD8EKLf3pTn32tTgU8^E4-S#(hX + 9);#`t:r>.hgE=X5b5_r8M+sZ(GO9bVKM,>TH`;$)AiiH-P6iAJFoW8nge6\(GMD@Xha?S- + -s%NUo2+G++)l&(,Nfh^O&+oKYe):7%dI'.fklDp&,_T$IrC7Ck+@"A?Migmu84b6Z,o$F[ + <($U^8Z=KnAGi-cEgBV(62n!AqRDf2W`Mh"AM#48[TN_2AInI%0.#DgQno4]b^#5X#Q!:!l + [i`mae:PgUt2!X\::[_rk+$_oUE1-E)%k(3N"Y7+7'PgY[ROJ-Z&.@'?YVsC$`foq\UFABR + d;/q`cJ4!hbbrK/0/"b6Rns+7-k!d)mM"W219(bkQ[p!X2'76Ukc!.AeraSOk7f-u,kbQ') + bL8_X7FVDQSe[V!cZ$)oj2D8^qQl@Dd$]6C3M,c8'Ps&,k.:9"dE_ppNR=BpCVWtfBP<Tc! + rlNqP`Y(2#QC=-4cA#FGA]Y^&&?pEtRG-;D/gK1^6Ak_O,+8,oTfN4+'lp7[0VT%d1q]02u + PLt3t<8X2ZMYP6jS$TPOoY-e_FO$l=IY7XL>,td)T@L,-kH4iHqe9o!/\&8;f_esp*H.U1_ + 74\)$pff5K91[!KOb#E>mmJ9@859?8<FTR62u,rmGE[qlL?*0E/u1ks1K5Kp-cEWHdYec8e + G0ThcoPu@cUe/M0UgF;?)/c*X0@LZ8Q*djIN'Es2"J#$/o"^+#(Qd;,S*XiS6YRE?'q"R$g + Ytkpepf?7j.eDGB.;=K@^OVB>Tn*Fm2o.l$n9=A'Q:O8Oounk?``\M7hNA[O8ur_gn,>%^O + qZFUi_f,sg80P2lX2l?:]?]5&-O8R\#Z\ELke%7ZG"t;^Urd)nYq`msArLhgg.%oW#6ti\? + USr;FdOa@K;/uW4[)53R)K(TmRR'KP$W3_e:K%l(:tIR)0Pj_9Z>1(cXP7X#Vle7;[p=5Up + %H2#/deJc8u)B/6]B\u?-+SLat!;i2OViKWj80.[%/DL^ft^t@rNrdfdjVe2`Ssh8`$p[^` + FE2*\2LF96qY#HRrmr/;`[Okh`fEn$i_L+"GSY4+n*%Kcbr%/NN\[=o:7Ho!k`YXdT<n]8h + rPh4S66Xo"6RU>d<%PRq>i+T%HWC(d\,'=jMB3N<oV]'UZHmifT@&Yl!C$_]47,Hk8r\k+/ + .=t)LIqBEfS,1EP)j/Y5Y!$aQ,,>//,X0<h,YqU2[Y`_,QZp-WU5eCeA,WcP_9+jWS]-N<I + 0iCZLE_O+@<BLUc4<#696QN"%`>/!a-(Dq1,$_E??+d.N4M"uab:'5d.]-_&(GjH%,;,k:0 + W*S[`LGF+)qQlLFL-:9Z^b>b\p;!44K$@dVqXJV/)_lqi\W]LZs&0jHtPWXM8"=/W67l5j6 + IUEO.'76^=na=P*Eu`;ju07[9N2NOg1mmF>]2g[A-qjC7guiTuW'tS)[kjWhl4(Vjo8IMVD + [M>Q61paf=UJ[ZIu,UME+UZ^i#BSL\T:)fN1o#V2n-X3?G[6/B"KG!O3d*[8KmlZo(3HFLO + !/:$N^S<Go%m^N@M6!DPU1=/U>KV*=>\83'88c,W+S2d5B\?m;/WWPQ`"M"@Q3=I)SRc,Bh + j%;t/T^.lRCaUi]'/#fS3MI<MZ^a@nmNK129&#u3qk1M?0J?$D05RpT;CFS9VaF)R,0KjWC + T=-;X2Bhr,=;PX;m2C;Ye(l<0S2D@U-1S869A\d6lQX^6P1SB\s1+E]?E`!@SAM0a?0N#4; + 5S"WuRs/*mDgHV2N@+HquLQ>r#C,4L/BX_p(V3.Ag<"c!/PlS'f3%0;d2QVW63ne(23[>Vg + ,;1Q$?=Z%kK[h*qc8Vpdl.j5?==iP$jS1eNHYC5+o\Rm(oW7[m&Le8#sQla6;$RY5Rmlu0W + 6X?R&Y2,dPr4'2fIoZ(2/a(`(SHhYR=pm]b.W^4G@]DKXlr5[L08*[,pN.=.rJNsp$*7TTk + +je;("NXgOaD'0qHFY&TM*R;_5bZuKZG/>&G=^b=NB@_C";"-:l,b1`8Mh)%g_;<WJ@Hkk3 + &p*;KUG,jRNJW#6+!.J_>_:!fcVQ461gf\PTZW6#G@#"augok9I-:d-*CI<3IId9OUjdKWk + tj<Trb?4bcSb9*l@45\eCg])l+*'1<Vd9b=X;.>W']@2PU+.YPL%JS2nco3m5)nbKC*b[(\ + og^I.Y/,Q,A3g-\Ob6HhPZbXtCL>83m?a$b$j7"S3&P8_(Q_b@tdQ/kY5jA&D>>YP>t9b^G + O"B%"%be3#e4Sa"dACj7jCe]jjc(%q]Wc64p2((fJ7F^0_jPM>Di%r5t:)m]f/7QmcJBgeT + -q*2eAEQF(kU;DS1noq(XD5JNlpenZ7apa"j&*P[NkY^:588,W%!+WiF?`'u^J^W1X'A/I? + &C0.8#,oVX'rc\@g^G/5NI;io4L;rBT$\Y^at,b4)D]2D@?r/5]hfYK5s5EahY!9^q>Vt'T + Ko`Nkjo@5l/I/Z[BkFILY'Ga\3Dj=n5.#(<Lq?T4Ae@.u$$2S%+RM_9AIdh&SK(N_0Hs_As + dl1QoU@"[Z1c6=cu;,cF%_WBua`6DEg,]:DRCSro6i9(Xc0![C>P0hWcI,'5UoPGYpE[Q9g + .6Zfh*Kf6Nt3]cdi9>iqceN5iL5.aBP9FO21*C%/p6T^u79N4GSAOJW@8!QJ5ba_8KW`.-S + 9?bURV0l"C'?<4od(H&c73'ap/CUIieAY,3`EHroCG&U[e&@O$(W>&s[+nZFfgXZLQt5*nr + 8?,[hSpeu)$K"i7-.Goj@3qHRAB&dN9So/l*SuS[-R(d"`$U!;V'(]f%ff'>k6JLo:%l7WR + LQ:CL"W.F\e9G:SV=4ZXQGTGu*7B:[;UWqe*tjI8D5=:bun&6Z#A*JP^38:j[1IMfPlKKe) + Ku=EA]%jUPC`%p5lZfY%mLam@[6bJ@2>\1AFnD3@bEP;mED;5KO"h3KXNM`AqQdI!@E-(:t + >,<7O>g!\tKD4`hA.+3O;dZ(!3`M:khUnQV@Y9YdTH_WqK0Nt;->-k,1`A?5r0&#=b3kMLe + UTUgqZ7odn4"S+X6OVXY%6J@89Ja5a/\3Z(]K=oh]Cij:D8&tr_GlN1e='FfX!#@J9Y?Tdg + g*]\D,<@F;-]Aa-@JfJgX3\kff_ta>jF5[F4ealg,#SRZb,#+jPi?"6!\7m^*D[`CZRC,g9 + d@4^6IqaJr\EHm8g6L^>i*?<Ga1#n^d;55<SR>*;*A`>?<r]f1EVV>,/M&@7S4EWg.k0X(= + 2*J@:'6=5'pfX)(=*D6%f1X,CpU*/V-^K[?iTd(=Htc%o3LjA>-\5n+C7e.UEa'3O?13#*0 + 2%2L$c(G-mMd?BAP]p7!YQI3m760jNXm2nq8+?:1+8jefqbp6HJ,rofh=p68s<@BK4.oN.5 + _UYJ\c)+CnU!i>,deY:h$M_M-1:iE&>2;&>m5@#L3BH65>9,`Y/NUKh4hEhkgKd!ID*L+06 + 9CFM>Fe+8X[B_M7_@t'gY3W7V8'Z*9N7k*<40V+IDf+@`?k2s13?H"K?hG9;V\BQgq2"RK@ + EVlc;f;=<K#KubLt/-dT+98<R]dD'AlPBelE73<ZC'g>NF(Xg/_5.<b(@5UZs8^:.EE&W=) + R0#"r8D9NLI[5:]g7^#d:DSmHP].OJ(aX`n>Vll8Jq^[6AZNURq->!OrpA]=9^7U<fXK4Y# + VAek,DCNdMBGUu$i8IEILD2^$C!(g)4i#NQ7%W'7Udq7^+X`arkjd4nrR:esW/b>-<Ae!pP + %b^076@5*&VL-Ikm,uop0+J`>qX\-<0/%L$91&I<9rtPT*D;BqiV&,'DBQjAZf3TsU[BBq' + t<17OeckB`*L"7SsA<DQJ;#J`3[B:p+K,*+la$MZ<j*H1FQu1;6n2"c$dfGNhe$$3^pa/A& + bGpIQb[Se78KZ-iQD$:"Wu7YUFrg`g,=iDR<0`hWncG<l(hI]Q'p"9i![ZAG,(\@p?]h?#/ + QdANO:29`*pUrG3L#hX(:!r;g74Z#!G2cpdQQ?1b1PaBrcihgC==N/T:cqG>bf?cH[)"+3B + RII.5Pi!k`,*#:LldpP@V;2^2qX,-.TE+"<Vi0>?kVV,@cg0i0q+O1HhC?Aq&-LLL=kJ\m\ + bUbd:ib.s#>'$E*$`!,j)/)/g3d`eGQKW""*P063ds`CV[d2[+N)RHM;q?s_cL5HN5\Us!k + p$l1-BqJ)Pt[4(9VWP@I7\@#RH"0=4G6MCT))qLSm6We`C%sietHSpdURu2j-3_d%F=<V=m + CE>C5Y/m7]P#$X4@3NZmQ)nm:,AZA8;QEE2KqlG-e.0[+:hVW>;qfp#,?-\8_B:CSjj5<t] + ;fF)aY4AM4eap$0l2ld*iBWi!XQV0gPuI-a;lAZKTX]`dH@#&J^>neHf(Sm\V^,LFHS?aaM + 9B$OMf-t[o-nt+6+:Fk?UCi\+V=[+QOp'5XKf4Q*Ek:Ug`XW[40,%/osF)@LiIbi]VhTDGI + d[&h_[4:ddY&5hgmQWnhLHis7jjP:5oHc;81q.@^Y@rVKBU(R@UBU)+8D?QqgK*`UmNfDf- + .EDO`(':O[nkbt7H1?cod*.IAshTH<:>OYoklMKf2ut!;"^]Y@qT$7k+^C,UXa7XZUY%>"j + kf%dI9&nA)lBToj6\^@rQ;:p3#$=4k]=jZ"-esA7]EC^.<4hDK+D"h@c,u(#sKaE9-;SpI8 + !R<;9dWUN^nuGE$k6(%#RRA`\UGAX!5^9n)WgJ'_2Gluhu4j)F,Q$"a4mnhl/B7a'G5bfKM + &d/M>]I1^LYPO/g>m2mi]#:rH$e'Wp"o'I=cr1*.kQ['=5B//Lh5Ei5Kg<qTso4Hd!FX?G; + &EgM_mKKA,^4'Kl4`3,0F7pGa00k<n!WL`&2;k\cZjEc7C-\5,kS$Pkd=F+s9_c7,SH<E=R + ?/b#$'c]c113e3'-7:rQ,&ck-6rnQ!b"?]1M@F'"M]L@TM*u9$$cSX^m@kDbR&8]JM#eQBG + /l![&Lj,E$^_T@ffb6+A2DA\cf-d.j.Hr4:,!h<5=b1,sB*JVL^1(8k9ST"JWTFPV=Bd#sS + Je@3A.o&on,EJL7$]S9tVt!_^=lcm5c'"I+H_i(5=07md>K5`tO]F9rlf7Va,;\.U7oM1Hj + /YTu=;%0Al3OH:_0!X++++CI_G&c\$r5<t:6,NK.)!^1ZK8!jnJ"F#D;]<EN]#jDCN^lD59 + O.lbrJK*N:kRk;a!]E<'E$J<fe,"V6+@A0m1E]%7">W6@&B9808.`Xh$kRF^0;(Z&">6?6i + WLjN-kNb:$RcRjJI:o["=kT]WWXdo6CJ$+7ApclJI2YoSq.3qZ32MI6=L'DTL)V,JI*_9OF + []$&<)/GZ;LfL+@6tL+Ws)[VL]!Y&:T08a:NZK#EnW\*M>^H"<=(#`6No<kR_Q]#,i)HJHg + 1Y";r=JM?Fb=6%&BW"iq6YJH^i@=$e#q;?R],5sb\fTKtFVJHVn_8:^nW&4K885md`++@,c + +%j4.)7Y(Yt&2o(A8.[RX+@*dH$_Tbj":CeeV/ChcBFlG?![nU'?m%^\":$&7C'4_`5[B\, + !D!b7JH6#f%r*4P1'@ZO5U$=3gSbYdJH.H%MLXF54je?S#Pn:K+/feHJKK*!"FVC_aom)78 + %nVI*lnrYJKBUZk(+RU1'Dip7tLkfTLX/HJK:[$fRY&V&_)@P377qO+@eHqF!*t*7Y)P8&] + TAA8.i^i*#Wc"DkKSj"E'l%k&,_hBG%V&)^l=)J"YL.&;;9`Jc:Fsk`Pk%+6^!/N+sch30, + <k+o[UrkqW1%+6cZ%Q>A!j@$r?u_>]prl-]L%+6i=pTPc4lLncC+@K**ql>cg%+6o!fWc0G + nYcTFrqRV0X#PuAgXG?YrJ#s]Re@$sPOoDk_l_4<i+7$cB]cZS'7_^Vc'+BApVu%$TYt+[. + J$I&k+ke\FUFaY3m)f7P+7/Oscl_WkL=.p'6WDYZm:lRP+753ig)o^kVVF+)j*]f-mKrmP+ + 7:l_j<*ek`o];,K;@fTm]$3P+7@PUmN:lkk3tK/,L#g&mn*NP+6U.`T)nq=TGdAca5Hq-oC + bDpnGb`Ur;dH$#X?Zm'L<!R"sF$HK?*g$+6ZONTjdqT#Po?lW,W=l"@tc))#m"Ar=fe7<'S + c<s$b;f(aC;>NX,D>+6_p<UVZqjL\a8lW<jaoA<;u[qF_pp3.Ib*rfi37</RYX/1%+%Qj<I + p+6eT2VEt3LL\b\CWMqd&jPZR6qK!bCfRKfMrgnoAI#b3%5U[oe5L_+];$6bc&+pc(e8YFc + &fF7i74b<kqO&GjE.=kGrhp(uU*&Z`9<)Q"Wg.Q'<MTLp&+sHteY)qC_u3h4KljL5o"lL7" + FmL=riq7Ta<0^rJ#pb4Z^-3k>/U;RO7f_Af$OG$KDf^^Ktt3b,3bN=STV*_rk$5InK7)BCT + gb+^/sOu?\A<,O7iW>fGOWrU]#hjL(_AUCCqZT5_$$nrl%D)(E`!SJ$HQTa&r3^A>B*d&,& + a_fgu-SA,V^Sp0U.SM_etHjF=Lerm&R]4Wj%gJWP&25KHCq+_1G)[$Hg&)KS_i9h:8)niB" + Vq#;TkAZRc/]\"/:@O:(4R#gfM5KTs?D%3bZ2[8?uMAZ@AU\pmJnrhj6_gHCJ!Pp`>Y!:(M + s!qt1_mm/oj4oQVEb2>%QI5\9grl(+Nd8u4-V3J0q#<#mr5#tB;X7V8Z$($8g6j\pAOlQ_G + Ac[&49pQ0*[.@%k+$piOoB+P>KV6;60UO&W,>-$]-$2-J"-2@p7Cm6Hr#mq*7=b,a8++)k= + tW`Vqh1lPOs<ZKR]RJrcq$0kC7F7s$-hn!?`QY+6VF/T9p>p?u-@*0MVtk<"_FB=T:[kD@J + nq5mX/0-A9H^J"cE3LgagEL%*)"_cUgdd>7flA,R=`fQe#P'L[c))'P(5MEfNKs%+q'-:J3 + :'dC"c9&ok$O7]kFdd17tOb,;W8Bi$9=T;*jrATf0iu;K=E/mfD4%Ei\5L]u=:iZ%ha8#f[ + j=H(Jl:c],;?!EQClFMi8kMZh0d[Vps&C<B<QXJe-tOBpPk(\NX0MZ-8,Buco"%ss8Sp(+e + @JfCrFh8bV_BFp_jIbOAB^=U5M$lL>dHV,9blHr(So_+le$]jJc<B\o\H#nNcNEjdlLT-s' + ^QYLJI[$4K#"KT+gL<1#`,Q#Q#^<'E3R0=q<r5>mk73rL+8jD+&&k'Va)cTX6V47qhiEBh^ + (?&Q1C6a8IH`FLIODVR9*S8M+agrgVB*G>DFAC8_:-TXQZU;//6cWGUn5<8sWP>T!L@F]PQ + QQP3DX).bBP:k.%'`E=20R]PW+]U.5B5O30)XtHj,f0^<`9T->$p$07mkBQGH$(j%m'S"bN + &RqhOb^#L:fpd2c5O>54ZPI9C4j,m+c<KBPp57:%CJamMAZIn*IJT$%@;N'B[XXA/gn+-#! + D!+&\/,JU^q5JS:`9Rj_uAcQgRe]njjHJo>n+Yjs)p$FgkDu@n"Q%IMrDJO]XOL)_ruMq&a + DZ<j8Si246q=SFABSB74Q8rs*sMJ"2M0f049IURU\>W_72]8iAfX4Yd/OMZ.sif]K:o/m!Z + fE/Ol]W&3o\S.`IQ37q2-TW)YC:+8FG,j-`+Zn`$lUWod:lr.U7g1pE8`-"F$ARkDb\:Wb[ + m@*BUl[atB!+8Kh-KNu9Z(K0VDF&t-AN7"*#AD`mP]n%k,&NY^HFjBgFGY\bC`L+O_T4@me + BMAq$BF]l19X0s]_>g;&Ng$2:91q)'JO[$$7\gJ<:_>iZW@:27V2\fKIN;PBolW0/[-=pGn + ("PpI^uD:etb6NRJcalJ(U#X_UW90ZHEa&EXeV@k:E]I0\XD/gBU("9%\7Ni,pWg0eLCg:! + 0XeE3H0]h1IcEc/>h(Nj0spZ*6FL#GU*K-@4u1HRh#Y%L.;5$FD2+[&;?[0Oj"]io1>PId: + Tq.rPYf14Uu8\#9eH-kbT.roAk\jNEd?$_2iE>!d+5KPk81kYf$+<p'T\k=B:LMo^ZHd"dX + 97rF4JlemUMk_X*F%*kH%DPFneZG9#>^sLs(8B0tS(l^'hNGL$S%a'fLcGN3D_oVQ=`=hSF + #jtA]O\Af<Nq-,Op6)TT`ecUo#s.R0@dqK5nI1#7N/EnH*a#TiQL?0Baa2*$Ie-"6o8c#W8 + XR]I86mdbRV^'hcW$BMesijL?k6_:cXtIZfZslZpI6S*M=1,_!hZS%TC7YK&!!=oP0qDldR + kYY#'fu:18AcfUW/=i;6n[uT%%\iV+.P_`j"!&:=ZIQr5rtpb'7b4CaX(=f2(8%`pBZonCS + qVfPQNG$E.pdYoesmEQt$-&-Ap\0!)>cg?1ZS/[kaQgiWtc+jIrK%ER>O-Eh'&YOX=%Vh3a + o2R)A+Z"K<Xj'pmtpB6C(HODTU:'<PZ#iO'5ZtIamkLAIcZJk3r#0UJ*$Yk/d0KlQqj,e`! + kRb7EL?*"jjK;8b$^cPsTdc",KJ$Zp:nkQM<4fH9k9sm(DL2aab_Kua/'`s,DN,&tjG?OrM + 2n)tm\&iAf"_Qu^kfMd,f].f]+0c>ND(UWNlXu`bj>u<_hds''*@Rc"R[o*&Bn%7Cg/VhoT + F+en'N2raZ.=>-Le!*nF%#(%#1%KO#)h>QEMS)O[@1sI*.XFo4a0TYu8c%Rh^dQo[."<&Rq + 5'd[Q3M2U>d$O(@sHG0\4`cVo;eC$PGrIi+.LT?Rm,%ud1-OSMbBdL%&DPG7n'0)BRfBX+` + :nZr$=RephpC6?7-n\Y2Y`bVj%VP_HU&()CneK'D!*Qj+SOlH?pk5KAcDmA`1-OCkjocK7i + EKC$uXe+6E#hl$9!7DG[&eoH9)$,m@!QSII$LZ]Od3?id1N5&n:c*FF3s2cQ"7ed(nj]oTX + X)7f,nNp"8&$@.5^_!e"nH.-11kt*C:2+L-P18F:j".@s!Q!7JC9&U15?-K*=/^-jN^[QDH + K4ZRjmj!.O\.DE2P1iWeM(f]M<_7o"+$QEsqQV$n.5hONB'#bq03r/PGqu'&*l$h[T/9N&' + P3B[JHZm4T%@01b+VN&$G,rt"]'&1IVkCeF+jlS1$];fNU.Yo>F^2)6m213"Y*;(BWT&Fjg + "n\p7sZTf,p6C3m+'QZn]WJM>UZC,c8'm!P`d9N,sXIBf52N_]3d;5=ME6_6kp="E`-7'KB + Kc!aET9G6OdubLT#oQGSq(J-s&"[E2V)ja;do3EuYHT3([2Y1;47,f@%9+UXaS_1F4Uks#/ + SZXfgAS;64tV*[9n4[tm/GE&5>@7>@_VlIrr;NjEj>oMEXMlF3rnQqgJ,:'XhZX[+!NB`,% + kg<YU^pe/pHe?Y`q'&E'3!p?R/H:,a:jWcq`LDLF$n@-+$k70OWjlY9o?F-IckkOE0@@f-d + eL-hMlJn:X$1M($`1.0qRU:mEJkR"Omu\uoN)P,RO(9+'+P$PKh%1:[dU]aMo6$k(rd%[@I + *RRsg6%5QO0/uoH,YY6h6%T;Od:;IG.`_Ni6%s%PCDV#F'%hMYG&<dNb1D(34'bO"^&WC8h + Y5pCS#$(1B1=7[0$!/o[2)C@SQ>o%/O!aGH8Fn.2'[ono'h\*O7l@\S():%3DcmjPr>,!G( + Gg6*F*e_0Ii%A4(bG[\c\"4GLh+ns3H:BGWZ*tgT/n^$U9UTE.Q#V:Yg`9C4-cj.bt@lX;& + iTF4LMd`m9okZB,u-84k7_>%<h^[I3+[*55!Yp/WB]]P,gJ&X,m?gmABrK%:>>3?d6&f'H: + FM=^[-S!`flg0J,Wb)acM)hCpqGP!NQA6XnP7hiLIfnl'%_<FaN\i:("1;IsC'B4TM,i_XO + PZ?KlEH"GKQj04'p$]/JRNsPGuj\V:8G'cfhIca[`8lg\#er%*oZY;%C$adHYe@fT,OUQ,o + /G?,<euqdXV[\Zg/f)&np:j?T]ah3_0/h!L(=,cOdgsaV`&?>fOUH%Zm1D2dDUfD=%fL<G* + H-d#Dp3VBpB:#K2cCM';caV&QPWTp)OOSIb7?Z+'3S<O/N,OAbjf<<XPIs!itkc`p@3Q4=% + ub_;"s]a=>s?T='X-mR<DAq)AST^op^.T2g9>LGG^^1MG2N:9cOU?VDYl\NEk$hdaj;*>`+ + 3d/U8C3I]9a-WXXd:nb1X9jZiG&5V8ZpFn7kr2aHZW!AkSHcl6A7+^hZ&gsdc]<%N7#0X,E + NhGQJmWuYZM,2Z,l,jkZ=Q9)A?$K2V*iG2G(X'4Km-RUMt[h`/VDDpP'K]G%(8="$^c;."I + F\,+c8W0PT'VOTmWG%NsB[j3J['OIg[YOLd^!;T$1<Sj>o4lJDl7T%fcE=tV]YR@QlgjK19 + Ijr'0^S5X0FliSPlYaP"R^C=DKQAMoao+t*Dqk"&m"m-2ZHZn'2l:G;X%[i/=.%c3qDf4ER + dKu'hIrd<:j0f<ARu^Dc:^5CA$1=<d-]-YA%&37oq/"=)@gPFaj*_O*.jeFnL^h<KVHiPbN + ;fdgrE](O2a$1E3a*PIHEbGsM;8^Qb(RD0\nTe^'M)Wc*/frq507=1ad-^L#0[!)9Dnfm=k + lf9d<TY'8VE9(@?E.^0eY,Bb6!(\E!`VZ_/tReR#4\[;U,6(?L@IC[6"[S`R),_*AP#M*=S + Qo1H03G.\V#qf8i3U\F*Xe/XI]@^+6/'!@N[(Ubp/68O>=Diul)\#iSU,[U[qC)nt_kS'/N + VYREQIDW(T;5SaD@YnBmdA'J<AD^1V7-*<GeZ$#JW*S[aVo4W%%F/](s9AE2)chA="C6d0$ + LM#WL3@Xq"]"BCDW%Nc[)cSD#p\=<m_d"3K4u?[?AtLbrW8(UQ;M*g=LQE1t7pR4?5P%>3/ + u?Ps%'o4dV\;3qIYrja*-VHHMk`pU*50\KA;o+:>f01^UEGbEp]mgQ33*q]D2lh-fWr!fba + 9\*9<_iL0="RP7%6Q7ma[97SirJ87<TGRm6q'1Oqs[@:*GoP]=<Fb4CO[J2CG(c*S-2^n!U + K@H*o3(9GRT&t!fk1bBXfN2bsI1'qF\@?%AmZ4%u`M%7s\X'LUPgtQ=gP?7O\p0',G`>JNO + M^n$M3RgmdfkUB$H1Sp:qOc*qH$O3rt5hG]fKY^(BX,(1@`!6N7rDQO"1o?0tt5MNUK#j2, + B6ZpPul_Nu'^E)##s_kE"/5_"e/7'n#cgMYMQ<X4\;40:*R&S\fXsXRiR2o<H1f[B5^rGZ2 + G'PK.pjB<HVR>SG^o>46b4:tJiM5'^90Rf-OIAR6&IQAW/koEDJna-W<AZ$$)f)23L/LU&` + aaS4eaI$M#3mmEH56hg;[)`u2c1IUpqZoAA]D@N)B?^pOr[2)Q^2H*+(=1,OeSLupnFG$-_ + )9nIac.d)J4)l^]F\1>5cEs@lnu]D;O18HjBjCTeqi+8DBhUL'9UKe6H^iD@[7ust\i>>:Y + .LG#l(]s(],&fBp=2sm6H":4:j^*;\l7*?bATO:V>.aS)qRuY=cAehebeBH?"^(fgXb-JW- + (h5\rD`8=kD22O#(_,=$P?-$$9D]3#iN3]G9+BJ_@An_:N,4*Mmq-WB+95=k@f6'r@*62m' + d.>8+t[>2sl'6Ikm%4]tDUHLY7q='ZL(?!@,Oq-M^a@m?AnEEm?e]Q(1+nZ`]9YuDCAS:<h + pK-C+8@,!!Kee?.<0s]:diKb]UegIeJq3m<;Rab'$&6#r:5Kd(p7M\M$p_fSs,Fk!<SBuJf + emHZ;@n9bX\D5h0qeq-*mESp[BH6E3QrD<mK1d3]L#N+4-@d3!a<</A8qb"e0LA/=Ns$[n# + dHoD&dUjV&>4[nlk"^N+2J3/60o/.."VreK;]pT#WS3f#4Opc&8MCe5mDDO+NasEJd`cRqC + E1`";\fWO?m/5#V(E5@"O1WSd6[E_$$u.,S3HK&Qk]X(a+D9++a`jJ_OuP3<Tf-"&M8-g'A + OI"lOrF+BAa^^qg(k5a2g)":/J0JG:6J#Ru@f+Fq,+&/><N_#Y*45'dJ=JcT8080AF="9Cd + g0g[Dj@BnL%KFdhL&c2][5p(Hp,O,R1Jj(<<IOl)u"F@m*O@PfQjj8TA@#kR<^'O/n_&]aM + A.dDrF[7$380ai7kCP^eNaHT7aTQV"*)K-6&]+6o2rK\Z+hE7EO9u81TSCl#CnQO"#]%84+ + fp86W$/*k)K;\^Bcr.f#\Y?8Houuua<@"()2KH%Jf.EX#\9T_63q(oL,<Fm(oSU6Jf&/EKR + t$ql3Lc?L&)'^+GK0@Jes4dG(LN$+``/N&rHs!TS9ZW>+gSF["9',+_60?-m<"RTS7[t=!3 + 33#Z`(%>hjoG80Ll_'aPsY4.q9_#Z@=L+p_&=KbX`B'IY+iJeR>k4[l#sl3L--K\?]++G@u + jJeJD5/qO_W+Y-?]KVA`DTS/I68C[th+G(3h+WQ(GW$*$]TS-JS73I7U#XhaM+V')8a<:nB + &;VJ7A"\Jf#XG&9!XM$E#U'%s&#^WGJe)N;okg@Sap:*PK=V=M>_jNfJe!SZk(4(6+QI[=K + 7X@fTS%7j2W"c_fRaQG+OkuP3!opJ+G2]\1E_<"#VohE+NB!A80Gd$$lGuM0;*pf#VMd%iW + q-s#U$L+$Rd.%JdV<G#V.$LWX('sJslroAr%S(JdMc+Sq7:%l3Ms6W&b]DTh"qtJ"c'%,(H + >"qCAJ<kfPfETBPhEOItbTrfWo<3W>90$!LN!VJ#a9J#9.?DL\Q3qK@@d]8D'1W+n?lUEAb + mrhZ7PC&Y%"$At^\Wp8::XWQimri_s[$3%4#$S'H/X_W4][iapmrjeZeWW'O%$d/1WYO!/+ + _&r"mrkkAp8cH^&$u6p*Z>@)Nb9-)mrlq)%l2K$(%1>YR[3tiJJ$iqd>GnmrT:X[nXh"GdT + C(>2hYRcZK&O6&qi$$8-i93Z\Yo=rJ%@j;VWtb\g&C@\mcj`>TC3*cnXo8'o^faL=mmHq\: + :+_rd;c^ocNAPJ"N)DIa@9Y5\'`n&+g2ncoD%k,Q.e,oG\#HH4`JW>^rGUre<r>)^"9cJ"c + X<Lf#':7-L_%U7qRE8,=k\keqtG3-L9Y\iE8or-tL#rfBYH6QbP,J#%=TP#>IX8a/ouV'5i + '8,?:/l"#:?\@.`%qI*'mrA"oUc9KcKs%R#%2NRLf)\\*M:9!<(Vh+i=a813+l26%0&cSH` + l@i(",t<sg(dHMps&(*?8WWNo5Ld?+;^uWZWY,6/#Pt2;lBHduEW2tKlDmpb]i_=4riHG%[ + ianrJ#fjRY@VI`==XhiXHELf#PuUclSO*mnc#n,lI/q;?#6XjrjN./h]M0;J$(O*\RoU>>q + <%#Y7^cH#Q"$6ldUEfEW3[alMFqhrIL%'"@(Nes'XmcKTGgB5M0f?@I-F>Z#Tc^L\hr2lth + 0VdJh2,q]VTuNKUSj<^586s(.u(Q]LiL5M;G(B!ajnZ^,d\a88%C6kFt]nds2P,=lNC0rHl + 5TLK1^)B\$[X#3q`f%TFsCb:=+&+Wsiab+5Bc)J-0k2>$aO[(#M#_/(.nD2jRI;eNW^m-)B + <<r>#+6?qL3-Q.u>^MTR-('1JJc8i.q.t*^?-Tq353Q8YH6;8<J!]-n?l_V4F`+V=],+pdL + \[#Rk"'ui7r[kOgV%h""lPgmrb2W5VKhPIjZL>9o:CN>H:HiK)s=Rmc2dl(6i>q,pUp9n,N + aCbWV%8trcO"lfR=@Eq7g#!ra4FW4TkWT&+eHS?j$U_clrWYa;BC3q>MK"!XV.0.g=kT)hY + A;#S6PQ5L?2NKM\*O6E"#p&J4t1KDcGooMH%UPW":.l5i=2Cd6=_s$oHT*^huA&Y_ZcM30M + =&+l5RdW#4Y&PacDBX&>IjBP?qr@ecS`>G?YAW6/V29+;&S;6r_+6hK>a!g<r,Lh+%dJ6-? + oaj@;<.p?R*^n)[)^FEiRNLg6J#VZ_,p^EtPEL5f.`)+bL\e4slH3#I8Ppt6A?M3@!.V'nr + il_)`g3pY>YD&A0;\6h+7!$YXb$J[VC]ZR'.RTfl(#<iqW]0gY^`h?X#26Bg7+:PD_Js+^P + D[dS<JtScC*9GB70/W"9"&ep*i.;V"gQ\npaIC!6GKC-6MTKK2>_b6Ki7sU,5</&,(*0g#X + $Ebm'0Ter8"U!>$GC=f@DX9hHj5=).B7OqM5'fSBD]VR50d2MuTO$.1qSA,`-#.Yuqcbss4 + :6,=*.R8^,>;K4<9Wg3_-jG3\;X-J"83L;O(bFs0&6iOGnWnCUI9<#'@+N?Jds';\EHEW@j + gt2-WBH@`bYa-3G4GT&.c#o(mp-n7L4"Br?]pZ3FJach&Que:OlQ>h`doqOdr,#Tp4@bh=& + ,TjQmApA><oEfrA+]porP#cX$44O1MLlC;%YM[ujkSU_#pCVC6\p=0O8H,(DVa-'OOEVC"D + JB:rT1]dVY.kuM0kC08;X,@q;5EFIU]*P^PQAO7FD-cE#o1AEK:5LUtD1^E<!c,6O?7Rl%N + (,J5DC+J)S%%LZC"?`(ETn.>]03nO>"IP$1Lfoh;B]q#A@$gDj_&9e!@4\l[=mJ)i/;Og7B + `QJ!j&/Lc-5nqL&bR9F)oCpLR;1s[9>HSB%_aYfs(B3rdHDiahLS$Re0S@Qmt0W#jQ#QB"p + H1lS\D#hTno-0hPs$LIZ'g_%INFiU@Ro(@/V"CgVUD.341cdemFSe_\3f]B23`=LN8Ku]%H + WJTBa\A6_ZmOM[\*Jp#h.dmQfB"MjloLHk.XQoMJ*1CQm@.-]U9:#lYeUof*:mts3RTE\dj + oeL[gCYF)S2K6]Uc@B^nZ&no62`'i[d+M2lP:d]6k'\gFSKQ/>I\9ilrP9JW<Z\T0%\-)>: + 0mpUG223.^ueP1UlIg)pKVO->Qr99-.>#HeC>\KM&81(?61jWO]g+VU3(e!R\7lQLTA+c>_ + TZ^mf5T!'=[Y<jA8A1tML,e?><,'s,1MZ#n0W1qJ7YQ?J^+u$UU1cjVR3qEQNK*\69ZBO=T + UYE/[dQk&-6+_\=4-E&pUD'Ge'r7V<Pp=#Tq\c4<)l4Jo`1t5H>K!fS=L'DZZ:n$+P$P_q- + `.8#VAh&)1X;k%ca)hLZO1EQ/6BMOD7rk*V[GG])q^N6fr&?6ZbguDid*cHNBQi]^&p^#)a + pVTj-auLW,q(-P);*%Ma!;`5,1l/@#$T?VR7*)WB$t->]7#IXu0]j59cO8.\'!r>+9;3[EJ + 9D$+hZ<Gd[Xf2A>qeBu6m,_mWCF2IgAanu\F^YFN4>Mj%qbbQFn;d]7*2[fF<)'66?i]:Gt + 8S\'$'drr3J%'1o;XA"Y`Z0&k*&>#<TT"44(1<^g)c:Lrd+"Mt'6l2sSpFT(,\9[s2Mi#9e + fcU(F8`PdQ4,u;m+KbJG/f^Ur.L\=!Pep>\+U[F*F-n+DR6m)'+bK,*PFW;,SiQEpY;.4R; + B\(M+Z_]\_]nq$K)?gVW"QG93i"[<&hl!r\@UBN3pWueZNm7`$-Uf(,KmGU<'RVH5qrMY]8 + B$=S%?O*'Vq36b[\@4gV6./)Pn)eV'Ekm_o+Z:9X5R>1-/T$M.Sl>b/G#BV@tGV,L.)-cTM + D2ZMJ8k)JVDqH9FpO`M5>h'0+7SfdB_P4g\P%dWr1ki4\E(^&-a-1IJ)c7F"im-tD@&A7r9 + DMR:=d^7('#,>UeHlpfIk)O,-Rlu0W6XZm/[2/?;a4'@E8oZ(2/a(`+THhYR=pm^=>W_pUQ + ]DKXlr5[L18*[/qS:Ej-JNsp$*9;`&1""'9"NXgOaD'3rHFb,eM*R;_5bs;YjGYW%iQ0d`a + QsD.>S"p`Xhb[!_'=E#glt)mPsJ:;_.(d$4,$7iL5t=58[KF._>_R+*D,<5+=nTdgQ&fIU, + a(m68YK)7&;%(VF"gk6?3aVK'K%OW^<M^6F<g;]WEh*+%klPb5<p9$7!_4pnDl:6Su/;7(" + 5O[P.J197/\AN&[Rh3Nu_k3t/d6+[&3J^;K<PU]eKO%)Kk#6prO<];*!^>J1ac7a-6MV$+n + .PfcCib9]j+1'1QOgeH#Z:<`Q>bmPmG"O]^admZ+C-;;rFib2&&<m?"nc&->^Rl)PrgI8L) + 7Da.8dlT^ngeIt-R)EE.,[sM(JPJUD:/kdQ<+[t>jh>j$5)Gq%V!C4Gll&Q6W>e\l/8mC2O + ?Wkf588,W*-4>$F?`(!^J^Z2_d1<8?OB0r8#,oVZXZ5;A;]Gs5NI;iqe3bQC(#]H^at,b6Z + ,.fDi>rs5]hfYMfZ\'FUZ3H^q>WQds44:eNibg;%4+/)h(@9'=\/ZN^OW(C_k-<p.:2[ada + 6@U`-@VM)_T-\A7l*m%;,lTV-D#_Ao;e.LSR(j>fSmb%m=T`$`]d.+4$C6E?W=A?<YlXjY[ + k_XjK7"L1<.Z;V^>6T_3/Up\*F[aS`e_gsU2Pe'5X]-D^96c?Z*dQ>A,$p.+j9G=n"F@&YX + 6VKg;bZ%#)A4@ig7kp8u]G*rM.9fKY9?bXR4D[bTJRqOY:e_[#]Ym^\fl'SY<6\]J4WINd0 + mQKX=\Y_p]l[JG,[AUL?-VYZc2:qo$t-!W@C.!34riXt0pY:6k/M6#W1<(kN9S?MTiQh^)E + dAc'Q).];a0kk:DIbC,?IYuE6ghWcVg?!AG7tApfC_rf51;l,PsA]I92s<=02E[HiLO=J_/ + ]ZfBi[Ke-%\rL0,H$==je;/-r^QMV)2BfPM&+KFKl/`E8SKfWC&t*0RCuJ&t?7=R?l+r>.F + ^(g/.&+-d`rC`Cd>Ma?0c;=0`Jqi=VaRaN)];C^_D9dI8[-JA>F=q)l?Ua`jeX4f]eg.a-/ + r%:#EYZcH/>)b6t<&2%$[+`2Mg<DLdX>`2X"5<VU6`mW*'Kjj`Zr>M_4&r^frO4%0\1o6rg + S;DL>t!Gl7GHS47#Sn*Xh[o,_,RJS`7)b#ou'hk`DlHP72sIq4igVTa]1FL`FI=jL!3P>bu + KDI7B>%HQ-_=g?<nf2`W]])9jc^\i8&6Z?$_00Matd0g:hrK<d!4TifDpem&;;hf#!_Rg6] + PpDmbMpcV8FU?#qmJFAIU5)qB*]949_0Ho=<k=/)b(CM66HBr_tt.k>Eogk@ZW\6'rc[i9B + ZRrk_(L+E^V2iNbUV28%IMGXb08L+r$ecDl>O"CJN=VHM*Po87<)VIc?fj,V$C'!"6h*M:5 + \I9Z[-(IjjSN0E9;I,n</YF_kR5q@K\\dgh6Ld)%TM"gLYAL3kK;:P5Zat2Ug;<kNS#]27X + P3>,gBBUKrAr[b4/8o?Ye32!laF_H\'u/&e0DQS27lgS9@QlW]CWh^S&-oA^p3dT]O];MHR + 2oi-G6+sbq%$o`Q5@>cb1%E4Y&<nb;?n2f$1hZ>l@l4%9u'(?!T<o-bWkD'OoW,i^QYp<^# + ,:9BK8\gX^+ujL"6m]kPdBC:,'tcM_RJ`_XVnR,o%RWQjSG@\6t\FK.6#8$.!sQ0fPl>/0H + Ojj!<8em:U!J*$q-*EHUaI=pZFq&S$t5fJN@Fo>p3r`H=<=N1?W4+QJ="(pAN\4d`!@b"k. + S#q,Ffj`_!9V=!"G#At4@-j\l:(URnki]m`=rr-$;B"`r/QuJ3iK>DK1bm^UKjiCZk\N.\h + MC/,MIIm:3s7XW)[^9>^G*rogM7A[Pf'aa.b$NrBjA_`k*P*(;sBN?>UGqM3a:jm:u#ZSj* + G5#"BA^(U1:cMl9&5)k,%,;Vdp7a]t@]8dm*-)ij:&6h/c%rI-3>H8QK=pep^9+[S5!'9sl + 562*OfB/l5U?=2-7gCT^TBFS<,kpGMBPhPOA_*a$b.=hiP(=1.MD"n9kZnZ+"Th`V,"9a4s + .\SQ]gd$=CQXnf%&b29lAhoq-gg;cbpc;?0PXL?I-iUH!ZQRrtjd>l^h%L:CnMF#FDm</j" + <LGiE+ZU=lB8-pp6^9uBQL369B?Q_+h'qOR/+*kC@=9`dNA"_/p[1Kidj?'`4rpipk@+<Ii + XEA,*4i@d,?)&;@TJN<j0cf-[r1o%igmWlZp_OOnm]n148tRGI[EO+p"UTD<5(.fehf-oq. + !u4@s(Z/K.V#]3`Sp:<G"?L7fQu[=_%*Zj94<q^-U<,"Cs]sedLG+46#aQY2k;j5&=mrLC. + fKB^7^@jOJ$bjl,NT&*o2FnK(S7B+o'oF7E8pAT&@MmH`*3m*F5LWj]b6[<tdcI;D(;Aa=0 + or<6dA#&JF7E[?B8V1i`VqIWrUk%tT?H0"OErpl?T/?T"N:',IUd;mbRm5An@D_LKXQ#duQ + k=7=FKckG;G@9SlmBrMVNY,p=3c4!mdZtTqXqe,MiH+C`;XLB"2B$6jV!(N.kZft4D67ncY + #Be+YYRegVX%\\NV'C@>@1(g%Ogu3n5M&;@_S+M*qNk&7q2-^ir^BAB3&7h9\_i,@nrRWY+ + AW'T1(s@gn.kWX]=/jraX6L4^OsbSu*ko@bhi1n1E)X4Q16R?uTIc<Zc!M?O,DZ#kkCTG.d + *ZY-VF%ZsEUtE89o$lu6`oDX3W$<sK@.::j;6]Q$X>nQ^?Tj`bp&GYcS0C^ofDZY*jg!9M] + 2lpZDDm=8#=JS]2sAg;>.2$rD5$LFUEEa=JtmV".a-p\)pk-lhf7aO_6/D17[m4FIf4IU+] + )f8q:;9q!hmap-Pf^hh+F'PJWXX!5J3)Wg<8q,UM(ReMR.U"ag@:k$Mn:35Y&,%7XLBCsMf + J'6C!X?DjYFo[`S.0`G?,5&g29ZML*eCHOCM4X;#.0T0eo3L2%:]KB9H\*F)S--TJZBo.\_ + IWo"'!(d&2cT`#,ZsN?tr4NNWu5U^sk%q":[Qt:KATPfG\c7Rt7H0Bq$(O0`t(ada0hQZ3H + PEUu5r8)Fj#p83kSl1is0G"%HZ@BXes1#)Ro*0ebFH%1ND+^sJ0"*`<2oJY6Ca#T<Y("$]& + sYVY>KpB*Qn+D7&ZiWaUXS[L4.X:4=q3P`p:1QM#1E.OM:B':,AMZYk&c#>I<%+ELQRNQ3e + )4Cb@JXJSR1E6hB"#.O7*[hnT#$ukI?tICsDqb@G5g(i:`!ijCJX)m>=;b!@.A1.7!eH4W( + ncG:kSTio+C]'i-6Qc$"slTL(m9H,#T/SQLr^Ek%j5=*"sKXK&dBJskSSi$LZfS&JVU0@Go + 7`5g'/Q?@EJco7q``WJVM5_C4V+q(hY'9@?Lg3TOEEV(WkkX>_.U-(g)?CEl&"q+CRkH'Hg + gF"qs[D(eT@4L_rU4KMu=a&>3G5"qRA7ncfTLkSQ:1K4l)YJV,c\"q2V^\crNb@&aD<;.pd + nJV$E0,(Y=[U':jq?ucGUTO;45"k2ZP'S1f`(_D7Kog/ib+CHZ'![(kk@Y'&#(]t9SVu:aD + f9P8ZJ"Oe"qLP8p)>@V`B@7!3TP)+GHeIU#m"(b,)<cXCBGooK+D6Q9GT^XF#'X<c);9Y4L + `+cpSOaXIG9CNb#'6GM1'VdUkS_HmS7ieYJXe,+_1<_@q?Cj\B'KS<@;$OeJX]1JZ@SJN)6 + \r@B!MVUTOso&C#eCpUk+s_)5)PKq*G9u+D,?mAft\h#%_C[)3TQ=#T8YRR+^I'JKTb(&;D + :j=oO0uk^i_i+6]SjM^&MU3056Gq>QKukop%i+6c8+PpM9-A:LI(qIkAUa80b)VapT/[jT< + "KVKXS.K6+bl;@PX+6mkFW,LsaW2hF=qQbUOL\eZ5X9\U?J#o/lbd8rpEW3D=l[f&G+7#X" + ]6!;ToY*!&&cTS<lllAG+7);m`HCNW*69m/Z2Vn<m(r\G+7.tccZeaY7+*p:;?#(;m:$"G+ + 74XYfm2t[CtpsDnc%C;mK*=G+7:<Oj*U2]Pib"3qjr;K8,K67]#X]PJ%K'?\F2Nj+o_#(mk + Oh6+7E)+HO'B7J1&/.+%,N^caa!>6i?oooDCi"!<5;\8HL#F&;(5a$QnRlJ"ZoBKSTC<KIB + t3+f%)R#PoMak_O__62l^rqC%(HW>6]=@#YEf1EYi5J"qSoNedHnLa`'A,UA2/#Ppq4kpV% + W_>]XRqG<%u8Lc#sZp3![s%A"C0+[]j5LU2D9Tb/f-A9m<L\bj0l+heH+o\#;qK<tFi]3p4 + pn*c^s%js=64`_t5L_su;+(:O84=Mo'U"b(l;W84Jc;O%qOAYmG^l_".]AUVVH$"^<0-]S5 + Lj`Q<Wi;'8k!EqQ,:5"9'oue&cT#TqSaQB*a,S0QEsVJs&oO'Bohqe5M!@E>9j)`bXK+Pf* + ^U]l]?V!EW3O>qWf6h["#7SWk;E%oj8sBHk5oD5M,-!?fV*8O7if=Qn&DM/2Vj\_>_?mq[j + q:9Rj<Erl+'4).RK*OH9*#5M6nRA>B*eO7lL<R9M7Sm)>ESp1Q\D\Gp1drLK#CHUX@u"!FB + :K9,R9d97bcBh^=[1u^,PaN4B+A,M@p<iFRfdp-\5Ga4?\>!L,UA8H+R['mEsgY7!<+6<WT + PW%g_)oHu?NVU@L!iA3)W;e@8)8`nM(?8YHO`Db<J!Q5r>26`UF&$`$3X7oV8,7KRjn+%hp + J0tD;lk,e_:TUPraX"EOWW^[gUh*?miD#8GQrhNRPFeU8,9'-mht4La.2cCJ[HT^gjbfUrb + gT)epC24mlgulE_#rK+6PNQ5$-2/heV\00?!:>o=dH8$ho+rl2Ep2!<Ac)nK6r<J"KgT!T7 + 2lJac,8_))K`coD%k0P1_Za?9eP'I#m(r="bZ2F#RT.>8>=(IJI>%$=Zl7AKetO7Zol@Dk9 + `d/kIZ,^qu+#ldG*r?B1IOV8p\:l8+A.?F,$5LR2HMXbR:`V@=fiu2PPl(ig+\C2?@A8[D> + auW$\p-7$is%i1M4NH+S+ClIGOK(EmW=f-*jBRS)dR$Ms8M)6R)#mR1rDUh[2^d\qUQi'L> + *&>p$<><NPu>"u/4G[Q8,C@MlS*gil#eUim(\oD%V!X^]Kb!Js'/JTAPD?^1o@)"R`id%Y< + i0$VW?L$o7h81=jK+\0`PP`rIn#"ffUXHoUaOkHnh>o`s;J_T@<LacoMP#kW:=;m'qPO!WL + <AFUb'%:5[GF0$l$&*M`!>UJ`9[79Xs9V"COLdakMMWIZ?A/UW&s>&R/?.qPW3gmjSZi'6K + A7&\A`]2XrZ;bDt!+8%greMduslEO\I-'cR_qRK\.".4-EN4G:!69jd)C9<c3e2iKH@E_r\ + +8+@#=/u&`*Q<LaAprTuq[$]47>c@$,0$)CB(SUlP-UBWbWU`dB$M:7HmAX;=t</>h`[kuV + d/W(+oc=pIBe84in>H;epH<ls0l&"ha!PBE)5`u5]BPLgj>6*i7&[Ua@-HQ1&l@`Xk10=WY + JgX8r@&Es1C:No%nV6%^/bj8$NJPhYZ>\n#T-<=5bL&(oBOdmJjsVAh;k.^6hhMA0:Rs#%6 + ZF)R,*?:9!A:O8LYcE85f$G^2ZTPoCm%rZoG7U..\t<i4C3Tp"I9(um_o-Y2X)<U.k.&,^d + 8_Ce-q9)2k*=_!TUVFnsu3aKqAU:$<(gmH"Z/*3;11F?^?>t_GI9l^3$1H&p9ZZe:1joE4F + 5l]+icT9A9h4>II'Oqg;J*62"TVq_fd&`Y#:kAY@Zt>?H'L%<:2K[9D_#Mjm$BI#<3^`Q=T + qoq&Pr1U.p[q0`eTB3CdtYoEM6=4&RbFFD.Z3%>kt0LopL)M6#?73Ga=FkOa)&o,Ef.SOc) + **FWnQa`FDBBKWo!ho^3-QpY,>m8-Yfih.,@C>h2;J^CCYTi(B^f)H*-M?-`42IWj=BQi!6 + jO90R`=7XV?O3c5^]c5O*GkdC`_ie,P9a8Y*,Ee(3:JF5TcDF/pb7_$Mj\O\F96ltHM>e3H + u]#[XY:o*6p?KV^3L9&CMld6)XJqrcK]uZ)F8<1F2aQ\MPl-&jZX8n.GW_9LtN"3/0.*TN+ + d-Lnplq$.&N%C"U1lj9?:p/N6:>Wp'&B*fIm_psM#q#+7@$<-TPA^M&Y6OKtGa/\fnR[$fM + -e9IORai<af0=O`MiA7K_%m=R1-Hj:I8=t7[e6fb\=B,l*g8=q";bMp'flM9^&%.DIO,sT! + *=`WV4[fqY3NNplCB].MU:1(t(./q8t,^%5+DOW7,KJqZ`A9&%8;=UnrgEeH/4j9j%=NChu + ^d*:7?T9kr8Jg8JWGW:Aft`qJ$oK`9,eE/LV:/Wt+5QJ&J@X/@GK1'H<d3nhpjXX?ZAVbGj + _$JZ*0!Xe@=MY;5<dPEK+h68Z=VhhT*N8B1jhTbQn9."tC/pbeA3%b9jE)s=naL&6XiCDPZ + NZA=^>^i_b-LN@5XtJ`gHFIPr\+5(1#TVo#8I3M$K'SgR/lmVm>7&KOKZgTR%VeCLDW`^V] + LZkOaDg>GDWjiP$k)!LbNOcmQ:Yt_l1!-9aK30Tf]pPjlOL<49GWTR+"j_5NUFgQYkGs?nA + CFem>1i1cJ]=n8s(Z'0^e@l0(SIN)TG?*`mZ("8OW'1.`]Y0'+%e2Yr;.B3gS!UQOKKC0.r + V&1@oK\b6a?TP>q0GU@aL@((A?T9[bn<>+AApp+^U58_229GkVO,pJ6&O9`CZD#<8oATT>! + K9bsF>*hfd+B+LU10rAV63,!%m3pf'L0=5I+\GNPDqshI;0uTr$_&TZ'*:M6k&(INECtCDu + f7K%^;<Ik?l>TVgrt4i%7hku\ZIt50+>'B@n-L5A%!5AZ!AYAjEYrq>*3P'.+tt;eE%*!/G + 9Z>UGZ$C$E]F6-4F(s4Z3R3OE(M=Z9dJo2,qD**;HX1/>m9EA"tN[3Xs#.;-9SMR-W#"7L^ + >HUIjbk[JWPVrN^i*XOQ@`,$$)F?W(AH-Tdham.VN$9X1j=OYmW=p$Z`b4ZFmlLM(C@"/9& + ]^W1,@(p55$`%<C,2W4<B(%dPaX/rmY?nF&"Ao.NZ%09H&ad/K*R!lQ_JmSaP^V(WE:'bPL + (P7nrKo-"_q5n\!WPk-I>o.X6C1mSGYQB=<dnNeud7$l:lb)\CNZVpE!bnZFH("6KY'4VeV + B,6??(<kS-%qdh>Cgk_>2t;GY.J5Z?M)_c!TM^fu$55F>R5qOC3U.nO/M*YQW7+PD+gJ8IN + Bl!5]%"l0*NF3<&%c6dJY*Db9-L>s<#h]<<fD_L7PNIofFnCZa/s)Ii6Z2AW_!<=kY!, + "4jWm*fR[/j"50QJ*5dN:dBb5uP-1@d!unhEK@i<,)%20(na&jo&=pB7Vr2tBfL10$b<%0a + YE"qkDM;J(AuCBi4*#7'u.95`c"2^e#U5;7d>E/?!A.k'nL.57!=YaE!YQKBlqk(H)OOK0k + \W998LkN$D/Ye;RZ]'/Y'ksU^dd*F9Xbj&$W95r]=nDPuJb:[bu0!O]%YjfMiaR&Kom6q6k + '*AeE#*AEa&CV.%#p0aQ>jkGb1%,*BE@!A[.8gZfnP_/?YrP_r4S!JY>#@dHO\7OQO#7MJ2 + ,RDBnQO-i9(`j.ok!e3ZY^KLE1Je-(NXj<WT+f]p@iKR30/Z%;3*^LP?;ae)6]E>e"I[9V- + /d63mBZg#*Sj5908,(qoqk]26`rP<n5UAeht-(<P^hXD`uXo4pLI>8s]I_m+AN5?1[es1]# + e2s'F1VF#4*&XfU84'&/<&?n1<o/]f22cEGe3YV"M`ni#>t).G*;hX0t]NV]t^1:++di3HP + F(-b7]6Ui[K7WqKqVt3CDD$Q;Kj,eh('S0jqK]JASB(V%7FHF'D>36Hjk%hG>9>'EtG:P:n + ]f)+gNeZcG`9Af@C.n3`cD)t/WG<4"CK0$R<8VK`if/'B_Jo0Cma2Qrdnc:]:X7oq(?&(]) + c2Jt&X<prd33F.)fLu_nBifW2():c2,_aDE3hh#[h2Qj'iY]&<*(/@M47Jg_%lWBoeC*#2. + (EI@eMZlF;8P]okr)QK3)u@(q3LI(Kjj9Nu;l$3S.hF2ecE5V&GPtqQm@$pNJ]#HIPa#e?Q + c5;oMrsaORK:ed?V*l?rPq`n+#F4uL_OFk#&Dffp5,E>@E4&,fgoT`A$q?Si'rD6X*N[ion + q6'_[?c,Tl;bp&Gc6FIUqmG.k=j!1uU6e3PO%J'^>q'=NG7.rK,/dV]A%^aeP[4l6(N["c# + D.PPDASs;8[!QBJ'kStO#e"L/n<6E:F\+K9jm\l(;Pe%`UM+bHk>8DGZF=O)[:s`mkchqg' + $4lFa(f_=l4DJ1C^4`,%1Y;-l`f\M<lIh"aR$@[:H$R\QINhb#AqcL&G69GFUN)ipMTX=D^ + dhfCio0-%l3f*E)Sc9N0=qD.*<>=b&L-qY<<V#96+$.EfWq8eQHr"]lQm%(Df4-Oa1!Z7op + L!pQnZW[o/k8<m^;mq%K.kD'a@B.f'[ROn#P8'r)^LI9O0:CA3J\FglVk6[;g)>YT29c$$' + &V&kM`HF;J,\RQ_][?d$WXB3:^ebOU'I!%Bq!VQhJR>c>KhZFW3IX.H/2sg`+.=YL%HT1g* + <]P[j]muNeA8WInXsCH#)(03>JbE?Y);Q^!Mk2b_\[XRI[X3Z&p4[`[$J(,gg'3=W;[`;gK + t8%VG[V$sX+m&jLAEE9NjfL9]YYM80.\W0<mJUo7kdV*Ut#Oc=Ih0_?]$c2`qj7%QMm]4", + jVmaR:F63dlsUJT6`2'b<LO\Cia``JsUEc!$Yrm,+g#B[6DI3"5VDf20h_]/_fUX>pid)T` + n!D&TgRB_p=BGqD+g0g$=1VE3h&e'4*hd?IMZW#85kqY?C8V`q5;rp>]L=0n2mk1S)]g,fn + 5(W>&%a[$`f!Lk0=H&"^(MaD]LYT#0^F>K>l3LT1RZ^I^Z=fXs$Y-XTdRrh`$Z<s*lA@6^% + 7[mPNfGd=U2$_Dg[TFoJp1WNkNo_4"T"$cAfKDg95mhsgBUSro\ck_F#ebSETbP26<5YDfo + =:;59_p%e\g]6?&YepV]%T*!'^Y25q!C/RLtYF;Y2^(rl+C2"M=hAIOW<ied>GMIn@EC5>& + V+.F1rQ<E9VYGo1I0:KiEElW7]j)02E?:<PTI7WV8II;0;NE%B?r6=&4/[Dh5`m"fot/X;- + Yp;4k^LCQZ#oG7h$AFemMEWB8Y3r#4U">X_k\d<R3g`:M`e=\j?+=g-B-`YYhE*+uL>rPnY + MHlR:6=a*.,HU1e`Y$3'jFpgW;&$hUcILY%\<&K,d4gT;Zau1b<Q7oT_Z%(%(J.u.:8(#MG + 7EaFaA@knj)d>fo?d,m&bjpCpG%\7rfk0$q.9gjb=n,(Ooh"uS]=WX?2N:?&OgphfKhdJYP + eVq!bIMeqd.XS93,HCD),8kbUH!\M40`V8.u9W_di5trrAg\kS(%8VDV[g?H=PIZeVb.eMc + dHd'ee+f25dcLelN[=S*t@Oo/1mh<?(heF][2$BtuYf^jUoXrJ<JG%p(k,fen'.F,e#F>EH + 7LOS+Zs/LeQ-X`jL`G<@V7>1pf;IlmCWXr00CNELMTcZo`>`7;cE)Y74&pDuBm5+;MjoC'[ + RorrT#Ye4gZ]Q#'@'0s8*?aLJRq]2%?dbIpU69!X#].7<;Q!q$Y@J_pN([g/so0dfs"T(Pr + I'I1g>C^KdbHtig=il5B`O49"bh+/2][O<RLX!BmK3[BE?>!p#SS/sjT=@AR3(llr:CEYL+ + :n"X!X/]G_$87PX:T(K)8i,"-m6M80S0\ln3M.->6G^-"`akkWX(&*$6XqF+IZ@7'#=^45o + ^G)1kH!@Jd<KJ#TeR&BCJ1I&2s_$5m&s"+CYTmJd%fu=<LM>":;mG:dBsN+^BU$i.1#62@' + _C!poDA<"K]G"@3%^#Tt#k"bHatJ31sd"U"hA#c(Q$%gds,L`c*L,PDE@Jj/_o8(8.B"FNK + Vq1p9L#k`d4+HJK,b=;\[_&a.XHkG29JidA#a<Rhnl@M'?n4,kYcNJ;T*4uP%OpL*"31u9K + ,D2<cDo!C>7dL_te:KU:NMn(6#hX_dqs[(^&ZZ%L5oP3.,>&6hJi"U/s,7P\"D5IfO@EIeQ + 2H4O-m=\()!E-&!hb8t#\"p2)@0aoL(#2V(^M:6JeuKOHOQR$iWrh_L!g63TS:<TJemPnCk + <G$+__^bKpi9M+GG[Y=@U@T?@ip5+^0I4L`ohBTS68L<1nq3#ZJi9+\[J%W$+]`'PJXY.\M + J&#Z)Xsq?Tkia<<Tr'8ReiJeLZu1GkbX_?`f-KX(kUc:B*,JeD`?,_?Xbg'C4lKR*no+G=J + 87Sq/L(4m,h+VKA='RC$PTS,'+6D/uU#XQp1+U!B.-m8SB&+phH59PUD#X0A`g'BiAa<:&* + %gX<GJe$>B#WeW2U'NcPK9?L"fLR.CJdpodgk$!D=pR#/K3AO<+G3CeJdhu.c@QJG+Nf9EQ + MLkATS!j_0VF%%d"2Yh+M<:6W$&U%$[8$F/KfYf#V7*M^%d0da<7L7$A]h%JdPU@#Ul?tJd + <`sJp&8g$)eu6JdH*5Q&MAf8dH[bJiX/^0Gu&5+s;IU#U(=B%Tn;g#U"SJ#KS$6Jd7^T#T] + RhdKghcL`-VMT]c.aJ"^NO)LnIW=sAftW6,$t+6_DWNh>P2rfHG;)G63i.;AdI+6e(MR%NW + 2rgN4G\oO@>WX8Zt+6jaCU7^^2rhT!T>+2@h.]NEI+6pE9XIne2riYc`qSKM=X%E;t+7!)/ + [\)l2rj_PmRd.MgBDV7MYG_6rJ$:I_;Sk-s;?"QWluE$GG"e)Jb;2Zc14QWcq`KA8#Q$o=[ + %841e29s?rmm_/Jc==Em@jO6+77+Ih)C>bKR^KZqhTa3a8:sJ\OZObo"!%uV!B,jWW)6+ma + ;%%+7A[un:&[saR_PbqpKtc_>\e:q=#Khao\2&m!]JmrZC=qJ"QiAJ;<t(+6XUMTS+#3&98 + C*kX9oo62lRnqA:=<C(d5Y4GXR^-6MH9J"hMnMMM$Z+6^9SUBG+e&]"E9j8Bu/oQWUJnGc# + ]r?4R>Llmie9HWLMJ#)'&PR%%_+6cUOV.d#t'%1#Y"8sm6oY`uC+TG-QrA5&WeJ]*1DGCMb + J#>%#SVR&d+6i!=Vo\:uPQHG5MBIDIEW2\fqMZN]3.In6%]#>`Q;\-0J#T^PVhb,A+6nZ3W + _"hBPsVKNMSO_Anc#VFqQq@0fRKrY:9KlA^/taSJ#kC(Z%r1s+6t>)XN>@dQ@dOg_u4>2or + p[3d/R=&rGN5>_(lf>jBTm,J$+q5]*J3#+7$^lY9EnY-Hc$h$gE-Op%go*!<6ForIPRR$pW + B4l=!@@LG9tO`(0\=+7**ZZ%;noVop&ib^km3:l7OV3<*P7rKWH;>='3S0kP7PS<*A_5M=] + hB;>EtZmLCP)Daou9eiLW+oXn8q%d^>7B3b=ZI[a_,Tl*7J!,B^8t-K&Cos88[^Oa^#PgD& + jR@Y_k2b<%X*8J6mCeb#r_nUJ:`ndj_)N5<iS7(aEFjZMQ6H61#PhtP:.<=9G;A=9flS=tf + RK6C6KfF7VKEBJe@NO5@n_ff+6H7HR8Nrph93<PNqqTq-]%:%3<(i\r7/HXP4N",d<]_2lC + 5'XDb'W<HZ*We4pT%%+#E%>j8A,%o;;C,>OR"oc2,2!mWceJjWEZVrkHMT!2(SAJB-/hT5j + jZ8,<%5YVHJM-n,=mZ3_W:/:X>?re'.q*/"l\&jg8*LI_1_+6\B-U,Z?b+bVV*OP1Wu&cRa + 0qDF%imN9@aLCmuX7nBER,EMJ\'4PKKMG[8%7>S168,?F3l#n^KfY\Qd/8'qsV)FD,hETJJ + DiN/e3_*lR*Y\>K:a>p)O7`l&j7IqbOr?_ZKdK%6W;fcUrCk<.*@.GVQBMqi;igTL5Lim9< + O.'L8h!=\V*q7`A,T_pomT-V%'PrEb$%GPE@r#Os&pZGC!5af0P2<DR.DY8Xtfpd8,DD:o/ + ^S[8ZalteCn6hrHs\!pGaMtj.*HIFO%GJ_T2N_+7)19cO&i!Vo8G(9QYchnc$U"q]g4LQ@[ + Cd%mjr&0H]Z&J$VH?c)?=,U3'FoZl1\d#Z2!S%5`R_$:RN)Ro?-DG`al"s%=e`0W%R(Z-uT + ]9q,PjVc<5Z<!ML?l5<&?:%3Y^MNq*iF+\FS7'.3e(dI;n=K>GAagjIH>Dn]8+8(f'<ej*, + X''s,<OfqJ#@1T8UU.,Rik7FOF^Ii<TerqeJ(Qgj@GY53YsuskS!U3@m"LV.O)aSjF,k99C + Zcf5G0ekYgA>_1gH2<er"&[)CFsW,J(DR4T/[<FmBsI5<q6J\l[FB24;T+6''!5TPm<uTbs + LW3'9E$eFY:)SL![EuU9n8:a8Or/=-=WBgWkjWqEp)Arq>4GitJ/0oL^Q,/&dYNI]ql4Mt) + 8sVGtj0j&#ckpa66c#iUE"b'f<qrs@Xh08=!?JA[7%8B?qnLiFI^`:?5c@\lDjAB=eipr=9 + 4=[=Gj_R3H#UjqF[Iun[jYa-.EA?=I)5Or,Tan#F<jX%@E<t*4nq-u!fae:OHqX7`@enpKG + bF.rqiLDp5JZr/g3sYb*cC*C3:Fu(Uf\H?Gq>3Ej/I=[a.jeg9WL$GTs._DoOO@)tM!7rfc + p!X\dnLoZC$In2ko3LLKQC(,MH8?.HXN_#QWQ/*APQHP4`1u>pM75-YA-.JWGVd8s*]jc2F + UVceRcfOli8r#bVkopSFX"W")SG;DDq*)N(UUNK"8?6gFLD$2b;6'=l?c(_&bYT*_UegMgH + M/Hn9R0/=Glapu8din[KL_+%jm%>D3R1L**1G/P5mmC&U)jp:._nXf;N+ap"p6+ZTl9\JjG + "b2]/Kjhb5f+WHb#MA34n's>b13P$*=b3u%HnY+^1&_j!',GHi#,qjis3a!iAC+?f@r1_pE + U?ein)lt8?XY;Lg0N'hk#s5a<ZETKTYd-Hse3H*16G%RU,[1m,CD900]HjPk0lg!nP"r9h8 + N[nh]IP$L>9G5-,"12+-*,*B;I-SK?G*gb]ZO_HgFK.2/Z*U:(MhGG]@/P[DR2ZJ]kN#1H? + ;<.32^gYVh<bAX5,r!5,[^3Vu,Ge'19Jij>:%p1jXp6S7k*<Ma!V(RO_+$92<4DOICca`p6 + Nk_c+;WQC@Z;RgW;SK35ONodSS'WVO'3d%WDX?U(!TS,0"P$Y#"2A%#&0._3U"fuUUP[Pj= + a5Us(0qR"=:D4Nb+^gP!f!S<m!ft`c_S[uMU]6,.kFuOLPX<HXU7$'@,kVp,$_'6slb0%h! + J0,/M3$]9@nb"IJR5e@F3,=;cZIPT$f?)d*+<-8*o%Tg8h4S8>&.=U\,U9HA%5(6_3EZ^"C + R;nil(M#@TjsQ(9:S#l/?]C$0.a:f$6_GLU;IW<,$Oe84/O3kV`KJgYM(T^r4"f!1-3U\_k + R>ZCBdGTYp6<T6fSLuis[1([M2rT4+or*&k4T27m"7W]?@n+Eu61_)C4pj'q<'&1eY+E<\b + :h4DA<<HcX/.-7.\#9e4F7,L&@3<3jYYZL$1+)JZr9e&@M,-M')h]@SDdfKGI)Z^Q*E]\kr + qHbJ3CZhf/.)Ls4Lii"Zn`a_K:CIkCNkF(AoW5+$LWfBQjVafG.`p<&]ZgXkjY/_LOa"-`$ + 3O;4JS/Z9f5@et&FEeb3Gq(P_a/f'W]DKXj_aiF\*,L*hoRK10JK2%K.hU(J49NYu"J%(Ia + E33QF)\pIELj1g^ncn(Z/3:5^c-%R8Gd[lHk8jh&P4G;aZL5.9GAQG'eIgb\29S_8F+*VR_ + behT?NhA`1=`m!5[[K+@Mm>"JN[HU7dI?XqD.8<$]Us--C6>b(Ah#7&e%fWktR4To?(Unf1 + 9_/^!]<U'*-Q;kc<8ZT:r1_`Y=o9XZ.p[mOuA6[CISMZPrgY04_e'<F=>j?99f^Vf]Z`!!o + P*5\rV78-*:bZ%!S@S+db(8TI$`.Z7NPffgBbH]c$9[lb[jA!kh=j7$oV:<o3'[jrE@7;t% + ]\Cb,CXADQ=&"WU9q#roXBJ?2>:1\$1OIcfUu/krM8f\W`Y*_q1h+`uA'Ru(7T2`(>j'+Kk + f/;?W2/^c`9YFLlUJeY:>8UZi/KqmE'FKq[9N2ZE0j'^oLDmS27*"aaIu+^prAp$[L;sj+K + J#]rC>rK2IlcqGdU'^!QZhp[_)_Nj98(c#>f]saG^DOUN8]!c+puO5g5601ljogO?iX)5mk + W@_gTWoIh!G4a^c..EV)hU(WhmYT7e)a4,5eSSN*;8_;(YKm2n=K+Lq4Hatt<b73f?*,rng + /b'YR/N@6fO.ClDkb/>gQeL\8t/eQ;\9+3LI)C3KW1.s_c,)e?3];N6)\%8Om_h>S<Pe*Vp + ]>M"g_nnFOdg4FOZpX_uPYAq^*5b_p\\pkI'^WiXAB320^I4!qQ&NmSXNXYE`5L-E(+deMo + [)+Zb!d1``@TM-4Okc`ejWiq7;?PUHSIZ>eBP>N(]7L^e6L8XG0TYcc3.LPXC/Br?bQAI4q + qO&>=?1ej\CHj[%utVSEiA8Bhlof[/95J&sHAEPdNSQ7jD'6V/[rr=Z*:([DJV=;PLSb?q7 + P3WeG^JRq+E^J$sC$=44=]RqkP^CtJmq=;?D.K5jGQKLiFk=Bu?fD%3ss%bR$WSn/J7A.d3 + >IR-,W;,rZS@tIR#OjSaS;3KBoXW'6a*8,0LfmOpOe/u3eU04TB=hQ%?/0m5DVV1>`g&3;/ + KIFC$X'.)*>!4DsgatPWo3,o$_[WQU6o*4CX&D0_3ea\7AZd6]Y:pqVgCpbX]fTF]4BkIb6 + gM,''t7-G\5X-O`&"tu?+X'1]Mr+L7!l\mV8#up^f7)H`5BPfmDDoZ`)Q'E7178DNQ3fM<* + YX5`FW%S]iJC]e(ib]h!/laq_psodClVg<Sc/)mF=Ad@QjqU^*R76A7a=Zji2Z1):dKK]BQ + 9DCT-Po[01A)*Gj%*D9ikp^CsX<2/pl9ER.im5?h@4I<<f#FjHgi^S>4-`H]_bH-bef5O2q + &%=HMKIF'cb^b]dW<Ih,e#@Bn+?W+JNRrbXlL+E02=G(k6oak6-&QlYmfZb)^g$[MXbe[kP + \3(U*NK[51PW4)V;8nhCrKf+*N&]Ud3:bs0ZJ`84P=f&DY%=4XH^?aOW]?g@=u,NVbFV>lT + A!j0>'2M[/MUG"1*V-&0=3T8;lRZWY1%g&du1?WS[)1o37GJF4!V)U"19i=\$5J5]9L7GWt + a=#(-C!Zb`fgs]t^i$_Rr:]]NZT84!Zq@aiu'R>]!?nI8[`>;r"3KVN"T^$s;&,eO?Ud<Me + &BZe8?tdaccke`/g+gYYafi3YAo:2WL+V!2E4B3iJi?.+_H\rTn#9AU.Q?5ljM/FqXZo3P) + ^f.H.H6+UBTq,_FuAV%^)]D^?`mH)1,?M";#mI=clo&^XAAgE3`Rr[CuARBmu=F58-j*<1M + qoL&&?e(,e[V\TNc0"C0XW@R9ZIE8VQ*#d_ao.UiD@)tbGX=9XkGA]]rd2M1T]b/DTmhJX` + MD]5($I7cg4Q.f)l0[/L<EcuBSERm"s(m^!o`f50Q)nDmBpX4,U<k^`$Ms.4t%\:PsfK&Bm + )$R%[b2B_.g&+-'"K`rP`L51hlqH>`6nH;p[;nUWnuWl;c+c?9Cs:3+LcLZc9%@-.V;36H2 + bg<]fB^CZ]C>M.D!K<fXN;VR51OmTp$7?5.A0mGhaYZ>6:WAM!Q:4SWJ[U2/UdcaHp$c<.* + 4^u_Ztjh1\+b-5\G?I2/KaAu]iDT:%WK2A.Ld&pp#`b!6F^ufbMCt<<-`=b,Z'"@;U?hS?i + "+n@1KP`Vdi&r!gKH%FmemNB<36l\F#'WBTg"F@R;FV*n?4JT2h-gI8i>!hN,49=Q'N3Ks9 + )]T!'(t431%&'[k]J_nN&E_ok\-h7>77T$X0:s"+_^2Ikl!\Z$pa7J\Dh?l@XUW'M\Y\-.b + &>de:oNZcLkZ694IinisR+#L,.9X1X.g7btBQsAQ3U!3,1l`4[`Gd?N=ha4P^\(`T,]l2F$ + K=hJ1;ClJ(:eA_=^cg"'0W`fCI4c:M'.8i667:@:doV[lhj:<t7_cTY1)[^tudF&.4+CX,p + dMdKe\qqeCOC^#-)V0c#JHu(E@?MeJE%0YQ+dII0dWS\k+:<7$9KcT%rfQSY.]nl%!OR1d8 + m-cB#2_%C"d+J?Fo$*;;gmROm)Jr8(;84hWk184?#Z:R-;AKTl#24-8SPiIZD8m(K_jBQ:. + ;.]kmJWi%h5+$3JhKVZ;\%ksNeVX.k$$)!ka!62B'E6\87Dd_oUbDY/Nr)V5@R7qme9I\SO + 6VanR@fL]AAk'G*g.=o\9sW>THLC0)&ikS@jlQeHVVB#?oo<>OT8In''DPh,a"5?WDkh9ud + 7i%fuAUdWRb2n3(,h'jtPu@H944CA.ta:C,N`Yr&oslS_>[f*tcnmpsS*E;sq/o^c,h&`jb + h24`l*Fltu<]iSh^f6$plL;2i8lo%T*:^-8P%`;B2*S9rf?Quq!"9r[bKCUUId(T0(pE`Yu + b[uS+Edl;9a!op.D">$^;/\$urW;ZYe6,R$i*LMH-J*NKR8OK_D3bOlMiq_D,j26UD9\_pV + 4geXU2BT:kPLeU!mCZE=[:Ol22!.XYCWaIC=jH1#-3TrePJ+s%8d4+`uo,1)O:T'JZ.LA.6 + J&,"&M83n20dS#+^=C+DJ>(C'L)s^s`iO]F?Fp9$nbq8/b5-P(BECYV_"B*s5"udBGH=@Kq + aAU7c1e)C!'$6bq'q1b9(B"$tZaBIFc'#(V8sm]\M>%/U,j5gOC*ecH&$JY!usGT#6L"$46 + CO>EC8jT@L(+D1rt^'8J+RrbeiA.7&l2*fDIBGmNKB7ZJDAloq7@fnI$bYU)(%)KN+Qf)H= + )0Q3hJX6)81=Q`=""Z^[r9,#%#$$5>+D!MM9="^K^rd3DHjlS*JWjJPa;HT79(g!A0JZ$)N + rpUlaM2C+&dC^SOJ$%jrdfk2(k.$ka;B5SLQGC<*M?ih"rs:E`$U%ikSS,eL8Yr&JVJ.7"r + SOlM?Xn?@=1h$Kub*7JVAms<u<&g;?di.@6t/3TOB[#JV9s=8:cG-(e#Vk@1!2M+CP$M%j5 + 9HSq2NM(cHqt8/O-6+CN%j$_Un5"q%#2UrIt;BG`"GJg_HZ2BZCR"pZ8YC'Fkb?sN,NJOgU + jJUn(D%mV7F1'RfQ?m5dUd3oh7JUfDXMLX&RSLI/6#Pn:KT;WY&JY.&T#(7V,ap*59B>%&k + T#_f7JY%Z8k(0+(Op60(B7^>3TP&CjJXr_WfR]T,):X5.2DPJY+D3_>F!,*ISq3Df)9.5t8 + /]9qS/0NWDkL_5#&^)Gji2k@BGn1.Rj]/YJXZ=R#&>>nWWm2\AtA@@RRe<jJXQi^T7A%rEX + $-KAmtsUTOq4?JXIo(OF`e_)3'LrAh"!o+D)Mr@3B.l5(T(,)1I.'a;K>h+D'O:?(bcW#$d + g4`b'dfkS\2fQDb[8Sfh\Z#_O9jq@\:OL\`!?U'LN?J"iBP/;tfEnc"Q@klLdG+6asJP99$ + Y^6L"$Eb'Zs-i.M+VT8OPJ#>g5H+56E!ed<jl7)_.+6l`&VB>)Hrhq;=U9(I=lH0%.+6rCq + YTN0I*jR??6I`IdlY6@.+7#'g\f^7I5.iOAir$V7lj<[.+7(`]`#n>I?H+_DK-\V^m&C!.+ + 7.DSc6)EIIaBoG,>`lskPJ5.[>4WaJ$oUZA`u%3ZZ+bCmFhKr+791/i?.J2ro8AY6^6^o#Q + (*B\juXrJ%E\tY^a8lPIU'D%jCrBTC4N6oH37pJ"F^_H]NaK5)8'GT5jjZL\^iikP0P"#U4 + e\+pL==0Rob#re$"&&0L+,J"]D"Koj.i6\p8BU%/,<L\`8<ka6joLgl7(@P1,;r>:UfBKsn + Ks$m1i*=qdf&<ZNK84aYJUf%,S#Pq%7kqIU_iVo&cRSlb7=Y10VZ9Qdqs%C9.0G!fo5LUlg + 9Z`tc-K4rn8,@0Hl,\@P62mF1qKS%"krpKV"@(BAs%n@H6P&i$5L`Yc;2RA).9R@\e@M%il + >1sLdJg')R\<\qPuNh;:d<K4s&Gim=-*#`5Ll:"<iXt\X3ppM#Pu1WlND^=1&eFJqT"o&-" + X1.U-I4Zs&rq2C6/%j5M!pU>B:["XnBQA8,D9gl^WI-OoDr4qX#Bj^2'nek.Oj;s'Gm,I?4 + 't5M,]1?o+4%YZ;7N=D7_CKDgRdp*)`RR/^X%fo*,$2TJr+s'u61OcT3.5M8$rAMb9iZIW@ + +=fD@4KDh:#p2WCNf`,Tk=eCd2$9uTn6tgEXUpRS!e(T'`+66s^Og_:?)T,`oNHq`d!`hP- + B`BCGRBj8ef%XDUEGd'"J!:QE:trU*Db]c:3!TF_8,6(*j]$_pG7NT%;iG_A6-'g=r`R;;B + clH=bIM7Bk8a)dF9U`TQa-Ns8,7XVm[;Tda'@sOJW1c64F`b2raais[WbL:h`M-oBLhln+6 + JjK4BI^:hJ:G`01=NTo56e;bL_'dC$n.I_"aN6aWK[sJ"5-;q;5EDIIG/N^GEGccM7E%0BN + *ra8Gu\'EUGXr:l?Ek!.1n$%WXC#=/VA"HXK#5bn8[O7X(i@)O%;d"2ir,VD=.aT"V;r=6] + 3;%"Oh0SWEG'p%uj5LFj<L@FUP_t\iqiYk$'klcL330Ot!A58!o8h*7tVE`M-s%;fr/B-8V + (h4OsN2`=sVNLkHj'6>YdD@n68F7F]f`+aBrBJ?DpE/H)K93AR7Z[3a!`Y,:O]"&2.E+S!8 + ,Ar%lB$LqBf.5Jm%9LtN`+#"Cd6Ics&W+$<D)La/>]/NQHL\+XMOnBV<#7To*/XI=cY;gnG + c_qrGbNaR5?7Te=+iqCbHt2]a+E-S'uP"c8j'.k;reglkk5VJc<NaFR>YUc?df^m`#M/)B\ + <bJ$J8:5A1K.TX5bmZGHO`L\ibIm)k)[g*9#LXV[`!!fbUYMU?,=%jE9!W"8`!8h!\>C=KV + QP#>318,Y6@[,&'sH?;m'aZXN/rh*4?Lu')i7k&"4^lS>[;lYOLE=O1mQ1DrU8,ZVlQ$TYp + LG;oSR<N`trj5_+fit"7W3.He`Oc`^?)tqjYE%Ss=7\=_h?a.cQ5[\(GE64XBs0F58:T;3- + Y6W%fWteciLG,35OA'9ZqmOjg/G"ocJ.t5p9*!#p[nHeOm,$5%"I#YF)LC3$@u7Yrh()T5O + L,D\Ml,M6*$N/:okl`pJ1#0Ha='Q<SU!@VAYHl_g(W$3JTPe)l&XE&I8:&^)+p<7'#U9dV; + X:U]15Lg]&&Kh?$@7KegYVs+2q*%#pCU#H'EDSn#;1_RNq]a4U9E'KV/6_uC;-0T1d-16ti + UVF]^W.>tHc16Z`s)QMn,XX,\$a*@>#b/meJQ4h,='&7utN0TSQm(LO,=_o\3O?`<==3EB\ + B4]'3],-.R+8LgMAnf"=o1K!i;kSX&m,=J@V!jlMh2*k#n3?O,IaAu?J'\'#adH-7+8RKWB + ^Hs1k^J_.9_s\Yr@lTspXR`p.o5FK9%9h5<7Kua<41O`9Ud%\Cq@]VlUK^4WV^e9D;/B]SU + [kY>D&pC(9.>)P2g^k=`S8gEiR"W9rN-8XK:SSX_18.n.sdA>21UmG&$SkWqujWe9A%IY\/ + ]pkDJ,+<o0aEhWl;1M^Wnrr&=$DHgV$CVol@ocJ^"FiFh*-X&OPk>^m534ROc\$Z(?oFF`\ + *#S'+NmR4R@._,g;\WE!9BKkOYUkGeMK^6#Q:2GXPE4cHk]SLIgjD*m,JEUe&Ls+e7%[9O; + R#3Md^IYNBaKk*,]'ALtlRWO*$l4gt^eQN#Nc)qTM"8Fhp?cDumB5<a#nY%8l;F][OmH&dN + qSY&@ZrGF<K@9I:C,!4:rg[WnR[7@WFk\eNgD;_QZ"EYO"cr^1s1Z>b6aR.-.)9uWq<C0Rr + $6:Y?5.m>kST[SP8%6N9_:@E1W,4cY<$tl1iVFMYLolpoP1&9cB^b,8ngtU5ttql88?s2Bc + NJe&Id)&%8:rVPS:HeHWJ49j%=NBP`QG*=ZUtNG@&5g8H@`W3P@6`qn<ulD^ZeW[A5.!kR& + ZR/b=;Ef.SOc)**FWnQqPXX?ZAVbGj_$JZ*0!Xe@=MY;5<dPEK+h68Z=VhhT53o5XZhTbQn + 9-eha/L8U?H`dG.E)s=.bd;CsiCD\^NZA=^=FTRE-OqVUmOng'E.H,VJIXk.DF3E'MR^_Y\ + O\F96ltHM>m\]QKZgTR%VeCLDW`^V]LZkOd^J?FI-==^$k(pJlfTgZQAP$ul1!-9Lp4Z-g? + QbplOL<49G3=9)_TFQN\8?<YkGrToYXT+m>1u5d0@N\'+i8&mdUqY0c#qr?BYe11(OGN%gM + O..`[BDa:g?!M.6#$+VW(_QV<l*:G/#11@oK\b/osm;c`N^VY#pD((A3PN6aDC>+CX\(C]/ + kD!%:lDIO,spMkf2WV4[fqY3NNplCCP9bsF>*hfd+B+LU10rAV63,!.h)\91m:UFjk])/bH + qrY3^.U^eD>o`6@-?%?RDq?#,k8j$K*\ZMkDs"#h"Wm.$+#!4-B,;YiY]<VB!"oG8;@%>a% + '7K<+YXQQE#0[q=!?kmG#BUf;CM[1/9c+gYXaBlE&T#G3dFOcZ-D^o;G,iAHN`n<"Ys,+P$ + 8*q?NoWG"tNO/Xs#.[-9SMR-ZF6ZP'mS`JHumAJ[1*ABIPA!O!ucH.;1dlX.k91TaDF/$<! + gVZE1\%Be(mD.r_qPOLi,CL?R(*kp2;uZHisMdYcK)%<C24W4`Z,$L9=T0!;o_nF&"ao.Oe + I0<k=,nG\L]!lO750X2!>jWtKF+Hf;F&X+4Idif>14VCG-n;e)9%hr*m2)C@T1WaVn&OA6N + 7$nQWb"jkcZW-Q#bnZFJ("6Q[;e6_CBblQE(<kF%1NaL4Go)ZlSl:0c8b4o]LH)Ps39gZ-/ + J+U3R2M3Z):P7Q;l%ja1HMWpU[tde;7AWh8Gg7fr"6mF;93QNbl#l8r<CdM8p](5Eukd8.. + ?7=O6JjQM#RpE.rk@aOo7N3T)^I=/b08LZ4B51[/j"50QJ07dNLq/b5uP-1@d("nhWX-i<+ + ^2"4BI<&k%%d8Hb2N"NRtT$T?p<$RO(03\Xth:h:u/lR'tq-P16HY]R=\G2mOjj2:I:E/,j + KLucpEjWkcoOI7QIRcZ;uk(H)OYcB8GXQP\P7W>mgd(Lt9M_%]D/<Ir0YfsilSE_l^l@cVU + dbtZKjG`Zo%[-2haPRL:,j^Q;0@&'DE<.aj"],]imZS/XYn^+L)XjpP<DatrE@3N@:GVGn1 + GLYMnM\Il*qE5rnti/sF%[4R:73n:'f/o+BqlEE^@\U+2K)W';/8)[DcUdh(N4+udsi2*K3 + ++^(ls8Z;iqq2Put5R)6]E>e"[g;Vch8#3q9@e&[J3L5h'edeCCfd<OFrK=Zk6L4U0:s8pL + ;ugt,?\>r1YLF6_CRm+AT9?8MC`F8X^prn7ti?Si-tF:R%:&DM4C?o/m3F<K@X,2CTs@5KW + GF>D\!1u9_t@OiB#2CdU'917>g72@l@G!/:&5^c[$[.%^=c6EPcDe4$3AZdfoXuRmgAOn^n + 88_!)c;,liF\,VZ8WI-amU[kkKh?NF9!3:E%XPe]PeBo.C!MbJFN&!:a_IuNC@otj.(O,0# + nAl-l`f\MG0*Lfbj;dc:KGu+f%@mch!Qs-:j2"VG3[&O)XkmaDbP'^QMg7b0iGIc;YLOh(C + sH2&sq2catZV1ml_Cc9lcLrEmII$'jG`N_/kRdp$ZHNDedSL8C&r2pTo\N%1.0:%f!5i3Nn + as=(p$cT_``2qQmGNF1$4o6[/.:GUBUu.UN$q]%-8q4Z12AFi`/,brulhD`-%D/V)JnnCYm + _?:qBRD4Me$U9%AeXKASY1)/K#iF#:?gb$VlD9f?9'X01Ah=<P^<Zsj(,t'?T7!:4OVmAeW + 2$Hr[i6Yb?1gsp:ADu$PAJAs1FE"[K0&oiYj/[ZACP:bD9.:?I\[H[m%U/!-U?67#BPY9D% + X0EuI;(OIBlprMPeUrI_MNBS^@9NDm\LAY[7ust:!U.A(;im<gJ3\P%oi&c&H-Hfqe`_>mL + ]`mFU(a,'2[!IDUTZqp@D/4pJMM0;HElsM-Em%M%d9Rno7$:<BkJg6M#=iE]$IWohN]X?WD + #C(3_]<(HYYn@i$e42n):Y2bR4jGo0>,37h56='JdfNu;l$3VR/hGAC?bV&GaF)TIb?:U6d + ]X*=tSPB"U>3B]LiF*VcXVq7JElA_'+lWq&,HNt4M0Df(dCO?@CQOjU5\TrT.;jZtq@(D&A + #BQ9Z0k%VXIi4`*<[ciZ7c0+WR^,o!RB^8f8V%Ld[5\slX(.Z_H"G[VJuBKVE/A2[hh.jdS + ktnhg$OHk=._1KB\E9:\cINYRcpumkmQaL'%"BS(MaE]LU,pTfRZdK*MW,s_Kn(V/2rEL#A + s70DH]bPN)oD9<Jqc"McT]Dd4Ff=K;Pt9aP(WR%%W@k9ZhV3</e;bP?uHOO)ll"Nq773q"L + d;iK)B;FSQ*@.KPX9PBH[7X=>BUOem6kX'.M2>'%4':UnociHTW.>E)haX^SBc7<t*Nf+6Z + gHMMki<nKE:58df->6eK$]0I1I5^1)HRh^=X'7BEiI4F?a(Y_8Xha4g3YT#0CZo<I)4b#4R + Z1n&^RmDQBX[Ptk"ca,#fsuYl9&]8Si`fQ:q9%_8cUYOp#Wl[2\2?ge3Ct&M\bgN&<1S],U + P-h&\/84<pfT,7>q>6oL,?`W=DOTebj#bhl?f4upjHr'[gm;h]%Dk7'^k>7q!C/RUY)%&pn + (AbUV'^,]U5g>#s!o".*"<X;L@5Y)JrD+,89Mp^7'>,2]VFO;"OSWNV\Q5:JV`Z<PTN>Nt5 + Z[<GRYXHbfAMWmuHs'nND[%Dgc3=PCSo3lKI:.BM'lG<49l)VK>i3El59_trIW]LS2&Q,MD + H>eF'_),nMcrHbg=HLpfV.]oqFD-k]q?Q0T)=`W6lG<oAY!Lk0=S;CY'.:F/EIT_]e\W]CK + Q?aIB@XOrW[OniV:UDrW[!],IS@'[_:LoqnbP"`U139k1Fb3S<Js:b:bCd6nfk0l;B01*cq + <$ellUgp@$@@89]_,t1Z_-R4ch+o](h]N?$+ZA(d2EsZSJSk:hpM4QU>7--(=1F_3Ji/?]@ + oVK3_-!5V,7+X;-:"W4\K^a:VCrO]sBT0oeF0D>uQ/[1jeP.]C4=[+kH6f^NEJi]m3VKI5\ + _?F5!0cR\<dYUsC"mff)c0pJo%u[uepqOVNq>;4k^LD;+`(OuIKY4h6a3]f[*aV;9+8h8rn + >6Do7ZPeGU22km8lh8UJq?5j&p=_-3RBg=[q!.,AdS9nVm(LS1&I9D*U=bT1fM#t:>@@WZm + e2s(V)9NX^Ze,/ES?'"t43KXlJGcsc'PGW,)k;;r[GF\joR1=5AV0a1jE]QPg#36AF(`/KB + Cqm24+2eXo]J719,[Y_>lAB-!P%+hrt5;Ri]&'<%g3H[";!ir&3U.+`1V\&+DqH'Jd,_(5f + =3e":IKsYX#"Q#SVdmTRdq&6=0j#_#_nJC_.He"jWckW$!Dm#_E*@E'Q5k$NpMs!-H:)$4$ + Za&P0,%[9g+?&3o(!8*gi`"F\pqO/O;c#l'!7m;PS&&aKRG5osu8Q.cN6Jik09p`mBM"EqU + %O@NOfeHC!RTT4gQSd=J13HB(/,SA'"EBtQu7g=8Fhh!e[NS#Is:BYON)c0#J&[;ISm%B>O + ,?>*"Ji*4@7[+L["DC(=r(&%n#gIrW+H3fT/"ZrT_&3eR4;!S*Jh^Yl80\TM_LaIhE(0sBI + fs+E(V[s7nd)jZ/te,i,3/+p>JV*%7B-Vs5R8NFJegm#@Y,@,8dJLkKlRH"TS6h\<PjP8<. + Yi5+]*b)nEL9X+GD9N;BUZ3#Z4"r+[Ubp#U)B`'@D[C:8!:"#YgtFdKiOeL`nI(''LJiJeG + @=#YH4mRKuJ-KT)FQ&dTX%Je?'I)M/Qaap:G/KMi(DTS,_OJe7,h%"]%h+UEZ2F(ttH+G:( + -5Tk^Wm",bh+Sp[#L`lDC%o`lA4J7>D#Wn]3[1n3&W$(;U%VR!GJdsW;#WNrZH3cGPK5E`& + %>Z.XJdk6ndo2ol63oB?K/*]fTS"P$Jdc<8`.ACG+Mh?VK),a++G/ka/g,c%N.MF.+L6S,# + U$<`TRsHT.\MBf#UuEuQ*c,M-m517$0WM&EM.nu#UU[G=pQE[L`hk4#m_Z6JdBMimXL%K+G + PIR80EP7TRm4N+/"2U#TfXijqNCPBHVDK#:L^7M4fF2#TFn;WX'LcJY"uU#"TkGJd)K'?^% + .6EX3GRJRSm"jp3)/Jd!PF:kAi6+AJE"JLUqVTVtH]KHKD\re@'/H2`Vlkan<%U?K`\J"qe + q5(B@UqF5t1Vts2mV(#SOR%NVorgBDCWW&BZl,ipqmKr0-TW"dbLjuAdqN??-BDS+4WToA< + WiJ6;XKAP$qS%H\-i1m(XK+D1[\)korjSNcM>k&Xl`'lqoF&h8^9B!^!.V4cq[.hWkPGmAZ + $hNKa0I7qrlQ>L\c0gFm+MB`TBuT2d'RX?;Lc(Zqc83SVu'eM[O:rbl*d_+Eo*GUiVq`,mK + rmOTC+ANj1-dHRcpC3Jc=o+m]$3OTC1%dmCTOu_Xa>f+o_)*mn!IAA,Q&9,MmfDRIrchr;7 + )sp-6mes$,QB!5TobJP\B8+6Y,&T[Eaka8-AikY-K"=@S"kar<_.r=9G269ij7s$WX\'9Dc + a%1ubq7HhsFUETVr8,>.dki@5gZ2Ten.R-HQ%3pr+N'G`]s%-`!-BIek'bZC&8uZ)JO7]eD + dcg^(j8CZmoZ%g_.VDI)XZ)=5gcs8Ds%[)&3fiq%*>?SB:T=:YO7`W?e0t>nj8DB,obSbcC + 6)7B9hUQ?/3hY*s&3G+:65'4,o$c^<2uaDWe(/La82n[lF_VI&cSln.^`=Bj^+#@GX'aRs& + ^NE@?:)=5Lqs*=Xu(9XV(Q>#PumklVrA9EW3C:qV.D'F`4Dtb!4K#s'4U_FH?+G5M'`&?0f + ITY>t'(80[mPlgTD-iVpV?.fs+;)2'][rkc_Q%Nk%&J$C0r`@%]%@gm(31'.Bpa87&&m#Z_ + &@K+Ct.k5+h\X=!%@R&P=s(91IS.G=85M>-6B?^F.&8$aFg,hl?D)J5ungm#H_#GWR<N7p2 + [+?5f?u,tEJ!.YI9:I_KD(Vlu[eA_98aua."8niOG3n(Tj*kqW!2pG!Ud*"sLN)Z,Y8.2\j + @B#X+6B/FQDZ:q>g&UXY'n[.'(eE3i;YIUS^TWt=R2N1Z?A\sJ!g?:A=^WIGAd*2]GH=lbn + 0n3KDa1\Q]Ue[F3o5/;<f*/rb_u:\pI4am_/A3ptlt1+6P&%SAG2GT2Y!&YJ'_G2s,;hq;* + 4VJ:F.<o_r4`s*ud5!M9DlI#%Oi+6V>]5aWJmi/A>$BFoZd@K(j$bSYtoH4WCk8I5sDs$K0 + P%RR*m$XnE;L2b]^U;?heL\`][E9\N5#_`j71e("<r?2^DM%_(<:Ppl%.`GA_5LQ5)9#LTY + 7EDqSis]FVZ'@*Uo[#hO;#a7PZ8KYsiuI*\F\bC'4qI;`5L]g`O)b.aa>jVO<,hk8"8te%o + dM+2>`Y%':.iW.6pK3Es&@Ea9hFS8.&A2dPfhX.X+C8QV.?Wlo#=hU=`5nC;#a[NrF\dVGq + ^QZ`0f!tA1cd>\-MliRF='-brMg^k.:%(lc=RZ62nQtEql.<MK2I+beV9r"X!(NJ$>?q4"# + ^PSs.lT0ld348,F5Ilumj(aoOc+,mL$dXFIP'rlaM:$_d2^M:#K[7G7J<UMUI7dIJ8F#bt3 + <oTk]hQE8W9@3QtMTs0USAPFV[B5I5$RhLBugkYhmW&5$s2i<PlMK==joe*,kqOgl(PDcH+ + =iaU#[9"?[Q`K5h\eg,i5O0n6XY-<s<l5>T$tHUcouajIB6*EUadP#?J`74:s'TX^b'@#)f + ,Fg*oget>Z.;5.]t5V1N\f`<p0u9Lb<5XY?(j="C&/A;9kl7[XFG0Vf:Jbn!=/S1[asHo5e + %VK:\"R=KDsh798s.Ke]C,`8IIj^s)[UfdtMbDlQS_jMP79S]9dj56caOtdD@q7d2[YmS(E + !rCe_VM0doJ!s*\h!q7gom0&Pa*R3OEc^j$Xti0`7<E+3ob&_MTl*%-GZ]R>jNBgaAk$pX7 + \+iJVk7`a@]V\K?#+8E;]iu'j)0qtgO$IVk6r,n&ToW=Ch"^rrNOY-n<8'*bD?VBaU[?e\b + R3V_]ASeV-k'gN?9=epMr5"c,->&b#SU@WKqS6`'s39673G1q>40uO2@^Fj>kKNmt1_fq]g + (fdVRLVRS<fGGU2MUH3DU)DP(a&T[T[Cc;VT<A?BpsL62(DGQ2)-6(%<kfN(<9-R0!Qalc* + qIlI,-7cG1VEm?Yg(6i9GB;fVMqb\AoTM2He/%fugaR\2KJq2PRJt,.&@HD2]]WSU5:UM;# + #0gUAl\2aQ@\;SO8._&bsgNFR7*MgDI-l`>Bu\)?1'o7/C&o.8Se/Gp<o623E;d\!hpT>K0 + q_hk#gMQN<L/\2':g`X,t#WVtETX*RM_ip1'PbAJMY&Y2YOqbHh&NQR'3O8%G_XF2ISrp@O + U)Tc/66raD-+ZAg3`Dn/U+@t7/MH0C\tUo?ZN2:<"!^_J6aNtkPH_9C4><Km0Z62f;F*BS% + jXLS,Z>@E6b9(W]<Pg=0nN+]nQ%aR;7mP^V+Vl+>Jug0`MK?LZ8,]@;I2JZC-8e2]Yc1q>: + ZRdc^.#G]c/W%dkR`[eNHP^]kc6+C36e>FgJ/U]t/L&b<;cH5H!7%`\ZR%)r`\HKX>KJ^0- + o=C5P3%9.82].-t`ViMAC&:d3Ts)Ocp]"&kZC<4,s$.@IIj]QCQD[Paga5AHi1WhN"I?CU7 + f^T+.N,Q*GGXt#jZWiQ0"aiZ+"J[UE\2OeHs6F.[^[7FeF*G]RP":2&rgFKpo[lN>)96J%u + ^`GPR8Fq*JH[7WX&Zf^5/<#e%l0pY0's,OKXQfAe39iIrKu'M4T=WRFbD?`sME%saXf;K*a + oo6<r]'e:_D:)C]&Uq3PT]jg3FjM?JeTi5WO\H73NJXd_X=,?nB0d`+q(&)'JQ^g,qjAG\k + 4D4>VrXi/?dJR\sY34X/j.%![C>@,?q>bPH[+_4g:)3Yd-F(8OGRD[_sC%,YJaq>IkNt]0! + r#Z#WOCPfUK5:qR1P`3UJ\;]j64`?g_f4EOB)6=$m-dCcJf]XuD,6RnsC/Bq\O-DSsWK.s1 + W18a>T]jbupFBl.uFYfJ04gBdU_qdcq5,ZjpVrQ^')r\L^A[GWp1jnK#@Ym9ikXM=@7^MB9 + ;sVHPm)J"_`q/W="7M]%n>Ub72/I@lJ=/VqG!B5U)k;.;I!Ir5]t^#3S.p?8]R<#oIPsTD2 + GqRe$in?g!M%X@WtT5+]S3f@_*Dgl^jLs/UkumWMSQ4J5e=Zg;g-7JGR[U_aUAa&)='jF'$ + 36LT(E_uZ1?"Q(<Lq?abfa`RaN:ZRmFEO6,]<9oU[Xt!m1?^ap]E8)@&kai#o+s6:@Y:;@^ + QQjuHY48s>X)"=d$N.n[Ytb1&"8j=VVR0/#,S\g4RB3@$sKZpR/1b?QpJCc9I_0M@<(UHH+ + TUq9"$]H`*C0R>h(lorVj5KjI"9H+J;4MsQD`'d#4,_X/l>"d(e8'Ho_V#3fh]>6T\be-5K + 7,6)+m*DNPd)?F@`>W.'.k&'Jc-9J=(Go1;Hrm2hfgV.Z7ASZc$sU&IFA:Orc0Sc]qKU9n4 + X\2-7O7"`1up%njYT;W:2FOfHtTC2BXFPt^6;71]B^A&lmWTD[1mPe.$$RqEPE3.RhTqY1j + $Ju[6IQ\260tPMd;2rq+%L^:V1&M`-jl)AA@d;2J`C%F94ui"%Y`*aA`=6A-O&Z#:k.>[hO + ]Y.*Fl_N'P=@*\<=:jGuRrk.q,;\#XmJ1OY8T'M27=;,`%^F+XseR6d(+;4E>,]82M)S\a* + QdGp2&"-*oAU-^-#;Cdns8HqLdVS[/ITer^bN2a[_(IG.g\[.gKgR]"Q0$=)Fb6fLf*&5Vf + 189FXYFRI1Ho=$J/k^jW99hHIe2k2*3(qIXbM>9B/3c3^6;/(Z9I2s9KL<A>9MA\[b\]d1g + di/Z8PGpP9X7Vk`(WkS9dPHf1*afOK[DoMBgj;r75WL@<7OE:ejX%^7<:+^>LQ$1eA\NDZW + l$EN8?^m4&,od:).*Klsd[0ONpO1c<XpD6t[C-BMOe+:83]mZg&t2m3rG1:@h>sokdJFDGM + c_cTQ6n8[M8sS\J_0[EJ>H>l%N<q_eiZ2C/6&SGuZjX2"gM.eS3?$j5,QCd;81=<.WK.r\T + R$.qi*=B`DRc%icM%aaU#;#Q;2[>[s/N?72A/?=91'ULd/crhR?\5S.(]8/%]Q7\#P\AY%" + g>5u,hmiiOb"Iq$eKnA[-95Wb=q)l'ALT7M/(1bp6J\Kdh58WdTi1ig;[OmN)YlEuVb:NuY + O/Ks"04K,]"6o*gFELj$aNFsZ`q]_YiE/RI)ER['AKQ&41i1"K>-*r8)*E%]H'T!'hY<F9< + oO5<85L5'uj5Wa&NeseKr>f12'ZT0"hqHc(!3=7F+]Q>!8*V4fO1l.m1MghG,TYZmF;145r + Fdk<;o!em7"\CZnfHleUB2cJ<6C"`)EfCmr%SWH7U\qc?!EoiEF4=#4&^7/5A2][pVg2>^f + Pbl&GJr]fInf<g)eI=0BnIF(&jcqT$e=k(f5[m5WQ[i>`W<=;o?$o_H$=H*e3>n8JS&Q'3h + _)75"4c[o_JAG`I8VN;SKp'iIL-_kqaj$*uc'Hc3Mo#"E8emcB'q3PqO[;-mY!nna>UN\OQ + bo"9g*J3%1Rm)e/6Ypmg1'Wj"fOI51/epfdj;'+Cc+8,[p%lO>4jg8`&YEa]A"VmgGM()*' + QG@^ftA7>BN1mF@*Tu`7q+UgU0G]bXXbT);F0j7'46e1ecE,_UQQB]QM0BmDYq#`j17rgl' + HH>uTOd<8>C>7>oX>X4>aZgdT4D>nl1+`Ecb,?9R(P^%C@@ARXD;@_O[25"eFPUIiIrgch3 + %:<l@8m-_7hmPQ2RjKrqVL.oo[S6fHDWU8kM8ttDuHWPYqhSrStU8kY6=C1u0h[P%CZimh[ + [H62".u%D56G-ZQN2u@A:tieK<08_4B%Y8J?hBW9rW-WAp0]EhfffQ$q>Oc4*a*ptB0$6)S + 0HY#$g2sJB8rNDCa_;qlJWGXY1=6>9(?QlYV/1k;Zc^PN3q<Y)X(W`@Dk.["s.HP2duVI>= + Ke"i]gm/6/.,?Bd-&VCdqXK.-Y=nBm%2',YPd3+CaEX1+k68;^Ubie$>:3eLN4]>hE<,2sO + (@C1UP]KO$a4W$d$V`XUF-m]7f85Xnc+A1"Nk5-\D*kf0a\7`F4Rg6(4iChn1PjLoIhA+I$ + V\n(3j:NKaTF'WS3l")YYAOQIX<U@Kg_-ZMV*6%D<3jIQ_"`.cAjlHb,$jej>a^u:_=EAXN + gNW#'qds+F\%E>4f$@rfs0r75d:NEqL=4a5DGd9L;8.!$L=Tu`*p5C'B0tKmQ?H.aG=l1d8 + oj(WSL<geHf5tp\\p&0hVhm<J6I;n_\8e_7Y>-5VI?;X@C.t2IBVjo3,"jCkc4pU[Z&\\NR + R$MYhne^%7+\K6Kp!7mhV/;?Bra#QHZBLBn]/tAt!2r9g!f"4I5eQ*hM/>bsb:Nn&D']A's + =Z<o\h_DtVGiIF-NPdDbh^>s>:=p8caSXL'njlKr*Hr9.o)l*RV!<eTfX2[iIE%;T5;lYLP + +I;\A3&D%.!a&]dtDS,F,pi08YleQbkXScD<H#*ZOEMWZloR_)%IW<rWfD`b1DT:%Pa79ZG + EZC!RSVHL7,ZogJ8H-i\#0l^e&b:mFD#KE,V%r.#(M:P3D)X(M72oB1eRo?r\@)Xip'AMNf + \*_k=iDXob2m\m-LKB1i=@tdoqV,u'Bf*QmNjN-rdnR66#K_VdlrK7<edgWk]C+7e!73+VM + emcZ!nG2@O+3Vh7*%$\C;h8mfntbF1bt97UhNUod.@q2Y>c7ouu:deB[g]D,,5$dVk\sn#o + o"QWm1%r7+iC<G&%,I\ei$3UdJ]n/YbKM`brCA6ho;?!dd#ej-r%6.SLlW-;t3[qbE/h!6n + 8lUMB7[^KKP9(;Pa:H&krh;rW/]2q32hM+pJB"iJKG\'oUS5r\:rU+mM)b;U!p[28\"bA1A + a&k8DAd.pL0$7#:,i>J0nn--K^F3]BrplZ-Gg2=ID38Z^Cu@+'i'eRB<#k:2QZF17;>lo"L + 32@KOPmMki5,rpFe82ZgtDtgb,4%DVVh!Y/+^ufmMLI=dm+07AdJZkVBC_?,$G8;LVXUb7% + =i8"A$NTM$P:h#`aK]@#2oE&JkR=5nPe=7'[)RJg$eC=<\@`K:B[g:db^(!<bX6+G]/(p'? + %t*oMgR>S-K04@'JH6a]etFb1VVLH$I"#][&a%M2!T&D[IIg)u-k+g))cJf8M\6UVL3">`= + PYX9`-#\/H'TS=:,K*qf8_$eUVlk$]1/`\%.W$,aY=Fq:Z0LE,XWrsn<$?/=tOpFp:'Hi)( + +Zim2-G^"M6<k(e[Xo-"KSUcm#Y'CXGVDH0&;LB35mTTO+T_p6Je+N,fHBdd"<G;`:dN;:E + Sc9Vi.G\ced+*a%/hkGPRq=-(dS?*-m6),/V4?QK"p(P<.Y9%+AdXmkTES%+Fu!J&g2`D#S + BAd+@:Y_#Tu<_"3;TH%3U2\#S!GWdKg9"BHT!\!pCaXJc_kn.2O+WRKs3BJ;OU<7d(s9JcW + q8)M/!G+;Z1DJ5QXUTR]?7"3G4!%"\JX+:*Q!EhWg?+FjiO,+nGm]e@Rf!WIQkL[#.o+G\b + #JfdN,nq%qh+n%E6LU%23TSK6IH(]qWqLTb:+lIqmkTSbL+GX\;Fs)QD#^%8F9d500#U.KF + *69;H9d#38#]ZMm&dWHLLBU;%)sAHXJfCX3\Q9o.g'DO<L<9d<+GRRMJf;]RWe).F+fA`kL + 6;gUTSA%(BA$rAS:VWW+ddj!BH`XV+GNJoA0?Uf#\.*&+c:jgL`qM)(e>g&FWcD?#[a6Ynd + &RYBH_VP(MFt6JeogYEIT*b\d2L_KrPD^@-AbGJegm#@Y,@4Jd>GNKlRH"TS6h\<T@a9<.Y + i5+]*b)q'$)C+GD9N;BUZ3#Z50s+[Ubp#U)B`'A:5.:8!:"#YgtJ)@D+iLf+/++6[_DLhUO + c.#T<?qD*PqL\a,_U^-`aJ#&Om9U$hpEW28rl%/i%+6fKuRign7g79UJnq;Lk-i/XKW5nar + J#Ps7RD12nJu#FhlDaca+6q8QXrls!rigD.'$.C28,CY`XbZc.J$'%Qjj,Q;ZLGO\a85X^Y + Qt%.J$=_*%G*<C;]*P18,FK[ZA8<.J$TCW2;^3Ko0C\[a88JY[0QS.J$k(/?0=*TPA&_nmC + E5P+78%dh]M7ero&4l,E1\DL\mBe\]=T?J%A/IW.2D9K<X`)Nrf7KTC3BknfR<Trd"hFl@: + 7dpE'M$5L5_s5/[<r&+fEXcf>X%a8l;a6kDT03<)93r<<f)*'_f'+@8Ur$R(0_5LA'_6c8j + 6&+i7Sd3LD6aIs=m`*bgWGlL6#r>H4=Cd6=c5Y"B8+!^uF5LLDK8AkBO&+l)NdUZ0Ga[%@% + @K)N^qH+j(C%%n:_&(Pb@SDFQ1Cs-)5LWSF9o6D?-UIa%a80s$l/7&hU&LYhqL4JT!C8,&& + 3nZ(s%u/^7M#/35Lb5`;Gnr9.:k32#Pso3l?IfY!WK$QqP54uRSBf9<3$aas&J+X=V(1=5L + m"<<s/D,9#Z%YQ3+uHlO89E@K*P;qT9oG10q!CTX:#ZfH9EaJ$#FD[g2cd+7"MiXsM0"QU: + $\l`>T=iVpIpqXP`odVZ1!n@k7L!$CP)J$:*q_$BiA+7(1oYbi8TR#q>W,Q3K1p+/G\_#In + 3rJj[n4NJBR-6MT=J$OY)b(ojF+7-LeZO.VpRA2ZQ6iEO9p38gTnGd/)$)073&jjZR&S\$< + M3%3W5KLH7C+WGd[?e8Q>3RCVjJ79g[`6sh1MCW"Z*uXNG!F+4s!R3]\[QbQhV7@GDrj*2P + nF!pgae%t%OoCWk9/gn)#l.^r3NqH.ct!jSTF4H\rZFM5Kh.J05d3+\sHI`?$ib0,Q,NAo, + 9j;Ha\+#jk[Q#IdbMEs"i^5d#[cfnX_8QH#GS']^oSsc'\MhY>sjNLU?dsoAG!$'RuWmrc2 + @%jaAeap:g:\r(b?54(J3V^N]&DTB#p$&./FZdJeL5q=0"I*X0@3*s>u.ru^G-J"SOqJRHD + 4K5buE_AGUma8-MmkZiV2Qr+1K>V1[!`YbFirea5B.j*u`*(+sp%q5B%La_V>UXB(%a8/)Y + &KW7:fUijeMGG>Y7";$mY8*e]>R7T\0I@(DR8Z.^NC3Y&O7_9ndu84)dE4L?B^m.=dX`M*% + "G3Y!?^ABKokjP7EDkd5Ld4C;_gg58P(K\,h/?JMPPa%Z2Ue8'VUbsSlEkC>:W_;s&\7Z@* + :QA/Z$CsQ]glOO7f53esQJ@ZOUD;Bot0JAB\:grGmtlc9KoSe!a3=Ce^n>2]'"(?R,MtO7i + B0k7m'L'<64N`YLekB`DN4b';68mlkC>rL^0=J$K[caQOWGT[Y0>:s'eGR@+"dU]$\08gd' + kbo:=a+G;R`OOBS-9Vf%ePdNEI9*k>:,cu<@djf'+Rj2IA,g;^@QJOjjrB[B!e[j7>N`&Jb + J04G>Vc<s1iMr;M/#@s@O8?1`lKadWomjN<2aBUn/SD1CXjak-ggJ>fYTNP`]%;9!mG5I'1 + ?NH3&,QH:ln+!;miKFdZX38/rK"6B:$XrX/8n8Y_gE^.c<9Huq;4?13[[Ve^ENVlD-a8n&) + u4_;pK^I)#q%qinZke'5p[grIRE9iET$8EZiRD\S*i+_BJr$/sXqtd&%N5PX:48OT2rEK(3 + /<Et3+L2+KA,J)8B)HnU^UM)Ws1UtDJ-n(%?Nd:+Y7'XrX&rWeCL-O%M[)h[X=E/kc44K#R + d*ln6u_jGa8a;dOA<-jajKDuVES6$u3Q7c,dNDmsHs,AbA30\HE*NN1XY2sX&a>jbTb=QE2 + (.ui<U]2\%r1fM=,fIjKF`>RPs-E6D?d(<(C1]oo]k6L.brMsck5!+Z1QquN1UMYpI.NrmS + Fb(N?&Z&Ar'0g#L=$\JJnVSnb?9f8+8SK!kuoT+FMg=V1j;^C#*VTc'2PG67oPQ+;V&6]0l + .QSZ"kOnXW(TTVp35T2a)IaFo-R=2(cXDpBe,4cH:.=19<Js\8n^K/Zl&,lH"'>cub/u!A2 + $.NP_hgA?NsdY>?M#7sNjJ!-h-BG`*.9D<cD+m]jg.Z:CkN_fjrC]&64>HttonXqEb_(4FI + H[0Pp'L[=#Q`o>&<isTUPX)`aY5!JC$jD0@!Mi*,0P6gSWK?dZ2kX`9u9Y0_dk/^fj$bD(N + _M67W$SI$dcA'#GLqW#2^2V$TLn*_QnqrA%MU&4p0!=LC_G"bWN6E"%aOn?8h!AS>m&9@=l + nXX'3fi^a;/Y<S%ckRM*5tJlmj10dBeo.YAs;S!PV3;CD[_n,&BG/caGFHtjc8mb-HV*nap + E[BO\#(XP4Pc^RI%ST/B&@-9Ud\3bmD,/M8IOMD"]=+p2')dm.?l&FCMFuT20j]C&lWG"Se + ilq!&Xj/Kgc>.&(XQB<S,+MELa4Nhe-oq^P9S$<8%I:hpM>eW7YGB#:G8bgpCSeu`igC4L1 + oM&ku2DbYc7:["dU#-'EIfd@QgD4:L)ZuV&;+>'O5NNE2\b]IULFKN20/\p.<*3P'/Y6Sgu + ,:_MdgB-[DG\[_4XlqVom,&@>Z3R84P"=Kn[brbC"Y2W]MaJen'RbuYiQu,C8*[M1CuVAhi + pJT-CMn[GG:2fDJ^-[iCPIGANe6[u6#Kfdd$VBm9"Lrrk+k3'mW/`9^4r].L@0R]DM758]Y + 18$^*o$+A<,oWT+(&ZMQ?b/DQJc#h$rSfN2Y$]0^-?og;6bWm"jrncI!0(2NQ'H0J;4DcJn + 83%)iMo`KM#)8M9Ilr=SC2PRMUgD[Ma?%e28-a@Tj^dl?n)Eq3'maiT(U8VH\([e#PC'eHk + `%)A<-8mUm\oeC"%8\iTm`:aB>p.oB=D"+#)q)@bcT+?8BnVGPl!mrfcprX6F&!\$7,be!b + 3\R5&:T#,.MYbR_UeO>uND(R8]c7R!*(I[_O3&Bfb\ZapVi>NE1#1B4LAheGr__lu1$nnen + G`_+s%9BGNLq=&Ub-Nh+HQkN1(OBU'*0j(F]'-\-Y">3+X0`/,)::bb5QW@1BTBk"*-GJ;E + h@`UEiZ),`kQD0MJf*"Q6Rfi<,PQdU<=mA:AQ5#*Ng-a7ffHB&a@[-dFh<Y^n3!KS"6&#dT + KsnreWgQFY(,.F=V8&>:RE=Xo?>L2sI)o!8]Z[YL$W]h!o0&A]no`@Qh5/BdO?EmkIQf*uE + &%C4j%0];89jQibr0$ru=&Fb^!oYU%Am8F#PV%XD=#nW:/Og>W3',;*N.hR_Ln#laI:BjiS + .5K:&1C7DE;)L.l30s(sa_?/[;+3=(8MnPM2%6dYdoR9*>8=JNRe("4l+K!;Bf=@U2[Reh9 + ^81tHPa#<([:<(/HY[mK/i=UAFYjDEL/\c+Z](b3\dA(&Z4#l3n)K\e0^_*Dmp[h\n]R*V< + q=6dE:#a?Ms?Ar@ul@&_d2ghYlU+r[O)`/VtP9N[jMh+)glqV^3GRru`usF&3(BF9pVt&DN + rZ+cmQbe/I,H,2E>K,-WRAoISi11u;_<,LAS!'L(Dn7Q3"o,k+SU-cIBN=!b(SI8F7Wc5P[ + TC>ra@#4cg?13S22HO$j+#O!$2.tL5$9aK$B5r+]3;OL*/@gVR:6aETsEiVf-Gmb+27P_L^ + P.aM+NsmY*8@$DIZHl4)V%#hr%?fOAFP/9!\Ls-+lk&S[Yk'MepFiK@0C\uq0`mH!#/lP_m + ^!Pp"Zm<;)\KCtPLC`h1FEfL9bOOTnIHElD]Dla4#?Ck;f=6%D_bNQ:DED!<0'B]O%<Q_@2 + 9Mf<NfO@Y?kTmEu-WV<mP\#`[;T:Kc!aETC\$ZdubLT%iJ(]q(J-s&"[ERV)ja;e!$sRn#m + ZfVUU[;44USu'suMV\NI:4Cph'VDq/*PFT'\G>r1MHD1u9%m9Slc?7MuTQ0R'7!C.Cm5ZRU + 6&.I<6'jrj5@!!7@E$!f_-XehZ@<=!TcnO<33FXg*@WX`i0LFZT.q:(a"Vs/Wcrie\77FXU + iRU^m<`"9(<45VGA^3:@e9PYJI:fWR#`_\0(3N1!GtAKQ$*Ihh2MF`rM+TCC$I3uK<g?;nR + 7g;5$gs-.G,7kjWD%3'%1]8N(::l#\SJG0/o26fo'YjFa\LF3:CbcJ<nC-("]*?4&@DZ/d1 + ^E*%rV%Qn'r4mPo>mP*lkN=;K!EdG7@Ie&Q;IS'JD*r[iJF,+]NAE'i.7Uf.C!(0ia97(2m + D8pH;Q$5ut1)(QWO][nP-\LNQCH)"iT*ondiFQ$.;6G,d-;m54[+G15obGOr>@F2"Ks_`Vd + Br3a:&'uN1/D`sB14iZkQ$BY7.kh**-?5)p:;tenNqd/mnEte\W9s!))&DN)s?qTA4/]f1g + cEDC*YKb_Unhf2r'4OTOhX0t]D>RfW8Rk^ni,hh+oMg5Q=L>;B7LgXI[SoZ(=%;U67lFdGB + GF%<IcO6s.*bZ"<d)$V>36Hhk%h58CUWC9G:O/N][iC^/r&T<_W`T8C2<8%cD)sdWG=?>CN + S.n;WSC3_hbBACof3!QI>/?!Dg/[:\N`7G3)Pdk`U,U`Xs50:BM50*H1ToE%_lDFXqF1CN/ + X)nkUbmD_T>C*m5'ToFk@!Cr^S_bk2KJ2QpB22a5NJB(j]$pGY`HG>D;DIolAI==O\\D&X@ + XNqorRG1E")'qD<m*o?UlVn4\N+n[4ZlGBr,#i>(RH.7H[4)oW4?%PC6b(Wgo=G`+,[7K + Zi$m"G9F<jQhSdJ)2/+"$^fQ&G8ZSGef1$dmWf\D"8476QiENL"(R>t"\oQ7=hc:6:RkH\[ + J1gk95/uWFLR[o.!BI!=?(q9lNq`_T/]Aq=nrDjNM%+jLKXoj[[j)dBSfn-%+_PSfQj2NI; + >9#C\WYpY/@"oOe[*Hm4eJ*N'W=7$H0HPDJWOR1E=D<=](-#Mt8RApr.32O/EXWEE[XIM2S + ;%;0#iqNesg8d:76$Q&gdFWNgSf>,.1JWK>_0p^rDYD&'+8R*kcFG)\/<PH/n"5Bi<sUiX" + KZasn>3uf_YPSLg5R7V[h`n(aRf6[+9=^+(,LAn<7YSh)#Fm.N)r7X4AHoZH*q0bN]JH8so + @$fP4fA/bPi30aAIZuL7e2;^`(UI3=6l5eI\,dl`21TdI[$VAo'OKbfB&[#pSCeurXu-HE4 + 15tXSaK">1khN?Ogat1KJ\sIFIRra[C=de8pFE0fNPs-M2!jtL311bX6mH"F%j)f/XUk"P2 + Ei-heW]=\sC?r3]/RL0r),M]=L@e2$33.%ds57MY^=k0)lOp"hcs*N"mW.;)7[Rhi-90np5 + LY\pG.'m;b2H<4M*k)!]>Wqi<U?O*+rnXQRBE"'54&3#N)`D$?%:J\el7X0mo^ELcj[-`hS + D3nuBP(O`DcWND;r_t1da3o`>kk8a?a>[$U8(!FQniNI=aYIn4+]ON$F"($<Z`msIs&d>N3 + #CMaDI+/aV$K&,DLLAUT@2gMA3L&@1R6qj_".M)US>0QC7@MCQb1'4o=::VR\$X^ZbPB82g + r6[cEQm&aS\3F[=>NK-2b9;s\XRTa<e!],K=@4BT<<7-oVnK;[CCCLck`6Het]bmD4tj>Ts + W(<kd/Z]J'lo%_0Cf3G`C.@YL:ql]6Z\urAV@^j4!e(V&`";[2%3F?&RN;]lsY1\B1WH@D4 + _M;jc08ptEmfn(0KG<;.oXGjVHu;lMW]WGujl=$tX77oqaKci'85g_Z)V\(WqdG$V/M3@EQ + $.p;JKP<HU('s2^Q>Jq8cY$"2=>YD6Kf>T\BQ$c`<Q.a.p@s^=NYZ(A;pV3&"Fg2tg?doTo + )]=&aL>5pi62?QCHRE6lQ!r/u@N.%O3MPCKVaNPFHMjgRI'9n84g]68['X,Gr4PQ^_']%\A + XcoJ[U78LJ[RCbjgK(uG&t+E4eBr)T+mWa:ntM.MpF;B9"'qn=C%S[L`c]e"8j/A#/J':0O + -(3$A!e:@#,X@-NaH9^p#L<$jRc'J=p9e)&.u.P=ajKJHPlL"+J&CO>kt;#5Wnb?uLi?hKK + 'K5i/_(U^cJhGu:5Q(`U<rmt&*Mn2G.mf`QB4h,$%)C'NmQ\_q@=)j\MHE^8E!2\Z_=")qJ + ;D>5&r#2Oj>0(:dS%CH:S^tTDY^'Y(qJ[Jm&8/k>@")1$S0K+RnT9Oo5TPW7"1'YpQZEs$Y + 9F[*dA&-aNL`7*6`.>/NCa^5-B*2O,fC1Zi%=>a=Y97Vj)X7O;JZ_!%27sB8"'WLkSHp.Z# + -rf]?u$7r%:93=5h3(rA.;W$JZ>AXQl;\'VtRpUco!?`8HVi*e6e"ML'F<%PNWlI!2*lf## + 6:Og'17oABYmAP6`$YJWe(l.ghq[U'=2^A<I-f_oN]<JW].6*.a6N)&X-]A6K1++Cn(K6q0 + ]b%Y9__)%(qVL`$F=TO\Z>5bMWh#!^2M)#SrGW#5;\O(]C'.%k(m#!=#<\ct5h8/UWCNeeP + 7JW<8<j"d9;Jd+0,@r_c3c,^aSJW4=[e:ET8\csu6@lafM+Ccl*1/LLY`ds(>(rCi_'Nt\o + TORHr/tc\5"te9E(pnjP-lB1>MY-`L.j/<$"tCa)RKb3@8/S(PM?k&jJVhpG"t$!P@Kn-O@ + T@Z(M's4&JV`M,N02cUpkXKWBGcDRLc0P`+<Y+h"s4srl38;68/QN$LI`8&JVP$["rj4DZ3 + D5?@A3rDh8gFDJVGQi@"F%+\crrn@;5u^+CSRVJV?W3;LsN-(f#X8fNJIlTOB#K&YNPJ."R + %"(dNY)kSQF5K=La^%No05"q;\_c;9(E#T,1FK#ecYJV';Y"ppr1Op22b@"roWTL^78KHZ- + I(4W$uqB19^8,=[3U<(2.O!!TMrfA5d&cRq>3oWo"V5O/rJ#4UiB<nD6\oOC7l/DW6TBZa^ + TqCU!rhJo(8sZ?S-i0KcWb;1.J#_].Z@Ap&3kDMr.k1J'+6trd[%HYerjJHbIk\C8CT?rTY + 6XptJ$5dHrdV."qZkWTX?.'7TBp"ca.M^TrlLf!YAh[k/DE54TBu[Yd@]eTrmRM,:QX,7Xa + =O2TC&?OgRmlTrnX46n$(]Z/fT]/TC,#Eje(sTro]pAO3m.&Y.M,l]1;b0J%On@_LK42qoe + oMmn;7+O7V-kc\VTbA,Q1aoBnihbR-RIo`(R=rd]e#"WuqJJ"Vr'K#d]sK4mCRTenAdd'3O + ;,Q/(4oK#4`r$k)_N=qt-<^4u.s$`^](Q\2t5LGu^7]>,_UU5J7dI@0,,Q/dHoSPl]4A&0o + /LI:cVE`Ljs%9'b/!'>.5LS=j9<!=nVDQR_dkLer,Q0K\o\)OYHtlD*brVbbrgjAkHQVMEJ + #Di9TL\j2O(oCsW0J8ce6r;Rj8DN0od2oQW;fcd0heRS3iGRFTHEHXJ#ZBFWQ4k7+6p"(Wm + tFW<N,puKDf#8ol<:If`,$YZ!XRIL9XcE73H@oJ#pKcZ\SD(QYT0-/S2/q#Q!0slZdo^!WK + TaqW+&[R<1'XfXqIcmiUl:J$20;]ncIZRqq8;0BNC%fEhLbKDgE5p(0I@;#asfZ%k%<,fPQ + 9'd)dMJ$G^H`s;J_+7+T.Z6i,aR8Eop,Q3o=p09i8JH'4KrL-RFCsEpI4s0.`J$]7a5KGha + +Y=G'1kq7D)KSXtj8=jsni##:RoaAWD6C:d^.X<61i24MRh,(/5KVAjD/Htr[l3O-gUTouj + Y21Kk5*sT"+kKP)8nLd]KaR>s"$o*`jlm4j]oEcF!\nWQU1UVSGSn":6F!dLK*Pt0`Nj0r5 + C`&?L6LK[s'IcbRa;%5Kr'c1X?*Z]Jk`<hFksJKDa=3o3af-PL+UD:$TE9ZM%#ns#<CDiXb + X>p`B=mI'9+5^6>K[cER=1&&%^%-g:N$_tnjQTRWQ,rd,ais+#&("2L9?!mfg)5K!F"5o:a + K+LDu<:i[$h!WIb-q@nTZL(_@J;[VJe+s6$1J"gBNMBS3=L9TMS_mjlLL\`tPkidMkaFt17 + /4YOO/g[<erf[T`:*8^e.7G)S(#mGAMeREcV?-[`L\bP?;2-jGGgdSk>&k_Ld!qs,iuB;>G + )m7#5"ER#5L_su;,R`daB9#tA6b+VWb?m]_>^@.S<B&`@SKG94XZM6s&K7#=\;7U.HO7(Q* + Rf*&+tT?efaupc"U]]BlPc%jLeZ+rG%DdY!:L]_jF@@A5&tj1D`%N>pK;jO7h6ak*4Gd'5D + DZ`V)OJkl5#]MK$jDcT5]Dm@C=@J$BUb`93Z]T$u\I:W`Q"R2Gs7U]$D'8d@ZG9adZ%5)6I + arm"%24/0)[N&3"Dd2Fkb+s^0dO8;L@kt>#k['5[U>$ag8Md`K)e[&2#F&(J*D5Y>YU(i@O + 5O'OaW=A[<<3iT+$KHsbogYq2=!$De_.kQU_9EMe]iZcuTQCp5^DI%YlGrj=XgPjp],Ka@N + 3g);p"m@5])(o&%=g:TWT=Zf$XrBrMg@$G`uCe$p4rU1ZF4)`^)+\"%WTpF6iPHd4%fDmKr + @*=M"<j9s(e`jZ@FV5g7Lb!I\:*K[s%K&_'gUKO?s:?cuacmMj8?,*$`#XE=bIQs)fs%fXj + u*);WeMN?R6[]N:9f?AO@Jmoi+N&MS^l$fudiZr;j+jX__!\3KHU!5M\L0uc<cRhLHk+8@V + s@0ks7YaU#;$5,O`r%j)sm":CEJOq:Z0dDJQ-H-h%8kD][WKffOPN2Z\j'6LOAM-#F9);U" + r-sfK*^uB_).]hVR^?Yis2hf9.-3IG0f$&n>dH8:jh/3lo*j-;R?;g!RCYWS:2A+\NcF4d% + `2=amN;8Z4D1YX4YuCCA#tE7O8T<WF?Kf#\g`uP(2H;CrfGQ3;N"Ch01MBN*r;=FV<R89e7 + h9Ke>.julCCmI.?e8=R_?)WVUqpW#.AE<ih<i]No)_i<7if>@FYT!<?,o!/K6Ff2KGsjiin + sEC5_+fSNCYg;:_dff=(b$2\U3^Z/."Yh^e=,2dt`*El&l,`#`s=5l5o"Z[Aj:mOYX3/CY@ + n&b@t+clZ`F+*3-ro7imLLTP:iXbm(fYk^8q"?=ic+EH?^K920NOeBm\Xu[)r=qJ5Q%68Ks + /t*S/\em'T.QP?c3R[Djo(&LVoYTpfU-kZYH7(A7-ni4h3cZc4K)VM9!2BVt_gAJ[6`mRr2 + _]P;3tXY<,!<In$mYWZ,R_&FK=@XT\?RMS0hP#!_,<AC9tTF',mtY<)o7fW_RqrP-%d?ePK + ,e$,Wq",Z=71HJmbm[;EWZD]^%-rHS6_(0h#m,-Hjmp6>s2>E4pOK]o$qqRl[I"4K"D!(sC + b`gYXh#J@%(_^+#A^3efgk8#VVCW2&P^)N:WKNg_auLjMn(qs:::W@:eb2)23j6gtC<<LXT + +)`.(7_6k`QFu?8027m,.HD6n_UrTND*#i<E,Q'$R`[\?F2He0\CM1EiYFOm_a?+/X.r7,n + "Y4$5.ti^;$/7BY#qNjKX5VsF=OK-DGJMqM*brY8H[?4>HoKOf/>;L5_=+l>ju=<3_.q@>C + =>bDL**IO3.r5&H2fIdSiF:`36R;tqVE?@i(>M^+M3ds1aF\G&2%ds3GK6gHmgVI(Ttmt\[ + `M:bFQMmnY,gNU'mY-';@NE0e\D3YGs"^Be)5kW5Dg=UAFtd$`k"?XZGN(0PWPNN4h:k41d + #L_s7aW!tS'E[j4>N4-W)e3_6M\`]M=:]A('<HQ"1D*)*EM,u_]L]-&DX+si[]]RjD$PYa, + U?o!mR4OJ)[j3L.e/gc3)-BllES(#&E=Yirp1N_D8Joj/>g-saXVi*^`$f.`(hS&hr1a7K- + 7--TfKg%lc7VbPnRnCtqkf0Al#]+<@]PSR?DEcio53].4r,Kb%nMOhI20#un;tNRioc&PW. + LTK=gj1jIWB[2+5I>hY<.7']Im;o65OtqbF(iWNC(&Mn85o^_@Fdtk#"XCP*M`rkWSPY&$: + r)C8C?Efik_3kO21+D_#0=dUlqg9mE%a08Q6Bq@Id!1c_"I0_0hZeM>=uVe[Ts_8_],`KH8 + 24*m+foarDPH/0U[f,-EGZ\O<=*=U[W5W5<irb+pIYZmn\b)bSQJ+mcAKgonT]YbEtZYAtu + 51bq]l1J:Ur94IlEm'jlK\AN^)UGTQd;Du_:4%n'c,HO$^Za2_e_)l'q6kmO,,fCsU`C*,6 + 6rH[r@i.;f^W`Ih'spS,`(MD(c,@iO`8&\8]MC:d?VMeC9f,aB6=\8=/>dO?`E_$6CtPVtf + s<_X9se(u`*4TG>Vhl&]sQ]\ac".Ai^OXB-j8U#2!%1nKLSm0^.[T`PNSA3Bf*bCW;Q"]'2 + LIoDRCUJ^@ZBj*:b$OF$D5J[>X[6oC^.Np;`$&a.)kEX8/7nqPnUF[PWHA8@(PIJA;#5SD8 + _3*.u$UdD.fM2Tou/HZ+jb#KWD@d$o*lX*"jcNPNbud,TC:o6QD'P!KeG;(I+34+If?QGHg + md;st,JF5^fRmEj?+68tY`1B9C!^Yi$37Eo1,ENH^,"b6J8l?0lA0jii-6Y2n/sRfpS12"R + (.ue$b2"U/oI`02+A3D&9-l:'9JX1f.SF#'bAB*tUc1?F1eXW)9=6dkr&^+l4Nm(SbPFFs$ + pVrU5bp5&YoC3bUrBsV;++[0`,*Mk"NeT@b/B`J7&qBYUW#XM`l-rb1/l:WXO=c!.a:Xcc! + =72$s#M7Gg2IT9r1q)A6P??>Ktr.c0BMtr*IYW?`1PEZif2L%-5,GQ,ZM[`a%]*N9J9/l,J + RQ^6;7)UhcDmCoJEB2&#CY]^XLsD+?*Wa$jpe>?TPlpK&X829bkt9_o_+q^QCYcdQC=h0I? + FHI*%4clIO2.F?F&ZbT9=[d44N,m[U1#raCA[mZ2-AIR46%C_!#2k6"4V%Hh;&i\SY\+Gs< + jV?G@(:Z1;3(hZQ,1Su]PW50QdFFQ1jd3L5R*lG3TUhOS,U;!cPep]Pg%?]G".6r`RS(8fd + ]K:m]:M@<T?@D8de0Ne"/EaQV+XO_dljb\9;t9gWlp[1dtP!SPHMg(YV;?JYcL#m9=7.k5M + L<GgOm%@Ps\cM9&$Zg`-&aU"A)RH^XSOa]L5FU>gGN\9hc$leEb:H)pFW8a"kQX]`cqM)_p + -S1He+Uc+DS4j]Yp^><Sff>od2uX^3g]@FbP>7Qo>R/_AQ8j]5+0<a(F4D;80=lILm[?2\N + ;?#1s3n_Q+ohEm\r4'=$"EN0-8=$'_QPks!Bqq#mu=+pQSOiUUuX[!&;2O"8>21En@J%!mX + cu"?)Q%H'3EORc_[n=EfC;DiMGf^&6/8^9GK7(/hPdgM6f]pdB,D4+%KioE6fe",PKcA]F* + 2"#eXh5`Qqi=&YRSkH$;DXM77@hk)&lN3&\U0`:X.$3QUFuG73UEq1!qf`;p:;cM908uR`N + (ZHW&gHY3jSolo)uYZY=m'CgEesd2*F#a5$M;W,UG]1'LL:o]#7=Se4mR)>JAU(^/TDW</V + e[1W7Mt`\K]pbn`-@>gq_E;;?Rt]_kbm'\HZm<a<=>4]GRtCH(&73CVKF]t@]Ph:#Bke33c + \<Ya162:jZqAmLV_`eA#1]^&kQls8]>?1UlVdo#2ViT0'>jRdMmUKCi';I46>=#4,HK3kQX + lGq&FhSj`>^04&?Y%>9J.jaaW>.!0MJLcahaJFQ%4ntTaAO+e%Ap+$CQ>")TN+T3mT,)6/A + WUNd"Qo[effP#+]8A2;F34R>k>dp&%LgKPj'^soY',.aQ([<k'-X6%_Sr>7%Mp<9JjU!GkX + HL8VM2ofXQY*T,:877SZq=d,A>@J>=5bbo<kh%ON]d!BdL<pAh-Q-(uie11!Z.[c,"+k0uW + K9<9)+i$d7eg@cM9(>`Lf/)J\<.=PV1aC0j'gD9tGI?9Q1iA/sU9%RXN+7-`Rj1j6'';bLY + eZ,X5XW=DSe9^_4ODrf\nCOG^(m.=itojo+djXbX+(0")$^1CmA:Wm4^b@GE(mU`MI[Y+Z> + T#>3ro$C<P^ft_nFnOlAEb709k!TUDXbYfA%c>5:?dd!]jo819!)ZJl/FLnn2&G1=RUB*aX + _%db`n"OXFA_Xi63E;9Q?Q`eS2i\W\Q7Ko#(*n8I+"%'_QMeM7MX@s(=M=]Y@cg'SM=QT1? + #hCDIsp<?67R=+0\6!@N@L=/A:%*^G*AJ;ss'_G*,`C\\pSAD\eRH]tCuL83@CS@d]Vr5+0 + p/R_3h<>XQWg<DVC\;X_$7C'@Q$'ieun1@OY,<JI>EcDF=r3bj(Jn33i4-""@h@_NogjArE + hMrhs"kA[#t5+`3$5"eZ.%:02+h@c.Dqs\BTDfI(B:M&Z;rtNe>]k(4/EH])uIi2SD=n/Z3 + :_t,5c11>d`E3?f?VY$M*lq]2$=AJphibeA[jG4:&(mJu?f#KUenS&GCI(_Bf`*O+%2e6ue + FNPWD,po)2_o5mQub`?@)k.lV'GS\%qi(+D:T<IL(_q+'<_&eF5<Zjh55':(hbFpBK\*69J + c*BXE71=;f/[TL*10!Y%XpukdieHV6fg&m+YS.bU2c-(@Un_6M12qmiB&Z02c$3;bXXle=J + ?nXt`nq1,;UpDiIP2SP\S2/+:5X>a8:DVZ#d43k\9MeW)bi-Xkg1@dk\kE&?Nm7:1"8Al]F + T:1"63LBr'og%MN4E2RMQL9jpE:Y)?1<jA]Eokc(k&DfU]AJK0RG8++3'l2'9CYX8Pm/1Z! + (sh(Wa8Wp,[_hRRI.>^>CeY'!?Q[X-+NTS`fKXsi9ab'0b$U`O[shr9p1M2Gc.Kc[fZb+4h + U#XOCq)*7d=uP2O"XWp0PsOKm9H7MD'&(o1XZLbau7r+^=r1$STBI^mEI#(NM078U2BT<#Q + c7Os$T-1YOjpd%0Jr4d#^((63`$mTO;F=)?)Do5=!Q!1ZSu="$K3uB:'Rr#'YWhV6DbW%-[ + jS^s5b4N8b%\JXbS0kS^g]"#`EhE&1H%dn51[+D,j9RKd>SR4>Es*"9dg0YkmIkS\gR?@eG + NA]Pa,dfV0eb:k]i%'O]&Q(V\j),^Z;JX!@B15lX8""1n+fOu-\##'T2i+/p:%$Lc=5fiFM + 1^o;2JWV'c3#N&-6.*Kh&2F(kI01P+a-u3/mKP_'NaQ@V]F8]\)aMEI0r,4j_L[Z=@i-'"" + u#)R`R$>U$s<ZIocR_B(o@KcJVi;oDYso9!tml;E%r0'"sJPR+CY$^H3PDc^r)6fg^H%B%0 + %GX_?LC@@'TtDTO=Q*JV%PP,_:Oq(a0/-@!W"^+CJpg"s@;Y2M$EM(_VCN#T+'b+CHr/!h` + pF"p)]A(^,D?/C99(`mMG=*!?NBr.1K=)>JcTEY8S)+D8h$Hm!(7Q@YXK)<udEL`,?+Sl2i + uGbA]$#'Z_QFM<<sW#=6=SS/njJXnSp#':u#3X0XJB.W1rS;8'&JXf7K_L\3jncj$*B(?.D + TP!9qJX^<j["4\p)6e[\oTBDo+D.VXC*7,Z2M%;f)5;\N#T974+D,WuAtWaF#%aH><F16E- + lJ+tR-5EI>TdW.#%A]e)?sUmAdsKGQj=RYJX=FqHY+C3iW`\]A^UcfTOl*FJX5L;Ck7nN)/ + 4%4AXWg++D$E7=C!<m?@eB_)-VTVL`'9?+D"FT<1meh##jEX),,UGW#8-WP\:q'KHOh5##H + FQq?B`)-lG'sPDC)7JWiVB1QESg_?NZ+A?lD3jJWqEJWa[a,_;+=EX#&WA9nGM+Co3k7V=+ + e(4hT=)?bX7a;P\@TkF3?J"c'%,GlYuW\0:'kgBBiTBQ+MOItbTrfZTH3`;6>kPAG5VC24P + J#9.?DL\QGEd"%Pl5BSp+6k<SUS$gCrh](`C7_B(C:X>E+6puIXe4nCribjm$HBBQlWO4p+ + 7!Y?\"DuCrjhX$Wp[O'C\dtE+7'=5_4U'CrknE19,>OQ-i5$9Z=j%aJ$S8714QWYo/b4)/L + g\I+72)fe=Z,2rmm_/J"G<$D6%],[g2eRJ%)?QIXejTqhOZ#Xuhg/TC-.ekF_1!rop'CYMS + TW0&*u,TC2g[nXo8!rpucFV>m-ng3_/&ocNADJ"L`[IRj52+6W>&TC`28cmf>DkTGAJZ2TA + Gq@=\37Lu1L.YZ6l*?XKaJ"cE3Le%:d+6]",U3':jd<P[[_u1F5oOdQSW]>jUfc?j8rf>+r + 5p,>$,G\;!P#>un8V?shO7]/2d[:&,U\u^^KX-oll<te!J:FFNrg?:QB-6B6J#9a(Ro=WQ: + 8@bK&+o9Se&_PbA,STPo`#ts$A20T,_)bDrh@I0N?@FJJ#O%ZUuY^E;X.ggO7bIseG0&C,Q + 1K#oh-Ws3iQ+o[9/L_?pE2/s&Pon>EAGu.[A`$=6g$!O7e;nei<\4,Q227op[S"HI5o3<G[ + `hYWp^ks')8sDiaS/17&p@>jJJ@Y+bj,8,DZrlbn:V1&ejug@nr)m=12ir'/g>s'T@8JrfU + 85M/Zr@;IfVYqc6rL\hf.ls,%FOoEA@q]2<1I?:`m:-[Dcs(*GRQ&kWB5M:GnAh;2qZZ^LV + g!Kb3U]$gGp4>TO4%3iM-)J!"RRIJW(*DUGWO4(Sef*"BCX%*g&+W[aa^\jtD4S&B[bBKjG + s!20pj\M4lJ3DsH>ef=^D,Z+<!W4s+6?A:\47+iS7@S!`JB#062k#Bq.OfO;9V%u39Qh%Fs + #i(J!Zl.?QCYmFUkD%3p0aWL\ZlNjuM-W2fA%hgV%h!r6GoF5X3L,`H[FejZLSRoH&Rh+6L + q"RqJhq?H_)MYC5oS'9#0$5lWi?Sb#%Cf__:nn2gaMm18fu5L/lpIa@9X5Ni+J%q,E#_u09 + ?oAp#21^\eq3XA"S!'egAs$258"$q/`#,(#uKFi\A&+hD;d(oZK:nA=eW*'M%KJ5gsr=ok8 + =Uh(+3JV#Y*lIVk&5i!`8<G0IUga7c#Pq&Ld5EDl33*eRbZRS+r@SWQ]bf]#@Z6G<1e+FnR + tpiZ+6gp-7el-eA%[)JEU?%&oa!e31kC`$&jo3H'dFu5Q65C"J#TCn,\4!CP;7#MWe(/LL\ + e(olFKhb)+uF?9WOFnn:.LtricY(_Nn*>>0D240'1g6+6uIIX[2roVA-k6ZQ<Z$\X'c2qW8 + mcU1hdXWAUQkg7+:GHk5oB5M+uUS26IPcC*9GB57ntlo9L"$0OFK[.p7lnpaHt5X3p5s(%? + ,J^A]V6Ki7qAjcNc&,'g(fu4Z"FC'pR[Y@*S;%+Vd8Z**q8P,mK<,.Z!O:ia2f>mhEVKC@o + [T[WE$*cO/"9+ol$A@6)[7)MJ0u&eGPuB/T:iO\uWKk?9j2_+#X&X2D3G0pG97_2+j8QAcM + UboO1T%;:&B$X"s'7._G]p7@]pW@aB-%'QYVm!.]P!45%8j2b%n(p"lQKf1]@X?cpu!,^`' + <VES[7dYoNEK8Fe=Ki[.^BIg=Pin/V3%I:]u:&>AnCrg^&HHq#);u,!YK9`OPXh$pff=K92 + <@+887hh-7&i+[t*Q8=CBVqnIAo*&iWHR2TD1I=!.Ym_08Wq-Qe^'B4H98kDl27A9a2n.#P + Z&VC04AC-ej=T?4)3s\=nj+Pn0Hr(FEJ)QnVLL_*N`!SLq.7kFBnMVf7;GKgCeO6C4i;^f! + di2eR7k!o][T?A2J)h#lOYSc"Q?acf/EqCDnodjP=]/\P4Kc/['[.ZpF"_,3V)5Lsn6ScAD + NF_ERe(@US9_r&0P2%]L]2JC)<uND9_uaGdiP.As$>jS%mak]MIha`LCa>*Ui`2nU9muq1^ + uB6FR)KHqM(-?$;T*Y3?H^&DcP6j_bD'kZ6ic&[VKW(go:a(f;0Enll)&FC28I%5Mp"]]pD + aSNE^F<^An_AF)A"[Va@L57]im-gZMVm.ctn(mWNHo16'e-NS(H?KWp5fhIBC=VjcK.)L?0 + CHEI*(NW=FO"LCV>ZcC;K,G="5)RRQI[7BMict_R<qVpgSJ89+SX*Frq5_6(+\4@sVa==_s + Noaq8jf>&-CT)oeYmLtWKs#C,aC`(UC?OYgkUqNY7!QDDMS8G>M/2C5Y*qrmSr1gf^W<q#8 + A+6kaQlCBl\lU=X<*Ah`_R)eNt0IQ#lMSs!:@`BmKjNo9M1H6;N`['<"AWjXC@C;C6T-J&l + /k"%h?YE>f^VeaRM1Z$#oH/R[;6mQjg#0O#EC:3m26-bNY\lL"u=BZLnXQS*\dt04&$^@\$ + ;,cDfaJ.HL4m/GG"ppWWi6/I\:jMIfSDq(3S\%4%ZB/K,.oUJIb#O/eub5l3$'C+<.$NDOC + B<7R&JVFJM$dE:$PeCLa>rG$e!C53hSHuEkPrb@a<8tL!]O=O%ifoPp/-R>aj.,&.cg9%OY + Wm5]YeoZna0MT@<:`QX9A?Ra4h'[=#D;,-X"F+\k,>IBID=$-k5dBLNZ>rFlkIBGcV;I + &fOZNYHoE)$VTfIZ%<Wc6tf8/E7:`[`A``8.=P=nDl2l#]#6JMi`P9<'cOHjj9C+84^>59] + i-9k3d9tX2'IJaX[jOLQK%SW.]t_N/8+a^1`nJo#g4<W9Okh%;Z$&X9gK(ZAbrpl`fThW8, + 6Fmd,brm*<uhX>H")4YRB&ORD,rE=BeM+N8C7mn#5%OW;AT5/uhRn:bQFcOgfVJsG\[Q7j: + ^%jLRa5fr8>b%ZJ!7C_rM4V]NZRI%gKO%Pl0:A$>Pbt5^qdq\R_d.U7L(MrN2/GD*LG+UF6 + p[O'dM?M<?Nqga2q%9"B$6moU-MdpoqF60"MEKA-PoBq")c*p^O1K)p^89(Te^;Ih,%1?=d + />]KDDBfBZ/#<?o):,#E"V=5Z0_J[n8U2TWlH8)YPfR4!?`aG+DSu>&e+j3&HOX$FYXf:7q + !S1+X/TcG7Z1+c.LkC1>YAm"-P_JdQVtT6Ng:W"GaAfb:qjL$RK[%3RD%Xn6g]CAHm0h#-r + &pEcAI#"Xe87-a8"HkSGWtJq?mW#dTEqnrSKEPe$!H.Bo?ln=_<[="8!sL/P,\o!&QNFUN6 + "[a;\NYe]JdPq6mr/?m?U:sct;U?[oqlK#no'&sI"k)GPi%aseV#jDjn/F;fT0CIOk;$AXn + #r&>!0_#`00bfeu(rckD1%?DB0dSSh9eretQ*W1Y1Gohe30r#Uabb@$0h!p=8MmE+2!hT;Z + W.`]=V[p:($s0;%p(ZM>[S.^2\C*i8`)IhHT0?$T(.EZ%t+..N;/-)))INqC*,I@SN6563[ + ujFC,m30NB6>ke."neD+l18]c6FV*%&KADoj!&b\[m;Vep8%1"t62M#J"Gr_qt3O6kNYYob + Xl+*751n,D$-fcX)r+I!5f:_;BV!?lD"+g`6EYTbi!-R+X&,0,<\&2PP-2L-u;Z#/pd;FKE + ;FTf!E"S,B:E`E9`=Tt_T"m\fMmNDdp-9P1E#82)J%Q=Wq4?h2E#Vq*)/klVs;F+3E#u[*] + :1FUuBLC4E$?E+<DKuTm@1,uB92rANcAaA3_!+\<8^Pd8&CW4%[k3]r/^W@5E8n\d\Ei_Pl + pU4O1A)/uplD`Z&+]f5.16]'7da%;0b3\Od2+O")c9B3&haGi;^i?c/Q-L''2KTMdlS5l5? + !Up'Q5a2;b[tt;,j_d'nt<UdpEk(@[khZ(6`MLaitV1k4W_12m772Ob#JHKfEfJ33eH&nW9 + FVPgQmtq2q9Ek'9!bV`Km<=q@_s&$\2j8Ge[U48#pB/Qk2Y]f`1:4R.%e;qBPrh-C]Q>uTh + ::[$H9mp6\!?;pRNYPQrc!FHNE?W7<c&.I<6'4;Lj?rS'"E$!fWojJ4)!nJ4F&2cgU,=@bD + h\I_12D0=l1:$CHA$-7EPZMBp>@`a7##6Bi[SoZ(=%;U6#AuOLemh5$B1NM(#`_\/p2`duG + =aDo$*Ihh(5#3pLIt<a$I3t1[Z\<>QYDPr/.:>!1<A^GVbFP"9^\`O2RQ7m_bI3E%Wp^s&F + XG"m;1;Am1f51FSLr>r5;G?:epBi2X=35mnk_9&aofW<r5c1s&)W+'+Ys:G7.>.%o[Bq'JD + *rQQ&n*+&n:c'i.6A=";G!@rj;+(:@XneRrt7Blm?pFG]=*bl8N(<;9=O=BAj3QX]bfRea: + `G1E")'qEa>G8g4'e5*I$W`<71>5U7feaL[De\aNb`n'h+4giRQp!Tf+JCnl,fZL$s.]V0= + SKH+NX;1<-D62JI%blls?n10k/]f1GcX?Am@5KIiZnGk;13iFLYu!YPmIpa,0gq<b7*Z$+( + -b5Xdm]0ciJo!,DBuX`<45OSj&1-^X*\GOJE0Hu.'?CWG'(:?>36Hfk%h;:9=X-pG:N$/Bb + [gd<4(kP^C3#oL<K+%Mt[Z]Yj/IK9pWCcf"UIY_bPBpN`O<>Yk`,gf+8YnD:JT'%d._0$#Y + SKDTlGUNrLjF"NOR@a0-!C;_mmEO`8O1nkUbm:GBrC*6TuroFk9tG:?Nn/QIj1<S'01$-?4 + AjVLp5p@3QQ[<H`cHM@)^Fd7QOeV;J4OSNsfq9:R9m56r0XSV3NGP/##f8#S*[ahS$ed?>@ + ERLbOSQs<oQ-n]!R:U^M&!jEn?C>k^#;;F*$"'*OI0WQ8E#W2QO+%t3IT@6?cnO<,&"6BYZ + 'hY%b:.rS:9unb74U`q11=_(bCQS_SIfjR\_2S5':nWHB"@)WW&($lQY3l%KW%hAYc2<I", + 4;mL%^k+p76r"`p%deLH6Gjm\^MSXMD>u/kd"9QGgXD3A52%U\+8tpn9C#8W%]R`L9j_[e$ + ?j\s/Xp'%[5_fZKMKEte9]VmtHJRXl1i,H.!qW;,h&%ojB`>0Zo92_=3n=%:N($TLi_OVND + o3k[OtAZT#[U>!d/R4b92doq#WGUBJTn\D!s76I%'Ph2<d9lU&jGHY)EQ0j3i1[C?FnZXn6 + HaETroDs=h`N^6&5hF=J2q"iJ*IY::II\\51+KL%ksHCEIi5.Oc1;&iq6Sb\J2TCFOAt088 + V$WTiOR'"3R%c_=(RaF7lVqfQn5`DAV3s9K9V:HbF>sX77h_q8_?_KH[UTIWJ-MAL!.pqRu + 9qjT"[:KC.P%lZI6M!+\c19U6pX0%_W@T_n,W*UUJP:0`:=-];0\H:bLuDmdIf5YGI9VV:? + H\&LY7n!K:#-N0Q&Tba#n%ePj!2<#FE6)t/ee9obEANmhC[q"%M`"-:$e<j-9TO)_u3XcV. + 4p^rDYHlJ3:^A0h-=W5=!4=PJ3T>L>LX][SEGrltX4'PrSXu3hoEQtYme#rUC4e,@iqY+9> + X$2lR552@_Rg$fSlTb(2Yh-j\Xfn)`&"#$cZ*jnY2@Di3P-:C86JF)@fqZZ92.E)JReQj)> + <t[TXamsub<&FL<+1?BB7\69[@G3Ie9>LD@=n=5jE]iXH0GVSDeGU!B@NDa)gR,4r9$*A9" + G.\*;>1-rJ#+HL:"pSr<^#_%8@e6U0)uoH`([#+,JW0dTa%R4Y<HhT@5m:DEU(=\lI6!bDT + @:Mj5<@b^$mM;fG_gE1>aDqK2:SGuNFF'YEaQ*H,su;5h^\f9KRTq"LcDK>;[ufXe&DSWU` + GIG(#'X1b.Aq&``7,?\.rdl]-Af6LOo6X#\a>22-?gc[c'jcl*s`-UfUS54GK>K'eAhA+d/ + e_dSI[?f(*QP9=a:]mrppW$;25o'F)QdqI_`L,-uR0RTM[M?m\.q-%C,C;46]/Rj]6-9g3Z + h?>b4KDuIY9geR7G^+:e7E21<Istoiu-H==ka2Y@qM7[B%2ZM)f:6'mcE-n8X];[4*tY2mq + C4QTPMm"OLaQV!!%M_i(ur@l3-p64s3XGC^KJ1HGH,6-_(M)(kFeW:C%WJ"R_AeSZjJP$.f + 6$5b0[O';>WmJN9Au=f_qO!cc#G:aZYX_*EQ1i(`DKFp-Tr^mf9ie-WG_Cd=H^8/#/0eU]S + #9fhVIV#k>GRLgfoRKUoe1LNnt'.sF1\A4Ld-:A0$!b5Q09NVr@"N,dETM-=V$%W.b^mECo + mQ(K`JM,kRW"S4q\BMaSn0PFJCB@[QTM%6Waonu#/2_AmHjO'[<ksu^-!o:.WduX-8r++PI + f`P6PcuGZ#tG%oEhH#A&qU7YJLA$J,jYgt!_pIo:aFA5"IO`di(7Sp=3gq?5a$(3PR/T(JK + u@/p_#UjNI`<=E$STi73Fuj"@PM2&Is@'a:Sc1&;Uo'#G=Ht"@/VJ!X(a*#S?ob&#^'7JIc + E*ob!iaaojgL6b3C^7>MN?JI[JIk(+"5&E=_&6\5G"TL3`&2TQ.8fRXKF&Cc7?1.h[++@A0 + m1E]%7">WT*&B9808.`Xh$khh.0;(Z&">6?6iWLjX#S=@o$RcRjJI;"+"=kT]WWXdo6CJ$+ + :P]RVJI2YoSq.3t.Kh)k6=L'DTL)WuJI*_9OF[]$&<)/G[)rLq+@6tL+Ws)\7"GUL&:T08a + :NZK#F0$,*M>^H"<=(#`GC)0kR_Q]#,i)HJHg9)";r=JM?Fb=6%+uK"iq6YJH^i@=)"<n;? + R],5sb\fTKtHJJHVn_8:^nW&4LZ55md`++@,c+%j4.)jFIDh&2o(A8.[S*TKp?s$_Tbj":C + eeV@8"WBFlG?![nU'LS-nY":$&7C'4_`5[H9u!D!b7JH6#f&!<MM1'@ZO5U$=3jbOHNJH.O + JMLXd![VqXg#Pn:K+/feHK'4UD&r!%BqAb!Z-i,0>U8Ri?J"o&^2NFQs)?,a?kpcUqTBSrH + Q(R;Y`0[>MRVmVPa80h+Ve>jPJ#DK+K=Rpq.ZU?tl;@PXTB^_$W1W@Cri5IF]!AH=kPDi@X + =*kaJ#oREccN:>>2$HgBDU\=Y,D-aJ$16rpX-1FqZ=U<kPG[;Yp]DaJ$GpK+5*qNRjuUfBD + XN8Z`![aJ$^U#8)^hW4&XY%m:$"GTC%L7fq7Z2rnI:/bBDaP-i8FD\7b\rJ%4\=P(1#l/"5 + Y4/uej8+7?]=m%<_!rpHEHs6T6fD_'7c]a+B!+6U"\T(2f-?n(\2Vqh3BdJeV#q>VQ#"Fm( + !rdeIW#=0ai#,)Y.KEq>e+6Z[RTlL'd@4E3`W-o5O;>uCWqBmBKUjo,Drek3b01IA7)P`Go + NX,DB+6`?HU[e>F@Oa`9W?!:GoTVSgB`CZar@!a!VE`M1<_DUf/Z&":Q\YEG+6e`6VG[>\a + 80M/l)ck@o]ABeOT/(NrB$)4nitUUs%foY5H#;$Tu["a+6k,$W3Q>s8,A:.l:":D<A(/hqO + /MkFFU:[rhr?`UQXo-;lZ*`X2k(>+6pdoX"jUU8,B]ZlK)<PeUFaCqSF??'S!3(rj#&jbEh + HOB<;oK5LuM->3#QtO7fqGf'*-<o-&(U29NL#qWK$eXFID#rk$5InK7)BCp-k,^/sOu?\A< + ,O7iW>fGOWrU]#hjV@pbuCCqZT5_$$nrl%D)(E`!SJ$HQXa&r3^A>B*d&,&a_fgu-SA,V_? + VI%JLRlI,Nfpsq8rm-As5TjnLKFdVf5KI>)B[&!'2!1I\RZSR3jEQ0;#-cY3gKeU^KsA'A? + pDbps!E`%Zo5qZg`)H!DM8XOP[XPh)q0(NXo6&F2[\M9_#GoPr2r#g']Y^9P&cRZ[1Di\5K + e$G/e2aC3TiZkSKjp`_u.:\o)q;%,HGr^\_&tkB^H4is"]6)b7F1umbQ@+GRk,?4@;e,bs; + :d:FYA;f:MV@S(2h^k^T)<rbnC_g3_.snNKIeq2TFo3Wo<E50)7Ohi%)TYMK)I+oZ`lq<!1 + 1nc1p'#m$\RoH38KJ"M;kI\:KcJe1N]6"hg$#PncLkV.LZkW9"m"<rM\RM-j\reH:*+<Tg) + (;e.$%&'ITL<./[UETVr#Pp?6Yjro).#AP11.35K(k8?;R1eM,;2T?o/&cV75LRpY99FBM7 + L6sN,;a(n$*\oViVo>lFD[$mc8s!jo,^j2s%l)]6:^hL+J^9;OV/g/&+q>8e?JsO&jAfW.4 + HR=`0aNArDX=#<'SoDT9I]\;G(Y#.M^>1=+gHY&+tK(j`IeoP1j/6Kq(BYJH&eNqHhA`LG< + C'adFZ8J$)*:\Yac"RT!+"9o689Qa$Ks"9!XC$,8I_/E`Q[Y'$tBrkf!<%\>JnH;A8F5,[K + >A&J8,&,&FWW!rp'oHo:=[U;>QP`KF@7Yjo"HI(:W#,?9`O0jY(8;NrT,>Cj]dY_$t)Tu9[ + jIhbNk/]dOXZ*.0WO5[AGYa21FW^8`U/YauhWd[/.RdLX&,MntC7C0%Put=-LFPORh-I)SL + !D^$aBf87V'#B-[FX'glQ'PW0nr!JO8A<OCYaD_Nq0t("%_rPrIqKL-0;eO(i52*\9c'la] + V7fpE&Fa36*0(5&pU8m1#h=YI;n#UUYOj_#Lg.]%B71rG9f"npod"gfph)DkM1^\0qXc6#l + pEY!pLDOEqFBoIP`j3<-RV>3oOn>mmh#.Rh_>J)2]tH*9V"LY&XM,Ue[;mtL>HOZ"QDFJ+k + ]ZreFEpAa%f]bdmsA5(+F1lqPLK.qCcNVGq)-`$\^L]/+-3,UuP$p::!KS^fGNtUH";^<WC + /5ut>9TT*]N:F&0PS/Th.n+G-8,b`o3=d=W$"8u46Hkc@s!Hh)UG(a.<*N"8E(lu*QEoXZR + M/%BY3"TT-J8@Bq56*q)8hr2'*M_WY^bh0m@G\io$;,TN%rHN5P,G<d'O:6k_<'[W*oYQ\i + _2$*@/p5hNai3>_-UTMb$%?SnYcg;,VS<9%q"X,hf6%C<C5CWP`E#AF!F.*H+bY]gZj#pnq + p5"gG"JLoO3#A<ng6ZYIn2Wq"<6'EPYAd'gNm*BLVL9"7,rE#jjV/$[j0dG1ep$Fa0r[q`c + $3lE(4H4>LR*g:t&M<ldmm5Oh"3!o,b)UBKtd2uSH%`=#CUPCF(r@N<o32lO1]8Wl'"KgA] + Xo'<P$446]ih4HTT\APF;jJRGQS+^@Y.>@NgaTeF)7doZTuur"g@W8BTctGM07"nIRO,OJ- + TYul3dUcLdf:TPWtQ/J,:flM8i<hf2S08W3uU1B.gmT^%3tJQ'N;J&K+TA5'-q?.6pnU4X1 + ^6>9sLEfZ,B2G)H+3u+!k,7-#4_ne&Nc8a>.41Z@ZDq\SOCN@m&KsVIM6UF3te6dO)TT1GW + jS;K'6_J3A4#4c;=uF$$:Pg_cgB-d1@'!e7R$JA)nc4tG[#@YZdmk*a+Z.'#uhb\=ecNuBf + LLm(W'HVhH9Pa\nD`rf;0o2W26nu8n#WRQ$tTsqG9>X*8&S&1r@P@'g^@(%$OWe&*gUj][K + aL5UYWo;/P!R3Nq]/I!35XMk!6FRt6Di@V6[i>[S_;$R"h)A0V2e.%sd_d+m`CTTHSqDC!b + RpqEm&[j`\,l*/'7rMZclZ068V;_hPD6Sp)Qd`PXc/d[Z2qJR*j*Qg/a<O#!<>+nP!UqaT[ + Mqpj->_$QFVAjY,W3haqd"B'KO(%6Gi8ddds0mTTS9.\h#P=MBspWZFXKo3ch5e;Z@rq!D@ + L7UDp;Ggc;TB2DBNj]+R.d,I9bt$mY'J9EV`!/%<GA&gUs$,]gS^o=V]j7^8+O0sXS;&Qq4 + @_aLgR-"A,FF2jM%a1R@,Z>s8,PgR.\@Q`,b77/Z(CG3qBdAEtm]f]E'6>nYjg:_NJ4bMEV + dlOCR4O*KQVn:culs[76J2B+C^*84o1hF%7LW4@k5(%%XN+oZ8U.2KT7_tq@dZV!G;F^O^M + 'MN1)tCrtZH#&ua%Q&oC\=\(>IDt*[HOJPS9hrOH^m3G^W_,@fuLkmXIQYJ^^Pe0*.j^YK< + %#]85oa`A-PSEf>rQTS[=6hS;P+`Mk0d)X;U%hj:4`Q%j#g(/:2b'glj\diB]ks5ua-l7$g + 2]QpH;u6'Ba-F,7rUM@WZ,8`Up87%_<nTY_,2TT#VJ+q.(3,YD#^8n&@SEp4`8W5=Lm_ORX + "N2s,`*(n^49&qTsnfZ*WpEE#1_]5u".O[YFrAo;)95CPk"?4M_36RaJ9<:1t]K;mQ4KtTd + ]0sEG=[YXd_8I6\9Jf+16ps^H8^(Z\Ut!H'I)s6bae^!"Z0G=_`(WkS9haPLbk!-WeBl/Cd + D[#474Tn$gWrSud$I^4c$WU;MJc.Y=j=$OV^,KQMqG_=hS$IV7Ju)`%,n,Vil3P0`]A`A91 + >dqk/M6#RB1'MZA]&GlDWb.[,?a0bO!7'm@'hh54ieY!NnX"R5JJUa$Wu9_t?N0p.',77t^ + S,PPH0hqC5u`2Cs875d3K6Im<T*[Y+Z>R(>gF"%Yi`2V\JEnAIkF#KVl1[knFN8BscE$qSn + X2iJ6+F:ZJ%&BPgUaXe(H4;4=a'Wg>G\29P^8F&R#RDGD^T?Ne@]UZg\!5[CD;;7*t"-8N8 + U-^-#;BqCB99g'QVS[/IdVG7;PF@UjX$X1p;R;t3gRo/.YJU4Adefh-+XTQ5ZpR6h,0[J_A + @FpH0Z/MF]$mh*Z`k+=4A40e9B&+XoKQ"P5U7=80b$B0S3son:/"n]b\]b[oLM(N=A5M_9X + RGS9ME*-@SH,`bl(8KUeqo7;GAuH9gWF9<)lY'<[O><1F(@39\MX<Impa"7E""0Cu.VAhaR + *^`WJFgj58-<i>FI_:/ke*/*/s*kLNUH<bpsFZV@D.BrN@q<kD8Dr:&:un^d;4f*(_I&[g4 + 7T0I172;@oPQ$1KMGIAN:ccpa*D0i5"Ai>$f2Nk>slE`C\D+IlKX,V_3UN&4DMDml:fP85] + CNrD9H.\YufW>^obn8UY&t\J(XP=Q<>D'b?P#6ps;3Qd_V3TH5s3\^;\AO<K"-5&<Rk>YB\ + MU+m9'9@Jkdbc%b*/8HjeFI*S@R^_\bbu&Eq['hUWXmY>,<uX[50jt1g8]m,5jDR1c\KeY= + #_'e#ft*]<bG\[StmFe*@Q,Haug3]!5PQZ#dT?m)V9k*8C?34=e?DbJgbM_m34^4Ije][Dp + `#a41jK<@,df12,3*0u\iI4]GTioiU#R=hU)(h(;j/SQrMf@9)XO7Q&fK("h(^j@3Y@ejX, + pNFfhdU"4VWeqp3YoBdtai6M1c:D0&0,kEmGoN*%*f.?X'`:qk_pm^@?Wa#?r]44(UH;EXL + :\/3a"),b%IS_VG:ciL/95[:;Jl$TB:kNdRPB4gQL/>R=:s4'ugNb>UMC`i]=MoSR2%s*Z' + Nk6a=Uc/")>@8`e3Tpq\<It1]pDU@QoNS;3:*>AXWZ<1+h9-K\O<:Im3Pp6-96`-3Lm*Q/L + fC:._4=c\b*&YD(]"?001pE3_K9QWr0b/XLao[dp9.UD6Q(WYu?pn,DEHXS3>V*[);i+>CA + _?Mn$\U\kGi1<&M<f6bYs0^W_tX<.2P]Mo3KF`D#+*<5ldTe&b#\b-ISY1:1!8PL%3R;r#& + cgrn1%h,dkHEErB#7Es5nXBsGre5b&L4mgg#rRWGDfJHOe5"t-?7GH+YguNNN7_NM2eS7k> + ;,6e#cN1.Yb]5/(:0.dnhJ@A8"mAa6Uh)r@.W/8<P,dC"J(M[/AZ<u4*!=gsoB#5fhc'k`7 + JCCChVX8#fS01aD>\!oMmq1K2sSUp"I6(V!SJ+6k3SNg<cCp9fjK3!fo?C%;?u-e,2(6NB9 + Ee`lmGsH&EhIXi?Tr-:)%@S+5pHY>)jE_<Z,R^X?):t\t];be@@8&*nqV>B[j`"Y)^u[%cU + 1!>F$W#3_87`7U+FnBmNV8]Lprp/a9iKiq-#O<\\=f1?o=i]^/V2"#+5$fJ>->>iRa-I,)& + oWE$8fA)uT)r]f4S6gF=*h4ClW[RK#hNEtDJjHd40rG+80m^4rH?7nrJ.p"qk=R3t'??L=s + bP/F,^L!d:ca.(F_di$[=5N7ThYdH3$j(6NJ*#2`jlH\Xo""+Q@8N8!:p+:Z%a8Nb%H_2^k + &c_:L1ns]d:TN]d8PY5CP6Oo"6T9@3.r51T%@U%#WU*9;=4cX(>@H]GLA*gdRJMbL>HRV-Y + L[PkM#BB(4XcHJC<#"Y@cj/4YUPCZY3UNYMP%5:?cGX*RfA<6_gjQ`ZXL$[(AFa]2nB7%OF + 2k-<(a.6r*=-cB_F1QW.ji1#DV<V+KpZ9529hn!9PEk+>?pTM7L!C)p4@k+gsZ<P:e'4^S5 + "VPmc6fu;_#E(6m<m9VsJ@Qk;-A0.qg5-WU%Z1+Wrn?tjCj6PcsC?2Q.f#J<A%_9n4](%'; + nMGB(c#[[X("Z4sa.C&lY/'Rlr,JN]Cb:"qPlPBl!TgVmlt7Em%0bB*aCY>C[iP1hSbKq.b + Lh:kfSpBu]#O<+&T%_dhu>4o-'30(!p8Z!D,hJF(3*`+1@9g;dH5PurcP@ZgN.M.;E^Ugep + :`qQf/)qi=mbZ%A\(,V,GR8DDm)TA"qq)0]@U2F?Q\s:?U?^kf\G>drt$KKfJ^h]Pc!$DVn + +A?VJZRn'h9!<">*k-Bp6&o5u@me7HA_<g_ma_d_.g@cU8PNPtLT`ROT:19Xp4*rTh+2Ke0 + ^>h<@nQD\mJ!`c..lD?`<<s;l:B4MLTp5]Ji2.L/d7-c.2G0[Hi`jI6:8l"gc?66Xs%_>^@ + ''/`JECRW;G8=MN;t5=P=,.[TD=-l%_fspackUuq<a4H+CgT%'?UP+bNJ$dZK[?QLm'^E]P + BUB1%UZL'EfGutT$Q'7d)ec)d8&-\eJ<2dR-dV3m9_R#=#%hJf?r37=d:(3VV5Zp$b7SmdP + _QO?JX<?3nb;s=si0?jq>5U'@O[H*.SRkN"-3p3'baX1NX&[%Y:)lB"/_Y#&0"2bn)Zn%*\ + l0^s%ri)3+o1JXBhW$![nR""up_YVP8J[l/f'TOjK.@Koo+^rk"ZX:2'1.DX)*W#8&/:k=h + gAEoZnRfb!&a`'"8EX#*dOs":[)&`]JZbXYD1)p^V"!HAAA-a%O#!RU!?t7C8%!Mdo5fYQ5 + `Y&J7JW6=4=;]Hj1WR;N:bdn;@07>.+CaOO[K\:6MY&SW<")\-'L9V+0fH<A-%Umq@Q53_C + BG-``"4X#$p=\&n/u/\(iBNrJVJG(0Z4AQ!t.B2YV;tQ"quQ@TOAZS6b<F*^qnAOC^_0`"o + 9?LW#-ic#_@R+0JG<l$NgGq^ji:"$3gL3i[Om.^lU)S&0L*+#(E4XiWahIkSa#DT-tTHJY) + AJ#(%J*WWmblB:9$M6tdItJY!,bhLV6F@Kq"KB4;'fTP%.,FN3M^d"._N)9dZ%Z2t5N+D2S + sE?Jm$#&m.I)8:Zka;MR?S!'KMD4kLh#&KrE_?Of!kS^IQR]%+&JXUXH#&,2lM?[`:ApiTh + RE-87JXM<3Q@YH&iW`qdAjQ]3TOp%gJXEARLk1q,)2*R.1kGp>+D(BR?Q`qI14bdJ)0URt8 + /ZH!QPC\K>G,Q5#$R[2V-8G9BGk?3Q7*VZ>9IL'#$2pYC'I]]AR0n=Pt2cjJX$KY:LtY[1' + UXLAKh=UTOek<JWqQ#5_5-_)*Mm\AEj@o+Cs119d!ukdXdSf)(pK'a;HLR+Cq2N8YBUW#"[ + Wb)'FKmkSY@kOf0-8K-4].#"9YF8d7[lkSXk]ON8:HJWP[*#E9j:&dCUoA-)s"jCfD.JWH` + HpjnK>)"j4<A',!<+Chte4(d[nl@FtO)!6CB80SInTdT[PJ"`e:+/L/0ROX8gke[7XTBPP= + O.YYCrfQM\.Sc5)VtsMFV<@\aJ#6lTC4E,X@WJ$;WX8Zt+6jaCU7^^2rhQ1O?M^OulADTkW + e^GRJ#asn[XY?j@_T(JCF[b^XU"^RJ$#XFhLD[jio[hTlcT'RYD;uRJ$:<t#(Nkj@h-G^Ch + k5EZ3U7RJ$Q!L/q:2jj#52hm2>oN+71NVe"?#!rmdY.Djo:d/XpX-[`A8cJ%'(fH@NEeqh+ + >sDC^b/TC,SUk+D'erog!BRJuLMm^odl]BB((J%R0+`dbY!qp%FP9E74g[.g1Ird9LsocNA + PJ"Ml&Ic,MM5Ni7Q5u\,A&5`BmKDc#coH=I$Oq^7(BRc_<reCaT*ZsTrJ"e+cM'70l70ok/ + &+j$id=D6d6i@o6oP?b>`'?g`nK0#"rfBYH6m(Y1J#%YpP)&m-MCCP6,p]QVd]!1="8se^o + XI-6nGc/oM(p>FbaO=`BclTDJ#;3(S-Sn2N[`@;-\V,aL\cE@l2Z=4+o\/?qM((]+[mfu*2 + JAdOWWjbJ#QlUV?csdOt(HI.Kr5>L\dhhlC`X,U&M(tqQ?&4_-&9WE'Mm_s&VSd?4Z^V5Lo + i7=Am7M/7jpL#PuUclSsBr!WKH]qU?VQ>%+Oe['phOs'+O^E=_``5M%Uh>m(%J9h!^HQ\+i + Olcaj^@K*tGqYD<"no:kq!5OsH#TrCQJ$>XG_[$&K+7)=>YpLm<R)9mclth0ViVpn'q][-K + P(BoN:s,290H]YoJ$U<tbm4,(+7/!DZ_hunRKGoj6m.0p_B@;4q%=e1:k+U>U=:*V<bi.YX + u4'i5KQ1j,u'6#[T:]->?br]V!*;l_>[6"RrWDkiOq1ir83BNs!e-KWAmBPiS7(aENV.&&+ + [Y'b96g9c;D]oG;A=9l^]Y\r4<L1n3>+FUi^LFe@N+mlV'SD0gklY&+^e.*LjN^0(%N-dl9 + S9nGb<U%H0E^OReuQc?[FFJ"%V\D'#J$HLGG4^":!mc63-H_u/RZ=314[;s\qY_>#%%rcX( + mgj[T"r4f`;s54:d4bN\,&+e`\i%tdlO?*Y5"8kC1"-c&I=pi*!(5#GB+<Tf@J"]a=L#FR. + Kb17"6Khhd&NKeZ,Q/@pBPS)dgc^G_"sB\Grf9SG5D\hJ,t,hF'I&c>8`TatO7]=c,.q-<Z + $nCH36%?+qILc5Si"HCfc-]>EfN`@J#@;cSk&X(O"oWX8*L$sU_8M+l7@F`dJfp%9Sego3_ + 2gk,c=0/T-*?OJ#YLb-7%ZDPS/jN.hVc^a833/&tW+Gfj?:AS?l=mrF:o]P:gFb]U.(K@8' + 7K[R^2K+7")]9UVA+k)@cXZW210p"hpbN8'h#H>lV.aZ114s'R)MJWKL43p0K1SeK7m:IZZ + qfVngZj8Fq_\b/1c"Tk?]&X/:L;Eri:s(/PiKi%%X7&ZprB4Ln3O7n#eg'J!,m1lD'QBot` + 'dTU"8Z>UN4@fc'>p&^QR+!t5f]fXr-A:?e&,LQIWWR?\PmjE%JsbH9rCNu228Zk,TN6sAN + Z[ppX4<ZIj]noo/]GiX&,O=LCHZBRY*QL5,7NmnrGeu_f"8OqCL2t)RWl[K^XsJ0nK'!22$ + U#24RrG]/9R&#Y?&c7_gHEq!<9A`DU,t/c"IT<dQ5^mJ(e[8C7i-4[AT,X*iK3+m@CYnn0/ + !>U[WaUM#XsY"<uV_Lk3oIa+K^*&)>@!F<NIf\nHL'U0(khm`jLuYhg>U"D3WjbX*EGRe0p + bOV0<^7nG-f.?FAhI;cc$M`9lPV:<C##Q=_==;!J\X:C`KS9#eI1C%=s,p&i4'i8Wd6'(q$ + LG8EEO]!\AWHC-Fa8RL+=L/f8WATW7>-F0#ru5I,FXgrt4]eZ^@EUt:ORb"oQW!,q/JY.jj + s^8P)+uGQ\X/T5.d()Y=F]Gf^R/Wogrt]<Ia1gjRWDePc1A5aB-nP8B;kjUq<'p(g%dih"! + M3^'S#=P&#+/O%&'+MR^8G45P1P4de[R8C!&S02$6ULX[?!Kbtci49eL5Raft(4@B>r![&7 + cXT=6Cq;)RZdfC^<&eAhg!MT3`j<Dgh;LErp^!89q"g5<gj$I!TaeH%85F\TTQ#@O]iA?QO + ih$8&X9)NoA"F*Z#1sP0.D<eB=U9WmYhh-%.a11%80RQMQI#\[sc4YQ.(::"%[3t8!6c@u> + r8Pn1J;\5oc8n/753+5AJnp&#j:&Q>1q=!YjetSXkXai(3p)6%k0'u`CUf,%H:BN9LX(LaW + //,8N9LJ&kt%E1Mr]brm#(5.9.m6'%^*S1beRo=lbqND%`H1slG;]P_Jo;;8H/"816ARuOR + ,=GY3M/;m_n?>`G$sDnJq$)54D6\PcSnimh/]?(7#ILa@U3ha`-g)T(:!To*h4Xm&$1(5$W + "mRSQDrM6P21[.QlUooEA&$-pePd`rGHp;u=g%.'SPoUd]5(iP#!08@i2%abUrd?0glMB_l + @,bjZWUFJ1NC-$&955Qg!C$JJ5X\<Ks:t8@[V?Xi5Oj)B'd+3&KrG$Xr.YAc/G],0]fFR2F + 7g,g=nCZn<fe<-#a!.QS-JBZrg23kjWlT93cua-70Fb\M&0.iC@]ma`guBg=/_:'i!-g"#, + AlLe/a2'<5d@5_Z8+u.VmP@L!sL23HttkkXq6#!']G-a[--Y\Ebs`Jpu8G0#A\"'X)TNT4F + sY$#]"sBOGneZ;[G'X$"uZ9W(+?RT]Togk,rV0X0dV>]dk^_LQ6oK:qXI)MS4&KkpW"bDOV + (#k_dRR/T.MFcE-=Ci4pbd^p<1ikhbY[nA2'i_C4p@,m*IOgCPnoON]nN%d6fnm-bN#`@3@ + WWA*f&;Xc=E&o;HMb]bi2'U?u]n^0>;M/LEK5k:n'o'\@KXJ2*kX#2OqRL_gYO^-)OZHQ6X + okD;9Z#%ZVd*9\^p8/W!mrK<3n=L-aT20uImtCIuOO2,]d7P,KAnLkBT,K:0UCAoP;64HWY + 1)O&)fN2)YI\JP^86feeWJ#)i`uEOdetoOD=Q?YZ/5HAmf"\pfBn85m><C>o,hoEEUiu,dK + '=\"EP1]X=$4Tn.-Zr'-V!c+faCAnf\&I,m$smG7lI1VgfpF1F$isGjmc!/aD4+7c.]q"L: + f+nksij<s<VK"fKfQlUKiN*@@p54:lEY0QSUT#:Ha&-h)S9E.YQt,q-!U.-(U>#W@=657*L + D$.>LS#ZD('XQIfL.h6emn?jd.\LYaV/.fWK:rJ30aM&.Ol13?h7'@&_h$qfjN3_OT;X"[I + gCDFANfs&G;Y^idr/\/a_[-W'E<e2&$S^fa0e?"]P8Osr*>-aCPHuOSM+KJ-.l-WIQ'!iC% + iY!P54W9S'Ji5nF%VhK:DED!'e,[gCp`hQ9f=Y&?En-$Z"ffXE>K:2(K5RLo6ei_m5QhQ3, + s^5WW+sF#,'G1),lq@PFS?<T[G;A3cV&YZ)VK"Y1(NWe1nJ_Ji*AP_#+e_CXL6$Oj*aCbl% + lher=Sgc#b@0i>teV*esb;cg;ebn8T!2WcRsgYQ!5WeKAf9+LDL1&.mT*r?77?+k.LeE$F) + T,pKQD,4mMDcnmS@3?um6,R:"g:dlXk8:(nAZH`I.E`h8;R0D#I"qkHq;J?>uD$J&R#7Fr! + c8-in3'NFT-r>Ug/kG'OO%@W_8MZarn=E!dUFL5\.]?o.n?4>rZA28b]P`>bP/?GDLCA4H% + 'n09P1'jqf*uE(%BK?jm^4Zb\kR/00(A=)NlqrNcqj64&+]m!Y2KqPk#-74&JGmUcM%pRr) + E84&i1n4mgToKEt]3E'2plVZTSuN5njWP'MOte%lZ?V4BsU@23D$!afdT7@5^tnS+119ojI + JJEqY5$2mI]golBehK_OUj373^G'nlAPQMF![3Ur_&24")9W7+b?3t\^o'=QCd\Q\U@>;O4 + J;or7mb\WKiV[q<@NH"jHd69G<5&Gj7[GO12%6l><fe&U6m@LAdoW/M#g@>g09%RHCgtV58 + +t^s@2AE?SeD7DehA.8%Q6eoCm6h^C6q=@IM^nrF:uIF<A2IM$FC*pj@q??dIhZY*n9%5R2 + $_]D8(MBF%RgY`91Y;*.5[(HQ?t(K@qZRKBN1_goVZBpWeV:k]MQ45DMno]UJ)H$9MV'NQE + a-)[7q&)%J8<=E9D%:j(stBlu;O^dedl\okfrgmEl()1C\5%#B#e6mkGUHP94^C)/kc[n<# + -gm!3PDIhR#7nhE@-G8F2e)Y5m0<*(93QR9m1>B91.(,]69Q!JIW?P`*A2g7bmf1T0UFVkX + 931!]JpKL`QM]"113O`X((Md/LTc-_)3nJQ(Z*SZIWhgH7V/O7UNEZ7dcWi9T>]"7]Ze\mK + lWkutrcQrIDson*jZcc/fl-`?dK<i5"^c?Wg<^8_1)41R(LV>'gb9f)OsaZp.:I<Lh2j>Hl + O./P&Hh_Vh_7PgFu;[r38c\X792[$p-c8a@q<k,#./)UFDYTl04jd"Age=)CO"nM7julDB2 + Y(/MjFaQ@(KBj]!//IY&t*dX_Cb>Bo[m]e@TH$PA3bJ%+_NF&CjJJ[nScllP@60f#!Di`ka + :Em#q)/lmZdf0("\V0TP54<p%?'mdF'mn#Tr9ChE04$Sp$?E&B(`FY*(50l[pbQZY:0O\&L + _3>E>V<4=;Umn$M<1KA/$<NOF;Y@0@CB$N>+cAur=F+j;3s)j;(phu-PDj&MWB[RE]qD5)H + MDk=_HTOhdqb9SE=,3!)[af<9e]MZQER^mfSQs<kPu6\Bq--&*T6jH2?FRV6k:M'8$"(0bQ + fh(k&0##dfpLr>IIJgs\*'1Rm@#p]hXEkh9-o)9:pTiuA*Z@Knm\to`C<L'J[0C+3$DlAF. + La7B%c9Y3&tVeP3(=^T3+UUQAF]8XQOB6KlXc;QsFFlfqD<f^,d3,X7M*EhS7]iC^^cJ1@] + 274,E+pU_*WEg.@.c(SpR7DVA0Lkr5Hd-#_LKMu%4J2[]*F3q>t.VmAq9g4=8QXc;pUbBW, + K9ZO,rD0,QIO,;VkEIDs*YE4V<X&4q#qRr#K)ltcfG5BCFME,mGUnea)412/)GrH]m>EdOZ + Y.6uHPLe=2f[i1YH<F<TNIq/3M6K!MHYo$pZi,7?"0iU:Q]qrGe.\2VgTgR262?L,=cfh6/ + ")VVRF4*a&jER'VaNU2ReQhMmKEbh$adDOS/+`UY\)l6=.In`7h.6YN]4C+.@oloShu4oHZ + ,LfF.X4sK_b?lMm&c&WOR6XKp8t.E5(PjPD36WC9F*:%\pT2,DUBllS.>aS#_?+2!eC+:>. + iA]=DdgR8;J+:cP,dS&^DO%uSmPM[X1134Vp(]e^MA1Mh]&FYgaVc_o;Wo2/3Q]CVtgiH!7 + ;(%5#7q!G&a?)dL.W\J_5f1h>aFc^`mOKAW$\J&(j(Kf?/dJPAT249VMT>LCUGM:Y1RbJe: + 5?hA[Y#W*:OjC2ZeZTri4hOc9)YmZbrPeHc`\I(h;tlTAqj,_4QO:L44F(;`&RZOsQoEIK( + Y:tigB)^N@@WTke2;]U&'=H.Zam,d]W&7r43JHGS(tK[oO5r=aaou$[C0AbfHm*$e$aKS86 + @[#=m8Ktj%4Of.Qm$1I.+Q\NOVlo\<O>0h#0m:!A&S_C7CX<[]e'Kft%mJ\m61J]cA`;X_b + M(::Q9Z(m)Vh]@/[q:_r*(32<;[nYK4tV3)k5(AlVTs&*$6a5'lrqr<XHH.G(CESYE/=P_R + JpJi5ZNgc<dqu`!;@ukbHO0%N[rK24;H$*@.OP7/<R_)[j^DX[1G299E'qKPS[6$7DXd=[X + g>Bg^a0'\RH!F"FouY03Tp7`CYI!K5).._QB<ZgS?ISp])\88o`7h]B5kiM(>9.+ALLAUV@ + 2gS^2rNM9j[1ujGeBSVI%dm4/[NkuZkQ6A>d$RYZR+@#A=HH>ekaL&DmbgJ[G8qq>gFf;AS + /YXB)"30*8fldQ+'_\KKSM.]^8<qK:j&]c[1Ra]`'#R#Q'ej"Fms):,ioE"Q=nk+n-iV$,$ + CX^mgIB'5ds,JMpn1L_F)b!c(&iYU6.PV_!BUTM67:63PW'^mWOrC^HL2A\a^5#SSNfaFQ) + (9PR6-MZR?QQuFAd$%l3.0Ha$`')DaEY/$Bc-/8fL!aNO-(5NU["L`k5?qX.O$"j<B5aF)M + L$AfEJLdBcfFkImX2;Z;:aJdA;$'\VTLrl1Q3="7.,[]KbR$W<:dC66,kd)uSUi.28[oCJ" + I[iVP7T"P#qZ3Nm@[$A&l&RmJL#I/,_QIG!_5M<YU!j2"H.gTTLbF_,GtT1^lZng/-uUa62 + .$C-kZ^eJ:Sg?n0@Q2qZ8rHO)Q>qaom!@*[!st&_m$]3hSj7"?E,BOp!b[a:R9\%HnAYJIS + i0"?%Ai=p-]*6VK1b%1!NjJIKU2b(0t`)?_df6P9MUTL/iaJICZQ]R^Hh&@d9!EOl9)+@=3 + R/0I9lJ:S'K&?:9gL_-G7$;t%1.%inY"=Kj/FJs`sW">>I$"sm8/tbO'"=,*V3WpZM67gK7 + #`'%HJI"dXK/fMj!X'U<61P."TL%Z6JHoj"FFaZF&91%06+R1<+@3"1)B_>:+Fs_f&7U1p# + S:?:TL!T$(8*s&";TEW&6+2a-kK4+"R$Ck<hM`.";2hC)?^XQa:L[h":,Q&JHNt)4(+^HiW + K^`5gfcDfglZ.JHG$H/:dl$&1M@e5ahf^+@(ee#[>@]*e=@5&/p*#L_(AETKlBX"JA"H"9[ + LO&.F*iW"95c!-d-"!?aW9cm#+W-4>H6_#aOb+@k]"INV/;+FtV*&b:Jp#SHNaTLZ9jHD!d + &"F6Y1Q:QQJ-kYBg*U"*kQCp`_"EknX=p/sj7o"#S*=*8&JK2``JqKaF=rN3hk^i_iTBN9R + MkB4YTT,_FqEg@;kop%iTBSrHQ(R;Y^mCoIRVmVPa80h+Ve>jPJ#DK+K=Ijp.ZU?tl;@PXT + B^_$W1W@Cri5H[]!AH=kPDi@X=*kaJ#oREc@;rYRb"pLl^@a_+7#p*]:\E2rk7qslMeT'Cc + VL4+7)Su`LlL2rl=_+M^HTPm+MB_+7/7kc_'S2rmCL8.o+U%D0c-4+74pafq7Z2rnI9DbBD + aP-i8FD\7b\rJ%4\=P(1#l)k,s$/uej8+7?]=m%<_!rpHEHs6/sbD_'7c]a+GcJ"G'eHcPs + P+6UoNT2Y0,:[%gCKDbb1oE%8()#ljrr<'lH&q\JF&Kg4%J"\UrKh(tU+6[;LTsQk9d0_0A + k`C:gEW1hcqC<ZO[Mkn4@Z8^73?RJCJ"s:JO%9%2+6`tRUbmskdRm4UkqIU_nc"bCqGSL#< + [sqfZBir6s%C9.0TYkG5LV%\9]Q(.`amYi;gNL,l,\@P;?!-,qKX1Im!kqcm[qu9K2CV,6P + &i&5L`g8;5=([O7a_A'Uk:bl>1sLU&Lr[qO\kpKR^!^/u_i3WE!]GJ#_K,X@N,n+6q@*X*I + IC<SG,flO89E+o\`:qSs]D,_)o+DR3Aid9:<jJ$!/Y[R^2K+7"#uXne!e<uU1*l`>T=U&MY + oqX5Nl`.+sNY.[oJq-ToqILl,N5M-BV?u-m*0Lc\la86;flo]d&);`<aWu#8UrJ_?]3^;9l + s(!AQOcT3/5T)X4ASf#/ZJkf,8,G(am*pNkEW46sM`YRQrLjd3&3n64rum$mLGXaGdb8J4C + +Vi6&+VhIaT2>d9jt*1[^t)F$Xk@ar0\)dB\D,rC2Js@\2Pbq;$Znd+6=ZY2g4oP>PitjD@ + ETWo!CX(j,%ac0ul9Z,ip#>C`hcKJ!UBsk$75EF=rR#Qf7pO#Pirnjq6-)QWi_2MmIS=8:R + $nragl\R!2<ehRiN6nD5%[+6K5GR\B^r*`L1+Y<D*_2l:JJq7Ig3q<YeM\G)Ttid?fKk7@0 + W5L,JXI4r#&^DH&2?`E$,kE(1bBD2=soDjD<&d(C/lp&h3s$'=8"i0mX"Q6?tK'4V4TY^V[ + T^3YO&;h)eBM=0dqApaBJ:F:A>72U-15:nE)^>C_N/.6d+6_E"_oRB?U*N3aaUirt@K)Dpq + FZUL1+5R>W>2/5=<Hd@J#15s(?57#N,b.>`cTitdr>=^&[jSf#j!'O[!7W=!.Upjrh1S/I? + 62o6HFEc,#k68;T&H,8GO8OUnj<?&n+]Loh[m';#aOYISWQb8L^K(W)l@b?4Z^V5Lot@Q.! + fY95/Au(3':W"8upEor0V+oYQuZ)IuNq`';irs'3J?FA2M$1o@)"RhK4W&,#EVf@8ZHZ\EI + Q=j&hX4R$:53JgNDrl#->(*DmPHV[f953M;4TJQh:&,&sefjtD]e1-2Ll6/QoP<9rRpj]XP + #10<n)l'cgUpQRY7>TDj+7u.hd^iW5>0S`I7(KQ5qJ/gib@k`,n=C<QK\XWH6E$.e]XO>m< + !nagE.e.feJb=ES5iT@Kp]8.;?']IojDiYDR#O[pur%^BWY:?[lV!">YJRfG(]e+=,QZX*S + \30k((lB62t@E22JM5/`kX6BPnlas0>['b<;c2Akk)%3KKDSg&"-MhcoERa(Xl^#OF\BAZi + HPnbu`KgjBX.#9W[%h:pR$")\/A5_pTm&,V?,/lWmEf/3pZW(oSFQ.3Cs@M_As[Yg2h2]qd + GnQnl5&#&[\8'))_O8Ia\09u0dd5q0$,cqg%rVXF_!\VII#+6,[C5i>q"Q6p3)l%Qf:C68M + 8!3h*Yf7TBnc')t`>k\L;#eIYQP7II+c;NdUm!&'(ZQKJNF`6c`sU4!8s0.7EW/8FEl(phA + WX5EaT'A-2^d])JM8jRgftL<J*!30QZE#NRMgs,01iH6o0-m5F+/&ijoq9Q2KYL8gH87?oq + +&4pR_3bO>8.W5_o>od5in5:lQI>)7)AuA,f/8D(n8S_aL8Z)N]Aq6IW=_->JdEX&AE&WuC + ]7VN$b/2Jm2([C^A/2$LS@<q!7"G/A2;&uR^(UuF:8@bInSB<'Y.WqjlIYe)g2D(@Wq.p:@ + PHj2MAfJb"cS[,o!_S3gdG+Je[X;U%L3TM_r%l_>g2q#d=ZHAcVJ;tk*T*p7PnaijpoXJ;q + 3-"aRK%6L1f:UNMO(4-A)i^u:"KgYe\Ieg%+pp=cih4`\T];?"UR/NKkb1W6Tj$g"S"-1AS + Z_f/Y8SFb4>&Z=+hBH&U.Y3T>5H,eVkTZZYM(P2qCT:p0fm`<3o^>f;[+IVZ'2N"UT:`*W] + dT/5.bf'4+]g]P7]'M'-qY3Pk2T#lPCi$)'nMe7#SpY/&SXO<O)[,Z6W.,Jm,gN,ph:n-0m + !K)pP61cEb;uZJoK&"BIZ@C:utj-JLC)ldqL+fY*E#(fNJnCHK5HH*cd^^$1S@qL:[:6RX0 + J-o9p%PN=3>jtrNa[(;0O'2=oFNuC)V#bt6S,OR!HWi9F-[9/YNCKJ8#Ri<iJ7n[&*CKraG + pF7&m.Qhu7$,8A;@_]LQ*'1)igL_FPB/YDC.d>/-%"^CJco0)N.nS3jC"0Tt`A\`V^l#ap] + "OZXFq!td2hVVk.H@L$jL;YP2p6Wc)TeS^bK2hs*rCOK1_qYDoIV>U3,/.IH\fM<et:+;ai + fVc$]R.,+"bnE/bG_s)@8DSPJTB@T\AMM>F-KPQpQ,`Ti13MA"4,uSN5a^0+&^Q.NUVg*]b + gH_[?.4;Yd%sV\4W\3g;KTl7F[u[lVYd3npgTRft$@#>;\7,Fc#$6p<<94ttd-4*j4TMn-b + V&gV6,9M<&EX1gu;(aS,[,kJkfPJ]LN9/6!<1(mYNH"/spai+''-0$C"o?A'"c91_u1=Bbi + nn1*7G<J%;`JZQ"j#0W4fI%qL7ETa#@Ws2Q?SgD^1]62pnpWb)iC5ms-n@b^>ND_ujh>PE1 + ocHjbj%ZulGgI%`lY)Ig6.npDa*f456PsEjDl];Z,\rta%Q&o>P4um>d`X;[J6U`S9hrOH^ + lX7^W_,@fuCelXL<Ii8/l<%U]SV"".^us5ZEJ'A;;1ILb#1QaIERXX:!%Zhako+*\<=:jGu + RuO</M+/:m*.//$&e';"P)XQ+oB7$kDclTpJt_46sd]UQaMSAE>I_:mX'gQ+r7OH9#Wat+a + Z3Xj/),g'@<TaW9NJeUh9.*A&/b,Q<$]'gf\X[:O?6KG<o%'VBo,YK+3b:GEl3[i0Dr?B1g + 6Y*YnE\Kk5"$5JGbHnGeUc_<"4\Oct9CtGB"@+4H5qrJP406@^_+mBt`^F919RK@SN(D0]; + 9Z']V,YZ,`6C^"c6]",1.khH$rG1g;9^S!br[GQ<7OE:ejX-$-Ci^E.W%nM=j=$OV\E@[b9 + '1%g;W+,Vj-+/"Q;f_I7>GJ4q$@F;ra:!AkmG\:4e?uP\Emfl)<*I2"HaJe*TWcmkm2q[8< + &W)tCs"o<jeS$,cF+A+iE4\jqDJ8!E`fj8(68@Q$>s2GgVBjF9DdJ/kqI5SSf8+jWD/ZVX# + ,^ftad7#/R*LsV'%5biI\jGZ@BNDS)L_!?=VKTO"YOjP+t5qq7`7$U&;Q6.rM6$/J[JbMHn + e@:-fahs#I<#nQk*_Go*8d$8/'HnTP+tagu3D?80@0o82Va>MQ\YLZ7\J%TB.n[c23W(J?& + KOLA0?XeX\l:FGBdZPA1eUh*3ik6'"?4M_36RaIbH*bJ]K;mI4Kt<]]2ZPWBgb>t_8I>1Ug + 1gU4N,018]4gKe4[SFK>Eh+b!`&K<0P;>bJtADcG](qeD&/8'?lc\dmZ+C<?ol0>LF<uf>W + -ieSE`)TmoM<gf:1Sc.guIoj'`1@$p"`c7EGM3e>RMABnFkW*ErAMrm3Nl+WBs5,1lm^kl* + dOu41W7f-/aI;UKt=#GqY25P:gATCRf>u-/rc]Pn:U8>W3r&-q@=.K9AXT,__!8#a%SE0gQ + .r;ZTKspif==Ukj,BLr$FY!->X:'6]P`E5Q``T7]\'ofJ1OrT`'Nj`;3&MIS'c.s'(bJ,o; + 59"7`KjBGQVlLt;=0e!q?Kn*iBfCG\PskXm3Pp6-97;=3NT5a/LfC:._4ms\cf1iD(]"?00 + 2KU3aB!pXYSVD1V0)6]!DE@lN4thYe($";l-g![Br"a[8Yni,R(Y2r'FVO]0o(SgV#u/bJ- + Gd^s&(Y<.2P]Mo<QG`_>4+<5ldTe&k)]bKV?R<=R#L)pcJrd7nK$<E77CA(=#3f!B5>1PO1 + ]$sh-D42&kr^#daDrRFpViDpuNegc@(4%MhhA\Nh3RN6':]kK[Lh`fk3h@sq[h""M4o/20l + 24C)f)P962F1(?/c^f5TX`lZTGYck8**mk?_uJ?+Btt_j=7$)kqea,ADb+_s:j%CeK6';AF + NCkE:q_W\bBUhWH:\!l;$DkT'7N4lJ#pVL/DLun",+L=(YLAWffP#C9cI5<rn2&?_<mW"r# + jDkRo0uk3B`p24e<epT.YJX3Lm'/ZL(gNm^_)E9&$#B7AheCUH2)S3b%tiZM_:lW_7-.g>t + 6Hof'JL385H6UO>2-PWdL=[DVsOe+L3""1cnr\l9kEe2%k%j1ifj_(iX<Z.$V'<6W!j,2>7 + *4Hmq4'?i5&a0N%s]`cm!)_g'Z1-J"Tc(ilqm9*]m>!8\<7IAOa$U@uj6,ke5^+<hr2;)#! + g-0B.<c-W&P>4<J:YkC)eu\;I/+0f79q'Vl^EmgT:/Tk[;V*^1^O'<;7I!CKVV]"2WifLFq + Q4>:!@noTa@1Vd5%#CBog"4a?Zos#jnQX9LgR;u*bG78'oZM^Cg[0Y=Sm`eCP=>m"3I:f?r + `IDQ?5^`gZMia/cH,M1?)]dSZZROb'frGh@ZH1ImUiEkS=o,rdr#kW9?toU4.ha9s!Q5*U' + (9gB4WHUTgtONQ^&`B_Ad;jsA4r&E7guYtgQXD7sY,/0tdn`3$jiXtV/^S4*%hC$%6!%\L^ + 'a_DkV-B=iiL!=@54DJas>m@65*^@X@h<M.0C;&1^*+V5h7c\+C[$F5<]1lS^ZW<[)h>:)V + %.IRBnEZ'PAH_X:'Qmt4G,baFc]5_N?0]bJ@m@kAlkSpLV0fY0!4JcCA_$?0ealU;oK[<7f + KNckQ=J:EA?6!YAo/">I1KqIa)'mQd3`YN7Vp1McK=4(m5Aok72`V")`Y"O@!6YFK9!eFOD + U;-i4U<p6mOd!ggKPt3KAMcIXXV\hqCO6;SElDeeTo>j'dWq@?iS+UASn@*)fTQ97@pTP69 + eB3Gu8KkiFog9Kp(#mV*F`>Dp'\1V<)k.;<##l"rlRHqA6N^uF`Qir)M[$R>+p1=YGBeG_; + 1Y5;^G;WE1)@uE)1juV%943b2rZ]*]/*F)kp4Rb5WVoGc41ICBO@W6e!jDAHlFD/CL$KRc6 + cH`dG*_^?[n*>)cAE'!BQP!:%oj1gnnN?R3el:Lu(2NSenV->kQPo-9!-,_X?Pa`!<aO-J? + dNCmX-UhI*JDe9L$Y[J?^#_AV%-k>&+&,1nr8UU2?,5Z.oBX$B(c=IhUG[u0ApG`o+oqTk; + -ag$M.$H=jK"ahKs<uh-gI7@213L,49=R4PEddg1K>QDM'u6KMrA76T4&[a$\S22<^5*FCd + FLVBG*S8FFI(oWF9b=%mN)5kO1eBhqOn-7[MG/(AGfZ-N#b7D[KU_XDY&C!4W_h+m5$;K&\ + YosMol4j*6E3GLY*l:k@F>&\Wp4n^3e1WD[[k!=/l"SQD8E,Mf=?YJqgg@h[?cF7WU3Mg9" + CNfAe:CV/VL/-S]=5H@;hGLZM20/4V][oWda.C#k[_M?[r:,_pC`Rk=0,n!=*(V^#cp*!3% + 0bB*a(?(Z[k7=#SbKq.b1M1i=H*gCT$:l4r3tM\d4P?hh^[:Q/+"@=m4=Xl4W/*402\o,8_ + 2JGIb40CR<(Kam@>EfY;T9;2bI];g'=!K'e!64hdJ-e\`SFj`du"pieR^7XoO#=$ID,@&?, + d]_$X$&+[u`6JeR'qke%Ir"=?D@E'dNU#YBU\+G=t_)@/cs_$H,h*"[f,+O)$^#U'*P5(X; + QK?=$&G6ApP#;AH_+p^,Z%A8>U+OUNOWPJd86&Z@`";fZ4K'4>c#V:Q7m'&cT&5r]G5m6[C + 28TVFJdEQO3$=+M";&BP&4$.)4Tl8R+G%TVD?q/4#'$k4`"4R)$UFiu5c.ur'7p@[JJ]Ls6 + NdY1!RO)J&/bTSlQC_V+=7@"JcYSL5Vs#["9LjhHfuRZ#Q^3Q?i5@C-^#U%^S$Y?,Ou-;l+ + nH<8'DS8"FKkcO(]ch#kW^2i/]NR&`X"=5ooGbGJXXQJib*8\0J!Zl2AF=#U.KF*69;H![* + 7B#]ZMm&dWHLLBJZM)sAHXJfCX3\I9U8g'DO<L<9d<+GRNuJf;]RWe).F+f?(uL6;gUTSA% + (B?$knS:VWW+ddj!BH`W`+GNJoA0?Uf#\-FS+c:jgL`qM)(e>g&.NjHI#[a6Ynd&RFW$-D; + (MFt6JeogYEASel\d2L_KrPD^:+.8tJegm#@Y,@/dKipIKlRH"TS6h\<R@Zf<.Yi5+]*b)o + Pt49+GD9N;BUZ3#Z4MK+[Ubp#U)B`'@d^$:8!:"#YgtFdKiOsW$*jH''LJiJeGJs#YH4mRK + uJ-KT1G4&dTX%Je?'I)M/Qe;@#^aKMi(DTS,b2Je7,h%"]%h+UEZ2G4Go)+G:(-5Tk^Xc@Q + SJ+Sp[#L`lDC%p+o"4J7>D#Wn]3[J#1^W$(;U%VR!GJdsaq#WNrZH3cGPK5M`^%>Z.XJdk6 + ndu5E%63oB?K/*]fTS"R\Jdc<8`.ACG+Mj?dK),a++G/ka/g,c&DLr6e+L6S,#U0J)TBJ<7 + KV.I2re@'/I[5eaBW<h;UBgWRJ"rq<5(B@hdRKCqkt5-/V2+nRJ#4UiAq-\i;Jr#&C$L;"W + !E0RJ#K:ANdn#id[$c0lADTkWe^GRJ#asn[XY?j;SKB:CH;C#+6uMt[@cc!rjSNcO#FPOX1 + J"SY=JHcJ$8&4!e7Feq[:t/lq8,7TBpRsaIhgerlUl"\c0hIXP5e^ZtK8(J$c-N:4KZ!qc8 + 3S^2mW5[V`SSgE5h)rnX46l2KT;Xp^!D\R-;;juLKZTRXOCql09McGR$X+7ACmn/q*2rph0 + "1&gfpVl9;1j5`GNM#TYkr;.#rn3>7Gs$)T)ru_FIJVX(*+6XhsTV;@;#PnoPkX#fR,UeA. + d/QHXr=0A14?q3ns$T6Q&jldqM@i`=+6^(]UB1@QL\`hLkh7,RKQN7enj4G_"Fm45rfN!48 + 0@(G-`"\NPS0-[+6caSV1JW3L\b6tl$>"["N6]A127oqUjo8XrgS]>E$+>e2lB(1SeL&^:L + j>f&+ooee.DXVKDe/."V@Dm@ZV\s4Fa=RrhTkrQ65C"J#TCkV\J]p<.k-HO7c12eNj.76iC + $roj&u2K!JF7i.%eIriV%Q]H?G6J#ircYa-KQ=UQp5XKhc2L\f@>lUZN-8V4@9_V/4PJ:F] + krj[a[j<*]TJ$+X&\sHmo?45,0Y;-$iL\gcflf`i%ahkf[!s2kh+FgV8rkaHf$m4gqJ$B=> + `0d;8@mg3RO7kOtf^SoO"9">mp.7N;1FQg.\::g3rlbWE1*>l0J$WS_c7#/CB8lYZ;3lr'# + Z2!S%5`Qs+oXn8q%d^>7B3b=ZI[a_,Tl*7J!,B^8t-K&Cos88[^Oa^#PgD&jR@Y_k2b<%X* + 8J6mCeb#r_nUJ:`ndj_)N5<iS7(aEFjZMQ6H61*/fo!N`jRdV`<iIT`6X^r4G'<6Kqc;WHE + *desM$f@Yac<G&GFV4,7qH*V7!$KDa%+o0Dge)om4W/`s_?SnnZ-Z6/5VlFf]lp7C=$HcHD + AS4:G:T-NBDa#rRV=56$c\GnW8r9_6XjSb^gqL=S%ruSHEHUmo#J<16C^mGo?@!iJLj8At= + oEPP-U_n_\EXtJB5_R2S'd)XG'1,f"$K5eSL+pR[O7Z=7d9JVbd-;Z>k^a9WaT"b?r>q$lI + hCZs8r8Zk-q+9-5LOfV8gF9``H\L#U?#X>&V2WsoYs,E.0!!2Shij7fc-]>E)*2,4-0%**M + ]]]O)akXa;G&R8,A,cl8D#NBb_j<FHDY`8PY?>5!RR+R$.#X:<E<!.-2AP+6q("X'&@N-"O + 0E'$=?.1&eFJqSs]D-="`NGqZ#t_O*u$J$"k4[`A7#R56%!9^/6-VNU6ela2/Enc$15bh/D + KH>lV.`4s@i!?^Y:J$<))3[\J+SeK7l0er[H8,F*p'Ae/`g&F<N*<Tj4rKNB:=$gRh%&)0; + M,?kncH#fF+7/s"1_tnpRR9\]NA?Vo8kdagSLGf%M67Bc>tc]41i.#hS!,%4gB[[>VptjB2 + `Bhr8hiqVKDq]Hb+2KO)hY/%BWjD3s&LW">]NS3YEm&\>b($XXL4Y,\i3,`$itr6cFAAU.d + :60UU73O:s0`SIR!/sJZs&-in.a;C5m;]+8.J1=U2&$XI6^\%t&l[M_l#^jdeDE2UFXg7/L + gQVmS2*qHCeVGu%*5+83k2>A+BFD9;N:-h[fVqgWR&*#=.X)$Q\_,7$g<bdl=l'>f*nLX?G + TL-tt,h7L9/+iWA/B\jkmqoa9R:$[WJ,53@)QP;sgo=h]jr5FJsIhLIBN$J?&i&hBuj$[Rs + 8\I.)&c[LQNY@HCh[:hI#,1)hs214N&4hWiLt&Gk;fYQ]iga).AB^I]$Dgb&q+*a?[Q)<*W + `<QZHE^tJs2\=V,@lXR0!\[.>-eWejU@uN1:52l=_2WVRAN4>p0c*IP&3ppcG!BHiue*'2e + NQ\3i?#$@B;qDO8S[C1\CL83X(SM(/$pureJl^/qm-(*6d*:3MN;K8ni,rcudeXB_6V4C'L + ;%>)oF(R\*R-f"Fa]"Z?53`O'DAG2'"nE2\9$?8mjl;HrfgE"tn@Cj-JsC:fM,B->n0eCmD + Jg5<smlHjW)[P,n:F\TTQ-Xa*TADG'Jh$8,Z9)Noa"F+eC1sP0.NU!c]Up9*]hh-%.c2b05 + _R"+g3D2Pa$UV4<(k)ihISM(L/gc'c.^g`,[\sDjKBhL<(uu'PJkLcKN_Vkm;M2,Q\S+ICk + Xsu*3p)6'k0'u`Mn"MeH:BN9kUX`1CX@m<faLW=M6</Y8>a,BWkVB]lA3%:bQ*T<#`Phs%Z + \8_Y/8#rk/'[Sm0*FU8Gqk62NWk]ONuudDX*APm_oJ^`JH59`D5n/5k%H^Pg"05%h_r^(@e + JXQE5t0m#r+o.[TTVam"]*Bo^@+;Y19eoLuibXMUFmb8*lSS*sP*C!+]bcH^EQp;u1c%.^! + kqO[/)A$:KW%u/HR%+.ZYq*nihMB_l@-DKl[UJIn'W]FiD55RrAC'm`UbtMm^;#EplC[,MJ + /RTn7ACcgmVl&=L-K<WdLtAbXred"[lCMrHN%5@!fh_IF-Q]=o!no"Sg23kjb04r7eKIYsF + Uc"=&0@ue@]o8Kgui_6/_:(4!-h-C,E:c0:$CH\6F!GcZ8,&0VmbLP;R7ai"c(7Z&74<l@X + [Q9IOeDFc6Rll.,rTs[V,fPnp]Vt']\UK#`F4bCPaJM:kNXbjcGqAW(=KTU?6,kk,rV0bI! + #)]dlj*LTZ19bKPd#e;2D38?S3AONtRrW4rV>l=@3cY-/<D"H89JN6](1Y/'C#o"k[r_NOc + _./<1IgCR%>OK:f'cKLCnm-bN%`CVW"diRuB4Rb!/&r^^mlut5r'UA,)'9%[3b`8##-s?!i + o+=U;.?)EKORqSRoIi]LbeBOi`g[K<?LM"hd;I4.bg%Zap8/W!mrK<Sp7BM.30/T^c\2(UP + 0jUHd?C$pC**2ST,LERUCAt$c`GU#Zt[ptqiSPg`iT(F=DP1_r/o5$dEl^We>Gdj*O"3<n) + #05m2g#(DmA[.dI@/JoPi4QWlH&#n,FLa!ckLLXA,YIne0\Dq#PLT!O<bhnfn2k-N[q!!il + %O:"pn0i&$NW,OdoC-_hr+7jP<2HSA4#a2''@=!aW&"io&>BA3VgBa0`;#060;$XVhq0dk7 + )5&c'$:k^<R,:Lou.1hSn0U0+#<oqc&js2km;Q1"dXG1c#$PKiT89YH"`e[O/$kgMf;TO]8 + be>L%/MPX*E7Z\?[k6qFN)JaI;X"[Sm#?&T_5QHKE;)#iqN"JP__0U/o*XnS,7sG[&Mk2cP + 8b+?*td`t&hIYa:CArH&6CSB1N>==P<BT.5nju#Qa96)ab_kE:Gjk*2//O;XLO^_@29Mf(/ + nn9ZY[lXaYtqq2fX%#WS9Aun=Ght(fQ8.M>8"5#l&=t3KK>7nXV]QTfPdt3g$C&au:7-Y8] + .$4)IC_U,;c;_Yc40eW7l'ia!QXdiEM^f'hDG6A6IVjW9WNfMCqfU9,MUpE-a>frtH.&-X2 + <#p@8O+V55/:_\#u(p32>geoEQUEK]%/HX?SGS2k9;E4i7OTWc>hQ?;nNV5:B9dL?J71KO[ + Z<Kc%@7ClAiQu=$n8B[.F!kW%-a7qFn:#p"K"$b*jDp:A`"*/0QO.]$KMnEKntQO?<=3NCk + 0A#u/pKhS[k"\p95]Rp/riJCb7(]&9TG_S:8CMQh$qfk9s1l6DRrP_mgep[:<q#nK_l;/!> + #nIOE1^>P78)F(D.'LmdBa&cMCMF+Yln@15SXZd4I-d0U8n"a;$>u&O,bsRl#+T1poU?EDZ + 8G__mQZ2:YUsd:2bplSc"`2YCVS0m*,D'0"<e3#-W2ObR@cM`C6f3@YCsEL/\jR\@!XdP%- + e1TL;8Y?E`g>)GZDD+:?:ZDDD7eT&a^b&(B5En5)E*R/W'Q-uVuI+U1AfSZM3.]V/RR32s2 + ?M"J01^_sD%q!g!FHdQCclGF>`r]9R6C&?Qc.>;u+%&PX6]2NZ'L:P08RjSM@rtK(0N?tp= + %/9Z7Eu][P%rtl:I`o67h.+@<aA4O%7eTc#]ta\OH4#gO(VFTjcl*EoU:IJT";/,8oAbZ2N + pcLQV1)-$grp(G,%_hVbCut%1]'`QEs:d[nVmf%PG4C[_kj`a%ieX%o1?c[aN&*")Y4"&@D + [Z<=*Q'nSZkjD[A:>9P"i[r:&)e;Ki@D[gMZQ3q>'oEE,)?Ps4do9_4HJE`GhSPu.+8?M*i + %F&cRgQ"'FVE;!4UFB*=&Q#uatK(lAJF\N)Y(L6b*R992r=Z:*kpMX3dF'9#4q[GbnZ+AGM + Yric/4AAfQD-J"Q_*'Zp4`+s4NH$!Sd6:R\5)k*lXbRuUiBMJH5HU7Oc((ibn>n;O?]D;k1 + _jCT).7<t@'h.dkA+KUpB(%,h9\)JFsTMa.,NN,6rl!fp,'(Wrnp[W7<V$F2Fb'8B&W&WAI + DcK<`nB9I7L_U8+pQU2JYjLDM%S&\Ib0AY$VMMSS1urBT@"Ee>m9hF(n:ckRNA!/r[KPUqR + >)l-e)H/,*gPr9DS6/oJ282T3Fl_X*H\m.Sh&G1BBkgJ@P#:am&SCeG@?%e"BXD`&DNFWBm + n+`J/AQ$"LqmhkTd54VC4EGV*7mkls53m/<dbATf@ZXWS9c#[^Lorhd_:M.n=7aCIApN))` + f2Gcf='/7T=I3Guaqn1i+W<5*qGF;;=XdO"/U,[SGS.]8;8lb+NKbd3Gq[]QQ^a6el$<m'? + 'hOV-OG+fq-KDsQT)UEFnXP9%biJbI*s";(Xld7nX2-bYIU&g.gpg35d=D\@d>>0&lW;N\R + ZN`A4o>L\.P6u(S'&Wip_3Q96#Q(L:=ZEB$6+(P*id_mn&G6KMnh]pe,;d^S#V\Bt=h/k`_ + ]:c"ag1L?Pt<0]-ZW.u3?;UCcs3\iGTC5D_;NmEl.+/4HB+'ZBiJDX:_fo-VJE[8JQ$VUIP + Eg3&@2GGh];ES?&)M3k0'>B8G[Net6EEG]dNT9"i\W_n7fg9$I*Z]NdBpp$(Z%3)B)U=*5e + G7$1UENmp751DSIGW@^-D,Y\cbBWL%Y-l<7e(^-$iK[#pYF/Z[fjR**A?)+&QIGl#&d=V"$ + ESN"5oU]/2pXe7_ZC:hZ<,eK<Z'YS1>Vg^RMY?YmI(0Pos<9GRk=`2FB+gB8XoTOS5r=4\] + Z?n@@\*V[MdbMP_.smMWDBdK3@MQN`uh8@CM[!KQO$Q&?b2CKnVPnkW0/G\e,?tPA6J!9Xn + q6(i[7%TnelgLXb@?$l?M-M,*i*0A)C@/2`9,!PB8AV%jF-0c9AKc)''tDm'H[Y7J=6]r(6 + ;V_p9.EC7Ha)iZ^BNHIgPXL5fFj&K4E<Oh>=*!)*XB9.1PO0%`af`P<D#<97%3=Q@Y'oTpH + )6?i(q@TV$Hn@Dt/&PG<>3;fdos^.6acmIbPY,qugeV1]hd$$NQ$8tSpSU4LWrG-_?@6NpZ + ibZT_8fLaYuuR(]RR3;$-7>BR2h3lPV:-]SUR)uZW8U!2t`X;WO*KA75tC"=hR9%\OK`B-N + (\k>fF+Z>IF$Q[PWQDI+(W6f-re"B7"^F(4FJ+V73h,\,>\eSF\7XLM<,Y9:0!XpgCf4Q-b + i!9_Pa%fQ3c^YG.9=U<r5;[`QrubtgA__Yl,`gV&HT:",TNDS8?4R'"kbd8Bj<MjeG3>MY5 + q0oU66N3&G]SS)s87rg]]NS99^HB2'PP88NFF1m3IokSY3$'3f;pH#?V\uqZ2R<>'k_7*df + o:<`UQ,7sM=hUtO>VB8c18GmK41R0%gc_e\_csIl>PdTKGEg[FR6B/lrYkN:HsL$anQl"mQ + ?TRd=1(:0\8lt<?X.f[2>aY!(U:=dZ2B;B*/Pl/-Xh?PaYk0]E]^Ta4gTO06p.:kgHT2>.: + _!5FPO:a.n?u=B7W1[[9UU>4'eCZ--Y+TAt7D()<]8VECjEqT/]3`Rset_nV$`Bc[1N3JcO + $q5M;,V>Rcr(J[/["L`7B>`e_F_YVma9LBCsMfJ1Gd!X?DjYFo[a/.Hk,?,5&g29ZML0S-@ + aCM4X;#.0o9eo3L2%:]KB:nVRu)S--TJZBo.\nhgU"'!(d&2cUS#,ZsN?tr4NNWu5^^sk%q + ":[Qt:KjE*fG\c7Rt7H0Bq)150`t(ada0hQq?E18Uu5r8)Fk;?83kSl1is0G"%HgoBXes1# + )Ro*1N505%1ND+^sJ0"*h!:bJY6Ca#T<YL"$]&sYVY>KpB*QrTP'W0iWaUXS[`VpX:4=q3P + `p:1QOR$E.OM:B':,AY6-[Jc#>I<%+F-cRNQ3e)4Cb@JXJZ?1E6hB"#.O7+%R8u#$ukI?tI + Cr[f<"0dKV7q@_r="_$CmZJVpBCW.Bh>(o7P3@Yt@<+C]X$-UW\,RXp<O(m]`0;(;bqTOL4 + l,G8L$"sV%m(l3a!BGcDRLb[$V+<Y+h"s4srl38;#L_t;dLI`8&JVOkQ"rj4DZ3D5?@A3rD + b6SqqJVGQi@"F%'$3h:h@;5u^+CSO)JV?W3;LsN-(f#X8e#ETbTOB#K&YNPHr.0ML(dNY)k + SQF5K="5T%No05"q;\_bp7jm#T,1FK#ecYJV'-O"ppr1Op22b@"h:*J`mpjJUsa:(kI6\M? + X5,?qLV++CI?SJUkfY$A!_`(^FKB?kNYD`W@UhAm)QbS.He*ncjQ9BAs,DgB\\hJY+>.n:@ + 2*$3ki"B;u/^+D7,IH!Q4Didm[,);]q8f;]$uTP%^<FeEAF#'Ac/):3r)kS_TqS@D/qEZf! + 5#&tbu$3kHYL`*pXS&cJYJX`%l#&U#FdKXN\B#4afjTla*JXWMTW.CC_M?[c;Ar6e++D-(E + JXORt"G.c;;>u6@k[FIG+6\:TM.qd?/;tfEnc"Q@klLdG+6asJPA?"A<0eiPOoC`?l(S*G+ + 6gW@SSa5CI%VmCqM'Kua81mIWCQfPJ#V2fTW'Du_>^L-lI#U6+6rCqYTN0I*3q-=6J-diBD + UD5Xp=gaJ$+S'mE_sDdeLU"lhUOr+7(0M_]S58>fAFVF!/UIm$[jr+7-iCboc<8I*XVY'1g + Upm5b0r+73M9f,sC8SCof[ZZ+bCmFhKr+791/i?.J8]]2!^;jcbjmWnfr+7>j%lQ>Q8h!I1 + `o>H-k-i:u7]Z9orJ%\AJm!n3.p`CaI5L6;.56Li^&+fQ\cg^s"&4$=>6k"[&q?\8-0RobS + re(OQ&g-=8&><VgL61p)6_jSk&+i7Sd3/HWd(pD?Uf`P;OT.cpr>H4=Cd6=_s$ooe*[B`rO + HM<t8>H,/&+l)NdU<)Hd6T0,,cHukd/Q``r@SWQ]KajFs%H:@1+$PYRg8e*+6g:bVZHdeL\ + c*7l.S+pK_1lN!<5jTrBUte#X?fms%rms77\^AUQg@p+6lOLWF>e'#Psl2l>V6PkpE>D&u8 + M0rDSdM<'So@s&Hu8=:b(9.2ASc<snGHX0MZ-L\ee.lNi!A8S55n6HWI%j^tV0VE`Y1s'"I + ]Cs436[oW@c+7"`4Y#52/a85$Bl`>T=fquC5MXt07rHf(JnitaYs'MQ"Iuj:*3>`\=@-fFo + YbD'68,Ef=lpQ?.1&f.)Wu#7sD3'bO4?qL)s(#X<P)o<35M8a8ASec@ZSDI'L\iqNm+d)sO + oEYiX$(+V%"aQ2%ac167qjP,VR4c$5KLA7,:!,G[77%Dg<3]9X`Tegnl@usB`BCGOg2?<db + <GkD'u+VT9&PpgtS$9D[ksF2s1$;8,6(*j]0/W2\+hP>E*Xj4L1%=c9KKFQ#_mnbrNg,kT' + \L+6Dj=Qe+pq>t_5@Y.`GSZ2S6'q2ZW[7GBn*EphcL^N\gfJ!puKBZKqFGg@,c]XO@$hKcF + Lk1"mMEW0i^ZdjCUD=5+3^2_3haWK[sJ"5-7q-Qe\IBU?YS[&0<8,;%kYL384Vtg:b"9:UF + r:l?Ek5h5,$%[%R#Jh6$JB.Ki+6XaR_.Y\2+S6e0:l,R@oJ/YXgaIjFXqnnL@gl4*s$^Gr( + 6A)p%O&JHLTpb#`"[M^dJ3`4,Q/e(LlW2.CeopC74=5hVE`M-s%;fj/&f$1(ZPp49V_PBO7 + ^m=j"tM1Oh*MB.--siqKj=Kp,kiipE*oCJWOm]7Z[3`5LbXKOV0E>8I6[h,bgtSlAU4m=Z% + O:m%9LtN`+#"C-U7Ys&UtY<D)La/>]/L=QB?j_hFF0V9HSUMcjmj62n=uqVE=[Jn3)^R5:^ + nd[H@sGRsK.5M)^bRko5+c5FY_B.F*,lkk5VM:XedFRYl#dX+c%0L+4:s'q8`IF%`l5j0d) + T^8n4ZJkf,-uBBe'M=6[C+R\dq`pouFeZ6H5XWV^:*9+oPL>n#eQT(-,\3IL&,Kp5BtZNCX + d5OlEd$2mrB[B)'tQ=rOA\\R:N,:mVc=)"iERs7/#@Wu\H2_2lKqr!c<@Ih''<KU#lh"AWj + Xs4:Ku$lM09"#\lWY:?Ce^;YGPjU]E/%?X<iV+%is]_ZW_0OJH)nj9$1:LY4_/'_)SWKJ(a + -RBWWNBI.j)qSX88!m:EH/&)$ha1X:;BC]PXOk2"eE%fu)!q`h"`#nQomE\:<.K,6BMTbK! + _a8OJu[pBccS$\"!4>J#QIdl2Ub77t*kXOe(+V4J)HgcscM(p@S,da0XL].+b\,QHIR'V>V + qI>IOrrh8m)]Bqj&5F\!43')UKs8Q8O"of-W)X>%j<4K@GaB)bW>1;Tb*u?#<.Ep:AW7tjS + &Xa$=0">T5On/+a>1&%A4;*TAZ5XN3@lB8gmk_eQ;O"e:1<7#Z'M7db0-iZFY;pY5P#q-bk + #^hk,%jfQk\[)q854*8_H0]]+AFF>'l>.qk*KhrL^Y5OtpWL63mLId@*+O;!fIP)<DYVqHH + WM.R!HHlUoXuOf204V+X#GW,#S:R5PCgfW!KcenqHke-=l/)j\,bqY@hk$C]mfMhB[DDe-B + &QWBW>Y8j<O$[ZV.lYA"2dApEu[ckQ9qf&U(fdjVe/)1H?8_uC0^n)1USg)+gj*DbVHRsI, + /=GcS]Fq^LmPkR!T+]MC,1=;KKcafZ/Qqm$H29Lfo!k[u\@UH<)VuSeNt9Eq+ENYt.LIe#$ + TUc_\QTNSC?ZlklQJ?Y&IY'g_XAYBnKG406IVSNo:[gH+tnNm0;L>6=sl@Gr?A!9,-q;;A# + ggFX=usr0Och!q)>nm2nL"9UT4fu]<r=l[Nksa0bQi.1.44'9=qc+]?;"d],@Ef^_L(i,nn + -Mi`%Z7<BODk]PGQn6<ga*b*IB&-1`Q@UWoYl/>be](GjGcMpaBoCU5d4]ifbHC2lC`2lB# + 'Vc2=eF5/.4h)"&<ZiYZi$'@CiJj(\QW)H0aA*+Z8k<=MjW6(^2iM!X:L:$PK515W5MNo*L + ;i(l][9N1#Ts1N4Z*f[^[A-qj@\F`uUITrCS',0I$i6lK_((t&[R%kj;eA8bXrNn78/#^-g + M410"05#A.r9pJn^]W%#HOiWX3'))5g-W8G!Np\Sf5M<.s[+YHFLNuXGQ2CWTpt^hm`c>5u + Q%$)UY0-KT;OU\83%bC&+liS%,0j\?h,[inY_$hb"!3TOX(o*$VOH$EdX0\P`pJA!]N&l6. + qL8s>^;F.:%Pn0+h&+hOA/X.[$D0<]C?YEC-A;'`__VaEfM,-(\f];h%[X1HM7YYm6\FLo' + c2S0X.6dlF<ZOP+L[A3?%]6loL,"&V'_n33E]>M<M@i2#Z)U*iLV$"QH/5!2<<3d4^]OG!U + FAB,>>X\^"]Y%+SbYk;g/#GB[bu;udHdTMX=0j)e1ITp0@W4JOfL<\;Vb9(qj4gJigqDKNZ + grN$']Qh>JNb==7T2aS>=Zt[k,=d4`fj&oe*8dBKuV$s7a\-Rj6fD.mmdD[7hV2Xr,TP'F2 + 'hZRm_Cuq7"CcpIBl2)nYnq>@9?/Ho<[[^XR]sjF8/.J3X6g5S;5U,-nY`CrfOm$k*>2F9` + hFLqnt+^mp:Qe;LC/i5jCW8E:7On`<=D`u^2%_&SWS/<c[TPcWj5a^c/YF;IN"ogt=s+,lZ + )XII&:r5$P134k/Aqi6`M+NbZIasm_?4<r!B,bWp=Y(N%NKW)GL&&Oj:_Q"Kr`%4O1/P>"D + 9(MYL*3d<hZ,7QeU1CU6askM52+qI<96)XXK*.kg\\jrK_l>T3]*Z(gZV0VkPRKe#$p`#T6 + HguIbWJ7gCdbOD]Y!7F]D5FEN60#.b,%5D`4X=4b#cO9,Ghcn`;IuJA5OZL@&=oB9ghrT<) + k8]<\jj+4ZqC\;1(g.gI8L)-Tp3ReD<XRGK'/:4k&95,N'FB@noF&:/ZbjA7eSYB./^P1no + q(UhVa7O3Yn12#C->lVa]uE5)g$cRW']1K]L(F[&iK:NKdUGbVs3H,#kqS-42R]R7K9`';t + W2Hsfb$YYH7!QZena>qX=9E`FA"eATsX-Eq!,RHChb/gpt8AturHk!QHeB%OuaUJfje.O_( + hT8/"8Q?Kb//G`\kfJc#adj<ZKGtFA*(eX#8`BbBoH-[.+<XW,/fTp5/>P9l"i=696=cu;, + cF%_WBua`6DEnrURf9FT+RTr_X+JSl_?f\UlmjH6Su/K1T82qWY4*r_gJuCH`f`02T)o76c + ?Y_UqT4W^I.QU6j!u^F1BFM\eM569N4GS@S9C:7neS,,kOY_e&"40bWJa/`73(#j\3=Nb"W + =@73tdT43kf:E^a6a`GF/'[+N?Vfu9Cu7B8>[HeD-Jg6cDWc2:qo$@GSg@EpE5W!$V;46!t + Bk.Xue7XXF>NFkAEC;-cbRRCtk*:>['m^4a0f#!e3;c^pp==N'F.J$`N`-8WFF&/?K:TImL + ]lq`D_b]!e^[2!/HiVd3!a!VK2SB5po`Z@)"tPUN2]RZ51;6j_^UIEk8DABj<J[_lHT0032 + r`%`b0@F(Jk9a1XYl3B985ERRlH[sdD_?tdu7/cQVm;V;?GfD,pG?+,[&)3g!qCZFXGf?-_ + XNgY2c"^e?$4Go@d+83YS72';R:`W@u/d\qIK&RfV6l"$4?%bG27F"Zfj&4$+`N><P+oeNP + \b5u[rs6oDL(/\0@m]i7_=<*E$rCE19h8A%>a>STn:,tpFS:HY1C<:&#^qorA^e@bb$<B\H + (9@D?rbLL?F<I6Vm]ii%=?/5rp>od36h-OAU?RPMS1c/ao,NQj]fiCi$<a4e-RnUi/ls8E6 + ?0b>$gJUN>iD12)cQcIT,?MoSDpM^.cYHb"CL&DQF/i18='K,u`;Nbjr`>:q=/>oKZ-1b9Z + 9U9r2Uhn,?%C:=J[Z=!2_9hg71.[I$b'p\[tKdoKb%:N&3%N>2r'U!`=pnS'Y#+t\29Q*"W + 1AW))u^V3/ZBl6JB93Q8mYAdJ]H\%@OaIRaO'_TZs"0Hm[P4R)4h2=qrJi,FlW_Sk@h7dab + 2Bj.\mCUWXs^diGF:/#U9XWCq*0dq,Z1F0.fnY-<>YY`q9)/$m.\4kit#gLI_IF[95`7GF" + A6s[DdlpoQ:^!q2=]IgnJS\V(=_6Pl;4H.Wdji'qG`\OVo]^ma\M_E%lb.U2G<HZPdL!Di8 + cW.*o-Z.6eb[=^4haSo!h-FFECZA]K@pOtIh4%!MHg+;-gePDT<f?>#okNQuX'Qb8<o)fsq + 6OC+p"(5IANf8=9m&?-q_fq(?Hdkuc0eZ5YiWNM.lL[09"/.qLY*pHAg,r:HjeS<q;u,H?a + LAHV>Y#"lsK)nf]E1riUgM')-J9hB-mfF23k\q*k:4ei1-Mo-4<t^k%CKeY)[kWEpVa!X'. + +hBF5bg9J9Re(?e@:@>$GjXr:u2/Rc:O>4*Epc6$`UZ9'U#]0d';1r1mV,hmY[ktK($G*Z* + +)e,nk1#=Hd"!QpIcJ1=L>Y[%Z>:I5I1hn?pl8?^I1fun61uk+\ZZ\E8q`APgi%s5jea#N^ + ']cVj6J[8bCE2SE[^4P3lYBbmjJ;5)[.%VCQg9r4:Gu!E:/ED-]O`A_jYV5D7!^=p<R8\$A + UWrAo4Gc7BP^-,A]9)+_ur!Ta(=r9[gi#WNV:/bb1L$2d*?4Lk%:],c=W%JAt9RsWm,ArCs + cR+d<9E07au&[)J:%[B.TUU^3!6?fk4n(;B(cc1R%4G%;2f73IE3bQJZ?3&\5mod^Bh+hW! + 7$K2VDr;\"L7^?0*O1['NMBTiMcQA\[rN(^U=9?RZUm6'h!OQ&Df]7`L4T(-9-Q!:<&`,!, + +7[RYm83A_%4APW[k+')5S^cMfn"u`G[\6rPAa1hu1Cg3\B)l[Y3`VBr`QQtS2EbfWd_4^M + 4oY_$hEf^3j2P<bE0`oX,Nro#B4QJ!A;t:\"_pg*CHha-f%1L7jRcLH]4DH5[C,/CL$+r/( + =u=ulhu!C%"2q3rp29W:^7t2*lQ[]`UW>Enbe,XI0X?n#\G(`jsn,^[j>-n%G6-SAp+![^& + 67urP:D=f\\5^m2"@Rdq8:T\8DDrXotB31"fV`m<t;fN1fR/+`4D@;D0t$<nuBbh=I20F0) + A.r@-q&.d.$eBG0t*2aCPh0Ns4mBO2OeFrAau)T-IVg?1t0of6IH#kXZLmadHY02-9V[e/] + .ksnP<,t)ksQXZjkDcOPp<\8%#<ptbreCH>6(8"S3>1F[fc!O`2T3^pQbA[=4E",q=+(80I + @SQ:nh'W@!:"/f@j)AjDE.;P%05412$/MaR<c1E5c:BAo[W('[cMc\eL.pGK<SfS(hF$pN] + lA$dE_h\Y.SgjV[_QHkluAW6=.^Ggp02Of`DAc@A``OS%`ilXK$]d8m&"9"K6CUe%:>n@m+ + mNhNJc+0MsU^a?h8hV"VtJ[([XAJo)4a![KS7\1/Zo\B3#=[:>/jK2W2T#o7l(!B0'\N&G* + WoH2XL9]qfNgJ3V+_#Pe]46%cuZ&4-4*I0:V-#E^DWmKbk*%UapFg^nB,)aO\46)5')-@uZ + !K,>`J#VVO\"jfPO&6T,Nc6._;+JoDmJdL@eC)ddX";4!'E'Y3o#U+d*+G';1H3bOl_#oca + g^l=G%+l\RL`g"0(4l]tJP05Z-Nj`A!\clndKgA8"/(1s+>O31^VKqI5YM_$"9[X+J7p&@# + R#_Znh<<C&-E%ZO^Ipsk'&j/J%qY;fH]qmqpWA':e/_AnH=4*+HL1\ed1o"4Q)8Pg_&QLGX + 3A>7s>ROm=IDBNjp=6#jLNg*=t_'&^:H!p)oAd,E<&hJiI.u%ic1r"E-RFYX[f]#hsqhTT, + <`@L1T__&CZiX:_C_)K5``Bcr.f#\Y?8HkM#Ka<@"()2KH%Jf.CZ#\9T_63q(oL,:rC(oSU + 6Jf&/EKRt$q63psAL&)'^+GK/kJes4dG(LN$+``/N&`O(#TS9ZW>+gSFMLlUW+_60?-m<"H + +GG+I=!333#Z`(%>dAqr80Ll_'aPsY0d)0*#Z@=L+p_&=KbW6m'IY+iJeR>k4Zad>l3L--K + \?]++G@u@JeJD5/qO_W+Y,u(KVA`DTS/I68CD/p+G(3h+WQ(GW$*$S+G<o(73I7U#XhYU+V + ')8a<:nB&;VJ7=WiA1#XG&9!XM$BBH[5)&#^WGJe)N;oj]+sap:*PK=V=M=m.!nJe!SZk(4 + (6+QI;]K7X@fTS%7j2V_sgfRaQG+OkuP2e!%L+G2]\1E_<"#Vo`M+NB!A80Gd$$lB$O0;*p + f#VMd%iWq-pBHX[6$Rd.%JdV:I#V.$LWX('sJslroA*>&0JdMc+Sq7:%63np2Jmo!3TRp3R + JdEhJOFdc%+H4NWL\Q[W+D<5;J"[,D(4W$UqAt-\-i,3g,,i(.Nh>Oorf<]9$3$'ZkpcUql + fh#BQDQ&+@"5%dqJ(MWkPB8/-Y_jpTW"dbLjuAdqN??-BDS+4.I)efWiINDY^`]dqRV0WkP + E*:/8H`\[&p8&fRL$dqVm"-BDUr?0'g[R^9B!^!.V4cq[.hWkPGqE0l1VHae.p^rlUl"\c0 + gZh<R&I1e7F6J$d8n;<'N.@pI\/m>:hr+76?4g`Pq2rn_tgo75dZa8:aD\Hi"rJ%:@3S:A* + l6_s!.cI)XXTC1\;miV!!rp_*!-h?jl%o_7JcY3>B"8qs*oB8EbYl?p!./b7*r.'S!!?^M: + J"U6LJd;,ZK.&GZ+Ts'EL\_`-k[8n6U&KfPqAt>=JIs(o9T"W%.3IcXJ"kp$N!K27LFCOh, + D:0"L\a.Ukl?4/+o[T/qF6;j+XJDPTKgkLs%5ZW.M)0Q5LR@I92TCU-02k0#PqpPl'QstJc + ;*nqJ78<\i$AgjIHt"s%_VQ4V.2[5L]-%:]pY^8&Yb-PX:<Nl7@F`iVoVXqN;rc;FRQr0W( + )oTHEHHJ#X[kW<`9s+6oRpWhiguQ%H@blHFaY@K*D7qRRd6nl;aPJ?Y=`a<0^fJ#o@CZNp? + P+6u7!XX0pRQGVE!lYM'QiVp=lqViU_P%Ce-d(5Q_s';DuGRsK.5M)S.?Gl_h9uZb>(\7\M + li_gB62n]UqZn;1."AJCg;B;1&n8cWMN@Hb5M4?_@tX`@&,&:RR1giVbc$#sOoEN/q^ruW^ + ji[?)U0/+3+kqW,*59C5_pQfBT3Ir[$I$,>'j$h_u,H(nhem#UKD;+EN_8)^e0CX/0Er`ZS + kk4g=pC]D<129PMuL;#Pg](c.0J9[een9q+r0p8:Qmjr`,IEKlJ^s`jkaa=U4b7+6B/FQDZ + :q>g&UXY'nW_Jc8u2q0X:Gq9qB+;X3(RYBAt]J!f3oA0%_XG7Nlo46LqZ%2l!"0-Gb5Z2SN + /q6,(I1$CbJW:cb"fJhjgi/dJapR^^0HuG;A^6d8ia8+7-k?[hrkN)R`ZhT#Gkjsl,dQc&_ + !.XJJ!l0$o!oR5Y+6W9GTD0W6+J]d*&8DXsdJed=q@Oh5:(Y8J8I;(Y.YUEHJ"e[sM+@CiL + +pI_6YLHLU!be?khLZ_OoCC#$p]W2)C._LP`eQ59-<CV-q*j.'k4gYMfESdO7^.NdgTZD&X + "q>Lt*Fh@W<LSb^ZNmjW%d3GE4KH50)1\5L_[m;)/VI88/Y[Uh#E^j8DZ4oeo%am$!T1>"h + Me3@>PDs&Gim=-*#a.-2/?PnL)t9#Z6Ded2:XA,Tl[3Fse=`4D:unS+'WW^#(Es'%8h@8(B + t18\U+>iYd)O7h*]VMs&oo4Djaft+o<qY_N%rc-44brR4Om%)V9LQD-Q5M2LuSo`b9caip; + kPHJGm$*"*H4*"e71,`Q3eoLgrlrL\3?RVTh6YffctLlsBXDl:&HXB1#Q5mC[%46TC/d`\+ + Xh.Org6V6B\D-'2^ZK-\.AF]:T=RbDXH;TPbO]+#Q78oPrbj'G7RZqnR?M@riB,"\Q><5Q` + MLS]/fum=fXu+XcAt$f(0;ZSUgaCQ.il4B5Lu!_4%RIHGDWn"^rH8L9VLCk</&KD9^29HR& + O3fip*'hYim'B/JhdU&SdX'r69h_UG(I_KfM@s0];LfYA=+D%E'-5;4d@gT,U<TTg)!-liK + -Z2\gH7EW0&M@j+c2M^6ns14P#ls6Q$%'JkK7W@^DhCH]nY=(^5=03XAGa:S_L%;s?7O[/9 + Wg2#f>T`_6s54a5(pG2u9kh="O8K`F0Q_ArGXXfoo`lRorYNI3DF-lf4JYrXN?@qV'&n:;, + p]?=<2ufjO8NLHnZFg8P*6n:Q$Y#Or]eIa%jK1gBp'6Hd?gX.-KP*"Pia70b0,KZbgHHVo' + TkRF&+MD2<qnfnGg`NX#<^Ead^pE$":0QJ*1)*SnG.tc\u_$Z5N^-oG3,,e/EsQQ<qf!GlQ + 1F6V1ua/#?D?5bfnA9p!U\dkq"IC/gV$C19K/)XaW%m>dUC?"-McT!bJ5b+H.8L\pc1I+S$ + ;_,T"m<.Dp/ELSGY\LP%.MSB-CVK7`sXJ\Ig-V1AD'\gZ1g^<1e9($k^c8*Ymh/1e$.fssR + #2U_lYpYpq_eS'6Wo$GpHYY0ZXo^U9#(4]'ZffuJBADHu]&C]tiX8k<X'gGF/j:mCJIXTI- + lf^p+QPotjGlpDW&hI;5.RnbjiC3Z$`8WYY(c2N$EeE(mWQ5kHG$2*]eI+_LlU]BhMJ;qM= + -g)DOuarU;)Ms^^.aA"O?=(dd)i)NU.RD0#g\)b)]<C_T;eq8HeG"*psO!`(;#gaWe]$'^n + UKmu1Y<ltDV7E>!0sPqNWfa^3%[@`ZqVnd0@-9UM15TU7:0'X'E_0079JT$,6MoS);sagC^ + LcC><oS53I!Y@=&@B$Q7mcO&b.7Pa^pq"N#7TM5cdO,@MPNqk7FU+IR`DkQpn0)B<A)Qbu5 + 9g$o9[%rGRV%LAik-iel<r?]ACl3!Jm::'nB`2[lDJFc@X`u9(I+StnWFlF7k6fl$\CiI"s + /NAFC:\GfUb3+Tg<^80k=2Rd9&$*Hg[2lZlKWP-o-/%uGAYk3_`$>KL3TVW",dY7CDS6JmW + ra@hf)2nLUaZ'<8^9fi/S6Mb<gWX9."NpI]aaO0Q+;=r3fLJis6(R:,rRfG(Jt/.'?$kmRm + ioNe>N@KFV0Q/mdZoU:R:.]-q(M"Bst`Gmd9bLWdu!%YdM,MWjQL^*oMcZI%jWXQg:l%?(. + Blif!oZAe4[l`fZjB]-_to^%D'm*<uhbV5,03A>@-OY5Z*bXdm*:m+TE<,VEuYo^nV5fUo6 + n:bcLcOgg!J<gV"Q;8Q)D^+al6HR?"b"79X7DAAS4V^Z#RLI"imn0&[:A$>RbpgNSZZ,UEd + e6IN(Q@^P9_C@uG+VQVp[O-fC'N&VPk`B:q%9(Cl6Oem.&,%`BMkf+VNCZ>5h#*h)m)^Wcb + CGQ_]3:-*3[O*n'5cGd\fRp*O"3<n)#05oc@k0E&$_YdI@/JoPmb'WlH>+n,FLa"!D56+KE + M)1(aO"'`h2LF]'3^7q3_s,9h(RG;(Nl&i0V!h#gC0GqqSddR+-BUBF44hbEto/c[m#<@+k + P-0Nl,0OZ;IA:AK2[8%k(Ed$H[hZo<o#L\3TZA/]`M[5+h#g8$VP*ZJQRgG7LKX.>`86IF( + V^g&o.gTo@9>H=G]*je:$dunJZGsT!R4Q_./J-3bOOCm=U?[p"lK$+u1?f9hm#BH`%eB9'. + .%O]..$BP0M^>!Ym2u1$B`dN&JGrm;]:hj*l[A,1/T8OOXDp+:GWE*Q.%Z*;`bYV5*ke,a_ + ?/[O[h7U9/R$:2,(<Ddp!QN?PU\b((A@Y%p([X>[VPk2fWt!WSof+I5is3T+Qb&msOmdP5' + c5),m"BMBP"mT/oiE3f5XQbqpS>XW%eU)b-SAO1?4U]PB19V6*_IZ-:c#AGm+irDVG%&)>c + GN?1mW*g>sCDsl8p[3'>]+1(t"ciDcDh&qdc+OgtW0G<,m"X1)h+nQu6O<cTC.3d7r6RRL2 + E&U//k6'aW">WOOE_LgX;$?Gi"Xh7mCHCCV&LL6g4)egZctb!6q'T![-]iM%OF"A'2WN5Aj + <Os9ZB5FbOQA0^jb,9:&>(FOU?7Q9k2]So0X3-M[--qikX9nO:r=iK`p$=D8heXEE7HP=]. + NO./hl4BYiNUf\Ei_VlpUFU;Ypufrf?XQ&/,9[8IlAk6Vrg/&MEQP1E@(6+]5ED&l/^4ZS) + s?1K)O8'5njn1I2]G78rY,'TY"RZVqSP=&fbu'rBe&o48[nBUeU1(:.url-C.sjS!M/3"L% + =nUif`LH*EY3>%<4;3IV-QI1t\q2q?GnYJ:K18C,3U[PNmm7-uZ_-<,B>Kp5S'@0oQd9MQL + er=Sgc#fnLfVn1dfMV(hWhj$ZWnC+9+:Y!F(&4kIWnS.!gM5PPMW3D#a!+7&@8ngeQ5_&Ch + ]oQU,Rs'KZq"Tt9&F_dA!Bl='NVQ%>=Irn"u]1FQ;L,s,=`MR7n<eRMer^kJE--SB(V!o1l + gYdP3#T4BCqa.1n`u-UuntdB_8KB1pZ;K[ce@?C%T5V1rSViaQ[L-C?tI#G.-\?hbEg\:,^ + &V[`M:qb`8"9_JoBhNn4h"!H'auDJnVKmd2`pnPN?[;3(Sf%g+Sr!E++F;Qg`I0,ZRt&Q># + 2;pQm,:G4R!+]Pos<:<$dDa_f.0[,YjF,sH>eS0+_D00]1FL?=7l0WUEr>:l)ped/U[q/\9 + B_bMqq6Qsp24o)4X`q%UUc3idb#:DP=Su+?e^)KFF4FO%f[eC$f.l5iF6?i8lI[cTfTGc3F + 89.Kr7R//g%#;RF:2H_%bgC^gJShqF<+br+P]d9goC$UCAU@7j[5BuYcp1FM]$!I*s@ldhp + >4h<^0$=6K$Eb7Q*kf2GUY6D.RT6#?5nZ'ROFe3G+M0B#l?4$\m`F;(7N+\^l;B/n!g^Woh + L8Ba_Z<DLF%\K"Y3X]rm=Y1=#-MX\BS99hqNZQFfl4a%d$P%[?2D&FjT/o5->Xm1fG7eGbQ + ;!lPT.mZS@QlrS*V>jm^Q12d<92Zh$\%e3IWnZ7dk/<o^$.l=F`b-rS<%m'=r>kE4n<OXba + mo*7G4]Z:?<ik<tF`R3GIruKSF]Etdon@P]LnOF"d;P-BF/&KT/U(!i>#Vb2PIAsS]3@)*C + AB_,8mRXg_PYqQ*Hf\S),>)dVZ(_qHMLle(UX4-msE`*Eu2^o[JtWbIWZIS!S.d0R?)dlP9 + Us3,Duc_=7)G8o9shXhiLOhlSF&H>dN&hA;a0P12aLFa[[joJeEUC(aiprJY!L<B6i`oW(3 + HKTkJ`GKW&OUd'IG4"bin1TWlCMH4u%E)2@jll>YJBbQjl*lG4AlCoee9ZM_SLO\a1_UiR& + aRSSf4/#?)`Djjsi8P>p806!@qN(If_&OCE*H&YCRVt!]+RYQo,NK0>`ohfDqXPKl)Gg:W1 + FNjK@;i8p>$Wq6XX0\@?]#0[#Vcjm^XS7-HbsM;E8Wu)iPB4gqO3#lJl'+,qf!h87pS.X*p + KcHT55AJK=^\8!"dYARQIH/+$H97fGsOH=6(*8+)]b<1-(*+0R1_0YPVlna4.4S_RM&&X;G + +5TX$mspRlCR?c4:*H't!`JS5rVK:iPF+>FcTU8+&GE/jZpj0:jdjSog6hYa`+&KnNF%KTr + NjbItDF<D.R>9A!L_Ru`;'abGu-L=4_hG]QTkUPHE2:2[`TcGR6i2i-&9m4eP,S%FNG8FBY + U:tebYHc^2NY>NrY;E2,*He42K08qbGN,4]l36tP@do:SCb5:Xeoi$l,@?,D@bh2;`>Q^$j + T2uP=(U%hoqQ#^%=SNJepj=$C3kY8L_-)*&qA^lG;m<%M.m'7YGZrq@]&?lk6^.82`1$(XP + MMJPj-9t2YFJg''D#O7!L>[Qflt%n2no>s%q"+9?kaDb>8`eedbHe56?h.,r/G-bQcV2LZM + C,%LS)^)1!3]`@s^KfHUUB88]rr!bAq=)(/qVG_.B.U-bEYSgL8=uK?Z02[[)&g<0Ms!R=i + \V[s[FRPc8?NIt[XskF)KGRKj5tNG;`&C6Zu:C[odDf=C[#U4!ojG/r#L1PhSL]/9?3pm%X + \27rXU:q38t(oG9abLC_4;AT;G34Yn^&Z1gJVU7K>(DkX])cTl\^:;jp%m?jk<N(bRf9\AH + g\l3+!B3+E<r<9V[<:-nKu"R,_-NIOh46QR*Ea6t=]lbJ\KK?>b%THW>.H6&26k&=^TI+JX + uo!4gdN5%lWi8n>nc1&>4n.>W7Vog58UR(3s/gEBjVPX?X!u+2oOG%a['"Q!IGbngkB/N.= + KA7aRCde[Nin[-U]o_Z.u*BgHV/%!Qs.eA6cNmftkkD;b$]&SCeq-RpTcTd=Spdc$O6g(3r + JpICD1#T+5A'<2Z@MXgf.3cZYZu&,"!Erj[PGTBg_Gg'G*</KsUPS.T<8=MYabLa'P=Y(A0 + 3MT@!E7g)gX'ei'E&Pjs0.A2Q#,*E5,JgdMc719bo"AciIe-I7A#b6Jni/+BVAsWWo5n`ZT + Zk4ffJgDOr3$Ls#OflM5&4CmX*<\jJ&XJ4s/dR>d,%-4bN"HR'6U;9f6mN?LI"EK6L_q<;# + _0_-&(!]1&GZGl_%0ZS+m'&TJfWd)Cs3IV"?JgYE'oj$j.q8H+GTY7\d30(_$uJn>S,Eg2! + prjL`r>qAqCn.L/&-g`rn+_$nt$R.L9C5(SHK7+`[imlG3j)6Hg"G"=s5>KkMW1#ZQBii.W + gX&>K@V5md$IGKL1cJeK8[\03Bs"=0Xl63ng/JhdTU^rRXSJd?$4KRsI`H3bW9JbfWo+G&e + `*^`I@G(Kri+EE&=&K1ooTRjBS)PDYU#T:V&+Cp'.-m2oL"nB/0(Ee9D#SnP6>_%D080Cf^ + "UH5GJcsM*#SNe]+p\dRJJ>&7"=PBXJck3Z4G![@q?RQRJD(8<+Fq\_Jcc9$/qO/G+=_sEP + F;a`TR`12#bZ^$pjrP1+<5t6W#uq/!H^@."X&=f#Qu9#4Wo=Va<1hA!/Ma&9V?nK#QVZW.K + <7EFX9Qi+6W2#I\;JU#^t7E+nU@.-mA)3*qd)MHQ\*D#^RVKRL"1@80QuE*XEqGJfWEG#^2 + kr@L.+LLJeD"g;kGaJfNttb^phCq?V*aLDgG<+GU:0E*Z!X^4I<F+hE7EQ^S1sTSCl#CnQO + "#]&>=+fp86W$/*k)L+:KBcr.f#\Y?8INX4[a<@"()2KH%Jf.\E#\9T_63q(oL,MSS(oSU6 + Jf&/EKRt%$H3dn$L&)'^+GK6&Jes4dG(LN$+pNXlkTU^jTniIaJ"dib,`3eedJf)ski)N%+ + 6`h*OWWg7\<A3F;I"^JVtseNVFUJrJ#:9_EOMc:id@FAl3[Ha+6kT[U`\l!rhaVVEhKB]a8 + 2fcWsAL.J#eA$]uI,]'$.C28,CY`XbZc.J$'%Qjj(#eZLGO\a85X^YQt%.J$=_*%G%cm;]* + P18,FK[ZA8<.J$TCW2;YZuo0C\[a88JY[0QS.J$k(/?08R)PA&_nmCE5P+78%dh]M7ero&4 + L,E1\DL\mBe\]=T?J%A/IW.2D9Ha)m!Nrf7KTC3BknfR<Trq$`meGp+gmQLm&J"JIpI>@Xn + +6Vj;T?&('O9,JKL`h2?EW1QFq@"J03.IV-5(o#l(./@HJ"a.HLPP^K+6\N1U.AUIO[:NdL + qnM7nc"K&qD9;XfRKZPIZBQM5"J'>+HQ/N5LM7c8H\o;&+l8(&opf@8Q^J=;>ujdqH>!*E. + =_Crg4o;@SDWH2%T?-5LX$?9uHoh&+npIe"h"Zal,B1iVoH>qLB[Q#_/d=rh5,DLlc@#7O[ + @D5LbMh;M4p@&+qV@eC9X[MKr#J=YQf)3iO4dXFI7tri>,fYuYVi>`\Ps5LnEd=/5_$O7e) + hef:ttWuY`PdJgHWqTg8L7";<nrj>8mf9g>bD6;@*5M#o8>\!_QO7gd_f1>pIF&@+`p#<YT + qXblqgjcMirk?GLr?(A)Ej-;`_,s8.@0?I^O7jJVfQdF*1XV&a<\DBokl5.FrK!$569j-?s + (&JKPHpKTb?9Z$Acr""O7m<Qfsq&p1f9gMepbtL,=<V"/;B9&RQnl\s!"69MmXn+eQTRfCM + e3sP&^In8,4ZOD2GSWL=FrsF)E@8r18u?Ibbs4GAf)#^:3h8;oe]2+6?56\47+iS7@S!`Ir + `,1&b<Gq.F`N;9V%u39Qh%FW]`#J!Z;s?JR--FUkD%3p0aW8,8&bjtqRTpM0(9_n(&Pq;3( + ;rb':ITc`EVik.dCnt'@:H,ddPRkanZ?DGtqmq(n"f=q")./u9er8bRnaSHuWm![3rp`5Lr + G/sF7Ia?RB^UO(>i!]WLU\skIoA]l01^\eq3XA"Rr]ea8s$1)m!l9+5#,(#uKFi\@O7Xndd + ('*C0V/qEW*'M%KJ5gSr=k=b<^4uJ2ho]E*^f.B&/!Rp8#-#)`+Y&A@U)WanO=q&nc"bCqG + W:A=tN1a]bht.@SC;116;(R)C%@[NNp2Wa#N4Pa81''l0^[SM"r-g"G2_u&OhcR)F)`!MNK + YP8')Vr,h2&X;t+'hadFk1eP`JL&r_=@+o\SKqR2Y%SlNqd?S#cYZWP-DA.S?u/nMu6QdZ" + E9M(&KL\fdJl[!,9R@?"pN746%<HeuHi'5hXgRD,fE)%k(3N"Y7+7'PgY\DcOkBufkF4PZB + 62niYq\UFAC48shs$16<"e_riJ$PdIb6RnsTp.0bd2FB$BWF6;m.c(;!X2'76Ukc!.AerE7 + nIDV;egEQO-1,Jf8';YVGtsK2G.j\af.:;j8PY!qL[O-X[FT!,c8'Ps&,k.:2nJsW0O[&j2 + _+!WtfBP3G0pFbB\/Mj8Q>bC=-4U1T%:O%)][Hs'2V$G-;D/gK1^6B&37^YSIS_=D*T_X@] + HMmlZ*PlQKf1X4=MQo\Z/t^d%2AS[7dQo3*B5FO%Mg+82GZ>0$(0m<ReUkH4grqeL'9bQrb + 8nGJp2,!YK)_mm/s$pff9K2@LM+87t_h)hYE+[t$O.$b^2qn%(@%HE3Tiq"BoEtCk?lb0dA + ,K+riOjZirMF7C@?`Wu<,/sRTBlu,L1&lfD4pd3'VZnL?igjSPs2%l:$V./gL/](F;)/i8i + VZ'!jBRV]b$@``62ui4BLTo8_,DhBB.*5NU;n,:*_Mi!O4Eg:=H_$\jBRb/A^n<5Mb.Y8M2 + FOgQ;l#U/nO.0bdnU$efX^;0]kC+2`!5c?]5&-O8R\#Z\7_:\]oma.I9:j`d5t!qL6cH!m$ + ce"s<[\6ti\?6YL@uB$BOu&,drR[)53R)K(TmRR*kjI3r\iP`G$P[Amqf@&@e!=;)]cg@_: + )DD_I*l`uGP>NW]"/deJc9oN+r7`qa67]`,KY.tEZ*8>3Y):5EEdApLU2X/c#qRE)R\t,;& + ^mfEdgN>%Bi2dgTX?6tORH:oX`h&(/Sst0<gOC:)J1T+</Fi9j39ReCp:+;TT:4<&X,.?+M + BDGJ/YW:u_?2d]qmcNbXo\p4+ptJ@,WSI,\Q\/>)X/CplU$Mu+`!Q"iYep$)QtD<3Vjf.$M + >S]pED,`&hBe&F/CV%.PKL+3ghP1W\:rq![B2u,<N(BCTo%9YqV%s0WI5s8O0mk5eCeB,Wc + S`9=bh<]0!nF,dS:KnPZWT:9gQ54<d\.g/GXU?9DCn4DQ,eZQpj7aqfWQ-4A$QMIWrlAA%_ + Y4UPmd)_WPU0dbB"(W4fO)qQlLFL-:9]r?`L]A0a(Ho'K)1]1]G$@tA[6E!7>W)H1*CZ[%/ + k;8Wd1qJYpj6IUEO/WNS.3YW=6uOq;X>N@F58ooY$C]!s=IVrd[B'!Mn[U+`GW"Hn2=k3?W + hl4(VoQtjS6KO=lDpG<Xdl/"Med%8X90t%d47f:2W2BZo5Hs@\XenqSYL7bX)tgU$nM_D/1 + KR;OOUb7HU/"ZSs%4;.t4)=J%,n%/E--$"ID)6osdqT6(6;qU=RGuM4`gc\@`k7Z3%/XTK) + KH\HF*/&dg6H$TUKV\Pne\C?Qfbl6.sOOSbKW]IPW*)D;^B3Umuu"//'Xp*(^U9,j\$A#6b + Q1b[!$YO&\YU+X$`X@%mJ,;TKrX08:>Ye(l<0Ub)-]Y?O+5J(F76lQ[_6P<'S\tjtj`*4!& + ]LO6r^dO*s7%.".b#:%]bWJd)4CcE"lQ[^f,u"ciV>JHKbYp9cA2:gJ4T]:['@K<r0IFsu9 + q0\2$eE"=>Vg,;1Q:0RZ?\UO?o,rQZg)tQ!K]JYi^QR.W(TRX>NM9Jk.Z4W1ocMAb\J+Ila + 65E2%4B1+H=,5E5)g$Rf%3@/9AQdZbK,'25=BrHX-stprAm"a/Qkp]DKXlr1$FYWhIL(qu= + _G!6?&%a==G8"GB$.Kg8Ul*DD5=J_3MP#frMBaJmt9]"]9hNBl!R5idtI9TUf6kXca+aXe' + r`"T5iJ2eO7\1m']I$ha/R@f_4_5s-B\c"h:ff6<sanq)/X<>Y*+eY'p68YK)7&;$]VClTq + 8pi#/N$ui;(!<QDTp2WF`2uAUXs)T(01mB\$o#jE0qqW&YH+N]I'pPJ/&Q24_gJth,e:g_] + #1O+6b<T8'=,gIZkN@%bR?b\)FI1L6HhPZUi]#08kR<D7a--T7"S2\!`;@]b=&_]7)Dtmdi + ghha@ucYQ?5tu,Z7>l@nf?j9iP+>FB10WdChBi4\9uhUt\>Fga>MG7F^0_icmo`4"%]"7MO + iO,i^9Uj>8'5c<Or+ChCt=Le`k".(nh7V!C4GlpenZ7a\,'j6fD.mi&P%.;MnjA90VQQbPq + 25?)eFKQfY&GX$bl5E_eLqdE"4@Z%er8)sSElXmp7BFA's5U:tY1Mf<LD2\=H^heeQHZ?ib + Et"Rs5dZJH_fnB#G`=hH_#0;A$[fc5gqbh35t$t[%$j1iQU,W`_1L+F>DGeVLlVra8^nbPi + W70n+%cYY+C$'Ar?40H,Iof;b$678D'c`?-omD"b+pLZ[442d/@k!^b3Ub'r@YZ40bPH]9/ + JFt67L)W2+qI<,2>+2'<A^o\iT(5_mI'D`4[Cs^-gtr6h3FZ!tID.\4e]hPak-8<(0bJ]t< + XOe7;-MI*0)Y99n"#bhPq:l<;F0:X';EV<h'bHd"V-e@b<k79nE_CtGPsfYrg&`L:_aX#.M + 2fZi1)(fXhdr*S"'hF8IAR.TFY4QP'4j2PTj)3j>SK]uNIkshdg..(_DdZDc9CX2IM:BHhH + '_4+so2c@mf,XIkXS176pRAPbW\aKIX'rc^Gu)t::ZH$$o4LT/I8Cr5:b-<H4)DuDJP]p0: + igTkK5sMZKi"n+:qLm9bBM%pM,<l&;$20]'7DF.N@_^Vf^j\\D&1eF(YL<n=Zm[+8c2^pfY + QC1\C;VJopSb^RlM0,\LaQ0h'?.j,roch3J=A8*@TVn.CmAI\_O=@>qK5s/ijt+3\pKaRef + B7X1EsAdnQuD?*?<.YZ$7\,?;$'F?J;FZU=+C>AZQ.Had4=5hh_s>H8H"]=gm\79eipg[cB + &X2D48_6OJE>W^$G"\r<6:L%tbgkAV\P%Iso/]DkV4ZlkID9g[[cb4bReYUZkFjdUsgcaHO + ^%4KpCI,ZRj%a+FZut*0Ms!9_lFs!P[,c&1rG&_Rm`tcJ:CV2!<GtYjE#UBK.EhD91L*.lp + fC_r=)22FI/DNP_q1?V[S(4'")"Y,IB*`j2S=^Od^E6r\$l0R8<\(peV1'iFZ4,r[t;P#R` + 2b:Hq>Q2fZb(3h%VgX'j1\U+$CDl,T0ICLV^B`;8&8mbDXd(R*k1%dJD`\"-L_fP:fS$/n: + 0WFJq3Wle3QM3O>6ubFU@=VCt<0\g4OA4fM?pW`(.>dl"5U67gSa!5jLL3nuc#*BDk+3kHC + ogJpA2h*&!t5u[Zj`&5,*-+d,4]Yn<o<)lB2NCLQ$^Wa=.>STld,tkmn9\`?:V;4nPFAgWs + c:(ILeMYM"6det7buJ4jeT3Q9]idL_?/6f2h)/HNe6ouVin\0R?$0R>/7h"5k?Xoph6gh.K + PA/i9id0I^<TBslBL-NE@H%jf(tkI*-J7;;bqG-hOJmA7I+$,W+D3Bf="mj!R'TK!n[-Pha + ,`R":&$e@UF]@jua%(G%KRIj5tFp=LMpO#&<'2Njoc<\15kfm$TF`E*5NZ@"b)QSdEg(h</ + =C=h],gl3ujG-<^=pi@5Q)e1009Ipm(3kR9+JIY-O]KOMQp3cm3iMZ7@C\1et\gC"2E/A/3 + A,ZDShB`,\#mZC_;'&o_+gVtdKhNqI4)S@\j@g8C^'uN.]:HXgel0Qj(L7he0/7X@b1@@0Q + >;GJSgTsqYh%MeYr8:jM60cUBA2Ih&L.,kbLLb47h8W"O:#9YkC+0h`[2ug<h;Za"<PKb[C + TZ^[-$$E"p9i2Zj]1SAUL:jC@VcM@AXd7BXT.Cp!Gk2Rh^nrf4U#1b[qpKdd"V5@SbT8Jb2 + 9<0hn9M,b/J2Qrm;J\aYj.@9$H3>(%!UVB(["NC`59fe`S7bflN*<l](:l$g2;ekC"OeN$R + f0T4&H]@3m;[1@4E-'iM1M;T9M+52tOd04CZ^@C3AE[N*a[kMbibdqc&&PHJf+MrHV#]-KP + O54.?AOAkb[`$;g2%[1A&]OJQBim./ThXoh#^nk'cbi9l,,u&<L1hlVZ4Od<Bmel>s38D-o + `IlZYr]BC^=M9Am]q5AkSj5Ha5um&67P=sOI]ld!YZ<rm1kuD'2.l/BlgVV\cJK)lc/J0c\ + CU*\?;=@;0"]GB']hdJEFur:G8OZ+=Ri!!hX(8Kr;b^^Y\[)V=8`9S%`[C,@(->Kd#MSNVT + N"Z-!5R)fT+25en;J#B[Il8T!p3%k:>p7O6n3Zm55_t7k[`30M0:8=`2i4/XUTAT^A!ei70 + "/jWe1(jmCAS=p69W(>e"6IC[(@d^FYBhVq^_5[&jqBKGt]/Mca3*U%uADN1jlG)G9,8FF/ + QFKQp'pIoJl\9-kr@\6Hb*gG/DQ0Dm4<-M9jN\AW&<ST6.mtJ\uPgOEG:[bbr<>Sk6?N"-; + rcR&@p$CCO"^#^[@9&q/:%&0i5-%]?XB"tr1`$AiIG!+.g$k$,jE'MFKkFqZNb"u#jL5S![ + gkn,\5*mNE=DF.*->u(Ebi]0=$IEiNkS;\^N"YuEK#<^'mfVNHdDqDlojlMdq\"+"D.3/lu + dpN*J;_(K^>9*Aj^_'<=NPN%d_`'nr8RT->G*@.oB'hi&5InhUC.:0BX)Uo+op)f/$g;Fn8 + A]q.6'o/Y-am&*K^RB=0)L`$oQrUN=\U;SAoE*Z'V4^]=BN^u2EdF:;@U(-oiXkSU<(.=m@ + !@X&`Y1BS9*`/l\n$q2@kLgXZt(k)Z1JVRg@0]WX$!t@N51M@V7"rDiETOCq>;M,&X^qro% + N!pk%JV2lgkSQ2^%"X#qYV9#b'*AA&_"Hn.)?p@rJKS>^4:DAq!5Q[O=8g/#F1I)Kn)t_a# + 5j%dn$"b#%J'[L5i29L)qkMhJ\<1E3#g$c"*hW<&3"tGh3ro,?uF%)Xp40B\ob/86k.HEF$ + SNlkSoZhj+4_5DAX=FEs$?rgX%kF%Cs?,[bu#$)eK<,J[P<X2REpo"):*TI:sQl#18"/+Dh + &T%@mT5^tFf->Rct`J[/["L`7B>`qdF&YVma9LBCsMfIue"?m'%W#%&KaljeT5L`(AeQUi! + 7JX6q2#$[a3Z3FL*AY_58Q=q.HJX.]%@1j\oH3RFnASMEM+D"eaJX&bD;Lt)=),D4pAMOHf + TOf;O;4qJ7L4PR;)*ib:kSZN1+CsaA:*=*$##-4NbcZM\#T57GP/nLk0Hao##"bIuOp4J%- + lF.YOm!Z&JWZlK)*/mN=p@D<A4d%o:T,-@JWRqj$A":p)$`PPA.f)3TO\*.5LLqsr.0p-)# + /ZCBGgD;+CiOu4<S.F#!5e_)!Z[4L`#9*N^t#I=<M+*"ui2bEX"GR-lCTfNG'0YJW2Q#"uI + H43X.A_@k%[<=f<1WJW*,:_L[X]Z3DtT@e'^UTOQmb/_h`k["4,`(pJRKpJM2G+C_>T.Ni2 + h"t<lW(nuS=#T0.aM:_;&-D4gW"sopO<Xs\;-lA%sM!,\7[phl&Lk1@q(kdHr378!R+CY*N + +!>"W"s.<R(j:Ic8/QAuLDb+:)k^WF"ra.CU';Lu-l?KGL+!rCJfr,Q&q?TfqAOjWqGJMoU + 8YX]J"oO13e*pfqEf\-HI>ELV(#SSJ#13^@Xk7fqJ(MWqbhI*VlBNIJ#Gm6MLVSfqN??-Hd + \@\W[aI?J#^QcZ@AofqRV0Wr)1D:XK+qlZleU:rjJHbHKiYV9="&:Y=JHaJ$7ZA!5U@J62n + colr!c%+7+"Ha<0c8B$)mQ_`3.PBDXf@Zj6IrJ$b".:#\#>;cqZom<S]a+75d$gE5h!rnVn + &j*]cEL\lgU\B"K.J%8)HR")[(1SEtnNkt_\TC1,+mN:lerpYB?'?Kc.%q5J1TBE_6T)nq= + L\^RmVqCnhU\K?Eq>VQ##_/L5rdfk$#_K!("sDtLKa7Gf+6ZgVTn32tL\`!DW-Jpu,YUGM. + /u^<r=ok8=?k2Ps$dRQ)'_OcNedHk+6`3DUZ)36#Ppb/kn55:A<;t;E;rM)r?r3KUd*;#s% + :3-/4G6!QP/ju+6eH.VEt3LL\b[+l)HP:`8$jrP'.r3e:4BIrgnoAHlqVL4/`;cTbK8>+6k + ,$W58J.L\d)Sl:OFC74b;Md[hQGFFU:krhtVKU`\lj9<*\FWtfZ\+6pdoX$Q`eL\eM&lKV< + K`I+m*+TGPRrF6B2O?_;ms&k!QB1mrO[$IH=+7!0]XeGa'#Q!:!l[XJf.?_4X1?`"rrH41o + gcsD@s'A(kH4T]92OD;W?]4u7YOVV-L\h2rlkk5VM:08.@h)rV9HoQV.R2Rqs'm;PNR*>?a + 4UhFAE3WP&,&mcfi\8cU]$P+L18B[X#F[$rLFJmH9^*Xs(EYtK="[>dTTjJ,")9c&+V89aM + Unj/QJjZQF>Ad0`NF$r07f`=P0)NASgb1[C3A_5KVj`-c>kT2^[P?>J#0!D="/2nt84iOT- + ej$,F&P%cU_tM_%6nZ4HNMjBR>%EmA+<3L;^39A+f:KD`NGo*.G'/#dY$Z.D&BAF1D2Poo- + nJ!lXFmTo.nGV9Nc]Mh]mbuk!'Y:\iukFhI=UXjb2oREA#rbu3(gO&CCn\/)Mq9Ffr3b/*Q + ^=V$8+-Z>Gce.cKo?';D3<),pp&72^"T]`&#!V)Fr/^IC5L8[*JWN2)5tER2OBDNKU\tFYo + HOTKj<0+POqU/m5!RF#s$Uh3'uK`U%,n9HL?Qj2UJ_#MiTr[_&IK^MBTWo?3<)Ppr?]DGRh + T>%<Jp<Y/>]WNQUgmZMt)*J7S(cB,=65hl+DMD&cS<\Hu=sAdQ9sTn=W;JK-0@mJ#IVl+/B + U(OO>=@.8g)@a822Gl>B,5kp7W$[$[$aUjoDLri8QcYESO';+aDS.O@Ep+6rcRX;P:oAW3s + ]ZJJj0Q(gLoR/^?qra/>JM(tkqb*bneJ$*ej\n6WARWDMFc'c%!f?!u!A,Ul%)8S<\2!CK/ + WJ-E,)F)l!s'dTdM9e3J4m1&bA&J8,&,&CUfd-WjoF?K"H4rVJOT/pFrL4>kEC;4'';Dj>T + oaj?6O8<<+7t#DdQ1"Mg79W;"HfhtqHHVWNAGBfNgg\KE8(Wr4/]IbTXQiB;$oT_DhJ%be@ + M,Jg`(mG7<#Ij_>dO#c!,3`9!9#iiE/aL@rp1dZar3H>3ft(F]H5sR.DZl8,[V7($XPd])$ + )7)5h_srk[5k%eC`QMDh?eh7[h.A1X"1H`qV9S<K7[ha%4J[XQT;kM9h^l/@*Orm]Z6>AN- + frjG>8qS7+ND=,T[\$.mu>QbCc@(?6H[iXVc\31)"EZ%6KS:B?VX**B;/\=QU(8D^c5OSd8 + ]TDt3??CXX;CkB]pU9hR(nVK1U/O[`Ah=Pjom\Xe@#Pp+1T%\15O^Q:_,rHP7gpH1e,4J5p + eqQ/N&;_'"s$S+:.10@7>W`W.$>31'rj,e-:e%h``U\/8dReD<P#f-,QAir%#$4nIRRBi/S + E8#s,uqj:RDdt.4s)a\E6onb8G(J9c9^mf8B0+o5K3A>gJjO']RAr'njl;s."/%FjBU!4>B + ;V`Yde5+8Pq%kWK;=BF]i0N5C8Zr>VO(Ng$1o7nYZJ1IcK@8COqkVc"k88\X>aCDrq52<nT + %.Au:Y/YcItVVP%;KgPaln[rZ&OPd'JJ>s^KA%7M^<Le28EXeZnNMP9fW\3SXF:-7H7ng%? + :tt"Gga?RdC?g!-nol\81[Wh>:#)sCOKccihP4]>kGI,e*d]CaHYrgCmK@ot#d]<9Zj57BA + %(@!*jl7D[>4Ia&9?do#3.4MJLbhnCOHI`7"T;I\;2oN#WB5TQK>&7jm/^r/$+GBCdfsqL5 + pAfk]FINGj$E!k\,k;X4W8Ei/+V(8hQWkcChp#\A+uTlK$+R0"/Qof"icg_6E@oB^4rc-BD + sqO/t8O%c!/Ki5@&[`2OZo0bWq(.dq1[PAFipXD\_I#aDM$a/N+\.9c8<Nq)@Mngp#lN1?6 + \0O&HPR.!#Wl'fe0T(HUNoVo(em)Y[?d$tVO?uKHH9]2JCkah0_pC-]gO*o9qps;V1d*[mK + ape(T(nlp3U!5#)&#,fEVJ)$jUQ%=a#+hWFU=>o"eEp03.U6cSA8Ei*-;A%%O4:(^hP^Y<f + 4']jXa^7aP],iWE%R#!9p"%(po=W@X-*D8-SF+l"thL/F6>l3E"]9C:9Dq_g]q0@:!!H/mW + T$4,0e\`%GKY-2R%t"YnB7Wa.hH#o`U0sHV5k8%K_#Q#2l^hZcCY(;I\U?k2F[%[7Bksa8" + Z3hW#)'#Kq(;96c#J69oEXjKOZSa>CFu39>fGjj%9A$`JbPYptcOL/)dPE3d,)G.b,lkX^H + lNf=H?gkgsN/C']ANh5Mif"Yn0^[g7I#g2I0k.p35_._Wj7.T])bn#a_O,PiTcIu-uhX3** + `+^(,koB-q6LR\F&^4^JN,"R&#$.o7nF8-Okuc#J2Y"n&ndd#\%%*B_TeqfcR'/F>Yu8aoS + BJ6BoSK[AcVYHOba[tL2U>^"mpd/-jION]SdFKPC$bT!L<p8'd#%bsVH!?ZP8T?"TrfT6n" + ==>UhE],UJ3_sc`j2W[+&hd)pc8=#.kjN`uL/`*6-5D$?C!gf):`brR'J>dGh+eq]:ga*ma + 9s#7VbIWc><?s3^iH#:fdP#p?GZg@,U,-VGV%(Ep"$Fg)piD8tAZ.bu=2!qJ,L1,aCJ3s2c + Q"6Z9Z.iR:sq'>A,33Z=-E*"?`dj=Kj-88nX0P7]TnL!aD-STThBEKW_C4R"K#SMgs;M]o[ + N4<OU.56r7E0i#P6Rh>qKbC3h;Q1"Z@1(2hk>$@SNdsW=]ds`2/4c$WONB'#b_f6D^@%ZZE + noru`sraD%S5,&Yj3q2mk6*P05Mnp;Z.-T!>#nIOE1]G#o,/a%l#dP0ki!iXB^rf+VGG7&l + U3CF"G@g<AQ?c1N>==;*)f0,4^peo&[1lZVM;,;ON_M'm!RoWMpX!`:WLu2Qp:l0lK!*Eh/ + D>(R'7`dt"$PK$UFj33eB$nW,[[#rui<TlZbBe"IZnUnX'OUCjM>e$,UERlbPr)fN8+VQCg + &=$02Zr/G#0&^L=edlhPcrN1/iOl63njZ\ZWrlp<N&b>s!pHPdKs5MQ/1'Kq-$?NK`!>H7& + O;K]+*?l%<,"HJoO=;C#/9fGpYRTCE1-FEG@g!E5"B%d;&krMW;$@3@"\U]1NXmHH'K\![- + BMq2N[4o?.Qt(_#EjL*XucnA5X7)_#dTL^c;=mC<^O*_$.>M=mUll;:C=D2$M(KX1:IX3]* + kQi$gZ=+Y)t9<Q:^Sl/MPX*BX]RtgF_pON,[dlPi1lSm-H"d02V<pPk+2qrp>CU0Q@=O[05 + o[&FSXE0p*>.eJ@WD,4J$619i>bodK?-1g%"C1XS?B$$S4'75U,tQuPgBY;l.F=S,&:("6S + ,'4dT=BblnL(<O`9%,Y*hCDX0o(\<7)O*^R7N;.6#3Dl&%Q&b[&T)%Mo3cV&YYGk\YXZJD= + e1\8[JiPpX<7MFZ*,SrX[D\sPB%GA^f.)P]8rVBHK-%.NW\rk;NKVtWr7Uc55ZRJaEX^\8' + 4;FigXZTqp'X2=a[1.c6Do)qlMgrc2Vq7n@['/fe3r1n8Rlj9Hdklu0Ngi)&I'"D7Q+%3DB + T50-RVr!7oiteN].424XbJh89SoBY"]34;^n#Z8X=itc=726BY-0[]9':3/q"+l[qX@(C(? + 5<<5iU.Tk_d<%9Bk$OPNWs^J3:rl]C>ro'pPGm;3R,m-sl=;Zgmds)&PQmSOD\ZP@B.&T8B + un$*r''.7_K,B+AEnI[JFCl*,TNt_7%o!(\a(EZUX,4i8k<;.l2="_]O@rlQi(:@Xo'k_Va + B,>K'2t(ljF+kH2I/#FTpkDXgm1f@,QT=N)d^O,C'<N2!YBSI+)jc7_;o)[t<;]Hp*4<[I' + urI3CAi!h*S&V&2:k$/JGtO`*qePX<TcT+QN+(WX0qN"'FB.d&U]J`!DU/-p'@ft,@M&-!j + jOfZnZ"VhdSE(@V;0>Wu2%`1>f<37.rc42F-3/77GcuIJ-@Ac5bh!E8ldcA]ncI/ib=45.C + 6%\5#TUns&6/RqKp;jmH\0DJNpMWG'e_kB*tCFL6hq\@jT69Fd6p[]<*1Y>"AZ9fBOVBZ!Q + G#4#$r0$_8Kf$;,bb3]i@m;+e"loshIk:mJ5`E)EGY4h>5,4I.'DsVZ:cP&*1)/uu>E:l-[ + <BG2c5+"2ob)oP#Y<`ni/QGk,<KC!Wf/m">a&Ymhp+L,=YAVZF;)ih-Fd%rM'o@)KN;6>>q + 6Qi>eXLatT$pbb)XT[,26AsD]6J81>ITZWk/hmEdp0AQPih4V0BHKKX-MiSHOojW\%.h!^R + $\^QZ<Y=c*r)RK7,b8@-u,=D:#JQj!.2!I[27a3MRj8*L`3bZIf1(M`6007^RHW-FQjCQl: + JMcNgmgSTlW8q:u>-F.QJpKDFg>p4Jts9:qSIBb#Cr:4Bk0#qRUYT_>7sG\\m(nV7h.^`"R + QG/^3NKT8)N%sHKufT_IY6P,RFUq!4`3`-Ktoqe%_PWE.af*/$r`MV;0EA&[R0.b7,I5MG8 + W&H-Jf]>"Ba,[Q6c$Gj<=%B8MrtlUW=0I)jO+jVA"d(O+G$,cc$71iIWN<*YP)V[&/ObibW + NEMEPEX%Ne'4*aDm#L"4df#-q,"$$op(a,Q.,8h$E(*GBg:9f+;o/AHOW6jrBWGl6$\#)fn + CV"l'Sh,Z?_X_<&EGC38T!<Ii5(m%JL"-rNl=)J2C<bcs5Nk97ZiTiVCM`fujV)=_8Ks8(] + 7]3%VR$B7j0EK9VXRbFc7'77nCg._&2'$b_6NZab6aTX;GsnAa]sPG*5<CG)FmNiT_cH(p> + .U=A;"&Fm?_dtmYhM)>*dCd#D?T29d-:tVYaS&^EZ)2g?oMemOL358A$__[\#1[L<aeNLWk + eYi(2o?gP047fD\kAsEt(2m?jq"(K2AZ?J`W_[]O[o2tP='-8C)&sT=3kJN5^KGm"dekOTp + N]qi0j;4I>8],k3o.^H]f`^=Y$",;D/":%gNi8FY;P"P[G=%>iNLpEHS(M0F8pTb-cZtqV; + -9BHP;b>"Ef*G@,-UE()*uO0=$fuZJ:d6S=:cC2.HGCb#UCBP#J_%<O?#;7D-)V>>8ZG'h5 + \N7i35SHX"_FAOmSN[Q#q2mRs-.Oe-N[[haP?QA%q6p:G_D9)F6pH3_dNMeYBYTf?c5]9c5 + 4'8Ka;d@6ndo](`al%j.!])=-rFSTdc[u$PAmQ*p9RS=Au`G[n0Dfm(=]?cD(@.=#(;VGfM + *F3Y*@D3No^/I\=Pt/REDcGP62;@eF48IL[3S5!`^_LREQ#2T4F-$h)Wk8pFr"W=;ZI(cTg + /hoi=)5ZV`KE0&_Uj.hQ[`35K>X*5G`>XHe&ckGc)u32`7<*qe^:Q<;gM/fHB[`Bcge43l, + K"U5Sq)6r,Vjb%q#6_?o/gN$KK3L-*fOlIN4KU[NWbZm@##eZZJ^[H*)SoXgBuRb?,.Ar4B + ?88S(k>AXcbPq9\/)eOTGg#^^,q*8>+*P@pA'KDFlr)=^<ZoS))jB]9#m!'fC;oi)B!"&qP + 8nAlN:#,QmM+DNkSMD#'.^sioPr!be3JYumia;Sq#RXq>IE&>KB0*=j4d^)I_;?i>9UnDE> + ljY*?8&3O!1i*U=8:dMnBW)gr#)K4nd-rkK%1<8)5gXYp)@?\"JY4,uq^`0S"$XNHO>GZ#o + l,JR?tY95h?J/9^s9/?U^ZDg3C(kL8/]8KDh4CNB&%22f`O+Ibtp2k=pAYkRG_[j)3tJ;d( + mkE1DC88"#+J_Ab[-h#$leH+D&6f%(-0g^rm9E^A8%7JX'VS8/Y/,;WPX90J\:iT*$H_TOc + [m1'UC&P.PZg9FR$c,J_CI1,#(#7"LHXA1/<#hZFuda7(hU%!r'tI\:2\(j(=a-l?q)TOGD + 9)^&Rh"r\UmS/d*78/PfeL'SW'$_UpK"r<k?@KmRc#T-NlKd[d7JV<5(9bj=0.L$M.@2]=^ + 7YhmJJV4:G5(S@-(crh4@,_A"TO?1P%*8bl0S+i>(bC5iW#-s4TO=2m#p<W5"pdkX(`n6Za + ;>hHJVY-Z1SA,R"pCT,63[P;#T*u$J>a:jJUhga"p#iS$d9feoG%Tt:k8ZHIirCh#(@\-h& + M!<8/^uLT*Q>'9;#q'#'uqTU'>n9B9bl9SgYK7JXu!Bh,U+\C'Ji(B3GL^+D4DbJXm&ac@M + M,)9ZB[B-IP"TP"lAE1ghIP_#=f)8(NiW#<-[TOum^D'3H5#&GDo]tAoba;M"/RYViZF.d- + .#&'ZAJd,lE#T9.`RA_!jJXL0hQ$o<;8d8fKAi^-+@#,\XJXD62L4P^_)2!^;Ac`0DTOmZu + ?K2;/G_)2p)0CFr-lI#eTOk\=>9ILW#$PSo).nGc8/YlfQ5Q\,=.j,F#$.C.@KqFWW&aj1T + BKGWL?Sti,)N%mao75@kh5rqTBQ+MOR!2k8s?)#C&XD?l$<8qTBVdCRdCEmEh0,kqL!dk-i + /RIW2KKPJ#PNPQDUYHRJs0-lDac`TBaPtXe4nI'X+Sg)U<i6a8456X_7LaJ$%o1j3=`BWp[ + Qmld>^GTBl=P^n9s2rke>e3tfN;kPH6KZ7#MrJ$Q!L0AWrcgH*ZfBDY)H[&<drJ$g[$=66i + lHXb[:kPK(F[jV&rJ%)?QJ*j`u)iE[dBD[pC\Yo=rJ%@$)VtIX(]<^jsmc"06TC3*cnXo8! + rq$/N8aAO;`.+B[rd;c^ocNAPJ"Ml&Ic+r=5Ni7PO7W]BcoD%k,Q.e,oGTs@HlbU&9a[SVr + e:[S)^"9cJ"cE3Lgb$C7&ZXjU=&su#Pp(qkeqtG1&d/@l8M3]m2i&8rf@B]6QbP,J#%)`P% + &0!8Z=j$V,@5W#PqLDl"#:?Z2U)!l<d46NA@AnrgF)gCEMfJJ#;c8S7?;T:9!&4O7`'/e*- + g-n*rZA=SSPR3f+sD/:XVGrhJO(O]#po9TSj#5Le?c;ks:eO7bh(eJslSWh!+hdJg0OqQD" + +`.+gBriJ]e\!61>?)uM-5Loi7=C_;=O7eMtek#gDEoCW3oqJiaqU?VQ>^rl<rjKlDh&ks3 + A?HZe\Q;?%>m(%JO7h3kf6I=%1LYR4<URS&kl5"BrI9n%!^G<Ss'W1,K<UXW_cV`p@KZRcO + 7k%ffXUrk1Z==ueiq/X.0!h1rKE<9;Eri:s(/P\Qa7H>c,]]>+7/'<Za'MU8,GLnN<"O:2N + #o991^<0r.tsT-pPeZ:hf;kWjR#Uek%"a,fBPE&+W]P)Z+#\Xdui-P&NY-d/PJQ]sfpIkhV + `GH>c5+J!Apk<#c!iE,HE.\<dujb5hPn6i=5M(EhfZZ^>f/ER#@dr`t<TG]Z]7d^jX#lJ66 + X0a%?m&+^Y)h359k%dDh3__aU%i;YUNr6RPbK^kX$b'B%%f+7I\5L#;i2NLSs4_M"mT&\Tc + 6i>pSo8GoZ6fWPiRIi\@f_Z/_s#U>\m6;uXrEm24IrG#ZStZ.1#Pme<E!c\4L_U"7F:LOQr + ;[B#"U-$=(P=DZ%`.p(KSTC<+6Zl@_FRN2Tk#d0aH1nG@K),hqC76(dMtWQGn6V>3$7AJJ" + sjZO.n0nM%M3a7-L/)#Pq1;ks0`p.'"(,`*/(]H7pTGrg8K;A0:')1<)l4)P^h\NQKOsVd] + Rr,G]C@n`1n7\GDn/qMJ.-6:6h,,X9eOs&.9#7EG9L,il%nP3SEaWe(/LV!OV9&rKRZBi-> + pd/R1"rEi1]>:a?U[?gCG>cco`Zj6HUQh'u]9M(4!-</,m6iD$9p!#<?I++Oj?>RlOkWd\' + s'Gm,I81*`39MjUSMR*q&,$]%fO4_fe&$=T3U8ikbkYb$rJqK_5X3p:!2&lnK$\fW6<Sj=A + jcNc;#22#W219)%0hfRJeUS@;#d=JNfqh6U=<mS*[FHnJ("1'9^/TdCc((<'5#`Yl0U^6/] + "qr6ASKr;gTVZ.]-2.!oRgM==Zgc`XhpL<bgBPE`I@m(?4E<8,Zu"eY1C%3n@[I&VbGGrj^ + Q@lKoUgGVY"^hN.O1?gJ5SG`NKT)M;/`8,\@N[Q_dG8#^&/iP9f8rlj'-4(mFqjKqEBl9<V + qC$eWqIW*N`*[AaP+7T<=QJ1+Z8-s1[Z1pPF4Fc-*LN-_''tFT!"sF7;5ON[@\knh/>uWqB + Tm6UL=*!b9#]1$S)DXe/r.!R]eU&rk7Yo[8,:'4Z5OZ#T^K9tV7;MmgP4W*'p_*a;N"m5*2 + @WC&au>CZ-&"%[FcNtC5[i=@LZApg`,Ze0id=ZLA8Wqsb(3G^JcC\6VDaXdHQ9(4BW`XPs2 + Xp?+j0UfOd7cD=d%uujNO0Z-3V-,CM@Z=$'mgHc<JJu7VLofgq9N2s3/$G2!2?d3-0-B@+2 + '(k</($o??`r3Ur"^WUrFI%YN->*e;TX'Zuhd$6T+/8Ei/Y6o;54B@L[TODQu)[.PPUP`_k + AO1D7D[]-+JEg\fMD>A=<B%E4:[T!IeY0%NnDYj@.\([;.p+]V$%O5ObB,t$CK4p0ABq3@] + Wu96a3RG4m^GbW42ZgK0K";tdF,Z<)[p$KdqS4-Z_EcRqSkFC2;<P$#kcC!\\+/gp!mD_^c + 6!D?6">S?980K&pT7<f\<-2>U&?sVfq8E$TG*?HUQ;'POKJWjXs+1_5m02G%QS"\Tb?R_,F + OYRR^p#rTo/93Rde23T:t#4Y<!f0=s:(s0Y1..\mkN1MYs3;rkh[7U>)`Q)DJBV0sFnC])j + k%'*t@k$DX)tPOl2o@7(_r&0r2,4-E":6:JMs:-6Tj451UJdi,%B_%hU>,qHkfnl;t.<kN- + U4F13oM^>4[-`-FY(;nBD43fUuB!UE/]btuV/(:gKDDOUt1Ls\&H?26-3@A;u-Z_F>oA(e# + hD>:_1a7E+6t<q\K0D@e-t>gsF6=FikU=(-)ADD7o1q4MVPu;J[4mUu6WH>XQl>7Y)Z*WnK + 3>U_odTF>WYBWaiOZGg?pC*VS+<JtZX]L]A@>_A.`'0*jF=V#bI40]5Us(1!jp$9DOj.5[g + WKlOk?_ALpo\*[o<_cn_br1iAZkI2kt^bqSjS.a<$OoNRNBe$kt8?n1=,"3'cXd;hdSqe/s + :n8Y_-7_htt:*A+8kXj!BHncZK*O[9uF+HkbW1R+Q]Q+:]X/p\,4S>Wol'tL\$0%q0qqAMB + a(chbm6L+3;')&%EUllt!\nj/U\g];d.QX7S3jYnTHNKrU"J[3FP@Li/*'>pD3AA+Z]2CdZ + r'2M/5pRXA6n8or;\_tn]Hi]S46/mdRSC'"aLiEg]IUn<]-&D0,#$J+-)8ODPYa,M?F#O;] + ZO]rgWmc2/LGNl9k2TuZdV@$1FDEF-MuC3"5#c$>r/3uZbgq"abi79hSpL#-gO,Iqr/J\j$ + #kC1kLIhV!#I<MS>#5`i5[hlVG73O[det.84YDr,<S0EBbF`5:gjp,]kKg[DuMF7r.i<S+n + Hp?a^Yp[OA.?`-f>LI@P,&^\!#k!Qr1jYdUTK83:[Hj98(Z#"WI[aF"7aN!UN;$7jfe8A#@ + %bRI+rj2gN(Sog&[%$<gqOrh9"/@k4@9GL-((.i63aa2C-FI>FbRR*qM6+Y^YZ]*#dNXq?r + aoij0&dV)T,0D_eTYr+Y>F%9sV`BkK6B%m1RM\Yu.n[H*9$/-rg@HKkY<r/k6O^4D9X6=G- + qcZZ92%39=tIj4!@%`W6]AQCS@Tq=].egr9?]Olgcct$5>1kF`!a&m)n;\3_aHW*6qU!<>8 + Op+^J'9qQ#oUAUe8k:<D:>)bg]@`PYSMWaLn=r4Lo5r/CR$Me0\_V79nD4C2-1a0rEaZ7@` + (#XP5*JgbXh1c.lW"lsEK`H;4i4Vqg9$/E92^j<u;81hq`iChHLjBIKBb1s>,3jQic?V9[Q + W7bd?#l)I5LQHoq>^EZheFE>2bFO*lj5A6]SI!@l7GoPgj5HK2r\\^SRW]!dfa7EsP6ib:B + !QZG182LFi6j0&;"fl]`2]RW40ZZMLMEn9N2foJ;LseiT%`n;Q\',FCi7pmT'1k>#3$]6K3 + 9EeS(Wh@I\9o2)oG^B7*(e9PakRq/llR?4+>*2H\Kmo[3<MT9Ur$*-Ta[g8FJm!-'Z-%";M + 1N,]:P.,X[:gG;TkfP"/HPDZ,7imdhAZI9<")][R4l?;d6BAPHPX!]#1nee"a6:ffhdi^Ji + rP9FJ@(,s])<6kn->9O(%\C.uj!85+t6,n*C#j23uQbe.@m7-)Y3oZsAhd)?^H`?Ja01FkT + Jcco\A(K=I1HrsBQeO?7aQh9%O`8&n<g;WC5(mNrJ%,k4Pi'oN]R5F!E<9;[eji2S97Z?S$ + SE_rdlTV]B<g-BEgJWjWmjVaG[:F9bHCNLfSMd0Ha(&CV2##TippL>$f51;R'`4o"rQj525 + Q,rU"anZ1CJZ=,:bgBp6FO[H"ude5fL6(u<=--F$b(MC=G72dPn#ac&3&+$fYnHTeIoA+'Y + #][=ToRD'c/iG)*!6!fg==Wc'C?=*mrf2dI!@4'q3PcS"R0ZY#H_#l^1"e-<_-3=sKP(X.@ + DPUscZId_hcqo:nqfW7(XDdgN'@4/g>&XOBV?do3?cK<@k<Yg\T:e!mX1bHnFl['8AogLNT + D)\G0%_n3=ee2=he6bZN"]i8H:e8lYK[7NJ[9jAu;gbhd<Ptg%>:8SIrZE.#*)ph#bb1/r( + ePjsdPL[p[cIIp#eXP72gY5Hqdacmse`5OV,N-j1f%(knegoh$CZ[IUg9ee5?-82A^#%&iD + I*cg:Ao#e>OaRmEn:0[f*q;ZZh:`KU";?#5F$B")uEF=GYc;(2I1W)m<]hDHn,=$=6",470 + D0O"P=Z4fI[>13SN+X]f/l5aMW6R/VpJqHFLhS\(\sVb0)aHJ]UiC/IdfD,DEXLRCJ6?dA< + )TZ]!5MQVl04dGj$"'d,Lf,?_u0g!q=XD'[g5-)!IKY.L/`bc<b`nQJi]\dP6)qkL?KW@sa + <3de:qP5e_7!4oeE98fsWA[*q9YraMM4%6MTc*^L)[nIK&>D=R]?+Mb47bbhq`/R7@m75q. + _qY\n>T-^L.jRO]`4W0KeFgj^"irgna]0q8-C)b1'@T*<ftClRh"*KgMqUncgU#_b1\9Hdr + 8PF(7,;oR5!.k$F6;;TA_jb+^7Aomh.X1um'Rm/)O98G"`<*S;&^82^J/_)DH1"t<``4-^S + >6fL$V=XWnuQXWpX.`)R3l@!io>maC;X9<J)g9AB:m-Ao7Ac/ndNCMIr^a*j0:p4cX.2!Zs + %56%tJ7('\D(#?b8i6/.C$eoo1Chrf]_/j9b;;W_Bc,qc'D8tD^?"r*cFJ\pNGkWTiX5(u? + UWp"UGU:uH$Ffsr2+JV,Z6bTehjs90i-/2ag>BVD_1V2g7.d9[>]Bi&#!ute:b-C@g>SA=G + ][&?6SQ+Vu@q=&o^,Oi:0BtCH>gB0Ub&M04>homgj9g0IUg[P(XCOqSC><CVNj%N(Z"0E\5 + ,I()]2-GkC/3gWlZDW,r:+>,o&Ud[l`O14?<"sg<QBumAT[car`NROrAJ0b[XQ*Mra".1CV + V`CCgLN,70U.7#Ic>,hf`Qi?=m$BB0b=t=IoB:p&38IriE9Ki!g@X*>Ms3dHrOhd=qhHXp3 + "bfjKLRm=#CTFW\.6+uqR8kGAaBj-N)JR-i`BkNeW#r@)Cg/FF7M@<F/1KeD>Iq//qH;]Zo + W2B=IUkMc(l@Ke^M'*iEX,?(`j9BINSjM1-E5MLMtDZ.*kG*G[1(hm8Emm`Z'ogl_`9KZYU + @j[^N6cm:TbAX8M@r5(*oMn$arF;Fo]fr7BDPb=]!8RiD<N\Se`^)EL"CsAsA49ne;ap2!7 + ohfE:52>8Rn[k)93p\eet0;#[S<`-\+'?6:F0ppSl/ln>2Ef`??*LF<HRbC^/np]8%uc7cG + =Ljrc,#iCc-WW7ib\"*_9&G:fbVW%0lACM/8H2hi/!#SIAl*_sG\s=KN-:^<YX0CcDoA;+> + FhDUMZ0/m0bDB-Pt!%3+\P$"mm,D2k!*<dA*12XS1'F,ggph`>WB'2ji);Pk0^-K4R`Vc)W + TDE\s%>GgV$12)%mmWG[S?*@1LY\p$Ukf^6ph)f<84*7nXFNu8=*[oMZ.J3W0FU^b-2O<@c + ;f>[OF]L52[oVsO9m)Jf@p`DX[E/$\39i/&n)c]3Ais(B4YqQgFsYO9^!^jX60bN-lFgQib + [b[0fQNP5<_fm+^MDDBCLk1t?1hsh#.EUSiO)\FcQ2&\2S)s+'3?IQhKkpd>kr1'=C/`ZC^ + k[[V=*Hk)sf]gn_RX12]ljQJoVV"Ak+'3T8)!8$eTpOhmR4-[V=+fC;D7C=PkU\m1e4PdGQ + p$\7T^-NcC\h0NhI3D.T%#FJ!E(+)R?$dLS4X5205sgiJ1AF-NV?jX9lSUJdYYD@REF+Fl\ + p5R7(=#U"^(i.:)7FrLPo5m)'ke.=DOJd*?KGT^/q'nQT70L2->,m4Li!YVFS4pVXM"(6Z# + +>.F4"[N/C5XZ.o5(Wg.J63p,#Qpj<!)Poh&;io+e7quER">89Jj3Y(a<U,b"FWQX0Ls%nm + q./7TT<2"dKoGr4K^A.N"P"OGJP<OW$A_Vm".:VNi42#$NtQ;*:QHT&^-2d3?X>A,DlccJi + GP?7f3k3"E)$pROBCu#hjkg@#]se?X!YK5oQssU_0N5Ji'-[(aD?QcelPVcphg`R07*;)-j + *b-4%\E1#S".S.UY^@R1iM7MHGehL[F(MteLm#efiG(Q_)@&Tn4]_&"1A,2NU6Jh:Ag:YZO + oJegm#@Y,@,+p_8CKlRH"TS6h\<PdlB<.Yi5+]*b)nA5H0+GD9N;BUZ3#Z4!'+[Ubp#U)B` + '@C7p:8!:"#YgtFdKiOdkTMX3''LJiJeG?j#YH4mRKuJ-KT)(G&dTX%Je?'I)M/QaU'O2\K + Mi(DTS,_EJe7,h%"]%h+UEZ2F$^-u+G:(-5Tk^Widq]^+Sp[#L`lDC%o_Hn4J7>D#Wn]3[0 + hKqW$(;U%VR!GJdsVh#WNrZH3cGPK5EAq%>Z.XJdk6ndnq6?63oB?K/*]fTS"OoJdc<8`.A + CG+Mh8)K),a++G/ka/g,c%Jq=A$+L6S,#U$<^+G-m).\MBf#UuEuQ)]EC-m517$0WM&D]jX + H#UU[G=pQEZkTH%?#m_Z6JdBMAjF;uA+GPIR80EP5+G'Y#+/"2U#TfXijpH\FBHVDK#:L^7 + LEM/Z#TFn;WX'LcJY"WK#"TkGJd)K'?]cI^EX3GRJRSm"j_,c9Jd!PF:kAi6+AJ=JJLUp<+ + FtF:JY5OX%"FrUq@nFQL\`$f+pa>[N$%8orf&#`iVnl[klLdGCM=tdPU2+]<e$sdqI"fM8, + ?nKVV>R!SL99qrh#hJ&cSLHl7r:6De`1;V^`%O"K8?C_>^PYlJ_`GEGGWoZ7Q=Xc@;rdqUg + ;"a84_DY$BuM].XQNrk4rinc$<Glk066+7(pi`%aqq+FgZZq]pZsL\iWPZNp@bh_U5_5ggb + A)?/),m6Ua%+73M9f6Qb9AD/sIqegnm8,IO\\&\Asml4&eN9!!Sqj)`Ba8;NZ\juXspH$U; + [-g$]qn@Qm8,LAW]Z9ors,U%D4ibA7&+epJc`mF6"8r*.oD&KLnc1pG(k82UrdkCO$6SIcJ + "Yd"KHU+(6ASbR&+hVAd,=pk_u1,WoL(pk,VVX-TbSd1rej;C0H]N"J"o=/NJI?iLa_L/,N + OMBdKokDKDd#*oT2;c<)?/C3@H1!X?Y.3s%<Im/J%K`5LT139F6P2-=kUjdn'L5KDd_>o\_ + s_P]0BSffUXXr'/Zos%igr5nEVo5L_N?;$naA.-2^=e;4-&KDeFRoe8V[e<!UdGu,tVri!m + 6VB>)rJ#]4AWsAL(PUaLP.n+DAe[YW\6iC=%omB!T!<6/!a^Qf4OL#2gb9-%0J#rbN["nM- + +7!*=XbF-k(BFJ>j8Es.ouKAL0`PDl8TcZ)gq4Gj73IN<J$3kk^.8%sS1F8^YSIGZa86&_l + m.(bZ2VX2q[]8L7>\9M0#ks/)B\<fJ$JPCa@H+PTIc@lZBeZYfjOhkj8G@+p1?PBW;gK%8Y + !,qHI(fk"X)kOKol"q5KJZ\,%LP.[2,Fc)REO]9l[<K;>s/-q'g,SKsJ.1db<GkD'pS+SWE + >fgtS$9D[ksF2o:kFb%Uf(mL@"B;R0?Gqi)]ZKR]:Br`NKiO`IU1bdk2Dk=_cR0&ulB\i3% + ASO9E"Nk*aYOoAh1q2KQXc.fjsG4/`6^GDY_c]@ZanQmH]Gu$0X4U7Wr8,9J5k1/c\=0hPV + led'P%"FdErc-!SaaDF"oY.fgqql\N+6R0aS[&0<?aKET0CAbRp\oKZq<]9e]RQOj%09j1$ + \>NG#G:PcJ4KG<K!8,]6)ZdKT`cK)A,QaqoIgNE/1H9l[MQgu@Yr/%.3IcV)oH?3%jCR1Lf + "I!O7[`_dJQOknLc0,pnJO$B`CZar@!a!V\UJh>Dob80ZFgD5LUJL9V_PB`e_qZj(rXo0uZ + 27o^4rmaT#%Ui]G2jq]Fl-JPdZj7?@*[5Lb(:ORb"naS@&+<9X?\j8DfrGqCA=jIVSKMGYl + 9riF0:[?VAr<Qa!%/7k?X=JPh)O7e\hA]26JdfNrO8VjfFqV*+XG%F@8Rks2ce!b'RJ$.2u + ]>sd<WCtNS:$KJRV\8tNli;O>+o];*9^&%2\p.""jMZiN'Hc[DJ$Fk%4t#FjTG.`a11C1)# + Q$!E'HVtTg)i^rSJ,X'rLOPnI*cuQ6YNSBUpRRs880(jC/%<b&^ij6g?AR5eA@V32TJN`M) + -LG\:;u=HV`CkFJqVBUpnbO;<gkKWJ+6J3-q8tS7P["eR?S13jr6cH#n&Erijs7b39omBJ: + bA_n,C<>H<HuG-9E-R8Y_Mh>mSZFnWS_B8p;Y8ZO`;7"<jI'k8;sf<OK1i4]6lALt6VZVR. + `g!c[<?\&0`<g(p8L[P-.=lhe#!.W`2ASj$+#CuO/r1DUa5OJ-Z\56?:>Z;Jk:lHP>pFbU` + peM4aOrm(?Q5L51Z$*;23/8;u)5C/P&BFb2]_A9K`1,DAdTfZlpW!$d>ON>:c2((IIPDB1s + +#&0"cY77"=Ed(*/FM&_>$M,a-cIPPT#==6iRVSgcpU*9Sp]F>trEas,(f&/X$fW(b1eOX5 + t2u`n9;l8srV=<U.>$EmT<s4H#?`e@Nap7;8lLMEgZd;Tb1UA`\'W\n7W8bF*]2Agt-Tf:q + tG$hA:ur7.8mG&X!NX#[E(+[!gEGgBOa5>S9OTNM@BTO\!hBT3`nBMOP!9[TA-63!bQY*Wf + 2"&2Y4O[leU:8Ek:;A$T9eoaD5C\5TMlLJ;`>?8).9u<M]/Tah^k.[e=rhVRpL/bT3LiH0G + A@VK=E\3e5D4krEUoXedXG93u,6$>0<njY.Ft2KpD9+JLb]f&nY=F8La,&R3:>R@ehJ3UIC + DM5uoJ^X^hod?o9.kUM2[->mI?"lG-fhY4kd<*\i[=N\CL2NaAq5eX#OXR&N]aeL,e,6NjJ + 3FLkW7fUP_<hBKW\]MY%373BY*D@]4c$DA7F`#Icp%<Lo\mYmYj]>OQfErMMp\UbOH$ZUl3 + Ns^W=L38Belrkj,2&lg,IKN$+/).1`T.O3Z7m8I35U%)c!OmV*[/XAG(==H^u)<:9[Jmf:A + ,9#iAUnE"i`.:D[^KU0i@QOb?EmjOPV/BR.:b%[%1V8i,q6Ha)EbNZ8(%o1?P<qWQBS?1G7 + m,Jn#C7Xg2cKXW?C$s=;M"h;Upe;*gXV.;qP%G5jU(<^@8hAE51AZkdBZ`B2n$8`YStscHe + >BCum8EjS?>Ks]*:7-N%:n%Neu+8^W"It>B(FQWk,ARcro0q-lCMuFUAq6nEXK,q/Y7"mU= + sPpX@GUYdM1G+;VR2E!UANb9'7C8b'-S*h(UOdLPE#G38On+hG*5;.h[/d)^MQZH]@n+.k5 + p^146533URC90P%P'k-X=:iWI3[:+6E`@Xr6/J?CdomQ0CtLpuRp\8m\la>W,i<=,^nKSuN + R/n0NpB'->!]-qF+ZF&eNHKWS)$gZ#mbLJ.]Neu&F%-uu3X6b`3U.[,9lEK3^#g0r=cKg/; + ld!<W/0'\O,`_<<:bL2`E<O19$H*5\mR8VnNpREp<0F=g1%+n%Y5[oF.)tLFa)`s)$!d!r) + &'*-QL'_j0.*%S.e<+'asiFpZW-P<T_&h$bGhYg.C,F]<1E>Z(@9VBbhem$BOO\QpCVr%.I + >B[nFu'-pb.C?/InGu(HJ[`U!K,%dA53J0%1E6BTK7DW]\cC]$t1EqpE:Y&]SV6b5@CIr5Q + tZ$?4R5D&r"a-njO#Drbiam/F9Zrt4nUdJ2B"*?XbM+><k;cj$PqUtW*egB.6QEZ5%b*d// + @!\u,)B5n!QnD+Q*,Al3mYWF*!59qVQ,]H7!YY'7=:9mC--#cp3YZiF:eKue3IPPUAP&1EO + E.:c-[E&FtY^7beIjc][-u4'Z15uRfOU2:L#tpBA/m0Y6?:/\..ZgVZaCd"7Yq&YXLN'c9: + 4DD)`9="P%$JjDaJUUDdk,Oj/Z?33lhZQ\jUP2Q%[-1<P46;$k:^fK0<k=,kkQn`16?P`&< + dP7dh%Y*'ZB5`0sMZPnK*m6,0"O$n8g5O`H)\K2\U6nQErdho0X3@HPC:bo$9*L00!2k=#I + 6dR^6E<'4hqXBUc8AbmDKN0lo9nG;lMU2sfn&PD'iPM&;G8T<jX+M?u:_QT;=>Tokqp&"<> + .Wqp=])XTN]#+HQm[i<Z)C9P@JD,Ac&bgjR6r:/;81"^@5h#4M9rT<PI.Z6KMK)X0es"092 + PPWsO!%fl.+HQmPa$1^Y&KssbFRU-LD7\L8,hulS!g5,:dP,o$2$6`:",E'Bb6m*Cm3I\^2 + _[rP&5bj`!sO\j3O3&t&nONB)$[5b4>Ls_13Z5@0*fcZ5-fkJ;Mdq>70qrb#r7hREghYZT* + b(`$7Jm]CT?NWD_!G^7I[c:Ye)FLM(C?u/9&UcONP9/`p'_Wl3+:Bd+p;gf]s+2lX\U"nF& + "elKiKbm)8oX&HORbr9_l=mNj580bZ9a%du+l<3[T%;'duS8M\[F1D)=+OYk,i(@fj=ng0b + >;b7[e9UO:+'baR^8Y$TT[8d`/(,&H!F)&qf=S;9-p.XR,d=!thFSBd0pVo3QnW,[fLA9/` + A^R&0&YV6X.lrfl3n9ia&[;-%[9@E6qied!'>n$K;d5I1>K4ci$?#fBaO]h94r)O1<S#djk + h&i&?5*'>8uDX5R&a6TX0;t=D63gq'4;Lj?qn=BPTaGTD.*e?!qmJeO>fO-,=@bDhNfZ[2D + 0=l19rM.i"B/MCH5oU52ctf-E\>r<`6?.-K<I$j"#+].sBsu6R_@oB(V-s1m6s"QY4g:KbU + ,iOK1ukE=4[e9,<dc:4Z'(T1d7j9FKY?/t":dT"d1j^Q,8Xo&f73%r=oRlgD_FNlo5IeADd + GmB[/f$qG2/9^](R1!]N3'cCpi*:Pg/DtPB@<@GoX3E$G1'GhE][hi!302skR<,%b"XKqI/ + 7lE"oba17Hoj[V,FS9;YFA1unmr^U.HI*I-cu4U4Z^CP)@9FCX=\kSkQZ$$L20W&qGH*q*9 + gkfK^njiE4H3J@[D+j^_`_jN4giNtk3G2\LtAb[*qSf5POe`Nqd+:CfsU34<Ui>6Va/f05m + L%K9%<sl*8E4o@.YgT1b.<<04E?cGk<nuO?l8$mf\q27$]\uc2RrB"XV_c7CGWRmM,qD)^b + 8U7b1R0%P%dE0dmfG8+pLb/jTcG7_"b'\F>o!N`ui)SS0jRBPqU![&[m(F(m/B$eCd1E5bK + DV+`eGl#>#6db/Cmdqa'VlHnPV1@&a5j_T&&lnJ(uP5T5SpMG$Km?%V?o+,^r$#XkomdV._ + 9OD]hAJ01_n<#A%G6LmR#k=5j;caNsG8//]96&98'fAR'F\Qn[72>8a2K)ModqolQkB$6?N + qI=4F`R42K(kIeFZ"_mFbKOPPkaV`FtFdS2er1DX*6-S)_F3se%:d0Kp'p)ePF38WbH`Ueu + (Hr4j&DAOm-/>;0r%>?7M]&=^QO/AUG6bg5lfulHbep*3GWU@&iI>dOq^^j$O1VR5.%3fpQ + <m*Ik@nA!d@ea3fF!@q:r=S&b&ME-5`Z+.UCaJl%57Qn=l]1S,A*j`$aObG0_GWk-hSBZn) + ]d_*5="&#]HL(_gI\7qXM[>+2.CUeS_B[qmbnSG^hUM0=VYlejQPGDn-M3/Nj\=oaDVkpis + n51\)XEf_F364(mE9rddF%XR.I8inBNDj,'f\NM=BrQ5_p!IaP3hDmenJCpmO.*5DGlJWt> + EF0GOP7TqO.R>/Un]TDGB:-do=8&2]P;^B*(j@t't^Vo3I,bef!!`X)Y8889%V`l51rk]&, + 3:e\R)0_Hh%NEpVfDp(OXn[6*7m'%E5V5K73G/h,#l_].\WDPs`g^"ASEm\Y4MtrI>S\J5B + OYQ:IEdA"0i>S*O4bH,iEXb=B+g[p*@5FGHEmPF_93\N/bCRs1IV77p<l$LVuF3)Q=AR-66 + >kaRX+\74])B2#gN%@`o(RNYD:,u,@,_)n]m'^_Ypo:q6t]6Zb=qF+4a8Ar-XV%jT=;^&!$ + -H;K];ENL-Ge$`@)\^O@^,X*0QQ#H-:@ii$W*%XC387G8hXqibF,sOHeRrt9H,-m\Wg.e.e + U=J-"i6Y<=IQo`g;,g%,HQ$W_UY?^'=X-+J]$3r`"fba3Al(E9<PVS`AaERHs*XsWBRen?2 + FSJ4D@%3]-(?u?T`J9(&>+4(U92BZ.sstr.cJc-"1",aVGi;;EM3!40r1a6l_sIgHB%lVaV + K(7<u&BgIo_U91F)#[5l'SN[]P/GCgBW[MEN#<bk790Y#oq8R$8-QpK#eHYAr>K\?7KH\Y7 + As.FUDcs)^-'Zm%Jc_69k\c!=[eDG']VkU\Mlkk@MpkKC7[;DHjD:J`+)o&2YRdSh#;)k;6 + 4\9R?9t_>@]i-`#PqB]*>>m[l1gB']S*ALj+4enB^D0PC[8X$s=fEssNa)Tc>Qn0>T['&:f + b[@a[o'tFZ]G]QOB%4#MA=ihBA1!GG2+Rr4gT@$dulSfP&\7So>SX/iB4^5*?+0I>4'9DbJ + d?=Y>aW?[G-s,<,gMn5F8k9S8BBq%Gs0_hj+2C3u_RTKpVPgaL`fdglm24Oia(K@[s-[fD3 + R95N9+5792X[H*Mn&'7f^dJM;#M<`dLg>=Xud[JA4%DEi`[M1XqEc.7$_)f]N&FXgU@8iqI + HoVp.l\%#J)+:4,3rWN6p5go-YZjeMoJYaK'3#YBnOc$s&&2\bD*<SdHd?4bR/d@2aU0qYk + 9FVL76U9#&1aEM81kD<mBG_Wh#(N5[cd4K7%/Bug^s>u9)<M-JJXt_3C5`Se"$/]mE&3^ej + '7/*+D1Bd\d!#W^s.rs>R]-b1u"[8L`)cgAq?@XAkU>V`re%]bV1gW$3jjgQ_7pB)0,pc`k + ]bo1<^03""WK+AS;r^##p/<i+4JK%&3nQ5frLNG,ba@JWh3e\/?f0"!k\(&2H?VN<:BnTO^ + S2%L,7NOEg7M":Tb^+$dlN1$;.54+WEbA!e+n[f[Sb`m?HA$u#e]q4M4G(rcb6JW'Kr0m!h + .!u=/@Iu"rA"t>+W#T-<fK[:VA&tiYW"qdM:'GuCS-l>4#KBO.7JV12<"qDb`g'/!/@*Cle + K*W;HJV(r[.Y326=p>;+@$1^"TO<FdJV!#%*.`[>(`7gTEV]kC+CIeG"<_)7OF_r'(^bhEL + _p@FTO8B:!4Tfos"-lajL>aCkOJh+TP*6gIE]bMoRWV_)=W3Ko6LUf+D7\YH6?jh#'j!8)< + -4=#T;KMS^\P^G+`JW#'HSO;?h6ja;N?USELj7JXj*Y#'(i!)?t1(B*ni^<(In@JXa^u\q- + ?9=pAi:B$pm"TOu%FCY$QEXFZh=)5r+TFnu;V+D-K8BHUo8OF`h@)4H,EL`)M0R9#a\A>!O + $#%O<<27S4)W#:DBQtR@jJXAAW#%/Qbq?C:LAaSE,Q\ZN&JX8nFEe0Png'1cSA[2MDTOju+ + JX0seA:^$p).A8mAU4P^+D#9l<Zks[0S,K[),c$N#T6F"TOfk_;P7SF##V%)(0H-P-lG:$P + NWlIR\43V##6:Og'17oBIX@ATBJlGKqIRHOGBPYRP')aa8.Q@UM'EaJ"u3'6`d(t.Sc8$ku + %GGTBUY#R%NW2rgN4G\oO@>kPBRUW$hFrJ#K:ANdn#ig6SV8lC%XN+6oj)X.S\!riMgXmhi + 70.iQ]_XN11cJ$!A[g4-7&g>]ZGX1J"SY=JHcJ$8&4!e7G&>7/9Q/6a0FZ,c_cJ$N_a.Y"c + &gG7$[XSYJ:Zq(!cJ$eD9;Lc*'>?]Xe/ZJa'+76W<gn3uerna:7s1%!sDC^m"\Hi"tJ%;KS + Sq"=!qks/!Y.M"-TC1\;n"9%TrpcWL.K8qRj3i8"C%3;.^jht2rd@<4pE/S\#+r6uJ'\N++ + 6X8cTQ0s_8,<T8kV`pDoHJt8WYloB@"4lTreF#?+!9^$(8<WXM:"pI+6]qYU@J5A8,>"`kg + gfMFE3Dhl9QNV!.Ue!rfK_I7j$tB-D\#;PL>iu8jiP,O7]UL'$=L<M.nW?&cS0<qILc5Shd + 1-esfTos%W[p3KNgt5L[.B:F#g$a(5%=e-^mOl4AHDEW2\&qMQH\1k2J"%]!'mPuAq+9Fpe + S5Leos;rdgQO7c!i'e6+].^X]*_>^LUqQV.-b^ZZjriP9S\Q<P=@#su25Lp\O=JPh)O7e\h + (0\sclU>QLor(++\GobXrG@Vg].t/uiEU/`FH?+A5M'$;?).@BO7hNk(Rk#'lfESVp%Uc'q + #=_HrIL%'$T]+d$"7X4J$@o2`(0\<+7)sVZ#Tc_B?M6(XF64lp-_-u.0!i<rKNB:<^58S$> + &SCRBpo4c%l0V+7/?DZdJcua<NqmD%35HG*:9EJH$f\r/*?)SCF"&<bi.YXV*r!8Vd*iC^k + ft[T:]->?bkj"8n]#np&qoK62"UiOq1ipeqFn:*8R`_)N5<iS7(aENV.&&+[Y'b9N3k:0Ge + $V`<iIOT-qcr4<L1nEA[AVKEBJeiL\W5KlCm0gklY4#^^;S\r$_Npt:(o/JtYnGb<U%H0E^ + OReuQbVd<9fFRRaoU^ukHLGG4^"9i7L\\k1k8Eg(-d;E/;s\qY\Ea[sYWpF^oR:`7r4f`;s + 53Y;+6TkXT'-O_+@HQfO?*Ug_>\q>q>_W$$4=U?0a=<3*eVO!J"\%bKa7GiKWpUR6E"#pTl + MD#ka6joJc:P#X>G\Dl5i=VI#\I.3ZmSTJ"u4c&L'V8M30hH,f0JDL\ai)O\RFGOGan6l<T + >4M)$E6c9KcSs%S.E2b(m?)rlluNj7G&Vr@WJ#Ps%5Z1:.N.1%/n7#4`.rCRUn/L.'-Ocj` + c9?ESWWJC>K+6ok%alu5C,rDQc;Q3q4olr^OoWXVOc<AD:F"UL$s&m8<BFjd40I?Y7R'RiE + ba#t.f+@seKDfjc$(j':XOiptAU4m[lp'+;s'J]VDpCAd3Tj*#@0?I^&,$l&kB-9dPM1C[W + V"49q]6jGJq-Yn#=3#d$))GmQk/n$5M;kFU(gL`;2R3WB^#dG6oh(SqF=+k4&BZ+W/_JL7+ + TEW0W%gsYdPHf9F6h>D1hhZe,"[OS!?AiKc$XFdJm+EAPR2^%]GYEZr`c:s/Pa(XgpqN=,U + L+F//`>elpC'>pH/IL&f(OdJmHeSTV+'dFqZs-tXL`s0),#_:VhFnLQu)230SDf\7KY?CTE + LL?RJ6#J<:feXWtlOn)ZhS9,79miV7peCqCsrG?Q64GTX2&,U'XXi(Eof'N8UW#e1k"i@d9 + )@JiHP(Jd;+!:5<kZo^<$)'6.6cb-$O8HJ3Y6Ep?d+\&c,]+(4rT_(_](e[,NI9/08r;U-r + *QN#'k4<F9,J-k?s(<tn4[H1GW,lIf\;(CZ?T0-i.'^E22<FKI`(G"7O\WV5Og?R`A0VIil + +$Y'dT4ipraRcBgF.%b-G'*i`2';Iun[jZ'IBf@k=U$5Or,Tan\D6bT*RiQLr<Aq.D;@gqP + [XNac;;b&%[ec^Jo]D4ED;3%uZg3f!]WcM?UI:CR$;(pb-QA,ei.9as@$%Z+a*WL$Gts.f4 + HPG2#L9/FS97k!$pdu>;B;C7f'RWbMP>+M_ZRU4T[RpX_L]3.%OBho[j5].M,Tki6NYNec1 + WNHJ9'lB&l[T-@K'ktcJLp].1C9%rmX"hu%<!5,De@,4`*I>:;MS)34F</PI/+MMu&`B`I% + 6'^9\#RFhHH7.cILX2E*n,Wjam^kGnMiMj3(`eQ>14RNeK:9;%g.\2j,5LX!A1ka39^2uqi + IrV#d,'PXumph8e&=7k+N.GTc345H^Z*^RkED3Y50$>*%X,H*P)UMU'gUg)Yh2XV'9-@0=i + R8g*sV$.ls`3'(IY01,6"#Xs6RE,?qC9UTpShZEUo'0\S]P@731t6G%j_,[1s.CV,hk]VMm + IZ&2:2W_Y_h=?Id+]JCWUCEY!N`g.ji]Se'^j!Q/E.7G3"VDHK&_IbR_B/9Zk4X+Z)1G^B< + 2(%oR7B>%<1YB%.Fu.!Z4i)t<dX/[f5c<p7Vu,G@1ZG?#j0Wi^1m3YYELf:FN4tFJ5,s]$o + 2(ljPXaD+)QQgp;t-cCY:6Pn22SXsRp*R)T,W*M7r)EM]3dGuq5RT5.XZS$3Q*gKA\[6+*/ + ^mhqe7%nC-WuK*<NSg'5e3LD`7e'X-)$bZ.V&qaYuk8^p:`s!l>ulGmuQU2ma*sETes<OZ2 + Ok2uA-A6Hu,0ccKCE+%q;IA/MF7q(6-G319_)X,FgBg7TA>am5!1>ED/ai1Q7mTVI__6^9Z + B-*DP+/t*D5R1;6XS&1ofTp"o=URr-NTK3c>Y?E)&H6PCA,!&r*__V.aP5`WtWZoqN_f@FU + &i([g3NusM0SI&"&ii#uZU<a]UY?:%qmN:>\%@ScYqed'<5^l88itM96us6AlPn'+_5/[!] + KAim!`q-&brg#N4G6M9@U??l?bF3k4O_SE6S0X#0.)%nQXeIW4BSpVDR3ej]lAQcK@r]B4" + "f,:$^T4X51JU@C-r&1d'e^,(i'8j@3WM.!nQ]Hfq?>ke<R%RNkS7qs5aWD)EGp54!2Or,< + S8EBbF`5:Nm&3h8.'>K:5Z$3U%CKD<KL^IP'qa0YZ51]48JAN"@S2Lr/"%"UY]cU]Sh83@# + G8^kaa\".Vr5^\AQN/8RfMC[rK8A#@%bRI+rj2gN)Sog&[%$<gnlTm#D\-%<(;hGQZ(<LY7 + aas4YPSqT=)P=qeXc&)sbapfPq*FqO64*uj*$S!+,>(!*b"Ce>"K"M%Va>d0+\\jfdMPTX. + n[H*9$/-rg@QQlY<r/k6O^4D9X6=W-qcZZ92%2e`&:8'kJMYJ_i(Xl7(Pae]0j.h6d#hK/$ + qt@[?NL5bS3@e,"50^6d.qdUm+<QHbI&`a?0c17%DCfXNMo#bXB\"7+tg4lQi=^cp\Aj73' + `&,h"N[A^*nK9jC^nC2-Ii18`j[7@`(#XP5*JgbYCAc.lW"lsD-1?o.]:4oF<R&X#UOjMk0 + \W,1V9FQ^YqMT1iR^64OP\r`@cm69$:^>Z'*ns6[V<_"*1M.?-I47l$7[`;VG7r.i<X8"/+ + ?a^Yp[OA.?`-f>LI@P\6^\!#k!R&7kYg=>*5W`h@jFoj(L/;B"^k6\:KSdL?MU8DJ5g+D3, + `Y.VO&5Fq_%>?e,a,u#PFh]:_,Q]9@Iq<UdPtHd8XkNroG^B7*(e9QakRq/llR?D+>*7.\K + iB03<MlA,g'+43IE27OUXpA.8$-Z\^W.?knctA/^!0,3\2sG5p8l@1.s2R\qDo'Uc$>,2,d + bh]%"8hK<IYI3CC`t_plApbeD!e^Vg1=`"N_EK=T2f]+ia`9O(%\C/)p"85+t6,ofN3j23u + Qbe.@m7-)Y3oh@QE;*;C)9e94;4]/li<P8ue9lsI]KiU?9>!6SL9tX_*c!%f^?C6CQc3.P# + &q3S$@a6f?W$Go\A)k:&k<<UM7Z?S$SE_rdlTV]B<g-BEh!Wb+n(,Z^<o!7Hl*4:cSA.d<[ + DV^aF`^E5FZ'DH:T\g\-$Uo/rR[fW5Q(Q5blHAMCHsCda@1VU9n?,FE56O88<&:!Q%`&0G! + NZ`aOQ)Ch2+toHbff4/=h_NZkM*PJjEZW=Uc-L)hqKI(tgqH=\@=4c'Glh*mrf3;=0f4'Ht + "<UKPhcg"dm`CaM/qVqMS-=rf"O`%&=QXBJ=Kg0H8@*%s?0YhG'j>+IB/F>LLcs'!SGg>/o + !KXe6RY03lM>9,cZ/N^R%4PNk!U]!B]$pmo$\jSuu<&M9e6bZN"^!pLfe8lYK[7NJ[9jB8C + gc\?DPYaKDdG/S8>^]I3lr:Y$em,=Vgq?_$6s2ZXg>)'u>l@hhS6`h74l%VQ7MXFe"CkIAf + 2`pE5"4.*7G9/\gGHi`?.+eJ^#)T=Pg8ic56UL6C[tNuo@F-;[B0&Q/G>R'pSp%F:Rbe-[< + Ks9GgFiMcfKLLn]K2[YVr7la>7Z`?%AtsDmpF9[jo&C9"m5_G0%RG/3Sfj;gPpkOLO&(d2e + 1n.tH#1O&8L>d9=r6Kbq7H)HfKI=]HD#]c:1'*?[Kd/aJKY*25GKjB9pm\QbCmCRD94Te=N + X3R"Naipp8No=>=(9)GBeQ)QF;VE0+33gHdF7BKKeX@n4,>6Z9*NNt764ki?2_u2c'D*M6O + \D*!/gR:Z;Wu"0@]Y")4e8;s"ID@s._,R8J-'cA'6c_B[d(H\6giFu.gWrSmd'F2)1F(@39 + \I*h2r+!b4cA#gj4iB9?!T<o4mcT^?!o&q@5M5#ehcF-IG37XgX^0)epZCUMblU\;<6QlAF + /fn>OaRkRpK'9.Ga.4@\MmgGcF57=)+[?b^CtCmSE,Njj\k5k$MIMdcLrB==.M7ESBPC$J8 + s&?a8VQHk0>VC#AW"?j2P"'GS&,ct;p:XY+SG1=kB*S1U$4dE:9XCnTIaGi79`kG0D,mX/F + ]'Be."g+Im6=rZZ>/m<.F@@AG)9JY>)L>h!F@I:2\SZcK:3]d8!@QocU40uij[4q;%bSq/R + Q+8VUPY>R(BjF04`\1#d*od^GZ7_Wjou-+O25V.]76S`W(-/7XU;_i1l:sL?(8aOFd-??Ol + CL>u6f1?Xi3YtUc;R3tp"?^T8^<f"5,I)T]2-GkC/3`djQ(6YG#-]O\`Fjnf+V@Q>?pL=ki + H@N2@K@>-GSZ-m8och5O2tK/b!?+C?=gajno8JAV&`E#2a8'?[BEPSb^X?qU!LaXA7!sh%/ + E0Ol-)#/B.]f7a^-PDp`W\_39[l:3,9@Q8lf'\DGiqY'2l9GZ##s69a.,jq(Ec&Q33R0#lc + ,74DYF.cFk.DB9WmhAK5b)D@uKiPdQ\e?r`F!D@=o;g#:J<pA?O2e^FK0Xd!?f'[5V-r^;Z + 6o2FC(+X)n]K>IM]E\"BIP93/`'hM^mrgJN_oV)m:2/ceDlq)jKi2EG;raW-n)c`4DEV!S4 + u86#A-H1J']3FHi3W\Uec,ha?ER<ZjMkutE0db>V;1RK9AT$Cet0:hk7:>n&8Qshl]cGUV/ + Yb0'A"TGa*,-lNkTLTqJh18lihZN(E1o/)or6$:_iNI-1]DGo;ccKneHc'I=pmGph!0Ak$8 + AWC^oaMM=Q@Xd10omY:@pXd,66go%)7B-SK*R#4i>TdD%HpSp#0Ef\j^k@+?FYioP$l38*s + Ng'6Bl/q,gpIo;kg6I+OnB0Y*m0%u'?iN@kqDMD(BLEa2r@J<7N$O#H03FXX5m^Gg;`pII5 + -Zmr.>DH!`VN^Z_nl/C_l#&-H7eL!s<b!2?Faj*q78;fB:Ldlan$cP,PuCqbrF<"*4[,ZAG + ,7X:!8Rli>npUZP<S\G?LUu`lIT]gFkHDbY[j)9n>0be[S1l3hq"pfWF$1ef!sfNjRFS.cW + :feIT:Ao^"6U-jb<&@QGCi()d`5Cn]o&HrI3*NJ*^J5AeT,q,mS$=$#Gl\nkFkc`J<fnr+: + S.AsEp>U$?ZpNH2JS=ROR.B$sOodrOgmEr;Bn<L)ra10JfW8bUe6pQesi+^)h=i9kp%Ap_s + ,I):Wp=slF92(Dd!i8JR)\e]mR"8j&;ItJko\3(<;"9cOA&3r?E#R5k]@":cj%Pn4g5l`T* + .2Dk-P"B2Y#Q+?'rIR6VO1BWMo`TZY*tUrTiX#704^a=A,L-ScTtqd(7t_K3"F!ceNn>S^# + j[('TT5JR&^^`&_&Ufl/V48hJiM\K-mOHPi3gB?n4*$^]**"W+H<lUC'`LE2B\!+r"6%6C; + CgM7\1e0dXj;`N<gan,6VXF)6cS@&XNW3B-</#,9dE6JhaX:7P#.."C]+`:dtr3#f)$Fi/? + eCpN$ID5o4K/e.Ha)>]CmEGTtiI[=TtjYXP&oAHZ,O(*.'4^'Lln.q"7U,-Sle<C%?R777_ + `l@LIXMHD'c#buu"^9C$7&O?Oq_%Y/c#Yq%GiWr8OK[L-"_'gH\JeI8j/:nM=OpFZ&KUN0< + +G>\3JeA>4*eG!F+W>qEOYR22TS-2K7%f3$?@iaP+Uir6W$)Fu&96,(5p1gf#XBMbr.]e6a + <:>2%u;A%Je(b"#X"c4_?`5rK=%e5%]CN6JduH:jFRjt&dUH>K6de^+G4L]JdmMYeq+?%+O + `@oK0fi"TS#!*18'7FrdkPl+N/j?-m6>o+G0Fq0-Gl3#VI6Oh'R^]80G3i$O@lY:*>.o#V) + L!U'N3@JsB)_$7I$iJdLW`SQI"dC'Z./Jm&F+="#2SJdD]*Ne.PY"c.YaL`hG(#Y6(jAfu[ + ,#To^jnd$;0J`X%d#A>6%Jd3\HEH!%O\d05tJZ8to+G$*7Jd+ag@Y+di+CBF;JT;#3TRgPX + (#Pr4<.Y9%+AdXmkTETQ+Fu!J&g2`D#SCMo+@:Y_#Tu<_"3;THNZ`l3#S!GWdKg9BW$!dG! + pCaXJc_kn.@;6.RKs3BJ;OU<B.+lDJcWq:#(iNrq@J.MBDNNrU$)7sVBT]R/rcLedJf/ukk + Y4>UtXNnPU/ir=F[0fqI-ZV8YU$l+6goHSfd4erh(@u&cSMBW\T[4.ED:RJ#WbMUjoD"qQ, + 1I*&=n(/'AP(Yb15)rj*^462n86lXqiZ/dmj/J$,^Gn:.W3qY5QDa85ne0ME]"`?4G<rl-& + HEW4$$m$DV41<dWmcQDN<rm2bS&cU3#m5L'T2,.RcfcTU<rn8I]Z2WN#mFSMt2pMMYiud\< + ro>0h;?#]"mWZt?3_lHSJ%Fh?["#]Cqn.Ek#Q)L<4HD;Fp)iJ!J"GWuHjBK<+6V"#T4ejd& + (1;?"8r1[oE7D*+TF^Er<*Z''aBb/%RLFtJ"\UrKnoLA+6[BfTu^,eOTH^pLnK6lEW1iNqC + E`P\::7ZEf?-T2Fe&BJ"s:JO,*Qs+6a&\Ue$Z2P!Vc4M*QQdnc"c.qG\R$=F[0'ZBg[5?;( + ZeJ#4t"R>:WP+6f_RVT@2TPCdgM_u2WWo^G)od/QmorBChc!?RI<KM]f>J#JM/UBgXU+6l+ + @W?M8;,[-L4$>E9Hof>=f!<6"crDF1!9L%&qS5i1d=">HnX@N,o+6qL.X+C8QV-:N5b5l$& + :l7OS3<*,+rFM&_RkC"Qd9:<cCle7n5M"Ke>GM.8O7gCGQQ"sjl_Sccp"2L\GlM(prHXIsl + Sb*@q-Rq8J$7i1^dn8(+7'\kY]9ZZB3PaPX?DE$p*;lTW;g>erJZg22F#j\r+#)IOg9!+ab + TaB+7-(YZI/Zpa87TbXNd3?G'6+'d/RaRrL]/q#XOn(6YPj5V6ngB70iW(+66k0[3i!+)Uh + r,D0V>/dULmbq(j,Re:3[*f%QU7E,JCt]/O2Z5KZOs.;eUg\+]s^gae/!j_TF3dJd5&CQ*9 + D8]j&+0]iafs"5Po\[glakZo.(FRH!TQneSK8,7p_m^_"47r7T6_3H,)>^r0(rat!`^3EEc + j#i*YC.J*#+6Kq[ReNEFSs.ZMcXH/ZdJe()q8"09%I_!n`;(K2k^<\(J"8=nF^K4WIP8tB^ + N]8J:FQ6*j8APap\b)b,R/f2.KpoVrdMo`rIPSE$,K^s#%64*6)4A`O7XY&@0@j/d%V7AUc + q#j#ld;&r=[!b@1=Be3/:>p)3=E)5LI"@7kk2j6qE:M,#h0*j8C6aoTh_iCf-'%;Cb1l[2+ + qXs%B-c09>bC(h3\ZN7"@W7\nm*dtn$!EPaZT39qUFb^5Cc%"G3Qrh8B]J<5p46qF9p,8@Z + f;^;68aXJG\AA"=oEct3XZ2UdoqQH-(MGm-(<@]A)]cZP;J#j7]YhI7=QEo@PbIMf'#Pujj + lVN)5Bn\6Q/B=/7/nM1Orjdg\kTB,jBh]JG2<N-;Rqpr3YG(s1-Oeq'PF?SgWS'?M@/jZQr + J45uj#q%fq4Da%I^0"RaG9X<TQCNn:l5uT.!6#3KDh8Mp2NMLSJS%Q#*(N@Matj.&o#8_P# + ?$keJb87,Qs!k&o(h,.?u`+[+_$KVV'WPks$RB't]P'LJ_eJI;cMAWKgAeiWoEYW`;p:39m + YLb=QPl,Q=jrqSMFNrF@QmoYA&3s&uI7DKZN,\<uk7mRR5!Y8-?:49pFEbo*F),Q>P^CCt$ + IK@$m#gtfZ+s(&4-QEq*Qn6*)`F5KOgZkePI553rKcKX4KDs2])gL"c)"9>lc`;-$M(-h3: + ]XQ6W#i$+$J^@XA+86i;gpfcYY&YCIYcN?140*MlbVFoSE>G;dG!GF)j1Mjm+[dj1OA[W&+ + 8<MEh`L-<U6YLGWFd`Cqtkm4%KhYeMZY;jgD\-3$c0>:36*!aT$utUO+[H@@B;I3U_Y%Ll: + "=ddJo&C4t2Y8:DPE;8ucFks2J0i)bN[nN`E[&Q)"@$A.40S-([P-b9:FJl$,G`AkpJd8n# + q+Wje</bTHXr/nOCc2!1B>?;'!i&,ahDZXi'c=hTD@AedBtrcQN^k'>98pr40"*hU@M6"it + %5q"(:AW40f;"=R\oT#-0Zr]mW$9$9'faQ?@IZ_#F:=Q[#*n:%a<>(a0fVtIGD%u*>CI3BM + S"@-g:$/30]m`q($\[/T4iLD[)7#/Qb]9hUX+rU7#<LS5o%N8#gFCWoMV<3t^bMt0gktB@C + @ZSKqZ>$pGcfc*B9odbR^$fqhWLor.jB=U.XS3P"V(Z_XpDAsf!K)DiFB=TVsNC.=FZ6:J' + KT.mP'1Z1q+kO\#:A/,R3=C0]]9nK?KL4%Tl'c>ilEiKr_;/la7([E/*e&]EihrLjm#K]'* + gfkc<KqX5o-'m0q:1MXI.PLq:A-^;,ielR:'EC_Vl1*0'C):G0_L%a;fRr534KmA1`gkn<D + 88<N78OtQ6'0(b?&pr4aJ`i2AqASU_<%`bPTa=1TgcPjmn,4]Q9Qcu%g%&Xf#2OP(:b:/t) + WM%Hi>4fq@oaK-8bgr9p?=6Q<SM+U#M;HPbiqGnnpPJP:blXOI$D:1PAP\>[Dj&Mj,19(1q + ?D?D7YIPAWmc]ee'G=qVP9nA]%"a*eITG@D,tI"`b_j&VWQ=)ERr^<in!L;rT]2W8s(0SJ8 + e59fT5O%-Pi_eqUoL.fr^kH._Kh[`?<F,FH*NZ:_^$E>-7?:ga?jlE$VULGctb-h.&e-Xks + 4r$@.OBH-P\6Xmk4E8?um<ZKJmY,Egu&$O*RtI>^`F:)JG?*9%NG[E&-P;Kh'`$KE`t#O?P + abC:q#7"W]TjNs"!#X5e^RcUJCjm\qSLg7Ot@-6NNk:Urd/&[4db_Qa^8+)2sd)<X(SA'fP + l(k3@m\:5,r/8c%N"3'cm^2;AkeW)1_@lG+B^G)gcO[*4O6eq^:>Cs!i9jGN`5s.@;\ngN0 + ^ioV&aX+o/8m;)#aI%P''t(5%#1'>B^uIKnkhZoWIDu=K(DF@o8c$L/@Lu5^7$]I?4Tg(0k + ANX^<O!%p'K%<:MCV]m%+XY3"L2)%sn!?LsTl<d.<FqaqFL\Po6\HU.m't:SOU]W7+'IqU) + PE#+liQ[i;N^C@AnW;9&N.=T".`D"5sP&_?nMhYi=^f*upFD1!f$koT<\+"%^DDtP3Upi8% + cX%f,<1()`emf:cL!>6/jEZ5%B*s'Dp!Xe.8;C_g30*9QWG]G^H8!P=G4!YA%,Y+aXM]d@E + :B]*E"VOj`Ea#fieKti7-;\0#:hI+1*o^(>ihP65Ed\1uJ:Wl;#Vq5BBIO4fLub^9.?7FqY + a[*RSqW?*$<!o3P-0PFZFf=G/!.4jd(:h7M_%NTM3?$jP0XQbdYb?]^M(/0d+^/ah_%IC/r + UF&P4&n/o+),k%nnJ>cI4I"fMQVl0X1p<koDK5&M\8>P0k,cmeH8B-LaH:&sFs]a^$]"1Gb + .P1WaJIb`nI#7help'U):Zdo+?qRl-=02:5Vd$*?*ZbaYqS(6`YPaibJ/jS!M/2t(crOb#K + 3KfH(33:Vtg0p&'uPgPPTq3.QKk'7kDWm`F\4"<SGbsNG080a2/*#$@TL;+_3b<7Fdr??F` + ESUMti,94gr\<X9B)qq2Rb2J:+,uF7Du1Xfruafh+HQgNcjFkk%]o''gQEQ2ithae,m#nMh + !cfL6U)el1F&,DhG?>kULtik73o64hlol6"-4ai=!c@$i=KBY0P)T8BdW$;-STNfE--VLGd + d#sj0FF#"9SpmNsO0sK<ggM;O[uK9*re:8a^3uDJV`sYmU'09+H@XNe0d,_[I0u9J2M;Y*_ + g:eI=:e9hqYscE9jHk71DU:2[fVjR3U7q%%NDO0\ito*#[S$P7,BmOm`Y:@;'N(GX;V1'p0 + #;'RiY-C"$Ma-A(C;)IgJ3A^#bnkUbmO"e_?;&&V%<6moHO%<R*@ho_j<UX'+V?%J(FVciY + S^W!'Z[iqWm2.DRpWnIP%u=d/P<"bl3Q`L+&YD*]U8&<u=n/Ut0s`s$7/N7Q4>jHL;97:mc + Wfqheoeqpe]BuaF$<UQ5)0#"b*`2"o[rX,???-QZi\qQ#@CF;F;,4dckA]^])f>H65C"s:! + 3TTd3BDE6T,rPD;bSVk9Mr76rkm-NV<RXr?YK)7<Ug_XpkQ['"$4\[4lB-%OVK<F_.q*AaV + Kh1kTCR-"a35#ki<#0UG@SI7^ktjtNOlP-&E)X(_..kE*(6o"SnG]kR,SkjZUV;UK6dcYE+ + #l;6-uZK#`-iG8)Hl`f[@$mTSi.1_`mm83m[p>&P'i9jY-:tFinQL)T<*H+^S&lg)nod+Q1 + &JGZk1Tqm!;aD)i3qCZfo-Leabc^Q@5rGi8bZ?@>Y>Fn5D"ZC?<gPsMcY6Gs7or:H=,d(pF + b'6aO*.jgFnLdj<KhTkQD2oudgrE>#*A]H7<c/>V,aarZc@<ScZmTIr9\$mQ,]`jh-B>lr_ + r,gPODf%M-^kk?:Q)DMR*9tnCg\F5h5`t(&lrg"$s@"FuB]1D8tAZ/DVfS@B0Icc/U&9kcp + F'Z0h,>P#1'%2.N[Ji/S<p/eqo=B4SAaiY6<B<-!LGG.,bG8+&MG<bY*jD+MrH8JZMA84Q7 + 0T]PTQ.ZS8UG)X&YFQ]s@kR5jRbLl$]OY"eD^@nYC:8$lmhWi;mCWm@UDS7\5_ebS-Ct/+D + o_E?Gr/c%$`%_WrNp@98lVTS/;/Z8.[eWeb92[<anBVb(D]$RI%l?8jEH=j6<C_'%9(VRPo + M]+;[97PC>kLs+orQtjXQ(*u6MBqt=*IA?[nuhn<EN=)TXS1RELCuGRi3$0G4hDh7ZDV5[a + Yhpe9Nip3B%p\3ulCTeeaI5GF+Q%bh#YKf;b$\EU]sZX^3KZQ?!&-H#5g(a*^c!XV]/g9&Z + .8-XdmPIHQ6N0K!;WRssOqRLhu!)6&,K_j^'tA/Vk,q7V>;:?!sFieqH>dXJYCdq27(K(># + 5\2?i.S"?p\BK>[;LhE?AZ"Z6"KntMWE5QEO%u,n<Ths9T3ZX!3a.b9NCcX)&RPBWLd-VDB + m;+q]'+Dg*7rE-EMN]+$(p?f\EM`7]E*?n50ft>Z3:`1uo(mHqR+E&h,E;PQR[E1P2`$KJQ + &dtoF:W.'O)WEj"#u8@OI'"q)RVT-)lpB2d^^LsEN8lG.6CZaXRj'+0ticJ_l^8g>I2_A'@ + i=Efp%WUW&[X;HM*PIWBVtls"0A;(U]Qomb/3Tg3X9q=3!U$[fL?ZZ'Wq,D980P/"#fZZ?@ + ==PWO?D6%97_ZWHrjfDS,t!4/.\J<XDkdV"+DCpeL(7iPHZq9MRV3=$*Z[MdhP(3&@(P3#n + bKA#VR)=^<Zoa8<XBc'cA3*/b?>.o9>L,?l(FN]E>o=7tE9mCkVfQt@1TnkPiLiW0EZMMGj + O\`TsM4-e.DW_T!mCX?5MRN*Ed3.p?c&6mUnG6]og1^$2fl7NMEE,5CO\<ET+fG!/W&7SRC + rsG<O&d0_2]A#AD!.eJF25A`OB$c)&W6@2(QfWFFt]1"c^hp6_id,2P%m:,S25B<^N^)g_p + ?0$e\/nD_*+-LVqb-53q8IoV8^%A?2S2Z).ggW"[H=4QP[Q[HP'X*Ish'EaBK[5PUV%107F + 90ZCI7j1d>Gr0n23XhcZjFq5XZ\5@aVtA2IecX&7'iD7(3"S@lnMQ=8#5f7Mf.[T&=4fK#O + nj0ojm8f1&jGY5T[IEtrZ96Q`5=C%S[NM+eATb,P\2R1XF[8"*?\_)>)::[*`l_;J^dWWsb + ]<?'UZS6a8:g:Q\Pmc'i)8%lt]R<:gI7l?-cVf#$;RjPA(rXN7DnYg,^,89UCotFbDfSiVE + gu[!R-+'$lW-"5S:-*4rJA<k7DP+>^t!kL*LBkkRlO^kFrVOV=(g6NVnuB7=r]+t9g;gF]i + rFV_mQkCgd-1riKQ4:D7iYL]Ml!+dB>:jYB06;]O=$PAKTY/?J>_)p%-3Z&$Y[>YrmG#S:M + k')drXM@5KQEHR4,$Phl/'6eS"5)`(t$V.2>Z@s^@h3O%GP[72%DIN5t1gqU5i;meB+[<-c + ']Zited3uV:B)?5c[WTjcS[S0]jq`YC<f+;Q9qS-[s$Qi/k]e9i#_djR+G`!n&Hr;&_%7/F + r)sATJfeBUa<BsWHB>rR0LNbimfY^ETSHVmdKjoG*2&')X:X=n2o,sM6YuT)Ck<S`L8Z8mN + s%:*%.HV@&Bb23<1nt*+c6P6Jf$"W6MqD.">7LuO@%cl#[2fq@"jC[?Jbl95mjh_U_'F,.: + /[$(a23O:P'7aE'e@PR04hP$!>7l-4!.o&`A=U+Vud7,!cKR650u`TRm^tKD6Sc#X*bM2/k + k:&9S*q_$:oM+PmA^Jdl+?80H6.";sK00L:@'?c[g,TRtf=Z3VuE_$*Y$9Ft&('>Xh-a<6c + S,_?<[JhJYd6Ndrd"7SSJ&3KB5#9\T-+DM0"r4rIH5e74/+FpHt$:'Ci-@u:i+<lC=&8DIU + TR_%g#,$KU#R/*O+;BD.-m0(Q!:^C%"!E+D#Qc-!*)qLi80@uWLo:/`)Fh!15_#EI+o6d4L + `uL7TSLr$I%Z83#^aZ!+mae%W$1AV*bZ_Y.A2HR#^@JIH3e^fL`tK(*JbliJfRB*dkdYP63 + qY*LGB-Uc3PT7JfJGI`.AsW+i-=7LAD0o+GT.eDGZ-4[XoGh+gQ\=#U-BATSB`XC7p<U#\h + `n+f'].-m>78)>+=BB-;qD#\G36=pS\>L`qq5)$hCGJf*%<#\'H]+p_VML(Xc"fE`XNJf!V + oI"E0C8dJ`GL"Zf<+GIrD>Zuq,DLrYF+_lTEQKe`YTS8O7=J1A%b^pSn+^BU6W$,8p'mGN@ + <?Quf#ZMq#4nO=?a<=0-'Smo%JeV<:#Z.1J!XMSpK_?C;'<!'6JeMf@1kHB#ap:Z`KXqF^+ + G?mcJeEk_-@uk$+X<8FKRsJ"TS.=k7\GEHCk<74+V]M?-mAkH+G_cOKHKDTre;NYG*Ie,8> + 7efU?DA0J"qeq4Fa.3qF.N^M)%nn+6cr-QQPICrg=kmU&LNuM8FA+-jTTtJ#Gm6LjuADqN8 + Ij8n+<h.YmktJ#^QcY^`]DqROSGb6#Vf/I2-tJ#u6;fRL$DqVf]%9;:dc08KDtJ$6oi!.V4 + Cq[(fWbX3)b+7*_@a<0c2rlQ>LZ2VskN70c41e7F0J$b".9RjGTqc&'QSnhT`2GLIUg7RcK + rnS[`iVq^VmK^D`30#eZJ%6s(R")Zeqk/GM?YcV+3tB`PJ%MWU^jj!eqoF9"hs'>f8$M_0+ + oZjZq=GclfRKNErdLMSr'/7'!?bhMJOfPB+6Y,&TY^V[T^!(T85Ta<U&Kd:qA^U@G^lFgre + R7_,Xf_I((^%<5LFHM7Lnr+,A;=\dD@pdkjX(siVno_.RH[_)'ogcP!@B&s%1-,-kGsG5LQ + ?.9$(Kn-/nii8,?U8l%jhd62m:-qIkiPWAZ*aj?M+Ls%\4F3tLuQ5L\!Z:QaU#-j9aIL\c] + Hl6(STU&LelqMlZ_6:@e!.&E0Ts&10@:(R"[5Lfc6<)R.&.V2GVQ#Qb'U]":*ojg;;T`8'@ + Tj0+EGd!DEs&^NE@Lr-j5Lr+"=]43j/ENP3QE^BmU]#!>os?s7i;[$1+`K%[aLVWQk9'#gJ + $-We]8-7P+7%'cY=7fl(Z>=#A,Ulfp&I>0&H?-jrI[kB&AjfE&0L7$J$C0r`<Z8U+7*BbZ) + RH;)"Sk\KDgpnp.R^(5lYC_rK^9W>g+(L1hQphRud8b5M=upB?^X?1cC6=g.P(QA41p01&a + UFMbn/J=faKX\CV$8s!6Y&PdVpUfipOPD/H\hPEGi>a8%l9D99CKL@j@BiCb9S1k1b[r`!, + AJoK!Y`AkmT=3(,F+6AH2Q<,EoS?nT(:3"Pq1&bHKq0*qBjjCXe9^3WsXEB7;J!cAt@bm6Q + G-9ZV]=3+T9\BA$U\rHN2h^^m6cs\83Th=NrbP+#Z[.[,lb/XnpKmaS3+MmGO7SD-?R+c_: + U0XXj/P>h\GnW8r9_7#kl)[Qr.!&foT/Up5L4$C4n'3g5_p-W+ES)XU\t.QoE%8(*#4'e@L + YWE4U7()s$C5o$BOg4$"5)-Ki#&k6KCa'd5_.p0[^iVG]FC)gc\-CFW@/"r/?Er1*;k!)%X + @AN/,h:+#i-r%u^.?LUo5^fE2.C"CsY-ORp9_-7^;aif&YI%Rrh##brQuN/)9d7ROKjUES6 + E&Wl9I6_tY1N(8^ppub+6R2HK>=,UR?1)tPT)%J30N/%`q*#RWP%K(C.L@R)=\H*QWb_D(2 + hF9t%Bc.AEA2Z2\:Q['HCEk"'PqoTD)MlIKjeQEDZKa1`.*-(6,\/_&.P_m_aCaS1A2=gZb + K]7lAS39!1/X.ScM?U$,9`#)L+[r%"8lUQ+bkr1(5C3L_&3Xj(6!tHN^cA2)%57IN.p7H(O + BL-$`u=GKuu.e)M:m\,\/KhOL<U7VIUnpArMG0Y1<^Q=JI$IN.l_hf+Ujr$JflaKjlePHN= + ukXbMdg8hq,#+W1W8QAgMQ1).>fBhi2L.++-NgA>E1MA0SL&WiX>kf?P;,\/9H.P_ZnaA)) + uA1"d#1(u(W9Ht]6]f31q'$/-dn#cCO&Wi2G6;)ju3Y[O+Jhdr9+W1RR(6!o]1(g$B)$mr' + N.b7J7RAC=#_Z_3q!T;<Lr_oX+UQ7N1J1,'$^@D0"3V:<J4;j)R%kf&bn6%c7R?X9UEK<W& + Wh>%kf>l]+Rk>B^IIGsM&?OtA0!^L:MgBY3?o[,eN0r7%LC-7oqZ+;]';$[W5pl?,\.h@OD + =.Ga>EUdA/Z&ABC5Z;V5#0UN.WL$mg^'M"sd^rHgcH(BZMk%,\._(.P_C1a=__5A/<RS>4L + gt/GUQ%((lX0o)<0LKk+^/;34cKre@eT+JasJO/DR[SJ_S&A.uXk1't\2)$J8tN.P4g$!uR + ."J9jrJjM3urrEu?Dhl^B`T[+>-fo`jRIblOch\_Rl$YdqomXC%q]BJ<ID<>eIeVat+,BB8 + 5KW_N2s:,]VtGMRg&$8Cn,=ELq0tWnrI;<Nru^G&J%tgV#RC~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps b/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps new file mode 100644 index 0000000..3fa36c5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps @@ -0,0 +1,134 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Tue Apr 7 23:58:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +q +37.5 37.5 75 75 re W n +[0.75 0 0 0.75 0 0] concat +/CairoFunction + << /FunctionType 2 + /Domain [ 0 1 ] + /C0 [ 1 1 0 ] + /C1 [ 1 0 0 ] + /N 1 + >> +def + << /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [ 50 50 150 50 ] + /Extend [ true true ] + /Function CairoFunction + >> +shfill +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-width_expected.png b/testfiles/cli_tests/testcases/export-width_expected.png Binary files differnew file mode 100644 index 0000000..f05cecd --- /dev/null +++ b/testfiles/cli_tests/testcases/export-width_expected.png diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.emf b/testfiles/cli_tests/testcases/export-with-filters_expected.emf Binary files differnew file mode 100644 index 0000000..ef5d7d9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.emf diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.eps b/testfiles/cli_tests/testcases/export-with-filters_expected.eps new file mode 100644 index 0000000..a1559b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.eps @@ -0,0 +1,122 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:41 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 75 +%%EndPageSetup +q 0 0 150 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +q +0 0 150 75 re W n +[ 150 0 0 -75 0 75 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 3 + /InterleaveType 2 + /DataDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> + /MaskDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 1 + /Decode [ 1 0 ] + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> +>> +image + Gb"0LYml4K!5lV0JGlC"dZfh?MWBs[8C#%o^E!2kgZRMR@eCIkJqo97<u_Pg/ll>!.!W7(I + Dqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=ob + E76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3 + ^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aTh + pGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^ + i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJ + qo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6 + Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W + 7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m + =obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;> + eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`>< + aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!V?]6dS>#~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.pdf b/testfiles/cli_tests/testcases/export-with-filters_expected.pdf Binary files differnew file mode 100644 index 0000000..c3df07b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.png b/testfiles/cli_tests/testcases/export-with-filters_expected.png Binary files differnew file mode 100644 index 0000000..d988a05 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.png diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.ps b/testfiles/cli_tests/testcases/export-with-filters_expected.ps new file mode 100644 index 0000000..13f6215 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.ps @@ -0,0 +1,159 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:41 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 53x26mm 150 75 0 () () +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x26mm +%%PageBoundingBox: 0 0 150 75 +150 75 cairo_set_page_size +%%EndPageSetup +q 0 0 150 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +q +0 0 150 75 re W n +[ 150 0 0 -75 0 75 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 3 + /InterleaveType 2 + /DataDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> + /MaskDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 1 + /Decode [ 1 0 ] + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> +>> +image + Gb"0LYml4K!5lV0JGlC"dZfh?MWBs[8C#%o^E!2kgZRMR@eCIkJqo97<u_Pg/ll>!.!W7(I + Dqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=ob + E76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3 + ^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aTh + pGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^ + i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJ + qo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6 + Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W + 7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m + =obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;> + eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`>< + aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!V?]6dS>#~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.svg b/testfiles/cli_tests/testcases/export-with-filters_expected.svg new file mode 100644 index 0000000..6b40fb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="offset.svg" + id="svg11" + version="1.1" + height="100" + width="200"> + <metadata + id="metadata15"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + id="namedview13" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <defs + id="defs5"> + <filter + height="200%" + width="200%" + y="0" + x="0" + id="offset"> + <feOffset + id="feOffset2" + dy="0" + dx="100" + in="SourceGraphic" /> + </filter> + </defs> + <rect + id="rect7" + fill="red" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="rect9" + filter="url(#offset)" + fill="blue" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.wmf b/testfiles/cli_tests/testcases/export-with-filters_expected.wmf Binary files differnew file mode 100644 index 0000000..830da28 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.wmf diff --git a/testfiles/cli_tests/testcases/export_hints.svg b/testfiles/cli_tests/testcases/export_hints.svg new file mode 100644 index 0000000..87c06f5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export_hints.svg @@ -0,0 +1,7 @@ +<!-- Note: inkscape:export-ydpi is actually ignored, see src/ui/dialog/export.cpp and src/io/file-export-cmd.cpp --> + +<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="190" height="80" + inkscape:export-filename="export_hints_drawing.png" inkscape:export-xdpi="111" inkscape:export-ydpi="222"> + <rect id="rect1" x="10" y="10" width="80" height="60" fill="#00f" inkscape:export-filename="export_hints_rectangle.png" inkscape:export-xdpi="123" inkscape:export-ydpi="456"/> + <rect id="rect2" x="100" y="10" width="80" height="60" fill="#f00"/> +</svg> diff --git a/testfiles/cli_tests/testcases/filter.svg b/testfiles/cli_tests/testcases/filter.svg new file mode 100644 index 0000000..6111da3 --- /dev/null +++ b/testfiles/cli_tests/testcases/filter.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="230" height="120" viewBox="0 0 230 120" xmlns="http://www.w3.org/2000/svg"> + <filter id="blurMe"> + <feGaussianBlur stdDeviation="5"/> + </filter> + <circle cx="60" cy="60" r="60" fill="green" fill-opacity="0.1" /> + <circle cx="60" cy="60" r="50" fill="green" /> + <circle cx="170" cy="60" r="50" fill="green" filter="url(#blurMe)" /> +</svg> diff --git a/testfiles/cli_tests/testcases/gradient.svg b/testfiles/cli_tests/testcases/gradient.svg new file mode 100644 index 0000000..3f5ab8c --- /dev/null +++ b/testfiles/cli_tests/testcases/gradient.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> + <defs> + <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%"> + <stop offset="0%" style="stop-color:yellow" /> + <stop offset="100%" style="stop-color:red" /> + </linearGradient> + </defs> + <rect x="50" y="50" width="100" height="100" fill="url(#grad1)" id="gradient" /> +</svg> diff --git a/testfiles/cli_tests/testcases/lambda-background.svg b/testfiles/cli_tests/testcases/lambda-background.svg new file mode 100644 index 0000000..50b9fb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/lambda-background.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="150" height="100"> + <sodipodi:namedview inkscape:pagecheckerboard="true" inkscape:pageopacity="0.75" pagecolor="pink" /> + <rect x="0" y="50" width="50" height="50" fill="red" id="red" /> + <rect x="50" y="0" width="50" height="50" fill="green" id="green" /> + <rect x="100" y="50" width="50" height="50" fill="blue" id="blue" /> +</svg> diff --git a/testfiles/cli_tests/testcases/lambda.svg b/testfiles/cli_tests/testcases/lambda.svg new file mode 100644 index 0000000..ef3d688 --- /dev/null +++ b/testfiles/cli_tests/testcases/lambda.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> + <rect x="0" y="50" width="50" height="50" fill="red" id="red" /> + <rect x="50" y="0" width="50" height="50" fill="green" id="green" /> + <rect x="100" y="50" width="50" height="50" fill="blue" id="blue" /> +</svg> diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr Binary files differnew file mode 100644 index 0000000..ccdb02a --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr Binary files differnew file mode 100644 index 0000000..4a74dbc --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png Binary files differnew file mode 100644 index 0000000..94c3166 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png Binary files differnew file mode 100644 index 0000000..b3ee3e4 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd Binary files differnew file mode 100644 index 0000000..a526a70 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png Binary files differnew file mode 100644 index 0000000..43ba022 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx Binary files differnew file mode 100644 index 0000000..ef8f6a1 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png Binary files differnew file mode 100644 index 0000000..5f1bdfa --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg Binary files differnew file mode 100644 index 0000000..02e1b82 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png Binary files differnew file mode 100644 index 0000000..aa5ac9e --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png diff --git a/testfiles/cli_tests/testcases/multiline-anchoring.svg b/testfiles/cli_tests/testcases/multiline-anchoring.svg new file mode 100644 index 0000000..0af70d6 --- /dev/null +++ b/testfiles/cli_tests/testcases/multiline-anchoring.svg @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="200" height="2200" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + version="1.1" + viewBox="0 0 200 2200"> + <g id="grouped_text" style="font-size:40px;line-height:1.25"> + <text x="50" y="400"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="50" y="600"><tspan + sodipodi:role="line">up</tspan><tspan + sodipodi:role="line">down</tspan></text> + <text x="50" y="800" style="writing-mode:vertical-lr;"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="50" y="1000" style="writing-mode:vertical-lr;"><tspan + sodipodi:role="line">left</tspan><tspan + sodipodi:role="line">right</tspan></text> + <text x="100" y="1200" style="writing-mode:vertical-rl;text-orientation:upright"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="100" y="1400" style="writing-mode:vertical-rl;text-orientation:upright"><tspan + sodipodi:role="line">right</tspan><tspan + sodipodi:role="line">left</tspan></text> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/cli_tests/testcases/offset.svg b/testfiles/cli_tests/testcases/offset.svg new file mode 100644 index 0000000..caa96e4 --- /dev/null +++ b/testfiles/cli_tests/testcases/offset.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg"> + <defs> + <filter id="offset" x="0" y="0" width="200%" height="200%"> + <feOffset in="SourceGraphic" dx="100" dy="0" /> + </filter> + </defs> + <rect x="0" y="0" width="100" height="100" fill="red"/> + <rect x="0" y="0" width="100" height="100" fill="blue" filter="url(#offset)"/> +</svg> diff --git a/testfiles/cli_tests/testcases/path.svg b/testfiles/cli_tests/testcases/path.svg new file mode 100644 index 0000000..57c27b4 --- /dev/null +++ b/testfiles/cli_tests/testcases/path.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="1000" height="500" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> + <path d="M 10,30 + A 20,20 0,0,1 50,30 + A 20,20 0,0,1 90,30 + Q 90,60 50,90 + Q 10,60 10,30 Z" id="heart" fill="indigo" /> + <path d="M 10 410 + V 490 + H 100 Z" id="bottom-left-corner" fill="firebrick" class="corner" /> + <path d="M 910 410 + H 990 + V 490 + H 910 + L 910 410" id="square" fill="crimson" /> + <path d="M 910 10 + H 990 + V 100 Z" id="top-right-corner" fill="deeppink" class="corner" /> + <path d="M 300,200 + h-150 + a150,150 0 1,0 150,-150 Z" id="arc-big" fill="red" stroke="blue" stroke-width="5" /> + <path d="M 275,175 + v-150 + a150,150 0 0,0 -150,150 Z" id="arc-small" fill="yellow" stroke="mediumblue" stroke-width="5" /> + <path d="M 500,450 l 50,-25 + a25,25 -30 0,1 50,-25 l 50,-25 + a25,50 -30 0,1 50,-25 l 50,-25 + a25,75 -30 0,1 50,-25 l 50,-25 + a25,100 -30 0,1 50,-25 l 50,-25" id="gates" fill="none" stroke="royalblue" stroke-width="5" /> + <path d="M 475 175 + h 50 v 50 + h 50 v 50 + h-50 v50 + h-50 v-50 + h-50 v-50 + h50 Z" id="cross" fill="mediumseagreen" stroke="darkgreen" stroke-width="10" /> + <use href="#heart" + xlink:href="#heart" x="450" id="clone" fill="red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/pdf-mesh.pdf b/testfiles/cli_tests/testcases/pdf-mesh.pdf Binary files differnew file mode 100644 index 0000000..8d4c29c --- /dev/null +++ b/testfiles/cli_tests/testcases/pdf-mesh.pdf diff --git a/testfiles/cli_tests/testcases/pdf-pages.pdf b/testfiles/cli_tests/testcases/pdf-pages.pdf Binary files differnew file mode 100644 index 0000000..758c2b1 --- /dev/null +++ b/testfiles/cli_tests/testcases/pdf-pages.pdf diff --git a/testfiles/cli_tests/testcases/pyramids.svg b/testfiles/cli_tests/testcases/pyramids.svg new file mode 100644 index 0000000..30ac82a --- /dev/null +++ b/testfiles/cli_tests/testcases/pyramids.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="185px" height="100px"> + <rect x="4.888" y="5.333" width="175" height="90" fill="#fff" stroke="#000" id="rect_misaligned" /> + + <rect x="10" y="10" width="80" height="80" fill="none" stroke="#000" id="rect_1" /> + <rect x="15" y="15" width="70" height="70" fill="none" stroke="#000" id="rect_2" /> + <rect x="20" y="20" width="60" height="60" fill="none" stroke="#000" id="rect_3" /> + <rect x="25" y="25" width="50" height="50" fill="none" stroke="#000" id="rect_4" /> + <rect x="30.5" y="30.5" width="40" height="40" fill="red" fill-opacity="0.2" id="quad_1" /> + <rect x="35.5" y="35.5" width="30" height="30" fill="red" fill-opacity="0.2" id="quad_2" /> + <rect x="40.5" y="40.5" width="20" height="20" fill="red" fill-opacity="0.2" id="quad_3" /> + <rect x="45.5" y="45.5" width="10" height="10" fill="red" fill-opacity="0.2" id="quad_4" /> + + <rect x="95.5" y="10.5" width="80" height="80" fill="none" stroke="#000" id="rect_snapped_1" /> + <rect x="100.5" y="15.5" width="70" height="70" fill="none" stroke="#000" id="rect_snapped_2" /> + <rect x="105.5" y="20.5" width="60" height="60" fill="none" stroke="#000" id="rect_snapped_3" /> + <rect x="110.5" y="25.5" width="50" height="50" fill="none" stroke="#000" id="rect_snapped_4" /> + <rect x="115" y="30" width="40" height="40" fill="green" fill-opacity="0.2" id="quad_snapped_1" /> + <rect x="120" y="35" width="30" height="30" fill="green" fill-opacity="0.2" id="quad_snapped_2" /> + <rect x="125" y="40" width="20" height="20" fill="green" fill-opacity="0.2" id="quad_snapped_3" /> + <rect x="130" y="45" width="10" height="10" fill="green" fill-opacity="0.2" id="quad_snapped_4" /> +</svg> diff --git a/testfiles/cli_tests/testcases/rects.svg b/testfiles/cli_tests/testcases/rects.svg new file mode 100644 index 0000000..3d90ef1 --- /dev/null +++ b/testfiles/cli_tests/testcases/rects.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px"> + <rect x="10" y="10" width="80" height="80" fill="#f00" id="rect1" /> + <rect x="110" y="20" width="80" height="70" fill="#0f0" id="rect2" /> + <rect x="210" y="30" width="80" height="60" fill="#00f" id="rect3" /> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-1364.svg b/testfiles/cli_tests/testcases/regression-1364.svg new file mode 100644 index 0000000..d37767c --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-1364.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + xmlns="http://www.w3.org/2000/svg"> + <g + id="layer1"> + <path + id="small" + style="fill:#00ff00;fill-rule:evenodd;stroke:none" + transform="scale(2)" + d="M 0,0 H 50 V 50 H 0 Z" /> + <circle + id="large" + style="fill:#ff0000;fill-rule:evenodd;fill-opacity:0.5;stroke:none" + r="100" /> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-1364_script.py b/testfiles/cli_tests/testcases/regression-1364_script.py new file mode 100644 index 0000000..0d3b12a --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-1364_script.py @@ -0,0 +1,31 @@ +from lxml import etree + +def d_cmp(orig, new): + """ Compares the original d attribute to the new one. """ + orig_list = orig.split() + new_list = new.split() + + if len(orig_list) != len(new_list): + return False + + # Normalize the final 'z' to uppercase: + orig_list[-1] = orig_list[-1].upper() + new_list[-1] = new_list[-1].upper() + + for (o, n) in zip(orig_list, new_list): + if o == n: + continue + numeric = "{:.0f}".format(float(n)) + if o != numeric: + return False + + return True + +document = etree.parse("regression-1364_output.svg") +layer = document.find('{http://www.w3.org/2000/svg}g[@id="layer1"]') +boolop_result = layer.find('{http://www.w3.org/2000/svg}path[@id="small"]') + +assert boolop_result.attrib.get("transform") == "scale(2)" + +assert d_cmp("M 0 0 L 0 50 A 50 50 0 0 0 50 0 L 0 0 z", boolop_result.attrib.get("d")) + diff --git a/testfiles/cli_tests/testcases/regression-2602.svg b/testfiles/cli_tests/testcases/regression-2602.svg new file mode 100644 index 0000000..0611017 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2602.svg @@ -0,0 +1,9 @@ +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" + width="30" height="50" viewBox="0 0 30 50"> + <text id="parent" style="fill:#0000ff"> + <tspan style="fill:#ff0000"> + <tspan x="10" y="20" style="fill:#ff0000">R</tspan> + <tspan x="10" y="40" style="fill:#0000ff">B</tspan> + </tspan> + </text> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-2602_script.py b/testfiles/cli_tests/testcases/regression-2602_script.py new file mode 100644 index 0000000..1a5480f --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2602_script.py @@ -0,0 +1,10 @@ +from lxml import etree + +document = etree.parse("regression-2602_output.svg") + +parent = document.find('{http://www.w3.org/2000/svg}g[@id="parent"]') +paths = parent.findall('{http://www.w3.org/2000/svg}path') + +assert parent.attrib.get("style") == "fill:#0000ff" +assert paths[0].attrib.get("style") == "fill:#ff0000" +assert paths[1].attrib.get("style") is None diff --git a/testfiles/cli_tests/testcases/regression-2797.svg b/testfiles/cli_tests/testcases/regression-2797.svg new file mode 100644 index 0000000..cb62158 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2797.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="100mm" + height="100mm" + viewBox="0 0 100 100" + version="1.1" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg"> + <defs> + <rect + x="2" + y="2" + width="96" + height="96" + id="theshape" /> + </defs> + <text id="parent" style="font-size:4px;shape-inside:url(#theshape)"> + Outside tspan + <tspan>Inside tspan</tspan> + </text> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-2797_script.py b/testfiles/cli_tests/testcases/regression-2797_script.py new file mode 100644 index 0000000..639bff4 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2797_script.py @@ -0,0 +1,17 @@ +from lxml import etree + +document = etree.parse("regression-2797_output.svg") + +parent = document.find('{http://www.w3.org/2000/svg}text[@id="parent"]') +tspan1, = parent.findall('{http://www.w3.org/2000/svg}tspan') +tspan2s = tspan1.findall('{http://www.w3.org/2000/svg}tspan') + +# Expect outer tspan added as SVG 1.1 fallback with x/y position. +# Expect no inner tspan with incorrect "font-size:medium". + +assert len(tspan2s) == 0 + +assert parent.attrib.get("style") == "font-size:4px;shape-inside:url(#theshape)" +assert tspan1.attrib.get("style") is None +assert tspan1.attrib.get("x") == "2" +assert tspan1.attrib.get("y") is not None diff --git a/testfiles/cli_tests/testcases/shapes.svg b/testfiles/cli_tests/testcases/shapes.svg new file mode 100644 index 0000000..61ad01d --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="400" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <g stroke="#000"> + <rect x="10" y="5" width="160" height="130" fill="#00f" stroke-width="2"/> + <ellipse cx="275" cy="130" rx="120" ry="100" fill="#f00" stroke-width="4"/> + <path d="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" fill="#ff0" stroke-width="6"/> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/shapes_expected.emf b/testfiles/cli_tests/testcases/shapes_expected.emf Binary files differnew file mode 100644 index 0000000..4bf1faa --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.emf diff --git a/testfiles/cli_tests/testcases/shapes_expected.eps b/testfiles/cli_tests/testcases/shapes_expected.eps new file mode 100644 index 0000000..fe91e4d --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.eps @@ -0,0 +1,109 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Feb 22 20:44:27 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 291 220 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 291 220 +%%EndPageSetup +q 0 0 291 220 rectclip +1 0 0 -1 0 220 cm q +0 0 1 rg +0.75 0.75 120 97.5 re f +0 g +1.5 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +0.75 0.75 120 97.5 re S Q +1 0 0 rg +289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5 + 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5 + 289.5 53.078 289.5 94.5 c f +0 g +3 w +q 1 0 0 1 0 0 cm +289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5 + 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5 + 289.5 53.078 289.5 94.5 c S Q +1 1 0 rg +64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785 +36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551 + l 115.082 172.207 l h +64.5 214.5 m f +0 g +4.5 w +q 1 0 0 1 0 0 cm +64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785 +36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551 + l 115.082 172.207 l h +64.5 214.5 m S Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/shapes_expected.pdf b/testfiles/cli_tests/testcases/shapes_expected.pdf Binary files differnew file mode 100644 index 0000000..bff07b6 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.pdf diff --git a/testfiles/cli_tests/testcases/shapes_expected.png b/testfiles/cli_tests/testcases/shapes_expected.png Binary files differnew file mode 100644 index 0000000..3e81da4 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.png diff --git a/testfiles/cli_tests/testcases/shapes_expected.ps b/testfiles/cli_tests/testcases/shapes_expected.ps new file mode 100644 index 0000000..9037026 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.ps @@ -0,0 +1,146 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Feb 22 20:44:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 106x79mm 300 225 0 () () +%%BoundingBox: 6 2 298 222 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 106x79mm +%%PageBoundingBox: 6 2 298 222 +300 225 cairo_set_page_size +%%EndPageSetup +q 6 2 292 220 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +7.5 3.75 120 97.5 re f +0 g +1.5 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +7.5 3.75 120 97.5 re S Q +1 0 0 rg +296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5 + 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957 + 22.5 296.25 56.078 296.25 97.5 c f +0 g +3 w +q 1 0 0 1 0 0 cm +296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5 + 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957 + 22.5 296.25 56.078 296.25 97.5 c S Q +1 1 0 rg +71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535 + 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551 + l 121.832 175.207 l h +71.25 217.5 m f +0 g +4.5 w +q 1 0 0 1 0 0 cm +71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535 + 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551 + l 121.832 175.207 l h +71.25 217.5 m S Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/shapes_expected.wmf b/testfiles/cli_tests/testcases/shapes_expected.wmf Binary files differnew file mode 100644 index 0000000..1b3fdcf --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.wmf diff --git a/testfiles/cli_tests/testcases/shapes_expected.xaml b/testfiles/cli_tests/testcases/shapes_expected.xaml new file mode 100644 index 0000000..613c107 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.xaml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--This file is NOT compatible with Silverlight--> +<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform"> + <Canvas Name="svg10" Width="400" Height="300"> + <Canvas.Resources/> + <!--Unknown tag: sodipodi:namedview--> + <Canvas Name="g8"> + <Rectangle xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="10" Canvas.Top="5" Width="160" Height="130" Name="rect2" Fill="#FF0000FF" StrokeThickness="2" Stroke="#FF000000"/> + <Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="155" Width="240" Canvas.Top="30" Height="200" Name="ellipse4" Fill="#FFFF0000" StrokeThickness="4" Stroke="#FF000000"/> + <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path6" Fill="#FFFFFF00" StrokeThickness="6" Stroke="#FF000000"> + <Path.Data> + <PathGeometry Figures="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> +</Viewbox> diff --git a/testfiles/cli_tests/testcases/square_mm.svg b/testfiles/cli_tests/testcases/square_mm.svg new file mode 100644 index 0000000..b52aec6 --- /dev/null +++ b/testfiles/cli_tests/testcases/square_mm.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm"> + <rect x="50mm" y="50mm" width="50mm" height="100mm" fill="blue" id="square-blue" /> + <rect x="100mm" y="50mm" width="50mm" height="100mm" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/square_mm_viewbox.svg b/testfiles/cli_tests/testcases/square_mm_viewbox.svg new file mode 100644 index 0000000..394b205 --- /dev/null +++ b/testfiles/cli_tests/testcases/square_mm_viewbox.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm" viewBox="0 0 200 200"> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" /> + <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/square_px.svg b/testfiles/cli_tests/testcases/square_px.svg new file mode 100644 index 0000000..7467f7d --- /dev/null +++ b/testfiles/cli_tests/testcases/square_px.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200px" height="200px"> + <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" /> + <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/stroke-to-path-variations.svg b/testfiles/cli_tests/testcases/stroke-to-path-variations.svg new file mode 100644 index 0000000..2c8e04b --- /dev/null +++ b/testfiles/cli_tests/testcases/stroke-to-path-variations.svg @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="100mm" height="100mm" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <marker id="mixedarrow" style="overflow:visible;" refX="0.0" refY="0.0" orient="auto"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + style="stroke:context-stroke;fill:context-stroke;stroke-width:0.5;" /> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + style="stroke:#800000;fill:#000080;stroke-width:0.5;" /> + </marker> + <inkscape:path-effect + effect="fillet_chamfer" + id="filletpatheffect_1" + is_visible="true" + lpeversion="1" + satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="F" + radius="5" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0.38440286 : 9.523512 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="99.640604 : 9.0838863 : 1" + inkscape:persp3d-origin="50 : 33.333333 : 1" + id="perspective_1" /> + </defs> + <g transform="matrix(1.6736419,0,0,1,-6.5532384,0)"> + <g> + <rect width="10" height="10" x="10" y="5" + style="stroke-width:0.3" /> + <rect width="10" height="10" x="25" y="5" + style="fill:#800000;stroke:#ff0000;stroke-width:0.3" /> + <rect width="10" height="10" x="40" y="5" + style="fill:none;stroke:none;stroke-width:0.3" /> + <ellipse cx="15" cy="27" rx="5" ry="5.5" /> + <ellipse cx="30" cy="27" rx="5" ry="5.5" + style="fill:#800000;stroke:#ff0000;stroke-width:0.3;" /> + <ellipse cx="45" cy="27" rx="5" ry="5.5" + style="fill:none;stroke:none;stroke-width:0.3;" /> + <path + inkscape:path-effect="#filletpatheffect_1" + d="m 18.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 L 9.9354434,43.935443 a 0.70800353,0.70800353 106.84503 0 1 0.3617836,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 20.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:original-d="m 20,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + <path + style="fill:#800000;stroke:#ff0000;stroke-width:0.3;" + d="m 33.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 l -1.129114,-1.129114 a 0.70800353,0.70800353 106.84503 0 1 0.361784,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 35.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:path-effect="#filletpatheffect_1" + inkscape:original-d="m 35,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + <path + style="fill:none;stroke:none;stroke-width:0.3" + d="m 48.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 l -1.129114,-1.129114 a 0.70800353,0.70800353 106.84503 0 1 0.361784,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 50.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:path-effect="#filletpatheffect_1" + inkscape:original-d="m 50,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + </g> + </g> + <!-- marker and dash test --> + <path + style="fill:none;stroke:#782121;stroke-width:0.3;stroke-dasharray:3,3" + d="m 20,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:none;stroke-width:0.3" + d="m 40,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:#782121;stroke-width:0.3;stroke-dasharray:3,3;marker-start:url(#mixedarrow)" + d="m 60,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:none;stroke-width:0.3;marker-start:url(#mixedarrow)" + d="m 80,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <!-- text test --> + <text x="10" y="80" style="font-size:4px;fill:none;fill-opacity:1;stroke:none" xml:space="preserve"><tspan sodipodi:role="line">SVG 1.1</tspan></text> + <text x="10" y="90" style="fill:magenta;stroke:navy;stroke-width:0.3;font-size:4px;white-space:pre;inline-size:16" xml:space="preserve"><tspan x="10" y="90">inline </tspan><tspan x="10" y="95">size</tspan></text> + <rect x="40" y="76" width="30" height="100" id="rect_shape_inside" style="display:none;stroke:#333;stroke-width:0.3" /> + <text style="fill:yellow;stroke:green;stroke-width:0.3;font-size:4px;white-space:pre;shape-inside:url(#rect_shape_inside);"><tspan x="140" y="330">SVG </tspan><tspan x="140" y="340" xml:space="preserve">shape-inside</tspan></text> + <flowRoot style="fill:green;stroke:blue;stroke-width:0.3;font-size:4px" xml:space="preserve"><flowRegion><rect width="30" height="100" x="70" y="76" /></flowRegion><flowPara>SVG1.2 flowRoot</flowPara></flowRoot> + <g + sodipodi:type="inkscape:box3d" + id="box" + style="fill:black;stroke:#6b1515;stroke-width:0.1;" + inkscape:perspectiveID="#perspective_1" + inkscape:corner0="0.24645783 : -0.025213563 : 0 : 1" + inkscape:corner7="0.14660839 : -0.032706923 : 0.25 : 1"> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#dec7af" + inkscape:box3dsidetype="13" + d="M 40.189679,97.614397 43.656018,98.235984 53.677544,96.92569 50.12162,96.495374 Z" + points="43.656018,98.235984 53.677544,96.92569 50.12162,96.495374 40.189679,97.614397 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#644d35" + inkscape:box3dsidetype="6" + d="m 40.189679,91.602674 v 6.011723 l 9.931941,-1.119023 v -5.007398 z" + points="40.189679,97.614397 50.12162,96.495374 50.12162,91.487976 40.189679,91.602674 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#fff4e9" + inkscape:box3dsidetype="11" + d="m 50.12162,91.487976 3.555924,0.07232 V 96.92569 L 50.12162,96.495374 Z" + points="53.677544,91.560292 53.677544,96.92569 50.12162,96.495374 50.12162,91.487976 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#9f764d" + inkscape:box3dsidetype="5" + d="m 40.189679,91.602674 3.466339,0.09807 10.021526,-0.140453 -3.555924,-0.07232 z" + points="43.656018,91.700745 53.677544,91.560292 50.12162,91.487976 40.189679,91.602674 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#ffebd7" + inkscape:box3dsidetype="14" + d="m 43.656018,91.700745 v 6.535239 L 53.677544,96.92569 v -5.365398 z" + points="43.656018,98.235984 53.677544,96.92569 53.677544,91.560292 43.656018,91.700745 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#bfa386" + inkscape:box3dsidetype="3" + d="m 40.189679,91.602674 3.466339,0.09807 v 6.535239 l -3.466339,-0.621587 z" + points="43.656018,91.700745 43.656018,98.235984 40.189679,97.614397 40.189679,91.602674 " /> + </g> + <use xlink:href="#box" x="20" y="0" width="100%" height="100%" /> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage.svg b/testfiles/cli_tests/testcases/systemLanguage.svg new file mode 100644 index 0000000..c650dc9 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100"> + <switch id="switch"> + <!-- some fuzz to probe for crashing issues --> + <rect systemLanguage="" width="1" height="1"/> + <rect systemLanguage=" " width="1" height="1"/> + <rect systemLanguage="_" width="1" height="1"/> + <rect systemLanguage="-" width="1" height="1"/> + <rect systemLanguage="#" width="1" height="1"/> + <rect systemLanguage="-CH" width="1" height="1"/> + + <!-- use rects instead of text to avoid any issues with font rendering --> + <!-- note: we don't support the 'allowReorder' attribute yet --> + <rect systemLanguage="en" x="10" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="fr" x="110" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="de-CH" x="210" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="es, pt" x="310" y="10" width="80" height="80" fill="#00f"/> + <rect x="410" y="10" width="80" height="80" fill="#00f"/> + </switch> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage_RDF.svg b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg new file mode 100644 index 0000000..7e1223e --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <metadata> + <rdf:RDF> + <cc:Work> + <dc:language>fr</dc:language> + </cc:Work> + </rdf:RDF> + </metadata> + <use xlink:href="systemLanguage.svg#switch" /> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage_de.png b/testfiles/cli_tests/testcases/systemLanguage_de.png Binary files differnew file mode 100644 index 0000000..1dbfe36 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_de.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_default.png b/testfiles/cli_tests/testcases/systemLanguage_default.png Binary files differnew file mode 100644 index 0000000..67cb9f0 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_default.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_en.png b/testfiles/cli_tests/testcases/systemLanguage_en.png Binary files differnew file mode 100644 index 0000000..31679aa --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_en.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_fr.png b/testfiles/cli_tests/testcases/systemLanguage_fr.png Binary files differnew file mode 100644 index 0000000..deeb4bf --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_fr.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_pt.png b/testfiles/cli_tests/testcases/systemLanguage_pt.png Binary files differnew file mode 100644 index 0000000..91e5b4b --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_pt.png diff --git a/testfiles/cli_tests/testcases/text.svg b/testfiles/cli_tests/testcases/text.svg new file mode 100644 index 0000000..5dd1c7f --- /dev/null +++ b/testfiles/cli_tests/testcases/text.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="50px"> + <text x="10" y="25">some text</text> +</svg> diff --git a/testfiles/cli_tests/testcases/theta.svg b/testfiles/cli_tests/testcases/theta.svg new file mode 100644 index 0000000..00cb1f7 --- /dev/null +++ b/testfiles/cli_tests/testcases/theta.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"> + <rect x="50" y="50" width="100" height="100" fill="red" id="red" /> + <rect x="250" y="50" width="100" height="100" fill="green" id="green" /> + <rect x="150" y="150" width="100" height="100" fill="blue" id="blue" /> + <rect x="50" y="250" width="100" height="100" fill="yellow" id="yellow" /> + <rect x="250" y="250" width="100" height="100" fill="purple" id="purple" /> + + <rect x="75" y="75" width="50" height="50" fill="white" id="red-cover" /> + <rect x="275" y="75" width="50" height="50" fill="white" id="green-cover" /> + <rect x="175" y="175" width="50" height="50" fill="white" id="blue-cover" /> + <rect x="75" y="275" width="50" height="50" fill="white" id="yellow-cover" /> + <rect x="275" y="275" width="50" height="50" fill="white" id="purple-cover" /> +</svg> |