From e2184b2d331cc85b6fcf038893133c2e201ddb67 Mon Sep 17 00:00:00 2001 From: Wim Pomp Date: Sat, 1 Mar 2025 19:40:37 +0100 Subject: [PATCH] - First commit --- .gitignore | 84 +++++++++ Cargo.toml | 31 ++++ LICENSE-APACHE | 176 ++++++++++++++++++ LICENSE-MIT | 23 +++ README.md | 31 ++++ build.rs | 62 +++++++ cpp/CMakeLists.txt | 11 ++ cpp/sitk_adapter.cxx | 415 +++++++++++++++++++++++++++++++++++++++++++ interp_test.tif | Bin 0 -> 197358 bytes src/lib.rs | 282 +++++++++++++++++++++++++++++ src/sys.rs | 359 +++++++++++++++++++++++++++++++++++++ 11 files changed, 1474 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 LICENSE-APACHE create mode 100644 LICENSE-MIT create mode 100644 README.md create mode 100644 build.rs create mode 100644 cpp/CMakeLists.txt create mode 100644 cpp/sitk_adapter.cxx create mode 100644 interp_test.tif create mode 100644 src/lib.rs create mode 100644 src/sys.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1a09d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,84 @@ +/target +/Cargo.lock + +# Byte-compiled / optimized / DLL files +__pycache__/ +.pytest_cache/ +*.py[cod] + +# C extensions +*.so +*.dylib +*.dll + +# Distribution / packaging +.Python +.venv/ +env/ +bin/ +build/ +develop-eggs/ +dist/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +include/ +man/ +venv/ +*.egg-info/ +.installed.cfg +*.egg + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt +pip-selfcheck.json + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Rope +.ropeproject + +# Django stuff: +*.log +*.pot + +.DS_Store + +# Sphinx documentation +docs/_build/ + +# PyCharm +.idea/ + +# VSCode +.vscode/ + +# Pyenv +.python-version + +/tests/files/* +/cpp/CMakeFiles/ +/cpp/cmake_install.cmake +/cpp/CMakeCache.txt +/cpp/Makefile +/sitk +*.nii +TransformParameters* diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..90927b5 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "sitk-registration-sys" +version = "2025.3.0" +edition = "2024" +license = "MIT OR Apache-2.0" +description = "register and interpolate images" +rust-version = "1.85.0" +authors = ["Wim Pomp "] +homepage = "https://github.com/wimpomp/sitk-registration-sys" +repository = "https://github.com/wimpomp/sitk-registration-sys" +documentation = "https://docs.rs/sitk-registration-sys" +readme = "README.md" +keywords = ["registration", "affine", "bspline", "transform"] +categories = ["multimedia::images", "science"] + +[lib] +name = "sitk_regsitration_sys" +crate-type = ["cdylib", "rlib"] + +[dependencies] +anyhow = "1.0.96" +libc = "0.2.170" +ndarray = "0.16.1" +num = "0.4.3" + +[dev-dependencies] +tiffwrite = "2025.2.0" + +[build-dependencies] +cmake = "0.1.54" +git2 = "0.20.0" \ No newline at end of file diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 0000000..1b5ec8b --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/LICENSE-MIT b/LICENSE-MIT new file mode 100644 index 0000000..31aa793 --- /dev/null +++ b/LICENSE-MIT @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e8969d4 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# sitk-registration-sys + +This crate does two things: +- find an affine transform or translation that transforms one image into the other +- use bpline or nearest neighbor interpolation to apply a transformation to an image + +To do this [SimpleITK](https://github.com/SimpleITK/SimpleITK.git), which is written in +C++, is used. An adapter library is created to expose the required functionality in SimpleITK +in a shared library. Because of this, compilation of this crate requires quite some time, as +wel as cmake. + +## Examples +### Registration +``` + let image_a = (some Array2); + let iameg_b = (some transformed Array2); + let transform = Transform::register_affine(image_a.view(), image_b.view())?; + println!("transform: {:#?}", transform); +``` + +### Interpolation +``` + let image = (Some Array2); + let shape = image.shape(); + let origin = [ + ((shape[1] - 1) as f64) / 2f64, + ((shape[0] - 1) as f64) / 2f64, + ]; + let transform = Transform::new([1.2, 0., 0., 1., 10., 0.], origin, [shape[0], shape[1]]); + let transformed_image = transform.transform_image_bspline(image.view())?; +``` \ No newline at end of file diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..7ce670d --- /dev/null +++ b/build.rs @@ -0,0 +1,62 @@ +use cmake::Config; +use git2::Repository; +use std::ffi::OsStr; +use std::path::PathBuf; + +fn main() { + if std::env::var("DOCS_RS").is_err() { + let out_dir = PathBuf::from(std::env::var("OUT_DIR").expect("OUT_DIR is undefined")); + let mut target_dir = out_dir.clone(); + while target_dir.file_name() != Some(OsStr::new("target")) { + if !target_dir.pop() { + panic!("Could not find target directory"); + } + } + + let sitk_dir = if let Some(d) = target_dir.parent() { + d.join("sitk").to_path_buf() + } else { + target_dir.join("sitk") + }; + if !sitk_dir.exists() { + Repository::clone("https://github.com/SimpleITK/SimpleITK.git", &sitk_dir) + .expect("unable to clone sitk"); + } + + let sitk_build_dir = sitk_dir.join("build"); + if !sitk_build_dir.exists() { + println!("cargo::warning=Simple ITK; this will take a long time..."); + Config::new(sitk_dir.join("SuperBuild")) + .out_dir(&sitk_dir) + .no_build_target(true) + .define("BUILD_TESTING", "OFF") + .define("WRAP_CSHARP", "OFF") + .define("WRAP_JAVA", "OFF") + .define("WRAP_LUA", "OFF") + .define("WRAP_R", "OFF") + .define("WRAP_RUBY", "OFF") + .define("WRAP_TCL", "OFF") + .define("WRAP_PYTHON", "OFF") + .define("WRAP_DEFAULT", "OFF") + .define("SimpleITK_USE_ELASTIX", "ON") + .build(); + } + // println!("cargo::rustc-env=CMAKE_INSTALL_PREFIX=/home/wim/code/rust/sitk-sys/cpp"); + println!( + "cargo::rustc-env=CMAKE_INSTALL_PREFIX={}", + out_dir.display() + ); + let path = Config::new("cpp") + .very_verbose(true) + .define("Elastix_DIR", sitk_build_dir.join("Elastix-build")) + .define("ITK_DIR", sitk_build_dir.join("ITK-build")) + .define("SimpleITK_DIR", sitk_build_dir.join("SimpleITK-build")) + .define("CMAKE_INSTALL_PREFIX", out_dir) + .build(); + println!("cargo::rustc-link-arg=-Wl,-rpath,{}", path.display()); + println!("cargo::rustc-link-search={}", path.join("build").display()); + println!("cargo::rustc-link-lib=dylib=sitk_adapter"); + println!("cargo::rerun-if-changed=build.rs"); + println!("cargo::rerun-if-changed=cpp/*.cxx"); + } +} diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt new file mode 100644 index 0000000..bf9a83b --- /dev/null +++ b/cpp/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.16.3) + +project(sitk_adapter) + +set(ENV{Elastix_DIR} "../sitk/build/Elastix-build" ) +set(ENV{ITK_DIR} "~/code/c/SimpleITK/build/ITK-build" ) +set(ENV{SimpleITK_DIR} "~/code/c/SimpleITK/build/SimpleITK-build" ) +find_package(SimpleITK) +add_library(sitk_adapter SHARED sitk_adapter.cxx) +target_link_libraries (sitk_adapter ${SimpleITK_LIBRARIES}) +install(TARGETS sitk_adapter DESTINATION .) diff --git a/cpp/sitk_adapter.cxx b/cpp/sitk_adapter.cxx new file mode 100644 index 0000000..50dccf6 --- /dev/null +++ b/cpp/sitk_adapter.cxx @@ -0,0 +1,415 @@ +#include +#include +#include + +namespace sitk = itk::simple; + +using namespace std; + + +template +sitk::Image make_image( + unsigned int width, + unsigned int height, + T* image, + sitk::PixelIDValueEnum id +) { + sitk::Image im(width, height, id); + if (id == sitk::PixelIDValueEnum::sitkUInt8) { + uint8_t* b = im.GetBufferAsUInt8(); + memcpy(b, image, width * height); + } else if (id == sitk::PixelIDValueEnum::sitkInt8) { + int8_t* b = im.GetBufferAsInt8(); + memcpy(b, image, width * height); + } else if (id == sitk::PixelIDValueEnum::sitkUInt16) { + uint16_t* b = im.GetBufferAsUInt16(); + memcpy(b, image, width * height * 2); + } else if (id == sitk::PixelIDValueEnum::sitkInt16) { + int16_t* b = im.GetBufferAsInt16(); + memcpy(b, image, width * height * 2); + } else if (id == sitk::PixelIDValueEnum::sitkUInt32) { + uint32_t* b = im.GetBufferAsUInt32(); + memcpy(b, image, width * height * 4); + } else if (id == sitk::PixelIDValueEnum::sitkInt32) { + int32_t* b = im.GetBufferAsInt32(); + memcpy(b, image, width * height * 4); + } else if (id == sitk::PixelIDValueEnum::sitkUInt64) { + uint64_t* b = im.GetBufferAsUInt64(); + memcpy(b, image, width * height * 8); + } else if (id == sitk::PixelIDValueEnum::sitkInt64) { + int64_t* b = im.GetBufferAsInt64(); + memcpy(b, image, width * height * 8); + } else if (id == sitk::PixelIDValueEnum::sitkFloat32) { + float* b = im.GetBufferAsFloat(); + memcpy(b, image, width * height * 4); + } else if (id == sitk::PixelIDValueEnum::sitkFloat64) { + double* b = im.GetBufferAsDouble(); + memcpy(b, image, width * height * 8); + } + return im; +} + + +sitk::Image +interp( + double* transform, + double* origin, + sitk::Image image, + bool bspline_or_nn +) { + try { + vector matrix = {transform[0], transform[1], transform[2], transform[3]}; + vector translation = {transform[4], transform[5]}; + vector ori = {origin[0], origin[1]}; + sitk::AffineTransform t(matrix, translation, ori); + sitk::InterpolatorEnum interpolator = (bspline_or_nn == false) ? sitk::sitkBSpline : sitk::sitkNearestNeighbor; + image = sitk::Resample(image, t, interpolator); + return image; + } catch (const std::exception &exc) { + cerr << exc.what(); + return image; + } +} + + +extern "C" void +interp_u8( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + uint8_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkUInt8); + im = interp(transform, origin, im, bspline_or_nn); + uint8_t* c = im.GetBufferAsUInt8(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_i8( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + int8_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkInt8); + im = interp(transform, origin, im, bspline_or_nn); + int8_t* c = im.GetBufferAsInt8(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_u16( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + uint16_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkUInt16); + im = interp(transform, origin, im, bspline_or_nn); + uint16_t* c = im.GetBufferAsUInt16(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_i16( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + int16_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkInt16); + im = interp(transform, origin, im, bspline_or_nn); + int16_t* c = im.GetBufferAsInt16(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_u32( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + uint32_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkUInt32); + im = interp(transform, origin, im, bspline_or_nn); + uint32_t* c = im.GetBufferAsUInt32(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_i32( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + int32_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkInt32); + im = interp(transform, origin, im, bspline_or_nn); + int32_t* c = im.GetBufferAsInt32(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_u64( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + uint64_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkUInt64); + im = interp(transform, origin, im, bspline_or_nn); + uint64_t* c = im.GetBufferAsUInt64(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_i64( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + int64_t** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkInt64); + im = interp(transform, origin, im, bspline_or_nn); + int64_t* c = im.GetBufferAsInt64(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_f32( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + float** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkFloat32); + im = interp(transform, origin, im, bspline_or_nn); + float* c = im.GetBufferAsFloat(); + memcpy(*image, c, width * height); +} + +extern "C" void +interp_f64( + unsigned int width, + unsigned int height, + double* transform, + double* origin, + double** image, + bool bspline_or_nn +) { + sitk::Image im = make_image(width, height, *image, sitk::PixelIDValueEnum::sitkFloat64); + im = interp(transform, origin, im, bspline_or_nn); + double* c = im.GetBufferAsDouble(); + memcpy(*image, c, width * height); +} + + +void +reg( + sitk::Image fixed, + sitk::Image moving, + bool t_or_a, + double** transform +) { + try { + string kind = (t_or_a == false) ? "translation" : "affine"; + sitk::ElastixImageFilter tfilter = sitk::ElastixImageFilter(); + tfilter.LogToConsoleOff(); + tfilter.SetFixedImage(fixed); + tfilter.SetMovingImage(moving); + tfilter.SetParameterMap(sitk::GetDefaultParameterMap(kind)); + tfilter.Execute(); + + sitk::ElastixImageFilter::ParameterMapType parameter_map = tfilter.GetTransformParameterMap(0); + for (sitk::ElastixImageFilter::ParameterMapType::iterator parameter = parameter_map.begin(); parameter != parameter_map.end(); ++parameter) { + if (parameter->first == "TransformParameters") { + vector tp = parameter->second; + if (t_or_a == true) { + for (int j = 0; j < tp.size(); j++) { + (*transform)[j] = stod(tp[j]); + } + } else { + (*transform)[0] = 1.0; + (*transform)[1] = 0.0; + (*transform)[2] = 0.0; + (*transform)[3] = 1.0; + for (int j = 0; j < tp.size(); j++) { + (*transform)[j + 4] = stod(tp[j]); + } + } + } + } + } catch (const std::exception &exc) { + cerr << exc.what(); + } +} + + +extern "C" void +register_u8( + unsigned int width, + unsigned int height, + uint8_t* fixed_arr, + uint8_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkUInt8; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_i8( + unsigned int width, + unsigned int height, + int8_t* fixed_arr, + int8_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkInt8; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_u16( + unsigned int width, + unsigned int height, + uint16_t* fixed_arr, + uint16_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkUInt16; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_i16( + unsigned int width, + unsigned int height, + int16_t* fixed_arr, + int16_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkInt16; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_u32( + unsigned int width, + unsigned int height, + uint32_t* fixed_arr, + uint32_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkUInt32; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_i32( + unsigned int width, + unsigned int height, + int32_t* fixed_arr, + int32_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkInt32; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_u64( + unsigned int width, + unsigned int height, + uint64_t* fixed_arr, + uint64_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkUInt64; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_i64( + unsigned int width, + unsigned int height, + int64_t* fixed_arr, + int64_t* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkInt64; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_f32( + unsigned int width, + unsigned int height, + float* fixed_arr, + float* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkFloat32; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} + +extern "C" void +register_f64( + unsigned int width, + unsigned int height, + double* fixed_arr, + double* moving_arr, + bool t_or_a, + double** transform +) { + sitk::PixelIDValueEnum id = sitk::PixelIDValueEnum::sitkFloat64; + sitk::Image fixed = make_image(width, height, fixed_arr, id); + sitk::Image moving = make_image(width, height, moving_arr, id); + reg(fixed, moving, t_or_a, transform); +} \ No newline at end of file diff --git a/interp_test.tif b/interp_test.tif new file mode 100644 index 0000000000000000000000000000000000000000..089d6b30ffeeaad1be1c26b3c302cbd493f7b0da GIT binary patch literal 197358 zcmb5VRahKdv@MFeySuwP1eXRHcM0z9?(Q1g-Q9va9Uyq{;BLVkF8{v!KHZmd>Y={s zuU4;`T~%w$ImZ|+C&vf|2L=WP0}lDM2Lq#PV|_0L1A_u{n}PT%JTi=`My8tetPx&W z{r_z#8m^iyZA(jS^}k!|&u$C|%4s)+`UZJcU|)^gtkZvP>oGs8B67Mnn~bPy{I^** zFEMB;maC>${Wk@M8VEBK^%OM{m6e10uCmj(7_Ops!2upTA;m?YE<~514A>!NY4FX` z_copvIJY(JBtXZ+zTcEQse+6ZGaNDbK#p=<(qy$5 z${V7R3NmZWnMvIf=9dw$pCFTJ`e4>Dvu!hpo)l+_8*P@;V$fjnmH;pA2Ndg!UTpkhsYogtuY} zqh`WZaHdopjhgfVWs@arxvuQ^@wOEu8GJ3>Y?eIars&0(j$Gkm5%4A~+!OFun6(5w zb{Ny&m78KOFMI@IJ#>6ytqKOFOcXPTK8Dj}=`&_*mrR0iBO}HsN8Bl!KlA2odE!iH zMCTB@>VEGqQ3|!67}hb5Y^P_~aa8Rmi@p*3B!>IQp^YtT+!Y^9?lo$;)~cG+tzC+C zGptf)BCokb$^}`d?A^<5d_G)pdA9K}3vaa`Y;zMbKSY3b>VMd9xc;%GP43|UDS$f+ zZZ@}*Sg~XOT)SL>kv zcIo9c0$Mqu8x3y^!Oazru_5An=jv4F@Hs?v5Gc0Wf#o~6uCk<8NpcYDvEZFULqb$B z-4cFZe@iq`R><6nz_h9d)6k+xAh|JXC73sRo5+O`KSTce)D_uv zE{ctRO1nDwD}09dk${h_kneGDI`=Bj7UNrffOVEWooY9m(HB4K0W*OD#XxI`8P8d< z7_Ze$2X6fH1DiTsQ>FyX&@uw@bOp-32Wdy`q0rV$rlPwN<&$__IHCghhZvI%jv! zk4jjobTe(aTSLBHSo`Sf+`2mF2PRFL3~BV-5UF!^oq2tv&v4pCFJ{l=aHuVE5UHC3 zIy5JN_C0rL4dP+qJIrtQ0X_>6?WyTN?)6#^;PZ39VDT>mj;>+byq8~;Tc7JxTdCKO zUgp0bI}ab!;gArn$k0C1S2q)$Zfi9_VSxB2%ZiIf|6;IUF_(6k2Z#Z1sl%|N^p9pK zJ#owuArkqCIh-jkh`@nY9E3cJa-cst*GRZPnPwdZX2oULkr!;JIL2DmUVg|8hrwzx zAaJ!73;~IsB2KWuOf=DM_6V|i;I=5ym1%!Zuob7uj9@47dYpBVmyM50{1bzMCBz#_ zin76^%gi{Hjx<(kFCiCT{pKTV(lRk*wHRyzG9>+DQm0V%L%x0Cn(PDhBZ&H!5jGrM zxOh(`ZWc#ifh0-vPaxOjI6cYRy;q;xj6cPqPO%|L z5k)jQqFpKCR?UK~X#RZ6_->VPM{=bK#2LO+;Y9`4A+Vd(*fv1A{zN|IHN1sO{P-4d zTyMPe$>-Y+TEWf^b@i_|tZQRKs4l|juH@IrgF=pDtieS*`mo&KMGC90B~mtD3rEV) zVt^^&hZ!cgabZDGy>~(F1=I)Dtkor)`kyfZ_CHERb1EadcP7M*Ro2I)!Hi~Uz1cMS zcIx-b3(1J=Rj2oEFz{5WMM(>y2wI-&p@SwG%k-E(PKn|DZ(1 z#AVVzFlQJw>4Gt8rQ@fK<>QdanX~K4B_ttY?Fx3FFQP^W9^6rd*v>Zp@v`sQwpO>y zp+WOb!SctZPQ6kM6y|~q;y2k=Ug(Um{+2rJBmx#TyZhJ(c8E{>o%jtry3n^=iQd~{ z)IMk0NocXsb+=vXEUg*c=eu7cy3b(4KKQ)0!eI!Ha~Eg$x9`7tVFLX7zOx;{axR{y zWAV$hX4$o4h9qUhFSjX|rp0*FB+JcEfh6*sVL}J(kn(_s&mY$wg50QHr72I^ZSd3y zR?V3T5!x^kHt}^!2<{wnPG0$)W3HTdb%E&Q@1Pt(17OE1wB^1pXB6T)P3)i%n`vAd zfn1(K8D=ak(HTEcGM_KDipO?1bXMQ>juZbTil?Ro-(L%MZ3HQCxq|O&D2=su(oZSz zm2)>!b;7(3yt%;fy?eiYBaytz9}Ixf6nSY>+cqN`;@KaJ5eQ~bHx`Yn4t$#l%V*C4 zW31e;mL(v4=K0g|F74VsOe-c$+K<0+rQ$VfR$Y2tk8Yp+d}D6^Y5I1lQmdYnLfEFC znJUrQe?3Ys5rGhq?+weZ*DlR?3gH4-fYN!n`xuZ}GyX;SFhbA2qqA$TpBvMfCDRtI zC1+*~O}fpFC_lxypSo8a+Okov4#e{ms2Ai8Qi89s(q547cAUC!9UR~YecOQL7*$-8 zT?%qj|DyX16FU|TT!ikiJ56D`c0uX_U51T#zbmC7ev8Z~{X0T@7!%wC`f&-2e#|cV z^qMrUbHZNu1q}0i+cuPh^zAL2ycvzTof;KS2Uel4DA3d#SkRdA%M({p_AOJcn1@d%um*n!`$KeD&WYk)(o}ggVv1sk&E*4Z1^9|QxU_vC z<}Y=QywWFje@f$XkG?{bd2K3+bdeXjU+_eaU1IOBzFqn(T8z@%;wHU|ydqv7Xczen z2KE%5?r?PT)TyOWTb-<)C8I_S%ZxHeP8u9}%C_j=wgc#*KcF##q@O9KtvM0;WpM5Z zR~A++n(+{|6=X`sRpSeR<@59hr$d!+=xJM?Y>ys^l62mEoMArzrKt8W8AinM(zhig z2U}#5U(sp$&AzH8q(C|D%!aL;=nK@W(5tO2_^Aa=vKfc9JePN|SXp!cX|&JVPZ$D4 z^=Az3lr6Dj^x{2qfP4*%VTm?5Bo0-PPYb=7v2ChZ3bmR@Tk+f6$(&SiYpHb6a%h?` zJZ~Ybhg8uUIyj=^l$hROon81Whk$U7bYLaIRCUL{vqkPhK<)FwkJZCJejln%FJ+t zJ%;qJC(f>S3DpGeUf<8oB*h7kT{9+BW>oDD9@tLuqQZG`79aLauTrhT`~?cZ&x~zQ zLAR<^Q+7%YHUU4(vW+30+(G4I68o^nkOJE_XRB2%n?D)7n-ht(u))@M37tw(LeW#a zv{4JnRxL=x-*h(e9pPiCU7DBxrP&OQXcq(R+W$TE@fnRnh=h3P+WcCy5zyyp@`wbj-V`8tTp;esVnDYVl}Xb-3wBGpi$WLV3_A%%A9_xDml zMwL8W@*V`^=BF{4m(g|Ywt>F1YX4(XrkVv5jCV}U?96;{sMHYx7wM$#VQEqglScZX z>Me}>SJck7j3ZrB@{I&gn5FfXx#IQ4Ux&E@Zy{-Q9g(YuS=o7uyY|~MfZHX7J<<+K z_`XWff)aJy@?GDdeO%grHo%$kebJ8whA+HQETRrrbQs%$g_XBh)Q)0~Ora|4& zS~b*rePpR(Nl_EAOI$w$|EjC{wyd3{nV7e5r!BKrLfekUbQua0J58y%6V6vRuB(5V zuxeS;W0^L2__wLnX)@tX(^G{6cFpi)t5WEp^?D7rbBir?&U`Y?-hKEtZl6t>)T@)ztj(y>33S5Qwvs5IV3;sk z4<5cJjt`Gf8PugSj0#jcXHVX%Sq_yT%u40rnm2s^WkV(90}WbZ{&9xQxMMsr3yt-Z z(4LZqU!*{-3UUJsIy7oBYEDw;kUVBtaYQPKd0m8PR4rD8sn)48EX6>Z79kEDN8yVn z6aD>0ZB?aOnJPE>tI1~$)cpQ&C+-l?Agx-7Y2%&-zH<0HhUK4Um$Op#l`v>lX4~cG zsOeNo+;wfu#p5fr>(TFW-3X%qT)L_pRho4KXGr*P(mp<%2IXI2h}ZRXIBKbs#w$8F zGh?5cF=PQLS@h?})n9<-zlUnu2>7!A$G3@;$S@P)`_EwaqI+1E5lfby@R9760XzW@E!{|^7( zlm9c*|2yvg;_&N&|Be1{-v2J~fATS^w=?Xq| z@YfC#>u_7EU)3VJM|mZtr`fzEPu}mtX04YQ90CFbGU+0Jj*PymPi4DVsNW+*Gsy}? z`98!8UKPTQ4+L^WfbxYXJLwu>@1Ox?jNf~1-cw>IyWeE+M#26$5+HDa{}iCductQ z1kWHxR1K;`Cb1x8Z%HJjid*T3IE=K_Kh@l}oDNOruf4K8j<)w<@Y3Ik9`j$@@R`H3 z5Zo!!6)JKXWjGg~NAr|!Wc%tQk^nvyu=BKcFbA;H{7`>v($UQ@4PJViwBH8%5a782 zDcgaBCY4`{;Oi~Ev99|hIlu7gtIUqFV@UPm$X25ehelN3CWuFe$bpRO(6ZG)gfjn- z{|2J;G)=CA4c#Dgu%B{V7A)o~8kJV2orfQdne#K&G{F;BCC+BQwg;LNmBCmJOtv=O@?aSYTbiwuT8HBE-kCJtvf+D&^5|F6QA+f zEX{&nYFAuOkyjA++q>_Z=9OR+41OcZE+ku)l66kav`Le$1D}Ej zxMh=3jfQ}f3W<*xRmu5`u65>QPw+QVN12l8FGx9Atj^YB(n78c6oh~I ze5_~a^rB${id?&yq#Z2Xev7@(va68RH9O~!8^B*&%}BiN!$GZQb~~6PvVXH49!H$D zbLAY7-~egt<2S}vXTiQ;#AZ#oAMeS%b{;N}Zdgm4No0IBm^gU=An4GoCb;o22WZ5sa4BC$2(p>dKsDo?zb9;q75S_F^#M`;&CV$26dDV* zwsb7=gu$)+(KKhlp<@f>&XKNQMAr_ThjcD-ao{tW(vy(VIXrE}i=QpM?a$mk!B(bT zwMZC(n2NzTfU12(Cx*uP425rYBL_fqjj88_!o;gyp>@l~PW+A)IoyQE36;{5YyZ`~ z=rXASj<)v3PVTsTI2xe zpsYv~TI*H>9^vm-xZ!Zc)>sJs;6I@I^Ejfu4p|0oFS(HqB36XY2l462+OEM_72Eklp*vfbM@ubcOFw)v^t;0fR zq~7^djI2{{wI<1ys93|{_9$U7d2Hf^VB8>@W%91s@#Gv>wL72Re{}#asJKRKxe;H` zT$jTwV-8EpQkK2vaLzVfG`WN{{>_eukflRy5X1aOrlax=0Gkt#;MA3F@&BW7v z&0)mgTE7TV=V%J}XE6hN2hP6xjA4QI_U==tGvFlW(W&ncX$odx4xv%L^?87u!rFk2C<1?K? zFq5MoeG5)A%*EEJc5-L3UM(o$q@b*#BtD)UK5~gyRvmwR;wGFAV;*sM^ZlhiZR$Rx z-#QC711k-Ui=BmA=mOW{7kWZ=m=p?%ZXMj&66np}0;5XE`@yV6gXFhGH@METi&D2v z&Qj+23=6o4AM+vzDyK;(TK>~+fzsC=5pl$Pfm&|#!9&pS--sL_`twuX0t+ryf`}wh z*0?6lD+rzdYz2;7dQRmnt4+biCAIQX<`^)ua69351P&`z#S8YqVXcA;sJfUscm8sF(SW|gV3=>gS&LJc4-jI7}v}o7cSFlI{kzVz$9NfCL9^Ll| zDqLhRV=xjD!U=9s%0UFIQ?n|I6i_iZbiyuCqdN^ezSuKS11)F#B0b?lMr?3z_ddep zsNCsN$)xNWB=?&Y3q~wBr)B`0RYztG%L>I|I1x?>-SdP?k=+mQPz{!=#b}vREt}n5 zatM8xkl^GlF?Dfiq&42OMu6hkl{n7BXn_FO(1C)PN5WW% z!fqMY>7PnBy!=c0=SvK2cjVWZ+^=N2p*-+7n51*yNvR8EN#n22Llo=b+1xmZ0K$s9 z(nBGZN9``q96b3b62G#QT9B+DtUy$dM}UQimq(n=ib;ds6*$yCcanHL13V}U<31yi zbbqW#eMfr_p8E22{w!st#yU%AtE};8xGAF@$*u#d=g;rAjvcShPse%=YF&h$eV--Y z7WbR^<4qQaOT;7MNu`{&!NDa0&gqKkBp^)}egv&T;p-v4j-)9MLPUq%bcTN0zIsIb zd;0hDop|HKUEUyNLvYW>lOa!^^RK(K7xOL{mQ{D$un6EPx&h8Gk3|k<=%Xc=DDjnj zl~uz64oze{2@DGZx{`bZG7|Bk9c7L4oGerdr2t*u#ZFWXb$VO1>JN!f@oH(a-LyX$ z8XOXgmmDOfx1 z!=r1RS&J&zogtPH)QYOhDapkRVhXY0Uk6M?~#Nm!YO5wijzsa zX0r%-%le!jfk&uHir$jKc__{g5PR|&hEP?dNy0Hr3?OsB37zxn1X8EENiXQc+oNw1 z@1OI;gm#CV@uR`DF1d8iAlZSr;kTp{`-@ckIsb(alTVm~MsbG+9!{pb4Sj)C3uX!z zotKMtfzgVHh~3H*miw6kviq52OyA`zl%J?DmBFFuhCWf2jV(al)S^~8V(UJ)&Rv$T z)~8vGz6f$t9d#N_;yb&lpe$ijvTv^g{@mteA6MJ1o3j(ZXHq0tHn*x)I$ngSd(WPc z=3s!MFs71_)dT0h+YU*}8sp@s#Q^X|@T5Rm%NV(6y~ zJc;3hNx&d)Rod217fSejc79`2n_e9@6jm?Srv?_Pi+iI|eJdaTmhk!ZZnpYGNw#4S zjSz+n;d{Vka%khSE;I7fG{T(}H4TlyGq=LC4JYC=lG*HyAdzoFK^Z&YP31rDJnlQ< z6GEhr_I*L*ZPEPeB2}X7LCTtR$v-ITL1^V?UvZ)rKR%As;S5kUo{({X>y~RQPD1ia zQnWtoiR3Xz$b#2J3Fcd2J5_gB`Lw=c_gELz0W2>ITzF$JTF{-BC`5u$516bZ zQck=$^1$CFcsrvcWtzc1c#XiK{v$};F76*=`G?Rx&^B}8-Na^5@Z519(4HqK(eBF| zUsP6VRjCbh$5Df-|FEl&5(0Yy%Mj6a1|hFP2(JZB?1@jG?@RGHabbvikxR;DQN$0z zJalT^^J8Z)5|>;jatJ8|Vg@!IR5(}LBx~4Fx@XgD*z`4&2M_)YWZ1V~`sO#*xVp#? zlTV9J*sNf*e)SQe|?OrEvfz^I*bYahdTFt}0qi2hoMzhx97!Gw-l zwB^)4BA!a_CCehM*zHl%R8W`8z!9`+d0h|1Vu^)C#hfQKx==t34=>rQ>t%1rT#gZ& zsv_P!`|#$}MJhyR9KFvxS#~n>(fDXSP4Ok;I1)_@@0Lo!@6~;Y#RU0#kUVodqh~)H zegz5SFloAS4jc0C$SLzp#g6C0r~j@DBOdTz&$bqYBNmz!6O>+ul}6&^;$F1o2Jz~( z>FQ0!VPyZv$|1p%{wB_Rjx;)T zT-&%C$5PR?NUtFE0swLaL;tV=+)GV4IE*U>6913D>fe;BNw0u&b zY~jpq`iJPsmuy@s_Q8um_TaKp{~l+995L({1?gjsIi41C5i)t=&Z%?$Cj{~SbVC%T zb)sa{grku77l5_l5fNcv<5q-Cq!wi2iDo0s6JMK-GnMy4wmfwj;p)7DJ+1Y7=P6F+ zN-GN#M6h7oWMVoL59JCq6d7Xt7gUsEk^UVnMZ~HG+`SMS7z9b=kgTkqD0^8oubk7h zU^h_kCI8wd4jnYJ#QJ8~aSQHh(_NR7d{@%A?Cr%Y2BU4;);#*}C$M}u?qTu=SU4ZL zqj?fg&WV)`Iv+9&;E^aXsFSfgCk279lJb4u2jGBsX0 z+VA_#w$jQvSSmQ7$8R2>d2}oSlZ0_SZtNI^>cvn9JireI7RHyGMfxI!7`YqSk(~hb zFlEk$AK5EZ9N*CX$IuE_(UQ$vwm@n-AwGGLDo2AGINAg|q}+7cDTS0HnRbMsn&HIt z-kwi$Y~9%f^GNKd)1-qChg!adekQ8o+s$MQ5XKidk8^7#xNkF_CUmFaN9=(>wfcW@ z^U%p6KCyD+IGoo*AgKx6#&xHLRSZFZ513%Lq#xKLF%pLTb|h94O1Rke4DI=|AMacg zU@tTkeX?0|(jz#7Y{&6P?LT&jo=80$w-|%SDEJ>~^4Oc*!@Xah1a+hg=LuiYTbY3i8EqWt-phVYuYiQ>mV(8iP94-EqCignLAkO*t?h0+W zX?ddQCKz~>fY8;kMrPMM39_x{3(OYd19lu6_YS5W^}Qo(aJUGg}|l}wn2w;x^W zhnQ}@c5(8)baoENtY=jo0SY-q`8V66@C3+Ayi8iXv0+Lnib*$5iqWgB++R}|y; zIRFpOJ>Xk`6C8{h$Uj8}CRpU}4Cp?VKmW)M!%WC~4;T;Q%Q6s@yX}2j z^CfGjHW1sW~89b-9|13!9p0ZtDm1sufcgw;Q=) zNs;)bVA?(OLY-oDu7gMZ@KOI>s~op;ns9XI`uy7qpYJBg$B=`zvV`vr#`AuIkb ziSMfj>uQPpzHWt1T(bOHf7El6x$l}-&l`~V6A?;N~mMo5@_o9US< zET-AM@+K_VlkkwDIfx zu6g}BtaENOz@UsAXXPObB3TNTGNjQ zzmy~UV^OV90*TOMvX6ZcCeh2z`#vsMX*P zhmu(y2N<=cn0lNVYS&~kK?C}X>ZnOLFxC? zcM)6Q)ERf2k2Jh1?~yk9!;3jbks03?gSvO}k8WO@B1=HmWPeRw7?m_tk5^|~l+44Zl(L_KK8r#N2$PjrwZq~jHzf=-D4r6Q0Gzl{P zHgd^schE3VrFDmB7|F4tYK55hm##ZM5hq=<=^|vfavSU`xi{zeCkaT7ZU*sf+4#3+ z&a@4WegbYQ{-HDp9iy4QcoafJt8492j@FkXOp|K!;JYg+1r<9skVDe2B2AG#d!kt; zNhm`&DbXOEv*fT%41AusExpNThXb$U6NRIgvia=J8Pu;!`ybw(vRVVtqh-}WfF1GT zra2<2VB-w_whc-C?@3+25*=_G4E@&gOxQX=v|XyV^P^(DJquZV|40Tl$^T3*%Q>7L zGfvWT_$16RQ*xl+B~~mSm9EF%qZU8{jnEfuH$Bq{n@ks+^`$S*fh{E}QG7)H3$N#( z&($;Z8L-%~+xq558{VW@l?uD&LbvgTQ^xSKvv( z!xqPg_wh`SZ#Z#xi)g+mxgC8chG|#gWX88inI2d1c`>kushh!o;J)cjCIBN|zAAMb z#g0Ng0`0=fZfpx_IrKrad{<}_by7mD_*?l5K>;*IaY}4^aFZsT+DRCJ^GSkt))CLc zMRxiQ+wtvz61Q4}JwP2w82=G>dDV)#mWC1US*DYSzr^pZVwy6^;=2jq5BAwO=Q?0H zW;J$+;Y=X=)U6pQt!E=G!1U$YBuiz`m0Pd%6fh^gPTZb++OSR&JiV|vlc-udP=Ip< zCDNsgkxH{X1^!^kXV8Q#bLz(=b(LoA9V}z2xeW`{haX$*M$%>%Bcuez?xDP3Xn(7qHM-uRu{k{x@v zOg^@V0t;8+peYkIe2~=f>=s>$O3{TUCtj-rWW;vTR^BS@zd8X@ce%Df0~$vRmP<&m z=>BtYJ2wJPCgz&uD%V@Q-a+2D@3d_&QfkNgnBALF7ihCGF6^d_T^fMQOfIU(0h#dJ zw8BCcqnkK-M05=oa{WYmJ8|nq0(0*8GFrtHy%H3r6Suc$Iawqx;vbMl zxx4pj&4@j8fkv;>tj0Q3*HsbxQ=7-88lyjv_>K6tX33ll5Al_!6{rJsue-o4 z36TVOd^Y+egQUX8^Oy{S(OFjcqoclfvG5TBdDUN@c&dLJ!c!4KF(bxKBNH9pPMbBS zpM;5b={D%JgMepju8waaa^#2+)5RzqwyN)+@*J8s{faua`@%c$u0wmPR%MtB-RVW5 z16Imk|bUq>$S|p`ZDbARwK2ppigOn(WTjPI6xA5MAdD9l% zJ5G|Sz!0HbB7BSO9d-%ZOc7NA%_i_g?&q5PtC3Pwn(ndif$uQ?DiS;PPMkW|FFYm> zoCNm~;Hb2uzsJK<=(_2uf{G9rjV@FT-aFO%38#)@cq)DQ0A;RB% zGlnln(9S<8oUBai{=0i}8GHP$Mm>DwVBC5+Z6rF`?6ZBaTLPO2N3YP~y!m@Z=&{bm zPO@#M0uhYeEaQU7oKl(mgo&0v(o7k#8AfAA-SR*s6_V%fgF?f65H;e>sYX&?(RuZf zvU%+Zu@6JH%h$Ohx=HL||hx5j;yKFYMIXG?pG9M(p=;jxzY z`irTQXhpXg#Ux)6bF7T%oD~;~H-*X*QS%wCJ$|80udDa>kLL`D!;Ird{EG){@+hAbD!bKSU8}+yN!bD;5 zWF$=AA|Th{-2|lK_ghKFNbw#2y{8$^)Iv_t32!cf*wN~T5$MCf!MN05Olkmu(GRL= z)WLY!bAbjLLiRGF5$p&dIm$g$T@w2uwoF9VT)?s1jVzU%p?vX74jDd9*g({buaF^X z)Y(Yh@?!z-2d^H|gKFN_;&HGXRCGd#9=8^Rg$Vs-ffDyyYmG8`C?4qs+r#P57_1I5D1)7ZP8w=GpTL!K%nBj4(0c?-jBp(8Hj zbmsa3-a*=?HWNnlh~bR8$@K&wy!Cgx0Rskjn4oPjv-6b>lT|K`eUb2E2)qBht!X~b zFh;-Ulx>b5*o6(RcyXEw^l<-hub=xsvt@KSW=Y?zLaCp}Wt6wP48aBukm`?^RZSNV zVd18`xq7+ml>xF8XwwjRYJQnLA}GlFRP1dEKKUbt4&_9ZdQ5UteX}kq2-r$AAe|y? z;j-RHoFF+3Q*9FXP=r@0Wy9-P5|~$}`(kFG;(T%^_w1p}8H!XJSI%>wFJ1Tz0R?+c z$mqEEwRCnZ@W1!3qa=f+@Wo=V%O1g}h_r0fK%9AkXigUSxwF}`P*vnK;kdqSx?k7< z9ow{T=g>i<#K;n2uWRNfg@zt~sogIrgaKkTR-OmPRY+<#do69Yys34nlQv>q8#y-U zD}572bPhIUR!ol1RHn~iKB8nvUcj~^o~84>G)d z)QV3qI$TN$lm7MOgu=X$n?~UNiFRlcUnonv2z&-BD1cExHqFO0ck}&p6etliGUq5$ z1wq|vY>zdpz`#JR@xay9hF8wgxXK0K(+2iz)<;^_os|+0xxdIF&59PW8nSc0*ok}2 z?_uI#sIP63SE~!usdj0erALLMWI`t`ix{%~0hH->@NLxL_}2Z+bsBuj=ueZm2%*TopKApwyk?ui3Y!Ioum4mQqK#yWIdPM1+%--i=aHD zO|J%OHx>O<=$NP!LuS@(ouSe>{^TqYr~e})f~K>&Y$c!9e?=JUyBJq?>DIDRo4Tr> zVcqD?W-5;1Q1qom)$l~XA0H=$6^hl09|)A0C`}pEYj#gN$V(crydNx@(bAnuV75TQ z5N>Q79WB%-u_V!IBTJK{(_2+&o@<TdHq-0D^8w&Kbw;p=tygEb~06i!|Q5!{)Cj zw+=ixET`g|hpKr2H=U&3)dZ&{(>989I;oX9e*`6S7tvm|yV#%PF+6taB`_cZINA(p z(?;=0*CYf4g;*G)!sqEhf2Dq7MNI9%XU(#&LQl29L>A}c%KP0Z$3y?RIJtV1cSRya zV?U|>E?J;trT(9%SUVT}I4zqXtu>m=S{)!2^b!$)r(k07=3=_anBJESgM>ie9#=ll z>V5Xo@oUqQPfwAWw?zkUkTAGlEB>|VvxrJWYQrgxAPU+SoRzV5#{81!g;7uS-%g@= z14P@GdrpDj%qhYeIfLyQVkA^Vt4<;CdqSZ*gm?D_3#|1TP1GxP3*8}KeJt&4J%1N^ zgt&j13qFiZXpM5^!bupQLfvM`XER_@Op=e=^5RSJG}O`6HJpkIed7Bmkil-WHj5Ne zhfcib`Ij0)-o>w=I4Df;NM1}pk0*)aL9=LV7adg6N%wB<7WPZPE`& zxH7FTEsA4Ft4t&Y{RWf9sL~C{@HGS;UD4{^wobE7>!LIF#x;!sOqqn0Wz8~$9AACg z2!B8$D{e54L@`2=_-S_q1}iL%X~aHNFP`R}IWTG^O~0QqW&}Indx`MwXNLs!FH>SR zqw;VWOWAQSL3V0@p`Vf60B-moSwpsOmu~rdw7K8K4_;zc)Z#x?%>t*qJ2RRh}7XTgabh#kVVO}A+ak1G+^%xUNm z8cgYk^Vi=dlUkm^U~oz{5YH-W8KWviz#asd*k#Yxj~|MvlkI`>wJ1;)lIra^ZXG>G6J1Os6gR`Yr-S}HJp!j+R}H5GGo?0a6eQi7vZy2 zm_?-IDKBzv{U7E_oN5zIXX)F-3BOH+69m2_xf|GQYMw}g7U2kv%-We0B~1+zHvGNq z^`Jq}U*8jyNWXqa>-%^=7upX^O)8KHb&6$6QJ`?;wPh{-&!97o3A}ijl76?8C5y&H z+b>&;c%CY43;5KhCC}0p_B{}($O_H+f?Rf@9X5}EH6yLUlG>V(5WRN9WR$nw#yM0Mp*Pa1Vt!bKBm9%oJ0}6UJ zQ+JNzGPh0SSV}cYLNG^h1?;;(;ijHt$%T^ujyTE8^6h)XE@m;1=>}BFSveir{8lha z59E&t|7k_?_#QQ~gMj?vBV3$RfOB-EMyjwH#PYX!tFb4CnZsL2LLLGZ5IB4D4IeaPeO66I5M%9wFv z?R)PhZ>8&EZ;&KvNg&^7yiS$>VdPOsr*S6HNd-YUONWJSH9Xar39(rmUZh9r`^TDnB1 zUY^%SOOYb_U*74_$~_zGhEYRSgK^px9oHveeL3fr=b87iFl!e2^aBr};$)dkh3nV8 z#|#B{y!g=_2e{mVYBZ;Xt8}1c%c>bix^VxOW%`5H&MK|y>^)+A54qhU&vbO1B%cp# zrF{M1r}I{OQWXpR2`)3AkQA2-S&?)M5jpia4!v->7%A)Wsnp-6g+X0LwP6-VDRtCE+gDY4Zm{9TF3FkGKhQR(r2(cWT9JHM{B3|S%lT4(9t z`SS3>Vwcd-g$J3fcvBYL2OgsZ(QaOd-ahENcC#tZX(sXW!mL4k2ABokvJ@C(j8v*b z@)QpPH)2_8&8=P<0}tKwpecZZRl_@O!o5E^i&%N=DX2^dTXm3lZX=~!!iEG{A9`F) z(oDL@=cx@{yy(E<2^Kq_a?$E{jy_%e{6w}{WldKnMdN)oJon5P;B{)TYj8{le~4CI zLq7(#;IYHh+?RTSJoS36a#ko|c6GDl%P~i3Y+Y_3(>Xieiw)BDy$`e{wGjMyaz2|M z6=kdGPJcSIis`7?PJO3M%E)&>z^A^9n9Pf&jzi(=&~So?3YUS^L5XbX;xBRPy&^}a zMJc<115;y^dm33ggyy1EMh_W*oHb)!Q14q{#F2zWdNruemI)j)!A9Q9 zp&v17#GQu81szO@53nj*rN^R1`z2CbW3TCJnj^V)nGuj+GVm`zMWxD86%d(>E1SDH z3D~3Ee6sx}p=hsq2k$GA){+e{nuBod$U&wxyrKJevxzPsDOb!zdVu&TRoH>p^uW$R zHu_aKIaHR*#Mv%N+j^jMLyw+IOtqeFbe!kc+XY_%oe!#q48{7blD9lI+f<8yWm*?+ z&^fL~XeK_aYa164JR1rf!bt+Z8zz*)cHPMz*$lFC($aFt=?qsmpCj`zHtS{AVrhmRYX*0V1WI%8*P)vsBkt5lG5zw}~APpAAuK&Xwfa*@5 zVWIkK6fk+p3~e+)t@?+daRu%aA=t(Gcm&IbKUcsOxFexzYWF$2i|6Tu$)VWoeK53n=}c_7bsJ>&JD%ok|p=6Mh+QYmAEI& zVEh3(#y1S@wiSjrMktwttq$5O3la!6FM4h6tU(TN4{dg^wi4*`=+4 zbZ^P9!yony7-W?%31yCqreaI=TNRQF`2K~Kge)m(vkFj+9ImM8O72x*2J! z-4x>T``{@f00It4(H4A?+^7 z;aa731)0q8iO_vFpyqWp_-`Dk9&O)|6)7W*6x#A4d#60FfF*{=;AY`>Xp=EM)UiX|Mt5tJwnmVa{(yA+(ba}H_-oa=T6_ib0iI5|{n;&u*=n z&bVN4cW5<|abTTgFmgMTj(4u=zRjXl3Li&YS^B$`E~c0+u9yyPh%8AJf#c*KI3{k; zfB&A3fQoj(k$u4e6QsjNBge)>iw}n|X2U~*5g$~hLqmuZ4^}2a3R5AIp2I@i+dv%v z`!FIBGC$AvJApmEc>D%C`pu*4)VfFP?5YPds0ZwTfjj~{$oLYe^EjU6@=!^u5<<+d zNs@_+di&2SRren9>xto#?RRG*h_Ulr%$ub4AQLU*&OtB?6>xpLtl*+tEc~{FA!I2n z5O{D8ri&W)kML3)a`N_p?Y`LXEr5{T4P`+dyigPBgP{Uo6m~3<*%kasnvRH=#Y#@I-)pG;@`Q`-IRa@rc$|9{V-y3f7z&Bm4PrLn($;h`<~C)_lQNR`h#`+!p-R1*bSv_G>l z&Uz63%Ma1p@AIECC-}Rdti2F`ItX6>ok~+1_gWP$NkcSU4N&gQ3%|J50 z`e5Uw8z2eUhi2XD1=~;4@UOfT)D{Mh=hk;LI1Zjgi ziVly0bq{7K2F4l(%=LS~)XoUv-3R}-KK<&O8uC2y$cUUspsI=Ghoi;H0Edxt|1N=m zw?B1T1MZr*D{l1CeD-_guKrEVK?4SCYLk1L_S=X7UWn$0hS6pPh$8k!Muotcx>BH; zWn%PgObClWrv~WD@vU(A;u#`4N89{XX@WHy4D3;X!;l^hAo!{lpb&*M8xn>9DhI;G zA4rkWlI%7WVa#Q|!+`ntyfgn)AH$wmT@XzNK>x>I%u8?2G5|IaWYBcVGepmMV&X`U z>U}FphJr+y1n6tX0VS(_A~!pXu3`mlfQjQP`Vaa+5sg7bh~l|W|y@LfIW2&;7G3u z;7>6!fq*JU7$8ujhc2|kJZl(`;~wJ3$_ErnPXHV9<}L~N2bTbpiO_e*^a1qWpA06z zU%5fcyS|}blQ|fI+irjWpssi!KK2M1!HKN19zpFYL87hGsH1K4es{oovBa6-0%LgOosMxu)(DFBWPJZJ*8$lp83 z-N?}E9W@XuJX+z*a={LyW%&DGAwUj%{RX-BjY@jJHEslE{efH zalpm<#6vWE_3}o5JGqNr5D7rVAs|JcaiGz3l_{|;)N@g&a9wD!+a zJ_7FI{PAFp@BmBz7#KiDNWKL?yAi-g!1ux8M^f=;n*dijPOxZWYXj=*bA6;65LUVv z0CY3k$1nuc91tfoMcoB3E2FxP=K!U*vwm(#b3ToTel^Q5I9BPnK0Qqp109ZRQZ=wl9 zU>TrzLBAKR#+Ww)WD#0G!Y4vtI=d1Oz+zuzYUDRV;!RZm@}3IJwa6b-*bcp2Fy^94 zECd!FiN)Rf3&7fX_fR23d}d(|+}p_jvA7u!qmsomTLbRq+b?Q92F7M5G~BBN;myl0!yhVx=Q7HDFZM@ z0@yqhU>yL8uskCOlnvdEb$(q)E#R`gbr4?Vx(>9rP9_&1_YxZ_3;{n|C|El11(5$Y zWubek$NZ`wdDa*1lGJqcH@=*zvlm1891;s0c-`s(bNwKUC2T8t5-=ya4WmP{5E(q# z8K}rb{}crhC|kWZ#PDyh`K0T_BdRL=qEzZ=f;<>H;_Gl3vIB5_@NWekkr2S^k!48f zXn}AWow1k$S{haYy#R?ONX(UAL>GS@A-_*ln2%M+^;U|PgaZ8Y&-G1g3~2uxRR{qH z7|0c1U$$^HphoaIMic6Do4|35eM~^oKY`c*!xVcZO@FT^0D>T$usFxXk-vc90Df9# zU@Cb?T};TMzavqxZ5~J^5Gkxca0kf+83{=LEU5WKnA9cR|4wwH1rfb+=Uay>w3c&@ zVwnK;x$;LgJ*Xm6N+|SL5uqk05bm4-#u3lr@24!D>=goe5p@L4;`r~v6Iw>q9{U5~sm*&c10~pfuI7D}45&{8SNWfh{ ze>wMOHNk8I1T`SAIX~u44~Ryr zugHM8T*bP8^zM~?FOdZ#UNfJtzX!aZ&V#i8^qB?h&Tm_S9aDg#0|-0-@`4NqF9-yRPLSc0Bje0ev?b_b%pIViVd@Hy_5c`h zz>)#p11RhJ(SiDjp#V|@fQ~^g`b?0adDGbm<~^;E(eFtB!V?OMW_aIc7#(&_$Hr8C z*8xTWv?cQCFQWxWGytY!xtMDbTn6Nz=!XCe9~eO{jEL0$I-r?97@GhRbPWJK*{qYN zRmvcOTpZvxCm>z`bA(V+!e#&xX&j_^w5m`)!9H-n*EN@uf;3+^C0sFO;8A@*ISlw~ zb^zSP4I;E+M(6Gam~jYX6bM-YkBorPwV8_xfHDD;fmV_LP1sl*wgouZzhFE1{TcvB zpvnLqNq`9oAesFuR;L}9E{VveTi{m&K8|*Y&KJOS|DBvboPcU_0Yhd$tTccD3gEf^ z$Cr<`ykZLn=(QWD3n;J8xGh+zA=bseko> z2M2TxlDdR@bRLpF1Nsht;VK71 zWLAMXWhiC&0+<8l?-S4l__#*_LIEId)BULL3CjVIxahtI4h@B%@NM!1p9R=Y?m|cq zl6X~dfv`d=rX(Zw9pJOMfX9#yT+a70J`583@Ue9O1LC!QA*yJU!9jqlxIA?KW<@9Ml8C7~vlga3BCM{Q^FIUnrPN@Iwy*a{`&v4FDbkTxJI3 zMv)mY?*!-rbdmra zAx5t>DQE9rBchwU$<7f8fEfey*8hnR09O&V0zzWkO)4b-$k-A(e565)kDx9LaRR1I z%M{WoOZkLxp8@Z2Qpx)90Ag46ZAVE$i)I%X5BR2c$4C&MLn{YN3k{57mOiT#ND#0! z-)#iOQMuACbzuFE;Hx6cu`&R=!CwMM?+|r~^#3KHp+w3l zPyPQSfN_AsmVg%p5XxAP=x)j)AvB4MC$~X915}|?BxPoS&jjWa1g^3J zMpk@i|2YCD1h`ze$!a6N2Qc7ECBWkyHuU{p5Rv%}_)O1oxtoGv7<%eebsatMmXNp& zoeY>0ph=4F5=_(hEc)?O0`&BHv{6P03B{+V5PY|kmjQYc$*cXl=+EGZh#s7tiqK- z4gWi*lDC8gxULxDqS-NkW&?yU0HKKZP=m-}DNi&Y=3+xD!^aFV3J4l!WDNe0)ISUX z5P@A}R0Xa964Neti|l+q<)1X4$wG!5@4rZFwf=6>mZUUOFs-noHd*gz;v8SVEa8z$)&7<~;^Q4FY;@Bzy}$iDo5W96(k6 z;aCg-Ca3!Z0S5~i0IoudWMTkm0jn|PdQW%er69l=eLKiS77^e&>FJZ;5N8e01bD3f z;OAj(Gxvj6FyAy_9Fn5~n7tM4%(4F}ur7oJU*fKyi}-70`ey(@uF?w=>dXR)0yTx@ zVF(1%3)1Qf^c_Yah0`e;DKkfT=DUgij)tXF0DFUdEdUx5NDNH?E2#-Qv!w+R1!T~F zHwQq0#$q;S)j&nyHO&cUJAX5AIt4K1%Ht&H1p;>j1GXg*CIq)&A?UvW0E^;FB8^2v zfG>8+_1UpaM+rETW(Qma97WLcQ$D9PuwHcw8sZ!t2517%MgPJAi|o=xu$hL`0bTr0 zfd8PQ3Gfx5w;G9Ro@b%UY=vt1BLX!d00l%V3_~aPK}-P_;4Cn2g084Z0k8x3P=E^{ zPaK8J&w$<&35~23;D*o>P>g?Z+nWV|Nq@kT4Up6U@~l#V0Og8PNoU% zWdVq|;T%!GYmQs66WKHX5IrZr_%+!Qe%CRMyV2TAlpTpc=T&-y0PzCob{AWGC;-@d zjin(KaZn4&uFQmePJ#NtfTD3gRJ~|8`vI>#=>wpmO<1rciUXMgzz`tV0v8LIiE4t~ zw$&gwrw}WFOO!yVLjai5eFhxy19-Lor}-k14R8s8N%w%=5zsX&SyBV&e)tx^OjZ%t z!P8U@l9N-7<-EesDVCKz#D7829FyC98cVz3w}ocBvy&$w0V)3-U_@mo)b{x)6Ccq`5T+- z$on@S20uVG%>eL`fawDWi~#9#?Rev^wHPS@P6E)1-L+Hjbq44GLjlW}A_J^406hWg zP)Y~@r8xjm&twUZia=ADg6R&h8Mz8G12+UH#DhZNKR`=BrT-5A!2DFq{(#2Ev-DfB zFBG`}Kuq9mz*Q0;xHeAYMgR`UgII|<5zpG{3kyYnfbKa7b|_!48o4Rayz}dZdh16o z4AA9o(FFMAu7cFJJIe8*J`#kJ$q{UeuK?Fn5SSme-BG$^zkeaHXRM=wy1t0$W`dOu z?J#n>nXoDv9dECbjL?|}{g7|{E9(GSM<7q1?}1xLgMp~7YZ zcsu}j&N#lH!~nwVAkZI#tQ~-8`}L`-*l>#ke?ZFx7#ssoH3_(k;&uShdsrl75`9G> z?BOK|W_;v{4eks8mWHzSoG3nV#Q@HP10egKNohbg7XJ_SjSwx<<6#-263_>@#xY`mY+mP}vR|P!Kl_0P}iOR(-x7;sHDX#X864%1}Hg69!}$AhCe{ z0s^|eUy;6ue-(IkE>)5*)cVPAA_uTp0V?(-=>w&Ug8tS(c;Rstgnz#-iqw;xDA zY>_Cf!H|Fp{m(@JcCA%8+Y8*x0V6sA4$BO}Fb+Tw#lOp|$s&!y_f!_ppXF~FYI{KS z2tW-02b&7aUohl0H97}!0F=Zvm+7K;5aKC#Kwqp+!l5(-`Y)IOEuz0m6@X%hfC!-G z;8z;PIYEDGkY@vo_yS}BAU$*6`2uN(z*=d6`zHVe09<*l85z=06aNkYvj{-af~hz_ z5c|K?1@u%}rWs<-XokS1&;kcOK$HM*F+QP?aEmwo28@6$0n_n+s4&V3p#jC`-Y5cV zY#tZKaIY-|3L2_Fq1}^I!*6EBGcrIAA18kYY<~pMTk|X#NO#9<=~)1cp9t_A%mkp9 zeh>ucqP3Lg!~_0>n*@X@1qcf;tz&ly=yV7}0KM@ zFr6UYQMn?guT2NaEWpp+*T=2%>`t-JbeYM0Vrd<1JU? z#cPKMb*L`pp03Y&oam;kyrr7z-KXktviUta-zdLSarFb~v|{BQvNk!jmap%#WhHg4 z-dI0FOnQgVf$Uk=7Xy-5o*86&WbfqYv5(!HPhU z(B6nC$%n@WNYC@n-z6vk19(87zh18a>>SwRK|&ZE zAl}T5I$A8I1B-)5OWYBT#o-aDTsECs)gec)+4oWW!};uis1P;e^(=gTFSKVWfyDuk z6%r9p&km6g&=8{!wA*sH5?lQ3a=qsdLu<8NY-K8y$s`OY_{R>}`kZ#(ULI4=E2N#f zs?BD{-%nYszGh@-q)qD2_cJ=N*emhFOYLT+rMV2bq+clapqRKaY*4YG!GVuI4(vk| zY2-qOaukU~=8^@o>5O8zJ>;r#d5z_M!{<8o5m*crWnsVsdOZswG#%~lT2C2(cp-wl zX1A-%;&6An9s0md_-8zYGLcL1KZI{Otv2YkX^qFKH=Ete;B-*+nZ$x~;G-o7eiOMj zD_>$<1OO8=qs6W-n+%PVQPad#QgY&=!=mB>6LSOtI(7q#-N+UIK~)@yLn4t#b#CWP zPv;ZrOQ}|@R{RBv$>#LB4X5kaF$l5$;mPyldnO>20VaIiYJ~xI6oISNYqr|VW`DKW z>jk|I1IR?x8m(rp)oS(8J&V0!vDq>V|LKG>k;Y=th|Dq? zkx_J#m$%KTF{(~IW@FCDeUSQo#2(E{6w$)M;_?Ck^?~tzJ&aIkPiFpL!$S#4hNJD5 zt=9m1EZ&;ei$~9n2b}X>q)_NY9%C@t(Ng^qSUuaa9GzD0nRx1X7F1bEN;>u(o)$W! zfaG#|{VA?KpVeYOhx76$`KWQ4(0|vPdKniN#{^NC;_zx7!W%mbqF^ES7V_ z(U!e(JDrgb7=w{vTv}XYZtUU`4bP3X$y*b!C9HVhP-3#;17i1Q%qWbD2Pf>m*%i`gQninXf*0~H+ZMXT&`EfPhy>3>y=p4=PG&tF`Cb1EamZaIUFvZ({$ibi{+#fxF*2bUB=@E|ZJ&1ocGVD9enkR;$*ll}g2K!)0WVI3$XJzh3Y6 z!~O8{eB9X7b z91ZJ_!4gR5>(MY*b;4U}^a-6(y?K0&F4qgL=l?W13dn|*)e&30W&x;(J_P%XRG-u3 zL1l3n#scb9FgzH#UaeLG{NX1n2k&=M0=T;1MN-K%`A#$oZV1m`(gdVxBf zTD4d#w)+Dm(Xrzp5NM1(CB0qS%qB*bwUhK(&6Zn=Z)$9MGa~RAniot22&CD17JBOL zs7zm0!YRNWvj;C>CWc0)N7I>SzC{*S?Fyo9SN!(m=S$UQQ%5`OV+M1xVXLcYwF&1M_wWH&ajV3}=uyN$ z!gQ!5C1s_hD%;oaznU4e+f1hl!^4~lnm1^ZQkTtt}vjyt&e zaX>ok1)EhMlg$>`zu#FsRw_t9pVJ_MLL5OMPxgAh;WE$``(p%+`TChr{WNNZ60iLYc^<-2)|^CH<9p&7(jB z*AjQT->`W6_srjIc6v%)E}PHl_fFP7?smOiu)77eI`yMbG}JzR9;f#_o}NNrk(kt8 z>Cd{Ao0YD?Zf;`M41&yf7Ja%~tv1Vv#eNeAu|*x)wKzDk8qXIcig~@9E=z|E8%Rn} zpk_bP7W#5|+5X5fIL}!$`V}{g$1M(K^RkiU*lf13xT-x7KOWUK4&X!no~P5R5g%b9 z-7VMq4Ug+tBjD|{c`P22%V+e8`Q8Z3<#xSa?-u%u@~jw<^}~IBEF&f;rm+}48j;Qr zRO<>T(O04o`;A{v5=w8!8u0FtkjvkVCX407fpR1q5{uiipDC^qn3IWgkQpeok)bYM zJ$K*CM_xnmKl#u}zL7bF(tOvgEEbO!{H(btw!SabHhr^ME!PVUi%Dqup+l{Yh{IyC z`HW7%)|ji+ZoOY`cbgs2oj#q=^b1XBEO<`D6#jfZACSvNBG**Wq_dp;#p^PT3bV;F zk=YYRKDkHUC!$uv^@36p^=LL1s|90P#MzY&CMGTt*UE62!~zHXUo~mWiTrD{n{0NA z6Om8d2V0a0ySdQ;(L^b=oJcg*r(Y=sZ74J-BsntVIN2Mp=QGM&jWabN6uuyLq{fob=RqGkV1v zZ#NQ%Mo})0_gmUI%3?BGul%#=y?{|kadDN9;Oy5q8SF*|j)numZ@au5cjEz-L~(6a zli|Q-HJ%X&BnpQ^;xQTIv|hIw)Wzbl`E7I~Xhn{%S3E?0E|0-oEf$*;HC}_yFQDZY zG?`2$j3+c)j~j_1ruTm;ZSPLU`JHx!tfm-bU+?HDKdpPcApT^KI`15tUTR4~c zjPhjvAr1_I>SnK3jS#biQaht~gfsc*b{dF=jgmm0kBN)dykKC0v|AJp9b6?OC2t!o zv>9AYUIhLv7z__%us8c+YxHixrS?rKR6ip+ydxJ>?xZ@3-a_TIWQ?uiw z=DS=@_X7%vMI-aM#I91QRqhD<7CG$QW=(9nTCH~5WP%_14xaYA` z{HI$Y zwy;>PTB|2+UN}b8^Gp_#&7iuR93OAz3l4?B-w!xUCYdvYzim*rRc^^(U>lefl@gK^ z-)IgWr7*JBH zIYb;5s)@_V(HY~y4yML(?rHvI6R|!eUk%sFD(;$bX!dmFmNEPyK zwV5mivq@h-kB`CMFAF@hL&{7dkx39ihF;LERO*)e|JL`$mg8nsUYKCYCGea5GwQ>cbzyjmG<-7m32*imA5r zoo9oGNT+y>=LgTCp@gKwWjf4P&2}R73Q1dS5lrkFXQRnt4LD=q4(kMaMm$wm+*CF< zH~@SED|NawC(o&5#Fz?Ul}@WyZC1NwA^|q5Swx{x-ppQ?n*!kZM~Ov09S(tWxm+@}-lb7V-{F2zo~y*g zLdAWh;P_6D2uE4ndezAkLzi36WH8}Bo7ti%K(l9Ij|X%&u`m=@CX>mfvpoPM6s%O= z|Euo}R=l@NQeSEfhqc*kJOwI@XcP*aUb(r;B64nZLY+;Z7Al@b-|ps9=9zGAY-((V zB2b;r9quj$0sNeTP_@}^yWhzK{KfG|Gy*mZb-L|q|GO-buee;aM$@vgLXx3`gNG2n zYJ9{G_7#|LLI!p7mJ0Q`R^ITpC2?$QY+ye^o9*@&lj#yd-VkXGzJe!_$fff+-HN+i zA3oIi9Pgy?rhRDCZ*ux>vsf$Dk3OBwCp79yrP3%<8PBr7|KreUJZmII3jHA0HJbR1 z^iast32!{DNF85yyWxx$Y(R@5%uF_YYl~=k0BoyIMiPNMTrKAnq2(|<&Td|XcC%->J~flRa=wmfdLy51J~MEZ6*oi7V0EJ11|my^e%pM_Oz zLC&W?_|GP@`Lse+K%dYlmL2wHvDT>%g-)eXAL?W-k;me2XiVB#p~Tg#QGP7l(ZV%- zQEVS057+|^i&fMg$OPmWTWL(2N+%F(bz0p5#iLCxRe0XgWUv@FmR5Y(F)7Iq0ASjZ zQUVHMB4K1A9s|khmw&rqBcH5_sUMB{N9-tA3|}Ub#^cj&Ex&8%X>9P_)!Z0|LT2v; z)5791N8(~uP&}NNxJpP|fWWzTDZ4EGct5(DY(@jJICAbHaj8?OFRfyUVu;HGeVYQX9ZHk$fQ zCkiH0nKT}cN@%nMHC+GyW}J+S%nL>%!K9wJ!CAB`DJUc~oYPAl+u2Cw4rBxHml3aST;7a}w`LLw{ce<4DI5T~XhQ$j&UQZC%< zI(Dj}9;b8o+;)+)uPT#BCG%NE`ip#!1KDzLXplH$@W+mYxvb=`={nB)2Mz;KtjzCWE#r&Mc}>n-2+SU2Ktdj_ahz!+Nk|0x2TP(flv4HO92 zk)i=0u%w)nj`l%6`+dG%ujfPf(2JDD=%CG>y&O|I4>L!J7*Sy zzo=z{h72y1L87d%i1K$1eA&La|uR36#k zu}`7EA$X!hyRGWxRWmaK|H+B=%pgixPFQ9@GL#2w{}OC`ux$JznoO9R5}2Qab)p?Z`mtcE9y}K8{tl z-}62r{QuLD9sib&8Xf>4VMq`aei)%)024D}RDIY$l8}=J`1rfcR-@7BG@e9#iRfFE zO07%3TI_TVb@5o}5~*Y^k2YF9EarjL(71SUT2@q2QaotL;L_oYv*3Q}`!3EqUmFXv zdC_+MA`n>}0r&ZULL@k;^y5}+BqFib3od&=%e_Gl3Q{~lD1@+*a`C~65D?+1A z{+~yU7F#1kSXmL#AOukdI7*Pi+v_y?oL(3G^0j-uomPA7Ku;;P7`3XxK#d_?wu%~i zwAq~$vz(k++KOaj>1EQbM+pj+`{m zn$Pp>^x52&>+FB?5t0g3YqyNTG|K20y>GKW2J<@4P$?Fow4=>twW1PRwT-&zvDLmP zt`d`z-U=N|5b^J-3*v0M+bvi_LvxdJUYW?^4i|pf;_nv>4v)*{wTq_#1pNd_HQC63 zh!jF@{2M^v016<%e*h2u9lr}NR6sE$At|l+mvpWwAonqs&nA8oTI4W3YrS^KUb($# zG+r5C0HU^#Ab2q-#6F?oq4uaE8+#r<)V#R3oMdphJPe@PT=~wtaca<=4~}S1sb*$| zC=3RxjlUtWXiT;+`teD3!{M>HY(59cK{Wy>NQekY1s^6Xn85=`3VsR1uz|k?6NKFO zTg2dC>IumR3&xQWerFG2Z6=e~W+J!Od(L8CoREPLb_K{oCz*8>8B#j+HMJRXzH zFj>ysGLiK=h^*4rt1mjGuo<`@Dq@BtQ!GB7SG8#J7_ zTq;_i^(LnFKLxWt8ckC8zuOTVhfp@;a~Wmt@6C4b`w#(LsoC-$?*b}C)Djfd4H91X zP(g$ftN;Q8J$6>Iy%jI&p+pTwQ7W@f?#N(K*I6c& zOlTH=y?S+ijNolH`z_aT`k|Pbpr}Z2@#|Q?&%#f_15ohsfnP)mAut{7eRzC+w3MLi z=JNR4ci(^x?@18pP>1fO+z5Z^Z}Uo~6H294;aEU%HoM)1%jrfcZczO#uCh*);6ni({Qn95 z75pC{AP0>f7+jf9_2jgql#jwd6;aR#(C8OoFL$fma=So7^7Nc2&vPUWg-rMhpAbu{ z6z!vFT&@fU5|a}Y7bcF3r3ovj|JrOiI@X&F@nkliQ7Kht1bYjp+insVAk}w<5O5@9 z1c(<*z<9t1{|O`zfe5rPfWL#k1_mR3DX1qH7#PCu4Em zYqF7&NR{fJPOQ$JNSw9o4dHO&Dj{)sIErDJt-OjjJ3wf)BzI>^jWU-^CbRj3My1s7 z3G7MeIo(AMtUI0uXdlDx03Rt>$k36&2PdrXtKdNgJ#ehBz=R7go~E>L_}uF{^*J5R zegRLyk8KvKRU(3}tH*HyOqa(Z(byCG^?n~Lq0lMQ&wqt}#%NSHY&aoty=-DRIWygk zR-EcwDx;**DfQ}RF)t7KAnn+}@AUi(RRsyr02DuJq(Gzt7D70|UnB(_Cwzbc0U<1a zX{(2o&rW?FkH_C{Bl;iH-viY+_tm zSXelmn3RyPyxiF6ej#D;IH`m>qc!e6T59zg-g1k9_)zM(=YM{tAtNQI7a}_F0tOre zxIl#qHUMHoMvW6%1$fbv6o4cueG4Qx93F?qds56u%3rNlFIN2jx7RxcQsi+*eBK9r zz1>cy)9Hp!V{Z5^#etDe)o@}`Vv}sDsj->SxobIkd`!lp)f+)cztwupa>3y7|Ma5% zd!S`RbmZhTg*5`jiWxdK-~r^%0YZxxFhYC)@+T1y5d{GOdV0U*^Bp@zKa=)~4#5DU zX_m-GGHHV7j0FDqb~@lMI8=j)(D$Yv=%fac3@9!+(-UrfY-6#Wj#HW}f?#2S3x{{J z*XuRA?S9QhOnEugj1xpgIz&WKVW1_%#ec&BHh$2^A;SU>h;W64)uU=?h^Pq5huqy( zVQ=bbdf}73R;klzR?pp+?ny9}%BBy+Ee6{?U5+=bmtct`BAw9@<)2=H-z%nsB*O|m zre?=8TjS|iv)QaRWK;%VP9#pfCXn-BEcS{On{bElrW#@;ly#LO3PcD<&|m?8AuVQ@ z;DQAXOrRJsRl^638bN!c5!x;Q4+)H3;@=A}e(- zLI}MH=Q6pRUbo$Gx*hK$G*q86dxtSMdXGSDVY_ za#`u?P3n;`jXt5zCzM)a3}#PpgF9T$?0g%KPAV2zjK+Pk$0yGW^Ui^Qd&LrX8u1VS^Y{P}=nxI27e>T9*n@e<{78T|s05qNxV&-eTc86`<+U7`48 zScO>8V`}OO>IliH2?o*59go+cw}_j`V=`F`-pgon12BC~vv0JWr_F2OkFag)X0zUM(oM)-Z=f_5q5(z+{f-*s>Y6Mo46O|N`QBjBty!h?*`~4n(ANSRG%tOS^ zr^C@`RA~kEx&vO6LIYfI=Wb=FwUp@`WASxvkhkmoj@V+anHZQ?EawZ7v+bU2YT|O4 zoB)O4blS@_9=X+Yx}~0vX$#K#&T9{lC!?_#26qn%xqME65&Y!($Uf9^F~cO=CF87CYOJE4JAC(JC*MAth0C#MgkZ@Tj6Z?c#f;k z&;OUxO{XsR1NwqFt(h2@oSxuQD*xl_(o$;xZOKOTpy9;CMUsKTiw?U=!ZMn+(P}tc z?$`E{8wit1>9zUP0VAJ5`0JvM;~t0OgPim|zlk42dkQcaEjdM**q|xN2niZVKte`9 z^*LPvIer%}N{qo^B{RClx&cO7U`Lxwrc;lt!gab^wOZ25DNdTK~+RT>J?U*{Oq}`#SlMJN* z_L%!+fCxZ3?JN<+Jt=1}4%U#kDd$HH+5IkF- z2Lf7WfiuWrv)XR?ipd^zGNT`)kIYIOLqj1Dh-{LN;^l2Kxa+yLfl&;YJK`_6M5@hX zHF}c{9&9Z!rdmW52B^^Z%-9rFWKpR}#)+^nl|9C8U|d>ad~7|TQ5dRE9+TU&^7p&? z;A~P8uJ-XWmV+TJ(LaD>Qt!TBsaB~bxLZcp+r?(PKxQNzo_ac*)qYishkBMvr;w?p zS+4O=hD`vk|JaS8oKQ=An(!%ohhRtetO5|8na-xCk^?X*in-8x7{zp!| zE}%+P(NrdtOP(ta7F+DKTCKjlQ9e?%&EapCy9JA{oZNGH+N;fCvs|B_2vE7tr822Z zE0e|IFbE{8Y}!Jp8+734&fdmvHd_wp2QMd9qc?!49KD}=Kj{y72<%mrmE4z>4JRfp z6BHXG&yfb`>HkyC?1WZQP|7aNBq?wX%Nm_qSYBQ@$+R8Zb*6_wLmErCT{Zd*kGoVe zbE#Z9rAI*M?iCBG^=gg}IRGecM1Agdx!dk`%k_rK=QoZRp1#?%4H-Vv>0~00zwA?3 zD@4s;ed7P2Je;kD&XLiaIzztKA@pzPjCzYDm@hDSO_&-JR|!dmn^EV_Kx>gb>@%hX zMMVh5{bp){K)GzNtV89Qsy)JAk5~K#^|0n$P@m4{^VwW3n@m+wKRrqypuk?STl2rq zvM0G9_IkZG$V*e-u$Wvv5rCziti@ulR_j+9E&9e*;q_Pvc0nkHxso=6B1>ea%^(p7 zg~ul}3GXWJyx6MJ zS8KI8l{S~kA~CpCVkfoX?LSraWH_>L`Nxq+B+&^iecri5Olxs0n>IC=xJ=k`D5Y?S z12wD3R#H&hWEhv4snC#j5L8R~^MX3uPv+9uY&Nmnp&KFGe~AyeS}nPUE!7r+uam>z zaRF5PME1MdY(DFw#@1>S`jj#?l~TR^*Mk;$JQ+SBofXqqJRXfQhE^cmIZ_pIZ%1>> zXv+%A$_A1QCMhqlotO$Q85cd@ig37j;qkN%A*v<$`fN6*g;MZxwOMSG%EV8zx9*)>7;tcAyQc9&se{VtcmSsF)1h-PE1@w6w9T} z%1ug2jQYfkiU$=KBMv@}qz8{HOmj9HPK5GUG$N~-d_QmhjflnM9dd}Z0hyF$5ISVc3 zJ3VHGf=<#?!-!C{M7Li3%)2pU94zL$29*e=> zZ@9!zovlu*+i`jdEEDK5d2EB;^XGqS)p`I6)aJR9Q%^HZ<$$E$-U9l1?-E+7G>BR4 z^TE=Q)A%RYqfwDTPuUJihYcD|Ok5-xZYOe3@X(>f>Y+milozICjdlgAJtRk)%VRMZd}Jbnx|9HP zQe3e^VKw^&7=9r4QmLHY;ZM%Cbs7BmY%|>LmecXdQ9`KNtP6b72pCvBWK7dld) z3*+;^L4&KLq@_j5O9z$?DlqmQ%m+w|tj=b(ZnFvmQ8uzQ1pa`);1HQLhr2YW;??Q2 zdd+t2=CN2jc0i2(gA5t$HM<20s=vs54rPO#Mqj00h{a^R&W_cMA#XOj)o}tL9|M@s zX*ZWlv)HIwi(CY^C?TkiF<^#X|=UwWF08 zTg{Hf{hX7@ZWdIpLae-r=|2aRcM|e=+Jkmhm0G=Wf1q=DJTA|7xDY}jGR1x~C15Ma zK9|qqYqffQcfm|9r?Z5fn1J*+wp)7?Jd~OxM%sS+N9n(U2JR4!&P_l!yeBf4y7|jaIYqko4WP*XJu=i>RbvuxJtQB741;mX_qp zLx&C;PE1@SEHNeHSEu=YTES9%*QjmE8XA-J-XHAsssRWIU{U4cg!v5O-r~M2mnH{f2-LlZquH9<@7u-?#ri>;;d{Y^Nb}J;n6-q*{p}Kc(QI0{iRbX0>WM zr~th{LcixI1pa_utI|o`lHp5x0>FiaUfD^84PtRKY+X;UXX|pjBo2v2XVD9|4tLAt zX0h0)3_$omAO#RKdLEzG@A@17-p=~vy)&6S7Ky}UlHGzJ1Z=fiZ8oc|1MTlecOC5X z`fY@_*Xi>*zUPN1M_uRW#?YLO*Bb%N;qCU^$N~}JAg3GcH`f7qYSee3JhtlyHJuoe z2KIP8pBDM;&1^+qolXZ-GJpEdH#BCYORNf}`YkAj<^D+WAa3k)=HpoUhg@ zRqG|YdB|HL@aOyCz$@vyJ6!_WLz;=C5eyAZ$(2#-PUj8#K5wY>?VfQpvB^^gIHHlZDZU{76&J za3ZnzBkEW2h+`o7z2LH0{m0>O`u+pb20xG0QqznD1RV)s0Ra1>29%J;z zQIWW#OpD3}4JH{}lGL{<47LL!u54a;ab~~N()m3OhsPu`sZ9D;__;?$P&h0uvzbzW zkIzv=4H512KtxGRCk%bSh2I0CBNbVByqzwG!`W)InLG}Ez1?nj%cWAQ+AR`dZguJ% zt3WcLSMpd1tmUk?d*Us*WvatKjN4_i+Rf@eYrP;eT8%k0(EHUznc3->B1#7K7cyepeHICl}`i=MQna#a=g|I!({d z>%X{4NKQ0(Xo1m$!+15~PMF8@h|4hUhV8{-w)GDL^aXby5Iq~Qk9wd_Xb*`01)H5l zm&@@hA4B>U_nsG=w1|{mqzJ;KMSv8hP%I%O4GrmFF@T=D6VwSDu-iefRJcuWw_2>V zN`-<8nYAvUw8LDk<3dvAA=b1F6U^i0JeCuLGm38$u(8o13gT)q8yT9I7#wxG2ZNRq z6ITfe+6hU^@#DmwQakh&uXiSG2K)tiJs?t>-J-`10E$AR)2g2y_ZfXQpNAwF;pxfm z?0aN=aI{s01pp`&zYM7-rU9q`QpA*i9wGQx!N>x7zjb_^im1C>?iOpUPJKT*MF(k@ zOwe*FmC9$kh>5#>V_9jOwHC$>J7o_bmzcs#zny0 z4kwBr-80<>D@(akO*)psV1%o|}T*uT|iJL*%{mzK$9IC2yAGJ0iE zLs1Rne8V6dQ6bnxOiX(eS^euZufc3o2qPZL>rXaFv`7?T%luUS0oOV0l6qL1(R9CL zlMAzXwWP#|bF|~%KB5|45e@mQ08{q-*%g5+Zbq>~3%mA@m<=EcNSq5;T(0|zh@ z&WuZoj5f-mLd)@fMLF|=tp`&gs3^KvKbo&rwOwMdiw$Aj-D))W?Wo343y0OvjC16K z$`UMcIIaw(P*r{eXCYB1AbT(H=fjskO%@1>yQ%Y{ebVSuBD+}rc)Z$e?0!LFtNJ4$5t`?BN$$PN} z^HQ^MdDjQGGdqPmV$KIzjF?O>%Q8DMjIHl6N5l#+GO)Wbmpm$|W$q5yhZ;=v8hLP4 zy_%T#iV8}Hla{5Da0w;_1?7eJ0_$e8AohoR`pCNg{^c`zwd*vQFT(I5_FzyryaIPR z-HMzT4h{|s7_$k2<$UnHdK~_I+8+^4=gV@p-5FFW)~lYP?*x1@ z9+lvzT`ZJLI;lpC1b@Kb(EO_u!-4&8m|JYMtLR2cq!{j;U=HtYK_e&FYmJ7(-EwnGkF}ke|}(=$Q1W3c$$b-iG3fIrpTuy)A;;hCZRJdC@Vo|_6SAV zy|lE<{4H|xFi;OmT#lF6Wxe>-g`kELgV}mD)e}%$CrBTakv8>U;|=0uI6&q}+wEEQ z1&Q;k=+am`CYR!7(1#*Vi{Zd(VA^C*3PmwsaCBv)mXoTeX0bPlHG`kepdHmMm>6Wg zvD+~TeArwy;eU@Le$L9B3WFq)CU5JA;O{_Nt}YK?gQw@&q`;1{Q%!^h zllfun8%e>1!Jts;!WWx#c2aY_+B5yBG%E32dyy_JtKWAw52y1HYnw!UJOMyzbUq9g z2ierX=z}jSFXou91shn-E%@7aLmU#P{x!XDbFU{jJaBN4crdGYFbc0g0C6hB z$kgD}Y`XW6xZ}l7hr#qRSrqzqyKOSaX!L?E%vVJ+BcP5RrdY%+S{YAbXoJ~wL28qa{v726D z%ih@l&qQ>S(ag-KIPE_gnHrev>GNc_dK4+kL1VtZ%>0b#%}ecL2}y>M4pC|j9MUDY z*ysBt=4HVSx9gULLnvPB6Yg}tyx@-3>A-O}HhDw(0{feRQ|q>P&%-_zXhKJ9lb)zQ zUs3vMhFYEFZ)`u8=yR8}Am&Rk2oO)I8_&}P z*-0Z&N#u-TsnfDh8oz~C9*afeGYqf#X>+>>g^>ISOQH@9g7><~GcTubf)Rp^4V*9< z-%N}O%M04ZPA0R7!AaFvUT(?PN{WgsCp3X+tb5sb;IP4j#AJhR#-$9ivI4_I0i5ko zoSVTg^sCp&-EO}XVW!aqFZ|FM*QP8MT1Lr!6~9DET?nDXr?~rezhqLWR342)B9YmI zM*R{#;vV`o={TbroldPD=nRcOs(+)uGy2O$N2y2F@hcVq*bDK}?gW}Yh_ ztj%oB&5Vl+%|+!UH+5S6cm!xe|hNEKNOV)zU z4p2G$nk{G6DXLQ#jhG^BmQ(qBM75cnR*goy(wJQOpLjbSPnxVMmsEOoe0_!|P$V9I zVemJBa}A=07cJ+htDB^Dy)e(#kyT3l!r;IjOKQefM6KqH&CJN$@U$_g+?#Pt2?4=<0LSX?+`;r=Xc0dGP!Sa`04!{0eP!< zu6i(aIh}4Ng;oL7ol>u1ahh%EBQ{#C$@asjg%GB@+Ga3 zi3<~HBeSW8yKM{;SKQ;nMzI2`b zedLm?cLsmM72TeY6hooSFeJf1wQ@Q6KihbS$(^`LPBg6C;KXWTDX@p5$@EW}5=MJonMLDS2m}U&LLpS@9g%c>fZ4B>-*3cicGsbTSF&U__0f)5^4p4dd+&}D}eeJ zcso!6dqzfXt#UoWy4vNIu`Q5DvSm0n&Uek|WMjc__GB+pOyr8n%9IrAr!v|Q!B1Qz zEiWAGfMYnZ*^lJXH)3&aV7FZl$L2+o?B-@|dXw+%@q)r&5PA3EbJka>`=aH~8UO}> z3KHY1(xr0A<1b_DR4c65i=FRi8i`aor@l|UYE$4gx8(JejjoT^>nQ-Kocj1xt)7Lc zF-Z1@$o^5sJ|CJnGBB?lVarMiFK&DuwTmq+Cr~ZRml0KAEtj{7hgh4}>?@1Wyl6d2 zw-pBm2AkoqbWnN1;gSF)T)~5E(?sQMmwaUay&RmaPM6FqIdA@cU`dHe$2>jyT_lsr zZZ^AxGLziq5}y9`kV|JYe2q5!Zf=HiWAm!HalRlu29wkf!dI{vn6VMZg~dgM3!k}f zdFWbPB`7o^EG9nx-C{U0pScJehp<;ulXK+dY-(s`l8`kS(`}yP2_1*RpmPHL38krY z8C(Yeh=;jkI;Ut0@^ur&FPNyl6G}aI#d7x!2`2Qntfn%R)A$xk&GL`NV$w|)5{*eE z(<}d`llpGX#2I$;8e_3QBUO7f4VI}fFfm%3n;lLWlk>owVub}MX0zgf1BVlrZ4H&y zC?TKf7z}p1hrJ|jf@Wxn?z`P)d)3UyW;2RotkyYFpL>SZ(&w~{jaSM4_WS}rb}i3yxnwe*^b=Ow5cB+MUMrd}=veoZ(E&>j(EIUTHbHvYkad>AdCCsEm9hkvJ?S z)micS8?Lv}+^Ey}#4nMp-sKPO9|QXI`HWJnJXDm2&UWsVKD{DORY)oUUW0uzG5C{A zz_;1-y;;d2kys3Y7u<7W^BQ7H!jZi}=5Z~1&CJ+%dAzCA{MTAhS>e)w!v+)A$&0%- zyP(IT<>0(%WMW`w!b%{J#}wk(gtt7+j2#8$WqeGt{iH;HTv(eqAYD!xi%87r?Yv6lg&@{?tUl?3T2GD z(I&H}Dk}^Yi^uRz225D3cH{B((;Tm-9a#scMbL#LLkWi&DbM-S;gUZa8X1?ED~>H0 z%sOg`Iv&oL42+2H6Wk}_vw@#wI}3LtoXy7+KCwzAmTXL>z`_6pBw)p6x&IpqjgAPS zhu!XL6az$HIH;MNdmcr=>m8-MK^-gFj$bYM#d3 zI@yg4r~4g+I5;^tH#q+B8sCw!n7BwXl%!u++BwCuawzwmn{aMqE;GL2O^Vzmk33)g z1H71*nH#3sC)DBS%(|Iu1zMkTv>BBN{fB5Xj#iO37mLMbi!k*{tyZsc64R&{3kl0( zF8X_Z>$O_7Vz)Xu)2XB-4oE9FC9?;FFXvO*Jpq%Cu@+P>}1 zq3w!hB$CBdV)8-`tvV<4c|i}OTbZMRj*JY@ZOSgH-nBXQmgp5jf%WZlKJW@qP+g|} z&*E@CFM8|agN01!Ji%M=qt>d_k7l=BFBlI(?bWdgvSU6!%3813?GYWh(a`kSY#ynq zz3ZSo*#g27-rBB|X#vo1Z$}=I4T#{VB+kxoP!tdc!~u~YNP;}cNys3q2Xhp_00000 z14HP+fL!9|02BaaI2DYMNrS;yAPz<`5W_GC!!QiOPyhok6h|=}N127r0l)x+_f=NF z;Oy{)%LsP(rpF@D;OIm^4Cff7k7NO;UqL$#5K#VKNES7n&Is!X*bFfW2AodN_CF2v4=`{2|1&^? zZyO6Mp{iFz$kh>O_r$942DIzspHBvW-FIZ(z@TBU_`cfFPnp1E8^F?v&()tb?0EpG z7X;%UUi1ebgCRQ_z`l>deeHw|Dp+zr%{|TG`3FzSpq;RRIZMFekKt(he>_T{lIH$r z5)lx^>yj!v0Rc8(mhuE(Y-bq&O2{6!1sxNZg(p(Rt}2nr=zzH>Mk5j6%Jp{hd#nCq z!WBarMHk=V4qOSPk-P<-A7{*pN$gSo55OVZCJSs7<|m;`KK{)abPFv01N6;CA>hd{ zg}o_M;(!>f+CX4l6d~O*oL`W{7Kq08OH~(ip}g4xhYO0huK%F|v1|!AkmLtU`n%|_ zM;w{`oVQKE&OGQP8BzxDf&Rmb%{HLaRZDc2@DxP{3JhX&#w8y(6du+_bE%_t@ zkmb}P2E2!V)pOGCcGYVx!0_${gdJ+78*oaXjN$k!#0vYHt^BrD1Dq@HwGr+{c0!*< zROq?`Kw<%}xSugx44CXSO2F$#vAgnh@Js)KBhpk8ty_nHVElN8fUyAx*uwW?In&6? zMgpm{Nc@Ko!wyEd9xH!2w*>^&8sWNas@oP$*|{C{`&d{EAo=H11v7E@?~=KO7V{|h zyjBU-67xM+`{)UmiS?Yg_ zgHbC7$44@!=Pdqf0}u`PA0I0QWh@ymbYN33HsH4wVA^LTagO3)B}D|O6yp7vZUDel z=YK6FPT9t!Vd4CZF%Sj47s?P6mP**8%K_%W!l5!!Hs|^=1py@wOLuJXJnb2N;H?GeO9Aenq{PGREXVyno>3&*B?k!!;Fn<@Sf|#vF!Hz0Bg}M* z-#3>vsnP*F0@tkfohUtzj0AvDPX2*=9TLeM0$wy^Gj-Ku@e<=w_o=ERTNNDOKvptT z6Fu#OokR#vCC6GioaS5;y8u%Xyn1Ar&6H2T~11ygqNnBjOZyvD5us`9~ zO26nS9N@U3g z)dD240n(Y)E6kxGyfWP+>1s~uNhz9=$jV8PdWl*fosQT}c zalFh0C#i{O6dTZoB+@|@la9{9O7_GMX@{cOTpSKk|_ch?~O5p zaj*mSf3#Nv6wydO5mE>`n)C-T2HfV^{C8deNa*T^8M->)tPetlSuKVjKwFE6%6fW} zu)(SfI7A4@DbL$&Xz$>D(r)i*NGM^k5}?WnpfM1q^rM(J?gygZ52V?d8k$UHS!1@> z5LW>QKr5Ll9H1P4LF(u?^dFW0jNX2w|Cl_|HO|K!1%P3aocOu`wWPsps>ua35q`7* za-EFI^z#>hfgXl%WsL>JoOKrw@k`qQkMQNFEDhxLn$SIrH8z@@e&v}FxFOP!^95%!z`N@hyX=Br#LXq z0bg*vFx{sTfQ8ccKl%aX`*#3Z(^vtl9if^5)ch1EC=;1v0_2Orv#$`gnpGf!V0@s+ z3KqC&NL8T?M3Zja2Rhjw6gdKEqa17A3r|oSCzTdgi*}i-G4G4@&kgu62m(7qP+WnB z6Ur1bXNe_z2*D4!nHo?Rh-Ze!Kml^V;~qlh@=K}s6z^JBIN)amSRO#0aPSKnUgS1_ z4#WUfrY{5pQGX^9$ut;jU@&YTS_Mx9JS%u&U)Ae#yKSFcAB+V&Gl29>Gp3Ufpo6dz z8{m@q@H>G9W^El%ha(~-rAJ@}{P+3xBy@u?7$7bI{}S-W-_?H`ia1dq3cz#eKl%qa zWuvn_1a$FRxRuETXtSH_xEM*bf@TDZ$LtALSM zfc;3X7pMb$;SGU*6YKhj0d@RC6aavL`vWG9oEin)0ca2#GwGC?K$Jj)>0#&z{ssWF z+7-nAOax}2FLmL}f#YHR1BSj(M9;tI?Borw9ja`N0>%jqyo`!Kp8y5bD*3uJ$WYtj zzv`HDS-=WGfuGEv_quz+fRh*CZ}@)9H+m<~G41;j6lx&$rJ%$Sw6-4bqvhf85tZv; z4MhE~OnJO1cM$k2(1QG6?g0JPlK}ufN;d&j1ON;a+ysPjU{FAA3XB>+6Q)B82b5L{ z(gB@+hSlIVfm!*=3!uqMO6%fU0+u<{+~)%FLi$=O241i_0A6tI3ZA4n**9K)5+LZ% zZ%7={2j8h>1vo(cz++z$AiI13HAotEGx1Qx+*lvoJXR}!M}Rm!GeBcjO+3DUhYI{Z z5}1?GL&v~$vk#v@hvNVtJs2Z+`qdlDLt~ze&2aQn(!)g!SU3YvyPIk?w6Q>ZM}Ma{ zBW_>{{&xziQtw1v3yq3#z^p|(^Z<1`0V+TMAN0l(&=(ERyn6wdRR{*xw8ASBqRkv5L29&9q6cVsQUwG{Y0kiNAd79w}4Z3Kz}WRH$cK6V8&n;?7}0{03r~8+)?+-L!jj- zz{BVR7$#`t2LM7+K}v##H9%nA!}xeZ|1v!QDKK*cZ!Md@OlsXT-V99nEv{?>oC#(m zQ=nNG1?}E|*Z2rHA27Ob&e^spkbjZsKkiOQegU!^0ATd2^I!s0Ob9HBYryz!n*swm zggFi4_V5AzHh|lYNsvMSD7FzS7fn;r_jvDs2I4Jnx(13B|AT)OeFuSG9knEX zz~hV1J{t0NUj_sSLsx0cg{oYj938+D13!`qNCp9dUj6ei>=%*(Ob6iS0aJ~7F-9E$ z?hQ}G3xt&ngMOop8|Q#(~}%#1SmMD{U7rdFi`k_1Qb@d zo(DLfcP*|d1Sm!-EP!AzbhxGf+5-R-S#?HXw|&cu~@i3k)N@B#paNoc2^ z1kmR{U789=1tAU=BDD{AU$pa12W~b|a5BZS0rL=q0+`R8sKCbx^ZkGZZT}K_fE($6 zn#=>xH{fpfJ%(BV3?9poVsNK!CfKf$kqVB|M>cQ$2x6 z9Emg}xW92Vz>ct?PM-~%6nRp`r6Fz_&L^1v#{268_^=1Xom!x>ibWFOKPbhE1_<~K z7|^sf0crvG2LEtnmF^!EnE|P@Y`1cu-y3i&0ekBN&0yNky?1imyHOl~$(Mca_N)7NoyZ{Qz zNpWrE#KQWt7l@hXcgUwCz*=>6Q~^8GGRoE0MKB)Ke@*6I(FY9~K$n641qJ&((D>&b z8j!v%P8ulNUZ~_%A zb-7zX0PVhWBG&nleGVM0s{)QA&Iy3Dhf-MkEU%=11v+>=4eF@L$64d7-}ZptYF8{o z3&8_s0CYCf4sahpG(`|pND78y4KQ~GvmD?nbuRH5D`#KYLq!a<0iO)b2EsmDp+_3D zpA-O8%Ef>N;19#UAYBGD^J(b3{sGcP4FO%DfGi-_Hev`GsNV*!0w~$lB7*v{z{m$P z6kGr0lOIO?m0M6OqUP7edT$AQZP{a~U6YYnE5VKVC7|RT0m8KlC)wjPJTLlx&_W$Y z@b3D=Q{jRw&h?%UA_0V0;6Y1mw*j6CfH+qJ8Hs`yWD>}MsVFpr($QB%@7dDHpK!H1p{Sq1D|n2s-B>* z?!!PVRJQAKAOKG%U}o^#fOH>NfZpyDyC(A>2r@zV_<)3Au3;Js+g!k}0+#nD_=!KM zZdcw|0UGamXTY@?;0G#FOAJlRnIauf2`&b=!Jp+^2V6;L5!p=xSXK$cc%xfKfuwnc zVc7v01KO4t1RO7by&jPrAW#vYGUkGm%UD7EhX`t9%5i{IY}bT*=f9i2`ePr!b;bVS ze?tIvN0;o~WaI$qdIey7lVI2`0q_A|VCTF#?MI;F9{c0;s*<1JDY(WBu=)eY=O=^! z&%FTExkpID(G8*o0P5dY39-ij*aW88&d)R%RqO!N0noH93-}38iybI|H6sXU4M^0{ z()@v4@Ow?RjGcel*$uTq{sWu=z~*bP5ViLkqVAnwfL~_`2#}6d9g=$kL9qS&EEQ|& zm#aQR1j@!F$pECc3dtd8AGiVKlRt={JS}!6pgIF15E<5h=zQMPVAF#!Z&)=(%wp#;$Olbbq7XD^Te78M}KZUr1IKxY2KBUeC(2v(w727J?9v=p3M zg4GL|+TY6^fE;Wq|2%(4Ac97Il-ZVqP+$0cF5Ai4GnEXS2s2Es6}s|9EHVmhPy>iL z;M=PJ7FN*E;eY)Kp$z^wGvLe`p-p_}ulLt!=zXb=)7}JI^COylf&-uc#5D?mfmpz@ ze4%qcdPglW#e*Qugd=P+^5X(t6!W?YsDqqw`{WGZ6bco%|BhZ6T`W6_?9Gr+n*M-%IRHI5 zlhE)6=_>~)9)2mQ(NN({v3qyFcuvI0p6bQpHK52nzyat8aRUQ^k&z`3(*c{HIeXrr z4efH|LW1we-Iz34w9_LJDGU@F=Ep_%+DA2D4i_MH8wmfRU zz*H*VaHc-5a+b!TQRy7_h!X&FxoA-)6UZ4$^Xe&E3TYS1ar(S1pE^NQyuHKcE9ON; zEo5`W&A4JSS`Ejf@#rQcBppgjRA7=!K$JY(%j~Dy<@k{k1XhDYzRCv7+u3QdJMaZ| z@e>+jfa39bgrnXTCJf9B%ogo(dxSWfEuACkbUSsN+_rXy!XZ-}E*I5Mjp6^0^?X8} zclc&SvkKdFSD(J}SS0djsQ8EuP$uLfZV!9kswp2c`^UB}EGsWLwsjfWYg7bj*|f9G zxU}4E!kf2NL+@NNFexBRQku&-`OpOdn=GEoZXfqd3ueEGEn8^oC1eGnFa@!tQFXJs5a$vB2K2$j8TAGdA|NDo0*#F@m@tTNAB@<30VR zUxsoe%fi9}qalq>pIb~K)s_~{xVs&FmI+CT35!tAoc!I9t|fhl^Bsvsy5I9Y*DmIb z!=cgM+XcNoaTCL^?Uwt!eD_C;xAVaRwy@lYkiiPGT0o9Dn4h7H#)qX*y&aCn{QZ8w zKZiI6unjqC;{mzm4prmy^*(p1RT>gE9w2j|u9oXV-fdT7 zzh++1pAM2nuotXBT)rjg#I^crv*CJfXx2mwA&d)4&BzBI^nV#T+zp3y^L2H(B_qRnacPm$kkuJJ+aDeD0)!wb zs{Q4finu#_sN*--v)^en8kEjfv*mO+1^|B%-L_y3x2WNQ3#O{kyAG(e5_vuB-TFgs zl*{@z{MYFgycoi{N|k3PE;o~bI&}^3Sv1i|DilY=#9c1eGs3q1c+=7=uFD}WH6O$N~6&(x+8QM>q+wwh90n;1%_ry~eoW0p`4by-= zwIVPQkKbl*2b4Ji4dxA$o`;Owway~eoEgm)sRvMWBLv*U_dgP~I)D3` z2?~JF1ET7c2)$`Fn}a)@&i8J%%hYBO=<@|@p4$erU{qS%Eh#Bi*iEKG4##Aq5Lu4J zT1;0!ppbMZ0Rg@7xt0_dnWN~n2Q>H8ARm+n>S&`X_ zK`9|AA;5p9fk{b8xhl4($XTtH^{5CO!wKNba>r@1+ifnu3UraJ5?LGue>@!y_L^zI zAd_z!=g|8Ofrb#9n)H9h8ywNh42_2u(ZNK+^)A9Ff?i4w0^)8qTaxbz=M%#;XWB1? zyB#-24`Q#!8-^%mi>QKhmN^?tR(l@tgis=jB(Q$+DEvKfTlCkaZ1@HUhz2Es+Vu|7 zJ0!AsWOe~t*6jQ>Po~gZN2;3wkLL>#k;>oZ#IMKe-DIzs7?~I(5GgUdx5&f!l1vs= z3!*$RhocgJnPOr>+)*{MR8(e$bl(oIp}nqt#9>!{mCD0+9C?+yM(%(!n0uvWo4qng z1o~oNWIq;s>q^%ZK&siH;)Ok^+zbYj9oriGZzANd694O@eY`y$1hTxK^rwgp<~EPN zKS_fAmb=|8~jlTNIWK&?f%!>;cBy246C&ivZ$nVgP1oSFzEjChrQBajhzf( z1%w9^lK9pb>|a<|x>TB=%gRcNu1EA)v+a^c-f6`Sow(P?xT(LGx94Sg_s_rx<`@na z{_IJ<8MYV8WflGLpyVbMG-fZ=8Q$S&F*14whqaLmoU_sB%~AyTCWjfm+|7uN`8u4s zkC4EEzI_&vJ=ERmyM4mfBRW|$cLKmik^KlAO=kbrFtJv0G^t{E?Ht77wCk_B^&&UQ#diO_mFHi7>sL7M!nveN#Pq6sonF>s$a*JA~l0OoUNg&0ocC%Nhpa`sEPC3Hk;XQRk5J4OGZZKg$N8;8z*;E)77lB&wvl` z3FO(3biF0C^-6&j%%#&Cv_1cjpDT2@+ij^tQ`!ITbQfpm&SsAo`Gf&1hPhD}^%T*m zj7Ga1&A&=NXR&Z+ChO70xl>LbFW>~b`$Qt{v}D#YGCr$?&4TR-emTT2C>#odK_yX6 z5?aY0i!8EB#vc!}k60`R+(BNhR6M*S;XEG_c1qk1SB&VU z{Eb`QL9CLk0WT z$FgTWm1(Y(c!cuenGnte_cxo13JZ^gcXB5Oi5Z%##2uIAgyf}M69!Qb2hq5itAj5L zYlb$1{)oWh_in{u?iNadGT|adj}|g^e)kREt<|cnu|}0j8XF-vU7HPsrtgCjsleb1 z=4B>k;|-Te-`W795qYeN|EO$sgvRgJPEei?F|UcH)yE%CSeCBKH9}nQz_rpPb9oeD z0Xj|-Ou(IE+zoeCgS~1!6yqZsXB$ZA>$OYfcEC3M%lF|SKtI-E!N3fQyzueY0}>^- zNnRq~`7@oL=-!A_;al2}mOJL|(@WWs0s;laO2aV&4C+fYIIuFB3CT*!3}}_r(LDZw z(ArKAL}gkp8=tCp1 z9TnfUAhTd(Tu!VuNL>5c^U#NEG^fLF0I9?ee66)yZ7N=+f(Up#-j{&CIxBwKI^d`@w_0r``_TV!^z; z(0euaGq@{Wk>I$IXM$38MSh4&RrPppFU|M3hUM)2uMobcBk%Ulfhgu9k{PPTy|xy zm=@iu-HNX`47PK^@XC65naP%TT+SDT(yctd%&AVLRV{hi?2*IY4u{)GjY~#KVwskX z*z)E}d1Mh4G`A#miwa2!88{P0=OoDCD-^}?cNF1$e!>1U7s)4?zZ|W$BSpP1@_*oj z86_~wzA+xynQl4Bkj{@>tA{8R0WpcDCLj(Xq6aMZik6Qk`Bg2lb<`_oRiviu4&7nHZTC z4!;dy)nd7_)tHwUYtcRKWG?46fA-x|?rxEWyyK(vJfq2PcVhptlJa2*SHbCfp}w?g ztsT+t54NCu@K9pnax9JzBJ!KyF8^QP4@p$3$z-+PQ&@#lrCO)Ch#jO5dJG9NgM?EL zPmS|=ZIwNXmAsN@j6@Xv!2UT7@HE2LDB0o~!HD{BwCQy}h= z)#DgD(%EfMzoavpX+4X2;F8J*|CvIagGEKfC1+uQIr(`0KzvwTRl z#gl2|;c{pmPxr3gu=V;NA<*Y5f%x_&`yB3NtrKcwt(xT`ke5AK+Ml{!TrL0Vdc|-( zGFYj?^GVf?%RSmBz}sMLbh++!$2C?K_9FIuaPjhDl@t&wtrQhMdl$D=P7Hu`dAb;# zMyd=(Mv`jqd6J7%+YPr1f~6+TVK6#~9yApt0S`j3K!g;JOA&R!M(-u%ky+)=8}O~V zqMEuSlJ3SUvWLH*P&fq2z#e(}z1rhL-SwWXeJ3hCotk;HT)k`=d;_DQfZumF+%Wh) z3dx~Ch4FKq*W|?CD)6y-k3k>@W-l%+EG;Rt7piv4=Ujr~>cyhEE^>StzS#*u-Nk?} zF0(ROt)`m?^?b&zyr+wP+iz-6N>Ykyf)c^O8)u5HZMq3#d;T~K{(e)+C0wes>SQn6 zvUcSbYc(GF%@-sNhd<)6Xl(LzmP{wj8vU)QQ9=rRHWtIG9Sv8(Kk$m6xI7TMGXSR_D@M~~}qs?k@*vr*wY5A#0%ec*}^A7fOx}6U= zoZG-|zx4W!78xWxS>0@>S?TSSVlpGoeckLS)SiDYc1IH#+#w5jy^>j>nGXh!Q%WCd zor~A*`c94e4-XlPXv{odr>S&0^`mLz(dY94i9@A3g`PjUhs9yPh2d(!bU0=2XX0D_ z`YVobuhKX5?GRY&nQgmr>?OmBagp^I>VU|dkS_oc2HOgP`Ho}cBS#UW8F0eT5RfBY zE};p@3Oj$>{(ApX7+Mc-q6M~{=WEAYGtLm{WbjAqfi9aDSh?eK+-3tfol1yAQn_rl z@=BvpXw>JLMT3<*wdzI+e?udZE&|ony5V%Xq@nPQ?vcb{Q0Zf@|J7^Lg8)z9&u0TR zxz$@N2Ij^1&H;l|WVff&@p|==5xJb^pxakRD;Us2%E<1ncHK@jAqFifDJ?6wN#sc4 z;aDzQdtD4MGy>sxw;N2R)ny`r^X^POGiw4XRc7DQMQ?h0{YHm5Xkx;7KBZFX_(unO zJf3gJw&}tKFZ9}@fkLl6sI;~Aj_%#zzQCe3iuoi*00v=Dh#U@!M`)V>{Xhc0Tf{8> z0sQ@LI9n~K3N3@ZT3q6_2=+0^%jJkmAS6;t1x>?<-(1<)fDIysbi7;^z}>E>gk2>i z#bm`g%?+i~q6Ou5%r@)5^uLlK|XF`VHdG9>Y6R|WE8cG_4K%oyF;%s2CU{`6Jv9kdToXON=uXd|bqeUHx2M;AACnz!? zQZz_GL9y{5P&~NA6x~0&1in1+oE1kVoZ4+Tc3X}UhjMyUNGY=ok7_Jfwojo18Z}?^ zn#Rdo>iA8@;*kja1$|OIMeen>#IuX3RIKMhAvycB+EXgD6c8vg62RcmYxVix z@tm6Z`3DA-2F`zc2Zy-Z?hZ#mgWZ73S(uletA#4xm$O=pzUHK|XML5F)(VIe6*2F1@tI#>SypY_ z?XH(mEw~Loq1~fA)>5BO3zT4T4;Op6u71k}^WvKN=@xNG7C~;VT8*GiZTX%0Z%&Y41bm7D9b<(hB?ZKX-_r*R7z>NsrJ}-e zLXZ?sKLy2uN)fOZ@@&n_be4LfZ8lva##l}6iixg!}=& zf7xxqPejP7SaeYVQDV{({C`BdR;~3yeepSGfcGgV9(v;aCa2BL(&N}WgtYCJd*0dK zX1-)P<2H({w^~d!>uOnr*z!0nnHU+F8G2ER)bkzd9EiP6s+DSO;b<%6tv2K9ogr_h zyn2ll(a*rpJ68)YNHbRoh zr&U!=f2)lMfJ6!u3XtI^fk+e(3ZfHpsS~L$@<@9uCeKN4fa*9^?7 zibRxYrDbGh&eWa3{WG%-VvVVe8c~1#vI?-ISJ2JRYQ)rai;|<*HZtfVA zk478gqY(M5-fBGO(zkbmzpu5vMhb^Z8$?_&FZm53fHLpMxiar`DZp1A9k7$B?3qug zi5BWMe8;E+Gfw!xZ{$T3l3k6K|J<|)u-Ex5!tr;+0eTISNz9|d8IYV}a-z~glXR;| zaR4MQ^>53Vj+TsAsc6Y4{SA?Qb4u1$rPFH8lIN{-Xw;X(@k+AU>pH}-1B2DPinm%1 zt&O>4-Q}?EgX6?pu9+F9{Vh!*poq0@O!hx+7~QiC*BWhdcYM}8J{%cH=OnyrBo>)R zL3AWohqjkn!%`C@n!#eySw;$v=Ob<=2Ilr&vPr@smp@%@cjS3wl{1(9viX#5EA*80fmXd|OT`tG_9o6Y*&HU$i zsMEUl-&HeM^cPo;NTbmKR$sXs@?Jq8l?eCw%@=I8E)EAaG)iUETBEgEw_gOf{~Z}E zdc<&H0xC(!J;%X%{}zG6A9O~WVZnTlxN10bQ2aqqSS!DPK>1+8-4U%#Gmyx!lf=OS zkHy7y>%m;Oa3$4imUBJCBEz4<&e8y-JplVBA=9_|=y zc5b$3B#m3R<76;cG`Q3CklY~f^LQryhQ;EGZ`Oxe<5xL6KZ$F1>IWpU@QS@$w75?? zuQf~K_BM<4$S4RCd1Nw5i1YlsA@0D;iq6b3iYCvNH8aiEOZ-p2a7nPJ2 z)(yH-!OY`lT*^YBlX8fZ!Jsfi+5fjA*jlt$zKqOTrlmtfdUn|-{xMzdoEy=-Y_=m5 zpMR9TbE6xLCYwf6G=05Z-A0rfp7BJAdz#L9R(y9F!Oy0ml}nxur&IAH1D&@)Ugwh8 z!U0z+da0*Na=BbC8xQyd`edM&W~=EckmR_Agb`uM$jG?HL9wM9(b)vFN>q}_VQU9x zFhS983bSSVw;xWvSeM6XuTCbP9#Qc6xvV46i=5}cIY zL8cC{k&&r!aRC8hg=GnchD@1!xonb_KAuqWNIddNruJMO3WY^3l?tXhANf{HPu6*R zxn|K`yDq^9%0|Xdw0gAbXu!F$8HQnOS6_8H`R^X9>C#=H4^^>met{T|D?rJ~SMt&h zMw>vxgcmwyC36bY;cmVmQ;Mma9pCq#JMFPInly4@uA8l#ZC)c4bKDC{i@fJN zQt{G(4AGWC<^|=0hZ2&KCUVS;DW&qU;r=F%3y2-b|4Ryp==0Z-3tcUpa4y90(!e3K zSJG90zkBpH3d-mVYrU{3puZT8jBa275h>8{)aEiZi@zW@T#2Vkek!im#a|Vp8{}|BZ znHCMV3p=S^GmVNSGL-j=TDf3cTCEwrB>PVYhmV;fGQdKYUY@t-FX}fkYVIe7uvRC3 zOzv#8XS9c|Wo5-BNJH(iu)Op^<2H`+!2?Oj35XRBlI_}1>J7K>a}NUYZp@%Ai*VUu z#mMx2eS4Wa5`({954d#XYxGJSGK&&F*Xf+jx&O^LwM`e%@#7%jeK!9`+n%_thX8B# zX#_^{M+K$DR4S)dMgtJZ8z6JN`Cp;#7 zEQumg3B_~ttjS`zrA`o4QTDk^B8wr2E^>sh+XdjCji6WHV0OF7=`lC!oB(_bEFM`~ zEfx@q%8*1#N(zkn{{Ji}A3U7Iw3x*iKh){K-S+(y>6$XAqUKadNtsEBnaNn(@V?&f zPKCbyd=hcD`wdBdywB#JHH+VC6V$ps2>gkwSskAos-~deHejdCrrr0OO``BDM5snZ z7AlmTvG1T1;rY)^pGLYt3V}Q8Pq@S7kW@Y4?>fZUYB!*;cNLb0MX{3xzSM$BXf~5% zyfOUAXDIA(A{EB6YGG>3ql73wYI)aOFXvlH31KCqi6u?qHL5IFEfckp&!E2SN@jaBolKO_R3-R9+&@q=oi3t^AoTU7?3?Y@%-(9h&j%bH{V9!lJ=Nv3VqhWAKy%EWQ+qEmbd~~X zXeeMpb=;cYBhe@V?Grj9eBE)A1&5zbeC;<=1t5EVo74ViGB7PGDk&gfaw{q^AWo7l zFD>e>s9dsvL7tHrnO{)=w-w-#8tnP1q-pPum2IS#%k7Bb0Gy~oqMIyyD4i4Pn&oiL zvr>A+8G2y>z5a*4^`-I#TEcqA_ISjr7O1;NWic3xh8qG_r!Kglh8AIS3)|=m_yBO| zplCGO-A=Q8k5IkyE@J9>$=In)Q>WW*=Y7=nfUijdCwamw~1phsLDZgT@PVAnlcEMf0=}&edu?r2dHf@x+=7g?YVmy_Cjd*}P2iWUN@aHB*a% zLi%(zTRU+$y~=YWFL+1!Q7YVK1uIvp6q|z|_)?n9Hme1}xTvI{YOq>P2BG`TNmwx@A%PUvZ{JT4OK z1&JVee$kif#jfpcyx~o`s)j-SZ%EKot2@7|8mM~>*#ny> z*#?}0I0p_)-mVuV4f8bF@TV06lRE-wvBIn%5exwGeC&9!A6?%2=We#}@G9=(4eok& z<8Wx?#dfaG_deZ7Jo<1$`qG8G`6bOgAr=rOEG++c+Zl1KDiLPu424e90Apcc$*!b; zP|EN?lmF!5YP2R>5H1+Qc16}yw`?2C#rukeJs_6*#6Ztg+hqfhQmN+f(y*tK!_{Ch z+ZQOMQov1DJay{$l&e+bFbD+hAo}%qIb2nUV8I=|El zxY{UmsJpGV`1*RcTQ4ac0XVzm;rmTL+NMl&8;@mMEqSEBF12H>mi~y`BEzymqD=(m zbXLV;PnTOEM9tN1I-ak&^m!O%+cJR)N8s5a8J9ezO*irv$>3gi%2; zS)uc2Ok9mNi@9cSR~sR<%**RJ^uARD(RnU!&*_mR#zmFG_N)1HOty3WFqu&rECJ%4 zu~TU*8kad&PwM$ED=}fH!DB1J`0MRtu-Fd>dhMN3bqC&LQpubjiNqwm9zzcXeBf@U zw%%(qSq*32>Tox)7?oIzitCj=c_E~f$tHV=vA*8VE5(8IDRH(OZf5h+!qQ>@A2>t1 zw`5`6b*>+lO9~3a)o8NV>jgAE(=_m6TwGjOuNZM@MN{Hm!UlIt-OGwfD+-M9YN#o1 z?gPBQJRYHAw=TCzMG}oj40xl^YS@U~?3YmIivkFNLEjaNEYPUrFJBaq?y8CqJtzEl zKQDcRtu~vnT3%vYHA)(2vkvWha@JUj%J=bFH#RTar(&+I0JLZYwE;cl@Uwa05};6xUUd{UW29HZk( z6~Db?U|d{ST^&vtd#*CK#vYQ*#bUi~&!$f|?IFE;w;Yy93<_g6Vn11=gsP;JkeINr zypYM$^USPQ77giaJm8R8jc0?T5^7;!VyfMs51Fn(E}NafX-s$AYH^=N+D!ZW4Vio} zn530&r_El;_sF)9Sk*(~s>{i8Io*{+PZiPF?t5O@H>X>}rKnNE=?QHU!AC>4u7w{cPquC6ixNSU{klcsS`$a+0Ewq+IDq z`r~^{7$h>Wxm)jz)SK#j&FAgKV!3QcJ>!;HJ!8vvT{k9fv#p@ZeWg#JZ+Y|Y7+rg$ z(U|0oMWj=MCa*`$#ne7gC`@*leKL7NHAnR8j3SwpZDA4aul?%{tX94`hse2`?PYVh za6U52Rt-xXhtMg43uNj)%1pEtNc|)So%sv zV3tLRS`aAwUpS%5zR5NUSD{hw2arZ0l3L|aT5mmD?_7RpXJ(0?=t#Qcymen3%XgueY;O`!oXM zNUdxhNhXsyAHj)4`)T!s)SaXg#NZn@tY zF19>S71(S7wpcn)&Ws%5uQ!4?95O9%Vp1+axR$d}e)z}0%&_3D&|7Pgl)LJhh2=Pu z^{U+<_W_K^{acF)2$BvYB`+H82SnnFcy17bNgGS+y61WV+cSk%{Ok36@^6^^?@;GJ zpUwUS-dHr^Ts~2G5bYs4&lrcx?HeAuk~%2d<#N4Wa9CX4Q6qnv(qgwbH9t}tej_gt z3EcI($Vvm&pU<{fY_`At(*K#3k&r{4Pm2XJvn{(+H-IqrVJ|I8si!_SpJELl;)MHY zgW;*9eE8tu#H56T1ORsr$m8vJz3SG> zf2m`p@(TYZpT8@Z3#nYDf0)R`7>o<{n(Xz0K<64B^RxzA8GkMz=|EEQ0Y*s^<#{}7 z)mjV^pWogJQhpMKDi9b9!tw}qPXTn1&|B=zk`RSTuS7_6y9;0LR@+Ug*E1M0!Y+1a zvsrEl9Q7^Yh|l zk7%yFpqZDK7uJmZ2d-Ju2Pq<*MuA$M89Om4L18l0%AgKc125X$eoh+m08?#MRmXTp zm9EU=uyqA}o6Tak*m4c2QmItu z%wW%`b;wKl8aYBl7t2=wu0vm3BxepOq;#^O=QbVhNMikd+muGHtH9tb_FAp7x9+ufN^7-ZlZw1|)Z-uQ9g>1NoyLD~m#h6F0K%0FKZ%wi zpG2Nd38w(}w6x44+NjE*#w28H(Hp>|cbVeo^J?1`3x-wneZXQ=Xm!1un0R0vZ3NlT zL8#b&EfNZQyWP$93_+*7R4R|iZVo+9C^dYpLK=&FQTPT*jh3&a&?nWZ{gNPEMz3wK z*6Wsfg;rAWUzu&F#_%9%REln4SN~lOZqVwZWs<4v{dD^RK_732oc~7FB2RaoJJl+< zyIL|jJtR*!^b{J6&GM^N!|8-W4|2Pjm=zTdCM7HyG(q*Lt57JGy_e6U80}-?5!Ga| z9e+8N`8}BEYWa9TU~9o;QN{=JwpR6mMXP5^4E|^$48)> za-`8H70ia;l*ey#*X=8jNM;qOD(cT~+|xjuZkznUGGcr!jNADPeeD|d5Ud9C&SW&( zH5ts+e*O(h3WyVvk`fea)%mir!a@|GS<$IOgqeN#O7|(~9x#IW@|cOK7%2T*m3qXg0T$ z$po`b-@Fo%4jxckWVW3bml$Z3l$5GptLY2QYTlMi3!6S(M|iQlk;^^P)+>JDAHO}O zi=R!uShT6}mHo1c0?Yl*ugxdcogTBDR_N5w&EYk6`g~%YaGYbf*^$A%MxV}SP|yuG z=$wl>#9*@VRkWmN(3V-#U(~U`#o9TYSB@PA~B7ew>sEN0ltyiqiTePHZrG%sd z$q5WlgD>4B2e+hvcwyCgbW4UdqTGb_k4viz(ODHr-Il3QXIt)sg8k?8+wF#_QfN{L zlCEld6;sncR_~y@*KC(e|0#eKI{Zx=wZ9+8tzIbMR+aa@7F;18$m6Q^a4lpoEc#?EE7qX}zbz(9zI4B1`XKaxs33QvmxtQ$817;9Mt`AT8N6F;wR(*Yen zlCgOu22!1xfG+NCu_Z=Ko4u3UfE!#8!RQHJi_|c!R>$wM_y&YKO;ze+z3{jCDZ|KL zkS>w4(RyH6ELodd+q|6)hx5jvyt4V)S}`ylN=!^%zMp?Xp7yD*W>_#@m{usox5wsa zFhcf~nx_eR6_=AlCJ}cNs8wr?dhGtWWSyv{a)%d$A3$mE_34|xP1b6) z`r`zf`jkxFLYYkFGl~NowN8yiA`*#2u6yNkE7jR*G+GSS)JcDgI^WP}HSbDDNK8zA zEfpBq`bX34Ubu>kO^)|$L+s_elH4dV2d*0mjwCmmr@&MZ%sAeojrAu#Wq1HyquD${ zZ4@M&%Dzq(OM#%B%4VVt#{y_a-91h7zo~z9m4*lRdw z273zl3}VG2LL7wj$DzvVIQZFoj-yK=6Y=E}0Q2tEN}WoheH9)QJ_>=8Tems7EY4;z zTvmn-muVFKcvoi?#c-Im(cyr&nruguT)KEDA?ZMJqT4Q8q(5B@i_5!+Wd(`!3q{cW z6))!*7^}l8oY|IkyA$IdQ&&YSf86zdC0!=2Zof47bv*{_%FzXqAxYaVQM> zcFZ9WjoJ~!$r2(E5dv+}ZX+022F(;iA+v0Q4@sJZNYnrGAZnf)-Q1}iO5!tAV<@HT;~ zN$}5`#bm{Q-TdZ2L8o0Cjy|7N#|Z1TgQ75a{0V_X#X)+%WQ_}kB?B~WTPi6ah$tUS zOiWmII6EY~Ok2z4<%O5yT^G3f?mTpd>wwl`y*PknWkojgBga2J{-U`#oTd6cH*F*m z+rFWZ6P`1I4jffhETT06D6#{MEEbE)rwkEznOw~|lbK6!T7O_xE zUlmg*1$@f&_>Az5_ZPW7tUr8i&72GbvT=w!P0&FSy*X1JnGOeiK^d`D3|qCg{+78_*8-OJ?%e zC&RuT5OL|3S^>|G7s-$QU|_5zA`**8rlA>ivN+5g!?4ymnFli@(LsbgGXjzKLdLS}M#hwToc z&x?}Gr7{Winu&NjpRfie?oL~6ly`7WvuJEeZPs2f*d1cM#2s6}DxX5Co=H5P7J%T6 zrZZ6S^Z9&GX%9~i0ywj2?+GQ4!0x8cVod)CRe$7_92g3TN2cFg^2{nZJVLTJ0(&`I zj))!OCV6rUsVpfeQ1KB_o|KbV&uRM24&d@oJ6^TKE>8jn!3(_bokCv`+Uc_gN#J)U3Zpmy^e z#j>leuOc!*bRaQV5kM9;MTdjl0%dLyP}48jWdOCpsF7ME@fYMEmi9LTfkvfrOYDtn9Bjl zF<}ggj2+43gh>H`Lehbx#N?#KW!{1fr+hrU7)y2wLF<6i*yhsz^*FQ{nE{xhnb4 z&c+Q+yEuL{U&Hna!@{z%@^X|(bzx-jx8vE6g&GkykBRJv^>Gj=EIMzXp`v}!Q5{<| z7oxyZkW*eQ8pTBqfI(eh&BBg|q2>-SZvs}M~Vj@o0B;89E6&)jNZVR_NMP`?P&<#xQg$@_a7bGRSymxfZqP@z{U zN$3J?okEaINOg}}Xwi+Hx<8$oXiP}W5aNkDs6h)y&E#g&iEIy~e>G=re==sct0YNFZ~VrvlwtmV?eGW>F*MC5Qd zA-*h8r~7H;WUAjQ`#ZM=D-X@!FQFU?`ET!cxBrz6c6+BYccnz|S1or$0()|~UR4N- zx{v<-dVGMqML0|!DuSB@i$G4cyV38j*1FX~2XJCIUEgX>Mamc$n3k`Kgt2JqXtpbh zn_O9G*@5|8c$W_+CL|q>XC5bQLho##Dh^6ep@f45GfAi6^fB&~VZ$MdG@d)mT{z~Y z#YKMBP=e$Y=c0(a-TEkG6MH4~bHv7C9ceTtCEwBSSSM}+qFiLQ`j4 zim(v<&VZ#P&T;0TBq@h$=Bob&z%;k8& zBim{%cCoO?&{aWWoeihE*(M-1AK|v4PNXm>`~d_4naEG34ca2`i^J`{^j*6)yAjpn z3Wd`2u28QHEt=aFKC}kLRH^j ?aUAdG&m+w^x)`pzy(VNGP2KGU5CCt^}+$-r(m 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 z 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 V00>tC0tRsafDuUqwiTkP|39$yY)AkA literal 0 HcmV?d00001 diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..fc5bacc --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,282 @@ +mod sys; + +use crate::sys::{PixelType, interp, register}; +use anyhow::{Result, anyhow}; +use ndarray::{Array2, ArrayView2, array, s}; +use std::ops::Mul; +use std::path::PathBuf; + +#[derive(Clone, Debug)] +pub struct Transform { + pub parameters: [f64; 6], + pub dparameters: [f64; 6], + pub origin: [f64; 2], + pub shape: [usize; 2], +} + +impl Mul for Transform { + type Output = Transform; + + #[allow(clippy::suspicious_arithmetic_impl)] + fn mul(self, other: Transform) -> Transform { + let m = self.matrix().dot(&other.matrix()); + let dm = self.dmatrix().dot(&other.matrix()) + self.matrix().dot(&other.dmatrix()); + Transform { + parameters: [ + m[[0, 0]], + m[[0, 1]], + m[[1, 0]], + m[[1, 1]], + m[[2, 0]], + m[[2, 1]], + ], + dparameters: [ + dm[[0, 0]], + dm[[0, 1]], + dm[[1, 0]], + dm[[1, 1]], + dm[[2, 0]], + dm[[2, 1]], + ], + origin: self.origin, + shape: self.shape, + } + } +} + +impl Transform { + /// parameters: flat 2x2 part of matrix, translation; origin: center of rotation + pub fn new(parameters: [f64; 6], origin: [f64; 2], shape: [usize; 2]) -> Self { + Self { + parameters, + dparameters: [0f64; 6], + origin, + shape, + } + } + + /// find the affine transform which transforms moving into fixed + pub fn register_affine( + fixed: ArrayView2, + moving: ArrayView2, + ) -> Result { + let (parameters, origin, shape) = register(fixed, moving, true)?; + Ok(Transform { + parameters, + dparameters: [0f64; 6], + origin, + shape, + }) + } + + /// find the translation which transforms moving into fixed + pub fn register_translation( + fixed: ArrayView2, + moving: ArrayView2, + ) -> Result { + let (parameters, origin, shape) = register(fixed, moving, false)?; + Ok(Transform { + parameters, + dparameters: [0f64; 6], + origin, + shape, + }) + } + + /// create a transform from a xy translation + pub fn from_translation(translation: [f64; 2]) -> Self { + Transform { + parameters: [1f64, 0f64, 0f64, 1f64, translation[0], translation[1]], + dparameters: [0f64; 6], + origin: [0f64; 2], + shape: [0usize; 2], + } + } + + /// read a transform from a file + pub fn from_file(file: PathBuf) -> Result { + todo!() + } + + /// write a transform to a file + pub fn to_file(&self, file: PathBuf) -> Result<()> { + todo!() + } + + /// true if transform does nothing + pub fn is_unity(&self) -> bool { + self.parameters == [1f64, 0f64, 0f64, 1f64, 0f64, 0f64] + } + + /// transform an image using nearest neighbor interpolation + pub fn transform_image_bspline(&self, image: ArrayView2) -> Result> { + interp(self.parameters, self.origin, image, false) + } + + /// transform an image using bspline interpolation + pub fn transform_image_nearest_neighbor( + &self, + image: ArrayView2, + ) -> Result> { + interp(self.parameters, self.origin, image, true) + } + + /// get coordinates resulting from transforming input coordinates + pub fn transform_coordinates(&self, coordinates: ArrayView2) -> Result> + where + T: Clone + Into, + { + let s = coordinates.shape(); + if s[1] != 2 { + return Err(anyhow!("coordinates must have two columns")); + } + let m = self.matrix(); + let mut res = Array2::zeros([s[0], s[1]]); + for i in 0..s[0] { + let a = array![ + coordinates[[i, 0]].clone().into(), + coordinates[[i, 1]].clone().into(), + 1f64 + ] + .to_owned(); + let b = m.dot(&a); + res.slice_mut(s![i, ..]).assign(&b.slice(s![..2])); + } + Ok(res) + } + + /// get the matrix defining the transform + pub fn matrix(&self) -> Array2 { + Array2::from_shape_vec( + (3, 3), + vec![ + self.parameters[0], + self.parameters[1], + self.parameters[4], + self.parameters[2], + self.parameters[3], + self.parameters[5], + 0f64, + 0f64, + 1f64, + ], + ) + .unwrap() + } + + /// get the matrix describing the error of the transform + pub fn dmatrix(&self) -> Array2 { + Array2::from_shape_vec( + (3, 3), + vec![ + self.dparameters[0], + self.dparameters[1], + self.dparameters[4], + self.dparameters[2], + self.dparameters[3], + self.dparameters[5], + 0f64, + 0f64, + 1f64, + ], + ) + .unwrap() + } + + /// get the inverse transform + pub fn inverse(&self) -> Result { + fn det(a: ArrayView2) -> f64 { + (a[[0, 0]] * a[[1, 1]]) - (a[[0, 1]] * a[[1, 0]]) + } + + let m = self.matrix(); + let d0 = det(m.slice(s![1.., 1..])); + if d0 == 0f64 { + return Err(anyhow!("transform matrix is not invertible")); + } + let d2 = det(m.slice(s![..2, ..2])); + let parameters = [ + d0 / d2, + -det(m.slice(s![..;2, 1..])) / d2, + -det(m.slice(s![1.., ..;2])) / d2, + det(m.slice(s![..;2, ..;2])) / d2, + det(m.slice(s![..2, 1..])) / d2, + -det(m.slice(s![..2, ..;2])) / d2, + ]; + + Ok(Transform { + parameters, + dparameters: [0f64; 6], + origin: self.origin, + shape: self.shape, + }) + } + + /// adapt the transform to a new origin and shape + pub fn adapt(&mut self, origin: [f64; 2], shape: [usize; 2]) { + self.origin = [ + origin[0] + (((self.shape[0] - shape[0]) as f64) / 2f64), + origin[1] + (((self.shape[1] - shape[1]) as f64) / 2f64), + ]; + self.shape = shape; + } +} + +#[cfg(test)] +mod tests { + use super::*; + use anyhow::Result; + use ndarray::Array2; + use num::Complex; + use tiffwrite::IJTiffFile; + + /// An example of generating julia fractals. + fn julia_image() -> Result> { + let imgx = 800; + let imgy = 600; + + let scalex = 3.0 / imgx as f32; + let scaley = 3.0 / imgy as f32; + + let mut im = Array2::::zeros((imgy, imgx)); + for x in 0..imgx { + for y in 0..imgy { + let cx = y as f32 * scalex - 1.5; + let cy = x as f32 * scaley - 1.5; + + let c = Complex::new(-0.4, 0.6); + let mut z = Complex::new(cx, cy); + + let mut i = 0; + while i < 255 && z.norm() <= 2.0 { + z = z * z + c; + i += 1; + } + + im[[y, x]] = i as u8; + } + } + Ok(im) + } + + #[test] + fn test_interp() -> Result<()> { + let j = julia_image()?; + let mut tif = IJTiffFile::new("interp_test.tif")?; + tif.save(&j, 0, 0, 0)?; + let shape = j.shape(); + let origin = [ + ((shape[1] - 1) as f64) / 2f64, + ((shape[0] - 1) as f64) / 2f64, + ]; + let transform = Transform::new([1.2, 0., 0., 1., 10., 0.], origin, [shape[0], shape[1]]); + let k = transform.transform_image_bspline(j.view())?; + tif.save(&k, 1, 0, 0)?; + + let t = Transform::register_affine(k.view(), j.view())?; + println!("t: {:#?}", t); + println!("m: {:#?}", t.matrix()); + println!("i: {:#?}", t.inverse()?.matrix()); + Ok(()) + } +} diff --git a/src/sys.rs b/src/sys.rs new file mode 100644 index 0000000..42a2059 --- /dev/null +++ b/src/sys.rs @@ -0,0 +1,359 @@ +use anyhow::Result; +use libc::{c_double, c_uint}; +use ndarray::{Array2, ArrayView2}; +use std::ptr; + +macro_rules! register_fn { + ($T:ty, $t:ident) => { + fn $t( + width: c_uint, + height: c_uint, + fixed_arr: *const $T, + moving_arr: *const $T, + translation_or_affine: bool, + transform: &mut *mut c_double, + ); + }; +} + +macro_rules! interp_fn { + ($T:ty, $t:ident) => { + fn $t( + width: c_uint, + height: c_uint, + transform: *const c_double, + origin: *const c_double, + image: &mut *mut $T, + bspline_or_nn: bool, + ); + }; +} + +unsafe extern "C" { + register_fn!(u8, register_u8); + register_fn!(i8, register_i8); + register_fn!(u16, register_u16); + register_fn!(i16, register_i16); + register_fn!(u32, register_u32); + register_fn!(i32, register_i32); + register_fn!(u64, register_u64); + register_fn!(i64, register_i64); + register_fn!(f32, register_f32); + register_fn!(f64, register_f64); + interp_fn!(u8, interp_u8); + interp_fn!(i8, interp_i8); + interp_fn!(u16, interp_u16); + interp_fn!(i16, interp_i16); + interp_fn!(u32, interp_u32); + interp_fn!(i32, interp_i32); + interp_fn!(u64, interp_u64); + interp_fn!(i64, interp_i64); + interp_fn!(f32, interp_f32); + interp_fn!(f64, interp_f64); +} + +pub trait PixelType: Clone { + const PT: u8; +} + +macro_rules! sitk_impl { + ($T:ty, $sitk:expr) => { + impl PixelType for $T { + const PT: u8 = $sitk; + } + }; +} + +sitk_impl!(u8, 1); +sitk_impl!(i8, 2); +sitk_impl!(u16, 3); +sitk_impl!(i16, 4); +sitk_impl!(u32, 5); +sitk_impl!(i32, 6); +sitk_impl!(u64, 7); +sitk_impl!(i64, 8); +#[cfg(target_pointer_width = "64")] +sitk_impl!(usize, 7); +#[cfg(target_pointer_width = "32")] +sitk_impl!(usize, 5); +#[cfg(target_pointer_width = "64")] +sitk_impl!(isize, 8); +#[cfg(target_pointer_width = "32")] +sitk_impl!(isize, 6); +sitk_impl!(f32, 9); +sitk_impl!(f64, 10); + +pub(crate) fn interp( + parameters: [f64; 6], + origin: [f64; 2], + image: ArrayView2, + bspline_or_nn: bool, +) -> Result> { + let shape: Vec = image.shape().to_vec(); + let width = shape[1] as c_uint; + let height = shape[0] as c_uint; + let mut im: Vec<_> = image.into_iter().cloned().collect(); + let im_ptr: *mut T = ptr::from_mut(unsafe { &mut *im.as_mut_ptr() }); + + match T::PT { + 1 => unsafe { + interp_u8( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut u8), + bspline_or_nn, + ); + }, + 2 => unsafe { + interp_i8( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut i8), + bspline_or_nn, + ); + }, + 3 => unsafe { + interp_u16( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut u16), + bspline_or_nn, + ); + }, + 4 => unsafe { + interp_i16( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut i16), + bspline_or_nn, + ); + }, + 5 => unsafe { + interp_u32( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut u32), + bspline_or_nn, + ); + }, + 6 => unsafe { + interp_i32( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut i32), + bspline_or_nn, + ); + }, + 7 => unsafe { + interp_u64( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut u64), + bspline_or_nn, + ); + }, + 8 => unsafe { + interp_i64( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut i64), + bspline_or_nn, + ); + }, + 9 => unsafe { + interp_f32( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut f32), + bspline_or_nn, + ); + }, + 10 => unsafe { + interp_f64( + width, + height, + parameters.as_ptr(), + origin.as_ptr(), + &mut (im_ptr as *mut f64), + bspline_or_nn, + ); + }, + _ => {} + } + Ok(Array2::from_shape_vec( + (shape[0], shape[1]), + im.into_iter().collect(), + )?) +} + +pub(crate) fn register( + fixed: ArrayView2, + moving: ArrayView2, + translation_or_affine: bool, +) -> Result<([f64; 6], [f64; 2], [usize; 2])> { + let shape: Vec = fixed.shape().to_vec(); + let width = shape[1] as c_uint; + let height = shape[0] as c_uint; + let fixed: Vec<_> = fixed.into_iter().collect(); + let moving: Vec<_> = moving.into_iter().collect(); + let mut transform: Vec = vec![0.0; 6]; + let mut transform_ptr: *mut c_double = ptr::from_mut(unsafe { &mut *transform.as_mut_ptr() }); + + match T::PT { + 1 => { + unsafe { + register_u8( + width, + height, + fixed.as_ptr() as *const u8, + moving.as_ptr() as *const u8, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 2 => { + unsafe { + register_i8( + width, + height, + fixed.as_ptr() as *const i8, + moving.as_ptr() as *const i8, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 3 => { + unsafe { + register_u16( + width, + height, + fixed.as_ptr() as *const u16, + moving.as_ptr() as *const u16, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 4 => { + unsafe { + register_i16( + width, + height, + fixed.as_ptr() as *const i16, + moving.as_ptr() as *const i16, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 5 => { + unsafe { + register_u32( + width, + height, + fixed.as_ptr() as *const u32, + moving.as_ptr() as *const u32, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 6 => { + unsafe { + register_i32( + width, + height, + fixed.as_ptr() as *const i32, + moving.as_ptr() as *const i32, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 7 => { + unsafe { + register_u64( + width, + height, + fixed.as_ptr() as *const u64, + moving.as_ptr() as *const u64, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 8 => { + unsafe { + register_i64( + width, + height, + fixed.as_ptr() as *const i64, + moving.as_ptr() as *const i64, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 9 => { + unsafe { + register_f32( + width, + height, + fixed.as_ptr() as *const f32, + moving.as_ptr() as *const f32, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + 10 => { + unsafe { + register_f64( + width, + height, + fixed.as_ptr() as *const f64, + moving.as_ptr() as *const f64, + translation_or_affine, + &mut transform_ptr, + ) + }; + } + _ => {} + } + + Ok(( + [ + transform[0] as f64, + transform[1] as f64, + transform[2] as f64, + transform[3] as f64, + transform[4] as f64, + transform[5] as f64, + ], + [ + ((shape[0] - 1) as f64) / 2f64, + ((shape[1] - 1) as f64) / 2f64, + ], + [shape[0], shape[1]], + )) +}